作者laechan (小太保)
看板mud_sanc
標題[wizs] debug.log
時間Wed May 18 14:23:17 2011
執行時段錯誤: *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
推 ma713 :小寶 我去翻了一下以前的文章 幾個職業都有預備更改 05/18 14:32
→ ma713 :項目 是要等騎士改完再開始動工嗎? 05/18 14:32
→ ma713 :然後騎士的戰技指導有打算重製或是增加新功能嗎? 05/18 14:34
→ ma713 :現在的戰技指導感覺只是個+屬性sk = = 05/18 14:34
→ ma713 :而且打help skill tactic guide 是空白的._. 05/18 14:35
→ Kalarotia :看那篇文章的話戰技指導是要拔掉吧...會少99INT(?) 05/18 14:38
→ laechan :新增的東西屬性設定也差不多 05/18 14:41
推 justinj :戰技指導,不是要換招了!?所以不要再叫它出來了.amem 05/18 18:41
→ laechan :欸,它是很重要的規劃捏 05/18 19:40
推 ma713 :推小寶 超重要的捏.. 05/18 19:44
推 justinj :laechan可以拿封魔的ghost,devil海船的siren來測試 05/18 20:25
→ justinj :沒問題大概就沒了...(這是我覺得會出feather bug怪) 05/18 20:26
→ laechan :那些是什麼? (裝死中) 05/18 21:29
推 justinj :會出bug的怪.如果feather修完打沒問題就沒問題.avert 05/18 21:45