checkbata 发表于 2026-4-23 14:02

关于战役配置lua文件的一点修改经验

这些文件的存放路径是游戏安装文件夹\Content\Campaigns,可用记事本打开lua文件我主要修改的内容有两个:
1、增加英雄,在lua文件中添加一段内容,可以在战役地图开始阶段添加可委派的英雄
function OnStartGame()
      local str = string.format(tostring(current_cp_format), campaign.comm_points)
      CreateKloss1()
      CreateKloss2()
               MessageBox(str)
end

function CreateKloss1()
      local hero = NewHero()
      --hero.portrait = "/Game/Gui/Common/Heroes/DE_AF_galland.DE_AF_galland"
      hero.portrait = "/Game/Gui/Common/Heroes/de_in_kloss.de_in_kloss"
      hero.name = NSLOCTEXT("scenario_BattleoftheEbro", "Elsa_Kloss", "Elsa Kloss")
      hero.extra_traits = {UnitTrait.TenaciousDefender, UnitTrait.Prudent, UnitTrait.Resilient, UnitTrait.FirstAid, UnitTrait.Evasive, UnitTrait.FieldRepairs, UnitTrait.
PreciseOptics, UnitTrait.Avenger, UnitTrait.SixthSense, UnitTrait.CombatLuck, UnitTrait.DoubleSupport, UnitTrait.AimingAssistance, UnitTrait.SmartEntrenchment, UnitTrait.Unyielding, UnitTrait.ReducedSlots, UnitTrait.IncMaxOverstrength}
      hero.modifiers = {{type = Ammo, mod = 3}, {type = Range, mod = 3},{type = Initiative, mod = 3},{type = Speed, mod = 30}, {type = Spotting, mod = 2}}
      hero.attack_modifiers = {{type = TargetType.Soft, mod = 3},{type = TargetType.Hard, mod = 3},{type = TargetType.Air, mod = 3}}
               hero.defense_modifiers = {{type = Ground, mod = 3},{type = Air, mod = 3}}
      hero.unit_classes = {UnitClass.Artillery, UnitClass.AntiAir}
      local action = world:MakeNewHeroAction(0, hero)
      world:Exec(action)
end


function CreateKloss2()
      local hero = NewHero()
      --hero.portrait = "/Game/Gui/Common/Heroes/DE_AF_galland.DE_AF_galland"
      hero.portrait = "/Game/Gui/Common/Heroes/de_in_kloss.de_in_kloss"
      hero.name = NSLOCTEXT("scenario_BattleoftheEbro", "Elsa_Kloss", "Elsa Kloss")
      hero.extra_traits = {UnitTrait.TenaciousDefender, UnitTrait.Prudent, UnitTrait.Resilient, UnitTrait.FirstAid, UnitTrait.Evasive, UnitTrait.FieldRepairs, UnitTrait.
PreciseOptics, UnitTrait.Avenger, UnitTrait.SixthSense, UnitTrait.CombatLuck, UnitTrait.DoubleSupport, UnitTrait.AimingAssistance, UnitTrait.SmartEntrenchment, UnitTrait.Unyielding, UnitTrait.ReducedSlots, UnitTrait.IncMaxOverstrength}
      hero.modifiers = {{type = Ammo, mod = 3}, {type = Range, mod = 3},{type = Initiative, mod = 3},{type = Speed, mod = 30}, {type = Spotting, mod = 2}}
      hero.attack_modifiers = {{type = TargetType.Soft, mod = 3},{type = TargetType.Hard, mod = 3},{type = TargetType.Air, mod = 3}}
               hero.defense_modifiers = {{type = Ground, mod = 3},{type = Air, mod = 3}}
      hero.unit_classes = {UnitClass.Artillery, UnitClass.AntiAir}
      local action = world:MakeNewHeroAction(0, hero)
      world:Exec(action)
end


第一段是建立两个事件,其中CreateKloss1()和CreateKloss2()是事件名称,这个和后面两段内容的第一行的名称必须完全相同。
第二段是CreateKloss1()这个事件的具体内容,其中能修改的有hero.extra_traits、hero.modifiers、hero.attack_modifiers、hero.defense_modifiers和hero.unit_classes
hero.extra_traits是英雄特性,UnitTrait.是固定内容后面可以跟一个特性名称,注:特性名称请参见 【新提醒】英雄秘籍 - 《装甲军团2》 - 3DMGAME论坛 - Powered by Discuz!。标点符号必须是半角,比如一个技能就是hero.extra_traits = {UnitTrait.TenaciousDefender},三个技能是hero.extra_traits = {UnitTrait.TenaciousDefender, UnitTrait.Prudent, UnitTrait.Resilient},每个技能间要有一个空格
hero.modifiers是对装备的加成,Ammo是弹药量,Range是射程,Initiative是主动性,Speed是移动范围,Spotting是侦查范围,"mod ="后面是增加量。其中Speed的基数是10,30是增加3格移动范围。
hero.attack_modifiers是对攻击的加成,Soft是非装甲,Hard是装甲,Air是对空。
hero.defense_modifiers是对防御的加成,Ground是近战防御或者说是步兵攻击防御,Air是空防,这里的修改容易出错,建议只修改这两个。
hero.unit_classes是英雄可以委派的装备类型,Artillery是火炮,AntiAir是防空炮,Tank是坦克,AntiTank是反坦克炮和坦克歼击车,Infantry是步兵,Recon是侦查车,Fighter是战斗机,TacticalBomber是轰炸机和爆击机,StrategicBomber是战略轰炸机
其它内容如果没有把握请不要修改。

附件内容是德国西班牙战役第一关的配置文件,里面有各种英雄,各位可以试试元帅+曼施坦因+古德里安+隆美尔+收藏家这样的混合难度而不会太受虐。
2、增加装备
这个修改只能在有装备添加的战役的配置文件中修改,比如德国战役1939年的第一关的第二回合西班牙会送一个蓝色师,在配置文件中可以找到以下内容
function Turn2Spanish(action)
      TutorialMessage(string_SPI1)
      TutorialMessage(string_SPI2, false)

      player = 0
      zone = {{9,7},{10,7},{9,8},{10,8}}
      units = { {"AzulInfantry", "OpelBlitz", 0, 500},{"AzulInfantry", "OpelBlitz", 0, 500},{"AzulInfantry", "OpelBlitz", 0, 500},{"AzulInfantry43", "OpelBlitz", 0, 500} }

      SpawnWave(player, zone, units)
               
end
units这一行就是要增加的装备,红字是装备的名称,这个可以参见units.csv文件。蓝字段是我添加的,这样事件发生时就会有4个蓝色师加入我军,其中包括一个43年的蓝色师。
可加入的装备数量受限于zone这一行,不能添加高于坐标数量的装备,程序会报错。坐标也是可以添加的,要注意这关地图上的具体情况。






**** Hidden Message *****

姚嘞个摇1 发表于 2026-4-23 14:06

感谢分享~{:3_90:}

阿道夫沐浴液 发表于 2026-5-2 11:55

大佬好,我想请教一下就是我复制了你的代码之后游戏内是可以生成这个英雄,但是一上单位就会游戏闪退,然后我以为是名字的问题,结果改完名字之后英雄直接不生成了是怎么回事啊?

sunsxy 发表于 2026-5-2 14:45

333333333333333333333

checkbata 发表于 2026-5-6 12:37

本帖最后由 checkbata 于 2026-5-6 12:48 编辑

阿道夫沐浴液 发表于 2026-5-2 11:55
大佬好,我想请教一下就是我复制了你的代码之后游戏内是可以生成这个英雄,但是一上单位就会游戏闪退,然后 ...
有些装备对应某些英雄的能力会有程序错误,如果某个英雄分配到装备就跳出,可以打开配置文件修改英雄增加的数值
比如:
function CreateKloss2()
      local hero = NewHero()
      --hero.portrait = "/Game/Gui/Common/Heroes/DE_AF_galland.DE_AF_galland"
      hero.portrait = "/Game/Gui/Common/Heroes/de_in_kloss.de_in_kloss"
      hero.name = NSLOCTEXT("scenario_BattleoftheEbro", "Elsa_Kloss", "Elsa Kloss")
      hero.extra_traits = {UnitTrait.TenaciousDefender, UnitTrait.Prudent, UnitTrait.Resilient, UnitTrait.FirstAid, UnitTrait.Evasive, UnitTrait.FieldRepairs, UnitTrait.
PreciseOptics, UnitTrait.Avenger, UnitTrait.SixthSense, UnitTrait.CombatLuck, UnitTrait.DoubleSupport, UnitTrait.AimingAssistance, UnitTrait.SmartEntrenchment, UnitTrait.Unyielding, UnitTrait.ReducedSlots, UnitTrait.IncMaxOverstrength}
      hero.modifiers = {{type = Ammo, mod = 3}, {type = Range, mod = 3},{type = Initiative, mod = 3},{type = Speed, mod = 30}, {type = Spotting, mod = 2}}
      hero.attack_modifiers = {{type = TargetType.Soft, mod = 3},{type = TargetType.Hard, mod = 3},{type = TargetType.Air, mod = 3}}
--       hero.defense_modifiers = {{type = Ground, mod = 3},{type = Air, mod = 3}}
      hero.unit_classes = {UnitClass.Artillery, UnitClass.AntiAir}
      local action = world:MakeNewHeroAction(0, hero)
      world:Exec(action)
end
在这个英雄的配置内容中,我在红字这行前增加两个减号,“--”这个符号是让这行内容变成注释,不会被执行。主要是hero.extra_traits、hero.modifiers、 hero.attack_modifiers、hero.defense_modifiers这四行,可以分别去尝试取消这行内容是否就不报错了,在确认哪里出错后再进行修改,或者取消这行内容。hero.portrait和hero.name尽量不要去动,这个牵扯到其它的内容。 加能力这四行不存在也是可以生成一个白板英雄的,方便用于测试。

埃辛诺斯战刃 发表于 2026-5-12 00:42

本帖最后由 埃辛诺斯战刃 于 2026-5-12 06:46 编辑

大佬太强了

huahua86 发表于 2026-5-16 09:17

1111111111111111111111111111111

snake_xqh 发表于 2026-5-16 15:21

感谢分享

3dm438 发表于 2026-5-16 21:43

感谢分享
页: [1]
查看完整版本: 关于战役配置lua文件的一点修改经验