星际争霸吧 关注:278,464贴子:3,817,775
  • 8回复贴,共1

一个rpg地图制作问题。。

只看楼主收藏回复

在触发器的编辑里,涉及了对象、条件、动作三个要素,它们缺一不可。
其中,在条件要素中,若同时给出多个条件,那么这些条件会取交集,也就是“与”在一起,才能触发相应动作。
那么如何在同一条触发里将多个条件取并集(也就是将它们“或”在一起)呢?
比如:我想给出这么一个触发:玩家1的单位到达位置1或位置2或位置3时,将此单位杀死。
那么我需要写三个条件:
①Player 1 brings at least 1 [any unit] to location 1
②Player 1 brings at least 1 [any unit] to location 2
③Player 1 brings at least 1 [any unit] to location 3
但如果将它们写在同一条触发中,3个条件将取交集,玩家1的单位必须同时处在3个location的交集处,才能执行相应动作。
此时我不得不将1条触发拆分成3条,这3条触发动做相同,但条件分别是上面的条件①、条件②、条件③。
在一个复杂的地图里,如此多的触发将使得触发器十分冗长。即使使用注释的方法,也非常不完美。
我。。。在说什么?


IP属地:广西1楼2020-06-01 13:53回复
    分开是必须分开写的。关于重复,你这个执行里面的位置区域就是不重复的,想要复用执行就多加一个Location,单独设置一个Swithc,控制在Loaction执行相应重复动作。
    重复单位进入相应位置就移动新添加的Loaction到相应位置,然后激活Switch。


    IP属地:四川2楼2020-06-01 14:25
    收起回复
      暂时无法,没有找到单触发实现条件“或者”的功能,当前只有“并且”
      其实,像这种多个location 的情况用得还不多,多种部队都需要响应的情况遇到得更多(比如我想做个触发,控制玩家军事单位全体进攻[但是小人、特殊英雄等除外,工人也不能停止采矿],这就很困难了……);
      而且也没有显式的变量(尤其是局部变量),所以大家常常用单位的死亡数量作为变量(还好单位种类够多,大多数还是够用,只是不直观)……


      IP属地:四川3楼2020-06-01 16:53
      回复
        楼上的兄弟:
        我的发帖目的是想要找一种方法减少触发的条数,使得触发器更加简洁。
        以我的写法,假如触发条数是n,电脑需要进行N次操作
        那么,将动作换成移动位置并激活开关,并新增一条触发在新位置中执行动作并关闭开关。这样电脑需要判断单位是否在位置中、是否在新位置中、开关是否打开;并移动位置、打开开关、杀死单位、关闭开关,一共7步。
        那么你的写法触发条数为n+1,电脑进行3.5N次操作,不仅没能减少触发条数,还增加了电脑负担,一旦遇到兵多的情况还会造成卡顿。
        或者说使用移动位置加开关的方式有什么特别的好处吗?麻烦你解释一下,谢了。


        IP属地:广西4楼2020-06-01 17:12
        收起回复
          player 1:
          condtion A :
          current player brings at least 1 'unit' to 'Loaction A '
          action:
          preserve triggers.
          kill all 'unit' for current player at 'loaction A'.
          ..... --- other same action --- .....
          ---------------------------------------------
          condtion B:
          current player brings at least 1 'unit' to 'Loaction B '
          action:
          preserve triggers.
          kill all 'unit' for current player at 'loaction B'.
          ..... --- other same action --- .....
          ----------------------- plan B ------------
          player 1 :
          condition :
          Switch is set
          action:
          preserve triggers.
          clear switch.
          kill all unit for current player at 'newLoaction'.
          ...... ---other same action ----- .....
          ------- Swith trigger done ------
          condition :
          current player brings at least 1 unit to loaction A
          action:
          preserve triggers.
          move 'newLoaction' to anyt unit for current player at 'Loaction A'
          set Switch.
          --------------------
          condition :
          current player brings at least 1 unit to loaction B
          action:
          preserve triggers.
          move 'newLoaction' to anyt unit for current player at 'Loaction B'
          set Switch.


          IP属地:四川6楼2020-06-02 00:16
          回复
            一个开关掌控一个功能,方便复用方便定位。
            卡顿主要是循环触发出问题了导致触发不停激活,
            比如说move unit at 'A' to 'B'这个, 不管你把 B 画的有多大, B的实际范围是有极限的。一旦塞满了就会导致阻塞A,而且 A的单位越多越卡。
            还有种卡顿是 wait 造成的触发卡顿。
            其他的类似叠兵造成的卡顿,不是触发的问题。


            IP属地:四川8楼2020-06-02 00:30
            回复