[wizs] set_npcs 或 set("npcs",..
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間13年前 (2013/02/05 09:32)推噓1(1推 0噓 0→)留言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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
10
16