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

Project1

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

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

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2014-2-20
帖子
15
跳转到指定楼层
1
发表于 2014-3-28 13:32:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

目前用的方法是
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   #--------------------------------------------------------------------------
  3.   # ● 计算伤害
  4.   #--------------------------------------------------------------------------
  5.   def make_damage_value(user, item)
  6.     value = item.damage.eval(user, self, $game_variables)
  7.     value *= item_element_rate(user, item)
  8.     value *= pdr if item.physical?
  9.     value *= mdr if item.magical?
  10.     value *= rec if item.damage.recover?
  11.     value = apply_critical(value) if @result.critical
  12.     value = apply_variance(value, item.damage.variance)
  13.     value = apply_guard(value)
  14.     @result.make_damage(value.to_i, item, user.state?(26) || user.state?(27))
  15.   end
  16. end

但是感觉有点繁琐
这样话的如果3个或者3个以上的状态时写的也太长了吧
试了下
user.state?(26 || 27)
结果悲哀的发现只会判定括号内的真假 所以26判定的永远是真只会返回26 27根本就没被计算
如果是
user.state?(26,27)
当其中任意一个状态触发时就会提示错误 wrong number of arguments (2 of 1)
求教有什么符号能放在 26和27 之间就达成(26或者27)的效果吗

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

2
发表于 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 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 13:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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