玩侵略行为这款游戏时,想改一些设置,比如禁用轰炸机、或者改单位的生命值、攻击力等,网上找了一下教程,知道是用moddingSuite这个工具,但是里面的参数太多,而且每个单位都是用一个Instance表示的(一个数字值),并且每个版本这个值都不一样,根本不知道这个Instance值和单位的对应关系。

无意中找到一个工具AoA_Complete_Armory,国外大神写的软件,可以看单位的信息。但是还是不知道Instance怎么和单位关联起来,幸运的是这款软件是开源的,用C#写的。由于我只会C/C++语言没学过C#,但是看了源码之后,也大概了解了代码哪部分是做什么的,于是就简单修改了一下,在单位描述里面加入了这个单位的Instance,因此我们就可以知道Instance和单位的对应关系了

修改单位参数时,我们主要是修改游戏的.dat文件,需要用到工具moddingSuite,在教程最后会提供所有工具的下载链接。

1、我们打开moddingSuite

修改 modules 不生效_输入框

点击file->open打开文件,找到游戏目录Act of Aggression\Data\ACTOFRUSE\PC这里可能有多个版本,我们选择最新的版本,即770000549

修改 modules 不生效_ci_02

打开这个文件夹里面的NDF_Win.dat文件,之后找到everything.ndfbin这个文件,双击打开它

修改 modules 不生效_输入框_03

 单位都是位于TUniteDescriptor下面,所以在搜索框输入TUniteDescriptor,点击选中它

修改 modules 不生效_加载_04

中间这些都是游戏对象对应的ID,可以是建筑、步兵、坦克等单位

修改 modules 不生效_游戏_05

那么这些值是怎么和我们的单位对应起来的,这里需要借助另一个工具AoA_Complete_Armory1.1

2、打开AoA_Complete_Armory1.1

 首次打开需要设置游戏路径,点击右上角的settings

修改 modules 不生效_ci_06

 

修改 modules 不生效_加载_07

 选择游戏主目录Act of Aggression,然后点击上面的

修改 modules 不生效_输入框_08

返回到主页之后,会自动找到最新版本的.dat文件,然后加载内容,大概30秒可以加载完成

加载完成后,可以通过中间3个图片进入对应的阵营,或者点击左上角的文字进入对应阵营

修改 modules 不生效_修改 modules 不生效_09

3大阵营对应如下

us是美军(左边)、cartel卡特尔(中间)、chimera奇美拉(右边)

比如进入美军阵营,这里可以显示建筑和单位和图片,点击图片可以查看详情

修改 modules 不生效_输入框_10

 

修改 modules 不生效_ci_11

修改 modules 不生效_ci_12

大家可以看到,在单位描述里面,有个Instance的值,这个就是我们前面说到的对象ID,比如要改这个士兵的参数,就找到Instance为19011的内容

 

修改 modules 不生效_ci_13

修改 modules 不生效_游戏_14

一个单位的参数主要是位于Modules里面

修改 modules 不生效_ci_15

里面有很多的Map,每个Map都对应不同的参数

修改 modules 不生效_加载_16

比如想改这个士兵的生命值时,双击Damage行左侧的Map

修改 modules 不生效_加载_17

在弹出的窗口,双击Default

修改 modules 不生效_游戏_18

这个就是士兵的生命值6

修改 modules 不生效_加载_19

下面对部分常用参数做举例说明

单位生命值

Modules.Damage.Default.MaxDamages

单位防御

Modules.Damage.Default.CommonDamageDescriptor.BlindageProperties.ArmorDescriptorFront.BaseBlindage

可以设置4个方向的防御值,主要看后面的ArmorDescriptorXXXX.BaseBlindage

视角范围

Modules.ScannerConfiguration.Default.PorteeVision

汽车载人数量

Modules.Transporter.Default.NbSeatsAvailable

单位移动速度

Modules.MouvementHandler.Default.VitesseCombat  

                      

阵营对应的值

Modules.TypeUnit.Default.MotherCountry 

            US = 0                     美军
            Cartel = 1                卡特尔
            Chimera = 2             奇美拉
    

 单位类型对应的值

Modules.TypeUnit.Default.Category或者Modules.TypeUnit.Category

        Ground_Unit_A = 3                步兵、坦克类

        Ground_Unit_B = 5

        Ground_Unit_C = 6                运输车(无攻击力类)

        Aircraft = 2                              飞行类

        Building = 8                             建筑类   

        Research = 50                        研究科技类

成本相关

Modules.Production.Default.ProductionRessourcesNeeded.5    现金成本
Modules.Production.Default.ProductionRessourcesNeeded.3    铝成本
Modules.Production.Default.ProductionRessourcesNeeded.6    电量成本
Modules.Production.Default.ProductionRessourcesNeeded.14   稀土成本

 单位隐身

Modules.Visibility.Default.UnitStealthBonus

参数需要大于等于50,单位才能隐身

3、单位可以建造哪些东西

Modules.Factory.Default.ProducableUnits                             可以建造的单位列表
Modules.WeaponManager.Default.TurretDescriptorList        可以建造的武器列表
Modules.TechnoRegistrar.Default.ResearchableTechnos     可以建造的技能列表

Factory:指定这个单位能够造哪些车辆或者步兵。

以美军兵营为例,找到兵营对应的Instance,双击Factory行

修改 modules 不生效_ci_20

 

修改 modules 不生效_游戏_21

可以看到支持下面12个单位,每个单位都有对应的Instance,比如下面19011~19022,就是单位的Instance

修改 modules 不生效_加载_22

 双击第一个ObjectReference,可以知道这是一个士兵

修改 modules 不生效_游戏_23

修改 modules 不生效_游戏_24

其实AoA_Complete_Armory1.1工具已经把建筑和单位的关系体现出来的

比如兵营可以造这些士兵

修改 modules 不生效_修改 modules 不生效_25

直升机平台可以造这些飞机

修改 modules 不生效_加载_26

 单位是可以升级的,所以一个单位可以有多个Instance

修改 modules 不生效_ci_27

比如这个士兵升级前Instance是19011,生命值是6

 

修改 modules 不生效_ci_28

升级后Instance是19012,生命值是8

修改 modules 不生效_加载_29

如果想把这个士兵从这个建筑里面移除(即游戏禁用该士兵),那么只需要按下面方式即可删除 

 

修改 modules 不生效_输入框_30

修改 modules 不生效_修改 modules 不生效_31

 这里删除了19011和19012,一个单位可能支持多个等级,所以把该单位相关的都删除。

修改 modules 不生效_ci_32

修改结束后,点击保存

修改 modules 不生效_输入框_33

 运行游戏,建造美军兵营,可以看到,第二行第一列的单位没有了

 

修改 modules 不生效_游戏_34

同理,如果想往建筑里面添加单位,比如我们想把悍马放到兵营里面建造

找到悍马的Instance,这里是19085

修改 modules 不生效_输入框_35

进入到兵营的增减单位列表这里(参考上面的方法进入到这里)

修改 modules 不生效_ci_36

点击第一个按钮

修改 modules 不生效_输入框_37

Data Type选择ObjectReference,左下方选择TUniteDescriptor,即添加的是单位,然后输入单位的Instance,点击OK

 

修改 modules 不生效_加载_38

 19085已经添加到该建筑里面的,

 

修改 modules 不生效_ci_39

 双击它可以看相关参数

修改 modules 不生效_游戏_40

只在这里面添加还不行,还需要在菜单里面配置一下

在输入框输入TCubeActionMenuDescriptor,找到美军兵营,美军单位以US结尾,卡特尔是CS结尾,奇美拉是TFT结尾。比如美军兵营是Menu_Caserne_US

修改 modules 不生效_ci_41

 

修改 modules 不生效_ci_42

修改 modules 不生效_输入框_43

前面我们已经删除了美军士兵,所以4这个位置是空的,我们可以在这个位置加入这个单位。第一行第一列是从0开始的,所以第二行第一列是4

修改 modules 不生效_游戏_34

修改 modules 不生效_游戏_45

 这是原来士兵Marine的配置,由于这个士兵是可以升级的,所以有两个

修改 modules 不生效_ci_46

我们知道悍马是在轻型战车工厂里面建造的,我们先找到这个菜单

修改 modules 不生效_加载_47

我们可以看到他的菜单Instance是19919

修改 modules 不生效_ci_48

 双击ObjectReference,可以看到里面就是悍马的Instance

修改 modules 不生效_修改 modules 不生效_49

回到美军兵营菜单,Map:4列表里面

修改 modules 不生效_ci_46

修改 modules 不生效_修改 modules 不生效_51

输入19919,这是轻型战车工厂菜单里面悍马对应的菜单Instance,注意不是悍马的Instance

修改 modules 不生效_输入框_52

由于悍马这个单位是不支持升级的,所以只有一个,我们把下面那个删除了

修改 modules 不生效_ci_53

修改 modules 不生效_ci_54

回到主页面,点击保存

运行游戏之后,可以看到兵营里面可以建造悍马了

修改 modules 不生效_加载_55

也可以通过相同的方法,把其它阵营的单位添加到自己的阵营里面建造

如何删除建筑物

TConstructor:指定这个单位能够造哪些建筑,非常重要的属性,通过这个只需要知道那三个HQ的ID可以索引所有其他建筑,然后再通过各种Factory就可以索引所有部队。

在输入框输入TConstructor 这里列出了各阵营支持建造的建筑单位,比如选中17620,点击ConstructableUnits,可以看到建筑列表

修改 modules 不生效_输入框_56

比如17826就是美军兵营

 

修改 modules 不生效_游戏_57

这里举例怎么删除美军兵营

 

修改 modules 不生效_输入框_58

修改 modules 不生效_ci_59

 

修改 modules 不生效_ci_60

保存文件,运行游戏,可以看到第二行第一列的兵营已经不在了

修改 modules 不生效_加载_61

但是发现升级到战备状态2时,兵营又出现了,那是因为还有其它几个Instance需要删除

需要把下面几个Instance中存在17826的删除

修改 modules 不生效_修改 modules 不生效_62

修改 modules 不生效_游戏_63

17620是3级战备支持的建筑

17637是2级战备支持的建筑

17651是1级战备支持的建筑

每个阵营4个Instance

7615、7688、7721、8946是奇美拉阵营的建筑物

17620、17637、17651、17681是美军阵营的建筑物

35876、37001、37018、37096是卡特尔阵营的建筑物

修改 modules 不生效_ci_64

TechnoRegistrar:注册这个单位可以进行的技能升级,但神奇的是技能升级的效果只是将一种单位duang地变成了另外一种单位而已(比如升级悍马车的时候你会发现升级完成后新的悍马车直接跳了出来)。所以当你看到US Army HQ有三个版本的时候,并没有什么惊奇的。
说到同一单位的不同版本,Act of Aggression达到了丧心病狂的程度,除了不同升级的不同版本外,还有fake版本,visual fake版本,company版本,under construction版本,甚至连尸体都有相应的版本,难怪TUniteDescriptor对象有2017个实例。

下面以美军兵营为例,看一下它的技能升级列表

修改 modules 不生效_修改 modules 不生效_65

 

修改 modules 不生效_游戏_66

可以看到兵营支持3个技能升级

修改 modules 不生效_加载_67

对应的就是这3个技能

 双击任意一个ObiectReference

修改 modules 不生效_修改 modules 不生效_68

 可以看到这个技能的一些信息,比如建造资源

修改 modules 不生效_游戏_69

WeaponManager:武器相关属性,Act of Aggression里面的任何一个单位的武器先是由若干个Turrets组成,然后每一个Turret上面有若干个MountedWeapens,每个MountedWeapon上使用一种Ammunition。

以美军士兵为例

修改 modules 不生效_游戏_70

修改 modules 不生效_输入框_71

 

修改 modules 不生效_游戏_72

修改 modules 不生效_游戏_73

修改 modules 不生效_游戏_74

可以看到这个单位支持两个武器,原因是这个单位是可以升级的,第二个就是升级之后的武器

修改 modules 不生效_修改 modules 不生效_75

 双击第一个ObjectReference

修改 modules 不生效_ci_76

 这里可以看到武器的信息

修改 modules 不生效_ci_77

有的武器攻击是有最小范围的,敌人离单位过近时是无法攻击的

修改 modules 不生效_游戏_78

维修参数

Capacite:相当于英文中的Capacity,指的是维修车之类的被动能力。

这里以美军的维修车为例,修改维修范围

修改 modules 不生效_修改 modules 不生效_79

找到Instance,双击Capacite

 

修改 modules 不生效_加载_80

修改 modules 不生效_输入框_81

修改 modules 不生效_输入框_82

修改 modules 不生效_ci_83

修改 modules 不生效_游戏_84

 也可以用同样的方法修改后勤中心、医疗直升机的维修范围

 如何让兵营具备建筑维修功能

我们先参考美军后勤中心的Capacite,它的Instance是18109

修改 modules 不生效_游戏_85

由于兵营是没有维修能力的,所以没有Capacite项,我们只需要在兵营里面添加Capacite,Instance是18109

修改 modules 不生效_输入框_86

 

修改 modules 不生效_加载_87

Data type选Map

Value type选TableString

TableString选Capacite

修改 modules 不生效_输入框_88

 

修改 modules 不生效_加载_89

 

修改 modules 不生效_ci_90

 

修改 modules 不生效_加载_91

到此为止设置完成,保存之后,运行游戏,发现兵营可以修理附近的建筑了 

单位被摧毁之后生成新的单位

PilotGenerator:单位被击毁的时候随机生成的Pilot(可以被敌军抓了换钱的俘虏),也可以生成其它单位

下面举例,士兵被摧毁之后,生成一辆坦克

 

修改 modules 不生效_ci_92

 

修改 modules 不生效_加载_93

 设置单位摧毁之后,生成新的单位的数量最大值

修改 modules 不生效_加载_94

这个就是新单位的Instance

修改 modules 不生效_ci_95

 从名字上可以知道,这是Marine这个士兵受伤后的单位,相当于士兵摧毁之后变成一个受伤的单位

修改 modules 不生效_ci_96

我们可以把它改为其它单位,比如我们把它改成一辆坦克,Instance是19169

修改 modules 不生效_输入框_97

把这里改成19169,最大数量改为5

修改 modules 不生效_修改 modules 不生效_98

 保存之后,运行游戏,士兵摧毁之后随机生成n量坦克

如何拥有三军装备

我们把其它两个阵营的总部添加到当前阵营里面,那样所有的单位都可以建造了。

这里以美军为基础,把奇美拉的总部添加到美军建造里面

查看奇美拉的总部Instance,这里是7270

修改 modules 不生效_输入框_99

 输入框输入TConstructor,Instance选择17620

修改 modules 不生效_加载_100

 

修改 modules 不生效_加载_101

修改 modules 不生效_ci_102

 总部有3级战备,每个战备有对应的Instance

美军3级战备建造列表是17620

美军2级战备建造列表是17637

美军1级战备建造列表是17651

所以,需要把17637、17651按照上面的方法添加17620

修改 modules 不生效_ci_103

修改 modules 不生效_修改 modules 不生效_104

修改 modules 不生效_修改 modules 不生效_105

输入框输入TCubeActionMenuDescriptor 找到美军总部

修改 modules 不生效_修改 modules 不生效_106

双击Map:10行,因为我准备把它放到菜单的第3行第3列

修改 modules 不生效_游戏_107

 

修改 modules 不生效_输入框_108

这是总部里面的子菜单

修改 modules 不生效_ci_109

 

修改 modules 不生效_ci_110

我准备放到第3行的第一列,所以输入8(空的位置才行额)

修改 modules 不生效_输入框_111

 

修改 modules 不生效_输入框_112

 

修改 modules 不生效_ci_113

修改 modules 不生效_游戏_114

 

修改 modules 不生效_加载_115

到这里先暂停,我们需要找到奇美拉总部的菜单Instance

 输入框输入TCubeActionProductionUnitButtonDescriptor,找到里面内容是7270的Instance,我这里的是8519

修改 modules 不生效_ci_116

 回到前面那里

修改 modules 不生效_输入框_117

 

修改 modules 不生效_游戏_118

 到这里就全部完成了

保存之后,运行游戏,认证没问题