Jakeuj's Notes Help

塔防山賊模擬器存檔修改器:山寨帳房的用法與實作

要改《塔防山賊模擬器》的存檔,打開 山寨帳房 ,選取 ea3save.dat 這類進度檔,修改後匯出副本,結束遊戲再用副本換掉原檔即可。存檔全程只在瀏覽器本機處理,不會上傳;匯出時只替換改到的值,其他原始 JSON 文字原封不動。

以下內容整理於 2026 年 10 月,對應修改器 v2.34 與遊戲 V1.0.14.0。遊戲改版後欄位與公式可能變動,以修改器顯示的相容版本為準。

使用步驟

  1. 開啟 bandit.jakeuj.com ,選取要修改的遊戲進度檔,例如 ea3save.dat。

  2. 修改資源、角色或裝備。需要預覽的操作先確認結果再套用,最後在「檢視變更」核對。

  3. 下載原檔備份,再匯出修改副本,例如 ea3save.modified.dat。

  4. 結束遊戲,另外備份原始存檔,把修改副本改回原檔名,放回取出時的同一個位置。

  5. 重新開啟遊戲,載入對應存檔確認。

本機存檔、自動備份與 Steam 雲存檔快取可能在不同資料夾,取出與放回的必須是同一份進度。

可以改什麼

類別

內容

資源與名稱

銅錢、共用經驗、魂魄、科技點、操練點、材料數量,山寨與角色名稱

角色養成

角色、職業與九項技藝經驗(依遊戲公式聯動等級);一般隨機角色的基礎資質、技藝上限、天賦等級;丹藥資質增量;結丹品質與入體內丹等級

物品與裝備

普通裝備等級、品質、詞條係數與精準洗練;神話裝備第六槽;套裝品質與等級、寶物等級、內丹等級、靈物五行

山寨與科技

職業操練上限、進階科技、基礎科技解鎖、建築等級、城牆強化等級、城市層數與聲望

批次操作

多角色經驗、同庫裝備升滿、進階科技同值;先預覽,全部合格才套用

圖鑑與比對

角色、裝備與職業轉職路線圖鑑;比對兩份存檔並匯出 CSV;復原上一步或還原累計修改

一般模式遵守原版上限;進階(超限)模式只開放實測過的範圍,例如裝備等級與詞條係數到 1000。超限是原版做不到的狀態,遊戲內再重洗、重生或服用同類丹藥時可能被重算或受限,修改器會在畫面上註明。尚未核實或關聯太複雜的欄位維持唯讀,自訂座標也不能繞過。

存檔格式:Construct 3 Array JSON

遊戲以 Construct 3 開發、用 NW.js 包裝,進度存檔就是 Construct Array 物件序列化出來的 JSON:

{ "c2array": true, "size": [2501, 60, 23], "data": [[[0, "...", 0]]] }
  • 座標從零起算,寫成 data[x][y][z] 。z 是「層」,例如 z0 是資源與全域資料、z2 是已招募角色、z7 是背包、z9 是裝備庫;x 通常是列號,y 是欄位。

  • V1.0.13.0 起陣列從 22 層變成 23 層,多出來的 z22 是武庫。舊存檔載入新版後會被擴成 23 層;反過來用舊版遊戲讀,會截回 22 層,武庫物品就消失了。

  • 每格只會是數字、字串或 null 。修改器讀檔時檢查 c2array 、三維尺寸與識別欄位,不符就拒絕,避免誤選 saveinfo.dat 之類的其他檔案。

欄位意義不是猜出來的:開發時用自己安裝、解包的遊戲資料,解析 Construct 事件表裡對 save 陣列的 SetXYZ 寫入與 At 讀取,對照事件 SID 與 expression,整理出每個座標由哪個函式寫入。repo 只提交座標索引、名稱與規則摘要,不包含遊戲程式或玩家存檔。

匯出只替換改到的 token

直接 JSON.stringify 整個物件再寫回,會改掉原檔的 BOM、空白、指數寫法與超過安全整數的大數字。山寨帳房的做法是保留原始文字,只替換被改到的那幾格:

  1. 讀檔時保留原始字串,修改只記在 changes (以 x,y,z 為 key),不動原物件。

  2. 匯出時用 tokenizer 掃過原文,找到最外層的 "data" 陣列。

  3. 進入陣列後用深度與逗號計數追蹤目前的 [x, y, z] ;座標命中 changes 時,記下該 token 的起訖位置。

  4. 檢查原值與新值型別一致,且找到的 patch 數量等於修改數量,任何一項不符就停止匯出。

  5. 把原文切片,在 patch 位置插入新值後串回去。

這樣比對修改前後的檔案時,差異只會出現在改到的值,也比較容易確認修改器沒有順手動到其他資料。

有關聯的欄位整組修改

很多數值不是獨立欄位。例如加角色經驗要同時更新等級與剩餘經驗,升高校場或書院等級會改變操練上限與科技上限。修改器的規則是:

  • 每個寫入功能有自己的具名入口(例如設定建築等級、內丹等級),入口內做資格檢查、預覽、整組寫入,失敗就整筆回滾。

  • 關聯欄位放在同一個還原群組,還原建築等級時,依賴它的上限也一起還原,不會留下高於原上限的值。

  • 每個新功能有自己的驗證旗標,預設關閉;在隔離的遊戲副本用修改後的存檔實際存讀、重啟讀回,數值與原版行為一致才開放。

離線使用

  • 安裝 App :第一次連線開啟網站,等畫面顯示「可離線使用」後安裝。iPhone、iPad 用 Safari 的「加入主畫面」,Mac Safari 用「加入 Dock」。之後離線也能選檔、修改、比對與匯出,存檔不會進網站快取。

  • 下載單檔 HTML :網站提供單一 HTML 下載,程式與遊戲知識都內嵌在檔案裡,用 Edge 或 Chrome 直接開就能編輯,不需要 Node.js 或後端。

關閉前要先匯出,未匯出的修改不會保留。App 有新版時會等所有分頁關閉才更新,不會在編輯途中重新載入。

在 Apple Silicon Mac 原生執行遊戲

repo 另外提供實驗性的 macOS ARM64 準備工具:用自己 Steam 安裝的遊戲資料,配上官方 NW.js SDK ARM64 runtime,在 Mac 上原生執行,不經過 Wine 或 CrossOver。

python3 launcher/prepare-macos.py --source <windows-game-dir> --output ~/bandit-mac-port
  • 需要 Apple Silicon 與 Python 3.9 以上。第一次會下載約 141 MiB 的官方 runtime,並核對固定 SHA-256。

  • 工具只修正路徑相關的程式:Construct 的 AppFolder 、外部檔案讀取 fallback、 savedir/ backup 的分隔符與 icon 路徑;不修改 Steam 身分、授權、成就或 DLC 判定。

  • 只接受已核對過的遊戲腳本指紋;遊戲更新後指紋不同時會停下,要重新核對修正位置。

  • 完成後雙擊輸出目錄裡的 啟動山賊.command 。必須從這個啟動器開,因為修正後的資料根目錄取自啟動時的 working directory。

  • Mac 的存檔快取在輸出目錄的 game/savedir ,與 Windows 存檔分開;重新準備不會覆蓋 Mac 進度。

  • 要用 Steam 功能時,另外開啟並登入 Mac 版 Steam;CrossOver 裡的 Windows Steam 無法給 macOS 程式使用。

遊戲在 Windows 寫入的路徑用反斜線,Mac 上會變成檔名本身含有反斜線的檔案,例如 savedir\ea1save.dat ,不是 savedir/ 資料夾裡的檔案。在 Mac 搬移或修改存檔時,要保留實際檔名與位置。

目前已驗證主選單、Steam 雲存檔清單、DLC 辨識,以及隔離副本的本機存讀與重啟讀回;長時間遊玩、真實雲端上傳與成就還沒驗證。

參考資料

27 October 2026