作者laechan (小太保)
看板mud_sanc
标题[系统] 虚拟物品系统补完
时间Thu Jan 15 23:47:27 2009
主档:/adm/daemons/vobjs_d.c
/include/vobjs.h
这两个档都已经 cp 给 highelf,档案内容很单纯,highelf
拥有的权限是..
一、其它 wiz 自行撰写的 vobj.c,highelf 有权决定是否
写入 vobjs.h 中。
二、highelf 可自行新增 vobjs_d.c 的函数(但不能更改原
先已存在的函数),以方便管理。
(有需要的话我也可以去新增)
三、vobjs 另有一个主档放在 /adm/simul_efun 下,有几个
关键函数..
// 设定 n 个 vobjs 给 user
void set_user_vobjs(object user,string vobjs_key,int n)
这是直接为 user 设定 vobjs_key 这个虚拟物品 n 个
* 这个还要加判断,读取 vobjs_key 这个物品的最大值设定
(一样 wiz 的 vobj.c 中设定再由 vobjs_d.c 读取)
===============================================================
// 增加(或减少) n 个 vobjs 给 user
void add_user_vobjs(object user,string vobjs_key,int n)
跟上面一样要加同样的判断。
===============================================================
// 移除玩家身上某种 vobjs
void delete_user_vobjs(object user,string vobjs_key)
移除的判断很少,不过我要参考其它有 delete_xxx 的系统。
===============================================================
// 读取 vobjs_data 的内容
varargs mixed query_vobjs_data(string vobjs_key,string kind)
这是给特殊指令用的,使用 varargs 宣告语法
query_vobjs_data 不接任何东西,就读取所有的 vobjs_data (mapping)
query_vobjs_data(vobjs_key) 不接 kind 就只读取 vobjs_key 这个东西
的 data (mapping)
query_vobjs_data(vobjs_key,kind) 有接 kind 就读取资料
mapping vobjs_data=(["_maker":"highelf",
"highelf_happyearth_breakfast":([
"name" : "羿云特制早餐\",
"file" : "/d/ppl/highelf/happyearth/obj/breakfast",
"mark" : "吃了可以补血一万hp的早餐\",]),
以上面来说..
query_vobjs_data("highelf_happyearth_breakfast") 就是读
(["name" : "羿云特制早餐\",
"file" : "/d/ppl/highelf/happyearth/obj/breakfast",
"mark" : "吃了可以补血一万hp的早餐\",]), ])
query_vobjs_data("highelf_happyearth_breakfast","name") 就是读
"羿云特制早餐\"
(另外 highelf 你应该是设错了,自订的 vobj.c 只要设 happyearth_breakfast
就可以了)
目前则使用玩家身上的 temp_data["vobjs"] 栏位当做暂存用。
(要永久使用这个栏位也可以,因为原先的设定就是玩家 quit 就
清除玩家所打到的 vobjs,以後才可能保留)
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.105.143
1F:推 HighElf :备忘:第五个参数cmds 01/16 00:27