添加新建筑


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






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

属性之类的还是自己调整,有两点需要注意:
1.因为这个建筑有按钮,所以必须要添加下面这个语句才能显示按钮。(为什么原来的没有也能显示按钮?原来的是通过主程序指定调用名显示按钮的,改了调用名当然没有按钮)
		<Flag>ShowTactics</Flag>
2.因为这个建筑是奇观,所以必须删除<UnitType>AbstractPoliticalWonder</UnitType><UnitType>AbstractWonder</UnitType>,否则可能会影响到升级科技。



修改如下(添加蓝色语句,删除红色语句,或者将红色语句修改成xml注释<!-- -->的形式):
protoy.xml - 记事本
	<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 - 记事本
<?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>
		<!-- 输入双引号与单引号都是可行的 -->







这个建筑我让少林大师建造,这次在techtreey搜索的是YPAge0Chinese,然后按照格式添加启用单位的语句。
无标题 - 记事本
	<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</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 - 记事本
	<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>