Project1

标题: 多个回血状态怎么整合到一起 [打印本页]

作者: 余林    时间: 2016-6-22 21:08
标题: 多个回血状态怎么整合到一起
本帖最后由 RyanBern 于 2016-6-22 23:41 编辑

哪位大神能帮我吧下面这个脚本调整一下,能够让每个对应的状态都能在战斗中恢复HP的效果,目前在游戏没有效果



class Scene_Battle
  alias :update_phase4_step6_recover :update_phase4_step6
  def update_phase4_step6
    update_phase4_step6_recover
      回血状态ID = 11
      回血百分比 = 2
     
      回血状态ID = 12
      回血百分比 = 3

      回血状态ID = 13
      回血百分比 = 4

      回血状态ID = 14
      回血百分比 = 5

      回血状态ID = 15
      回血百分比 = 6

      回血状态ID = 16
      回血百分比 = 7

      回血状态ID = 64
      回血百分比 = 8

      回血状态ID = 65
      回血百分比 = 10

      回血状态ID = 66
      回血百分比 = 12

      回血状态ID = 67
      回血百分比 = 14

      回血状态ID = 68
      回血百分比 = 16

      回血状态ID = 69
      回血百分比 = 18
   if @active_battler.state?(回血状态ID)
      @active_battler.hp += (@active_battler.maxhp * 回血百分比 * 0.01).round
      @active_battler.damage = -(@active_battler.maxhp * 回血百分比 * 0.01).round
      @active_battler.damage_pop = true
      @status_window.refresh
    end
  end
end
作者: yang1zhi    时间: 2016-6-22 21:14
本帖最后由 yang1zhi 于 2016-6-22 22:11 编辑

回血状态 = {11=>2,12=>3}       #后面自己加进去
new = 回血状态.keys  &  @active_battler.state
if new.size > 0
for i in new.size
      @active_battler.hp += (@active_battler.maxhp *  回血状态[new] * 0.01).round
      @active_battler.damage = -(@active_battler.maxhp * 回血状态[new]  * 0.01).round
      @active_battler.damage_pop = true
      @status_window.refresh

end
    end
  end
end

这样可以吗
作者: 余林    时间: 2016-6-22 21:36
yang1zhi 发表于 2016-6-22 21:14
回血状态 = {11=>2,12=>3}       #后面自己加进去
if  回血状态.include?(@active_battler.state?)
      @ ...

不行  发生错误
作者: wxlhj860    时间: 2016-6-22 22:33
本帖最后由 wxlhj860 于 2016-6-22 22:38 编辑

冒昧说一下~2楼犯了比较基本的语法错误,采用实例变量的方法时要注意方法是否带参数~
这里为了能让Hash表里的每个主键匹配到当前角色的每个状态值,我用了for的语句~~
  1. class Scene_Battle
  2.   alias :update_phase4_step6_recover :update_phase4_step6
  3.   def update_phase4_step6
  4.     update_phase4_step6_recover
  5.     回血状态 = {1=>100,2=>10}
  6.     for i in 0...@active_battler.states.size
  7.       if 回血状态.include?(@active_battler.states[i])
  8.         @active_battler.hp += (@active_battler.maxhp * 回血状态[@active_battler.states[i]] * 0.01).round
  9.         @active_battler.damage = -(@active_battler.maxhp * 回血状态[@active_battler.states[i]]  * 0.01).round
  10.         @active_battler.damage_pop = true
  11.         @status_window.refresh
  12.       end
  13.     end
  14.   end
  15. end
复制代码
补充一点:回答问题,楼主采纳以后请给评分~谢谢
作者: 余林    时间: 2016-6-22 22:39
wxlhj860 发表于 2016-6-22 22:33
冒昧说一下~2楼犯了比较基本的语法错误,采用实例变量的方法时要注意方法是否带参数~
这里为了能让Hash表里 ...

GOOD    {:2_249:}
作者: 余林    时间: 2016-6-22 22:41
wxlhj860 发表于 2016-6-22 22:33
冒昧说一下~2楼犯了比较基本的语法错误,采用实例变量的方法时要注意方法是否带参数~
这里为了能让Hash表里 ...

我给不起评分呢
作者: wxlhj860    时间: 2016-6-23 08:47
本帖最后由 wxlhj860 于 2016-6-23 08:51 编辑

出现多个回血状态的时候,我觉得回血量叠加在一起会好点。版主指正后修改:
RUBY 代码复制
  1. class Scene_Battle
  2.   alias :update_phase4_step6_recover :update_phase4_step6
  3.   def update_phase4_step6
  4.     update_phase4_step6_recover
  5.     回血状态 = {1=>50,2=>50}
  6.     total_recover = 0
  7.     for i in 0... @active_battler.states.size
  8.       if 回血状态.include?(@active_battler.states[i])
  9.         total_recover += (@active_battler.maxhp * 回血状态[@active_battler.states[i]] * 0.01).round
  10.       end
  11.     end
  12.     @active_battler.hp += total_recover
  13.     @active_battler.damage = -total_recover
  14.     @active_battler.damage_pop = true
  15.     @status_window.refresh
  16.   end
  17. end





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