自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具

作者 长沙象棋战神·版本 v6.5.20210805·更新於 2021-08-21

自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具,可以方便地製作定製的漢化包文件。

截圖 共 8 張

模組介紹 作者原文

自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具,可以方便地製作定製的漢化包文件。

前言

《貪婪之秋》這遊戲挺好玩的,俺上個星期看到有水友發了“修正遊戲中若干翻譯錯誤,強迫症福音”的帖子,發現這遊戲的漢化文本是明文編碼保存的,故頗有興致的寫了個程序實現了自動重新打包.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,並修改下面標紅的節點值;

```

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*)(?:-,;)?$。

STCFormat::BodyInfo.stc文件中對象主體信息。

STCFormat::BodyInfo節點由節點headerSize、headerFlag、fileStartPosExpr、fileSizeExpr按順序組成。

STCFormat::BodyInfo::headerSize 對象主體的頭部大小。

STCFormat::BodyInfo::headerFlag 對象主體的頭部起始標誌。

STCFormat::BodyInfo::fileStartPosExpr 對象主體中文件起始位置表達式;形如:起始位置[-,;][個數],若不指定個數,程序會取默認值1個;匹配的正則表達式爲:\A([1-9]\d*)(?:-,;)?$。

STCFormat::BodyInfo::fileSizeExpr 對象主體中文件大小表達式;形如:起始位置[-,;][個數],若不指定個數,程序會取默認值1個;匹配的正則表達式爲:\A([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 文件尾部的頭部起始標誌。

D:/360安全瀏覽器下載/GF/解包/loc_chn_data

D:/360安全瀏覽器下載/GF/修改

D:/360安全瀏覽器下載/GF/備份

loc_chn_data

(?i)`.txt`$

12

0x53544f43

9

72

0x70f7af789800000070f7af789800000070f7af789800000000000000fd7f00000000000000000000

49

57

2

0xd401

30

0x504b0304

19,2

27

46

0x504b0102

21,2

22

0x504b0506

```

所有的配置節點水友們可以查看配置文件中的詳細說明,俺特別說明下被標紅的需要修改的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文件對應的對象主體信息的文件起 …

安裝與使用 安裝:按包內說明操作

  1. 解壓本站下載的壓縮包,先讀包內的 readme / 說明檔案。
  2. 這類遊戲沒有通用的模組管理器:有的模組直接替換遊戲檔案、有的放進遊戲專屬的 Mods 資料夾、有的要先裝遊戲對應的社群載入器或工具,以包內說明為準。
  3. 嚴格按說明放置檔案;標註「前置依賴」的模組需要把依賴一併裝好。
  4. 啟動遊戲確認載入成功;部分遊戲需要在設定或模組選單裡手動啟用。

不同遊戲、不同模組的安裝位置差異很大,包內說明是最可靠的依據。

檔案與校驗

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