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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
帖子
83
跳转到指定楼层
1
发表于 2016-6-22 21:08:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 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

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
7
发表于 2016-6-23 08:47:12 | 只看该作者
本帖最后由 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
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

我给不起评分呢

点评

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

使用道具 举报

Lv1.梦旅人

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

GOOD    {:2_249:}
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
101 小时
注册时间
2011-1-29
帖子
23
4
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
164 小时
注册时间
2016-3-3
帖子
83
3
 楼主| 发表于 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
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

2
发表于 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 不会脚本不要乱写

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-30 09:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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