發布於 2026/07/19
無人機不見了
一個指令叫回來
無人機有圖示卻找不到?這篇先用一行指令把它叫回來,再解釋走失原因與預防方式。
先救再說
無人機不見時,不用回原地、不用挖地、不用重登,人在哪都可以做:
| 步驟 | 動作 |
|---|---|
| 1 | 按 F1 打開主控台 |
| 2 | 輸入 jds unstuck |
| 3 | 按 Enter |
| 4 | 再按 F1 關閉 |
無人機會立刻傳送到你身邊,落點是你的胸口後方約 5 格,而且遊戲會自動偵測牆壁與障礙物,不會把它塞進石頭裡。
💡 這是遊戲原廠內建的指令,不是 MOD。 開發商 The Fun Pimps 專門做了這個指令來救卡住的無人機——換句話說,無人機走失是原廠都承認的已知問題,不是我們伺服器壞掉,也不是你操作錯誤。
✅ 已實測:2026-07-19 我們伺服器有一台無人機掉到 Y=0(世界最底層基岩),主人在地表怎麼找都找不到。執行本指令後,它從地底 44 格深直接傳送回主人身邊,機體與貨物完好。
這個指令我們已經開放給全體玩家,不需要管理員權限,你隨時可以自己用。
只准用這一個指令
⚠️ 這是本篇最重要的警告。
jds 底下還有其他子指令,但它們會動到別人的東西,而且不會有任何確認視窗:
| 指令 | 後果 | 能不能用 |
|---|---|---|
jds unstuck | 把你自己的無人機叫回身邊 | ✅ 只用這個 |
jds clear <玩家名> | 刪掉該玩家的無人機資料(含裡面的東西) | 🚫 絕對別碰 |
jds remove <編號> | 從世界移除指定無人機 | 🚫 絕對別碰 |
jds unassign <玩家名> <編號> | 解除某人跟無人機的綁定,變成無主機(見文末,會救不回來) | 🚫 絕對別碰 |
🚨
jds clear沒有二次確認、沒有復原、沒有回收桶。 打錯一個名字就是別人的無人機連同貨物直接消失。你只需要記得jds unstuck這一個。
為什麼會不見
無人機掉到 Y=0——那是七日殺世界的最底層基岩。而遊戲地圖是俯視平面圖,只畫左右前後(X/Z),不畫高度(Y)。
所以畫面與實際位置會完全不同:
| 觀察來源 | 顯示/所在位置 | 原因 |
|---|---|---|
| 地圖圖示 | 就在你腳邊 | 平面圖只畫 X/Z,不顯示高度 Y |
| 無人機實體 | 在正下方 40 幾格岩層裡 | 掉到世界最底層 Y=0 |
你站在原地轉三圈都不可能看到它,因為它跟你之間隔著幾十層石頭。
根本原因:遊戲的位置檢查形同虛設
我們反編譯了伺服器程式,遊戲判斷「無人機的位置合不合理」的函式長這樣:
public bool isValidDronePos(Vector3 pos)
{
// 只檢查座標是不是「非數字」,完全沒有檢查高度
return !float.IsNaN(pos.x) && !float.IsNaN(pos.y) && !float.IsNaN(pos.z);
}
它只確認座標不是亂碼,完全不檢查高度合不合理。所以 Y=0(埋在基岩裡)對遊戲來說是「完全有效的位置」,於是安心存檔、永久保留——無人機就這樣被合法地封在地底,直到有人手動救它。
⚠️ 這是遊戲引擎層級的缺陷,無法用伺服器設定預防。 我們查過全部沙盒選項(SandboxOptions)與伺服器設定檔(serverconfig.xml),沒有任何一個參數跟無人機行為有關。所以本篇的重點是「快速救援」而不是「根治」。
為什麼不會自己回來
遊戲其實做了三道自動跟隨的防線,正常情況下無人機很難走丟:
| 防線 | 觸發時機 | 共同失效條件 |
|---|---|---|
| 玩家傳送時跟隨 | 你用傳送點/床傳送時,無人機一起被拉過去 | 停留模式或關機 |
| 超出範圍拉回 | 距離拉太遠時自動傳送跟上 | 停留模式或關機 |
| 上線時歸隊 | 你重新登入世界時,把跟隨中的無人機生成到你身邊 | 停留模式或關機 |
問題是這三道防線全部掛在同一個條件上:
public void TeleportIfFollowing()
{
if (orderState == Orders.Follow && !isShutdown) // 必須「跟隨模式」且「未關機」
teleportState();
}
只要無人機處於「停留模式」或「關機狀態」(例如電量耗盡),三道防線同時失效。 這時候它就會一直待在原地——即使那個「原地」是地底 44 格深,即使你重新登入一百次。
這正是為什麼很多人會覺得「我明明開了跟隨,它就是不回來」——一旦沒電關機,跟隨設定就不再有意義了。
而 jds unstuck 之所以能救,是因為它跳過了所有條件檢查,直接強制執行傳送:
public void DebugTeleportUnstuck()
{
teleportState(); // 不檢查模式、不檢查關機,直接傳送
}
怎麼預防
既然沒有設定可以調,只能從使用習慣下手:
| 做法 | 為什麼 |
|---|---|
| 注意電量,別讓它關機 | 關機 = 三道自動跟隨防線同時失效,這是最常見的走失主因 |
| 平常保持「跟隨」模式 | 停留模式的無人機不會跟著傳送,你一傳送就等於把它丟在原地 |
| 在礦坑、地下室、深洞附近多留意 | 我們伺服器兩台走失的無人機掉在同一個地點,該處應該是地形有破洞 |
| 傳送前瞄一眼它在不在 | 三道防線只在「跟隨中」才有效,確認它跟著你再傳送最保險 |
💡 傳送有 5 秒冷卻:連續呼叫 jds unstuck 不會更快,指令送出後等一下就好。
救不回來的情況
有一種狀況這個指令救不了:無主無人機。
jds unstuck 的傳送目標是「這台無人機記錄的主人」的位置:
Vector3 chestPosition = Owner.getChestPosition(); // 傳送到主人胸口位置
如果一台無人機因故失去主人紀錄(系統內部顯示 ownerId = -1),它就沒有傳送目標了,任何人打指令都救不回它——它會永遠停在原地。
⚠️ 我們伺服器目前就有一台這樣的無主無人機卡在地底。這也是為什麼上面警告絕對不要用 jds unassign——那個指令做的事情正是「把無人機變成無主機」,一旦執行,那台無人機就再也回不來了。
如果你的無人機打了 jds unstuck 完全沒反應,請直接回報管理員,不要自己嘗試其他 jds 指令,我們會從伺服器端查它的實際狀態。