自制《贪婪之秋》的汉化包文件(扩展名为.spk和.stc)自动重新打包工具

收藏人数:89614
点赞次数:147028
下载次数:206890
资源大小:25.71MB

资源介绍

暂无介绍


详细介绍

简单简介

在3DM Mod站下载贪婪之秋最新的自制《贪婪之秋》的汉化包文件(扩展名为.spk和.stc)自动重新打包工具 Mod,由长沙象棋战神制作。长沙象棋战神在我们的平台上分享了这个免费且高质量的游戏模组,让玩家们可以享受到更加丰富的游戏体验。快来3DM Mod站下载并尝试吧!

详细介绍

Mod作者: 长沙象棋战神 Mod版本: 6.5.20210805 Mod大小: 25.71MB 更新时间: 2021-08-21 13:38:33 发布时间: 2019-10-25 18:06:16

详细说明

前言

《贪婪之秋》这游戏挺好玩的,俺上个星期看到有水友发了“修正游戏中若干翻译错误,强迫症福音”的帖子,发现这游戏的汉化文本是明文编码保存的,故颇有兴致的写了个程序实现了自动重新打包.spk和.stc编码文件的功能,特分享给各位强迫症水友!

正题

首先说明下此工具的使用步骤: 1、去俺之前发的这个帖子自制游戏统一管理工具下载game.7z文件,并解压到任意目录,如:d:\tools;

2、以系统管理员身份运行“命令提示符”,输入命令: cd /d d:\tools\game\bin

3、用7zip等解压工具解压缩文件GreedFall\packs\loc_chn_data.spk到任意目录,并用文本编辑工具修改好需要修改的游戏中文文本文件(在解压后的text子目录中);

4、用文本编辑工具打开配置文件 d:\tools\game\bin\file-spk.xml,并修改下面标红的节点值;

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FileSPK>
    <comment>
    FileSPK配置节点结构说明:
    FileSPK节点由comment、SPKCode节点按顺序组成,comment节点必须在最前面,SPKCode节点可以有多个。
    FileSPK::comment                        FileSPK配置节点结构说明,对文件重新打包无影响,仅此说明而已。
    FileSPK::SPKCode                        SPK编码对象,包含了自动修改.spk文件和其相对应的同名.stc文件所需的所有参数。
    SPKCode节点由节点unpackPath、repackPath、filePath、fileName、queryRegex、STCFormat、SPKFormat按顺序组成。
    SPKCode::unpackPath                     .spk文件解包路径,也是SPKCode::queryRegex进行正则查询匹配的输入路径。
    SPKCode::repackPath                     .spk文件重新打包路径;不能与SPKCode::filePath同值。
    SPKCode::filePath                       .spk文件和其相对应的同名.stc文件路径,与SPKCode::fileName联合以用于读取文件内容。
    SPKCode::fileName                       .spk文件和其相对应的同名.stc文件名称,与SPKCode::filePath联合以用于读取文件内容。
    SPKCode::queryRegex                     文件名正则查询表达式,用于查询SPKCode::unpackPath路径下的所有文件;支持引用表达式和特殊字符占位符表达式(参见file命令参数说明)。
    SPKCode::STCFormat                      .stc文件数据格式对象,用于解析该文件的数据结构。
    STCFormat节点由节点HeaderInfo、BodyInfo、ListInfo按顺序组成,描述了整个.stc文件的数据结构。
    STCFormat::HeaderInfo                   .stc文件中文件头部信息。
    STCFormat::HeaderInfo节点由节点headerSize、headerFlag、recordSizeExpr按顺序组成。
    STCFormat::HeaderInfo::headerSize       文件头部的头部大小(以字节为单位的自然数,下同)。
    STCFormat::HeaderInfo::headerFlag       文件头部的头部起始标志;支持16进制字符串表达式(匹配的正则表达式为:(?i)\A0x([0-9a-f]+)$)、引用表达式及特殊字符占位符表达式(下同)。
    STCFormat::HeaderInfo::recordSizeExpr       文件头部的记录个数表达式;形如:起始位置[-,;][个数],若不指定个数,程序会取默认值1个;匹配的正则表达式为:\A([1-9]\d*)(?:[-,;]([1-9]\d*))?$。
    STCFormat::BodyInfo                     .stc文件中对象主体信息。
    STCFormat::BodyInfo节点由节点headerSize、headerFlag、fileStartPosExpr、fileSizeExpr按顺序组成。
    STCFormat::BodyInfo::headerSize         对象主体的头部大小。
    STCFormat::BodyInfo::headerFlag         对象主体的头部起始标志。
    STCFormat::BodyInfo::fileStartPosExpr   对象主体中文件起始位置表达式;形如:起始位置[-,;][个数],若不指定个数,程序会取默认值1个;匹配的正则表达式为:\A([1-9]\d*)(?:[-,;]([1-9]\d*))?$。
    STCFormat::BodyInfo::fileSizeExpr       对象主体中文件大小表达式;形如:起始位置[-,;][个数],若不指定个数,程序会取默认值1个;匹配的正则表达式为:\A([1-9]\d*)(?:[-,;]([1-9]\d*))?$(下同)。
    STCFormat::ListInfo                     .stc文件中对象列表信息。
    STCFormat::ListInfo节点由节点headerSize、headerFlag按顺序组成。
    STCFormat::ListInfo::headerSize         对象列表的头部大小。
    STCFormat::ListInfo::headerFlag         对象列表的头部起始标志。
    SPKCode::SPKFormat                      .spk文件数据格式对象,用于解析该文件的数据结构。
    SPKFormat节点由节点BodyInfo、ListInfo、TailInfo按顺序组成,描述了整个.spk文件的数据结构。
    SPKFormat::BodyInfo                     .spk文件中对象主体信息。
    SPKFormat::BodyInfo节点由节点headerSize、headerFlag、fileSizeExpr、filePathExpr按顺序组成。
    SPKFormat::BodyInfo::headerSize         对象主体的头部大小。
    SPKFormat::BodyInfo::headerFlag         对象主体的头部起始标志。
    SPKFormat::BodyInfo::fileSizeExpr       对象主体中文件大小表达式。
    SPKFormat::BodyInfo::filePathExpr       对象主体中文件路径名长度表达式。
    SPKFormat::ListInfo                     .spk文件中对象列表信息。
    SPKFormat::ListInfo节点由节点headerSize、headerFlag、fileSizeExpr按顺序组成。
    SPKFormat::ListInfo::headerSize         对象列表的头部大小。
    SPKFormat::ListInfo::headerFlag         对象列表的头部起始标志。
    SPKFormat::ListInfo::fileSizeExpr       对象列表中文件大小表达式。
    SPKFormat::TailInfo                     .spk文件中文件尾部信息。
    SPKFormat::TailInfo节点由节点headerSize、headerFlag按顺序组成。
    SPKFormat::TailInfo::headerSize         文件尾部的头部大小。
    SPKFormat::TailInfo::headerFlag         文件尾部的头部起始标志。
    </comment>
    <SPKCode>
        <unpackPath>D:/360安全浏览器下载/GF/解包/loc_chn_data</unpackPath>
        <repackPath>D:/360安全浏览器下载/GF/修改</repackPath>
        <filePath>D:/360安全浏览器下载/GF/备份</filePath>
        <fileName>loc_chn_data</fileName>
        <queryRegex>(?i)`.txt`$</queryRegex>
        <STCFormat>
            <HeaderInfo>
                <headerSize>12</headerSize>
                <headerFlag>0x53544f43</headerFlag>
                <recordSizeExpr>9</recordSizeExpr>
            </HeaderInfo>
            <BodyInfo>
                <headerSize>72</headerSize>
                <headerFlag>0x70f7af789800000070f7af789800000070f7af789800000000000000fd7f00000000000000000000</headerFlag>
                <fileStartPosExpr>49</fileStartPosExpr>
                <fileSizeExpr>57</fileSizeExpr>
            </BodyInfo>
            <ListInfo>
                <headerSize>2</headerSize>
                <headerFlag>0xd401</headerFlag>
            </ListInfo>
        </STCFormat>
        <SPKFormat>
            <BodyInfo>
                <headerSize>30</headerSize>
                <headerFlag>0x504b0304</headerFlag>
                <fileSizeExpr>19,2</fileSizeExpr>
                <filePathExpr>27</filePathExpr>
            </BodyInfo>
            <ListInfo>
                <headerSize>46</headerSize>
                <headerFlag>0x504b0102</headerFlag>
                <fileSizeExpr>21,2</fileSizeExpr>
            </ListInfo>
            <TailInfo>
                <headerSize>22</headerSize>
                <headerFlag>0x504b0506</headerFlag>
            </TailInfo>
        </SPKFormat>
    </SPKCode>
</FileSPK>

所有的配置节点水友们可以查看配置文件中的详细说明,俺特别说明下被标红的需要修改的3个节点的含义: unpackPath 指.spk编码文件解压缩的目录,即保存你手动修改好的.txt汉化文本文件的目录; repackPath 指程序根据你已修改好的.txt汉化文本文件和游戏原始.spk和.stc文件自动生成重新打包的.spk和.stc文件的输出目录; filePath 指游戏原始.spk和.stc文件的输入目录,建议不要直接指定为游戏目录,而是从游戏目录中复制一份到指定的备份目录;

5、输入命令:

file -rfspk+ (?i)`file-spk.xml`$ . 1

此时程序会根据配置文件自动完成文件loc_chn_data.spk和文件loc_chn_data.stc的重新打包;

6、将上一步生成的这两个文件复制到游戏目录 GreedFall\packs 下覆盖,即可运行游戏查看效果了。

下面是俺的分析思路:

.spk文件: 对象主体信息: 对象头部长度:30字节+文件相对路径名字节数 起始标志:50 4b 03 04 文件大小:从第19个字节起,连续两个双字(19到22字节和23到26字节)同值文件相对路径名长度:第27~28字节,是个短整型数据 文件相对路径名:从第31个字节起,直到第一个00字节结束 文件内容:从.stc文件对应的对象主体信息的文件起始位置开始,直到文件大小个字节后结束 文件相对路径名与文件内容之间间隔若干个00字节,且对象头部长度是根据4K字节紧凑对齐的 这些00字节个数的计算公式为:空字节数=(4096-(对象头部长度+文件大小)%4096)%4096

对象列表信息: 长度:46字节+文件相对路径名字节数(从文件结尾向前跳过文件尾部信息的22个字节,再逐字节回溯查询46个字节,字节数组反转后的前4个字节应匹配起始标志) 起始标志:50 4b 01 02 文件大小:从第21个字节起,连续两个双字(21到24字节和25到28字节)同值 文件相对路径名:从第47个字节起,直到下一个起始标志50 4b 01 02前结束

文件尾部信息: 长度:22字节 起始标志:50 4b 05 06

.stc文件: 文件头部信息: 长度:12字节 起始标志:53 54 4f 43(STOC) 记录总数:9~12字节,描述了.spk文件中保存的文件总数

对象主体信息: 长度:72字节 起始标志:a0 fb f5 b0 b9 00 00 00 a0 fb f5 b0 b9 00 00 00 a0 fb f5 b0 b9 00 00 00 00 00 00 00 fc 7f 00 00 00 00 00 00 00 00 00 00(40字节) 文件起始位置:49~52字节 文件大小:57~60字节 文件起始位置与文件大小之间间隔一个双字 00 00 00 00(53~56字节)

对象列表信息: 长度:2字节+文件相对路径名字节数 起始标志:d4 01(从文件结尾向前回溯查询直到匹配的第一个双字节) 文件相对路径名:从第3个字节起,以00字节间隔和结束

2019年10月25日更新: 1、经过这两天的研究分析,程序现已能正确的完成自动重新打包功能,经本人测试进游戏后能看到效果,且游戏已能够正确运行了!

2021年7月1日更新: 1、文件处理主逻辑修正,性能优化; 2、目前已支持.spk原文件和重新打包后的.spk文件的大小不超过2GB-9个字节的情况,且支持修改除文本文件之外的其它文件的修改后重新打包。

2021年7月10日更新: 1、文件处理主逻辑完善,现已支持重新打包超过2GB-9个字节的.spk文件,只需在配置文件file-spk.xml中将fileSizeMode节点值修改为1即可。

此MOD授权声明:

此MOD是作者本人原创MOD,如需转载请注明出处!!

文件说明

暂无介绍

Mod截图

相关作品

自制亲爱的Unity游戏MOD管理器DUMM | 自制百宝袋Mod(BagOfTricks)全汉化、界面美化、性能增强特别版!! | 《只狼:影逝二度》参数文件编辑工具,制作修改数据类MOD必备!! | 自制《贪婪之秋》的汉化包文件(扩展名为.spk和.stc)自动重新打包工具 | 真正的武器附魔MOD,不仅有元素特效而且还能打出异常状态!! | 自制黑暗之魂3专用的Mod工具DS3ModEngine及灰烬Mod学习整合版 |

长沙象棋战神的其他作品

  • 自制亲爱的Unity游戏MOD管理器DUMM
  • 自制百宝袋Mod(BagOfTricks)全汉化、界面美化、性能增强特别版!!
  • 《只狼:影逝二度》参数文件编辑工具,制作修改数据类MOD必备!!
  • 自制《贪婪之秋》的汉化包文件(扩展名为.spk和.stc)自动重新打包工具
  • 真正的武器附魔MOD,不仅有元素特效而且还能打出异常状态!!
  • 自制黑暗之魂3专用的Mod工具DS3ModEngine及灰烬Mod学习整合版