[閒聊] 今天 crash 的原因
wiz 使用的指令 runmap (跑地圖程式) 寫法不當。
理論上,應該像圖形化介面 ftp 抓目錄的模式,先進到最深
層去抓,再遞迴到要抓的目錄根源,在主大陸跑的情況若執行
地點是「正中間」,則應該要先從最外圍開始跑到最中心,但
目前 runmap 的寫法則是從中央開始往外擴展,原本是可以靠
deep recursion 的機制來防止跑過頭,但光靠這個不夠。
然後理論上是可以寫一些機制來防止跑過頭,lazy,因此暫時
讓這個指令專注在接 xxx.h 的功能上,而不再跑圖。
(以後新型態區域越來越多時也會漸漸不太需要這個)
======================================================
那因為修 bug 後再 shutdown 系統會比較正常,所以就趁這個
機會將置底我提到的那兩個 bug 一起修掉。
/open/cmds/times_check.c
bug 修了,並新增 check_names 函數,後面接 names 或檔名,
它就會回傳有該 names 或檔案的目前設定情況:
> call /open/cmds/times_check;check_names;"/d/aty/bird/room/boat1"
times_check 區:
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "start_plane" }) 128 秒後.
times_check_no_save 區:
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "plane_1_5" }) 98 秒後.
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "plane_1_2" }) 8 秒後.
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "plane_1_3" }) 38 秒後.
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "plane_1_4" }) 68 秒後.
/d/aty/bird/room/boat1 ({ "/d/aty/bird/room/boat1", "plane_1_1" }) -22 秒後.
順便會回傳目前 times_check 的心跳情況,1 就代表心跳正常
目前 times_check 心跳參數: 1.
(若 names 給 "xxx" 就是純看心跳參數)
/open/cmds/vobjs_d.c
主要是之前 vobjs_d->vobjs_data("get_xxx","物品名或編號")
的讀取有問題,趁這次修掉了。
> call /open/cmds/vobjs_d;vobjs_data;"get_carry";"f822"
房間(/open/cmds/vobjs_d)-> vobjs_data( "get_carry",
"f822" ) = 10
> call /open/cmds/vobjs_d;vobjs_data;"get_carry";"[L]"
房間(/open/cmds/vobjs_d)-> vobjs_data( "get_carry",
"[L]" ) = 10
物品共有 mark, name, desc, value, carry, no_sell, no_trade
等參數,均使用 get_xxx 的做法去讀即可(如上面的 get_carry)
而要一次讀多個就用 query_array:
tmps=vobjs_d->vobjs_data("query_array","物品名或編號");
> call /open/cmds/vobjs_d;vobjs_data;"query_array";"f822" <= 給名字亦可
房間(/open/cmds/vobjs_d)-> vobjs_data( "query_array",
"f822" ) = ({ "f822", "[L]", "張", "節慶物", 10, 10,
UNDEFINED, UNDEFINED,"一張畫有全形大寫「L」的字卡。\n" })
隨便拿一個虛擬物品讀 query_array 就會知道各欄位在 tmps 裡
面的位置。要看表象資料就用 ob view 名字or編號 即可。而以上
面 no_sell 是 UNDEFINED 為例
> call /open/cmds/vobjs_d;vobjs_data;"get_no_sell";"f822"
房間(/open/cmds/vobjs_d)-> vobjs_data( "get_no_sell",
"f822" ) = 0
這就是說沒有設定 no_sell 跟設定 no_sell = 0 是一樣的意思。
wiz 們可參考並實際 call 測試。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.157.53
→
09/04 15:55, , 1F
09/04 15:55, 1F
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
26