给单位添加建造建筑能力




如果你曾经给不能建造建筑的单位添加了建造建筑的图标,那么在那个单位显示的建筑按钮一定是灰色的,并且不能按下去。


原因是因为这个单位没有开启建造能力,也没有建造动作(有的单位可能有,例如火枪手,只不过是tactics没有开启建筑能力,所以不能建造建筑。)
不说废话了,接下来教你怎样添加建造建筑能力(我采用的单位是铁军)。
1.先把你要添加的建筑按钮弄好,(效果就是上面截图的样子,图标灰色,不能建造)
  protoy.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
	<Unit id ='940' name ='ypMercIronTroop'>
<DBID>1391</DBID>
<DisplayNameID>60771</DisplayNameID>
<EditorNameID>60772</EditorNameID>
<PopulationCount>2</PopulationCount>
<ObstructionRadiusX>0.4900</ObstructionRadiusX>
<ObstructionRadiusZ>0.4900</ObstructionRadiusZ>
<FormationCategory>Ranged</FormationCategory>
<MaxVelocity>4.5000</MaxVelocity>
<MaxRunVelocity>6.5000</MaxRunVelocity>
<MovementType>land</MovementType>
<TurnRate>18.0000</TurnRate>
<AnimFile>units\asians\mercenaries\iron_troop\iron_troop.xml</AnimFile>
<ImpactType>Flesh</ImpactType>
<PhysicsInfo>dude</PhysicsInfo>
<Icon>units\asians\mercenaries\iron_troop\iron_troop_icon_64</Icon>
<PortraitIcon>units\asians\mercenaries\iron_troop\iron_troop_icon_portrait</PortraitIcon>
<RolloverTextID>60770</RolloverTextID>
<ShortRolloverTextID>60769</ShortRolloverTextID>
<InitialHitpoints>225.0000</InitialHitpoints>
<MaxHitpoints>225.0000</MaxHitpoints>
<LOS>20.0000</LOS>
<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
<AutoAttackRange>20.0000</AutoAttackRange>
<UnitAIType>RangedCombative</UnitAIType>
<TrainPoints>40.0000</TrainPoints>
<Bounty>20.0000</Bounty>
<BuildBounty>20.0000</BuildBounty>
<Cost resourcetype ='Gold'>200.0000</Cost>
<AllowedAge>2</AllowedAge>
<Armor type ='Ranged' value ='0.6000'></Armor>
<UnitType>LogicalTypeHealed</UnitType>
<UnitType>LogicalTypeValidSharpshoot</UnitType>
<UnitType>LogicalTypeNeededForVictory</UnitType>
<UnitType>LogicalTypeHandUnitsAutoAttack</UnitType>
<UnitType>LogicalTypeLandMilitary</UnitType>
<UnitType>LogicalTypeScout</UnitType>
<UnitType>LogicalTypeValidSPCUnitsDeadCondition</UnitType>
<UnitType>LogicalTypeGarrisonInShips</UnitType>
<UnitType>LogicalTypeRangedUnitsAutoAttack</UnitType>
<UnitType>LogicalTypeVillagersAttack</UnitType>
<UnitType>LogicalTypeHandUnitsAttack</UnitType>
<UnitType>LogicalTypeRangedUnitsAttack</UnitType>
<UnitType>LogicalTypeMinimapFilterMilitary</UnitType>
<UnitType>Military</UnitType>
<UnitType>UnitClass</UnitType>
<UnitType>Unit</UnitType>
<UnitType>AbstractArcher</UnitType>
<UnitType>Mercenary</UnitType>
<UnitType>AbstractInfantry</UnitType>
<UnitType>CountsTowardMilitaryScore</UnitType>
<UnitType>AbstractCavalryInfantry</UnitType>
<UnitType>Ranged</UnitType>
<UnitType>HasBountyValue</UnitType>
<UnitType>AbstractRangedInfantry</UnitType>
<UnitType>ConvertsHerds</UnitType>
<Flag>CollidesWithProjectiles</Flag>
<Flag>ApplyHandicapTraining</Flag>
<Flag>CorpseDecays</Flag>
<Flag>ShowGarrisonButton</Flag>
<Flag>DontRotateObstruction</Flag>
<Flag>ObscuredByUnits</Flag>
<Flag>VisibleUnderFogIfGaia</Flag>
<Flag>Tracked</Flag>
<Train row ='0' page ='6' column ='0'>ypOutpostAsian</Train>
<Train row ='0' page ='6' column ='1'>ypWarAcademy</Train>
<Train row ='0' page ='6' column ='2'>ypCastle</Train>
<Train row ='0' page ='6' column ='3'>ypDockAsian</Train>

<Command page ='10' column ='1'>Stop</Command>
<Command page ='10' column ='0'>Garrison</Command>
<Command page ='10' column ='2'>Delete</Command>
<Tactics>IronTroop.tactics</Tactics>
<ProtoAction>
<Name>BuildingAttack</Name>
<Damage>22.000000</Damage>
<DamageType>Siege</DamageType>
<ROF>3.000000</ROF>
</ProtoAction>
<ProtoAction>
<Name>DefendHandAttack</Name>
<Damage>16.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>DefendRangedAttack</Name>
<Damage>25.000000</Damage>
<DamageType>Ranged</DamageType>
<MaxRange>16.000000</MaxRange>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>MeleeHandAttack</Name>
<Damage>16.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>StaggerHandAttack</Name>
<Damage>16.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>StaggerRangedAttack</Name>
<Damage>25.000000</Damage>
<DamageType>Ranged</DamageType>
<MaxRange>16.000000</MaxRange>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>VolleyHandAttack</Name>
<Damage>16.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>VolleyRangedAttack</Name>
<Damage>25.000000</Damage>
<DamageType>Ranged</DamageType>
<MaxRange>16.000000</MaxRange>
<ROF>1.500000</ROF>
<DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus>
<DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus>
<DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus>
<DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus>
<DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus>
</ProtoAction>
</Unit>


我把铁军的tactics修改成IronTroop.tactics了,因为我不想影响到其他单位,所以把tactics改成了IronTroop.tactics。(实际上添加建造能力改不改都没有影响的,原因是有建造能力,没有可建造的建筑。)。




3.把铁军的tactics文件提取出来,将名称修改成IronTroop.tactics。
按照格式(只要<tactic>在上面就可以)添加下列语句,(如果原本就有的话,把<active>0</active>改成<active>1</active>(前面7-4已经说过了,<active>0</active>为需要用科技技激活),然后添加<rate type="Building">1.0</rate>)


<action>
<name stringid="69147">Build</name>
<type>Build</type>
<anim>Build</anim>
<active>1</active>
<maxrange>0.2</maxrange>
<rate type="Building">1.0</rate>
</action>



  IronTroop.tactics - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
<!-- converted from XMB to XML -->
<tactics>
<action>
<name stringid="38127">VolleyRangedAttack</name>
<type>Attack</type>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<anim>Volley_standing_attack</anim>
<reloadanim>Volley_standing_reload</reloadanim>
<idleanim>Volley_standing_idle</idleanim>
<accuracy>1.0</accuracy>
<accuracyreductionfactor>0.5</accuracyreductionfactor>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
<projectile>Arrow</projectile>
<minrange>2</minrange>
<rate type="Unit">1.0 </rate>
</action>
<action>
<name stringid="38130">VolleyHandAttack</name>
<type>Attack</type>
<maxrange>1.75</maxrange>
<rate type="Unit">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<impacteffect>effects\impacts\melee</impacteffect>
<anim>charge_attack</anim>
<idleanim>charge_idle</idleanim>
</action>
<action>
<name stringid="38118">BuildingAttack</name>
<type>Attack</type>
<maxrange>6</maxrange>
<rate type="LogicalTypeShipsAndBuildings">1.0 </rate>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<speedboost>1</speedboost>
<impacteffect>effects\impacts\torch</impacteffect>
<projectile>ArrowFlaming</projectile>
<anim>Volley_standing_attack</anim>
<reloadanim>Volley_standing_reload</reloadanim>
</action>
<action>
<name stringid="38136">DefendRangedAttack</name>
<type>Attack</type>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<impacteffect>effects\impacts\arrow</impacteffect>
<anim>Volley_standing_attack</anim>
<reloadanim>Volley_standing_reload</reloadanim>
<accuracy>1.0</accuracy>
<accuracyreductionfactor>0.5</accuracyreductionfactor>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
<projectile>Arrow</projectile>
<minrange>2</minrange>
<rate type="Unit">1.0 </rate>
</action>
<action>
<name stringid="38137">DefendHandAttack</name>
<type>Attack</type>
<maxrange>1.75</maxrange>
<rate type="Unit">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<anim>charge_attack</anim>
<idleanim>charge_idle</idleanim>
<impacteffect>effects\impacts\melee</impacteffect>
</action>
<action>
<name stringid="38135">MeleeHandAttack</name>
<type>Attack</type>
<maxrange>1.75</maxrange>
<rate type="Unit">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<impacteffect>effects\impacts\melee</impacteffect>
<anim>Charge_attack</anim>
<idleanim>Charge_idle</idleanim>
<impacteffect>effects\impacts\melee</impacteffect>
<damage>6.5</damage>
<rof>1.0</rof>
</action>
<action>
<name stringid="38129">StaggerRangedAttack</name>
<type>Attack</type>
<attackaction>1</attackaction>
<rangedlogic>1</rangedlogic>
<anim>Volley_standing_attack</anim>
<reloadanim>Volley_standing_reload</reloadanim>
<idleanim>Volley_standing_idle</idleanim>
<accuracy>1.0</accuracy>
<accuracyreductionfactor>0.5</accuracyreductionfactor>
<aimbonus>0</aimbonus>
<maxspread>5</maxspread>
<spreadfactor>0.25</spreadfactor>
<trackrating>12</trackrating>
<unintentionaldamagemultiplier>0.7</unintentionaldamagemultiplier>
<projectile>Arrow</projectile>
<minrange>2</minrange>
<rate type="Unit">1.0 </rate>
</action>
<action>
<name stringid="38132">StaggerHandAttack</name>
<type>Attack</type>
<maxrange>1.75</maxrange>
<rate type="Unit">1.0 </rate>
<attackaction>1</attackaction>
<handlogic>1</handlogic>
<speedboost>1</speedboost>
<anim>charge_attack</anim>
<idleanim>charge_idle</idleanim>
<impacteffect>effects\impacts\melee</impacteffect>
<damage>6.5</damage>
<rof>1.0</rof>
</action>
<action>
<name stringid="69147">Build</name>
<type>Build</type>
<anim>Build</anim>
<active>1</active>
<maxrange>0.2</maxrange>
<rate type="Building">1.0</rate>
</action>

<tactic>
Volley
<action priority="100">VolleyRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">VolleyHandAttack</action>
<action>Build</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>1</runaway>
<autoretarget>1</autoretarget>
<idleanim>Volley_standing_idle</idleanim>
<boredanim>Volley_standing_bored</boredanim>
<deathanim>Death_by_melee</deathanim>
<walkanim>Volley_walk</walkanim>
<joganim>Volley_jog</joganim>
<runanim>Volley_run</runanim>
</tactic>
<tactic>
Defend
<action priority="100">DefendRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">DefendHandAttack</action>
<action>Build</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<idleanim>Defend_idle</idleanim>
<boredanim>Defend_bored</boredanim>
<deathanim>Death_by_melee</deathanim>
<walkanim>Cover_walk</walkanim>
<joganim>Cover_jog</joganim>
<runanim>Cover_run</runanim>
</tactic>
<tactic>
Stagger
<action priority="100">StaggerRangedAttack</action>
<action priority="75">BuildingAttack</action>
<action priority="25">StaggerHandAttack</action>
<action>Build</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<idleanim>Cover_ranged_idle</idleanim>
<boredanim>Cover_bored</boredanim>
<deathanim>Death_by_melee</deathanim>
<walkanim>Cover_walk</walkanim>
<joganim>Cover_jog</joganim>
<runanim>Cover_run</runanim>
</tactic>
<tactic>
Melee
<action priority="100">BuildingAttack</action>
<action priority="75">MeleeHandAttack</action>
<action>Build</action>
<attacktype>LogicalTypeRangedUnitsAttack</attacktype>
<autoattacktype>LogicalTypeRangedUnitsAutoAttack</autoattacktype>
<attackresponsetype>LogicalTypeRangedUnitsAttack</attackresponsetype>
<runaway>0</runaway>
<autoretarget>1</autoretarget>
<idleanim>Charge_idle</idleanim>
<boredanim>Charge_bored</boredanim>
<deathanim>Death_by_melee</deathanim>
<walkanim>Charge_walk</walkanim>
<joganim>Charge_jog</joganim>
<runanim>Charge_run</runanim>
</tactic>
</tactics>

如果给原本没有建造动作的单位添加的话,要记得在所有tactic那里添加 <action>Build</action>开启建造建筑的设定。(当然你也可以设定某个战术不添加,那样的话切换到那战术就不能建造建筑了。)




4.接下来添加建造动画,把铁军的单位xml提取出来,按照格式添加下列语句:
这个是顶部的attach附件:

<attachment>
hammer
<component>
hammer
<assetreference type="GrannyModel">
<file>units\attachments\hammer_villager</file>
</assetreference>
</component>
<anim>
Idle
<component>hammer</component>
</anim>
</attachment>
<attachment>
saw
<component>
saw_villager
<assetreference type="GrannyModel">
<file>units\attachments\saw_villager</file>
</assetreference>
</component>
<anim>
Idle
<component>saw_villager</component>
</anim>
</attachment>
<attachment>
measure tape
<component>
measure tape
<assetreference type="GrannyModel">
<file>units\attachments\measuring_tape</file>
</assetreference>
</component>
<anim>
Idle
<component>measure tape</component>
</anim>
</attachment>


这个是底部的anim动作(下面的Build就是对应tactics的<anim>Build</anim>,自己往上面搜索一下吧。):

<anim>
Build
<assetreference type="GrannyAnim">
<file>animation_library\villager\villager_male_build1</file>
<weight>90</weight>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.36</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.66</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_b</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_c</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_d</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_e</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_f</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="measure tape" frombone="MASTER" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
BuildLifting
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\BuildLifting</file>
<weight>90</weight>
<tag type="Attack">0.66</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.39</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.69</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_build_standing_idlea</file>
<weight>10</weight>
<tag type="Attack">0.66</tag>
</assetreference>
<component>ModelComp</component>
<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
BuildSaw
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_standing</file>
<weight>90</weight>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.07</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.34</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.73</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_standing_idlea</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
BuildStaking
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_a</file>
<weight>90</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_idlea</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>

  iron_troop.xml.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
<!-- converted from XMB to XML -->
<animfile>
<definebone>Bone01</definebone>
<definebone>Bip01 Prop2</definebone>
<definebone>bone_quiver</definebone>
<definebone>bone_bow</definebone>
<definebone>Bip01 Prop1</definebone>
<attachment>
hammer
<component>
hammer
<assetreference type="GrannyModel">
<file>units\attachments\hammer_villager</file>
</assetreference>
</component>
<anim>
Idle
<component>hammer</component>
</anim>
</attachment>
<attachment>
saw
<component>
saw_villager
<assetreference type="GrannyModel">
<file>units\attachments\saw_villager</file>
</assetreference>
</component>
<anim>
Idle
<component>saw_villager</component>
</anim>
</attachment>
<attachment>
measure tape
<component>
measure tape
<assetreference type="GrannyModel">
<file>units\attachments\measuring_tape</file>
</assetreference>
</component>
<anim>
Idle
<component>measure tape</component>
</anim>
</attachment>

<attachment>
arrow_attachment
<component>
arrow
<assetreference type="GrannyModel">
<file>units\attachments\arrow_attachment</file>
</assetreference>
</component>
<anim>
Idle
<component>arrow</component>
</anim>
</attachment>
<attachment>
flaming_arrow
<component>
emitter
<assetreference type="ParticleSystem">
<file>effects\fire\arrowFire_Longbow.particle</file>
</assetreference>
</component>
<anim>
Idle
<component>emitter</component>
</anim>
</attachment>
<attachment>
staff
<component>
staff
<assetreference type="GrannyModel">
<file>units\asians\mercenaries\iron_troop\Iron_Troop_Staff</file>
</assetreference>
</component>
<anim>
Idle
<component>staff</component>
</anim>
</attachment>
<attachment>
bow
<component>
bow
<assetreference type="GrannyModel">
<file>units\asians\mercenaries\iron_troop\Iron_Troop_Bow</file>
</assetreference>
</component>
<anim>
Idle
<component>bow</component>
</anim>
</attachment>
<component>
ModelComp
<logic type="Tech">
<none>
<logic type="LowPoly">
<normal>
<assetreference type="GrannyModel">
<file>units\asians\mercenaries\iron_troop\Iron_Troop</file>
</assetreference>
</normal>
<lowpoly>
<assetreference type="GrannyModel">
<file>units\asians\mercenaries\iron_troop\LPIronTroop</file>
</assetreference>
</lowpoly>
</logic>
</none>
</logic>
<decal>
<effecttype>default</effecttype>
<texture isfakeshadow="1">shadows_selections\shadow_hero_64x64</texture>
<selectedtexture>shadows_selections\selection_hero_64x64</selectedtexture>
<width>1.0</width>
<height>1.0</height>
</decal>
</component>
<anim>
Death_by_melee
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_A</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.51</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_B</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.17</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_C</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.73</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Death_by_range
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_A</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.51</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_B</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.18</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\death_standing_rifleman_C</file>
<tag type="SpecificSoundSet" checkvisible="1" set="RagdollImpact">0.73</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Death_by_havoc
<assetreference type="GrannyAnim">
<file>animation_library\range\havoc_death</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\havoc_deathB</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\havoc_deathC</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\havoc_deathD</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Death_havoc_flail
<assetreference type="GrannyAnim">
<file>animation_library\range\havoc_flail</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Cheer
<assetreference type="GrannyAnim">
<file>animation_library\shared\cheer_A</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\cheer_B</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\cheer_C</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\cheer_D</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\cheer_E</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Recoil
<assetreference type="GrannyAnim">
<file>animation_library\shared\recoil_A</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\recoil_C</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\recoil_E</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\shared\recoil_G</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
HC_openDoor
<assetreference type="GrannyAnim">
<file>animation_library\shared\doorOpen</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
HC_closeDoor
<assetreference type="GrannyAnim">
<file>animation_library\shared\doorClose</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Raze_Idle
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Raze_Attack
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_fire</file>
<tag type="Attack">0.98</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Arrows">0.98</tag>
</assetreference>
<component>ModelComp</component>
<attach a="flaming_arrow" frombone="bone_quiver" tobone="R HAND" syncanims="0"/>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="arrow_attachment" frombone="bone_quiver" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Cover_ranged_idle
<assetreference type="GrannyAnim">
<file>animation_library\range\cover\longbow_cover_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Cover_bored
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Cover_Walk
<assetreference type="GrannyAnim">
<file>animation_library\range\cover\longbow_cover_walk</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.16</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.56</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Cover_Jog
<assetreference type="GrannyAnim">
<file>animation_library\shared\jog_generic_upper</file>
<file>animation_library\shared\jog_generic_lower</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.10</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Cover_Run
<assetreference type="GrannyAnim">
<file>animation_library\shared\run_generic_upper</file>
<file>animation_library\shared\run_generic_lower</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.08</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.60</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Volley_standing_idle
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Volley_standing_attack
<assetreference type="GrannyAnim">
<file>units\asians\japanese\yumi\yumi_attackRanged00</file>
<tag type="Attack">0.14</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Arrows">0.14</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="arrow_attachment" frombone="bone_quiver" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Volley_standing_bored
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_boredA</file>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Volley_Walk
<assetreference type="GrannyAnim">
<file>animation_library\shared\walk_generic</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.14</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.61</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Volley_Jog
<assetreference type="GrannyAnim">
<file>animation_library\shared\jog_generic_upper</file>
<file>animation_library\shared\jog_generic_lower</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.10</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Volley_Run
<assetreference type="GrannyAnim">
<file>animation_library\shared\run_generic_upper</file>
<file>animation_library\shared\run_generic_lower</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.08</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.60</tag>
</assetreference>
<component>ModelComp</component>
<attach a="bow" frombone="bone_bow" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
Defend_idle
<assetreference type="GrannyAnim">
<file>animation_library\range\defend\longbow_defend_combat_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Defend_bored
<assetreference type="GrannyAnim">
<file>animation_library\range\defend\longbow_defend_combat_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_idle
<assetreference type="GrannyAnim">
<file>animation_library\range\charge\longbow_charge_idle</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_bored
<assetreference type="GrannyAnim">
<file>animation_library\range\volley\longbow_volley_standing_boredB</file>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_attack
<assetreference type="GrannyAnim">
<file>animation_library\range\defend\longbow_defend_melee_A</file>
<tag type="Attack">0.52</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\range\defend\longbow_defend_melee_B</file>
<tag type="Attack">0.27</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Swoosh">0.21</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Swoosh">0.56</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_walk
<assetreference type="GrannyAnim">
<file>animation_library\range\charge\longbow_charge_walk</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.60</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.08</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_jog
<assetreference type="GrannyAnim">
<file>animation_library\range\charge\longbow_charge_jog</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.69</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.15</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
Charge_run
<assetreference type="GrannyAnim">
<file>animation_library\range\charge\longbow_charge_run</file>
<tag type="FootstepLeft" footprinttype="HumanLeft">0.68</tag>
<tag type="FootstepRight" footprinttype="HumanRight">0.13</tag>
</assetreference>
<component>ModelComp</component>
<attach a="staff" frombone="bone_staff" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
kidnap_hostageA_idle
<assetreference type="GrannyAnim">
<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleD</file>
<weight>40</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleB</file>
<weight>20</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleC</file>
<weight>20</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>nuggets\outlaw_kidnap\kidnap_hostageA_idleA</file>
<weight>20</weight>
</assetreference>
<component>ModelComp</component>
</anim>
<anim>
kidnap_hostageA_exit
<assetreference type="GrannyAnim">
<file>nuggets\outlaw_kidnap\kidnap_hostageA_exit</file>
</assetreference>
<component>ModelComp</component>
</anim>
<anim>
Build
<assetreference type="GrannyAnim">
<file>animation_library\villager\villager_male_build1</file>
<weight>90</weight>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.36</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.66</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_b</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_c</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_d</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_e</file>
<weight>10</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\Build_f</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
<attach a="measure tape" frombone="MASTER" tobone="Bip01 Prop2" syncanims="0"/>
</anim>
<anim>
BuildLifting
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\BuildLifting</file>
<weight>90</weight>
<tag type="Attack">0.66</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.39</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">0.69</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="Build">1.00</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_build_standing_idlea</file>
<weight>10</weight>
<tag type="Attack">0.66</tag>
</assetreference>
<component>ModelComp</component>
<attach a="hammer" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
BuildSaw
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_standing</file>
<weight>90</weight>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.07</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.34</tag>
<tag type="SpecificSoundSet" checkvisible="1" set="BuildSaw">0.73</tag>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_standing_idlea</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
<anim>
BuildStaking
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_a</file>
<weight>90</weight>
</assetreference>
<assetreference type="GrannyAnim">
<file>animation_library\2_leg_task\human_saw_idlea</file>
<weight>10</weight>
</assetreference>
<component>ModelComp</component>
<attach a="saw" frombone="MASTER" tobone="Bip01 Prop1" syncanims="0"/>
</anim>
</animfile>











PS:


说一种特殊情况,有的单位是枪或其他武器附加在单位模型下面,这样会导致所有动作都会带着一把枪,包括你加上去的建造动画,原因是因为每个动作都会调用到单位模型,然后2通过模型调用枪或其他武器了,解决办法是删除所有模型下面的武器,然后将删除的语句加到你认为需要添加到的动作上。