作者laechan (小太保)
看板mud_sanc
标题[wizs] 关於虚拟物品
时间Mon Nov 5 21:58:49 2012
首先,玩家可带在身上的虚拟物品种类是有限制的。
那麽多的物品要存去哪里?我打算在罗德斯建造一座「仓库」,
玩家可进出仓库去存放这些多出来的东西。
========================================================
接着是物品的基本分类,例如p001是生命药水,p002是OOXX药水
,....
则资料结构我打算这样子订
mapping obj_data=([
"p":([
"p001":({"生命药水",..}),
.
.
]),
]);
考量到物品可能会「非常多」,可能也会应用家族的分散式资料
储存方式。则以底下为例..
keys_vobjs=ppl->query_vobjs();
foreach(tmp in keys_vobjs)
str+=sprintf("-12s %2d",
vobjs_name(tmp_,keys_objs[tmp]));
由这里可以看出 vobjs_name 是关键,函数可能是这样写..
string vobjs_name(string tmp)
{
return obj_data[tmp[0..0]][tmp];
}
========================================================
这时有两种型式
一、仿 chinesed.c,再定义相关的 simul_efun 来跑
二、仿 party_d.c,资料都在 party_d.c 里头,函数也是
我可能会采第二种型式。
至於玩家←→虚拟物品系统之间的沟通,则写在玩家 user.c
的相关档案里头,即建立相关函数存取玩家本身的虚拟物品资
料。
========================================================
最後是 mob_drop,我将全面修改这个东西。
首先,物品资料库只有唯一一个,所以怪物会掉的东西,都将
统一集中在某个地方设定。
问题:那我怎麽设计该怪物会掉什麽物品?
很简单,就是把传统的 mob_drop.c 的设计修改一下即可,例
如..
set("mob_drop",({"L/001"}));
改成
set("mob_drop",({"虚拟物品编号"}));
然後仿 chinese 指令,让 wiz 可以自行新增自己的虚拟物品
,随时可新增、删除、修改。
这样在 mob_d.c 的 die 函数里面就可以这样做..
if(mob->query("mob_drop"))
exec_mob_drop(mob);
现在的重点是,必须模拟当玩家身上携带 100 种物品时究竟显
示出来的情况是如何,这个必须先做。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.141.55.137
1F:推 justinj :显示:空间不足!!无法再捡东西!! 11/06 08:38