PeakScrollFix
Fixes the PEAK 2.4.b bug where guidebook scrolls vanished when opened at campfires (NRE in GuidebookPageValid). WARNING: may stop the game from launching - delete it after earning the Bookworm badge.
模組介紹 作者原文
PeakScrollFix(卷軸消失修復)
⚠️ 警告:務必先讀
- 本補丁可能造成遊戲無法啓動。 本模組會介入遊戲啓動期的單例初始化流程,在部分環境下曾導致遊戲卡在啓動階段(崩潰/黑屏),裝之前請先確認你知道怎麼刪除它。
- 完成書呆子成就(Bookworm Badge)後請立即刪除本補丁,避免下次官方修復該 bug 後與本補丁產生衝突(衝突表現爲啓動異常或成就/頁數記錄錯亂)。
- 刪除/回滾只需一步:把 PeakScrollFix.dll 改名成 PeakScrollFix.dll.disabled(或直接刪除),遊戲本體文件從未被修改。
- 若安裝後遊戲進不去:先改名回滾,再帶着 BepInEx\LogOutput.log 與 Player.log 找作者反饋。
這個補丁修什麼
PEAK 2.4.b 官方更新後,營火(含山頂營火)旁的卷軸(GuidebookPageScroll)使用後會直接消失:不生成指南書頁、頁數不漲、書蟲成就無法推進。
原因在遊戲自身代碼(不是存檔、也不是模組衝突):
- 2.4.b 給書頁加入了「漸進解鎖」門檻校驗,Guidebook.GuidebookPageValid 裏新增的代碼會無空值保護地讀取 AchievementManager 單例;
- 而該單例在分段交界處會被反覆銷燬/重建(營火正好位於分段交界線上),存在一個瞬間爲 null 的空窗;
- 在空窗期打開卷軸 → NullReferenceException → 選頁中斷、頁面從未生成,但卷軸已被協程照常銷燬 → 「打開卷軸直接消失」。
本補丁在空窗期補上該單例與其頁數數據,或改用遊戲自己的 Steam 統計(TotalPagesRead)完成同樣的門檻校驗與頁數記錄,讓卷軸恢復爲消耗後正常生成書頁。
安裝
手動安裝(推薦)
- 安裝 BepInEx 5.x(x64 / Mono 版):解壓到 PEAK 遊戲目錄(Steam → 右鍵 PEAK → 管理 → 瀏覽本地文件),使 winhttp.dll、doorstop_config.ini、BepInEx\ 與 PEAK.exe 同級;先啓動一次遊戲讓它生成目錄。
- 把 PeakScrollFix.dll 放進:
PEAK\BepInEx\plugins\PeakScrollFix\PeakScrollFix.dll
(文件夾不存在就新建;直接丟在 plugins\ 下也可以)
- 重啓遊戲(BepInEx 只在啓動時加載插件)。
模組管理器安裝:直接用本包的 zip 安裝即可(已按 規範打包,依賴 BepInEx-BepInExPack_PEAK)。
驗證是否生效
- 打開 PEAK\BepInEx\LogOutput.log,應能看到:
[PeakScrollFix] v1.1.0 loaded. Guard active, 3/3 concrete patches applied (no generic patching).
- 遊戲內跨過分段後到營火邊撿卷軸使用:
- 書頁正常出現在手上(不再憑空消失);
- LogOutput.log 裏可能出現 [PeakScrollFix]... 提示(補實例 / 無管理器校驗 / 直接記錄頁)——出現即說明正好堵到了一次原本會崩的時刻;
- C:\Users\\AppData\LocalLow\LandCrab\PEAK\Player.log 中不再出現 NullReferenceException... GuidebookPageValid;
- 進度正常累加:Successfully Updated Stat: TotalPagesRead (N)。
N 是頁標誌位掩碼,不是頁數:Intro=1、Mushrooms=2、Campfire=4、Revival=8……逐頁累加。
卸載 / 出問題怎麼辦
| 情況 | 操作 |
|---|---|
| 正常卸載(比如拿到成就後) | 刪除 BepInEx\plugins\PeakScrollFix\ 整個文件夾 |
| 遊戲啓動異常 | 把 PeakScrollFix.dll 改名成 PeakScrollFix.dll.disabled,重啓遊戲 |
| 想確認是否已停用 | LogOutput.log 裏不再出現 [PeakScrollFix]... 即爲已停用 |
工作原理(可自行審閱源碼)
- 守護組件:普通 MonoBehaviour,在遊戲內場景發現官方 AchievementManager 單例缺失時,用普通調用補一個常駐實例,並用 Steam 統計 TotalPagesRead 還原其「已讀頁」數據;實例存在但數據爲空時也會補上。
- Guidebook.GuidebookPageValid 前綴:單例/數據不可用時,按平臺統計重算同樣的門檻條件,讓選頁正常完成而不是崩潰。
- AchievementManager.TriggerSeenGuidebookPage 前綴:數據爲空時先還原;無法還原則直接按官方格式寫入該頁標誌位。
- GuidebookPageCollection.TryPickPageToSpawn 後置:選頁成功但管理器不可用時立即記錄,防止遊戲自身的標記調用失敗丟進度。
三個補丁目標均爲非泛型具體方法。歷史教訓:早期版本曾把補丁打在泛型單例 Singleton.get_Instance 上,會污染 Mono 的共享泛型代碼、導致遊戲完全無法啓動——該版本已廢棄,當前版本絕不碰泛型方法。
兼容性與說明
- 純客戶端補丁:不影響隊友,不修改遊戲本體文件,不注入網絡數據;與其它客戶端模組(PEAK Finder、ItemSpawner、FlyMod、PeakLevelSelect 等)實測共存正常。
- 不算作弊:它不會給你尚未開過的書頁,只把「卷軸本來就會生成的那一頁」按官方正常流程記入遊戲自己的 Steam 統計,和原版行爲一致。
- 本局統計可能重置一次:若補丁在途中重建了 AchievementManager,該實例的「本局計數」(如本局開箱數)會從零開始——這些數據本來就隨官方實例被銷燬而丟失;跨局成就統計在 Steam 端,不受影響。
- 遊戲更新後:若官方改動了相關方法簽名,補丁會自動跳過(不報錯、不崩,只是可能失效);若官方自己修好了這個 bug,請直接刪除本補丁,以免衝突。
- 適用:PEAK 2.4.b(Steam PC / Mono 運行時)+ BepInEx 5.x。
常見問題
- 裝完像沒生效? 確認是 BepInEx\plugins\ 下(不是遊戲根目錄)、且重啓過遊戲;再看 LogOutput.log 有沒有那行 [PeakScrollFix] v1.1.0 loaded。
- LogOutput.log 不存在? 說明 BepInEx 沒裝好(檢查 winhttp.dll 是否在遊戲根目錄、是否用了 BepInEx 5 而非 6/IL2CPP 版)。
- 遊戲進不去? 見上方警告:改名.disabled 回滾,然後帶日誌反饋。
- 卷軸還是會消失? 用 BepInEx 配置 BepInEx\config\com.dsh.peakscrollfix.cfg 把 VerboseLogging 設爲 true,復現後把 LogOutput.log 發給作者。
English
⚠️ WARNING — READ FIRST
- This patch may prevent the game from launching. It hooks into singleton initialisation during startup and, in some environments, has caused the game to hang or crash at boot. Make sure you know how to remove it before installing.
- Delete this patch as soon as you have earned the Bookworm badge, so that a future official fix for this bug does not conflict with it (conflicts show up as launch failures or broken page/achievement tracking).
- Uninstalling takes one step: rename PeakScrollFix.dll to PeakScrollFix.dll.disabled (or just delete it). No game file is ever modified.
- If the game will not start after installing: rename it back to.disabled first, then report the problem with your BepInEx\LogOutput.log and Player.log.
What this patch fixes
After the official PEAK 2.4.b update, guidebook scrolls (Guideboo
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: