添加新建筑




这个教程与上面2-2教程一模一样,不过只能由有建造能力的单位建造建筑,不能通过卡片运送。






我这次复制了大报恩寺作为模板,依然是像2-1那样,从<Unit id =......一直复制到</unit>


属性之类的还是自己调整,有两点需要注意:
1.因为这个建筑有按钮,所以必须要添加下面这个语句才能显示按钮。(为什么原来的没有也能显示按钮?原来的是通过主程序指定调用名显示按钮的,改了调用名当然没有按钮)

		<Flag>ShowTactics</Flag>
2.因为这个建筑是奇观,所以必须删除<UnitType>AbstractPoliticalWonder</UnitType>与<UnitType>AbstractWonder</UnitType>,否则可能会影响到升级科技。



修改如下(添加蓝色语句,删除红色语句,或者将红色语句修改成xml注释<!-- -->的形式):
  protoy.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
	<Unit id ='1217' name ='ypWCPorcelainTower'>
<DBID>1801</DBID>
<DisplayNameID>99997</DisplayNameID>
<EditorNameID>99996</EditorNameID>
<ObstructionRadiusX>4.0000</ObstructionRadiusX>
<ObstructionRadiusZ>4.0000</ObstructionRadiusZ>
<MaxVelocity>0.0000</MaxVelocity>
<MovementType>land</MovementType>
<AnimFile>buildings\wonders\porcelain_tower\porcelain_tower.xml</AnimFile>
<DeadReplacement>BuildingRubble4x4</DeadReplacement>
<DeadReplacementLifespan>15</DeadReplacementLifespan>
<ImpactType>Wood</ImpactType>
<PhysicsInfo>barracks</PhysicsInfo>
<PlacementFile>buildinglarge.xml</PlacementFile>
<Icon>buildings\wonders\porcelain_tower\porcelain_tower_icon_64</Icon>
<MinimapIcon>ui\minimap\wonder_16x16</MinimapIcon>
<PortraitIcon>buildings\wonders\porcelain_tower\porcelain_tower_icon_portrait</PortraitIcon>
<RolloverTextID>99994</RolloverTextID>
<ShortRolloverTextID>99995</ShortRolloverTextID>
<InitialHitpoints>5000.0000</InitialHitpoints>
<MaxHitpoints>5000.0000</MaxHitpoints>
<LOS>12.0000</LOS>
<BuildPoints>120.0000</BuildPoints>
<BuildLimit>1</BuildLimit>
<Bounty>240.0000</Bounty>
<Cost resourcetype ='Food'>800.0000</Cost>
<BuildingWorkRate>1.0000</BuildingWorkRate>
<AllowedAge>0</AllowedAge>
<Armor type ='Siege' value ='0.0000'></Armor>
<BuilderLimit>8</BuilderLimit>
<UnitType>LogicalTypeValidSabotage</UnitType>
<UnitType>LogicalTypeHandUnitsAutoAttack</UnitType>
<UnitType>LogicalTypeBuildingsNotWalls</UnitType>
<UnitType>LogicalTypeRangedUnitsAutoAttack</UnitType>
<UnitType>LogicalTypeVillagersAttack</UnitType>
<UnitType>LogicalTypeHandUnitsAttack</UnitType>
<UnitType>LogicalTypeShipsAndBuildings</UnitType>
<UnitType>LogicalTypeRangedUnitsAttack</UnitType>
<UnitType>LogicalTypeBuildingsNotWallsOrGroves</UnitType>
<UnitType>LogicalTypeMinimapFilterMilitary</UnitType>
<UnitType>BuildingClass</UnitType>
<UnitType>MilitaryBuilding</UnitType>
<UnitType>Building</UnitType>
<UnitType>CountsTowardMilitaryScore</UnitType>
<UnitType>HasBountyValue</UnitType>
<!-- <UnitType>AbstractWonder</UnitType> -->
<UnitType>ConvertsHerds</UnitType>
<!-- <UnitType>AbstractPoliticalWonder</UnitType> -->
<Tech row ='0' page ='1' column ='1'>SaloonWildWest</Tech>
<Flag>ShowTactics</Flag>
<Flag>CollidesWithProjectiles</Flag>
<Flag>StartsAtFullEfficiency</Flag>
<Flag>Immoveable</Flag>
<Flag>NoBloodOnDeath</Flag>
<Flag>ObscuresUnits</Flag>
<Flag>NoIdleActions</Flag>
<Flag>NonAutoFormedUnit</Flag>
<Flag>Doppled</Flag>
<Flag>SelectWithObstruction</Flag>
<Flag>PaintTextureWhenPlacing</Flag>
<Flag>FlattenGround</Flag>
<Flag>HasGatherPoint</Flag>
<Flag>InitialGarrisonOnly</Flag>
<Flag>EnterHotkeyContext</Flag>
<Flag>Tracked</Flag>
<Command page ='9' column ='3'>WonderCoin</Command>
<Command page ='9' column ='1'>WonderFood</Command>
<Command page ='9' column ='2'>WonderWood</Command>
<Command page ='10' column ='0'>SetGatherPointEconomy</Command>
<Command page ='9' column ='0'>TacticTrade</Command>
<Command page ='10' column ='1'>Delete</Command>
<Tactics>porcelaintower.tactics</Tactics>
<ProtoAction>
<Name>AutoGatherCoin</Name>
<Rate type ='Gold'>10.000000</Rate>
</ProtoAction>
<ProtoAction>
<Name>AutoGatherFood</Name>
<Rate type ='Food'>10.500000</Rate>
</ProtoAction>
<ProtoAction>
<Name>AutoGatherWood</Name>
<Rate type ='Wood'>10.000000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RainbowCoin</Name>
<Type>AutoGather</Type>
<Rate type ='Gold'>5.500000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RainbowFood</Name>
<Type>AutoGather</Type>
<Rate type ='Food'>7.500000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RainbowTrade</Name>
<Type>AutoGather</Type>
<Rate type ='Trade'>2.00000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RainbowWood</Name>
<Type>AutoGather</Type>
<Rate type ='Wood'>5.500000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RainbowXP</Name>
<Type>AutoGather</Type>
<Rate type ='XP'>2.00000</Rate>
</ProtoAction>
</Unit>


  randommapstringsy.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
<?xml version="1.0" encoding="utf-8"?>
<StringTable version="130">
<Language name="English">
<String _locID="130015">Ozarks</String>
<String _locID="130016">Ozarks: Dense thickets filled with wildlife dot this rolling terrain.</String>
<String _locID="130017">Hilltop trading posts sit beside a trade route that crosses the map from East to West. Teams are split across the trade route.</String>
<String _locID="130018">Plymouth</String>
<String _locID="130019">Plymouth: A bountiful land of natural treasures and grateful Pilgrims.</String>
<String _locID="130020">Each colony can use intrepid Pilgrims and Scout Turkeys to explore the bountiful wilderness for Native Settlements and unique treasures.</String>
<String _locID ='99999'>独角兽骑士</String>
<String _locID ='99998'>CAV独角兽骑士</String>
<String _locID ='99997'>琉璃塔</String>
<String _locID ='99996'>BUI 琉璃塔</String>
<String _locID ='99995'>中国极高GDP之谜?</String>
<String _locID ='99994'>可自动生产资源的琉璃塔。</String>

<!-- 输入双引号与单引号都是可行的 -->
</Language>
</StringTable>







这个建筑我让少林大师建造,这次在techtreey搜索的是YPAge0Chinese,然后按照格式添加启用单位的语句。
  techtreey.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
	<Tech name ='YPAge0Chinese' type ='Normal'>
<DBID>3529</DBID>
<Status>UNOBTAINABLE</Status>
<Flag>Shadow</Flag>
<Effects>
<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
<Target type ='ProtoUnit'>ypWCPorcelainTower</Target></Effect>

<Effect type ='TechStatus' status ='active'>YPAAAsianStartingTechs</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseSpecialTechs</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseTechs</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseConsulate</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseMonks</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseUnits</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseBuildings</Effect>
<Effect type ='TechStatus' status ='active'>YPAge0ChineseWonders</Effect>
</Effects>
</Tech>
<Tech name ='YPAge0Indians' type ='Normal'>
<DBID>3530</DBID>
<Status>UNOBTAINABLE</Status>
<Flag>Shadow</Flag>
<Effects>
<Effect type ='TechStatus' status ='active'>YPAAAsianStartingTechs</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansBuildings</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansUnits</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansWonders</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansTechs</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansSpecialTechs</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansMonks</Effect>
<Effect type ='TechStatus' status ='active'>ypAge0IndiansConsulate</Effect>
</Effects>
</Tech>



我设定少林大师那里添加建造按钮:
  protoy.xml - 记事本 ____ X
文件(F)  编辑(E)  格式(O)  查看(V)  帮助(H)
	<Unit id ='918' name ='ypMonkChinese'>
<DBID>1345</DBID>
<DisplayNameID>60200</DisplayNameID>
<EditorNameID>60201</EditorNameID>
<ObstructionRadiusX>0.4900</ObstructionRadiusX>
<ObstructionRadiusZ>0.4900</ObstructionRadiusZ>
<FormationCategory>Mobile</FormationCategory>
<MaxVelocity>4.5000</MaxVelocity>
<MaxRunVelocity>6.5000</MaxRunVelocity>
<MovementType>land</MovementType>
<TurnRate>18.0000</TurnRate>
<AnimFile>units\asians\chinese\monk\monk.xml</AnimFile>
<ImpactType>Flesh</ImpactType>
<Icon>units\asians\chinese\shaolin_disciple\shaolin_master_icon_64</Icon>
<MinimapIcon>ui\minimap\hero</MinimapIcon>
<PortraitIcon>units\asians\chinese\shaolin_disciple\shaolin_master_icon_portrait</PortraitIcon>
<SelectionPriority>5</SelectionPriority>
<RolloverTextID>60199</RolloverTextID>
<ShortRolloverTextID>69907</ShortRolloverTextID>
<InitialHitpoints>450.0000</InitialHitpoints>
<MaxHitpoints>450.0000</MaxHitpoints>
<LOS>18.0000</LOS>
<ProjectileProtoUnit>ypShuriken</ProjectileProtoUnit>
<AutoAttackRange>16.0000</AutoAttackRange>
<UnitAIType>RangedCombative</UnitAIType>
<TrainPoints>30.0000</TrainPoints>
<BuildLimit>1</BuildLimit>
<Bounty>90.0000</Bounty>
<Cost resourcetype ='Gold'>300.0000</Cost>
<AllowedAge>0</AllowedAge>
<Armor type ='Ranged' value ='0.1000'></Armor>
<UnitType>LogicalTypeHealed</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>AbstractInfantry</UnitType>
<UnitType>Hero</UnitType>
<UnitType>Unit</UnitType>
<UnitType>Military</UnitType>
<UnitType>UnitClass</UnitType>
<UnitType>AbstractCavalryInfantry</UnitType>
<UnitType>HasBountyValue</UnitType>
<UnitType>ConvertsHerds</UnitType>
<UnitType>AbstractCanSeeStealth</UnitType>
<UnitType>AbstractHandInfantry</UnitType>
<UnitType>AbstractChineseMonk</UnitType>
<UnitType>AbstractMonk</UnitType>
<Train row ='0' page ='6' column ='1'>TradingPost</Train>
<Train row ='0' page ='6' column ='1'>ypWCPorcelainTower</Train>
<Train row ='0' page ='6' column ='0'>TownCenter</Train>
<Train row ='0' page ='6' column ='3'>NatBlowgunAmbusher</Train>
<Train row ='0' page ='6' column ='2'>WarDog</Train>
<Train row ='0' page ='6' column ='4'>NatClubmanLoyal</Train>
<Train row ='0' page ='6' column ='2'>PetJaguar</Train>
<Train row ='0' page ='6' column ='0'>YPPetPanda</Train>
<Train row ='0' page ='6' column ='2'>ypMonkDisciple</Train>
<Tech row ='0' page ='11' column ='5'>ypMonkMakeDisciple</Tech>
<Flag>CollidesWithProjectiles</Flag>
<Flag>ApplyHandicapTraining</Flag>
<Flag>CorpseDecays</Flag>
<Flag>ShowGarrisonButton</Flag>
<Flag>DontRotateObstruction</Flag>
<Flag>ObscuredByUnits</Flag>
<Flag>HeroName2</Flag>
<Flag>RotateInPlace</Flag>
<Flag>ForceBuildingData</Flag>
<Flag>KnockoutDeath</Flag>
<Flag>NotDeleteable</Flag>
<Flag>CanAutoHeal</Flag>
<Flag>Tracked</Flag>
<Command page ='10' column ='0'>Garrison</Command>
<Command page ='10' column ='2'>Stop</Command>
<Command page ='11' column ='0'>Abilities</Command>
<Tactics>ypchinesemonk.tactics</Tactics>
<ProtoAction>
<Name>Build</Name>
<Rate type ='TradingPost'>3.000000</Rate>
<Rate type ='TownCenter'>1.000000</Rate>
</ProtoAction>
<ProtoAction>
<Name>BuildingAttack</Name>
<Damage>15.000000</Damage>
<DamageType>Siege</DamageType>
<ROF>3.000000</ROF>
<DamageBonus type ='Building'>1.000000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>CoverBuildingAttack</Name>
<Damage>8.000000</Damage>
<DamageType>Siege</DamageType>
<ROF>3.000000</ROF>
<DamageBonus type ='Building'>1.000000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>CoverHandAttack</Name>
<Damage>4.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='Guardian'>3.000000</DamageBonus>
<DamageBonus type ='AbstractVillager'>0.250000</DamageBonus>
<DamageBonus type ='Hero'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>HandAttack</Name>
<Damage>7.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.500000</ROF>
<DamageBonus type ='Guardian'>3.000000</DamageBonus>
<HitPercent>20.000000</HitPercent>
<DamageMultiplier>2.000000</DamageMultiplier>
<HitPercentType>CriticalAttack</HitPercentType>
<DamageBonus type ='AbstractVillager'>0.250000</DamageBonus>
<DamageBonus type ='Hero'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>Heal</Name>
<Type>Heal</Type>
<Rate type ='LogicalTypeHealed'>6.000000</Rate>
</ProtoAction>
<ProtoAction>
<Name>RoundhouseAttack</Name>
<Damage>170.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>2.000000</ROF>
<DamageCap>200.000000</DamageCap>
<DamageBonus type ='AbstractVillager'>0.250000</DamageBonus>
<DamageArea>3.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<DamageBonus type ='MercType2'>0.250000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>Stun</Name>
<Damage>30.000000</Damage>
<DamageType>Ranged</DamageType>
<MinRange>0.000000</MinRange>
<MaxRange>16.000000</MaxRange>
<ROF>3.000000</ROF>
</ProtoAction>
<ProtoAction>
<Name>Stun2</Name>
<Damage>30.000000</Damage>
<DamageType>Hand</DamageType>
<MinRange>4.000000</MinRange>
<MaxRange>6.000000</MaxRange>
<ROF>3.000000</ROF>
</ProtoAction>
</Unit>