找回密码
 点一下
查看: 1202|回复: 12

杀手单位判断错误,是不是有BUG【更新录像和地图】

[复制链接]
发表于 2009-7-16 19:37:39 | 显示全部楼层 |阅读模式
不晓得各位遇到没有

就是如果地图上有XX单位被杀,判断杀手单位

哪怕是马上反馈,也是有小几率判断错误

比如,我的地图就一直遇到,XX单位自己干掉了XX

我还特地研究录像,发现那XX单位死的时候,根本没攻击,所以那种传说自己的投射物打到自己的可能应该排除


凑合做了个辅助触发,来专门解决这个情况。

这个功能是有BUG吧?

如果那样,各位有什么更好的方法达到判断杀手的目的么?

主要用途,比如夺旗模式下,旗帜归属的判断。

以下是测试图,相关代码一样,删除了不相关的触发。
凶手单位判断有无BUG.w3x (27 KB, 下载次数: 8)


这里是相关地图发生BUG的录像,也就是“自己干掉自己”

基于1.23版,压缩包里附注了BUG发生的时间地点

SOD旗帜BUG录像+地图.rar (546 KB, 下载次数: 4)

这里是这幅地图中用到的相关代码,完全一致

[trigger]
basic
    事件
        地图初始化
    条件
    动作
        中立建筑 - 设置小地图特殊标志为 ReplaceableTextures\WorldEditUI\Editor-Force.blp
        单位组 - 选取 (所有 旗帜) 内所有单位做动作
            Loop - 动作
                中立建筑 - 打开 (选取单位) 的小地图特殊标志
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 触发器 - 为 changePoint <预设> 添加事件: (单位 - (选取单位) 死亡)
[/trigger]

[trigger]
changePoint
&#160;&#160;&#160; 事件
&#160;&#160;&#160; 条件
&#160;&#160;&#160; 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 自定义代码: local location udg_tempLoc
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 tempLoc = ((触发单位) 的位置)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 任务 - 对 PlayingPeople 发送 提示 信息: (((【 + ((((凶手单位) 的所有者) 的名字) + 】的)) + (【 + (((凶手单位) 的名字) + 】))) + (夺取了 + ((【 + ((((触发单位) 的所有者) 的名字) + 】)) + 的旗帜!)))
&#160;&#160;&#160;&#160;&#160;&#160;&#160; -------- 被夺取方减分 --------
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 point[PTID[(((触发单位) 的所有者) 的玩家索引号)]] = (point[PTID[(((触发单位) 的所有者) 的玩家索引号)]] - 1)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; -------- 夺取方加分 --------
&#160;&#160;&#160;&#160;&#160;&#160;&#160; -------- 改变归属 --------
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果所有条件成立则做动作1,否则做动作2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; If - 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (凶手单位) 不等于 (触发单位)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Then - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果所有条件成立则做动作1,否则做动作2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; If - 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ((凶手单位) 是 ((触发单位) 的所有者) 的同盟单位) 等于 FALSE
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Then - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果所有条件成立则做动作1,否则做动作2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; If - 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ((凶手单位) 的所有者) 不等于 中立敌对
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Then - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 创建 1 个 ((死亡单位) 的类型) 给 friend[(((凶手单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Else - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 创建 1 个 ((死亡单位) 的类型) 给 中立敌对 在 tempLoc ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Else - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 创建 1 个 ((死亡单位) 的类型) 给 foe[(((触发单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Else - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 单位 - 创建 1 个 ((死亡单位) 的类型) 给 foe[(((触发单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 点 - 清除 tempLoc
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 自定义代码: set udg_tempLoc = null
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 设置 point[PTID[(((最后创建的单位) 的所有者) 的玩家索引号)]] = (point[PTID[(((最后创建的单位) 的所有者) 的玩家索引号)]] + 1)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果所有条件成立则做动作1,否则做动作2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; If - 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (最后创建的单位 [R] 的所有者) 不等于 中立敌对
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Then - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 如果所有条件成立则做动作1,否则做动作2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; If - 条件
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (最后创建的单位 [R] 是 sideCOM[1] 的同盟单位) 等于 TRUE
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Then - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 动画 - 改变 最后创建的单位 [R] 的颜色值为:(0,0,255), Alpha通道值: 255
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Else - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 动画 - 改变 最后创建的单位 [R] 的颜色值为:(255,0,0), Alpha通道值: 255
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Else - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 触发器 - 为 (当前触发) 添加事件: (单位 - (最后创建的单位) 死亡)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 中立建筑 - 打开 (最后创建的单位) 的小地图特殊标志
&#160;&#160;&#160;&#160;&#160;&#160;&#160; For循环整数A从 1 到 2, 做动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Loop - 动作
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 多面板 - 设置 (shower 的第 循环整数A [R] 行,第 1 列项) 的项目文本为 (转换 point[循环整数A [R]] 为字符串)
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 电影 - 对 PlayingPeople 发送小地图信号到 ((触发单位) 的位置) ,持续时间: 10.00 秒
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 声音 - 播放 尤迪安的主题曲 主题音乐,跳过开始 0.00 秒
[/trigger]
&#160;&#160;&#160;
发表于 2009-7-16 19:46:43 | 显示全部楼层
LZ发图吧,没图不好参考实际情况,实际上我就没遇到这种情况
还有,你以前发的那张贴我已经放弃了。。。懒得去检验了
回复

使用道具 举报

 楼主| 发表于 2009-7-16 20:41:22 | 显示全部楼层
引用第1楼light于2009-07-16 19:46发表的  :
LZ发图吧,没图不好参考实际情况,实际上我就没遇到这种情况
还有,你以前发的那张贴我已经放弃了。。。懒得去检验了
那个的确讲的比较复杂

不过那个问题不解决,不大敢写什么东西了

写好了,莫名时能用时不能用 多悬

图已经附上,看看
回复

使用道具 举报

发表于 2009-7-17 20:24:31 | 显示全部楼层
我试了很多次(10次以上)没有这样的问题啊
首先,塔不能攻击自己,所以塔被流矢打中可以排除
然后,我建议你把“触发单位”改成“死亡单位”试试
还有,为该触发添加第一个动作“关闭当前触发”和最后一个动作“开启当前触发”
最后,最好你能把录象发上来。。。。呵呵
回复

使用道具 举报

发表于 2009-7-17 20:36:46 | 显示全部楼层
如果还不行你再来说句吧
回复

使用道具 举报

发表于 2009-7-17 20:45:42 | 显示全部楼层
这个我倒觉得用触发单位比较好,hmmm
另外我也没碰到问题……
回复

使用道具 举报

 楼主| 发表于 2009-7-17 20:47:14 | 显示全部楼层
引用第3楼light于2009-07-17 20:24发表的  :
我试了很多次(10次以上)没有这样的问题啊
首先,塔不能攻击自己,所以塔被流矢打中可以排除
然后,我建议你把“触发单位”改成“死亡单位”试试
还有,为该触发添加第一个动作“关闭当前触发”和最后一个动作“开启当前触发”
最后,最好你能把录象发上来。。。。呵呵
感谢测试

这种小概率BUG吧,你专门想捕捉的时候,还真比较困难呢,想它发作它不发作,呵呵

另外,我以前很少使用“关闭当前触发”

现在虽然在用,但不知道它的具体含义。

是“关闭这条语句所在的触发呢”还是关闭“当前正在运行的任何触发”,还是关闭“当前在运行的本条触发”

录像,我找找看~
回复

使用道具 举报

发表于 2009-7-17 20:59:20 | 显示全部楼层
“关闭当前触发”的作用是使当前触发在事件发生时不能被触发,并不影响动作的进行
回复

使用道具 举报

发表于 2009-7-17 21:00:34 | 显示全部楼层
关闭触发不影响本次触发执行,在下次打开前不会被再次触发而已

慢了唉唉
回复

使用道具 举报

发表于 2009-7-17 21:14:24 | 显示全部楼层
为什么会觉得猪头说话有阿伯的味道?=、=
回复

使用道具 举报

 楼主| 发表于 2009-7-17 21:22:31 | 显示全部楼层
引用第4楼light于2009-07-17 20:36发表的  :
如果还不行你再来说句吧
已经附上了录像和文件
回复

使用道具 举报

 楼主| 发表于 2009-7-17 21:23:53 | 显示全部楼层
引用第8楼zhuzeitou于2009-07-17 21:00发表的  :
关闭触发不影响本次触发执行,在下次打开前不会被再次触发而已

慢了唉唉

了解了,谢谢~
回复

使用道具 举报

发表于 2009-7-18 16:44:42 | 显示全部楼层
引用第6楼niqize于2009-07-17 20:47发表的  :

另外,我以前很少使用“关闭当前触发”

.......

一般我都把关闭当前触发用在事件是时间周期的触发,事件是计时器到期我都不会用关闭当前触发,而是用关闭计时器。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-22 00:26 , Processed in 0.042005 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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