贪婪之秋汉化包是一款专业的汉化补丁工具,安全可靠,下载它就可以实现自动重新打包.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