x4基石吧 关注:13,309贴子:187,381

写一个游戏修改(自制mod)的教程吧

只看楼主收藏回复

玩X4也有170+小时,游戏内容体验的差不多了,准备要弃坑了,在吧里留下点记录吧,我玩单机游戏有个特点,一定要能修改的,虽然x4有各种各样的mod,但是很多还不能完全符合自己的心意,吧里和深度时空都没有找到自制mod教程,只能自己研究了,在这里分享一下方法吧,基本上游戏里的数值参数,都是可以改的。
首先是mod工具,steam版自带,购买游戏后就在steam的工具里,X tools,直接下载就能用了,XRCatToolGUI.exe可以对cat文件进行打包和解包,不仅对mod有效,对游戏自带的cat也可以,我建议先把游戏自带的01-09的cat先都解包,修改的时候方便找要修改的文件。mod中的cat文件也可以解包后替换cat文件,方便自己再次修改。
一个mod就是extensions目录下的一个文件夹,里面有一个content.xml说明文件,里面是名称、作者、版本号、说明之类的,可以从别的mod复制来这个文件,自己改改内容。剩下的文件就是要修改的游戏内容的文件了


IP属地:陕西1楼2020-02-14 16:53回复
    举个最简单的例子,比如修改高级人造卫星的雷达范围,如果把游戏自带cat都解包了,你能从中找到高级人造卫星对应的文件路径是assets\props\Equipment\Satelite\macros\eq_arg_satellite_02_macro.xml,打开后,内容如下
    <?xml version="1.0" encoding="utf-8"?>
    <!--Exported by: Lino (192.168.3.146) at 27.11.2018_16-29-00-->
    <macros>
    <macro name="eq_arg_satellite_02_macro" class="satellite">
    <component ref="eq_arg_satellite_01" />
    <properties>
    <identification name="{20201,20401}" description="{20201,20402}" deployable="1" icon="mapob_satellite_02" />
    <explosioneffect strength="500" />
    <radar range="75000" />
    <hull max="150" />
    </properties>
    </macro>
    </macros>
    range就是雷达范围,75km,想修改的话,你得在你的mod文件夹内建立一个相同文件名的文件assets\props\Equipment\Satelite\macros\eq_arg_satellite_02_macro.xml,但你不能把文件内容完整复制过来,这会导致与别的mod的冲突,我们只需要修改range这个数值,文件的内容是如下即可
    <?xml version="1.0" encoding="utf-8"?>
    <diff>
    <replace sel="//macros/macro/properties/radar/@range">300000</replace>
    </diff>
    别问为什么,问就是固定格式
    到这里一个简单的mod就制作好了


    IP属地:陕西2楼2020-02-14 16:56
    收起回复
      再讲个例子,修改改装参数
      对应文件是libraries\equipmentmods.xml,文件内容比较长,我只讲下修改船体质量,其他类似,截取部分内容如下
      <?xml version="1.0" encoding="utf-8"?>
      <equipmentmods>
      。。。省略。。。
      <ship>
      。。。省略。。。
      <drag ware="mod_ship_drag_01_mk2" quality="2" min="0.833" max="0.909">
      <bonus chance="1.0" max="2">
      <maxhull min="1.1" max="1.2" weight="1"/>
      <radarrange min="1.1" max="1.2" weight="1"/>
      <countermeasurecapacity min="2" max="4" weight="1"/>
      <deployablecapacity min="2" max="4" weight="1"/>
      <missilecapacity min="2" max="4" weight="1"/>
      <unitcapacity min="2" max="4" weight="1"/>
      </bonus>
      </drag>
      <mass ware="mod_ship_mass_01_mk3" quality="3" min="0.769" max="0.909">
      <bonus chance="1.0" max="1">
      <drag min="0.769" max="0.909"/>
      </bonus>
      </mass>
      </ship>
      。。。省略。。。
      </equipmentmods>
      先简单讲解一下,mass是质量,降低后提高加速度,drag是阻力,降低后提高最大速度,maxhull是血量,剩下的是雷达范围,导弹容量,单位容量等,可以看到mk2的加成效果还有很多项,mk3却只有质量和阻力,怎么能忍,同样,在mod目录下建立文件libraries\equipmentmods.xml,内容如下即可
      <?xml version="1.0" encoding="utf-8"?>
      <diff>
      <replace sel="/equipmentmods/ship/mass[@ware='mod_ship_mass_01_mk3']/bonus/drag/@max">0.769</replace>
      <replace sel="/equipmentmods/ship/mass[@ware='mod_ship_mass_01_mk3']/@max">0.769</replace>
      <replace sel="/equipmentmods/ship/mass[@ware='mod_ship_mass_01_mk3']/bonus/@max">7</replace>
      <add sel="/equipmentmods/ship/mass[@ware='mod_ship_mass_01_mk3']/bonus">
      <maxhull min="2" max="2" weight="1"/>
      <radarrange min="2" max="2" weight="1"/>
      <countermeasurecapacity min="100" max="100" weight="1"/>
      <deployablecapacity min="100" max="100" weight="1"/>
      <missilecapacity min="100" max="100" weight="1"/>
      <unitcapacity min="100" max="100" weight="1"/>
      </add>
      </diff>
      简单解释以下,前两行将质量和阻力的最大值设置与最小值相同,这样改装一次性就是最大效果,第3行是将效果数量改为7,原本为1,不改的话只是随机产生1项效果,剩下几行的效果是新增加的效果,所以要用add标签,而上面的replace标签只是替换,不能新加
      还有一点要说明的,n网有这个功能的现成mod,Equipment upgrades without RNG,就是去掉改装效果的随机化,直接都是最大效果,你可以在那个mod基础上改,并且修改后对已经装好的改装也有效果,但是遗憾的一点是,上面的missilecapacity导弹容量有bug,虽然看起来是增加了容量,但是这部分装不上导弹的,而且钱还是照扣,应该是个bug


      IP属地:陕西3楼2020-02-14 17:24
      回复
        下面说说libraries\wares.xml这个文件,这是个非常重要的文件,建筑、飞船、武器护盾引擎装备的价格、所需材料、建造时间,工厂生产所需原料、产量、生产时间,改装所需原材料都在里面,修改方法还是上面讲的,只不过项目很多,修改起来比较麻烦,还是建议先找现成mod,在基础之上再修改
        这里着重推荐两个mod,BuildStationsFaster,所有空间站建设只要1分钟,当然1分钟只是理想情况,得自己有建筑船+满配建造无人机,雇ai的建造船无人机不够会更慢
        还有一个是10x Station Production Module Variants,顾名思义,10倍产量,这个mod是复制了所有生产设施,只修改了新生产设施,而没修改现有生产设施,也就是这个修改只对自己有效,对ai无效,需要说明一点是,新生产设施有新蓝图,这个蓝图只能买,emp炸出来的都是原版蓝图。


        IP属地:陕西4楼2020-02-14 18:10
        收起回复
          顺便展示一下我用mod以后的全能复合工厂

          整体效果

          上面,仓库区+10*L码头+2*3m6s+8m停机坪,中间各种类型生产设施,单层设计,大多数设施2个就够了

          下面4*XL+4*L+m/s造船厂,适合大规模造船
          设计简单明了,而且关键不卡
          货船自动交易的最大星门数是4个,这个工厂造了2个,高速路南边一个,北边一个,基本完全覆盖了


          IP属地:陕西5楼2020-02-14 19:46
          回复
            请教一下,怎么打包文件夹成cat文件,还有就是怎么把xml文件转码成dea文件?


            IP属地:北京来自Android客户端6楼2020-02-14 19:57
            收起回复
              船只数据文件在assets\units,比如paranid的辅助船的仓库容量文件是assets\units\size_xl\macros\storage_par_xl_resupplier_01_a_macro.xml,改成这样就可以一次运完所有货物
              <?xml version="1.0" encoding="utf-8"?>
              <diff>
              <replace sel="/macros/macro[@name='storage_par_xl_resupplier_01_a_macro']/properties/cargo/@max">10000000</replace>
              </diff>
              改了以后新区建厂或者打Xenon建防御平台,一条建筑船+一条辅助船就行了


              IP属地:陕西7楼2020-02-14 20:21
              收起回复
                武器系统在assets\props\WeaponSystems,比如重型集束导弹的文件是assets\props\WeaponSystems\missile\macros\missile_dumbfire_heavy_mk2_macro.xml,可以给威力后面加个0
                <?xml version="1.0" encoding="utf-8"?>
                <diff>
                <replace sel="/macros/macro[@name='missile_dumbfire_heavy_mk2_macro']/properties/explosiondamage/@value">43200</replace>
                </diff>
                这样感觉非制导导弹才有点用,射程和速度不用修改,这两个是飞船静止发射的数值,可以用巡航模式中发射,导弹速度会叠加上飞船速度,射程大大提高,冲过去靠近发射再迅速拉起,一发入魂,有种玩俯冲轰炸机的感觉
                导弹不够用怎么办,一条船一条船改导弹容量太麻烦,上面说的改装里面的导弹容量又无效,可以改导弹发射器,比如非制导mk2的文件是assets\props\WeaponSystems\dumbfire\macros\weapon_gen_m_dumbfire_01_mk2_macro.xml,mk2的导弹发射器有容量+4的加成,改成100就好了
                <?xml version="1.0" encoding="utf-8"?>
                <diff>
                <replace sel="/macros/macro[@name='weapon_gen_m_dumbfire_01_mk2_macro']/properties/storage/@capacity">100</replace>
                </diff>
                还有维修激光修理速度太慢?这个不是改武器了,是改武器弹药,维修激光的弹药文件是assets\fx\weaponFx\macros\bullet_spacesuit_repairlaser_01_mk1_macro.xml
                改成这样修航母也很快了
                <?xml version="1.0" encoding="utf-8"?>
                <diff>
                <replace sel="/macros/macro[@name='bullet_spacesuit_repairlaser_01_mk1_macro']/properties/bullet/@range">2500</replace>
                <replace sel="/macros/macro[@name='bullet_spacesuit_repairlaser_01_mk1_macro']/properties/damage/@hull">200</replace>
                </diff>
                射程和维修速度都提高100倍


                IP属地:陕西8楼2020-02-14 20:24
                收起回复
                  最后再推荐一个我自己修改的mod,可以在星图中删除任意物体,是彻底的删掉,彻底,这个mod本来叫mapMarker,可以在地图上添加标注的,类似于导航信标,只不过不用飞船过去了,直接星图右键就能添加和删除,我修改了删除标注的功能,现在可以删除任意物体了
                  AI船太多太卡?工厂、矿船、商船太多恶性竞争拉低售价?ai在自己船厂造船不来我船厂买船?ai家快被Xenon驱逐舰拆了?看啥不爽星图上点右键把它删了就好了

                  我把我不关心的偏僻星区的空间站和船都删干净了,现在感觉非常流畅
                  不过多存档,操作不可逆,删了就是真删了,别把派系代表的空间站,或者星门啥的给删了,另外,也别不小心把自己给删了,我就干过这事,猜猜会怎样,嘿嘿


                  IP属地:陕西9楼2020-02-14 20:50
                  收起回复
                    想改装飞船时发现,只有一堆基础改装部件,特级的据说要在远征中刷,用mod又刷不了,没有特级改装部件怎么办?那就让商人卖呗,修改这个文件libraries\stock.xml
                    <?xml version="1.0" encoding="utf-8"?>
                    <diff>
                    <add sel="/stocks/stock[@id='default_trader']">
                    <ware ref="modpart_nividiumoxide" min="100" max="150" chance="100" />
                    <ware ref="modpart_tuningsoftware" min="100" max="150" chance="100" />
                    <ware ref="modpart_enginefuelinjector_t1" min="100" max="150" chance="100" />
                    <ware ref="modpart_enginefuelinjector_t2" min="100" max="150" chance="100" />
                    <ware ref="modpart_enginefuelinjector_t3" min="100" max="150" chance="100" />
                    <ware ref="modpart_extendedfuelcontainer" min="100" max="150" chance="100" />
                    <ware ref="modpart_highenergycatalyst" min="100" max="150" chance="100" />
                    <ware ref="modpart_nividiumcrystallite" min="100" max="150" chance="100" />
                    <ware ref="modpart_shieldgeneratorcoil_t1" min="100" max="150" chance="100" />
                    <ware ref="modpart_shieldgeneratorcoil_t2" min="100" max="150" chance="100" />
                    <ware ref="modpart_shieldgeneratorcoil_t3" min="100" max="150" chance="100" />
                    <ware ref="modpart_shipnanoweave_t1" min="100" max="150" chance="100" />
                    <ware ref="modpart_shipnanoweave_t2" min="100" max="150" chance="100" />
                    <ware ref="modpart_shipnanoweave_t3" min="100" max="150" chance="100" />
                    <ware ref="modpart_weaponchamber_t1" min="100" max="150" chance="100" />
                    <ware ref="modpart_weaponchamber_t2" min="100" max="150" chance="100" />
                    <ware ref="modpart_weaponchamber_t3" min="100" max="150" chance="100" />
                    </add>
                    </diff>
                    当然为了游戏平衡性,价钱不能太便宜了,再改下libraries\wares.xml
                    <?xml version="1.0" encoding="utf-8"?>
                    <diff>
                    <replace sel="/wares/ware[@id='modpart_tuningsoftware']/price">
                    <price min="15000" average="20000" max="25000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_nividiumoxide']/price">
                    <price min="15000" average="20000" max="25000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_enginefuelinjector_t1']/price">
                    <price min="150000" average="200000" max="250000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_enginefuelinjector_t2']/price">
                    <price min="350000" average="400000" max="550000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_enginefuelinjector_t3']/price">
                    <price min="1550000" average="2000000" max="2550000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_extendedfuelcontainer']/price">
                    <price min="15000" average="20000" max="25000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_highenergycatalyst']/price">
                    <price min="10000" average="20000" max="25000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_nividiumcrystallite']/price">
                    <price min="10000" average="20000" max="25000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shieldgeneratorcoil_t1']/price">
                    <price min="100000" average="200000" max="250000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shieldgeneratorcoil_t2']/price">
                    <price min="300000" average="400000" max="550000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shieldgeneratorcoil_t3']/price">
                    <price min="1500000" average="2000000" max="2450000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shipnanoweave_t1']/price">
                    <price min="100000" average="200000" max="300000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shipnanoweave_t2']/price">
                    <price min="300000" average="400000" max="550000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_shipnanoweave_t3']/price">
                    <price min="1500000" average="2000000" max="2450000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_weaponchamber_t1']/price">
                    <price min="100000" average="200000" max="330000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_weaponchamber_t2']/price">
                    <price min="300000" average="400000" max="550000" />
                    </replace>
                    <replace sel="/wares/ware[@id='modpart_weaponchamber_t3']/price">
                    <price min="2300000" average="2400000" max="3550000" />
                    </replace>
                    </diff>
                    特级改装部件200w+一个,合理多了吧


                    IP属地:陕西11楼2020-02-14 21:54
                    回复
                      对了,还有修改开局文件,libraries\gamestarts.xml,可以加个自定义开局
                      开局位置、资金、起始船、装备、自带蓝图、研究都可以自己设置
                      <?xml version="1.0" encoding="utf-8"?>
                      <diff>
                      <add sel="/gamestarts">
                      <gamestart id="x4ep1_gamestart_cas_5000_build" name="{1021,5000}" description="{1021,5001}" image="gamestart_1" intro="gamestart5" group="9">
                      <info>
                      <item name="{1021,9950}" value="{1021,5019}" /> <!-- Notes -->
                      </info>
                      <location galaxy="xu_ep2_universe_macro" zone="zone002_cluster_14_sector001_macro">
                      <position x="28685" y="-1240" z="10695" />
                      <rotation yaw="-115" pitch="0" roll="0" />
                      </location>
                      <player macro="character_player_tutorial_macro" money="1000000" name="{1021,5002}">
                      <ship macro="ship_arg_s_scout_01_a_macro">
                      <loadout>
                      <macros>
                      <engine macro="engine_par_s_combat_01_mk2_macro" path="../con_engine_01" />
                      <engine macro="engine_par_s_combat_01_mk2_macro" path="../con_engine_02" />
                      <shield macro="shield_tel_s_standard_01_mk2_macro" path="../con_shield_01" optional="1" />
                      <weapon macro="weapon_gen_s_laser_01_mk2_macro" path="../con_primaryweapon_01"/>
                      <weapon macro="weapon_gen_s_laser_01_mk2_macro" path="../con_primaryweapon_02"/>
                      </macros>
                      <ammunition>
                      <ammunition macro="eq_arg_satellite_01_macro" exact="25" optional="true"/>
                      </ammunition>
                      <software>
                      <software ware="software_dockmk2" />
                      </software>
                      <virtualmacros>
                      <thruster macro="thruster_gen_s_combat_01_mk2_macro" />
                      </virtualmacros>
                      </loadout>
                      </ship>
                      <inventory>
                      <ware ware="inv_timewarp" amount="1" />
                      <ware ware="inv_interfaceunit" amount="6" />
                      <ware ware="weapon_gen_spacesuit_repairlaser_01_mk1" amount="1" />
                      <ware ware="weapon_gen_spacesuit_demolition_01_mk1"/>
                      <ware ware="weapon_gen_spacesuit_laser_01_mk1"/>
                      <ware ware="software_scannerobjectmk3" amount="1" />
                      </inventory>
                      <blueprints>
                      <ware ware="paintmod_0006"/>
                      <ware ware="paintmod_0048"/>
                      <ware ware="paintmod_0049"/>
                      <ware ware="paintmod_0050"/>
                      <!-- Argon Modules -->
                      <ware ware="module_arg_conn_base_01"/>
                      <ware ware="module_arg_conn_base_02"/>
                      <ware ware="module_arg_conn_base_03"/>
                      <ware ware="module_arg_conn_cross_01"/>
                      <ware ware="module_arg_conn_vertical_01"/>
                      <ware ware="module_arg_conn_vertical_02"/>
                      <ware ware="module_arg_def_claim_01"/>
                      <ware ware="module_arg_def_disc_01"/>
                      <ware ware="module_arg_def_tube_01"/>
                      <ware ware="module_arg_hab_l_01"/>
                      <ware ware="module_arg_hab_m_01"/>
                      <ware ware="module_arg_hab_s_01"/>
                      <ware ware="module_arg_pier_l_01"/>
                      <ware ware="module_arg_pier_l_02"/>
                      <ware ware="module_arg_pier_l_03"/>
                      <ware ware="module_arg_prod_foodrations_01"/>
                      <ware ware="module_arg_prod_meat_01"/>
                      <ware ware="module_arg_prod_medicalsupplies_01"/>
                      <ware ware="module_arg_prod_spacefuel_01"/>
                      <ware ware="module_arg_prod_wheat_01"/>
                      <ware ware="module_arg_stor_container_l_01"/>
                      <ware ware="module_arg_stor_container_m_01"/>
                      <ware ware="module_arg_stor_container_s_01"/>
                      <ware ware="module_arg_stor_liquid_l_01"/>
                      <ware ware="module_arg_stor_liquid_m_01"/>
                      <ware ware="module_arg_stor_liquid_s_01"/>
                      <ware ware="module_arg_stor_solid_l_01"/>
                      <ware ware="module_arg_stor_solid_m_01"/>
                      <ware ware="module_arg_stor_solid_s_01"/>
                      <!-- General Modules -->
                      <ware ware="module_arg_dock_m_01"/>
                      <ware ware="module_arg_dock_m_01_hightech"/>
                      <ware ware="module_arg_dock_m_01_lowtech"/>
                      <ware ware="module_arg_dock_m_02"/>
                      <ware ware="module_arg_dock_m_02_hightech"/>
                      <ware ware="module_arg_dock_m_02_lowtech"/>
                      <ware ware="module_gen_prod_energycells_01"/>
                      <ware ware="module_gen_prod_advancedcomposites_01"/>
                      <ware ware="module_gen_prod_advancedelectronics_01"/>
                      <ware ware="module_gen_prod_antimattercells_01"/>
                      <ware ware="module_gen_prod_antimatterconverters_01"/>
                      <ware ware="module_gen_prod_claytronics_01"/>
                      <ware ware="module_gen_prod_dronecomponents_01"/>
                      <ware ware="module_gen_prod_engineparts_01"/>
                      <ware ware="module_gen_prod_fieldcoils_01"/>
                      <ware ware="module_gen_prod_graphene_01"/>
                      <ware ware="module_gen_prod_hullparts_01"/>
                      <ware ware="module_gen_prod_microchips_01"/>
                      <ware ware="module_gen_prod_missilecomponents_01"/>
                      <ware ware="module_gen_prod_plasmaconductors_01"/>
                      <ware ware="module_gen_prod_quantumtubes_01"/>
                      <ware ware="module_gen_prod_refinedmetals_01"/>
                      <ware ware="module_gen_prod_scanningarrays_01"/>
                      <ware ware="module_gen_prod_shieldcomponents_01"/>
                      <ware ware="module_gen_prod_siliconwafers_01"/>
                      <ware ware="module_gen_prod_smartchips_01"/>
                      <ware ware="module_gen_prod_spices_01"/>
                      <ware ware="module_gen_prod_superfluidcoolant_01"/>
                      <ware ware="module_gen_prod_turretcomponents_01"/>
                      <ware ware="module_gen_prod_water_01"/>
                      <ware ware="module_gen_prod_weaponcomponents_01"/>
                      </blueprints>
                      <research>
                      <ware ware="research_radioreceiver"/>
                      <ware ware="research_sensorbooster"/>
                      <ware ware="research_tradeinterface"/>
                      <ware ware="research_module_build"/>
                      <ware ware="research_module_defence"/>
                      <ware ware="research_module_dock"/>
                      <ware ware="research_module_habitation"/>
                      <ware ware="research_module_production"/>
                      <ware ware="research_module_storage"/>
                      <ware ware="research_module_venture"/>
                      <ware ware="research_mod_engine_mk1"/>
                      <ware ware="research_mod_engine_mk2"/>
                      <ware ware="research_mod_engine_mk3"/>
                      <ware ware="research_mod_shield_mk1"/>
                      <ware ware="research_mod_shield_mk2"/>
                      <ware ware="research_mod_shield_mk3"/>
                      <ware ware="research_mod_ship_mk1"/>
                      <ware ware="research_mod_ship_mk2"/>
                      <ware ware="research_mod_ship_mk3"/>
                      <ware ware="research_mod_weapon_mk1"/>
                      <ware ware="research_mod_weapon_mk2"/>
                      <ware ware="research_mod_weapon_mk3"/>
                      <ware ware="research_teleportation"/>
                      <ware ware="research_teleportation_range_01"/>
                      <ware ware="research_teleportation_range_02"/>
                      <ware ware="research_teleportation_range_03"/>
                      </research>
                      </player>
                      </gamestart>
                      </add>
                      </diff>


                      IP属地:陕西12楼2020-02-14 22:03
                      回复
                        谢谢大神分享


                        IP属地:中国香港来自Android客户端13楼2020-02-15 18:47
                        回复
                          虽然看不懂,还是👍一下


                          IP属地:辽宁来自iPhone客户端14楼2020-02-15 18:58
                          回复
                            感谢分享 研究研究


                            IP属地:河南15楼2020-02-16 13:52
                            回复
                              有什么办法在存档中得到飞船蓝图吗,我的档卡bug了点不了蓝图


                              IP属地:浙江来自iPhone客户端16楼2020-02-16 20:10
                              收起回复