设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1511|回复: 3
打印 上一主题 下一主题

怎样使角色升级加的能力在现有基础上以一定比例上升

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-12-6
帖子
8
跳转到指定楼层
1
发表于 2009-4-18 07:22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
    我说的就是让角色的成长率是以某个比例为基础,升级就等于是 原有能力*某个比例 ,而不是在数据库中事先设好的,我想要是用过道具加了能力,这加的能力也要加到里面算的.
    举个例子  某个角色是剑士,他的HP的成长率是1.2 ,当前他的HP是100,那他升级后的HP就是 100*1.2=120 ,若中途用了个道具加了10点HP,那么升级时就要变成 110*1.2=132 ,其他的依次类推,不能像数据库里设定的那样直接是加特定的数值.我是觉得这样的和数据库里的设定不太一样.
    一开始可能能力变化不是太大,但到后来就会很明显,当然用非升级手段得到的能力值会对之后能力整体的变化造成影响,其实我要的就是这样的效果
此贴于 2009-4-21 19:27:42 被版主redant提醒,请楼主看到后对本贴做出回应。
版务信息:版主帮忙结贴~

Lv1.梦旅人

剑圣

梦石
0
星屑
50
在线时间
122 小时
注册时间
2008-8-31
帖子
778
2
发表于 2009-4-18 08:59:40 | 只看该作者
不推荐用这种办法,力量敏捷什么的本来就是一个扩大伤害倍数的东西……
这些属性再来个复利增长的话= =
不敢想象一个技能会打多少血……

PC/IOS/Android共享的RM RPG:未名大学
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-12-6
帖子
8
3
 楼主| 发表于 2009-4-18 21:12:31 | 只看该作者
    那是以后才会打很多血,初期变化不大,后期每升一级都会是质的飞跃,但是敌人的防御力也会增长的呀
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
4
发表于 2009-4-20 09:30:24 | 只看该作者
这个就是等比数列,用等式来表示就是——

y = a(b^x)

也许你没主要到,数据库中设定的是曲线,而不是只能直线,所以什么样的 x、y 关系都能表示出来的,只不过数据库中值域不够大,而且不能精确运算,否则完全可以在数据库中事先设好~用脚本设置的话,就是在进入标题画面、实例化了数据库对象(这里仅仅修改 $data_actors)后动态修改对象的属性~

要注意的是数值不要弄得太大了,Ruby 的浮点数超过一定范围后就会用科学记数法来表示了,而科学计数法的指数太大的话就会变成无限

在 main 之前插入以下脚本:
def generate_status_curve
  # 第一个角色能力基数(即初始值,等级 1 时就是 这里的基数 * 指数)
  $data_actors[1].parameters[0,0] = 500  # hp
  $data_actors[1].parameters[1,0] = 500  # sp
  $data_actors[1].parameters[2,0] = 50   # 力量
  $data_actors[1].parameters[3,0] = 50   # 灵巧
  $data_actors[1].parameters[4,0] = 50   # 速度
  $data_actors[1].parameters[5,0] = 50   # 魔力
  # 第一个角色能力的指数性成长
  for j in 1..99
    actor = $data_actors[1]
    for i in 0..5
      # 直接计算乘方的话速度很慢,所以这里是通过数列中前一个数 * 1.2 计算
      actor.parameters[i,j] = (actor.parameters[i,j - 1] * 1.2).round
    end
  end
  # 第二个角色能力基数
  $data_actors[2].parameters[0,0] = 500  # hp
  $data_actors[2].parameters[1,0] = 500  # sp
  $data_actors[2].parameters[2,0] = 50   # 力量
  $data_actors[2].parameters[3,0] = 50   # 灵巧
  $data_actors[2].parameters[4,0] = 50   # 速度
  $data_actors[2].parameters[5,0] = 50   # 魔力
  # 第一个角色能力的指数性成长
  for j in 1..99
    actor = $data_actors[2]
    for i in 0..5
      actor.parameters[i,j] = (actor.parameters[i,j - 1] * 1.2).round
    end
  end
  # ........
  # ........
  # 以此类推,分别给不同的角色设置不同的曲线
end


class Scene_Title
  #--------------------------------------------------------------------------
  # ● 住处理
  #--------------------------------------------------------------------------
  def main
    # 战斗测试的情况下
    if $BTEST
      battle_test
      return
    end
    # 载入数据库
    $data_actors        = load_data("Data/Actors.rxdata")
    $data_classes       = load_data("Data/Classes.rxdata")
    $data_skills        = load_data("Data/Skills.rxdata")
    $data_items         = load_data("Data/Items.rxdata")
    $data_weapons       = load_data("Data/Weapons.rxdata")
    $data_armors        = load_data("Data/Armors.rxdata")
    $data_enemies       = load_data("Data/Enemies.rxdata")
    $data_troops        = load_data("Data/Troops.rxdata")
    $data_states        = load_data("Data/States.rxdata")
    $data_animations    = load_data("Data/Animations.rxdata")
    $data_tilesets      = load_data("Data/Tilesets.rxdata")
    $data_common_events = load_data("Data/CommonEvents.rxdata")
    $data_system        = load_data("Data/System.rxdata")
    generate_status_curve
    # 生成系统对像
    $game_system = Game_System.new
    # 生成标题图形
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
    # 生成命令窗口
    s1 = "新游戏"
    s2 = "继续"
    s3 = "退出"
    @command_window = Window_Command.new(192, [s1, s2, s3])
    @command_window.back_opacity = 160
    @command_window.x = 320 - @command_window.width / 2
    @command_window.y = 288
    # 判定继续的有效性
    # 存档文件一个也不存在的时候也调查
    # 有効为 @continue_enabled 为 true、無効为 false
    @continue_enabled = false
    for i in 0..3
      if FileTest.exist?("Save#{i+1}.rxdata")
        @continue_enabled = true
      end
    end
    # 继续为有效的情况下、光标停止在继续上
    # 无效的情况下、继续的文字显示为灰色
    if @continue_enabled
      @command_window.index = 1
    else
      @command_window.disable_item(1)
    end
    # 演奏标题 BGM
    $game_system.bgm_play($data_system.title_bgm)
    # 停止演奏 ME、BGS
    Audio.me_stop
    Audio.bgs_stop
    # 执行过渡
    Graphics.transition
    # 主循环
    loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果画面被切换就中断循环
      if $scene != self
        break
      end
    end
    # 装备过渡
    Graphics.freeze
    # 释放命令窗口
    @command_window.dispose
    # 释放标题图形
    @sprite.bitmap.dispose
    @sprite.dispose
  end
end

系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-16 06:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表