作者laechan (小太保)
看板mud_sanc
标题[闲聊] 系统备份完毕 & debug.log
时间Mon Dec 7 09:45:51 2009
早上 09:00am 备份完毕。
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
' start_dam' in '/d/orcgod/room/tiger' ('/d/orcgod/room/tiger') /d/orcgod/r
oom/tiger1.c:41
arguments were (0)
locals were: 0
' error_handler' in ' adm/obj/master.c' (' adm/obj/master') /adm/obj/ma
ster.c:625
arguments were (([ /* sizeof() == 6 */
"error" : "*Bad argument 1 to environment()
Expected: object Got: 0.
",
.
.
.
int start_dam1(object me)
{
write(HIW+"你突然感到昏眩 ,这里的空气好像很稀薄!!\n"+NOR);
call_out("start_dam",60,me);
}
int 函数宣告时最好 return 数值回去。(上述情况 return 1 即可)
另外上面会出问题的唯一可能就是 「me」 不见了,再不然就是变成
了别的东西。
int init()
{
add_action("move_stone","push");
this_player()->set_temp("noo2",1);
if(this_player()->query_temp("noo2"))
call_out("start_dam1",10,this_player());
}
这里有件事要跟各位说明的,就是「this_player()」跟「这个玩家
」意义是不相等的。
以上面为例 this_player() 指的是触发 init() 函数的本体物件,
因为 init() 是写在 tiger1.c 这个房间里头的,这时候可触发该
房间的物件就有可能有底下几个..
一、进入该房间的玩家
二、进入该房间的怪物(含 ride off 之後 horse 移动到房间)
三、进入该房间的其它物件(含 drop 的东西)
所以一般我不建议使用上面的 call_out 判断式,这会造成一直去
call_out 的情况存在。
再来就是 start_dam1 必须判断 「me」 是否还存在。
上面的问题我均有做了初步修改。原修改者(torr?)如果有看到,就
试着修改其它的房间看看。我的立场是如果一项设定有可能拖累系统
负担时...
一、先看看有没有方便的改法可以保留原设定者原意
二、如果没有,就以取消该拖累负担写法为主要修改方式
(我这次主要 /* */ init() 函数里面 noo2 的相关判断)
三、原修改者可另外新增新的写法
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.161.177