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

Project1

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

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

 关闭 [复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 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
复制代码
囡囚囨囚囨図囨囧

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

2
发表于 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
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2011-11-4 21:46:37 | 只看该作者
orzfly 发表于 2011-11-4 21:42

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

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

4
发表于 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
回复

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
5
 楼主| 发表于 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
复制代码
囡囚囨囚囨図囨囧
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
508
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

6
发表于 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
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 17:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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