查看: 2448|回复: 5

[已经解决] 请教如何设定当状态是26时该角色造成的伤害均带有20%吸血

[复制链接]
梦石
0
星屑
50
在线时间
24 小时
注册时间
2014-2-20
回帖
11
发表于 2014-3-24 17:51:25 | 显示全部楼层 |阅读模式

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

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

×
[pre lang="ruby" line="1"]class Game_ActionResult
  #--------------------------------------------------------------------------
  # ● 生成伤害
  #--------------------------------------------------------------------------
  def make_damage(value, item)
    @critical = false if value == 0
    @hp_damage = value if item.damage.to_hp?
    @mp_damage = value if item.damage.to_mp?
    @mp_damage = [@battler.mp, @mp_damage].min
    @hp_drain = @hp_damage if item.damage.drain?
    def state?(state_id)
      if @states.include?(26)
        @hp_drain = (@hp_damage*0.2).to_i
      end
    end
    @mp_drain = @mp_damage if item.damage.drain?
    @hp_drain = [@battler.hp, @hp_drain].min
    @success = true if item.damage.to_hp? || @mp_damage != 0
  end
[/pre]
像设定一个状态26 当拥有此状态的角色攻击时不管是普攻还是技能都附带20%吸血。
上面这个判定不会生效
如果设置成下面这样又会出错
[pre lang="ruby" line="1"]@hp_drain = (@hp_damage*0.2).to_i if @states.include?(26)[/pre]
求教该怎么设置当
梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
回帖
2257

贵宾

发表于 2014-3-24 21:01:29 | 显示全部楼层
你要传个参数过去
  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))
复制代码

评分

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

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
24 小时
注册时间
2014-2-20
回帖
11
 楼主| 发表于 2014-3-26 15:16:42 | 显示全部楼层
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号状态后还是不能触发吸血呢
另外还有个小问题 怎么在点评的时候给别人加经验呢

点评

已经可以生效了 非常感谢  发表于 2014-3-27 08:47
就是楼下说的那样,state?(26) 改成 uer.state?(26) 就行了,加经验那是评分,用户组到了才有的功能。  发表于 2014-3-26 22:40
回复

使用道具 举报

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
回帖
420
发表于 2014-3-26 20:54:27 来自手机 | 显示全部楼层
user.state?(26)

评分

参与人数 1星屑 +132 收起 理由
熊喵酱 + 132 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
24 小时
注册时间
2014-2-20
回帖
11
 楼主| 发表于 2014-3-27 08:46:57 | 显示全部楼层
SuperMario 发表于 2014-3-26 20:54
user.state?(26)

已经正常生效了
非常感谢
回复

使用道具 举报

梦石
0
星屑
2432
在线时间
270 小时
注册时间
2015-4-11
回帖
42
发表于 2015-4-20 12:58:24 | 显示全部楼层
楼主 我新人看不明白能重新发一下完整的吗?{:2_284:}

点评

这样挖坟在别人的已解决的帖子里追问不好,会打扰到别人,有需要你可以私信楼主,或者发新的帖子并把该帖链接附上。写清问题,描述清楚问题。  发表于 2015-4-20 13:10

评分

参与人数 1星屑 -20 收起 理由
VIPArcher -20 挖坟=。=

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部