请问如何让堡垒像贸易战那样出兵
自己做了一个剧情 玩家修建贸易战会控制地图上存在的堡垒 控制堡垒后 会自动在堡垒附近刷新士兵如果堡垒被摧毁则该刷新士兵的触发失效 这个判断条件改用那条触发来控制 檢測是否建造貿易戰,堡壘控制權轉換玩家,檢測堡壘是否為玩家的(觸發程序設循環) こはね 发表于 2024-3-22 21:38
檢測是否建造貿易戰,堡壘控制權轉換玩家,檢測堡壘是否為玩家的(觸發程序設循環) ...
这个是官方编辑器里面就有的触发吗还是要自己写程序 萌新学作图 发表于 2024-3-22 21:47
这个是官方编辑器里面就有的触发吗还是要自己写程序
系统里没有own这个抬头的触发程序 全部用系统自带的触发即可,但如果想要省事,可以自己合成触发
触发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; <%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-22 22:17
全部用系统自带的触发即可,但如果想要省事,可以自己合成触发
触发1用Player Controls Socket检测是否已 ...
谢谢我用这个效果来模拟到达殖民地
页:
[1]