存档修改

0 点赞
剑湾奇旅
转载

我查看了DLL文件,了解了他们处理存档格式的方式。这里有一些.py代码,可以让你导出、编辑文件,然后正确重新打包。 简介 这不是一个完善、用户友好的工具,而是存档文件格式的技术解析,供有兴趣创建修改器、存档编辑器或了解游戏数据存储方式的人参考。 目前仅测试过基本属性的编辑。存档文件中存在技能、物品栏、任务状态和其他数据结构,但修改它们后的行为尚不明确。 使用风险自负。此解决方案旨在让大家能有一个开始尝试修改的起点。本文档按现状提供,仅供教育目的以及希望创建合适的存档编辑工具或修改器开发工具的开发者使用。 我不会对本文档进行维护。如果我看到任何问题且有时间,会考虑回答。 步骤 你需要: 7及以上版本均可) - 具备代码理解能力。不要使用任何你不清楚其功能的随机代码! - 务必备份你的存档! 1. 在桌面创建一个文件夹,名称不限。在该文件夹中创建extract.py和repack.py脚本。 2. 从你的AppData/LocalLow/AtomTeam/Swordhaven路径下获取你想要编辑的存档文件。将其备份并复制到桌面上的文件夹中。

在文件夹中右键点击并在终端中打开。运行“python . extract.py”

4:在你创建的文件夹中,现在可以看到save.dat和player.dat文件。 5:使用文本编辑器打开这两个文件,里面的内容应为JSON字符串。找到你想要修改的内容,并在两个文件中都进行修改。

我刚刚在这个示例中搜索了“personality”,这样就能定位到JSON中的该区域。

这张图片可能不太容易看清,但请确保你正在更改你的角色! 以我的例子来说,我把所有属性都设为了11。我对两个文件都进行了这样的操作。 6:保存好之后,回到控制台并运行“python . repack.py”

现在在文件夹中,你会看到以“_EDITED”结尾的存档文件。 7:现在将该_EDITED文件放入你获取原始存档的游戏存档位置,并重命名,删除“_EDITED”部分。 进入游戏加载存档,查看是否成功。

存档文件加密结构概述 开发者采用了多层保护措施来防止随意修改存档: 1. GZip压缩:整个存档文件经过压缩,使其呈现为不可读的二进制数据而非文本形式。 2. 自定义二进制容器:解压后,文件以专有格式存储,采用长度前缀条目,而非ZIP或TAR等标准归档格式。 3. UTF-16编码:文件名采用UTF-16编码(每个字符2字节),而非标准ASCII,使其在十六进制编辑器中更难识别。 4. 数据拆分设计:角色属性分为save.dat(显示数据)和player.dat(实际游戏数据)两部分,需要同时编辑这两个文件才能使修改生效。(具体程度尚不明确,我只是注意到存档)那只是一些与存档文件本身相关的数据,并非游戏内数据,所以我正在尽可能地将两者修改为匹配状态。 非标准扩展名 - .as文件扩展名未表明其内部格式或压缩方式。 extract.py import struct import gzip import os # 查找当前目录中的第一个.as文件 as_files = [f for f in os.listdir('.') if f.endswith('.as')] if not as_files: print("在当前目录中未找到.as文件") exit(1) as_file = as_files[0] print(f"从{as_file}中提取") with gzip.open(as_file, 'rb') as f: data = f.read() pos = 0 files = {} while pos < len(data): if pos + 4 > len(data): break name_len = struct.unpack('<I', data[pos:pos+4])[0] pos += 4 filename = data[pos:pos+name_len*2]无法识别内容,已删除。无法识别内容,已删除。无法识别内容,已删除。