Project1

标题: 怎么判断并提取所装备武器的属性编号? [打印本页]

作者: 幻耶    时间: 2011-11-4 21:34
标题: 怎么判断并提取所装备武器的属性编号?
本帖最后由 幻耶 于 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
复制代码
dsu_plus_rewardpost_czw
作者: orzfly    时间: 2011-11-4 21:42
本帖最后由 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

作者: 幻耶    时间: 2011-11-4 21:46
orzfly 发表于 2011-11-4 21:42

还是不对啊,比如当前装备的武器有35号属性,但是判断出来却是“没属性”
作者: orzfly    时间: 2011-11-4 21:52
2楼有一个更好的办法

你的这个在逻辑上有问题
每次判断,i从30开始
根据你的if,如果当前物品没有30号属性就会跳没有,如果有就会跳,然后就break终止循环了。
也就是说31等之后的根本没有判断
要解决可以把else里面的break删掉。
作者: 幻耶    时间: 2011-11-4 22:03
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
复制代码

作者: iisnow    时间: 2011-11-4 22:06
本帖最后由 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
复制代码
这样就行了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1