|
作图这么久了,第一次遇到这么挫折和莫名的情况
简单来说,就是同样的地图,同样的代码
在单机模式下,全部触发运行正常;
在局域网模式下,个别触发就运行不正常;
稍微具体一点,比如说,M触发:对一个A单位组(预设)进行XX操作,每隔B秒一次。并且传回运行讯息。
单机模式下,或者编辑器测试模式下,运行正常,每隔B秒也会收到DEBUG讯息;
局域网模式下的话,就可能有2种情况:
1.会收到触发运行反馈,知道M运行了;但是单位组内没有反馈,也就是说组动作没有运行成功,应该是A单位组无单位;
2.开始运行正常,反馈显示M运行,显示目前被操作单位的名称;但不久后,就和情况1一样,触发运行,但A单位组根本没被操作;
接下来,更费解的是,情况1下,用测试命令显示A单位组内单位数量,是0。
情况2下,先不是0,后来运行不正常,就是0 。
就像A单位组被随机清空了。
但还不是最奇怪了。我用专门的命令,中途清空A单位组,再灌入A单位组单位,然后马上再显示A单位组单位,还是0 !!
以上这些情况,却在单人模式不会发生
我已经通过物体管理器查看多次了,触发里只用到选取A单位组,并没有任何写入命令。
实在太诡异了!我不停的测试,要疯掉了。
一摸一样的代码,而且又不复杂,在单机里运行正常;但在局域网模式下,虽然也是单人,但是个别触发这次能运行,下次不一定。
请各位高手给点意见,这是怎么回事?
[已解决]另外,附问,一个小问题,地图上放置了一些中立生物和建筑,但是编辑器上明明有,到游戏里,有个别几个就一直没出现。
这也是我作图来,第一次看见的情况。小地图,绝对单位不多。其他都是JASS和T生成。
谢谢了各位,拯救下我吧。
[trigger]
giveAIaHero
    事件
        时间 - 游戏开始 0.00 秒
    条件
    动作
        单位组 - 清空 AIHeroTeam 内所有单位
        玩家组 - 选取 playingAI 内所有玩家做动作
            Loop - 动作
                自定义代码: local location udg_tempPointA
                设置 tempPointA = ((选取玩家) 的游戏开始位置)
                单位 - 创建 1 个 AI_Type[(随机整数,最小值: 1 最大值: 6)] 给 (选取玩家) 在 tempPointA ,面向角度为 默认建筑朝向 度
                设置 tempInt = ((选取玩家) 的玩家索引号)
                设置 playerHero[tempInt] = 最后创建的单位 [R]
                设置 AI_Hero[tempInt] = 最后创建的单位 [R]
                单位组 - 添加 playerHero[tempInt] 到 AIHeroTeam
                单位组 - 添加 playerHero[tempInt] 到 Heros
                单位组 - 添加 playerHero[tempInt] 到 tempZu3
                AI - 忽视 AI_Hero[tempInt] 的警戒点
                单位 - 添加 增加攻击力的物品 (+20) 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 增加攻击力的物品 (+20) 永久性
                单位 - 添加 能盗取生命值的物品 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 能盗取生命值的物品 永久性
                单位 - 添加 能提高护甲的物品 (+4) 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 能提高护甲的物品 (+4) 永久性
                单位 - 添加 能提高英雄属性的物品 (+5 所有属性) 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 能提高英雄属性的物品 (+5 所有属性) 永久性
                单位 - 添加 能带有火焰伤害的物品 (古尔丹) 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 能带有火焰伤害的物品 (古尔丹) 永久性
                单位 - 添加 能增加生命值的物品 (较大的) 给 最后创建的单位 [R]
                单位 - 设置 (最后创建的单位) 打开 能增加魔法值的物品 (较大的) 永久性
                AI - 使 (选取玩家) 暂停 当前AI脚本的运行
                英雄 - 设置 (选取玩家) 的经验获得率为 300.00%
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (playerHero[((选取玩家) 的玩家索引号)] 的类型) 等于 牛头人酋长
                    Then - 动作
                        触发器 - 为 AI congsheng <预设> 添加事件: (单位 - playerHero[((选取玩家) 的玩家索引号)] 的生命值变为 小于 0.00)
                    Else - 动作
                自定义代码: call RemoveLocation( udg_tempPointA )
                自定义代码: set udg_tempPointA = null
        触发器 - 删除 (当前触发)
[/trigger]
这是全图唯一对[单位组]AIHeroTeam的内容进行操作的触发
[trigger]
AItakeAction
    事件
        时间 - AIact 到期
    条件
    动作
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: AI启动
        单位组 - 选取 AIHeroTeam 内所有单位做动作
            Loop - 动作
                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: 找到单位组
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        AI_RunAway[(((选取单位) 的所有者) 的玩家索引号)] 等于 FALSE
                    Then - 动作
                        设置 tempZu = ((可用地图区域) 内的所有单位)
                        设置 tempPointB = ((tempZu 中随机选取的一个单位) 的位置)
                        单位组 - 删除 tempZu
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                (随机整数,最小值: 1 最大值: 2) 等于 1
                            Then - 动作
                                单位 - 对 (选取单位) 发布 AImove [R] 命令到目标点: tempPointB
                                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: ((((选取单位) 的所有者) 的名字) + AIMOVE)
                            Else - 动作
                                单位 - 对 (选取单位) 发布 攻击移动 命令到目标点: tempPointB
                                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: ((((选取单位) 的所有者) 的名字) + 攻击移动)
                        点 - 清除 tempPointB
                    Else - 动作
[/trigger]
这是无法正常运行的触发。表现为,游戏开始以后或中途,只收到“AI启动”的文本,但无法收到其他文本。其中内容已经因测试这个BUG简化。本来是不断放大范围寻路。
[trIgger]
tempTest
    事件
        玩家 - 玩家1(红色) 输入的聊天信息包含 /AI ,匹配方式: 完全匹配
    条件
    动作
        玩家组 - 选取 playingAI 内所有玩家做动作
            Loop - 动作
                单位组 - 添加 playerHero[((选取玩家) 的玩家索引号)] 到 AIHeroTeam
                游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (playerHero[((选取玩家) 的玩家索引号)] 的名字)
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 (AIHeroTeam 中的单位数量) 为字符串)
[/trigger]
这是专门做的测试命令,可以正常反馈给我添加的单位名,但是完成添加后,最后还是显示AIHeroTeam中无单位。为0.
因为地图现在还有些乱,所以还要需要点时间,整理上传。
|
|