收起左侧

[教程] 使用转换单位科技会出现的问题

[复制链接]
こはね发表于 2020-1-29 12:29:57
在帝国3中,有这样一个科技,可以使当前所有单位C转化为单位A(包括建筑物),语句如下:
			<Effect type ='TransformUnit' toprotoid ='A' fromprotoid ='C'></Effect>

但是这个语句是有三个BUG的,不过只会出现在mod修改当中。

第一个BUG:如果在被转换的单位改良转换单位科技,在改良完成后,游戏会立刻闪退。

第二个BUG:转换后的新单位会丢失tactic,会处于默认战术,也有可能是延续是一个单位的战术,或者根本不存在,有攻击数据之类的,但是自动生产、光环全部丢失,直到玩家切换战术。

第三个BUG:转换后的新单位会继承转换前所携带资源,例如下面的羊转换木箱。该bug于2023.09.23追加

使用转换单位科技会出现的问题

使用转换单位科技会出现的问题

使用转换单位科技会出现的问题

使用转换单位科技会出现的问题

9916897发表于 2020-1-29 13:34:50
那是不是说用苏族的话使用了暮星卡,升级骑兵就会闪退吗?
こはね发表于 2020-1-29 14:06:55
9916897 发表于 2020-1-29 13:34
那是不是说用苏族的话使用了暮星卡,升级骑兵就会闪退吗?

不是

例如有单位A与单位B

如果单位A是被转换的单位,如果在单位A改良转换科技,那么游戏闪退
在单位B改良转换科技或者其他单位改良科技,不会出现问题
こはね发表于 2020-1-29 14:27:30
这个是聊天记录
























































































































































































darth·dou
QQ1597111977
大佬,我使用了单位转换的科技,就是原版的苏沃洛夫改革卡那样的科技,用来让两种我新加的单位之间进行转换,结果科技研发完成一瞬间游戏直接闪退了,请问您知道这是因为什么吗?是科技没写好还是不能这么用?
    
[email protected]
好像见过,但是忘记什么原因了
    
[email protected]
另外如果内存过大会直接闪退
darth·dou
QQ1597111977
之前在建筑上用闪退过,我估计是不能用在建筑上,但是单位上我没见过这种情况。
    
[email protected]
高面数模型?
darth·dou
QQ1597111977
应该是吧,我从中二全战里转过来的模型,精细程度跟igc的差不多。
    
[email protected]
你在startup文件夹增加这个showFPS
看下FPS会怎样
darth·dou
QQ1597111977
加了以后显示了一个数学,第一个单位存在的时候大概是34到37,转换科技完成的一瞬间游戏就闪退了,数字没有变化。
darth·dou
QQ1597111977
第一个单位也是高面数的模型。
    
[email protected]
应该不关内存事
    
[email protected]
我用17000面模型试下
    
[email protected]
200个1万7面模型转换没事
    
[email protected]
应该是其他问题
darth·dou
QQ1597111977
我怀疑是不是跟单位的flag有关。
darth·dou
QQ1597111977
因为那两个单位都是英雄,不是普通单位。
    
[email protected]
我这个也是英雄单位
    
[email protected]
我没记错的话建筑也是能转换的,但是转换有一个问题,tactic使用的默认(也许不存在);只有你手动切换才会改变
darth·dou
QQ1597111977
跟标签没关,我把标签都换成普通单位了也不行,那就是科技写的有问题。
    
[email protected]
发给我试下吧
    
[email protected]
科技以及两个单位的语句
    
[email protected]
只要xml语句就可以了,模型之类的就不用发了
darth·dou
QQ1597111977
	<Tech name ='HeroTechReturnOfKing' type ='Normal'>
<DBID>9002</DBID>
<DisplayNameID>00060</DisplayNameID>
<Cost resourcetype ='Ships'>1.0000</Cost>
<Cost resourcetype ='XP'>500.0000</Cost>
<ResearchPoints>45.0000</ResearchPoints>
<Status>UNOBTAINABLE</Status>
<Icon>ui\tech_LR\hero\arnor\Aragorn\anduril</Icon>
<RolloverTextID>00061</RolloverTextID>
<Flag>CountsTowardMilitaryScore</Flag>
<Flag>UniqueTech</Flag>
<Prereqs>
<TechStatus status ='Active'>ColonializeArnor1</TechStatus>
<TechStatus status ='Active'>Industrialize</TechStatus>
</Prereqs>
<Effects>
<Effect type ='TransformUnit' toprotoid ='KingElessar' fromprotoid ='LordAragorn'></Effect>
</Effects>
</Tech>
darth·dou
QQ1597111977
	<Unit id ='8049' name ='LordAragorn'>
<DBID>53</DBID>
<DisplayNameID>80216</DisplayNameID>
<EditorNameID>80217</EditorNameID>
<ObstructionRadiusX>0.4900</ObstructionRadiusX>
<ObstructionRadiusZ>0.4900</ObstructionRadiusZ>
<FormationCategory>Ranged</FormationCategory>
<MaxVelocity>5.5000</MaxVelocity>
<MaxRunVelocity>7.5000</MaxRunVelocity>
<MovementType>land</MovementType>
<TurnRate>18.0000</TurnRate>
<AnimFile>units\arnor\lord\lord_aragorn\lord_aragorn.xml</AnimFile>
<ImpactType>Flesh</ImpactType>
<PhysicsInfo>dude</PhysicsInfo>
<Icon>units\infantry_ranged\longbow\longbow_icon</Icon>
<MinimapIcon>ui\minimap\hero</MinimapIcon>
<PortraitIcon>units\infantry_ranged\longbow\longbow_portrait</PortraitIcon>
<RolloverTextID>80218</RolloverTextID>
<ShortRolloverTextID>80219</ShortRolloverTextID>
<InitialHitpoints>2900.0000</InitialHitpoints>
<MaxHitpoints>2900.0000</MaxHitpoints>
<LOS>28.0000</LOS>
<ProjectileProtoUnit>InvisibleProjectile</ProjectileProtoUnit>
<AutoAttackRange>20.0000</AutoAttackRange>
<UnitAIType>RangedCombative</UnitAIType>
<TrainPoints>240.0000</TrainPoints>
<Bounty>70.0000</Bounty>
<BuildLimit>1</BuildLimit>
<BuildBounty>70.0000</BuildBounty>
<Cost resourcetype ='XP'>350.0000</Cost>
<Cost resourcetype ='Gold'>350.0000</Cost>
<AllowedAge>2</AllowedAge>
<Armor type ='Ranged' value ='0.6000'></Armor>
<UnitType>LogicalTypeHealed</UnitType>
<UnitType>LogicalTypeValidSharpshoot</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>Military</UnitType>
<UnitType>UnitClass</UnitType>
<UnitType>Unit</UnitType>
<UnitType>AbstractSiegeTrooper</UnitType>
<UnitType>AbstractArcher</UnitType>
<UnitType>AbstractInfantry</UnitType>
<UnitType>ConvertsHerds</UnitType>
<UnitType>AbstractRangedInfantry</UnitType>
<UnitType>CountsTowardMilitaryScore</UnitType>
<UnitType>AbstractCavalryInfantry</UnitType>
<UnitType>Ranged</UnitType>
<UnitType>HasBountyValue</UnitType>
<Tech row ='0' page ='1' column ='0'>HeroTechRingofBarahir</Tech>
<Tech row ='0' page ='1' column ='1'>HeroTechSceptreOfAnnuminas</Tech>
<Tech row ='0' page ='1' column ='2'>HeroTechReturnOfKing</Tech>
<Flag>CollidesWithProjectiles</Flag>
<Flag>ApplyHandicapTraining</Flag>
<Flag>CorpseDecays</Flag>
<Flag>ShowGarrisonButton</Flag>
<Flag>DontRotateObstruction</Flag>
<Flag>ObscuredByUnits</Flag>
<Flag>Tracked</Flag>
<Command page ='11' column ='0'>Abilities</Command>
<Command page ='10' column ='1'>Stop</Command>
<Command page ='10' column ='0'>Garrison</Command>
<Command page ='9' column ='0'>ToggleStealth</Command>
<Tactics>lord_command_rangedinfantry.tactics</Tactics>
<ProtoAction>
<Name>BuildingAttack</Name>
<Damage>30.000000</Damage>
<damagetype>Ranged</damagetype>
<ROF>3.000000</ROF>
</ProtoAction>
<ProtoAction>
<Name>RangedAttack</Name>
<Damage>60.000000</Damage>
<DamageType>Ranged</DamageType>
<MinRange>2.000000</MinRange>
<MaxRange>24.000000</MaxRange>
<ROF>1.200000</ROF>
<DamageBonus type ='AbstractHandInfantry'>2.000000</DamageBonus>
<DamageBonus type ='AbstractHandCavalry'>0.750000</DamageBonus>
<DamageBonus type ='AbstractRajput'>0.600000</DamageBonus>
<DamageBonus type ='AbstractRangedCavalry'>1.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>MeleeAttack</Name>
<Damage>90.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>1.200000</ROF>
</ProtoAction>
<ProtoAction>
<Name>SwashbucklerAttack</Name>
<Damage>200.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>2.000000</ROF>
<DamageCap>800.000000</DamageCap>
<DamageArea>2.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
</ProtoAction>
</Unit>
<Unit id ='8050' name ='KingElessar'>
<DBID>136</DBID>
<DisplayNameID>80222</DisplayNameID>
<EditorNameID>80223</EditorNameID>
<ObstructionRadiusX>0.7900</ObstructionRadiusX>
<ObstructionRadiusZ>0.7900</ObstructionRadiusZ>
<FormationCategory>Mobile</FormationCategory>
<MaxVelocity>6.5000</MaxVelocity>
<MaxRunVelocity>8.5000</MaxRunVelocity>
<MovementType>land</MovementType>
<TurnRate>18.0000</TurnRate>
<AnimFile>units\arnor\lord\king_elessar\king_elessar_horse.xml</AnimFile>
<ImpactType>Flesh</ImpactType>
<PhysicsInfo>cav</PhysicsInfo>
<Icon>units\cavalry\knight\knight_icon</Icon>
<MinimapIcon>ui\minimap\hero</MinimapIcon>
<PortraitIcon>units\cavalry\knight\knight_icon_portrait</PortraitIcon>
<RolloverTextID>80224</RolloverTextID>
<ShortRolloverTextID>80225</ShortRolloverTextID>
<InitialHitpoints>3500.0000</InitialHitpoints>
<MaxHitpoints>3500.0000</MaxHitpoints>
<LOS>28.0000</LOS>
<UnitAIType>HandCombative</UnitAIType>
<TrainPoints>300.0000</TrainPoints>
<Bounty>90.0000</Bounty>
<BuildBounty>90.0000</BuildBounty>
<BuildLimit>1</BuildLimit>
<Cost resourcetype ='XP'>400.0000</Cost>
<Cost resourcetype ='Gold'>500.0000</Cost>
<AllowedAge>3</AllowedAge>
<Armor type ='Ranged' value ='0.3000'></Armor>
<UnitType>LogicalTypeHealed</UnitType>
<UnitType>LogicalTypeValidSharpshoot</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>AbstractCavalry</UnitType>
<UnitType>UnitClass</UnitType>
<UnitType>Military</UnitType>
<UnitType>Unit</UnitType>
<UnitType>AbstractLancer</UnitType>
<UnitType>AbstractHeavyCavalry</UnitType>
<UnitType>AbstractSiegeTrooper</UnitType>
<UnitType>HasBountyValue</UnitType>
<UnitType>AbstractCavalryInfantry</UnitType>
<UnitType>CountsTowardMilitaryScore</UnitType>
<UnitType>ConvertsHerds</UnitType>
<UnitType>AbstractHandCavalry</UnitType>
<Train row ='0' page ='11' column ='1'>ArnorKnight</Train>
<Flag>CollidesWithProjectiles</Flag>
<Flag>ApplyHandicapTraining</Flag>
<Flag>CorpseDecays</Flag>
<Flag>ShowGarrisonButton</Flag>
<Flag>DontRotateObstruction</Flag>
<Flag>ObscuredByUnits</Flag>
<Flag>ConstrainOrientation</Flag>
<Flag>OrientUnitWithGround</Flag>
<Flag>Tracked</Flag>
<Command page ='11' column ='0'>Abilities</Command>
<Command page ='1' column ='0'>SetUnitAsHomeCityGatherPoint</Command>
<Command page ='10' column ='1'>Stop</Command>
<Command page ='10' column ='0'>Garrison</Command>
<Tactics>lord_command_cavalry.tactics</Tactics>
<ProtoAction>
<Name>BuildingAttack</Name>
<Damage>60.000000</Damage>
<damagetype>Ranged</damagetype>
<ROF>3.000000</ROF>
</ProtoAction>
<ProtoAction>
<Name>DefendHandAttack</Name>
<Damage>90.000000</Damage>
<DamageType>Magic</DamageType>
<ROF>1.350000</ROF>
<DamageCap>180.000000</DamageCap>
<DamageArea>3.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<DamageBonus type ='AbstractHandSiege'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>GuardianAttack</Name>
<Damage>90.000000</Damage>
<DamageType>Magic</DamageType>
<ROF>1.350000</ROF>
<DamageCap>180.000000</DamageCap>
<DamageArea>3.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<DamageBonus type ='AbstractHandSiege'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>MeleeHandAttack</Name>
<Damage>90.000000</Damage>
<DamageType>Magic</DamageType>
<ROF>1.350000</ROF>
<DamageCap>180.000000</DamageCap>
<DamageArea>3.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<DamageBonus type ='AbstractHandSiege'>0.750000</DamageBonus>
</ProtoAction>
<ProtoAction>
<Name>TrampleHandAttack</Name>
<Damage>60.000000</Damage>
<DamageType>Hand</DamageType>
<ROF>2.000000</ROF>
<DamageCap>400.000000</DamageCap>
<DamageArea>3.000000</DamageArea>
<DamageFlags>Enemy</DamageFlags>
</ProtoAction>
<ProtoAction>
<Name>SwordAttack</Name>
<Damage>300.000000</Damage>
<DamageType>Magic</DamageType>
<ROF>1.350000</ROF>
<DamageCap>900.000000</DamageCap>
<DamageArea>4.000000</DamageArea>
<DamageFlags>GAIAEnemy</DamageFlags>
<MaxRange>3.000000</MaxRange>
<DamageBonus type ='AbstractHandSiege'>0.750000</DamageBonus>
</ProtoAction>
</Unit>
darth·dou
QQ1597111977
多谢大佬了。
    
[email protected]
不能在被转换的单位改良科技
darth·dou
QQ1597111977
darth·dou
QQ1597111977
原来是因为这个。
darth·dou
QQ1597111977
大佬,又碰见奇怪的问题了,我给单位加了通过科技开启的光环,结果游戏里研发科技后没有效果,编辑器里用触发让它自动研究倒是有效果,这是为什么?
    
[email protected]
darth·dou
QQ1597111977
现在好了,我切换了一下单位的战术,再切换回来就好了。
    
[email protected]
你是用了转换单位吧?
darth·dou
QQ1597111977
对,就是昨天那个,难道是转换来的单位会有这个问题吗?
    
[email protected]
用转换单位科技转换的单位会丢失tactic
会处于默认战术,也有可能是延续是一个单位的战术,或者根本不存在
有攻击数据之类的,但是自动生产、光环全部丢失

直到切换战术
darth·dou
QQ1597111977
哦,原来是这样,那为什么切换战术就有了呢?切换以后单位的tactics会自动校正?
    
[email protected]
不清楚,可能是内部程序的问题
    
[email protected]
你可以这样
    
[email protected]
弄一个隐形单位,生命值归0自动死亡
    
[email protected]
然后科技转换隐形单位,隐形单位死亡,再通过protoy那个死亡转换成新单位(注意延迟,跟动作以及保留时间有关)
darth·dou
QQ1597111977
这个我大概明白,但是我发现光环有延迟效果。
darth·dou
QQ1597111977
死了以后原地新生的单位的光环会有一点延迟。
darth·dou
QQ1597111977
那个是不是没有办法去掉?
    
[email protected]
光环延迟没办法,死亡延迟我之前好像是0,但是没删死亡动作,所以新单位与旧单位死亡动作同时出现
darth·dou
QQ1597111977
有没有科技效果会让某个单位死?
    
[email protected]
没有,但是可以让生命值归0
    
[email protected]
然后单位就死了

跳转到