作者laechan (挥泪斩马云)
看板mud_sanc
标题[wizs] 预计新增 unboxing 指令
时间Sun Nov 17 23:35:33 2024
预计新增该指令。
构想是,当房间存在 unboxing/ppl_name 时,即:
room->set("unboxing/"+ppl_name,n+time());
则该 ppl 在该房间下 look 时,会看到可以 unboxing 的讯息。
n+time() 即该 ppl 可下 unboxing 的时间判断。
指令的结构大致如下:
int cmd_unboxing(string str,object me)
{
object env;
string ppl_name=me->query("name");
if(!env=environment(me)) return 0;
if(env->query("unboxing/"+ppl_name)<time()) return 0;
write("unboxing 的讯息。\n");
return call_other("/open/cmds/unboxing","unboxing",me,ppl_name,env);
}
int unboxing(object me,string ppl_name,object env)
{
string paths=env->room_path(),files=base_name(env);
// 先做能否 unboxing 的判断
// 通过判断就把 unboxing 删掉
env->delete("unboxing/"+ppl_name);
// 然後可根据 paths
switch(paths)
// 也可根据 files
switch(files)
// 来对映要做什麽事情
return 1;
}
理论上做得到。它具有以下好处;
一、unboxing 是全域指令,所以具可控管性。
二、/open/cmds/unboxing.c 方便修改,进一步来说,让它
再呼叫特定的 unboxing 分支.c 是比较适合的做法。
各 wiz 就可依需要自定 unboxing 分支.c 档)
或者在 room 的 unboxing 里面就写死只能呼叫什麽。
(一般我会采这样的做法)
三、指令可进一步写成参数回传式,也就是各 unboxing 分支.c
档虽然是自订的,但只要求这些分支档回传必要的参数回来
,後续动作依然是该指令去做。
(这也是一般我会采行的做法)
缺点是会比较欠缺变化性,较不好写,但非常易於控管。
目前我新增东西的习惯都是以易於控管为较优先的考量,这东西
若写出来了会公告试用,初期会先在零落的王墓的BOSS房试用。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.120.231 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1731857735.A.B2D.html
※ 编辑: laechan (114.33.120.231 台湾), 11/17/2024 23:36:41