wait4friend 发表于 2023-10-7 14:32

JA3 手工修改存档文件,调整佣兵技能, 无需重开档

本帖最后由 wait4friend 于 2023-10-7 14:32 编辑

背景

作为一个老年单机玩家,每个游戏都需要或多或少的修改一下,才能满足自己的习惯。目标并不是想无双割草,但是能自己掌控的感觉总是很好的。

我对JA3的修改需求,大致分为以下几类

[*]功能性的调整,这个已经有各种Mod可以满足
[*]获取特定武器,通过内置修改器可以实现
[*]佣兵属性的增加,风灵月影可以实现,虽然只能增加不能减少
[*]佣兵特技的修改,目前我找到的各种Mod,都需要重开存档才能生效。而我的需求是随时可以调整,方便玩花活。

所以,目前已有的工具和Mod,暂时不能满足的就是随时可以调整佣兵特技。截至2023-09-26,我还没有在网上找到现成可用的JA3存档修改工具,所以只能自己研究了一下如何修改存档。

需要工具和知识

[*]hpk.exe工具,用于解压存档文件
[*]任何文本编辑工具,这里使用 NPP
[*]简单的Windows CMD操作

核心流程
其实很简单,几个动作就完成了。

[*]解压缩名称格式为 xxxx.savegame.sav的存档文件
[*]格式化文本内容,这一个动作不是必须的,目的是为了肉眼看起来比较方便
[*]调整技能的代码,按需修改
[*]重新压缩存档文件
[*]读取存档,Enjoy
后面对每一个步骤进行详细说明

解压缩存档文件

JA3的存档目录,在 C:/Users/你的用户名字/Saved Games/Jagged Alliance 3/76561199468976101
JA3的存档文件,可以用hpk工具解压。随便找一个存档文件,比如我这里用的是 savebackup.savegame.sav 这个名字的文件。新建一个bat文件,写入下面这段代码

for %%g in (savebackup.savegame.sav) do mkdir "%%~ng"
for %%g in (savebackup.savegame.sav) do hpk.exe extract "%%g" "%%~ng"
echo All Done!
rem pause

执行上面代码后,会生成一个新的目录(如果已经存在,就删除先),名字叫savebackup.savegame,是的,和刚才存档同名,主要是为了方便。
目录里面会有3个文件,分别是

[*]game_session, 这个就是我们要修改的存档文件本体
[*]savegame_metadata, 存档的信息,包括名称、时间、Mod,等等
[*]screenshot1138x640,封面图片

格式存档文件内容
这里我们已经可以直接修改game_session这个文件了。是的,你没看错。JA3的存档文件,其实用hpk工具解压之后,就是明文了。(我这里用的是学习版,不知道steam版的情况)
但是,默认这里面的内容是没有经过格式化的,也就是说肉眼可以看懂,但是看的很累。截图如下


反正我看得受不了,所以还需要使用工具格式一下。 我这里使用的是 https://www.sojson.com/ 这个在线工具,当然也可以用其他的。格式化之后的内容,如下



按需修改技能的代码
注意,JA3的技能有三种,分别是 talent ,trait , perk 。但是在存档中不需要进行特意区分,只要有正确的技能代码即可。

技能代码,从解压后的Lua.hpk里面找,目录是 Lua.hpk / Lua / CharacterEffectCompositeDef ,每个技能有独立的文件。以 MrFixit 为例,在MrFixit.generated.lua文件中,可以看到显示的名称和代码是不同的,我们使用的是代码 MrFixit

以火线为例,火线的名字是Livewire,所以在存档中先搜索 Livewire = PlaceUnitData 这个字符串,只会有唯一的一个结果,如下图


我这个存档是刚到旗山的一个档,所有的数据都是初始的。从这个位置向下看,很快就能看到技能部分,StatusEffects,非常好找。如下图

注意,有个别技能的格式不同,主要是有时间周期那些,比如巴里的自动造炸弹,医生自动造药草这几个。在存档里面会有所有佣兵的资料,所以修改前多确认一下。

修改很简单,就是按照上图红框中的格式,构造两个部分的内容,然后替换原来的内容即可。我这里给火线修改了10个技能,如下图


为了在读取的时候,方便找到我修改后的存档,我一般会同时修改savegame_metadata里面的显示名字


重新压缩存档文件
新建一个bat文件,写入下面这段代码

hpk create --dont-compress-files savebackup.savegame save_modified.savegame.sav
echo All Done!
rem pause

执行上面代码后,会生成一个新的文件save_modified.savegame.sav(如果已经存在,会自动覆盖),把这个文件拷贝回JA3的存档目录。

-----------------------------------
完了。开玩。游戏过程中任何时间,都可以调整技能,不需要重新开档。









p7777777 发表于 2023-10-7 16:26

厉害,自己不会,智能羡慕

blusy 发表于 2023-10-9 01:52

666,感谢分享!!!

羽降影落 发表于 2023-10-22 21:09

大大,按你给的代码+hpk解压不了存档,执行bat一闪就自动关闭,没有反应

羽降影落 发表于 2023-10-22 22:13

抱歉,原来是有中文的原因

sunchao911 发表于 2023-11-22 22:47

修改成功,感谢大神!!!

sunchao911 发表于 2023-11-24 11:14

大佬,求问怎么找到IMP自建佣兵?

3dm_15291385 发表于 2023-12-2 22:04

hpk.exe怎样获取

goldenhw 发表于 2024-3-24 10:57

感谢!
主要羡慕伊凡的击杀回AP天赋,想改到自建佣兵上。。。。。。。

dashewan456 发表于 2024-4-20 13:38

感谢分享厉害,自己不会,智能羡慕

dashewan456 发表于 2024-5-16 19:15

大神,可不可以研究一下新游戏   亚瑟王:第九军团   的修改

rsice 发表于 2024-9-9 20:01

牛人!!

aunhst 发表于 2025-6-9 13:34

非常感谢,改改更舒心g:P

黑色瞳孔丶 发表于 2026-2-13 01:07

666感谢楼主分享!!
页: [1]
查看完整版本: JA3 手工修改存档文件,调整佣兵技能, 无需重开档