|
不晓得各位遇到没有
就是如果地图上有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 - 动作
                中立建筑 - 打开 (选取单位) 的小地图特殊标志
                触发器 - 为 changePoint <预设> 添加事件: (单位 - (选取单位) 死亡)
[/trigger]
[trigger]
changePoint
    事件
    条件
    动作
        自定义代码: local location udg_tempLoc
        设置 tempLoc = ((触发单位) 的位置)
        任务 - 对 PlayingPeople 发送 提示 信息: (((【 + ((((凶手单位) 的所有者) 的名字) + 】的)) + (【 + (((凶手单位) 的名字) + 】))) + (夺取了 + ((【 + ((((触发单位) 的所有者) 的名字) + 】)) + 的旗帜!)))
        -------- 被夺取方减分 --------
        设置 point[PTID[(((触发单位) 的所有者) 的玩家索引号)]] = (point[PTID[(((触发单位) 的所有者) 的玩家索引号)]] - 1)
        -------- 夺取方加分 --------
        -------- 改变归属 --------
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (凶手单位) 不等于 (触发单位)
            Then - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        ((凶手单位) 是 ((触发单位) 的所有者) 的同盟单位) 等于 FALSE
                    Then - 动作
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                ((凶手单位) 的所有者) 不等于 中立敌对
                            Then - 动作
                                单位 - 创建 1 个 ((死亡单位) 的类型) 给 friend[(((凶手单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
                            Else - 动作
                                单位 - 创建 1 个 ((死亡单位) 的类型) 给 中立敌对 在 tempLoc ,面向角度为 默认建筑朝向 度
                    Else - 动作
                        单位 - 创建 1 个 ((死亡单位) 的类型) 给 foe[(((触发单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
            Else - 动作
                单位 - 创建 1 个 ((死亡单位) 的类型) 给 foe[(((触发单位) 的所有者) 的玩家索引号)] 在 tempLoc ,面向角度为 默认建筑朝向 度
        点 - 清除 tempLoc
        自定义代码: set udg_tempLoc = null
        设置 point[PTID[(((最后创建的单位) 的所有者) 的玩家索引号)]] = (point[PTID[(((最后创建的单位) 的所有者) 的玩家索引号)]] + 1)
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (最后创建的单位 [R] 的所有者) 不等于 中立敌对
            Then - 动作
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (最后创建的单位 [R] 是 sideCOM[1] 的同盟单位) 等于 TRUE
                    Then - 动作
                        动画 - 改变 最后创建的单位 [R] 的颜色值为:(0,0,255), Alpha通道值: 255
                    Else - 动作
                        动画 - 改变 最后创建的单位 [R] 的颜色值为:(255,0,0), Alpha通道值: 255
            Else - 动作
        触发器 - 为 (当前触发) 添加事件: (单位 - (最后创建的单位) 死亡)
        中立建筑 - 打开 (最后创建的单位) 的小地图特殊标志
        For循环整数A从 1 到 2, 做动作
            Loop - 动作
                多面板 - 设置 (shower 的第 循环整数A [R] 行,第 1 列项) 的项目文本为 (转换 point[循环整数A [R]] 为字符串)
        电影 - 对 PlayingPeople 发送小地图信号到 ((触发单位) 的位置) ,持续时间: 10.00 秒
        声音 - 播放 尤迪安的主题曲 主题音乐,跳过开始 0.00 秒
[/trigger]
    |
|