作者laechan (小太保)
看板mud_sanc
标题[wizs] set_npcs 或 set("npcs",..
时间Tue Feb 5 09:32:26 2013
我最近打算新增这个东西到 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)
1F:推 luna730715 :加油 02/05 13:04