Re: [wizs] debug.log 修正紀錄
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2008/11/03 15:59)推噓0(0推 0噓 0→)留言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
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
35
58
120
255