Scrap Clean

版本 v1.1.0·更新於 2026-09-17

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 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

BepInEx-BepInExPack_PEAK

檔案與校驗

檔案名稱
Scrap_Clean-1.1.0.zip
檔案大小
51.4 KiB