Project1

标题: 如何使用HP的高低控制角色的能力? [打印本页]

作者: 美丽晨露    时间: 2013-6-22 13:18
标题: 如何使用HP的高低控制角色的能力?
本帖最后由 美丽晨露 于 2013-6-25 23:05 编辑

HP满的时候,一切能力照常。
但是HP越低,力量,回避就越低,精神力,幸运就越高。
请问要在什么地方修改和判断?
战斗中要适用。

PS:这是魔女职业的战斗风格哦(大雾)

作者: wwwcctvty    时间: 2013-6-22 13:55
{:2_283:} 如果是我,我会在Game_Battler 3下添加判断
作者: 美丽晨露    时间: 2013-6-23 12:49
求帮助
没有人知道怎么修改吗?
作者: 怪蜀黍    时间: 2013-6-23 21:04
具体关系的公式是什么?写清楚一点。
Game_Battler 1下有def str,def eva这两个是力量和回避的获取,在这里改。
精神和幸运,默认没有这属性吧。
作者: 美丽晨露    时间: 2013-6-23 21:13
protosssonny 发表于 2013-6-23 21:04
具体关系的公式是什么?写清楚一点。
Game_Battler 1下有def str,def eva这两个是力量和回避的获取,在这 ...

幸运就是灵巧
精神就是魔导力

然后公式嘛
就这样,力量回避*剩余最大HP的百分比
精神幸运*200%-剩余最大HP的百分比
作者: 亿万星辰    时间: 2013-6-23 21:54
本帖最后由 亿万星辰 于 2013-6-23 21:56 编辑

属性 * hp / maxhp
你甚至可以给Game_Actor重新定义一下str,atk.....这些方法,把上面的公式直接写进去
作者: 美丽晨露    时间: 2013-6-23 23:36
亿万星辰 发表于 2013-6-23 21:54
属性 * hp / maxhp
你甚至可以给Game_Actor重新定义一下str,atk.....这些方法,把上面的公式直接写进去 ...

脚本废
不知道怎么写才是
作者: joe5491    时间: 2013-6-24 01:48
先搜尋「def 你要改的東西的參數」
例如速度就要搜尋「def agi」
然後你會發現像下面這樣的東西
#--------------------------------------------------------------------------
  # ● 獲取速度
  #--------------------------------------------------------------------------
  def agi
    n = [[base_agi + @agi_plus, 1].max, 999].min
    for i in @states
      n *= $data_states[i].agi_rate / 100.0
    end
    n = [[Integer(n), 1].max, 999].min
    return n
  end
然後倒數第二行有return n 你可以改他
而n就是你的速度,接著你就可以把它做些運算,
例如當血少於10的時候速度兩倍
if hp<10
  return n*2
else
  return n
end
作者: 美丽晨露    时间: 2013-6-24 15:39
joe5491 发表于 2013-6-24 01:48
先搜尋「def 你要改的東西的參數」
例如速度就要搜尋「def agi」
然後你會發現像下面這樣的東西

原来是这里啊
可是我要的是与HP之间动态关联的效果。
HP一旦增多或者减少,战斗中,能力就会发生变化。
平时的话有无牵连都行。
作者: 芯☆淡茹水    时间: 2013-6-24 15:59
好像是这样:
  1. class Game_Battler
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取力量
  4.   #--------------------------------------------------------------------------
  5.   def str
  6.     n = [[base_str + @str_plus, 1].max, 999].min
  7.     for i in @states
  8.       n *= $data_states[i].str_rate / 100.0
  9.     end
  10.     n = [[Integer(n), 1].max, 999].min
  11.     n *= @hp / maxhp
  12.     return n
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 获取魔力
  16.   #--------------------------------------------------------------------------
  17.   def int
  18.     n = [[base_int + @int_plus, 1].max, 999].min
  19.     for i in @states
  20.       n *= $data_states[i].int_rate / 100.0
  21.     end
  22.     n = [[Integer(n), 1].max, 999].min
  23.     n += n * (1 - @hp / maxhp)
  24.     return n
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 获取回避修正
  28.   #--------------------------------------------------------------------------
  29.   def eva
  30.     n = base_eva
  31.     for i in @states
  32.       n += $data_states[i].eva
  33.     end
  34.     n *= @hp / maxhp
  35.     return n
  36.   end
  37. end
复制代码

作者: 美丽晨露    时间: 2013-6-24 16:11
芯☆淡茹水 发表于 2013-6-24 15:59
好像是这样:

如果只是让主角一方生效的话,要怎么做呢
作者: 亿万星辰    时间: 2013-6-25 12:07
本帖最后由 亿万星辰 于 2013-6-25 22:38 编辑
  1. class Game_Actor
  2.   #--------------------------------------------------------------------------
  3.   # ● 获取力量
  4.   #--------------------------------------------------------------------------
  5.   def str
  6.     n = [[base_str + @str_plus, 1].max, 999].min
  7.     for i in @states
  8.       n *= $data_states[i].str_rate / 100.0
  9.     end
  10.     n = [[Integer(n), 1].max, 999].min
  11.     return n * @hp / maxhp
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 获取魔力
  15.   #--------------------------------------------------------------------------
  16.   def int
  17.     n = [[base_int + @int_plus, 1].max, 999].min
  18.     for i in @states
  19.       n *= $data_states[i].int_rate / 100.0
  20.     end
  21.     n = [[Integer(n), 1].max, 999].min
  22.     return n - n * @hp / maxhp
  23.   end
  24.   #--------------------------------------------------------------------------
  25.   # ● 获取回避修正
  26.   #--------------------------------------------------------------------------
  27.   def eva
  28.     n = base_eva
  29.     for i in @states
  30.       n += $data_states[i].eva
  31.     end
  32.     return n * @hp / maxhp
  33.   end
  34. end
复制代码
照搬答案,修改一下。其余属性也这样处理即可,当然 maxhp 属性是不行的~
作者: 美丽晨露    时间: 2013-6-25 17:49
亿万星辰 发表于 2013-6-25 12:07
照搬答案,修改一下。其余属性也这样处理即可,当然 maxhp 属性是不行的~

谢谢前辈修改
可是魔力的伤害算法跟力量的伤害算法一样了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1