已修復 sadegg 2026-07-29 15:14 修復於 2026-07-29 18:52

Instance Dungeon 房間 GMCP Room.Info 缺少 area、zone 與 room_id 資訊

目前發現 Instance Dungeon(副本)內的房間在 gmcp.Room.Info 回傳資料中,area、zone、room_id 等欄位皆為空值,導致腳本無法透過區域資訊辨識所在副本或進行地圖管理。 副本房間範例 gmcp.Room.Info { area = "", exits = { north = 611473, south = 611454 }, name = "寒冰甬道", num = 611465, room_id = "", subarea = "", zone = "" } gmcp.Room.Info { area = "", exits = { north = 611584, south = 611573 }, name = "熔火深壑", num = 611574, room_id = "", subarea = "", zone = "" } 一般地圖房間範例(正常) gmcp.Room.Info { area = "jingbei_harbor", exits = { south = 175466 }, name = "裂地龍穴", num = 175471, room_id = "JB58", subarea = "jingbei_harbor", zone = "jingbei_harbor" } 預期結果 副本房間應與一般地圖房間一致,提供: area zone subarea room_id(若適用) 至少應提供可唯一識別副本區域的 area 或 zone 資訊,以方便: 自動地圖繪製 腳本導航 區域判斷 房間資料管理 實際結果 Instance Dungeon 房間回傳: area = "" zone = "" subarea = "" room_id = "" 導致無法判斷目前所在副本及其所屬區域。 感謝協助確認與修正。

回覆(2)
kangchen 2026-07-29 17:23

副本 is random generated. There are more items randomized.

系統AI幫手 2026-07-29 18:52

已處理,能補的都補上了;有一項不能補,說明如下。 站長說的沒錯——副本房間是每一趟隨機生成、走完就整批刪除的,所以不是所有欄位都照補。分開講: 【已補上,即刻生效(重連即可)】 area / zone 副本種類代號,例如 frost_altar。這個值跨場次固定, 正是你要的「辨識所在副本」。 subarea 本房性質:entrance 前廳/combat 戰鬥房/trap 機關房/boss 關底。 腳本靠這個就知道到關底了沒。 instance 本趟副本的實例編號(新欄位)。非空字串 = 這是臨時房間。 instance_name 副本中文名,例如「冰雪祭壇」(新欄位)。 depth / 本趟第幾間 / 共幾間,例如 6 / 10(新欄位)。 depth_total 實測(冰雪祭壇): gmcp.Room.Info = { area = "frost_altar", zone = "frost_altar", subarea = "combat", instance = "dungeon_inst_9cb0d3b9", instance_name = "冰雪祭壇", depth = 6, depth_total = 10, name = "凍湖殘橋", num = 616077, room_id = "", exits = { north = 616081, south = 616072 }, } 一般地圖房間這四個新欄位固定是 "" / "" / 0 / 0,欄位一定存在,你可以無條件讀取、不必判斷有沒有。 【不能補:room_id 維持空字串】 room_id 的合約是「跨伺服器重建恆定、區內唯一」——它的用途是當你自己資料表的主鍵。副本房每一趟都是新生成的物件,本質上不存在這種索引;硬塞一個看起來像 ID 的值反而更糟,因為那個值下一趟會指到完全不同的房間,你的表就髒了。 要判斷進度請用 depth / depth_total;要判斷副本種類請用 area。 【順帶修掉一個你還沒遇到、但正在發生的問題】 查這題的時候發現:地圖套件在 room_id 為空時會退回用 "num#<dbref>" 當房間鍵——也就是說**副本房間一直都被畫進你的地圖**,每跑一趟副本就永久多出十幾間再也回不去的鬼房間,全堆在無名區。如果我只補 area 而不動套件,這件事只會變得更明顯(會多出一個 frost_altar 區,裡面塞滿死房間)。 所以地圖套件同步升到 v1.1:看到 instance 非空就整間略過,不建房、不連出口,進出副本各提示一行,fmap 也會多一列顯示略過次數。 下載頁:https://mud.kangatnewyork.com/mudlet/ 建議你重新下載安裝一次。已經被畫進去的鬼房間可以用 fmap reset 清掉重建(走過的房會重新長回來)。 【文件】 /mudlet/ 頁的 GMCP 速查表新增了「副本房間」一節,把上面這些欄位與注意事項都寫進去了。 謝謝你這則回報——它讓我們順手抓到那個地圖污染的舊病。

請先登入才能回覆。