Re: [問題] 物件問題

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間10年前 (2014/07/29 15:44), 10年前編輯推噓9(9014)
留言23則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/29 16:08, , 1F
裝備管理房有inherit ROOM;..
07/29 16:08, 1F

07/29 16:09, , 2F
發生的方法是我寫在wear_func...XXX->register()..
07/29 16:09, 2F
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

07/30 09:49, , 3F
耐久度系統失效,請通知WIZ!
07/30 09:49, 3F

07/30 09:52, , 4F
一樣...連載入都不行..只是變成可以往下跑而已..
07/30 09:52, 4F

07/30 10:45, , 5F
喔我想起一件事,我很多東西都放.../open :p
07/30 10:45, 5F

07/30 11:05, , 6F
我還以為那邊只有寫入有問題才放那而已..
07/30 11:05, 6F

07/30 11:24, , 7F
移過去也一樣...
07/30 11:24, 7F

07/30 11:25, , 8F
你可以試試把部份放 open 看看或許會成功
07/30 11:25, 8F

07/30 11:25, , 9F
先試試就好,理論上在/d也應該能成功的,不成功應該是
07/30 11:25, 9F

07/30 11:25, , 10F
有別的原因在
07/30 11:25, 10F

07/30 11:42, , 11F
試過情況如下..裝備上不能load_obj..房間可以...
07/30 11:42, 11F

07/30 11:43, , 12F
裝備移到/open...還沒試過..不過管理房移過去不行
07/30 11:43, 12F

07/30 11:45, , 13F
不行...那只剩房間跟裝備的差別...
07/30 11:45, 13F

07/30 11:50, , 14F
seteuid(getuid(this_object()));
07/30 11:50, 14F

07/30 11:51, , 15F
房間有這個..裝備沒有..所以裝備加那個就可以叫了
07/30 11:51, 15F

07/30 13:41, , 16F
唔原來你裝備沒加這個, 那通常是不行的
07/30 13:41, 16F

07/30 14:08, , 17F
剛剛去看一下..原來norr的範例本來就沒有..--\\\
07/30 14:08, 17F

07/30 14:09, , 18F
印象中只有怪物有..其它都是預設(寫在最初檔裡)
07/30 14:09, 18F

07/30 14:41, , 19F
加那東西主要是給有想做特殊用途的物件用的
07/30 14:41, 19F

07/30 14:42, , 20F
一般物件(比方像是簡單的房間)沒有加也是ok的
07/30 14:42, 20F

07/30 14:42, , 21F
像指令是因為寫在 user.c 的函數內去呼叫的所以大部
07/30 14:42, 21F

07/30 14:42, , 22F
份指令才可以只需 inherit DAEMON 及 int cmd_xxxxxx
07/30 14:42, 22F

07/30 15:28, , 23F
soga~~
07/30 15:28, 23F
文章代碼(AID): #1Jrr3V2a (mud_sanc)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1Jrr3V2a (mud_sanc)