[wizs] set_npcs 或 set("npcs",..

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間13年前 (2013/02/05 09:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我最近打算新增這個東西到 room.c 裡頭,做法大概是.. set("npcs",([ "lord":(["id":({"light lord","lord"}),"short":"光之部落村長(light lord)", "long":@LONG 他是光之部落的村長 bla bla.. LONG , "quest_num":"l009",...]), ])); 那理論上因為 npcs 的東西不一定要被存進房間的 data 裡頭,所以使用 set_npcs 也是可以的。 那重點就在於呼叫格式,一般處理 mapping 資料有另一 種變形做法就是用 mixed 的方式如.. set_npcs(({ "id",({"light lord","lord"}),"short","光之部落村長(light lord)", "long","他是光之部落的村長.\n","quest_num","l009",..})); 然後房間有幾隻 npc 就呼叫幾次,一般來說房間大概一隻 npc 是最常見的(所以這樣寫可以,若真的有需要改成內迴 亦可). 可以用 (if(arrayp(npcs[0]))) 來判斷內包幾層。 一般我傾向上面的寫法,各位的意見如何?這個最快今天 補進去,另外為了避免問題,set_npcs 會內建底下的東西 objs=(mapping)query("objects"); if(!objs) objs=([]); objs[NPC_FILES]=1; set_npcs 並規定要寫在 set("objects",.. 之下。使用上 面寫法的好處就是可避免 npc 出現兩隻。 (因為它在 objects 裡有登錄資料) (另外,這裡就產生了 ob->query 的有趣問題) Laechan 底下是設定及執行結果.. set_npcs(({"level",100,"race","human","id",({"servant"}), "short","神之僕人(servant)", "long","測試用的npc.\n",})); 以我寫在 /std/ob/room.c 的寫法的話,set_npcs 的位置 不管在哪就沒什麼差異。 > l 神之國度 這裡是神居住的地方,在這裡遍佈著許多美麗的花園,裡頭 開滿了漂亮的花,還有幾隻蝴蝶在花叢裡飛舞著。中間有一條小 河流,潺潺的流水聲使你忘卻了心頭的煩悶!另外,還有幾位天 神正在坐在一旁的石頭上聊著天! 明顯出口有: 無 Lv100.神之僕人(servant) > l servant 測試用的npc. 神之僕人(servant)的種族是人類,目前狀況:已經奄奄一息,看來快去見死神了!! 身上似乎沒有東西唷! > da here npc : 道具(servant /std/new_ob/npc) Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: laechan 來自: 122.117.106.224 (02/05 10:38)

02/05 13:04, , 1F
加油
02/05 13:04, 1F
文章代碼(AID): #1H464j_C (mud_sanc)
文章代碼(AID): #1H464j_C (mud_sanc)