3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 侠客前传 | 刺客信条 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 4945|回复: 5

[MOD] 自制《贪婪之秋》的汉化包文件(扩展名为.spk和.stc)自动重新打包工具,目前已完全实现功能,进游戏主菜单后不再弹出!(2019年10月25日更新)

[复制链接]

34

主题

1711

帖子

1万

积分

3DM Mod原创组

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

贡献度
849
金元
101935
积分
13650
精华
6
注册时间
2011-12-23

3DM MOD站(白银)

发表于 2019-10-23 22:34 | 显示全部楼层 |阅读模式
本帖最后由 liyun_1981 于 2019-10-25 17:49 编辑

前言


      《贪婪之秋》这游戏挺好玩的,俺上个星期看到有水友发了“修正游戏中若干翻译错误,强迫症福音”的帖子,发现这游戏的汉化文本是明文编码保存的,故颇有兴致的写了个程序实现了自动重新打包.spk和.stc编码文件的功能,特分享各位强迫症水友!不过目前还有个很蛋痛的问题,那就是每次进到游戏主菜单界面游戏就自动弹出了,俺目前还想不啥好办法,故把程序分享上来希望跟对自己修改汉化有兴趣 的水友一起研究探讨下!@圣墟道长 @lys292 @灬瘾乀

正题

首先说明下此工具的使用步骤:
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,并修改下面标红的节点值;
  1. <?xml version="1.0" encoding="UTF8" standalone="yes"?>
  2. <FileSPK>
  3.     <comment>
  4.     FileSPK配置节点结构说明:
  5.     FileSPK节点由comment、SPKCode节点按顺序组成,comment节点必须在最前面,SPKCode节点可以有多个。
  6.     FileSPK::comment                        FileSPK配置节点结构说明,对文件重新打包无影响,仅此说明而已。
  7.     FileSPK::SPKCode                        SPK编码对象,包含了自动修改.spk文件和其相对应的同名.stc文件所需的所有参数。
  8.     SPKCode节点由节点unpackPath、repackPath、filePath、fileName、queryRegex、STCFormat、SPKFormat按顺序组成。
  9.     SPKCode::unpackPath                     .spk文件解包路径,也是SPKCode::queryRegex进行正则查询匹配的输入路径。
  10.     SPKCode::repackPath                     .spk文件重新打包路径;不能与SPKCode::filePath同值。
  11.     SPKCode::filePath                       .spk文件和其相对应的同名.stc文件路径,与SPKCode::fileName联合以用于读取文件内容。
  12.     SPKCode::fileName                       .spk文件和其相对应的同名.stc文件名称,与SPKCode::filePath联合以用于读取文件内容。
  13.     SPKCode::queryRegex                     文件名正则查询表达式,用于查询SPKCode::unpackPath路径下的所有文件;支持引用表达式和特殊字符占位符表达式(参见file命令参数说明)。
  14.     SPKCode::STCFormat                      .stc文件数据格式对象,用于解析该文件的数据结构。
  15.     STCFormat节点由节点HeaderInfo、BodyInfo、ListInfo按顺序组成,描述了整个.stc文件的数据结构。
  16.     STCFormat::HeaderInfo                   .stc文件中文件头部信息。
  17.     STCFormat::HeaderInfo节点由节点headerSize、headerFlag按顺序组成。
  18.     STCFormat::HeaderInfo::headerSize       文件头部的头部大小(以字节为单位的自然数,下同)。
  19.     STCFormat::HeaderInfo::headerFlag       文件头部的头部起始标志;支持16进制字符串表达式(匹配的正则表达式为:(?i)\A0x([0-9a-z]+)$)、引用表达式及特殊字符占位符表达式(下同)。
  20.     STCFormat::BodyInfo                     .stc文件中对象主体信息。
  21.     STCFormat::BodyInfo节点由节点headerSize、headerFlag、fileStartPosExpr、fileSizeExpr按顺序组成。
  22.     STCFormat::BodyInfo::headerSize         对象主体的头部大小。
  23.     STCFormat::BodyInfo::headerFlag         对象主体的头部起始标志。
  24.     STCFormat::BodyInfo::fileStartPosExpr   对象主体中文件起始位置表达式;形如:起始位置[-,;][个数],若不指定个数,程序会取默认值1个;匹配的正则表达式为:\A([1-9]\d*)([-,;]([1-9]\d*))?$。
  25.     STCFormat::BodyInfo::fileSizeExpr       对象主体中文件大小表达式;形如:起始位置[-,;][个数],若不指定个数,程序会取默认值1个;匹配的正则表达式为:\A([1-9]\d*)([-,;]([1-9]\d*))?$(下同)。
  26.     STCFormat::ListInfo                     .stc文件中对象列表信息。
  27.     STCFormat::ListInfo节点由节点headerSize、headerFlag按顺序组成。
  28.     STCFormat::ListInfo::headerSize         对象列表的头部大小。
  29.     STCFormat::ListInfo::headerFlag         对象列表的头部起始标志。
  30.     SPKCode::SPKFormat                      .spk文件数据格式对象,用于解析该文件的数据结构。
  31.     SPKFormat节点由节点BodyInfo、ListInfo、TailInfo按顺序组成,描述了整个.spk文件的数据结构。
  32.     SPKFormat::BodyInfo                     .spk文件中对象主体信息。
  33.     SPKFormat::BodyInfo节点由节点headerSize、headerFlag、fileSizeExpr按顺序组成。
  34.     SPKFormat::BodyInfo::headerSize         对象主体的头部大小。
  35.     SPKFormat::BodyInfo::headerFlag         对象主体的头部起始标志。
  36.     SPKFormat::BodyInfo::fileSizeExpr       对象主体中文件大小表达式。
  37.     SPKFormat::ListInfo                     .spk文件中对象列表信息。
  38.     SPKFormat::ListInfo节点由节点headerSize、headerFlag、fileSizeExpr按顺序组成。
  39.     SPKFormat::ListInfo::headerSize         对象列表的头部大小。
  40.     SPKFormat::ListInfo::headerFlag         对象列表的头部起始标志。
  41.     SPKFormat::ListInfo::fileSizeExpr       对象列表中文件大小表达式。
  42.     SPKFormat::TailInfo                     .spk文件中文件尾部信息。
  43.     SPKFormat::TailInfo节点由节点headerSize、headerFlag按顺序组成。
  44.     SPKFormat::TailInfo::headerSize         文件尾部的头部大小。
  45.     SPKFormat::TailInfo::headerFlag         文件尾部的头部起始标志。
  46.     </comment>
  47.     <SPKCode>
  48.         <unpackPath>D:/360安全浏览器下载/GF/解包/loc_chn_data</unpackPath>
  49.         <repackPath>D:/360安全浏览器下载/GF/修改</repackPath>
  50.         <filePath>D:/360安全浏览器下载/GF/备份</filePath>
  51.         <fileName>loc_chn_data</fileName>
  52.         <queryRegex>(?i)`.txt`$ </queryRegex>
  53.         <STCFormat>
  54.             <HeaderInfo>
  55.                 <headerSize>12</headerSize>
  56.                 <headerFlag>0x53544f43</headerFlag>
  57.             </HeaderInfo>
  58.             <BodyInfo>
  59.                 <headerSize>72</headerSize>
  60.                 <headerFlag>0xa0fbf5b0b9000000a0fbf5b0b9000000a0fbf5b0b900000000000000fc7f00000000000000000000</headerFlag>
  61.                 <fileStartPosExpr>49</fileStartPosExpr>
  62.                 <fileSizeExpr>57</fileSizeExpr>
  63.             </BodyInfo>
  64.             <ListInfo>
  65.                 <headerSize>2</headerSize>
  66.                 <headerFlag>0xd401</headerFlag>
  67.             </ListInfo>
  68.         </STCFormat>
  69.         <SPKFormat>
  70.             <BodyInfo>
  71.                 <headerSize>30</headerSize>
  72.                 <headerFlag>0x504b0304</headerFlag>
  73.                 <fileSizeExpr>19,2</fileSizeExpr>
  74.             </BodyInfo>
  75.             <ListInfo>
  76.                 <headerSize>46</headerSize>
  77.                 <headerFlag>0x504b0102</headerFlag>
  78.                 <fileSizeExpr>21,2</fileSizeExpr>
  79.             </ListInfo>
  80.             <TailInfo>
  81.                 <headerSize>22</headerSize>
  82.                 <headerFlag>0x504b0506</headerFlag>
  83.             </TailInfo>
  84.         </SPKFormat>
  85.     </SPKCode>
  86. </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字节)同值
文件相对路径名:从第31个字节起,直到第一个00字节结束
文件内容:从.stc文件对应的对象主体信息的文件起始位置开始,直到文件大小个字节后结束
文件相对路径名与文件内容之间间隔不确定数量个00字节

对象列表信息:
长度: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)

对象主体信息:
长度: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、经过这两天的研究分析,程序现已能正确的完成自动重新打包功能,经本人测试进游戏后能看到效果,且游戏已能够正确运行了!


附件下载:
自制游戏统一管理工具

评分

1

查看全部评分

161

主题

3845

帖子

4222

积分

游戏精英

Rank: 8Rank: 8

贡献度
112
金元
37743
积分
4222
精华
0
注册时间
2013-3-25

幻痛废土游民复仇者联盟

发表于 2019-10-24 09:32 | 显示全部楼层
LZ厉害!膜拜一下~期待有新成果!

64

主题

1463

帖子

1723

积分

3DM创意工坊

Rank: 11Rank: 11Rank: 11Rank: 11

贡献度
264
金元
6569
积分
1723
精华
1
注册时间
2013-3-29
发表于 2019-11-9 19:36 | 显示全部楼层
噗通。嘘,滋……

99

主题

1769

帖子

2466

积分

游戏达人

质量效应控

Rank: 7Rank: 7Rank: 7

贡献度
254
金元
14296
积分
2466
精华
2
注册时间
2003-12-23
发表于 2019-11-29 16:07 | 显示全部楼层
楼主神人也。问一下,这个支持10月31号发布的2号补丁吗?

34

主题

1711

帖子

1万

积分

3DM Mod原创组

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

贡献度
849
金元
101935
积分
13650
精华
6
注册时间
2011-12-23

3DM MOD站(白银)

 楼主| 发表于 2019-12-11 11:23 | 显示全部楼层
agou 发表于 2019-11-29 16:07
楼主神人也。问一下,这个支持10月31号发布的2号补丁吗?

支持的,理论上支持这游戏今后的所有升级补丁。

3

主题

344

帖子

445

积分

高级玩家

Rank: 4

贡献度
0
金元
4451
积分
445
精华
0
注册时间
2011-12-25
发表于 2020-4-17 05:06 | 显示全部楼层
成功了 太厲害了 !

--

我後來試圖改變遊戲的字型但失敗了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|咖绿茵|求知网|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2021-5-8 01:25 , Processed in 0.092008 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表