Scrap Clean
Press F to enter clean mode and remove dropped items or player-placed objects. Highlight the target you aim at, or sweep a ground-hugging dashed circle to clear everything inside it.
模組介紹 作者原文
Scrap Clean
PEAK 的清理模組:一鍵清理掉落物與放置物。
安裝
- 通過模組管理器(r2modman Mod Manager)安裝,或手動解壓到 BepInEx/plugins/。
- 前置依賴:BepInExPack PEAK。
使用
| 操作 | 效果 |
|---|---|
| F | 進入 / 退出清理模式 |
| 滾動滾輪 | 在「單選清理」與「範圍清理」之間切換(無界,每滾一次換一個模式) |
| 鼠標左鍵 | 執行清理 |
進入模式、退出模式、切換模式都有明確的文字提示與上下滾動動畫,
屏幕下方常駐的信息條會實時顯示當前將清理哪個目標。
單選清理
按視線挑選:準星指向的掉落物或放置物會被高亮,左鍵清理它。
判定順序爲「距離上限(默認 100 米)→ 在視野錐內 → 無地形遮擋 → 與準星夾角最小」,
所以不在玩家眼中的東西不會被選中,也不會被誤清理。
判定基於物體的視覺包圍盒而不是它的座標原點:像大炮(原點在底座)、
牆上的踏板菇(原點在牆面接觸點)這類目標,用原點做判定會被自己的地面 / 牆面擋住而永遠選不中。
範圍清理
視線中會出現一個貼合表面的虛線圓形(半徑 3 米,可配置)。圓心是準星命中的那個點,
圓環沿該點的表面法線展開並逐點吸附到真實幾何體上:
地面貼地、牆面貼牆、斜坡沿坡面起伏,不會穿模。
圓內的所有掉落物與放置物會被一起清理。
什麼是「掉落物」和「放置物」
- 掉落物:任何被丟在地上的道具(Item.itemState == Ground)。
手裏拿的、背包裏的永遠不會被清理。
- 放置物:玩家使用道具後留在地圖上的物體。已確認支持:
- 繩索錨點(繩索炮 / 繩索卷軸打出的錨點)與其繩索
- 巖釘(ClimbingSpikeHammered,含劣質巖釘)
- 檢查點旗幟(Flag_Planted_Checkpoint)
- 便攜爐(PortableStovetop_Placed)
- 偵察兵大炮(ScoutCannon_Placed)
- 踏板菇 / 彈跳菇 / 滿血蘑菇 / 雲真菌的「已放置」形態
- 魔法豆藤蔓(MagicBeanVine)
- 鎖鏈(ChainShootable)與叢林藤蔓(JungleVine)
- 系在玩家身上的氣球(TiedBalloon)
世界生成的地形、岩石、建築、木質平臺等固定景物絕不會被清理。
多人聯機說明
清理分三條路徑,全部依據 PUN 的實際規則實現:
- 自己的東西 → 直接刪除。
- 別人的掉落物 → 物品允許接管所有權,搶過來後刪除。
- 別人的放置物 → PUN 禁止轉移這類物體的所有權,
Scrap Clean 會向該物體的所有者客戶端發送一個自定義事件(事件碼 190),
由對方代爲刪除。對端也需要安裝本模組,否則該物體保留不動(安全失敗,絕不越權破壞)。
可以用 Network/AllowOwnershipTakeover = false 完全關閉跨玩家清理。
配置
配置文件:BepInEx/config/com.zhuanban.peak.scrapclean.cfg
| 項 | 默認 | 說明 |
|---|---|---|
| General/ToggleKey | F | 開關快捷鍵 |
| General/SingleRange | 100 | 單選清理的視線判定距離上限(米),範圍 5~300 |
| General/AreaRadius | 3 | 範圍清理圓半徑(米) |
| Filter/CleanDroppedItems | true | 是否清理掉落物 |
| Filter/CleanPlacedObjects | true | 是否清理放置物 |
| Network/AllowOwnershipTakeover | true | 是否允許跨玩家清理 |
| UI/ToastSeconds | 2 | 文字提示停留時間(秒) |
| Debug/VerboseLogs | false | 詳細診斷日誌(排查問題時纔打開) |
按鍵衝突
遊戲自帶的 InputActions 沒有佔用 F,因此默認使用 F,不會與遊戲功能衝突。
清理模式只接管鼠標左鍵與滾輪(進入期間它們只用於清理),
移動、跳躍、交互、語音等全部保持正常。
右鍵在清理模式下同樣被抑制,避免誤用手持道具的次要功能。
已知邊界
- 清理別人的放置物需要對方也在線:模組會先請求對方代刪;
對方沒有安裝模組或遲遲沒有響應時,模組會在一小段等待後由本機接管所有權完成清理
(需保持 Network/AllowOwnershipTakeover 開啓)。
- 繩索需要連帶處理:繩索本體與錨點是兩次獨立實例化,
模組會把錨點對應的繩索一起登記;跨客戶端時由持有繩索的那一端在執行刪除時一併處理。
- 範圍清理受視線影響:圓心是準星命中的表面點,準星沒打到任何表面時不會顯示圓環。
- 高亮覆蓋面:模組使用遊戲原生的 _Interactable 材質屬性做高亮,與遊戲懸停高亮同一條路徑。
極少數材質(例如踏板菇的岩石 shader、便攜爐的 URP/Lit)沒有該屬性,
對這些目標高亮不可見,但清理功能不受影響。
- 活體生物:蠍子 / 青蛙等身上帶 MobItem: Item,走動時狀態就是 Ground,
因此也會被當作掉落物清理(這是刻意保留的行爲)。
給開發者:構建與代碼結構
構建
dotnet build -c Release
默認輸出到 bin\Release\ScrapClean.dll 並自動複製到 BepInEx/plugins/。
遊戲目錄可用 -p:GameRoot=... 覆蓋,或用 -p:DeployToGame=false 關閉自動部署。
目錄結構
src/
ScrapCleanPlugin.cs 生命週期與 Harmony 掛載
ScrapCleanConfig.cs BepInEx 配置
CleanMode.cs 主狀態機(輸入 / 掃描 / 高亮 / 清理 / 提示)
TargetScanner.cs 候選目標的掃描與分類
Cleaner.cs 刪除執行(三條網絡路徑)
CleanRequestRelay.cs 跨客戶端清理請求(自定義事件 190)
HighlightRenderer.cs 原生 _Interactable 屬性高亮
GroundRing.cs 貼合表面的虛線圓環
CleanUI.cs 提示文字與滾動動畫
HarmonyPatches.cs CharacterInput.Sample 後置補丁(輸入抑制)
SCInput.cs 輸入讀取
CenterCache.cs 視覺包圍盒與代表點
SCLog.cs 日誌
tools/ 只讀研究腳本(資源探測,不參與構建)
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: