Project1

标题: 请教如何设定当状态是26时该角色造成的伤害均带有20%吸血 [打印本页]

作者: 远坂焰    时间: 2014-3-24 17:51
标题: 请教如何设定当状态是26时该角色造成的伤害均带有20%吸血
RUBY 代码复制
  1. class Game_ActionResult
  2.   #--------------------------------------------------------------------------
  3.   # ● 生成伤害
  4.   #--------------------------------------------------------------------------
  5.   def make_damage(value, item)
  6.     @critical = false if value == 0
  7.     @hp_damage = value if item.damage.to_hp?
  8.     @mp_damage = value if item.damage.to_mp?
  9.     @mp_damage = [@battler.mp, @mp_damage].min
  10.     @hp_drain = @hp_damage if item.damage.drain?
  11.     def state?(state_id)
  12.       if @states.include?(26)
  13.         @hp_drain = (@hp_damage*0.2).to_i
  14.       end
  15.     end
  16.     @mp_drain = @mp_damage if item.damage.drain?
  17.     @hp_drain = [@battler.hp, @hp_drain].min
  18.     @success = true if item.damage.to_hp? || @mp_damage != 0
  19.   end

像设定一个状态26 当拥有此状态的角色攻击时不管是普攻还是技能都附带20%吸血。
上面这个判定不会生效
如果设置成下面这样又会出错
RUBY 代码复制
  1. @hp_drain = (@hp_damage*0.2).to_i if @states.include?(26)

求教该怎么设置当
作者: Sion    时间: 2014-3-24 21:01
你要传个参数过去
  1. def make_damage(value,item, hp_drain_state)
  2.   #...
  3.   @hp_drain = @hp_damage*0.2 if hp_drain_state
  4.   #...
  5. end
复制代码
然后改调用它的地方
  1. @result.make_damage(value.to_i, item, state?(26))
复制代码

作者: 远坂焰    时间: 2014-3-26 15:16
Sion 发表于 2014-3-24 21:01
你要传个参数过去然后改调用它的地方

不好意思 这几天有事回复晚了
  1. class Game_ActionResult
  2.   #--------------------------------------------------------------------------
  3.   # ● 生成伤害
  4.   #--------------------------------------------------------------------------
  5.   def make_damage(value, item, hp_drain_state)
  6.     @critical = false if value == 0
  7.     @hp_damage = value if item.damage.to_hp?
  8.     @mp_damage = value if item.damage.to_mp?
  9.     @mp_damage = [@battler.mp, @mp_damage].min
  10.     @hp_drain = @hp_damage*0.2 if hp_drain_state
  11.     @hp_drain = @hp_damage if item.damage.drain?
  12.     @hp_drain = [@battler.hp, @hp_drain].min
  13.     @success = true if item.damage.to_hp? || @mp_damage != 0
  14.   end
  15. end

  16. class Game_Battler < Game_BattlerBase
  17.   #--------------------------------------------------------------------------
  18.   # ● 计算伤害
  19.   #--------------------------------------------------------------------------
  20.   def make_damage_value(user, item)
  21.     value = item.damage.eval(user, self, $game_variables)
  22.     value *= item_element_rate(user, item)
  23.     value *= pdr if item.physical?
  24.     value *= mdr if item.magical?
  25.     value *= rec if item.damage.recover?
  26.     value = apply_critical(value) if @result.critical
  27.     value = apply_variance(value, item.damage.variance)
  28.     value = apply_guard(value)
  29.     @result.make_damage(value.to_i, item, state?(26))
  30.   end
  31. end
复制代码
是做成上面这样吗?
但是好像附加26号状态后还是不能触发吸血呢
另外还有个小问题 怎么在点评的时候给别人加经验呢
作者: SuperMario    时间: 2014-3-26 20:54
user.state?(26)
作者: 远坂焰    时间: 2014-3-27 08:46
SuperMario 发表于 2014-3-26 20:54
user.state?(26)

已经正常生效了
非常感谢
作者: 13791224182    时间: 2015-4-20 12:58
楼主 我新人看不明白能重新发一下完整的吗?{:2_284:}




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