翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 728|回复: 2

实时判断单位数量科技

[复制链接]

29

主题

6

精华

8344

积分

都主教

耕战
927
鹰币
36225
天龙币
0
回帖
232
附庸关系0
 楼主| 发表于 2021-2-14 20:58:23 | 显示全部楼层 |阅读模式
本帖最后由 青天小羽 于 2021-2-14 21:32 编辑

这是我一年前的想法,通过判断单位数量去启用科技、改良科技,最近终于实现了,对修改有兴趣的可以试下这个无限循环科技,粘贴进techtreey.xml即可

        <Tech name="LoopTech" type="Normal">
                <DBID>5290</DBID>
                <ResearchPoints>0.0000</ResearchPoints>
                <Status>OBTAINABLE</Status>
                <Icon>ui\units\ironclad_icon</Icon>
                <Flag>Volatile</Flag>
                <Flag>YPInfiniteTech</Flag>
                <Effects>
                        <Effect type ='TechStatus' status ='unobtainable'>LoopTech</Effect>
                </Effects>
        </Tech>


科技前置条件<Prereqs></Prereqs>中判断单位的数量有个BUG,自己训练的单位,达到条件后还需要建造一个提供人口的建筑物或改良任意一个科技才能显示该科技(通过卡片、科技运送的单位与旗军训练的单位无此BUG),而上面那个科技的目的是就是为了每时每刻改良科技,实时刷新显示按钮。
总共有以下6个判断条件
                        <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="
lte"/>当单位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时开启本科技
                        <typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="
eq"/>当单位A数量=X时开启本科技
                        <typecount unit="A" count="X.00" state="noneState aliveState buildingState" operator="
neq"/>当单位A数量=X时开启本科技,备注:经过实际测试,neq在帝国3里面的确为等于,而不是不等于。

这六个前置条件有什么作用?只是为了判断单位数量?

其实这些前置条件不只是判断单位数量去开启科技那么简单,只要在单位稍微动一下手脚,就可以将科技改变成延时、限时、轮回科技,例如延迟5分钟改良科技,例如改良某一科技一段时间后自动改良另一科技将所获得的加成全部减回去,例如每隔5分钟从主城运送10个单位或每隔15分钟获得一次科技加成等等




记得先把上面那个LoopTech先添加进techtreey才会实时生效
例子1:无限循环改良科技


当tool3等于1时,随机最高运送10个火枪手,当tool4等于1时,随机最高运送10个火枪手
        <Tech name="LoopSentUnit1" 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="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>OBTAINABLE</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>


另外我再来解释下<Flag>Volatile</Flag>的作用,<Flag>Volatile</Flag>添加进科技后,只要科技是启用状态就会立即改良,你也无法使用<Effect type ='TechStatus' status ='unobtainable'>xxxxx</Effect>关闭科技,还会反过来重新启用一次科技,这样变成无限循环了





tool3与tool4都设定了<Lifespan>10.0</Lifespan>,10秒后死亡;tool3利用<DeadReplacement>Tool4</DeadReplacement>语句死亡后变成tool4,而tool4同理,死亡后又变成tool3,就变成了无限循环
        <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>


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x
回复

使用道具 举报

2

主题

0

精华

42

积分

骑士

耕战
1
鹰币
10
天龙币
0
回帖
61
附庸关系0
发表于 2021-5-16 01:22:39 | 显示全部楼层
这个有必要进圣典,太好了
回复

使用道具 举报

29

主题

6

精华

8344

积分

都主教

耕战
927
鹰币
36225
天龙币
0
回帖
232
附庸关系0
 楼主| 发表于 2021-5-17 22:51:15 | 显示全部楼层
列虚子 发表于 2021-5-16 01:22
这个有必要进圣典,太好了

有空我会写入网页版的
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-11-21 16:39 , Processed in 0.254784 second(s), 50 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表