查看: 1729|回复: 2

[已经解决] 请教“当状态是26或者27时”这个判定有什么简化的写法吗?

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

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

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

×
本帖最后由 远坂焰 于 2014-3-28 13:35 编辑

目前用的方法是
[pre lang="ruby" line="1"]class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 计算伤害
  #--------------------------------------------------------------------------
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables)
    value *= item_element_rate(user, item)
    value *= pdr if item.physical?
    value *= mdr if item.magical?
    value *= rec if item.damage.recover?
    value = apply_critical(value) if @result.critical
    value = apply_variance(value, item.damage.variance)
    value = apply_guard(value)
    @result.make_damage(value.to_i, item, user.state?(26) || user.state?(27))
  end
end[/pre]
但是感觉有点繁琐
这样话的如果3个或者3个以上的状态时写的也太长了吧
试了下
user.state?(26 || 27)
结果悲哀的发现只会判定括号内的真假 所以26判定的永远是真只会返回26 27根本就没被计算
如果是
user.state?(26,27)
当其中任意一个状态触发时就会提示错误 wrong number of arguments (2 of 1)
求教有什么符号能放在 26和27 之间就达成(26或者27)的效果吗

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-3-28 15:28:49 | 显示全部楼层
本帖最后由 taroxd 于 2014-3-28 16:56 编辑

看了楼主的想法,还是请楼主好好学习Ruby

你可以主动定义一个方法
比如在Game_BattlerBase中定义
  1. def any_state?(*args)
  2.   args.any? {|n| state?(n) }
  3. end
复制代码
这样就可以使用user.any_state?(26,27)  了
或者只是偶尔使用的话,可以
  1. [26,27,28,29].any? {|n| user.state?(n) }
复制代码
以上代码均在无环境时写下并且未经过测试

评分

参与人数 1星屑 +100 收起 理由
Sion + 100 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
50
在线时间
24 小时
注册时间
2014-2-20
回帖
11
 楼主| 发表于 2014-3-28 16:25:01 | 显示全部楼层
本帖最后由 远坂焰 于 2014-3-28 16:45 编辑
taroxd 发表于 2014-3-28 15:28
看了楼主的想法,情楼主好好学习Ruby

你可以主动定义一个方法


实测可行 非常感谢 大大已经帮助岚好几次了呢 求大大昵称
RGSS3岚完全初学者的说
目前在努力学习《入门教程大家写V1.1》
另外大大的脚本合集帖帮助也非常大 学到了不少东西
但是人太笨 很多还不会运用
def any_state?(*args) 和 [26,27,28,29].any? 对照着还能看懂
但是 {|n| state?(n) } 是什么意思呢?
大括号是指里面是变量 state?(n)是指状态n吗 |n|又是指什么额

点评

参考任意Ruby教程的“block”(块)的部分,我解释得不可能比教程清楚  发表于 2014-3-28 16:55
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部