[wizs] debug.log
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間14年前 (2011/05/18 14:23)推噓5(5推 0噓 9→)留言14則, 4人參與討論串8/17 (看更多)
執行時段錯誤: *Value being indexed is zero.
程式: adm/daemons/king_d.c:196
物件: /adm/daemons/king_d
/adm/daemons/logind "get_password" adm/daemons/logind.c:830
/adm/daemons/logind "login_new_copy" adm/daemons/logind.c:840
/adm/daemons/logind "enter_world" adm/daemons/logind.c:910
/std/user#17709 "setup" std/user.c:108
/adm/daemons/king_d "check_rank_or_order" adm/daemons/king_d.c:196
196: if( !list[(string)ppl->query("name")] ) {
一般來說這裡會出錯,代表 ppl->query("name") 出來的東西
是有問題的。沒事不要去動玩家的 name。
Expected: string or array or object Got: 0.
程式: u/l/laechan/special/mob/fingerwind1.c:92
物件: 0
/std/user#36664 "heart_beat" std/user.c:932
/d/spell/thunder "start_effect" d/spell/thunder.c:161
/std/user#36664 "shut" std/user/attack.c:159
/adm/daemons/shut_d "shut_tar" adm/daemons/shut_d.c:308
/adm/obj/simul_efun "show" adm/simul_efun/show.c(adm/obj/simul_efun.c):235
0 "receive_damage" std/mob/attack.c:30
0 "die" u/l/laechan/special/mob/fingerwind1.c:92
從 show 去呼叫 receive_damage 時物件便已消失。
在 /std/mob/attack.c 的 receive_damage 裡原本就已經
加設判斷,防止這樣的情況產生..
if(me)
me->die();
但顯然的這一行無效。已改成 if(me && environment(me))
先試試看再說。
這個也是最近 fingerwind 出現的問題之一。
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
' heart_beat' in ' /std/monster.c' ('/d/ppl/quest/evil/mo') /std/monster.c:137
arguments were ()
' run_away' in ' /std/mob/living.c' ('/d/ppl/quest/evil/mo') /std/mob/living.c:124
arguments were ()
' run_away' in '/adm/daemons/mob_d.c' (' /adm/daemons/mob_d') /adm/daemons/mob_d.c:854
arguments were (0)
locals were: "west",({ /* sizeof() == 2 */
"east",
"west"
}),149294336
' force_me' in ' /std/mob/living.c' ('/d/ppl/quest/evil/mo') /std/mob/living.c:18
arguments were (173801124)
' cmd_hook' in ' /std/monster.c' ('/d/ppl/quest/evil/mo') /std/monster.c:34
arguments were ("west")
locals were: "/cmds/std/_go","go",0
' cmd_go' in ' /cmds/std/_go.c' (' /cmds/std/_go') /cmds/std/_go.c:146
arguments were ("west",0)
locals were: /d/map/lodoos/room/roadw2,178937088,0,0,0,"/adm/daemons/eq/sp_room",0
' error_handler' in ' adm/obj/master.c' (' adm/obj/master') /adm/obj/master.c:625
arguments were (([ /* sizeof() == 6 */
"object" : /cmds/std/_go,
"error" : "*Bad argument 1 to call_other()
Expected: string or array or object Got: 0.
",
"file" : "cmds/std/_go.c",
"trace" : ({ /* sizeof() == 6 */
([ /* sizeof() == 6 */
"object" : 0,
"function" : "heart_beat",
"file" : "std/monster.c",
"arguments" : ({ }),
"program" : "std/monster.c",
"line" : 137,
]),
([ /* sizeof() == 6 */
"object" : 0,
"function" : "run_away",
"file" : "std/mob/living.c",
"arguments" : ({ }),
"program" : "std/mob/living.c",
"line" : 124,
]),
([ /* sizeof() == 7 */
"object" : /adm/daemons/mob_d,
"function" : "run_away",
"file" : "adm/daemons/mob_d.c",
"locals" : ({ /* sizeof() == 3 */
"west",
({ /* sizeof() == 2 */
"east",
"west"
}),
149294336
}),
"arguments" : ({ /* sizeof() == 1 */
0
}),
"program" : "adm/daemons/mob_d.c",
"line" : 854,
]),
([ /* sizeof() == 6 */
"object" : 0,
"function" : "force_me",
"file" : "std/mob/living.c",
"arguments" : ({ /* sizeof() == 1 */
173801124
}),
"program" : "std/mob/living.c",
"line" : 18,
]),
([ /* sizeof() == 7 */
"object" : 0,
"function" : "cmd_hook",
"file" : "std/monster.c",
"locals" : ({ /* sizeof() == 3 */
"/cmds/std/_go",
"go",
0
}),
"arguments" : ({ /* sizeof() == 1 */
"west"
}),
"program" : "std/monster.c",
"line" : 34,
]),
([ /* sizeof() == 7 */
"object" : /cmds/std/_go,
"function" : "cmd_go",
"file" : "cmds/std/_go.c",
"locals" : ({ /* sizeof() == 7 */
/d/map/lodoos/room/roadw2,
178937088,
0,
0,
0,
"/adm/daemons/eq/sp_room",
0
}),
"arguments" : ({ /* sizeof() == 2 */
"west",
0
}),
"program" : "cmds/std/_go.c",
"line" : 146,
])
}),
"program" : "cmds/std/_go.c",
"line" : 146,
]),0)
locals were: "執行時段錯誤: *Bad argument 1 to call_other()
Expected: string or array or object Got: 0.
程式: cmds/std/_go.c:146
物件: /cmds/std/_go
0 "heart_beat" std/monster.c:137
0 "run_away" std/mob/living.c:124
/adm/daemons/mob_d "run_away" adm/daemons/mob_d.c:854
0 "force_me" std/mob/living.c:18
0 "cmd_hook" std/monster.c:34
/cmds/std/_go "cmd_go" cmds/std/_go.c:146
這一長串,是關於怪物的走動設定部份,由上面的 bug msg
可以猜出大概是怪物從 A-->B 的過程中突然消失,造成部份
call process 找不到呼叫主體。
從上可看出怪物本身執行 heart_beat 去呼叫 go 時,本身就
已經消失的情況。
在 _go.c 的第 146 行的前面幾行,有一段令人在意..
if(tmp=env->query("pre_exit_func/"+dir))
if( call_other(env, tmp) )
return 1;
假設一個情況,某房間有定義 pre_exit_func,但是該 return 1
的地方,變成了 return 0,則該 function 會被呼叫,但是卻不
會就在這個地方停止。
這時候就有可能造成因為呼叫了這個 function 導致 "me" 消失
的情況。
那總之我先加設相關判斷,不過在 _go.c 改只是治標不治本的方
法,所以我亦會在 _go.c 裡頭增加一個 log 檔。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 117.19.89.64
推
05/18 14:32, , 1F
05/18 14:32, 1F
→
05/18 14:32, , 2F
05/18 14:32, 2F
→
05/18 14:34, , 3F
05/18 14:34, 3F
→
05/18 14:34, , 4F
05/18 14:34, 4F
→
05/18 14:35, , 5F
05/18 14:35, 5F
→
05/18 14:38, , 6F
05/18 14:38, 6F
→
05/18 14:41, , 7F
05/18 14:41, 7F
推
05/18 18:41, , 8F
05/18 18:41, 8F
→
05/18 19:40, , 9F
05/18 19:40, 9F
推
05/18 19:44, , 10F
05/18 19:44, 10F
推
05/18 20:25, , 11F
05/18 20:25, 11F
→
05/18 20:26, , 12F
05/18 20:26, 12F
→
05/18 21:29, , 13F
05/18 21:29, 13F
推
05/18 21:45, , 14F
05/18 21:45, 14F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
-123
216
26
47