[閒聊] 系統備份完畢 & debug.log
早上 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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
51
111
47
79
6
15