注:Unittype为单位标签或单位调用名;Protoname为单位调用名;Techname为科技调用名;Techflag为科技的flag属性;StringID为Stringtabley.xml的5个数字;ResourceName为资源名称,有Food食物、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame隐藏资源总共6个其实还有一个skillpoints,但因为UI没办法正常显示,所以不推荐使用。 部分参考资料:林墓怪人整理的科技资料;在此向林墓怪人的无私奉献表示感谢。 <Tech name ='Techname' type ='Normal'> Techname为科技调用名;type应该只存在Normal一种,如果使用神话时代遗留的Power则会闪退。 <DBID>XXXX</DBID> DBID应该是没有用的。 <DisplayNameID>StringID</DisplayNameID> 科技名称(代码)。与stringtabley.xml关联。(去stringtabley.xml搜索这5个数字) <ResearchLimit>X.0000</ResearchLimit> 科技可以研究次数,若不设定则默认为1。当大于1时会移动到图标会显示注释“您可以研究这个改良技术 X 次,而您目前已研究 x 次了。” 注:对仅对普通科技有效,像升级时代或革命按钮这些科技是不可能改良第二次的。 <ResearchPoints>X.0000</ResearchPoints> 科技研发时间,数值越小研发越快;当研发时间小于1时会自动改良。0秒会自动改良,但是你要不要去试一下-1呢? <Status>UNOBTAINABLE</Status> 该科技的默认状态,有Obtainable、Unobtainable两种;Obtainable:所有国家都开启该科技。Unobtainable:所有国家都未启用该科技,需要用其他科技启用该科技。注:经过实测这里可以使用Active,但不代表开局就已改良状态,而是与Obtainable一样。。 <Icon>XXXXXX</Icon> 科技图标文件的路径。 <IconTextureCoords>A B C D</IconTextureCoords> 对图标的图片进行按照像素百分比进行裁剪。 A:x轴左端点;C:x轴右端点;C-A=图片的宽度。 B:y轴上端点;D:y轴下端点;D-B=图片的高度。 注意:全部按图片大小的百分比计算,如果设定0 0 1 1则代表使用整张图片,不进行裁剪。 <Cost resourcetype ='资源'>资源数量</Cost> 研发该科技所需资源数量,有Food、Wood、Gold、Ships、Trade、XP、Fame) 鼠标移动到科技上的文字介绍(代码),(去stringtabley.xml搜索这5个数字) <RolloverTextID>StringID</RolloverTextID> 主城等级达到X级才能显示本科技(可使用operator属性设定lt小于、小于等于lte、大于gt、大于等于gte、等于e,如果不设定,默认gte) <HomeCityLevel>X</HomeCityLevel> 主城等级小于X级才能显示本科技 <HomeCityLevel operator='lt'>X</HomeCityLevel> 主城等级小于等于X级才能显示本科技 <HomeCityLevel operator='lte'>X</HomeCityLevel> 主城等级大于X级才能显示本科技 <HomeCityLevel operator='gte'>X</HomeCityLevel> 主城等级大于等于X级才能显示本科技 <HomeCityLevel operator='gte'>X</HomeCityLevel> 主城等级等于X级才能显示本科技 <HomeCityLevel operator='e'>X</HomeCityLevel> 该科技的基本属性与特殊效果。具体看Flag表格↓。 <Flag>XXXXXXXX</Flag> 这个表格非常重要。 (总是有人问怎样无限研发科技,特意用72号字体标出此表格的重要性) 事实证明:自从使用72号字体之后,从2018年到至今我都没有见过有人询问无限研发科技。除了因决定版protoy.xml的新增的flag导致无限研发失效。
<Flag>Volatile</Flag> |
当该科技满足其前提条件就会自动改良。注:假如你用其他科技关闭了该科技,如果满足前提条件,会立即再改良一次。 |
<Flag>AlwaysShowButton</Flag> |
该科技始终显示在 UI 中,即使无法进行研究。 |
<Flag>HomeCity</Flag> |
船运(船运实际上也属于特定科技。)注:卡片必须带有此flag,添加后无法通过UI按钮研究该科技,只能通过主城运送卡片。 |
<Flag>Teamtech</Flag> |
队伍科技;研究该科技后对整个队伍都有效。 |
<Flag>UniqueTech</Flag> |
独有科技 |
<Flag>NativeDance</Flag> |
大按钮科技:添加后变成土著文明那种大按钮科技。 |
<Flag>YPCheckPopCap</Flag> |
检测人口上限、检测单位建造上限 |
<Flag>CheckLandHCGatherPoint</Flag> |
检测是否有主城集结点,若没有将不能研发该科技。 |
<Flag>CheckWaterHCGatherPoint</Flag> |
检测是否有海军集结点,若没有将不能研发该科技。 |
<Flag>YPNeverObtainableAfterUse</Flag> |
已经研究了该科技,不能再次启用该科技 |
<Flag>YPInfiniteTech</Flag> |
该科技可无限研发 |
<Flag>UpgradeTech</Flag> |
升级科技 |
<Flag>AgeUpgrade</Flag> |
时代升级科技 |
<Flag>YPConsulateTech</Flag> |
领事馆科技 |
<Flag>ypConsulateImprovementImperial</Flag> |
帝王时代领事馆科技 |
<Flag>YPNativeImprovement</Flag> |
原住民科技 |
<Flag>YPMonasteryTech</Flag> |
寺院科技 |
<Flag>YPGridShiftRowRightOne</Flag> |
科技排列时,自动空开第一格 (演武堂的设定) |
<Flag>RevoltTech</Flag> |
革命科技 |
<Flag>OrPrereqs</Flag> |
改良一个前提科技即可开启(若该科技有两种以上前提科技) |
<Flag>CountsTowardEconomicScore</Flag> |
此科技计算入经济分数。 |
<Flag>CountsTowardMilitaryScore</Flag> |
此科技计算入军事分数。 |
<Flag>Shadow</Flag> |
隐藏科技;不会在UI显示按钮,改良后也不会在屏幕左方显示通知。 |
<Flag>YPAlwaysDisableButtonInGrid</Flag> |
关闭该科技按钮,无法点击改良,只能显示。 |
<Flag>DynamicCost</Flag> |
科技成本=设定值X敌方玩家人口点数总和。 |
<Flag>YPRecalcHCTrainQueuePointsWhenShipped</Flag> |
在研究技术时强制重新计算当前排队的本土城市卡的运输时间。 |
启用科技 <Effect type ='TechStatus' status ='obtainable'>Techname</Effect> 禁用科技 <Effect type ='TechStatus' status ='unobtainable'>Techname</Effect> 直接改良科技 <Effect type ='TechStatus' status ='active'>Techname</Effect> 升级到X+1时代 <Effect type ='SetAge'>AgeX</Effect> 改良科技后屏幕左方会显示信息,StringID为stringtabley的5个数字。 <Effect type ='TextOutput'>StringID</Effect> 改良科技后屏幕左方会显示信息,StringID为stringtabley的5个数字,此信息发给除了自己以外的所有玩家。 <Effect type ="TextOutputAll">StringID</Effect> 改良科技后强制进入主城 <Effect type ="ShowHCView"/> 改良科技后强制回到游戏世界(地图) <Effect type ="ShowWorldView"/> 改良科技后播放wav语音,Soundname参考soundsets.xml、soundsetsx.xml、soundsetsy.xml(用AOE3ED去sound文件夹的bar里面寻找) <Effect type="Sound">Soundname</Effect> 获取所有玩家视野(间谍科技) <Effect all="true" type="SharedLOS"/> 封锁禁运敌人主城 <Effect type="Blockade" delay="10.00"/>
relativity = 'XXX'设定 |
---|
Assign直接变为你设定的数值,例如你设定了速度科技,原单位的速度为5,使用Assign设定数值为8,那么那个单位速度会变成8。
Absolute是在其基础上进行加减,例如你设定了速度科技,原单位的速度为5,使用Absolute设定数值为10,那么那个单位速度会变成15。 Percent是在其基础上进行百分比改变,设定成1.00会在其基础上乘以1,即为不变。例如你设定了速度科技,原单位的速度为5,使用Percent设定数值为1.2,那么那个单位速度会变成6。 BasePercent为可叠加百分比,设定成1.00会在其基础上乘以1,即为不变,值得注意的是BasePercent的百分比加成的叠加计算为原数值*(1+x%+y%),而不是原数值*x%*y%。 例如你设定了速度科技,原单位的速度为5,使用BasePercent设定数值为1.2倍,速度变为5*(1+0.2)=6,再研究另一个1.5倍的BasePercent速度科技,单位的速度为5*(1+0.2+0.5)=8.5,如果你再研究了一个0.8倍的BasePercent速度科技,单位的速度为5*(1+0.2+0.5-0.2)=7.5.。 凡带有relativity = 'XXX'字样的句式中的XXX可更改为Absolute、Assign、Percent和BasePercent。 |
但是帝国时代3data文件夹所有的techtree.xml都遗留下了</Target>与</Effect>不换行这种格式,所以圣典依然是采用下面这种格式。 |
改变单位成本(Food食物可替换为Ships船运、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame。Unittype为单位标签或单位调用名) <Effect type ='Data' amount ='0.75' subtype ='Cost' resource ='Food' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位采集速度(AbstractVillager是所有采集者,A是单位调用名或单位标签(例如矿场、种植园); <Effect type ='Data' action ='Gather' amount ='X.00' subtype ='WorkRate' unittype ='A' relativity ='BasePercent'> <Target type ='ProtoUnit'>AbstractVillager</Target></Effect> 修改银行等自动收集资源的建筑物时,要在Gather前加Auto,并在其后加Food食物、Wood木材和Coin钱币。等你接觸Tctics文件后就会知道为什么要这样设定。) 例如修改银行自动采集: <Effect type ='Data' action ='AutoGather' amount ='X.00' subtype ='WorkRate' unittype ='A' relativity ='BasePercent'> <Target type ='ProtoUnit'>Bank</Target></Effect> 改变单位的可采集者数量(比如稻田允许10个农民采集,使用以下语句后稻田只允许8个农民采集。...10-2=8啊,我还能说些什么...) <Effect type ='Data' amount ='-2.00' subtype ='GathererLimit' relativity ='Absolute'> <Target type ='ProtoUnit'>Protoname</Target></Effect> 改变单位在稻田的采集速度(Food食物只可改为Gold黄金。)ypRicePaddy为稻田的单位调用名。 <Effect type ='Data2' action ='Gather' amount ='1.00' subtype ='WorkRateSpecific' resource ='Food' unittype ='ypRicePaddy' relativity ='BasePercent'> <Target type ='ProtoUnit'>Protoname</Target></Effect> 改变科技的研发成本。因游戏BUG,改变科技成本不能用BasePercent,科技无法增加船运成本,包括支援卡。科技成本为零时无法改变。Techname为科技调用名。(资源有Food食物、Wood木材、Gold黄金、Trade茶叶、XP经验值、Fame,下面不再重复资源类型) <Effect type ='Data' amount ='资源数量' subtype ='Cost' resource ='资源' relativity ='Absolute'> <Target type ='Tech'>Techname</Target></Effect> 改变所有科技成本(如果数据里没有相应科技成本函数,则无法改变。) <Effect type ='Data' amount ='0.60' subtype ='Cost' resource ='资源' relativity ='Percent'> <Target type ='techAll'></Target></Effect> 改变特定科技成本(如Teamtech队伍科技。具体参照Flag表格) <Effect type ='Data' amount ='0.60' subtype ='Cost' resource ='资源' relativity ='Percent'> <Target type ='techWithFlag'>TechFlag</Target></Effect> 改变所有科技研究速度(包括船运) <Effect type ='Data' amount ='0.01' subtype ='ResearchPoints' relativity ='Percent'> <Target type ='techAll'></Target></Effect> 给予玩家X份/s的资源流(可以负数,会将已获得的资源流减到0为止,但是资源流小于0不会扣玩家资源) <Effect type ='Data' amount ='X.00' subtype ='ResourceTrickleRate' resource ='资源' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 直接获得X资源 <Effect type ='Data' amount ='X.00' subtype ='Resource' resource ='资源' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 将A资源按1:X的比例换为C资源 <Effect type ='ResourceExchange' multiplier ='X' toresource ='C' fromresource ='A'></Effect> 改变单位提供的资源上限,一般用于提升资源箱所携带资源的上限。 <Effect type ='Data' amount ='X.00' subtype ='InventoryAmount' resource ='ResourceName' relativity ='BasePercent'> <Target type ='ProtoUnit'>Protoname</Target></Effect> 改变单位每次搬运可携带资源上限,需要在protoy.xml定义<dropsitegathering>1</dropsitegathering>才会有效果,具体请看12-7 类似帝国2的采集。 <Effect type='Data' amount='X.00' subtype='CarryCapacity' resource='ResourceName' relativity='BasePercent'> <Target type='ProtoUnit'>Unittype</Target> </Effect> 改变单位A所能支持的人口数 <Effect type ='Data' amount ='5.00' subtype ='PopulationCapAddition' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变领事馆旗帜(Civname为国家调用名,具体参考civs.xml文件) <Effect civ ='Civname' type ='Data' amount ='0.00' subtype ='SetCivRelation' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 替换国家,需要与<Effect type="SetAge">Age0</Effect>联合使用,否则会丢失当前时代,无法训练任何单位。 Civname为国家调用名,具体参考civs.xml文件。注:该代码存在BUG 由于内容太长,所以隐藏了科技效果,如需查看请点击右边的按钮: <Effect civ='Civname' type='Data' amount='0.00' subtype='SetCivilization' relativity='Absolute'> <Target type='Player'/> </Effect> <Effect type="SetAge">Age0</Effect> 开启科技B后可运送单位A <Effect tech ='B' type ='Data' amount ='1.00' subtype ='FreeHomeCityUnitIfTechObtainable' unittype ='A' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 开启贸易路线视野 <Effect type="Data" amount="1.00" subtype="EnableTradeRouteLOS" relativity="Absolute"> <Target type="Player"/></Effect> 关闭贸易路线视野 <Effect type="Data" amount="0.00" subtype="EnableTradeRouteLOS" relativity="Absolute"> <Target type="Player"/></Effect> 开启单位视野(例如AbstractNugget获取所有宝藏视野,amount属性应该没有被调用,无论是0还是1都会获得视野。) <Effect type ='Data' amount ='0.00' subtype ='RevealLOS' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> <Effect type ='Data' amount ='1.00' subtype ='RevealLOS' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变人口上限(因游戏限制,最高为250;如需突破250上限,请使用UHC) <Effect type ='Data' amount ='X.00' subtype ='PopulationCapExtra' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 改变人口上限,并且支援对应的人口数,不用造住房(因游戏限制,最高为250;如需突破250上限,请使用UHC) <Effect type ='Data' amount ='X.00' subtype ='PopulationCapBonus' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 减少单位所占人口数(最低为1,若0人口单位受该科技影响,人口会再次变成1。) <Effect type ='Data' amount ='-1' subtype ='PopulationCount' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位建造上限(如果你将没有建造限制的单位增加2上限,那么该单位的建造上限为1,因为无限制=-1;-1+2=?) <Effect type ='Data' amount ='X' subtype ='Buildlimit' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位训练时间 <Effect type ='Data' amount ='0.75' subtype ='TrainPoints' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位的训练时代 <Effect type ='Data' amount ='-2.00' subtype ='AllowedAge' relativity ='Absolute'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位训练工作倍率(意思是改变A训练单位的速度,而不影响你所训练的单位在其它单位训练的时间) <Effect type ='Data' amount ='2.00' subtype ='BuildingWorkRate' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变A建造\训练B的速度 <Effect type ='Data' action ='Build' amount ='3.00' subtype ='WorkRate' unittype ='B' relativity ='BasePercent'> <Target type ='ProtoUnit'>A</Target></Effect> 训练1组单位时的人数上限(PlayerSpecificTrainLimitPerAction)由5更变为10(但排程人数上限仍为25不变),数量只能设定>5,对旗军和村民、捆绑训练单位无效。 <Effect type ='Data' amount ='10.00' subtype ='PlayerSpecificTrainLimitPerAction' relativity ='Absolute'> <Target type ='Player'></Target></Effect> 单位的近程攻击伤害力(所有模式)均+15% <Effect type ='Data' amount ='1.15' subtype ='DamageForAllHandLogicActions' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unit</Target></Effect> ************************************************************************************************************* 改变单位所有攻击力 <Effect type ='Data' amount ='1.25' subtype ='Damage' allactions ='1' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect> 改变单位A对单位B的攻击加成 <Effect type ='Data' amount ='0.50' subtype ='DamageBonus' unittype ='B' allactions ='1' relativity ='Absolute'> <Target type ='ProtoUnit'>A</Target></Effect> 因为上面两个语句都采用了allactions ='1';所以能改变单位所有攻击力与所有攻击力的加成。 allactions ='1'的作用是对该单位的tactics所有action生效。 如果只想对某个模式的攻击增加伤害,将allactions ='1'删除,然后加上action ='xxxxxxx'看样子不加上黑幕你是不会留意这里的。 例如只改变所有远程攻击的伤害: <Effect type ='Data' amount ='1.25' subtype ='Damage' action ='RangedAttack' relativity ='BasePercent'> <Target type ='ProtoUnit'>Unittype</Target></Effect>
action ='xxxxxxx' 应该不用我告诉你怎样使用吧? | |||||
---|---|---|---|---|---|
HandAttack | 所有近战攻击 | RangedAttack | 所有远距攻击 | TrampleHandAttack | 践踏攻击 |
MeleeHandAttack | 近战攻击 | CoverHandAttack | 掩护模式近战攻击 | DefendHandAttack | 防御模式近战攻击 |
MeleeHandAttack | 齐射单位远程攻击 | StaggerRangedAttack | 分散模式远程攻击 | DefendRangedAttack | 防御模式远程攻击 |
CannonAttack | 炮轰攻击 | GuardianAttack | 守护者攻击 | BuildingAttack | 攻城攻击 |
LongRangeAttack | 远距离射击 | MortarAttack | 迫击炮战船攻击 | BroadsideAttack | 舷侧攻击 |
其他的自己查Tactics,而且因为不同单位tactics定义的actionname可能不一样,所以是这些并不是通用的。 |