查看: 2301|回复: 6

[已经解决] 多个回血状态怎么整合到一起

[复制链接]
梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
回帖
63
发表于 2016-6-22 21:08:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 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
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-6-22 21:14:27 | 显示全部楼层
本帖最后由 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-23 12:01

评分

参与人数 1星屑 -10 收起 理由
RyanBern -10 不会脚本不要乱写

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
回帖
63
 楼主| 发表于 2016-6-22 21:36:35 | 显示全部楼层
yang1zhi 发表于 2016-6-22 21:14
回血状态 = {11=>2,12=>3}       #后面自己加进去
if  回血状态.include?(@active_battler.state?)
      @ ...

不行  发生错误

点评

是什么错误  发表于 2016-6-22 22:01
回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-22 22:33:38 | 显示全部楼层
本帖最后由 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 23:38
具有多个回血状态的角色只会显示一个状态的回血值,这个地方请完善一下吧。  发表于 2016-6-22 23:37

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
回帖
63
 楼主| 发表于 2016-6-22 22:39:44 | 显示全部楼层
wxlhj860 发表于 2016-6-22 22:33
冒昧说一下~2楼犯了比较基本的语法错误,采用实例变量的方法时要注意方法是否带参数~
这里为了能让Hash表里 ...

GOOD    {:2_249:}
回复

使用道具 举报

梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
回帖
63
 楼主| 发表于 2016-6-22 22:41:19 | 显示全部楼层
wxlhj860 发表于 2016-6-22 22:33
冒昧说一下~2楼犯了比较基本的语法错误,采用实例变量的方法时要注意方法是否带参数~
这里为了能让Hash表里 ...

我给不起评分呢

点评

哈哈~有道理,我的错  发表于 2016-6-22 22:50
回复

使用道具 举报

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
回帖
23
发表于 2016-6-23 08:47:12 | 显示全部楼层
本帖最后由 wxlhj860 于 2016-6-23 08:51 编辑

出现多个回血状态的时候,我觉得回血量叠加在一起会好点。版主指正后修改:
[pre lang="ruby"]class Scene_Battle
  alias :update_phase4_step6_recover :update_phase4_step6
  def update_phase4_step6
    update_phase4_step6_recover
    回血状态 = {1=>50,2=>50}
    total_recover = 0
    for i in 0... @active_battler.states.size
      if 回血状态.include?(@active_battler.states)
        total_recover += (@active_battler.maxhp * 回血状态[@active_battler.states] * 0.01).round
      end
    end
    @active_battler.hp += total_recover
    @active_battler.damage = -total_recover
    @active_battler.damage_pop = true
    @status_window.refresh
  end
end[/pre]
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部