列虚子 发表于 2026-4-6 09:21:28

【修改教程】如何制造出正常的马耳他固定炮

众所周知战役和羽神的月之湖地图里有一个要塞炮,拿去轰人非常的快乐。最近我在把决定版内容移植到亚洲王朝,因为我真的很讨厌决定版的画风,所以在制造马耳他的固定炮。(实际上断断续续弄了好几年,阶段性回坑)
但是问题来了,这个炮的炮身和基座实际上是两个单位,如果你非要它合理的组合在一起,就得用农民锤两次,搞得强迫症都快出来了。

但如果你用地基座<SocketUnitType>xxxxxx</SocketUnitType>去连接,下方的基座就会沉入地底消失,直到炮身被摧毁才会出现。而这个炮身实际上是悬浮在半空的,看起来也非常的奇葩。(图一:如图所示)
目前我的解决办法是————不用<SocketUnitType>xxxxxx</SocketUnitType>。
————————
①首先将SPCFixedGunBase复制一遍新建为要塞炮基座单位yaosaipaotai,再把SPCFixedGun新建为要塞炮(炮身)yaosaipao。
②然后给炮台定义tactics,开启它的建造能力。
        <action>
                <name stringid="69147">Build</name>
                <type>Build</type>
                <anim>Build</anim>
                <active>1</active>
                <maxrange>0.2</maxrange>
                <rate type="Building">1.0</rate>
        </action>

记住在<tactic></tactic>中间插入<action>Build</action>,插哪个无所谓。
③再让他可以制造炮身,也就是在protoy.xml加入了一个<Train row ='0' page ='0' column ='1'>yaosaipaotai</Train>(图二:开启建造)

④下来修改炮台和基座的原始<UnitType>以及<Flag>,否则你造出来无法点击,或者会被敌人转化,具体的建议自己去对照圣典1-1章。
⑤修改炮台的属性为建筑物,原本默认是单位,农民没法随心所欲的放置。
        <BuildingWorkRate>1.0000</BuildingWorkRate>
                <UnitType>BuildingClass</UnitType>
                <UnitType>Building</UnitType>
                <UnitType>BuildingClass</UnitType>
                <UnitType>EconomicBuilding</UnitType>

⑥然后你就会神奇的发现,当你用农民造了基座以后,基座可以直接建造炮身,并且因为基座不会动,炮身你放太远它就不会制造,还必须放在炮台模型的基座处,就非常完美。(图三:远了不会建造)(图四:放在基座才会建造,因为基座就是单位的实际碰撞。)
⑦一定要记得添加                <Command page ='10' column ='0'>Delete</Command>否则你放错地方就没法删除了。而且Flag也要删掉相应禁止Delete的语句。

但实际上我是想用Spawn命令让农民盖好炮台时,令炮台自动生出来炮身,但搞了一阵没实现,之前没碰过这个实操,所以很遗憾。ORZ


不过这些对建模大佬而言没什么意义,单纯是讨论用游戏内资源实现一些有趣的东西。

至于单位属性怎么定义就看各人喜好了,也不要问我具体该怎么制造之类的,用思考代替发问,不要做拿来主义者。

以上。

另外~早安!米娜!

dablive 发表于 2026-4-6 17:42:18

{:8_297:}{:8_292:}

列虚子 发表于 2026-4-6 18:28:02

dablive 发表于 2026-4-6 17:42


捉住一只猫猫大佬૮ ៸៸៸º ᗜ º៸៸៸ ა

dablive 发表于 2026-4-8 15:41:12

列虚子 发表于 2026-4-6 18:28
捉住一只猫猫大佬૮ ៸៸៸º ᗜ º៸៸៸ ა
{:4_88:}

YL8861 发表于 2026-4-8 19:07:17

こはね 发表于 2026-4-9 22:45:51

我以前尝试过修改anim xml,设定allowrotation="0"但是失败了{:7_238:},旋转炮台在无先例的情况下,很难研发出来


<?xml version="1.0" encoding="utf-8"?>

<animfile>
      <definebone>bone_launchpoint</definebone>
      <definebone>bone_muzzle</definebone>
      <attachment>
                base
                <include>buildings\spc\fixed_gun\fixed_gun_base.xml</include>
      </attachment>
      <component>
                fixed gun
                <assetreference type="GrannyModel">
                        <file>buildings\spc\fixed_gun\fixed_gun</file>
                </assetreference>
                <attach a="base" allowrotation="0" frombone="bone_muzzle" tobone="attachpoints" syncanims="60"/>
      </component>
      <anim>
                Idle
                <assetreference type="GrannyAnim">
                        <file>buildings\spc\fixed_gun\fixed_gun_idle</file>
                </assetreference>
                <component>fixed gun</component>
      </anim>
      <anim>
                RangedAttack
                <assetreference type="GrannyAnim">
                        <file>buildings\spc\fixed_gun\fixed_gun_rangedAttack</file>
                        <tag type="CameraShake" force="0.09" duration="0.2">0.35</tag>
                        <tag type="Attack">0.35</tag>
                        <tag type="SpecificSoundSet" checkvisible="1" set="MortarShot">0.35</tag>
                        <tag type="Particles" particlename="fixedgunmuzzlefx">0.35</tag>
                </assetreference>
                <component>fixed gun</component>
      </anim>
</animfile>

Graziani 发表于 2026-5-17 18:37:57

这个设想我也想过,但我实现的方式有所不同{:4_88:}
我是强制设置了炮台基座变成了类似于贸易站地点的那种建筑基础,然后可以在这个基础上搭建筑物,同时因为原版的基座其实考虑到了在一定高度的岸边建造设计了一个很高的炮座,所以我调了一下码头的建造逻辑,让基座变成了只能在岸边建造的建筑物{:4_88:}然后让它作为建筑物生产单位,把炮的碰撞体积改到极小使其不错位{:4_88:}
不过看下来还是大佬你这个方式更好{:4_88:}

Graziani 发表于 2026-5-17 20:12:44

本帖最后由 Graziani 于 2026-5-17 20:15 编辑

尝试了一下,通过Spawn指令直接在建造基地的时候产固定炮的方式也可行,具体来说这么改
1.tactic里写入强制生产
      <action>
                <name>Spawn</name>
                <type>Spawn</type>
                <rate type="SPCFixedGun">1.0 </rate>
                <singleuse>1</singleuse>
                <animationrate>1</animationrate>
                <active>0</active>
                <persistent>1</persistent>
      </action>
      <tactic>
                Normal
                <action>Spawn</action>
      </tactic>
2.最好是把炮身的碰撞体积设置为0,炮台基地设置为0.0001
如果炮台体积过大(比如保持4×4,自动生产不出来,因为会把生产位置挤没)
3.在起始科技里设置开启自动生产的命令,或者在tactic的active里改为1默认启用

效果目测还不错,在2的设置下炮身几乎不会有偏移的情况,考虑到平衡性给基地加点价格吧{:4_88:}

Graziani 发表于 2026-5-25 08:53:34

佬,按你这个思路尝试了一下,有个疑问就是,你怎么做到的把建筑物建在建筑物上{:4_88:}在有碰撞体积的情况下这点做不到,你是吧他们都改成0了还是怎么做到的{:4_88:}烦请讲解

大地 发表于 2026-6-21 18:41:42

你好,这个移植MOD,做出来了吗,可以分享吗。或者发布试玩版本放出来
页: [1]
查看完整版本: 【修改教程】如何制造出正常的马耳他固定炮