萌新学作图 发表于 2024-3-22 21:33:02

请问如何让堡垒像贸易战那样出兵

自己做了一个剧情 玩家修建贸易战会控制地图上存在的堡垒 控制堡垒后 会自动在堡垒附近刷新士兵
如果堡垒被摧毁则该刷新士兵的触发失效 这个判断条件改用那条触发来控制

こはね 发表于 2024-3-22 21:38:38

檢測是否建造貿易戰,堡壘控制權轉換玩家,檢測堡壘是否為玩家的(觸發程序設循環)

萌新学作图 发表于 2024-3-22 21:47:34

こはね 发表于 2024-3-22 21:38
檢測是否建造貿易戰,堡壘控制權轉換玩家,檢測堡壘是否為玩家的(觸發程序設循環) ...

这个是官方编辑器里面就有的触发吗还是要自己写程序

萌新学作图 发表于 2024-3-22 21:49:03

萌新学作图 发表于 2024-3-22 21:47
这个是官方编辑器里面就有的触发吗还是要自己写程序

系统里没有own这个抬头的触发程序

こはね 发表于 2024-3-22 22:17:25

全部用系统自带的触发即可,但如果想要省事,可以自己合成触发

触发1用Player Controls Socket检测是否已建造贸易站;然后利用Covert将堡垒转换成玩家x;
    <Condition name="Player Controls Socket">
      <Param name="PlayerID" dispName="$$22301$$Player" VarType="player">1</Param>
      <Param name="Socket" dispName="$$32975$$Socket" VarType="unit">default</Param>
      <Expression>trPlayerControlsSocket(%PlayerID%, "%Socket%")</Expression>
    </Condition>

    <Effect name="Convert">
      <Param name="SrcObject" dispName="$$22421$$Unit" varType="unit">default</Param>
      <Param name="PlayerID" dispName="$$22301$$Player" varType="player">1</Param>
      <Command>trUnitSelectClear();</Command>
      <Command loop="" loopParm="SrcObject">trUnitSelect("%SrcObject%");</Command>
      <Command>trUnitConvert(%PlayerID%);</Command>
    </Effect>





触发2设定循环,用Timer设定延时,同时用Units Owned检测堡垒是否爲玩家x的建筑,最后生成单位,可以用Unit Create或者Army Deploy(如果使用Army,需要先在地图定义军队)
    <Condition name="Timer">
      <Param name="Param1" dispName="$$22291$$Seconds" VarType="long">0</Param>
      <Expression>(trTime()-cActivationTime) >= %Param1%</Expression>
    </Condition>

    <Condition name="Units Owned">
      <Param name="Player" dispName="$$22301$$Player" varType="player">1</Param>
      <Param name="SrcObject" dispName="$$22295$$Source Units" VarType="unit">default</Param>
      <Command>trUnitSelectClear();</Command>
      <Command loop="" loopParm="SrcObject">trUnitSelect("%SrcObject%");</Command>
      <Expression>trUnitIsOwnedBy(%Player%)</Expression>
    </Condition>

    <Effect name="Unit Create">
      <Param name="PlayerID" dispName="$$22301$$Player" varType="player">1</Param>
      <Param name="ProtoName" dispName="$$22434$$ProtoName" varType="protounit">Villager</Param>
      <Param name="ScenName" dispName="$$20509$$Name" varType="string">Default</Param>
      <Param name="Location" dispName="" varType="area">0,0,0</Param>
      <Param name="Heading" dispName="$$22432$$Heading" varType="long">0</Param>
      <Command>trUnitCreate("%ProtoName%", "%ScenName%", %Location%, %Heading%, %PlayerID%);</Command>
    </Effect>

    <Effect name="Unit Create Multi">
      <Param name="PlayerID" dispName="$$22301$$Player" varType="player">1</Param>
      <Param name="ProtoName" dispName="$$22434$$ProtoName" varType="protounit">Villager</Param>
      <Param name="Location" dispName="" varType="area">0,0,0</Param>
      <Param name="Count" dispName="$$22435$$Count" varType="long">0</Param>
      <Param name="Heading" dispName="$$22432$$Heading" varType="long">0</Param>
      <Command>for (i=0; &lt;%Count%)</Command>
      <Command>trUnitCreate("%ProtoName%", "default", %Location%, %Heading%,, %PlayerID%);</Command>
    </Effect>
Army Deploy使用方法可参考:https://www.aoebbs.net/thread-1683-1-1.html
    <Effect name="Army Deploy">
      <Param name="SrcArmy" dispName="$$22348$$Army" VarType="group">default</Param>
      <Param name="ProtoName" dispName="$$22434$$ProtoName" varType="protounit">Villager</Param>
      <Param name="Location" dispName="" varType="area">0,0,0</Param>
      <Param name="Count" dispName="$$22435$$Count" varType="long">0</Param>
      <Param name="Heading" dispName="$$22432$$Heading" varType="long">0</Param>
      <Param name="Clear" dispName="$$22464$$Clear Existing Units:" varType="bool">true</Param>
      <Command>trArmyDispatch("%SrcArmy%", "%ProtoName%", %Count%, %Location%, %Heading%, %Clear%);</Command>
    </Effect>





此处可选,用于检测堡垒是否被摧毁,然后关闭触发2;不过由于触发2检测了堡垒的控制权是否为玩家x,堡垒被摧毁后,即使不关闭触发2,也不会再次生成单位



BigFile4/Player Controls Socket.mp4

如果要设定堡垒在被控制前不允许攻击,可以参考假玩家设定https://www.aoebbs.net/thread-828-1-1.html

萌新学作图 发表于 2024-3-24 12:49:28

こはね 发表于 2024-3-22 22:17
全部用系统自带的触发即可,但如果想要省事,可以自己合成触发

触发1用Player Controls Socket检测是否已 ...

谢谢我用这个效果来模拟到达殖民地
页: [1]
查看完整版本: 请问如何让堡垒像贸易战那样出兵