3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 109|回复: 4
打印 上一主题 下一主题

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

[复制链接]

1

主题

417

帖子

469

积分

高级玩家

Rank: 4

贡献度
1
金元
4647
积分
469
精华
0
注册时间
2010-4-10
跳转到指定楼层
主题
发表于 2026-4-23 14:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这些文件的存放路径是游戏安装文件夹\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这一行,不能添加高于坐标数量的装备,程序会报错。坐标也是可以添加的,要注意这关地图上的具体情况。






游客,如果您要查看本帖隐藏内容请回复

评分

1

查看全部评分

回复

使用道具 举报

41

主题

5116

帖子

1万

积分

资深玩家

Rank: 9Rank: 9Rank: 9

贡献度
109
金元
126635
积分
13100
精华
0
注册时间
2024-2-14

滑稽

舒服的沙发
发表于 2026-4-23 14:06 | 只看该作者
感谢分享~
回复 支持 反对

使用道具 举报

0

主题

1

帖子

3

积分

新手玩家

Rank: 1

贡献度
0
金元
25
积分
3
精华
0
注册时间
2026-5-1
硬硬的板凳
发表于 2026-5-2 11:55 | 只看该作者
大佬好,我想请教一下就是我复制了你的代码之后游戏内是可以生成这个英雄,但是一上单位就会游戏闪退,然后我以为是名字的问题,结果改完名字之后英雄直接不生成了是怎么回事啊?
回复 支持 反对

使用道具 举报

0

主题

54

帖子

153

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1530
积分
153
精华
0
注册时间
2011-4-7
冰凉的地板
发表于 2026-5-2 14:45 | 只看该作者
333333333333333333333
回复 支持 反对

使用道具 举报

1

主题

417

帖子

469

积分

高级玩家

Rank: 4

贡献度
1
金元
4647
积分
469
精华
0
注册时间
2010-4-10
5#
 楼主| 发表于 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尽量不要去动,这个牵扯到其它的内容。 加能力这四行不存在也是可以生成一个白板英雄的,方便用于测试。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-5-8 02:04 , Processed in 0.039227 second(s), 20 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表