Re: [wizs] debug.log 修正紀錄

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間17年前 (2008/11/03 15:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
951 debug.log 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 ' init2' in '/d/ppl/dragondoll/he' ('/d/ppl/dragondoll/he') /d/ppl/dragondoll/helldeath/room/t-c0.c:34 arguments were () ' error_handler' in ' adm/obj/master.c' (' adm/obj/master') /adm/obj/master.c:625 arguments were (([ /* sizeof() == 6 */ "program" : "d/ppl/dragondoll/helldeath/room/t-c0.c", "line" : 34, "error" : "*Bad argument 1 to call_other() Expected: string or array or object Got: 0. ", "file" : "d/ppl/dragondoll/helldeath/room/t-c0.c", "trace" : ({ /* sizeof() == 1 */ ([ /* sizeof() == 6 */ "arguments" : ({ }), "program" : "d/ppl/dragondoll/helldeath/room/t-c0.c", "line" : 34, "file" : "d/ppl/dragondoll/helldeath/room/t-c0.c", "object" : /d/ppl/dragondoll/helldeath/room/t-c0, "function" : "init2", ]) }), "object" : /d/ppl/dragondoll/helldeath/room/t-c0, ]),0) locals were: "執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: d/ppl/dragondoll/helldeath/room/t-c0.c:34 物件: /d/ppl/dragondoll/helldeath/room/t-c0 /d/ppl/dragondoll/helldeath/room/t-c0 "init2" d/ppl/dragondoll/helldeath/room/t-c0.c:34 void init2() { { write("因為你闖進了不知道幹什麼用的小房間所以你也不知道為什麼就死掉了\n" ); this_player()->die(); } } 修改為 void init2() { object ppl=this_player(); if(ppl && userp(ppl)) { write("因為你闖進了不知道幹什麼用的小房間所以你也不知道為什麼就死掉了\n" ); ppl->die(); } } 原因: 該房間有設定怪物重生,怪物重生時會被 init2 函數判斷為 this_player() 執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: d/slash/burn.c:18 物件: /d/slash/burn#652564 /d/slash/burn#652564 "diedie" d/slash/burn.c:18 int diedie() { int dam,num,member; object ppl = query("target"); num = query("poison/time"); if(ppl->query("member")) member = ppl->query("member"); else member = 1; 修改為 int diedie() { int dam,num,member; object ppl = (object)query("target"); if(!ppl) { remove(); return 1; } num = query("poison/time"); if(ppl->query("member")) member = ppl->query("member"); else member = 1; 原因: 必須先判斷 ppl 是否存在, 才能做後續的 ppl->query() 執行時段錯誤: *Bad argument 1 to call_other() Expected: string or array or object Got: 0. 程式: d/ppl/wide/virtue/room/149.c:100 物件: /d/ppl/wide/virtue/room/149 /d/ppl/wide/virtue/room/149 "beachscape" d/ppl/wide/virtue/room/149.c:100 int beachscape() { mixed usr=all_inventory(environment(this_player())); object ppl; int r; r=random(2); switch(r) { case 1: foreach(ppl in usr) . . break; default: . . ppl->delete_temp("block_command_msg"); break; 修改為 int beachscape() { object ppl=this_player(); mixed usr; int r; if(!ppl || !environment(ppl)) return 1; usr=all_inventory(environment(ppl)); 原因: case 1 時沒問題, default 時 ppl = 空的東西 Heart beat in /std/user#4056 turned off. 執行時段錯誤: *Bad argument 1 to userp() Expected: object Got: 0. 程式: d/spell/sanctuary.c:96 物件: /d/spell/sanctuary /std/user#4056 "heart_beat" std/user.c:851 /d/spell/sanctuary "start_effect" d/spell/sanctuary.c:96 for(i=0;i<j;i++) { party_ob=party[i]; if(!userp(party_ob)) continue; 修改為 for(i=0;i<j;i++) { if(!party_ob=party[i]) continue; if(!userp(party_ob)) continue; 原因 上述的判斷方式比較嚴謹。 執行時段錯誤: *Bad argument 1 to userp() Expected: object Got: 0. 程式: cmds/std/_holybell.c:70 物件: /cmds/std/_holybell /std/user#53116 "cmd_hook" std/user.c:266 /cmds/std/_holybell "cmd_holybell" cmds/std/_holybell.c:70 if(ob->query("block_command")>0 && ob->query_attackers() && !userp(ob->query_current_attacker())) { ob->delete("block_command"); ob->delete("block_command_msg"); tell_object(ob,HIM"你的定身狀態被聖潔鈴音解除了!!\n"NOR); } 修改為... if(ob->query("block_command")>0) { if(env=ob->query_current_attacker() && !userp(env)) { ob->delete("block_command"); ob->delete("block_command_msg"); tell_object(ob,HIM"你的定身狀態被聖潔鈴音解除了!!\n"NOR); } } 原因: 上述的判斷較完整。 部份 /u 下的東西就先略過,再觀察一陣子。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.231.81
文章代碼(AID): #193gzWCJ (mud_sanc)
文章代碼(AID): #193gzWCJ (mud_sanc)