神话时代显示科技条件

帝国时代3中99%的科技都是<Status>UNOBTAINABLE</Status>不可取得状态,但是我们在设定科技的时候,我们可以使用<Status>OBTAINABLE</Status>来设定所有玩家都开启此科技,例如贸易站那两个科技就是这样设定的。如果这个时候再去使用神话时代的科技开启前提语句,你会发现还可以生效,并且可以根据玩家文化(Culture)、玩家文明(civilization)、玩家时代(SpecificAge)、单位数量(Typecount)来让符合条件的玩家显示科技。


下面是四种显示科技条件,添加在<Prereqs></Prereqs>中,可以混用(包括与帝国3原有的前提科技条件混用):
按文化显示科技


			<Culture>
				<Culturename>文化名称,参考10-7 cultures.xml</Culturename>
			</Culture>



例如:
	<Tech name ='TestTech5' type ='Normal'>
		<DBID>2340</DBID>
		<Status>OBTAINABLE</Status>
		<Flag>CountsTowardEconomicScore</Flag>
		<Icon>buildings\outpost\outpost_icon_64x64</Icon>
		<Prereqs>
			<Culture>
				<Culturename>WesternEurope</Culturename>
			</Culture>
		</Prereqs>
		<Effects>
		</Effects>
	</Tech>









按国家显示科技 <Civilization> <Civname>国家名称,参考15-Civ ID&Civ Name</Civname> </Civilization>


例如: <Tech name ='TestTech5' type ='Normal'> <DBID>2340</DBID> <Status>OBTAINABLE</Status> <Flag>CountsTowardEconomicScore</Flag> <Icon>buildings\outpost\outpost_icon_64x64</Icon> <Prereqs> <Civilization> <Civname>French</Civname> </Civilization> </Prereqs> <Effects> </Effects> </Tech>



按时代显示科技
<SpecificAge>Age2</SpecificAge> Age0为发现时代,Age1为殖民时代,Age2为堡垒时代,Age3为工业时代,Age4为帝王时代,这个条件不同于帝国3原有的前提科技,原有的时代前提科技在未到达所需时代时,会显示为灰色+所需时代的图标,而<SpecificAge>AgeX</SpecificAge>在未到达所设定的时代时,不会显示图标,到了所需时代才会出现。 <Tech name ='TestTech5' type ='Normal'> <DBID>2340</DBID> <Status>OBTAINABLE</Status> <Flag>CountsTowardEconomicScore</Flag> <Icon>buildings\outpost\outpost_icon_64x64</Icon> <Prereqs> <SpecificAge>Age2</SpecificAge> </Prereqs> <Effects> </Effects> </Tech>





由于下面的是圣典1.0旧版本第二章普通教程,所以比上面的要详细,3.2版本整合到第十二章的高级教程中。
当单位数量达到设定数值时显示科技
方法是在<Prereqs></Prereqs>中添加以下语句:
			<Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="lt"/>当单位A数量<X时开启本科技
			<Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="gte"/>当单位A数量等于X时开启本科技
			<Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="gt"/>当单位A数量>X时开启本科技
注:自己训练的单位,达到条件后还需要建造一个提供人口的建筑物或改良任意一个科技才能显示该科技;而通过卡片、科技运送的单位与旗军训练的单位,达到条件后会直接显示该科技,无需建造建筑或改良科技。该BUG在帝国时代3决定版已经修复。
更多语句请参考1-2 techtreey.xml 复制用模板: <Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="lt"/> <Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="gte"/> <Typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="gt"/>
蓝色语句是当Musketeer(火枪手)数量大于5才会显示这个科技按钮,绿色语句是当Musketeer(火枪手)数量等于5才会显示这个科技按钮
techtreey.xml - 记事本
	<Tech name ='DYITech' type ='Normal'>
		<DBID>5271</DBID>
		<DisplayNameID>06001</DisplayNameID>
		<Status>UNOBTAINABLE</Status>
		<RolloverTextID>06002</RolloverTextID>
		<Flag>CountsTowardEconomicScore</Flag>
		<Prereqs>
			<Typecount unit="Musketeer" count="5.00" state="noneState aliveState buildingState" operator="gt"/>
		</Prereqs>
		<Effects>
			<Effect type ='TechStatus' status ='obtainable'>GuardMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialMusketeers</Effect>
		</Effects>
	</Tech>
	<Tech name ='DYITech2' type ='Normal'>
		<DBID>5271</DBID>
		<DisplayNameID>06003</DisplayNameID>
		<Status>UNOBTAINABLE</Status>
		<RolloverTextID>06004</RolloverTextID>
		<Flag>CountsTowardEconomicScore</Flag>
		<Prereqs>
			<Typecount unit="Musketeer" count="5.00" state="noneState aliveState buildingState" operator="gte"/>
		</Prereqs>
		<Effects>
			<Effect type ='TechStatus' status ='obtainable'>GuardMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialMusketeers</Effect>
		</Effects>
	</Tech>
</TechTree><!-- 这个是Techtreey的结尾,请将语句复制在</TechTree>上面-->

不要忘了要先启用这些科技这个是V1.0旧版本教程,所以使用的是<Status>UNOBTAINABLE</Status>,需要在Age0初始科技中开启此科技。V1.0版本是放在第二章里面的,所以非常详细。
techtreey.xml - 记事本
	<Tech name ='Age0French' type ='Normal'>
		<DBID>105</DBID>
		<Status>UNOBTAINABLE</Status>
		<Flag>Shadow</Flag>
		<Effects>
			<Effect type ='TechStatus' status ='obtainable'>DYITech</Effect>
			<Effect type ='TechStatus' status ='obtainable'>DYITech2</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Explorer</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>TownCenter</Target></Effect>
			<Effect type ='TechStatus' status ='active'>AAStandardStartingTechs</Effect>
			<Effect type ='TechStatus' status ='obtainable'>RGVoltigeur</Effect>
			<Effect type ='TechStatus' status ='obtainable'>RGGendarmes</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ChurchCodeNapoleon</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ChurchGardeImperial1</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Hussar</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Sheep</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>House</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Mill</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>GuardMusketeers</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Musketeer</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>ChurchGardeImperial3</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ChurchGardeImperial2</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Coureur</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>GuardHalberdiers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>GuardDragoons</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranPikemen</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialHalberdiers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialGendarme</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialVoltigeur</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialMusketeers</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialDragoons</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Capitol</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Falconet</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>ArtilleryDepot</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Stable</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Barracks</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranCrossbowmen</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianGeneral</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianPresidente</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianMohawk</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianEngineer</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianMusketeerFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianNaturalist</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianMarksman</Effect>
			<Effect type ='TechStatus' status ='obtainable'>PoliticianQuartermaster</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Plantation</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>TradingPost</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Outpost</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Caravel</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Dock</Target></Effect>
			<Effect type ='TechStatus' status ='active'>XPTrickle</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Market</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Arsenal</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Skirmisher</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>CWallGate</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>LivestockPen</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Church</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>WallStraight2</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>WallStraight5</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>WallConnector</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianTycoonFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianScoutFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianPhilosopherPrinceFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianGovernorFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianExiledPrinceFrench</Effect>
			<Effect type ='TechStatus' status ='obtainable'>UnlockPoliticianCavalierFrench</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Pikeman</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Crossbowman</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialHussars</Effect>
			<Effect type ='TechStatus' status ='obtainable'>GuardHussars</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranHussars</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Halberdier</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>FieldHospital</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Priest</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Cuirassier</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Culverin</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Mortar</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Dragoon</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Monitor</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Frigate</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Galleon</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>Bayonet</Effect>
			<Effect type ='TechStatus' status ='active'>Levy</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>FishingBoat</Target></Effect>
			<Effect type ='Data' action ='SpawnCannon' amount ='1.00' subtype ='ActionEnable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Factory</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialCannon</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialFieldGun</Effect>
			<Effect type ='TechStatus' status ='obtainable'>FieldGun</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranDragoonsShadow</Effect>
			<Effect type ='TechStatus' status ='obtainable'>VeteranSkirmishersShadow</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialMonitors</Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialManOWar</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>Saloon</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>XPRevolutionLouverture</Effect>
			<Effect type ='TechStatus' status ='obtainable'>XPRevolutionSantander</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>xpPetard</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>ImperialHorseArtillery</Effect>
			<Effect type ='TechStatus' status ='obtainable'>HeavyHorseArtillery</Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>xpHorseArtillery</Target></Effect>
			<Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>
				<Target type ='ProtoUnit'>xpSpy</Target></Effect>
			<Effect type ='TechStatus' status ='obtainable'>ShipHowitzers</Effect>
		</Effects>
	</Tech>
还有要添加这些科技的按钮: 定位到科技按钮
protoy.xml - 记事本
	<Unit id ='294' name ='TownCenter'>
		<DBID>16</DBID>
		<DisplayNameID>22841</DisplayNameID>
		<EditorNameID>28145</EditorNameID>
		<PopulationCapAddition>10</PopulationCapAddition>
		<ObstructionRadiusX>4.0000</ObstructionRadiusX>
		<ObstructionRadiusZ>4.0000</ObstructionRadiusZ>
		<MaxVelocity>0.0000</MaxVelocity>
		<MovementType>land</MovementType>
		<AnimFile>buildings\town_center\town_center.xml</AnimFile>
		<DeadReplacement>BuildingRubble4x4</DeadReplacement>
		<DeadReplacementLifespan>15</DeadReplacementLifespan>
		<ImpactType>Wood</ImpactType>
		<PhysicsInfo>house</PhysicsInfo>
		<PlacementFile>buildinglarge.xml</PlacementFile>
		<Icon>buildings\town_center\towncenter_icon</Icon>
		<MinimapIcon>ui\minimap\towncenter</MinimapIcon>
		<PortraitIcon>buildings\town_center\towncenter_portrait</PortraitIcon>
		<RolloverTextID>22840</RolloverTextID>
		<ShortRolloverTextID>25734</ShortRolloverTextID>
		<InitialHitpoints>6500.0000</InitialHitpoints>
		<MaxHitpoints>6500.0000</MaxHitpoints>
		<LOS>38.0000</LOS>
		<ProjectileProtoUnit>Cannonball</ProjectileProtoUnit>
		<UnitAIType>RangedCombative</UnitAIType>
		<BuildPoints>60.0000</BuildPoints>
		<BuildLimit>1</BuildLimit>
		<Bounty>240.0000</Bounty>
		<Cost resourcetype ='Wood'>600.0000</Cost>
		<BuildingWorkRate>1.0000</BuildingWorkRate>
		<MaxContained>50</MaxContained>
		<AllowedAge>0</AllowedAge>
		<Armor type ='Siege' value ='0.0000'></Armor>
		<BuilderLimit>8</BuilderLimit>
		<UnitType>LogicalTypeValidSabotage</UnitType>
		<UnitType>LogicalTypeMinimapFilterEconomic</UnitType>
		<UnitType>LogicalTypeNeededForVictory</UnitType>
		<UnitType>LogicalTypeHandUnitsAutoAttack</UnitType>
		<UnitType>LogicalTypeBuildingsNotWalls</UnitType>
		<UnitType>LogicalTypeTCBuildLimit</UnitType>
		<UnitType>LogicalTypeRangedUnitsAutoAttack</UnitType>
		<UnitType>LogicalTypeVillagersAttack</UnitType>
		<UnitType>LogicalTypeHandUnitsAttack</UnitType>
		<UnitType>LogicalTypeShipsAndBuildings</UnitType>
		<UnitType>LogicalTypeRangedUnitsAttack</UnitType>
		<UnitType>LogicalTypeBuildingsNotWallsOrGroves</UnitType>
		<UnitType>Building</UnitType>
		<UnitType>Economic</UnitType>
		<UnitType>BuildingClass</UnitType>
		<UnitType>HasBountyValue</UnitType>
		<UnitType>CountsTowardEconomicScore</UnitType>
		<UnitType>ConvertsHerds</UnitType>
		<UnitType>AbstractTownCenter</UnitType>
		<UnitType>AbstractCanSeeStealth</UnitType>
		<Train row ='0' page ='0' column ='0'>ypSettlerJapanese</Train>
		<Train row ='0' page ='0' column ='0'>ypSettlerIndian</Train>
		<Train row ='0' page ='0' column ='0'>ypSettlerAsian</Train>
		<Train row ='0' page ='0' column ='0'>Settler</Train>
		<Train row ='0' page ='0' column ='0'>Coureur</Train>
		<Train row ='0' page ='0' column ='3'>HotAirBalloon</Train>
		<Train row ='0' page ='0' column ='2'>Envoy</Train>
		<Train row ='0' page ='0' column ='0'>xpColonialMilitia</Train>
		<Train row ='0' page ='0' column ='0'>SettlerNative</Train>
		<Train row ='0' page ='0' column ='5'>PetCougar</Train>
		<Train row ='0' page ='0' column ='5'>ypSPCBrahminHealer</Train>
		<Train row ='0' page ='0' column ='5'>ypMonkChinese</Train>
		<Train row ='0' page ='0' column ='6'>ypMonkChinese2</Train>
		<Train row ='0' page ='0' column ='6'>ypMonkIndian2</Train>
		<Train row ='0' page ='0' column ='5'>ypMonkIndian</Train>
		<Train row ='0' page ='0' column ='5'>ypMonkJapanese</Train>
		<Train row ='0' page ='0' column ='6'>ypMonkJapanese2</Train>
		<Tech row ='0' page ='2' column ='1'>DYITech</Tech>
		<Tech row ='0' page ='2' column ='2'>DYITech2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWarrior5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWisewoman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisYouth2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisYouth3</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionLouverture</Tech>
		<Tech row ='0' page ='1' column ='2'>ImpImmigrantsNative</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWarrior2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecYouth5</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianAdmiralOttoman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianViceroyGerman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianViceroyPortuguese</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierDutch</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerDutch</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGeneralOttoman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianViceroyDutch</Tech>
		<Tech row ='0' page ='2' column ='0'>BigIroquoisWarParty</Tech>
		<Tech row ='0' page ='1' column ='2'>ImpLegendaryNativesNatives</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGeneralBritish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMarksmanOttoman</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWisewoman3</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianAdventurerBritish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerBritish</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisChief4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisShaman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWisewoman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisChief5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisShaman5</Tech>
		<Tech row ='0' page ='2' column ='0'>BigIroquoisRaidingParty</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxYouth5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxShaman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxShaman3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecChief4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecShaman3</Tech>
		<Tech row ='0' page ='2' column ='0'>BigAztecScoutingParty</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierFrench</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGeneralSkirmisher</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianBishopGerman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianWarMinisterAct3</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerFrench</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianSergeantGerman</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionOHiggins</Tech>
		<Tech row ='0' page ='1' column ='2'>SpiesNative</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianSergeantDutch</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWisewoman5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisYouth4</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianAdventurerRussian</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerRussian</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianPhilosopherPrince</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianEngineerPortuguese</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxYouth2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWarrior5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxChief3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWarrior4</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianTycoonAct3</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierGerman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierRussian</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianScout</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMarksmanPortuguese</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierOttoman</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerPortuguese</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisChief2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisShaman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWarrior4</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionBolivar</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionBonifacio</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionSanMartin</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionWashington</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWarrior2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisWarrior3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisChief3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisShaman3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalIroquoisYouth5</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianScoutRussian</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianViceroyBritish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianWarMinisterRussian</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianAdmiral</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianBishop</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGeneral</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMusketeerSpanish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianQuartermaster</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianEngineer</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianSergeantSpanish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianPirate</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianPresidente</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianNaturalist</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianTycoon</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianWarMinisterSpanish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianExiledPrince</Tech>
		<Tech row ='0' page ='1' column ='2'>HCBlockadeNative</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianCavalierSpanish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGrandVizier</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxYouth3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWisewoman3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWisewoman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWisewoman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecYouth2</Tech>
		<Tech row ='0' page ='2' column ='0'>BigAztecWarParty</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxChief5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxChief2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxChief4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecChief2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecShaman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWarrior5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWisewoman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWisewoman3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWisewoman4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWisewoman5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWarrior4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecChief3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecChief5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecShaman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecShaman5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecYouth3</Tech>
		<Tech row ='0' page ='2' column ='0'>BigAztecRaidingParty</Tech>
		<Tech row ='0' page ='2' column ='0'>BigSiouxDogSoldiers</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionHidalgo</Tech>
		<Tech row ='0' page ='1' column ='1'>XPRevolutionSantander</Tech>
		<Tech row ='0' page ='2' column ='0'>BigIroquoisScoutingParty</Tech>
		<Tech row ='0' page ='1' column ='2'>ypImpLegendaryNatives</Tech>
		<Tech row ='0' page ='1' column ='2'>ypImpLegendaryNatives2</Tech>
		<Tech row ='0' page ='1' column ='0'>ypFakeColonialAge</Tech>
		<Tech row ='0' page ='1' column ='0'>ypFakeFortressAge</Tech>
		<Tech row ='0' page ='1' column ='0'>ypFakeImperialAge</Tech>
		<Tech row ='0' page ='1' column ='0'>ypFakeIndustrialAge</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianAdventurerSpanish</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianGovernor</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMohawk</Tech>
		<Tech row ='0' page ='1' column ='0'>PoliticianMarksman</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxYouth4</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWarrior3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxWarrior2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxShaman5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalSiouxShaman2</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWarrior3</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecWisewoman5</Tech>
		<Tech row ='0' page ='1' column ='0'>TribalAztecYouth4</Tech>
		<Tech row ='0' page ='1' column ='0'>AddLimit</Tech>
		<Tech row ='0' page ='1' column ='0'>AddPOP</Tech>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>AllowAutoGarrison</Flag>
		<Flag>StartingColonyBuilding</Flag>
		<Flag>ColonyPlacementCenter</Flag>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>StartsAtFullEfficiency</Flag>
		<Flag>Immoveable</Flag>
		<Flag>NoBloodOnDeath</Flag>
		<Flag>ObscuresUnits</Flag>
		<Flag>NonAutoFormedUnit</Flag>
		<Flag>Doppled</Flag>
		<Flag>SelectWithObstruction</Flag>
		<Flag>PaintTextureWhenPlacing</Flag>
		<Flag>FlattenGround</Flag>
		<Flag>HasGatherPoint</Flag>
		<Flag>Tracked</Flag>
		<Contain>AbstractVillager</Contain>
		<Contain>Imam</Contain>
		<Contain>NatMedicineMan</Contain>
		<Contain>Missionary</Contain>
		<Contain>Priest</Contain>
		<Contain>Surgeon</Contain>
		<Contain>xpMedicineMan</Contain>
		<Contain>xpMedicineManAztec</Contain>
		<Contain>ypDaimyoRegicide</Contain>
		<Command page ='0' column ='3'>Levy</Command>
		<Command page ='10' column ='3'>TownBell</Command>
		<Command page ='10' column ='4'>Delete</Command>
		<Command page ='10' column ='3'>ReturnToWork</Command>
		<Command page ='0' column ='4'>Conscription</Command>
		<Command page ='10' column ='0'>SetGatherPointEconomy</Command>
		<Command page ='10' column ='1'>SetGatherPointMilitary</Command>
		<Command page ='10' column ='2'>Eject</Command>
		<Command page ='0' column ='5'>RansomExplorer</Command>
		<Command page ='1' column ='10'>SetUnitAsHomeCityGatherPoint</Command>
		<Command page ='11' column ='0'>Abilities</Command>
		<Command page ='0' column ='1'>ypAssemble</Command>
		<Command page ='0' column ='2'>ypMuster</Command>
		<Command page ='0' column ='3'>ypAmass</Command>
		<Command page ='0' column ='4'>ypMarshal</Command>
		<Command page ='0' column ='3'>ypAmassIndians</Command>
		<Command page ='0' column ='1'>ypAssembleIndians</Command>
		<Command page ='0' column ='4'>ypMarshalIndians</Command>
		<Command page ='0' column ='2'>ypMusterIndians</Command>
		<Tactics>towncenter.tactics</Tactics>
		<ProtoAction>
			<Name>AntiShipAttack</Name>
			<Damage>75.000000</Damage>
			<DamageType>Siege</DamageType>
			<MaxRange>40.000000</MaxRange>
			<ROF>3.000000</ROF>
			<DamageBonus type ='AbstractSiegeTrooper'>0.500000</DamageBonus>
			<Active>1</Active>
		</ProtoAction>
		<ProtoAction>
			<Name>RangedAttack</Name>
			<DamageBonus type ='AbstractVillager'>2.000000</DamageBonus>
			<DamageBonus type ='AbstractArtillery'>0.500000</DamageBonus>
			<Damage>9.000000</Damage>
			<DamageType>Ranged</DamageType>
			<MaxRange>32.000000</MaxRange>
			<ROF>3.000000</ROF>
		</ProtoAction>
	</Unit>













至于为什么Typecount中自己训练的单位,要改良任意一个科技或建造支持人口的建筑才能刷新科技按钮,而通过卡片运送、旗军训练剧情编辑器放置的单位可以实时刷新,具体原因我也不清楚,这几个语句是从神话时代搬过来的。注:该BUG在帝国时代3决定版已经修复。

如果亚洲王朝想要解决这个BUG,可以考虑使用以下科技,该科技会使所有玩家开局后无限研发,直接添加在techtreey.xml里面即可:
	<Tech name='LoopTech' type='Normal'>
	<DBID>5290</DBID>
	<ResearchPoints>0.0000</ResearchPoints>
	<Status>OBTAINABLE</Status>
	<Flag>Volatile</Flag>
	<Flag>YPInfiniteTech</Flag>
	<Effects>
		<Effect type ='TechStatus' status ='unobtainable'>LoopTech</Effect>
	</Effects>
</Tech>


<Flag>Volatile</Flag>作用为“当该科技满足其前提条件就会自动改良”。假如你用其他科技关闭了该科技,如果满足前提条件,会立即再改良一次。上面的LoopTech用unobtainable关闭了自身,会又一次满足<Flag>Volatile</Flag>的运行条件,因此会无限运行。
用输出聊天信息测试,以上科技1秒钟运行500次,16分钟运行48万次,不过你无需担心影响是否会影响卡顿;我已经用2015年出品的渣渣电脑测试过了,使用虚拟机与游戏本地主机联机,非常流畅;正常来说,虚拟机的运行比主机的运行要慢(虚拟就用win7系统,比xp系统还要慢n 倍),但在虚拟机里面玩起来跟正常一样,所以完全是毫无影响的。





单位数量判断式的高级应用
注:如果是亚洲王朝,你需要使用上面的无限循环科技(LoopTech),解决Typecount不会实时刷新的BUG。如果是决定版,就不需要了,因为决定版已经修复了这个BUG。
首先了解21种Typecount设定:
			当设定的单位数量<X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='lt'/>

			当设定的单位数量<=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='lte'/>

			当设定的单位数量>=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='gte'/>

			当设定的单位数量>X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='gt'/>

			当设定的单位数量=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='eq'/>
 
			当设定的单位数量=X时才会显示本科技;注:经过实际测试,neq在帝国3里面的确为等于,而不是不等于
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState buildingState' operator='neq'/>

			当设定的单位存活数量<X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState' operator='lt'/>
 
			当设定的单位存活数量<=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState' operator='lte'/>
 
			当设定的单位存活数量>=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState' operator='gte'/>

			当设定的单位存活数量>X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState' operator='gt'/>
 
			当设定的单位存活数量=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState aliveState' operator='eq'/>

			当设定的单位死亡数量<X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='lt'/>

			当设定的单位死亡数量<=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='lte'/>
  
			当设定的单位死亡数量>=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='gte'/>
  
			当设定的单位死亡数量>X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='gt'/>

			当设定的单位死亡数量=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='eq'/>

			当设定的建筑正在建造数量<X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='lt'/>
   
			当设定的建筑正在建造数量<=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='lte'/>
   
			当设定的建筑正在建造数量>=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='gte'/>
   
			当设定的建筑正在建造数量>X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='gt'/>
   
			当设定的建筑正在建造数量=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState deadState' operator='eq'/>

			当设定的单位数量(包括已死亡的数量)<X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState anyState' operator='lt'/>

			当设定的单位数量(包括已死亡的数量)<=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState anyState' operator='lte'/>
	
			当设定的单位数量(包括已死亡的数量)>=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState anyState' operator='gte'/>
	
			当设定的单位数量(包括已死亡的数量)>X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState anyState' operator='gt'/>

			当设定的单位数量(包括已死亡的数量)=X时才会显示本科技
			<Typecount unit='Unittype' count='X.00' state='noneState anyState' operator='eq'/>

无限循环运送单位科技1
注:这个方法有点小问题,计算不精准,首次判断会因为卡顿或者运行速度多改良1-2次科技。

无限运送单位的科技,类似上面的无限研究科技,但是加入了检测单位数量,执行条件为Tool1的数量等于1,(需要配合上面所说的无限循环科技LoopTech)
techtreey.xml - 记事本
	<Tech name="LoopSentUnit" type="Normal">
		<DBID>5290</DBID>
		<ResearchPoints>0.0000</ResearchPoints>
		<Status>OBTAINABLE</Status>
		<Icon>ui\units\ironclad_icon</Icon>
		<Flag>Volatile</Flag>
		<Flag>YPInfiniteTech</Flag>
		<Prereqs>
			<typecount unit="Tool1" count="1.00" state="noneState aliveState buildingState" operator="eq"/>
		</Prereqs>
		<Effects>
			<Effect type ='TechStatus' status ='unobtainable'>LoopSentUnit</Effect>
			<Effect type="Data" amount="10.00" subtype="FreeHomeCityMerc" unittype="Musketeer" relativity="Absolute">
				<Target type="Player"/></Effect>
		</Effects>
	</Tech>

有个BUG,第一次训练单位会改良2次,<Lifespan>0.019</Lifespan>是测试出来的值,那个无限研发科技1秒大概研究500次,也就是每0.002秒刷新一次,但是实际上必须在0.02秒内杀掉单位,也不能过早杀掉单位,过早杀掉单位会导致科技无法执行;太迟杀掉单位会变成无限研发科技,瞬间运送多次单位,那样就没意义了。不是说1秒研发500次吗?为什么这里是0.02秒,我也不知道,总之我0.002秒删掉单位太快,科技无法执行,测试用0.01秒删单位也不行,也许一次检测要用上0.02秒左右。
protoy.xml - 记事本
	<Unit id ='909' name ='Tool1'>
		<DBID>1333</DBID>
		<ObstructionRadiusX>0.00</ObstructionRadiusX>
		<ObstructionRadiusZ>0.00</ObstructionRadiusZ>
		<FormationCategory>Ranged</FormationCategory>
		<MaxVelocity>4.5000</MaxVelocity>
		<MaxRunVelocity>6.0000</MaxRunVelocity>
		<MovementType>air</MovementType>
		<Lifespan>0.019</Lifespan>
		<TurnRate>18.0000</TurnRate>
		<AnimFile>units\asians\chinese\chu_ko_nu\chu_ko_nu.xml</AnimFile>
		<ImpactType>Flesh</ImpactType>
		<PhysicsInfo>dude</PhysicsInfo>
		<InitialHitpoints>90.0000</InitialHitpoints>
		<MaxHitpoints>90.0000</MaxHitpoints>
		<LOS>0.0000</LOS>
		<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
		<AutoAttackRange>16.0000</AutoAttackRange>
		<UnitAIType>RangedCombative</UnitAIType>
		<TrainPoints>10.0000</TrainPoints>
		<UnitType>Unit</UnitType>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>ApplyHandicapTraining</Flag>
		<Flag>CorpseDecays</Flag>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>DontRotateObstruction</Flag>
		<Flag>ObscuredByUnits</Flag>
		<Flag>Tracked</Flag>
		<Command page ='10' column ='1'>Stop</Command>
		<Command page ='10' column ='0'>Garrison</Command>
		<Command page ='10' column ='2'>Delete</Command>
	</Unit>


too2的作用就是用tactics生成tool1
protoy.xml - 记事本
	<Unit id ='909' name ='Tool2'>
		<DBID>1333</DBID>
		<ObstructionRadiusX>0.00</ObstructionRadiusX>
		<ObstructionRadiusZ>0.00</ObstructionRadiusZ>
		<FormationCategory>Ranged</FormationCategory>
		<MaxVelocity>4.5000</MaxVelocity>
		<MaxRunVelocity>6.0000</MaxRunVelocity>
		<MovementType>air</MovementType>
		<TurnRate>18.0000</TurnRate>
		<AnimFile>units\asians\chinese\chu_ko_nu\chu_ko_nu.xml</AnimFile>
		<ImpactType>Flesh</ImpactType>
		<PhysicsInfo>dude</PhysicsInfo>
		<RolloverTextID>60151</RolloverTextID>
		<ShortRolloverTextID>60150</ShortRolloverTextID>
		<InitialHitpoints>90.0000</InitialHitpoints>
		<MaxHitpoints>90.0000</MaxHitpoints>
		<LOS>0.0000</LOS>
		<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
		<AutoAttackRange>16.0000</AutoAttackRange>
		<UnitAIType>RangedCombative</UnitAIType>
		<TrainPoints>10.0000</TrainPoints>
		<UnitType>Unit</UnitType>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>ApplyHandicapTraining</Flag>
		<Flag>CorpseDecays</Flag>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>DontRotateObstruction</Flag>
		<Flag>ObscuredByUnits</Flag>
		<Flag>Tracked</Flag>
		<Command page ='10' column ='1'>Stop</Command>
		<Command page ='10' column ='0'>Garrison</Command>
		<Command page ='10' column ='2'>Delete</Command>
		<Tactics>tool2.tactics</Tactics>
	</Unit>

tool2.tactics - 记事本
<?xml version="1.0" encoding="utf-8"?>
<tactics>
	<action>
		<name>SpawnTool</name>
		<type>Maintain</type>
		<rate type="Tool1">1.0</rate>
		<active>1</active>
		<persistent>1</persistent>
	</action>
	<tactic>
		Idle
		<action>SpawnTool</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>
</tactics>

Tool2通过tactics的Maintain训练Tool1,训练时间等于Tool1的<TrainPoints>10.0000</TrainPoints>;因此,在放置Tool2后,每隔10秒就会生产一个Tool1,然后达成<Flag>Volatile</Flag>科技LoopSentUnit的条件,Tool1数量等于1,激活一次,运送一次单位,然后关闭LoopSentUnit本身,根据<Flag>Volatile</Flag>的特性,只要满足条件,就可以再次激活;而Tool1使用<Lifespan>0.019</Lifespan>使其在0.019秒后死亡,避免了1秒内改良多次的问题。







无限循环运送单位科技2
这个科技与前面的“无限循环运送单位科技1”不同,其运算要比之前更精准,不会出现连续多次改良科技、多次运送单位的情况,这次是利用两个单位交互式运行判断科技:LoopSentUnit1检测Tool3数量然后激活LoopSentUnit2 ;然后LoopSentUnit2检测Tool4数量然后激活LoopSentUnit1;要注意,激活科技语句用的不是用 status ='obtainable',而是用 status ='unobtainable'。
techtreey.xml - 记事本
	<Tech name="LoopSentUnit1" type="Normal">
		<DBID>5290</DBID>
		<ResearchPoints>0.0000</ResearchPoints>
		<Status>UNOBTAINABLE</Status>
		<Icon>ui\units\ironclad_icon</Icon>
		<Flag>Volatile</Flag>
		<Flag>YPInfiniteTech</Flag>
		<Prereqs>
			<typecount unit="Tool3" count="1.00" state="noneState aliveState buildingState" operator="eq"/>
		</Prereqs>
		<Effects>
			<Effect type="Data" amount="10.00" subtype="FreeHomeCityMerc" unittype="Musketeer" relativity="Absolute">
				<Target type="Player"/></Effect>
			<Effect type ='TechStatus' status ='unobtainable'>LoopSentUnit2</Effect>
		</Effects>
	</Tech>
	<Tech name="LoopSentUnit2" type="Normal">
		<DBID>5290</DBID>
		<ResearchPoints>0.0000</ResearchPoints>
		<Status>UNOBTAINABLE</Status>
		<Icon>ui\units\ironclad_icon</Icon>
		<Flag>Volatile</Flag>
		<Flag>YPInfiniteTech</Flag>
		<Prereqs>
			<typecount unit="Tool4" count="1.00" state="noneState aliveState buildingState" operator="eq"/>
		</Prereqs>
		<Effects>
			<Effect type="Data" amount="10.00" subtype="FreeHomeCityMerc" unittype="Musketeer" relativity="Absolute">
				<Target type="Player"/></Effect>
			<Effect type ='TechStatus' status ='unobtainable'>LoopSentUnit1</Effect>
		</Effects>
	</Tech>


protoy则使用<Lifespan>10.0</Lifespan>控制两个单位存活时间,然后用<DeadReplacement>xxxx</DeadReplacement>让Tool3死亡后变成Tool4,Tool4死亡后变成Tool3。
protoy.xml - 记事本
	<Unit id ='909' name ='Tool3'>
		<DBID>1333</DBID>
		<ObstructionRadiusX>0.00</ObstructionRadiusX>
		<ObstructionRadiusZ>0.00</ObstructionRadiusZ>
		<FormationCategory>Ranged</FormationCategory>
		<MaxVelocity>4.5000</MaxVelocity>
		<MaxRunVelocity>6.0000</MaxRunVelocity>
		<MovementType>air</MovementType>
		<Lifespan>10.0</Lifespan>
		<TurnRate>18.0000</TurnRate>
		<AnimFile>effects\projectiles\musket_ball.xml</AnimFile>
		<ImpactType>Flesh</ImpactType>
		<PhysicsInfo>dude</PhysicsInfo>
		<Icon>units\asians\chinese\chu_ko_nu\chu_ko_nu_icon_64</Icon>
		<PortraitIcon>units\asians\chinese\chu_ko_nu\chu_ko_nu_icon_portrait</PortraitIcon>
		<RolloverTextID>60151</RolloverTextID>
		<ShortRolloverTextID>60150</ShortRolloverTextID>
		<InitialHitpoints>90.0000</InitialHitpoints>
		<MaxHitpoints>90.0000</MaxHitpoints>
		<LOS>0.0000</LOS>
		<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
		<AutoAttackRange>16.0000</AutoAttackRange>
		<UnitAIType>RangedCombative</UnitAIType>
		<DeadReplacement>Tool4</DeadReplacement>
		<TrainPoints>10.0000</TrainPoints>
		<Bounty>0.0000</Bounty>
		<BuildBounty>0.0000</BuildBounty>
		<AllowedAge>1</AllowedAge>
		<Armor type ='Ranged' value ='0.2000'></Armor>
		<UnitType>EmbellishmentClass</UnitType>
		<UnitType>TestClass</UnitType>
		<UnitType>Unit</UnitType>
		<UnitType>Unattackable</UnitType>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>ApplyHandicapTraining</Flag>
		<Flag>CorpseDecays</Flag>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>DontRotateObstruction</Flag>
		<Flag>ObscuredByUnits</Flag>
		<Flag>Tracked</Flag>
		<Flag>Wanders</Flag>
		<Flag>NotSelectable</Flag>
		<Flag>DoNotShowOnMiniMap</Flag>
		<Command page ='10' column ='1'>Stop</Command>
		<Command page ='10' column ='0'>Garrison</Command>
		<Command page ='10' column ='2'>Delete</Command>
		<Tactics>tool.tactics</Tactics>
	</Unit>
	<Unit id ='909' name ='Tool4'>
		<DBID>1333</DBID>
		<ObstructionRadiusX>0.00</ObstructionRadiusX>
		<ObstructionRadiusZ>0.00</ObstructionRadiusZ>
		<FormationCategory>Ranged</FormationCategory>
		<MaxVelocity>4.5000</MaxVelocity>
		<MaxRunVelocity>6.0000</MaxRunVelocity>
		<MovementType>air</MovementType>
		<Lifespan>10.0</Lifespan>
		<TurnRate>18.0000</TurnRate>
		<AnimFile>effects\projectiles\musket_ball.xml</AnimFile>
		<ImpactType>Flesh</ImpactType>
		<PhysicsInfo>dude</PhysicsInfo>
		<Icon>units\asians\chinese\chu_ko_nu\chu_ko_nu_icon_64</Icon>
		<PortraitIcon>units\asians\chinese\chu_ko_nu\chu_ko_nu_icon_portrait</PortraitIcon>
		<RolloverTextID>60151</RolloverTextID>
		<ShortRolloverTextID>60150</ShortRolloverTextID>
		<InitialHitpoints>90.0000</InitialHitpoints>
		<MaxHitpoints>90.0000</MaxHitpoints>
		<LOS>0.0000</LOS>
		<ProjectileProtoUnit>Arrow</ProjectileProtoUnit>
		<AutoAttackRange>16.0000</AutoAttackRange>
		<UnitAIType>RangedCombative</UnitAIType>
		<TrainPoints>10.0000</TrainPoints>
		<Bounty>0.0000</Bounty>
		<BuildBounty>0.0000</BuildBounty>
		<AllowedAge>1</AllowedAge>
		<DeadReplacement>Tool3</DeadReplacement>
		<Armor type ='Ranged' value ='0.2000'></Armor>
		<UnitType>EmbellishmentClass</UnitType>
		<UnitType>Unit</UnitType>
		<UnitType>TestClass</UnitType>
		<UnitType>Unattackable</UnitType>
		<Flag>CollidesWithProjectiles</Flag>
		<Flag>ApplyHandicapTraining</Flag>
		<Flag>CorpseDecays</Flag>
		<Flag>ShowGarrisonButton</Flag>
		<Flag>DontRotateObstruction</Flag>
		<Flag>ObscuredByUnits</Flag>
		<Flag>Tracked</Flag>
		<Flag>Wanders</Flag>
		<Flag>NotSelectable</Flag>
		<Flag>DoNotShowOnMiniMap</Flag>
		<Command page ='10' column ='1'>Stop</Command>
		<Command page ='10' column ='0'>Garrison</Command>
		<Command page ='10' column ='2'>Delete</Command>
	</Unit>


上述语句最终运行结果是出现Tool3这个单位,执行一次科技LoopSentUnit1,然后激活科技LoopSentUnit2,接着单位Tool3在10秒后死亡并生成tool4,因为tool4的出现,所以执行一次科技LoopSentUnit2,又因为激活科技LoopSentUnit1以及单位Tool4死亡后会变成Tool3的原因,达到无限循环的目的。



为什么这个运算会比之前的“无限循环运送单位科技1”精准?假设放置了一个Tool3,那么LoopSentUnit1满足存在一个Tool3的条件,该科技(LoopSentUnit1)自动改良,运送一次单位,然后将LoopSentUnit2关闭;由于LoopSentUnit1已经改良了,不会再次执行。然后Tool3在10秒后死亡后,变成Tool4,同理LoopSentUnit2满足存在一个Tool4的条件,该科技(LoopSentUnit2)自动改良,运送一次单位,然后将LoopSentUnit1关闭;由于LoopSentUnit2已经改良了,不会再次执行。最后根据<Flag>Volatile</Flag>的特性,关闭后的科技,只要再次满足条件,就会再次改良,因此这两个科技会无限循环交替运行。

yxtajwj发表于 2021-2-16 00:19:28
小羽大神的新作要顶一个
我觉得我大概好像可能貌似看懂了。。。
正好想做一个“献祭一定数量祭品获得神力”的玩意儿

顺带问一下,这循环开启后怎么停下来? 把LoopSentUnit1和2给 obtainable了可行吗?
こはね发表于 2021-2-16 00:35:08
引用: yxtajwj发表于 2021-2-16 00:19:28
小羽大神的新作要顶一个
我觉得我大概好像可能貌似看懂了。。。
正好想做一个“献祭一定数量祭品 ...
循环开启了就不能停下,但是可以在前置条件额外增加一个判断单位数量进行其他干预,或者设定其他前置科技进行干预(<TechStatus status ='Active'>Techname</TechStatus>
例如
  • 用其他单位数量是否大于0,大于0条件不成立,终止循环;
  • Tool3与Tool4这两个单位设定预期生命值结束后数量变回0,循环科技因为前置条件不成立而失效,终止循环;
  • 又或者可以设定需要已改良科技A,如果需要终止循环,将已经active前置科技A禁用掉,终止循环
  • 还可以用科技将Tool3与Tool4这两个单位的生命值同时改成0,终止循环。


如果只是执行一次
可以只设定0秒科技即可,不需要添加<Flag>Volatile</Flag>

如果是设定获得多次神力,似乎没办法。。。因为这个判断单位数量是绝对值,没办法进行加减