查看: 1197|回复: 5

[已经解决] 怎么判断并提取所装备武器的属性编号?

  [复制链接]
梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
发表于 2011-11-4 21:34:37 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 幻耶 于 2011-11-4 21:44 编辑

我需要用事件判断:在当前装备的武器的属性编号30~60范围内是否有属性,如果有就把这个属性的编号提取出来。。。,但是下面这样写判断会出错,比如武器有35号属性,但是判断出来是“没属性”,那么到底应该怎么写?
  1. for i in 30..60
  2. if $data_weapons[$game_party.actors[0].
  3. weapon_id].element_set.include?(i)
  4. p $data_weapons[$game_party.actors[0].
  5. weapon_id].element_set
  6. break
  7. else
  8. p "没属性"
  9. break
  10. end;end
复制代码
囡囚囨囚囨図囨囧

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2011-11-4 21:42:53 | 显示全部楼层
本帖最后由 orzfly 于 2011-11-4 21:50 编辑
  1. for i in 30..60
  2. ids = $data_weapons[$game_party.actors[0].weapon_id].element_set & ((30..60).to_a)
  3. if ids.size>=0
  4. p ids
  5. end
复制代码
其实这样就可以了
array & array 是求两个数组的交集

你的那个判断不应该有else
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2011-11-4 21:46:37 | 显示全部楼层
orzfly 发表于 2011-11-4 21:42

还是不对啊,比如当前装备的武器有35号属性,但是判断出来却是“没属性”
囡囚囨囚囨図囨囧
回复

使用道具 举报

Fuzzy Ginkgo

梦石
0
星屑
61105
在线时间
1933 小时
注册时间
2010-6-26
回帖
1535

烫烫烫开拓者

发表于 2011-11-4 21:52:36 | 显示全部楼层
2楼有一个更好的办法

你的这个在逻辑上有问题
每次判断,i从30开始
根据你的if,如果当前物品没有30号属性就会跳没有,如果有就会跳,然后就break终止循环了。
也就是说31等之后的根本没有判断
要解决可以把else里面的break删掉。
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复

使用道具 举报

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
回帖
914
 楼主| 发表于 2011-11-4 22:03:02 | 显示全部楼层
orzfly 发表于 2011-11-4 21:42
其实这样就可以了
array & array 是求两个数组的交集

因为我else也要判断之后做处理,所以要有else
那么是不是后面还要加一段unless的判断?
  1. for i in 30..60
  2. unless $data_weapons[$game_party.actors[0].
  3. weapon_id].element_set.include?(i)
  4. p "没属性"
  5. XXXXXX
  6. end;end
复制代码
囡囚囨囚囨図囨囧
回复

使用道具 举报

梦石
0
星屑
513
在线时间
1479 小时
注册时间
2011-9-17
回帖
1266

开拓者贵宾

发表于 2011-11-4 22:06:13 | 显示全部楼层
本帖最后由 iisnow 于 2011-11-4 22:07 编辑
  1. for i in 30..60
  2. if $data_weapons[$game_party.actors[0].
  3. weapon_id].element_set.include?(i)
  4. p i #输出状态的ID,要名称的话,就改为 $data_states[i].name
  5. break
  6. end
  7. p "没属性" if i == 60
  8. end
复制代码
这样就行了

点评

不过LZ要是想提取所有包含的状态的话 沙发的方法是对的 只需最后加一句: p "没属性" if ids.size == 0 另外沙发的那个脚本不需要那句: for ……   发表于 2011-11-4 22:22
我帖子中要有是不HX的空白,请Ctrl + A
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部