作者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
1F:推 ma713 :小宝 我去翻了一下以前的文章 几个职业都有预备更改 05/18 14:32
2F:→ ma713 :项目 是要等骑士改完再开始动工吗? 05/18 14:32
3F:→ ma713 :然後骑士的战技指导有打算重制或是增加新功能吗? 05/18 14:34
4F:→ ma713 :现在的战技指导感觉只是个+属性sk = = 05/18 14:34
5F:→ ma713 :而且打help skill tactic guide 是空白的._. 05/18 14:35
6F:→ Kalarotia :看那篇文章的话战技指导是要拔掉吧...会少99INT(?) 05/18 14:38
7F:→ laechan :新增的东西属性设定也差不多 05/18 14:41
8F:推 justinj :战技指导,不是要换招了!?所以不要再叫它出来了.amem 05/18 18:41
9F:→ laechan :欸,它是很重要的规划捏 05/18 19:40
10F:推 ma713 :推小宝 超重要的捏.. 05/18 19:44
11F:推 justinj :laechan可以拿封魔的ghost,devil海船的siren来测试 05/18 20:25
12F:→ justinj :没问题大概就没了...(这是我觉得会出feather bug怪) 05/18 20:26
13F:→ laechan :那些是什麽? (装死中) 05/18 21:29
14F:推 justinj :会出bug的怪.如果feather修完打没问题就没问题.avert 05/18 21:45