[閒聊] 今天 crash 的原因

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間12年前 (2013/09/04 14:44), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
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
之後又 shutdown 一次, 補充 book 之前沒設到的部份
09/04 15:55, 1F
文章代碼(AID): #1I9jRIbM (mud_sanc)
文章代碼(AID): #1I9jRIbM (mud_sanc)