CNS 存档文件 JSON 转换器

CNS 存档文件 JSON 转换器

此工具可将CNS存档文件转换为JSON格式,并支持反向转换。

CNS存档JSON转换器

介绍

CNS - Custom Nanosuit System 把我的存档弄坏了。我眼看就要失去花费好几天时间精心打造的几百套服装存档……或者……我做了这个工具来修复这一切。这个工具可以在CNS存档与JSON格式之间双向转换,让你可以使用任何文本编辑器安全地检查和编辑存档数据。

源代码已发布在我的Github上。

关于损坏的CNS文件以及我如何修复它

在某个时刻,使用CNS更换服装时,视觉上看似正常工作,但CNS内部数据并未更新。在这种情况下,保存预置文件只会写入旧的固定服装,加载存档后会恢复旧的外观。这意味着CNS存档文件(DekCNS.sav)已经损坏,并且无法在游戏内修复。

我将损坏的存档和一个完好的初始存档都转换为JSON,然后逐步替换损坏存档中的顶级属性。我最终发现,删除AutoLoadCNSCamPosition属性后,CNS就能够正常保存了。与预置文件相比,这两个属性无关紧要。我仍然不明白为什么这样做有效,但既然有效,我就在这个工具中实现了修复功能。如果你遇到同样的问题,可以尝试在你的存档文件上使用命令行程序的fix命令。当然,它可能并非在所有情况下都有效,所以请分享任何失败的案例。

⚠️ 注意

本工具完全基于对CNS存档文件格式的逆向工程。我无法访问CNS设计文档,因此此实现可能不完整。请自行承担使用风险。保存文件后,请立即在游戏中验证。在覆盖任何现有存档前,此工具会自动在存档文件旁边的backup文件夹中创建备份。

安装方式

我提供了独立的命令行程序和Mod Organizer插件版本。对于独立程序,下载压缩包并解压到常规目录中。对于Mod Organizer插件,将其解压到Mod Organizer的plugins\目录下。

使用方式

  • 独立程序

命令格式:

CNSSaveConverter [-h] [-i INDENT] [-v] {tojson,fromjson,fix} input output

参数说明:

positional arguments:
  {tojson,fromjson,fix}
                        要执行的命令
  input                 输入文件路径
  output                输出文件路径(fix命令不需要) (默认: None)

options:
  -h, --help            显示此帮助信息并退出
  -i INDENT, --indent INDENT
                        JSON缩进级别(仅tojson) (默认: 2)
  -v, --version         显示程序版本号并退出
  • Mod Organizer插件

在工具栏的插件下点击CNS存档JSON转换器。插件将依次打开对话框,让你选择输入文件和输出文件路径。