set.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 107 行
C
107 行
// set.c
// add color availability by ReyGod in Dec. 1996
#define MAX_ENV_VARS 20
#include <ansi.h>
inherit F_CLEAN_UP;
int help();
int main(object me, string arg)
{
int i;
string term, *terms, *wiz_only, *allset, *allwizset;
mixed data;
string data0;
mapping env;
wiz_only=({"invisibility", "immortal"});
allset=({ "brief", "no_accept", "no_teach", "wimpy", "combatd",
"prompt", "time_format", "public", "agree_heal", "no_tell","friendtalk","save_me",
"kill_msg" });
allwizset=({ "brief", "no_accept", "no_teach", "wimpy", "combatd",
"prompt", "time_format", "public", "读谣言", "invisibility", "immortal",
"msg_home", "msg_min", "msg_mout", "msg_clone", "msg_dest", "no_tell","friendtalk","save_me",
"kill_msg" });
if( me != this_player(1) ) return 0;
env = me->query("env");
if( !arg || arg=="" ) {
write("你目前设定的环境变数有:\n");
if( !mapp(env) || !sizeof(env) )
write("\t没有设定任何环境变数。\n");
else {
terms = keys(env);
for(i=0; i<sizeof(terms); i++)
printf("%-20s %O\n", terms[i], env[terms[i]]);
}
return 1;
}
arg = replace_string(arg, "$BLK$", BLK);
arg = replace_string(arg, "$RED$", RED);
arg = replace_string(arg, "$GRN$", GRN);
arg = replace_string(arg, "$YEL$", YEL);
arg = replace_string(arg, "$BLU$", BLU);
arg = replace_string(arg, "$MAG$", MAG);
arg = replace_string(arg, "$CYN$", CYN);
arg = replace_string(arg, "$WHT$", WHT);
arg = replace_string(arg, "$HIR$", HIR);
arg = replace_string(arg, "$HIG$", HIG);
arg = replace_string(arg, "$HIY$", HIY);
arg = replace_string(arg, "$HIB$", HIB);
arg = replace_string(arg, "$HIM$", HIM);
arg = replace_string(arg, "$HIC$", HIC);
arg = replace_string(arg, "$HIW$", HIW);
arg = replace_string(arg, "$NOR$", NOR);
if( sscanf(arg, "%s %s", term, data)!=2 ) {
term = arg;
data = "YES";
}
if( term && term!="" ) {
if( mapp(env) && undefinedp(env[term]) && sizeof(env) >= MAX_ENV_VARS )
return notify_fail("你设的环境变数太多了,请先用 unset 删掉几个吧。\n");
data0 = data; // save string* data
sscanf(data, "%d", data);
if((!wizardp(me) && (member_array(term, allset) == -1)) || ( wizardp(me) && (member_array(term, allwizset) == -1)) )
return notify_fail(HIR + BLINK"没有这个环境变数可以让你设定,请用 help settings 查找可以设定的环境变数。\n"NOR);
if((wiz_level(me) == 0) && (member_array(term, wiz_only) != -1))
return notify_fail("只有巫师能用这个设定。\n");
if(data == data0) // if data is 字符串
me->set("env/" + term, data + NOR);
else me->set("env/" + term, data); // is 数字
printf("设定环境变数:%s = %O%s\n", term, data,NOR);
return 1;
}
return help();
}
int help()
{
write(@TEXT
指令格式:set <变数名> [<变数值>]
这个指令让你设定一些环境变数,不加参数时会显示你目前设定的环境变数,不指定
变数值,则内定值为 "YES"。变数值若为字符串,可参照 nick 变化颜色.
for example : set msg_min, msg_mout, msg_home , etc.
取消变数设定请用 unset 指令。
至於有哪些环境变数可以设定,请见 help settings。
TEXT
);
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?