黄栌苦竹 发表于 2010-11-24 15:29:49

帝国3的触发原来可以用C++自由地写!

如题,我很激动,也很高兴。以后想要什么效果,不用好几个触发堆起来了,自己写个新的就行了。

            <Condition name="Player Deleted Units">   
   <Param name="PlayerID" dispName="$$22301$$Player" VarType="long">1</Param>
   <Param name="UnitType" dispName="Unit Type" VarType="unittype">Unit</Param>
   <Param name="Op" dispName="$$22297$$Operator" VarType="operator">==</Param>
   <Param name="result" dispName="Killed (own)" VarType="long">10</Param>
   <Command>for(all=1600;>=-1){ if (kbGetUnitTypeName(all)=="%UnitType%") break;}</Command>
   <Command>xsSetContextPlayer(%PlayerID%);</Command>
   <Command>kbLookAtAllUnitsOnMap();</Command>
   <Command>for(unitQueryID=kbUnitQueryCreate("get%PlayerID%i%result%");>5000){}</Command>
   <Command>kbUnitQuerySetPlayerID(unitQueryID,%PlayerID%);</Command>
   <Command>kbUnitQuerySetUnitType(unitQueryID, all);</Command>
   <Command>kbUnitQuerySetState(unitQueryID,4);//Means Dead</Command>
   <Command>kbUnitQueryResetResults(unitQueryID);</Command>
   <Command>for(result=kbUnitQueryExecute(unitQueryID);>=50000){}</Command>
   <Expression>result-trGetStatValue(%PlayerID%,6) %Op% %result%</Expression>
   </Condition>

这是网上给的范例。


我试着自己写了一个简单的,效果是给所有玩家设定时代,很好用,代码如下:

   <Effect name="Set Age all Players">
   <Param name="Age" dispName="Age" VarType="long">0</Param>
   <Param name="DisplayEffect" dispName="Display Effect" VarType="bool">true</Param>
    <Command>trPlayerSetAge(1, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(2, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(3, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(4, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(5, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(6, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(7, %Age%, %DisplayEffect%);</Command>
    <Command>trPlayerSetAge(8, %Age%, %DisplayEffect%);</Command>
   </Effect>

写完了,copy到触发表文件(游戏目录/trigger3/typrtest.xml)中,在游戏里就可以调用了。

[ 本帖最后由 黄栌苦竹 于 2010-11-24 16:16 编辑 ]

qs 发表于 2010-11-24 16:18:02

强悍,不知道帝国2什么时候能有这样的突破

王文祎 发表于 2010-11-24 18:05:33

这个不是之前就知道了吗?

DW. 发表于 2012-8-21 12:29:07

忍不住问一句,这不是XML吗?

蕞噯哫銶 发表于 2012-9-26 21:53:28

这是C++吗。。。。。。。。。。。。。

飞天先锋 发表于 2012-9-29 23:18:28

C++不是编程语言吗……— —b

石_像_鬼 发表于 2012-9-30 22:48:22

kbLookAtAllUnitsOnMap();
trPlayerSetAge(1, %Age%, %DisplayEffect%);
这些东西是在哪里作用的?{:6_208:}

5865905 发表于 2012-10-1 16:27:52

顶顶

汉堡制作 发表于 2014-5-8 08:54:48

我一直想用触发程序实现一个效果:设定一个军队死亡以后会在这个军队的死亡地点在产生一个相同的单位然后不停的循环,换句话说就是死一个产生一个,产生的地点会随着单位的死亡地点而变化。
我觉得这个效果需要新触发程序:army deploy at army 不知道楼主有没有

我是谁004 发表于 2014-5-8 13:18:12

汉堡制作 发表于 2014-5-8 08:54
我一直想用触发程序实现一个效果:设定一个军队死亡以后会在这个军队的死亡地点在产生一个相同的单位然后不 ...

貌似有Army Teleport?

我是谁004 发表于 2014-5-8 13:18:15

汉堡制作 发表于 2014-5-8 08:54
我一直想用触发程序实现一个效果:设定一个军队死亡以后会在这个军队的死亡地点在产生一个相同的单位然后不 ...

貌似有Army Teleport?

江南幻竹 发表于 2014-5-27 13:49:36

应该是XML吧
页: [1]
查看完整版本: 帝国3的触发原来可以用C++自由地写!