作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 直觉化的虚拟物品系统
时间Wed Sep 24 10:47:36 2008
:::::::::::::: /u/l/laechan/vobjs.c ::::::::::::::
// Laechan@Sanc in 2008/09/24
// 虚拟物品系统之各 wiz 自建资料库
inherit ROOM;
// 统一定为 vobjs_data
// 所有虚拟物品必须依 key 的开头字母做排序以避免重覆
// name 与 file 两个子 key 必备, mark 非必要
// name 尽量等於实体物件名(无色码与空白)
// file 指向实体物件档名(预设 .c 档)
// mark 是用来做特殊判断用(也可当成 wiz 自行 remark 用), 可有可无
mapping vobjs_data=(["_maker":"laechan", // 谁建置这个虚拟物品系统
"tnt" : ([ "name" : "黄色炸药TNT",
"file" : "/u/l/laechan/special/obj/tnt",
"mark" : "在某地 ignite 炸药时会判断到的东西",]),
"viagra" : ([ "name" : "威而刚",
"file" : "/u/l/laechan/special/obj/viagra",
"mark" : "解任务用",]),
]);
// 统一的函数名 set_vobjs() 一定要有
void set_vobjs()
{
// 避免产生 bug
if(file_exists("/adm/daemons/vobjs_d.c"))
"/adm/daemons/vobjs_d"->set_vobjs(vobjs_data);
}
// 一定要有
void create()
{
::create();
seteuid(getuid(this_object()));
set("light",1);
set("short","虚拟物品资料房");
set_vobjs(); // 一定要有, 保证 update 房间就去 set
}
// 统一的函数名 vobjs_data()
mapping vobjs_data()
{
return vobjs_data;
}
> call vobjs;vobjs_data
房间(/u/l/laechan/vobjs)-> vobjs_data() = ([ "viagra" :
([ "name" : "威而刚", "mark" : "解任务用", "file" :
"/u/l/laechan/special/obj/viagra" ]), "_maker" : "laechan", "tnt" : ([
"name" : "黄色炸药TNT", "mark" : "在某地 ignite 炸药时会判断到的东西",
"file" : "/u/l/laechan/special/obj/tnt" ]) ])
补充说明一下, key name 最好都定为英文名, 因为中文字会有
乱码问题, 英文 key 比较不会出问题.
各 wizs 可开始实作, 并可贴出自己的 vobjs 雏形物件档内容
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.230.61
1F:推 HighElf :/u/h/highelf/vobj.c 12/05 19:57