[閒聊] 系統備份完畢 & debug.log

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間16年前 (2009/12/07 09:45), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
早上 09:00am 備份完畢。 debug.log 部份.. Error in error handler: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. program: /adm/obj/master.c, object: /adm/obj/master, file: /adm/obj/master.c:625 ' start_dam' in '/d/orcgod/room/tiger' ('/d/orcgod/room/tiger') /d/orcgod/r oom/tiger1.c:41 arguments were (0) locals were: 0 ' error_handler' in ' adm/obj/master.c' (' adm/obj/master') /adm/obj/ma ster.c:625 arguments were (([ /* sizeof() == 6 */ "error" : "*Bad argument 1 to environment() Expected: object Got: 0. ", . . . int start_dam1(object me) { write(HIW+"你突然感到昏眩 ,這裡的空氣好像很稀薄!!\n"+NOR); call_out("start_dam",60,me); } int 函數宣告時最好 return 數值回去。(上述情況 return 1 即可) 另外上面會出問題的唯一可能就是 「me」 不見了,再不然就是變成 了別的東西。 int init() { add_action("move_stone","push"); this_player()->set_temp("noo2",1); if(this_player()->query_temp("noo2")) call_out("start_dam1",10,this_player()); } 這裡有件事要跟各位說明的,就是「this_player()」跟「這個玩家 」意義是不相等的。 以上面為例 this_player() 指的是觸發 init() 函數的本體物件, 因為 init() 是寫在 tiger1.c 這個房間裡頭的,這時候可觸發該 房間的物件就有可能有底下幾個.. 一、進入該房間的玩家 二、進入該房間的怪物(含 ride off 之後 horse 移動到房間) 三、進入該房間的其它物件(含 drop 的東西) 所以一般我不建議使用上面的 call_out 判斷式,這會造成一直去 call_out 的情況存在。 再來就是 start_dam1 必須判斷 「me」 是否還存在。 上面的問題我均有做了初步修改。原修改者(torr?)如果有看到,就 試著修改其它的房間看看。我的立場是如果一項設定有可能拖累系統 負擔時... 一、先看看有沒有方便的改法可以保留原設定者原意 二、如果沒有,就以取消該拖累負擔寫法為主要修改方式 (我這次主要 /* */ init() 函數裡面 noo2 的相關判斷) 三、原修改者可另外新增新的寫法 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.225.161.177
文章代碼(AID): #1B75vJ5T (mud_sanc)
文章代碼(AID): #1B75vJ5T (mud_sanc)