查看: 2358|回复: 6

[已经解决] 请问系统自带的敌人是否出现分歧的命令写法

[复制链接]
梦石
0
星屑
2920
在线时间
713 小时
注册时间
2010-7-25
回帖
659

开拓者

发表于 2016-11-25 13:11:34 | 显示全部楼层 |阅读模式

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

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

×
我尝试用$game_troop.members[6].normal?或者$game_troop.members[6].exist?来判断敌人是否出现在场上,结果却是如果没有设定那个位置的敌人就会报错
但是系统自带的分歧里面的“敌人是否出现”却可以将不存在的敌人判断为不在场上,请问这个的脚本应该怎么写?我主要是要用变量来选择敌人位置

评分

参与人数 1星屑 +50 收起 理由
RaidenInfinity + 50 结帖

查看全部评分

梦石
0
星屑
9716
在线时间
2775 小时
注册时间
2008-9-5
回帖
3458

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

发表于 2016-11-25 14:19:40 | 显示全部楼层
本帖最后由 cinderelmini 于 2016-11-25 14:21 编辑

先判断是否是敌人数据实例再用实例的方法做判定会比较好。。比如。。。
  1. if $game_troop.members[6].is_a?(Game_Enemy) and $game_troop.members[6].normal?
  2. ...
  3. end
  4. # 或者偷懒点……
  5. if $game_troop.members[6] and $game_troop.members[6].normal?
  6. ...
  7. end
复制代码

点评

居然在这里都会被催坑!!  发表于 2016-11-25 21:50
判断是否存在原来就是$game_troop.members,我才知道原来一条&&的判断中会优先判断前面,不达标就不管后面了,我一直以来还在用 IF IF的句子呢  发表于 2016-11-25 15:54
捕捉催坑,我要上方舟(啥)  发表于 2016-11-25 14:46

评分

参与人数 3星屑 +44 梦石 +1 收起 理由
RaidenInfinity + 1 认可答案
jianyulei + 20 认可答案
百里_飞柳 + 24 喵喵喵,和珺菊苣撞了

查看全部评分

回复

使用道具 举报

老鹰

梦石
40
星屑
37812
在线时间
7091 小时
注册时间
2012-5-26
回帖
3297

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

发表于 2016-11-25 14:43:14 | 显示全部楼层
$game_troop里面的members方法返回了当前敌群的所有敌人的game_enemy对象的数组
迭代这个数组并依次判定各个敌人对象的 exist? 方法,就是判定这个敌人是否 存在 于场上(与之相反的是 隐藏,并未考虑死亡)alive?与dead?便先考虑是否 存在,再考虑了是否死亡。

举例: 比如设置3号敌人为中途出现,而1/2/4/5为一开始出现,在战斗事件中写入脚本
  1. a = []
  2. $game_troop.members.each do |member|
  3. a.push(member.index) if member.exist?
  4. end
  5. p a
复制代码

输出 [0, 1, 3, 4]

3号敌人出现后,再一遍脚本
输出 [0, 1, 2, 3, 4]

点评

你的举例太可怕了,我只是想知道 敌人不存在 的写法而已…… 不过alive?确实更好,是应该考虑下死亡判定  发表于 2016-11-25 15:59

评分

参与人数 2星屑 +316 收起 理由
RaidenInfinity + 250 认可答案
cinderelmini + 66 喵喵,喵喵喵喵。

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部