李名样dR 发表于 2026-3-30 19:24:40

复制新单位,但兵营不出兵,只有船运能出兵

各位大佬想请教些问题,我是刚接触修改mod的新手,目前卡在圣典的2-1制作新单位那里:

1. 我复制了爪哇长枪兵这个单位,把需要改的都改了,可是在训练那里就失败了。测试下来,protomods文件已经有写入兵营训练的程式,可是兵营里一直没有出现,反而可以用船运呼叫出来,我不确定是哪部分的问题。
2. 革命之后才有的单位和原住民单位之类的有办法也从兵营之类的训练出来吗?还是需要重新制作新单位?

Weiluw0 发表于 2026-4-1 07:35:33

光在protomod里面定义不够用,你还需要在techtreemods里面定义一下才行。你是用什么文明测试的?

李名样dR 发表于 2026-4-1 19:14:06

<protomods>
<!--有問題,無法放入-->
<unit name="Barracks">
    <train row="0" page="0" column="1">deJavaSpearman2</train>
</unit>
<!--自製爪哇長槍兵,兵營無法放入,只能船運-->
<unit id="1660" name="deJavaSpearman2">
    <dbid>2231</dbid>
    <displaynameid>80715</displaynameid>
    <editornameid>80716</editornameid>
    <populationcount>1</populationcount>
    <obstructionradiusx>0.4900</obstructionradiusx>
    <obstructionradiusz>0.4900</obstructionradiusz>
    <formationcategory>Body</formationcategory>
    <maxvelocity>5.0000</maxvelocity>
    <maxrunvelocity>7.0000</maxrunvelocity>
    <movementtype>land</movementtype>
    <turnrate>18.0000</turnrate>
    <animfile>units\asians\shared\peasant\peasant.xml</animfile>
    <impacttype>Flesh</impacttype>
    <physicsinfo>dude</physicsinfo>
    <icon>resources\art\units\revolution\java_spearman_icon.png</icon>
    <portraiticon>resources\art\units\revolution\java_spearman_portrait.png</portraiticon>
    <rollovertextid>80717</rollovertextid>
    <shortrollovertextid>25696</shortrollovertextid>
    <initialhitpoints>200.0000</initialhitpoints>
    <maxhitpoints>200.0000</maxhitpoints>
    <los>15.0000</los>
    <unitaitype>HandCombative</unitaitype>
    <trainpoints>25.0000</trainpoints>
    <bounty>10.0000</bounty>
    <buildbounty>10.0000</buildbounty>
    <cost resourcetype="Food">80.0000</cost>
    <allowedage>1</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>LogicalTypeRangedUnitsAutoAttackNoVillagers</unittype>
    <unittype>LogicalTypeVillagersAttack</unittype>
    <unittype>LogicalTypeHandUnitsAttack</unittype>
    <unittype>LogicalTypeRangedUnitsAttack</unittype>
    <unittype>LogicalTypeMinimapFilterMilitary</unittype>
    <unittype>AbstractInfantry</unittype>
    <unittype>AbstractHeavyInfantry</unittype>
    <unittype>UnitClass</unittype>
    <unittype>Military</unittype>
    <unittype>Unit</unittype>
    <unittype>AbstractPikeman</unittype>
    <unittype>AbstractArchaicInfantry</unittype>
    <unittype>HasBountyValue</unittype>
    <unittype>AbstractCavalryInfantry</unittype>
    <unittype>CountsTowardMilitaryScore</unittype>
    <unittype>ConvertsHerds</unittype>
    <unittype>AbstractHandInfantry</unittype>
    <flag>CollidesWithProjectiles</flag>
    <flag>ApplyHandicapTraining</flag>
    <flag>CorpseDecays</flag>
    <flag>ShowGarrisonButton</flag>
    <flag>DontRotateObstruction</flag>
    <flag>ObscuredByUnits</flag>
    <flag>VisibleUnderFogIfGaia</flag>
    <flag>Tracked</flag>
    <command page="10" column="7">Delete</command>
    <command page="10" column="1">Stop</command>
    <command page="10" column="0">Garrison</command>
    <tactics>swordsman.tactics</tactics>
    <protoaction>
      <name>BuildingAttack</name>
      <damage>100.000000</damage>
      <damagetype>Siege</damagetype>
      <rof>3.000000</rof>
    </protoaction>
    <protoaction>
      <name>CoverBuildingAttack</name>
      <damage>50.000000</damage>
      <damagetype>Siege</damagetype>
      <rof>3.000000</rof>
    </protoaction>
    <protoaction>
      <name>CoverHandAttack</name>
      <damage>10.000000</damage>
      <damagetype>Hand</damagetype>
      <rof>1.500000</rof>
      <damagebonus type="AbstractCavalry">5.000000</damagebonus>   <!--重型騎兵倍率-->
      <damagebonus type="AbstractLightInfantry">3.50000</damagebonus>   <!--突擊步兵倍率-->
      <damagebonus type="AbstractLightCavalry">3.0000000</damagebonus>   <!--輕型騎兵倍率-->
      <damagebonus type="AbstractRangedShockInfantry">2.500000</damagebonus>   <!--遠距突擊步兵倍率-->
      <damagebonus type="AbstractArtillery">0.000000</damagebonus>   <!--砲兵倍率-->
      <damagebonus type="AbstractInfantry">0.000000</damagebonus>   <!--步兵倍率-->
      <damagebonus type="Ship">0.000000</damagebonus>   <!--船艦倍率-->
      <damagebonus type="AbstractHeavyInfantry">0.000000</damagebonus>   <!--重型步兵倍率-->
      <damagebonus type="AbstractSkirmisher">0.000000</damagebonus>   <!--輕型步兵倍率-->
      <damagebonus type="Guardian">0.000000</damagebonus>   <!--守護者倍率-->
      <damagebonus type="AbstractVillager">0.000000</damagebonus>   <!--村民倍率-->
      <damagebonus type="Mercenary">0.000000</damagebonus>   <!--傭兵倍率-->
      <damagebonus type="Hero">0.000000</damagebonus>   <!--英雄倍率-->
    </protoaction>
    <protoaction>
      <name>DefendHandAttack</name>
      <damage>18.000000</damage>
      <damagetype>Hand</damagetype>
      <rof>1.500000</rof>
      <damagebonus type="AbstractCavalry">5.000000</damagebonus>
      <damagebonus type="AbstractLightInfantry">3.50000</damagebonus>
      <damagebonus type="AbstractLightCavalry">3.000000</damagebonus>
      <damagebonus type="AbstractRangedShockInfantry">2.500000</damagebonus>
    </protoaction>
    <protoaction>
      <name>MeleeHandAttack</name>
      <damage>18.000000</damage>
      <damagetype>Hand</damagetype>
      <rof>1.500000</rof>
      <damagebonus type="AbstractCavalry">5.000000</damagebonus>
      <damagebonus type="AbstractLightInfantry">3.50000</damagebonus>
      <damagebonus type="AbstractLightCavalry">3.000000</damagebonus>
      <damagebonus type="AbstractRangedShockInfantry">2.500000</damagebonus>
    </protoaction>
</unit>
</protomods>

李名样dR 发表于 2026-4-1 19:17:59

<techtreemods>
<tech name="Age0German" type="Normal">   <!--(1)加入的國家start-->
    <Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>   <!--(2.1) 增加的單位start-->
      <Target type ='ProtoUnit'>deJavaSpearman2</Target>   <!--增加的單位name-->
    </Effect>   <!--(2.1) 增加的單位end-->
    <Effect type ='Data' amount ='1.00' subtype ='Enable' relativity ='Absolute'>   <!--(2.2) 增加的建築start-->
      <Target type ='ProtoUnit'>Bank1</Target>   <!--增加的建築name-->
    </Effect>   <!--(2.2) 增加的建築end-->
    <Effect type ='Data' amount ='2.00' subtype ='Hitpoints' relativity ='BasePercent'>   <!--(2.3) 帶?標籤單位加?數值start-->
      <Target type ='ProtoUnit'>AbstractVillager</Target>   <!--给带有(村民)标签的单位增加(两倍生命值)-->
    </Effect>   <!--(2.3) 帶?標籤單位加?數值end-->
</tech>   <!--(1)加入的國家end-->
<tech name="HCShipDopplesoldners1" type="Normal">
    <dbid>2273</dbid>
    <displaynameid>35834</displaynameid>
    <cost resourcetype="Ships">1.0000</cost>
    <researchpoints>40.0000</researchpoints>
    <status>UNOBTAINABLE</status>
    <icon>resources\art\units\infantry\dopplesoldner\hc_dopplesoldner_icon.png</icon>
    <flag>HomeCity</flag>
    <effects>
      <effect type="Data" amount="3.00" subtype="FreeHomeCityUnit" unittype="deJavaSpearman2" relativity="Absolute">
      <target type="Player">
      </target>
      </effect>
      <effect type="Data" amount="2.00" subtype="FreeHomeCityUnit" unittype="Uhlan" relativity="Absolute">
      <target type="Player">
      </target>
      </effect>
      <effect tech="deGermanLogisticianShadow" type="Data" amount="1.00" subtype="FreeHomeCityUnitIfTechObtainable" unittype="Uhlan" relativity="Absolute">
      <target type="Player">
      </target>
      </effect>
    </effects>
</tech>
</techtreemods>

有些不相關的我放在一起,我沒刪掉,因為我原本那些就只是用來做個記錄

こはね 发表于 2026-4-1 22:07:42


李名样dR 发表于 2026-4-4 05:16:21

本帖最后由 李名样dR 于 2026-4-4 05:18 编辑

@こはね 文件我先進行壓縮了

こはね 发表于 2026-4-5 01:24:55



总共耗时45分钟

前面的JavaSpearman2被后面的Bank覆盖掉
(注:deJavaSpearman2的de被我删掉了,我有怀疑的前面存在de的问题)

我无论怎样添加,或修改protoy.xml,该调用名、改训练建筑、把flag与unittype删掉,把我以前的代码照搬过来,就是没反应,我一度怀疑是不是文件根本没起作用,后面就删了你添加的Bank,看一下是不是改错文件,结果就出现了{:7_288:}

                        <Effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">YPBerryWagon1</Target>
                        </Effect>

                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">JavaSpearman2</Target>
                        </effect>
                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">Bank</Target>
                        </effect>

上述代码最后生效的是bank



                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">JavaSpearman2</Target>
                        </effect>
                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">Bank</Target>
                        </effect>
                        <Effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute">
                              <Target type="ProtoUnit">YPBerryWagon1</Target>
                        </Effect>



上述代码最后生效的是YPBerryWagon1,银行已经不可建造
解决方法是给每一行都添加 mergeMode="add"

                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute" mergeMode="add">
                              <Target type="ProtoUnit">JavaSpearman2</Target>
                        </effect>
                        <effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute" mergeMode="add">
                              <Target type="ProtoUnit">Bank</Target>
                        </effect>
                        <Effect type="Data" amount="1.00" subtype="Enable" relativity="Absolute" mergeMode="add">
                              <Target type="ProtoUnit">YPBerryWagon1</Target>
                        </Effect>


截图被我改成城镇中心建造了




“如果可以在基础数据中找到匹配的节点,则默认为modify,否则为add”:第一个subtype="Enable"被判断成mergeMode="add",往后的subtype="Enable"被判断成mergeMode="modify"

这官方给人挖大坑,又不搞示例、提醒
页: [1]
查看完整版本: 复制新单位,但兵营不出兵,只有船运能出兵