前因#
之前写过一个艾尔登法环的无缝联机 MOD 工具,可以快捷转换在线版和 MOD 版存档,还可以修改一些 MOD 的设定。后来有一个小伙伴发邮件寻问我是否可以在软件中添加一个功能:因为 MOD 物品在在线版中算作弊物品,所以想在 MOD 版转为在线版存档时通过直接修改存档数据删除其中的 MOD 物品,从而实现可以无缝转换存档。
一个艾尔登法环无缝联机Mod工具
因此我在网上搜索了一下一些资料,找到了一些项目有类似的功能,知道了例如查物品数据和修改的大概实现方式。但是在互联网上没有什么人详细写过,所以想写这篇希望能帮到人。
准备#
如果你能找到这篇文章我就默认你是有一定基本知识了,例如 16 进制是什么,你想要修改的物品 ID 是多少等等。
需要准备的工具和文件:
- Hex 修改工具,例如常用的 HxD 或者 VS Code 搭配 Hex Editor 插件(十分推荐使用 HxD)
- 游戏存档
- 游戏存档备份(最好进行一下备份,防止修改后出现问题无法逆转)
- 一份物品 ID 表(你需要知道你修改的物品的 ID 是多少)
本文将以埃尔登法环的存档作为示例,使用到的修改器是 HxD。
确定物品 ID#
首先找到物品的 ID,例如我需要修改的是 MOD 添加的物品,它们本来不属于游戏内容,所以我在 MOD 的 FAQ 中找到了 MOD 添加的几个物品的 ID。
我这里 MOD 作者物品的 ID 给的是 10 进制,需要将其转为 16 进制备用。
物品名称 | 10 进制 ID | 16 进制 ID |
---|---|---|
袖珍大壶 | 8380001 | 7FDE61 |
玛莲妮亚雕像 | 8380002 | 7FDE62 |
挑战者之针 | 8380003 | 7FDE63 |
离别迷雾 | 8380004 | 7FDE64 |
判官的法典 | 8380005 | 7FDE65 |
卢恩之酒 | 8380006 | 7FDE66 |
使用编辑器寻找物品#
上一步我们已经知道了物品的 16 进制 ID,现在需要在存档中找到物品对应的位置。
在这里我们需要知道一个小常识,一般的游戏存档为了方便计算机的读取、编辑和兼容性,存档多以小端序存储,所以我们拿到的 16 进制 ID 并不能直接使用,需要按小端序排列。例如袖珍大壶的 ID 7FDE61
,在搜索时应该搜索61DE7F
。
现在我们搜索到了4 个有袖珍大壶 ID 的位置,分别在11219
、1604D
、16A15
和218F1
处。一个小知识:艾尔登法环人物数据包括人物的背包数据是存储在310
- 28030F
这一段中的,其他位置请不要随意修改。
那么我这里这 4 个数据都是有效的。那就继续下一步。
开始修改#
接下来我们又需要知道一个小知识,艾尔登法环的物品 ID 后面会有一位添加一个随机值为间隔,后面就为物品数量。
示例:
所以如果想要修改物品数量那么直接修改从 ID 往后数两位的位置的值就行。但是我需要删除这些物品,那么直接将这一部分,即61 DE 7F B0 01
这一部分全部置零即可。
修改校验和#
继续一个小知识:艾尔登法环会将人物的数据整合计算一个 MD5 值,并存放在300
- 30F
这一段。
所以我们需要将修改后的310
- 28030F
这一段数据计算并修改 MD5。
- Ctrl + E,起始位置和终止位置分别输入
310
和28030F
- 在顶部菜单栏选择「分析」->「检验和」
- 可用算法翻到最下面,选择「MD-5」
从底部「校验和」中右键复制 MD5 校验和
Ctrl + E,起始位置和终止位置分别输入
300
和30F
,确认后右键选择「覆盖式粘贴」
进入游戏验证#
最后进入存档文件夹,删除所有存档(记得先备份)。将我们修改好的存档放进去,发现 MOD 物品消失了!(这里删的时候漏了一个)
参考与鸣谢#
- 艾尔登法环无缝联机 MOD - ER Seamless Coop
- Reddit r/PiratedGames 下 u/Danger_Fox_ 的帖子 - Elden Ring cracked game save to Steam
- 哔哩哔哩 幸运锦兰 的专栏 - 血源存档修改器的简单应用(物品修改篇)
本文作者: 褐瞳さん
本文链接: https://hetong-re4per.com/posts/how-to-modify-game-data-by-modifying-game-save-hex/
版权声明: 本文文字在未特别注明下默认使用 CC BY-NC-SA 4.0 许可协议。