看板 mud_sanc 關於我們 聯絡資訊
※ 引述《justinj (黑旋風)》之銘言: : /*****************************************************************/ : 執行時段錯誤: *Can't load objects when no effective user. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 程式: /adm/simul_efun/find_object_or_load.c(/adm/obj/simul_efun.c):20 : 物件: /adm/obj/simul_efun : /std/user#953868 "cmd_hook" /std/user.c:140 : /cmds/std/_wear "cmd_wear" /cmds/std/_wear.c:66 : /cmds/std/_wear "try_wear_one" /cmds/std/_wear.c:502 : /d/ppl/justinj/wristlet#1984514 "wear_func" /d/ppl/justinj/armor.c:176 : /adm/obj/simul_efun "find_object_or_load" : /adm/simul_efun/find_object_or_load.c(/adm/obj/simul_efun.c):20 : /*****************************************************************/ : 這個是我在寫耐久度時出現的問題 : 我是設定當裝備穿上時會去某個物件(裝備管理房)登記(register) ^^^^^^^^^^^^^^^^^^^^^^^^ : 這樣就會啟動一段時間就減少 : 但如果某物件(裝備管理房)還未生成時才會發生的問題... 你可以記一下,通常會發生這問題,有可能是你的裝備管理房沒有 inherit DAEMON,你可以檢查一下。物件沒有 inherit 任何東西時 你可以想成它將因此無載體,無載體的物件在你最初 update 時不 會有問題,但是過一段時間它被從記憶體清除後就會有問題。 (像我有段時間比較懶,有些東西直接 inherit ROOM,這也可以) Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.157.53 ※ 文章網址: http://www.ptt.cc/bbs/mud_sanc/M.1406619871.A.0A4.html
justinj :裝備管理房有inherit ROOM;.. 07/29 16:08
justinj :發生的方法是我寫在wear_func...XXX->register().. 07/29 16:09
if(data["Duration_Max"]) { set("wear_func_time",time()+180);//穿3分鐘 find_object_or_load(EQ_CONTROL); EQ_CONTROL->eq_register(this_object()); } 不太建議這樣寫。 int wear_func() { object ob; . . if(data["Duration_Max"]) { set("wear_func_time",time()+180);//穿3分鐘 if(!catch(ob=find_object_or_load(EQ_CONTROL))) ob->eq_register(this_object()); } 另外 mixed EQS = ({}); void eq_register(object ob)//裝備登入 { set_heart_beat(1); EQS += ({ob}); } 這個可能會無效,至少在 tmi2_v3 是無效的,因為 mixed EQS=({}) 這並不是有效的初始化動作,一般是這樣子做初始化你可參考 mixed EQS; void create() { ::create(); seteuid(getuid(this_object())); if(!EQS) EQS=({}); } 你可以想成所有有宣告 create 的函數再被載入時一定會呼叫,所 以將初始化的段落寫在 create 內就變成一種很自然的想法。 ※ 編輯: laechan (210.61.157.53), 07/29/2014 16:30:48
justinj :耐久度系統失效,請通知WIZ! 07/30 09:49
justinj :一樣...連載入都不行..只是變成可以往下跑而已.. 07/30 09:52
laechan :喔我想起一件事,我很多東西都放.../open :p 07/30 10:45
justinj :我還以為那邊只有寫入有問題才放那而已.. 07/30 11:05
justinj :移過去也一樣... 07/30 11:24
laechan :你可以試試把部份放 open 看看或許會成功 07/30 11:25
laechan :先試試就好,理論上在/d也應該能成功的,不成功應該是 07/30 11:25
laechan :有別的原因在 07/30 11:25
justinj :試過情況如下..裝備上不能load_obj..房間可以... 07/30 11:42
justinj :裝備移到/open...還沒試過..不過管理房移過去不行 07/30 11:43
justinj :不行...那只剩房間跟裝備的差別... 07/30 11:45
justinj :seteuid(getuid(this_object())); 07/30 11:50
justinj :房間有這個..裝備沒有..所以裝備加那個就可以叫了 07/30 11:51
laechan :唔原來你裝備沒加這個, 那通常是不行的 07/30 13:41
justinj :剛剛去看一下..原來norr的範例本來就沒有..--\\\ 07/30 14:08
justinj :印象中只有怪物有..其它都是預設(寫在最初檔裡) 07/30 14:09
laechan :加那東西主要是給有想做特殊用途的物件用的 07/30 14:41
laechan :一般物件(比方像是簡單的房間)沒有加也是ok的 07/30 14:42
laechan :像指令是因為寫在 user.c 的函數內去呼叫的所以大部 07/30 14:42
laechan :份指令才可以只需 inherit DAEMON 及 int cmd_xxxxxx 07/30 14:42
justinj :soga~~ 07/30 15:28