set.o
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· O 代码 · 共 84 行
O
84 行
// set.c
#define MAX_ENV_VARS 20
#include <ansi.h>
inherit F_DBASE;
inherit F_CLEAN_UP;
int help();
int main(object me, string arg)
{
int i;
string term, *terms, *wiz_only;
mixed data;
mapping env;
wiz_only = ({"invisibility", "immortal"});
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;
}
if( sscanf(arg, "%s %s", term, data)!=2 ) {
term = arg;
data = "YES";
}
if( strsrch(arg,"/") != -1)
{
//记录非法使用set命令的路径/log/cmds/set 星星(lywin)
log_file("cmds/set",
sprintf("%s(%s) 在 %s 非法使用set /命令\n",
me->name(1), //记录使用命令的人名
geteuid(me), //记录使用命令的ID
ctime(time()) ) ); //记录使用命令的时间
message("chat", HIC"【系统监督】系统:"+this_player()->query("name")+"("+this_player()->query("id")+")正在非法使用set命令,请在线wiz立即清查,并作记录!\n"NOR, users());
return notify_fail(HIR"你正在使用一条非法命令!请立即停止使用此命令并向wiz说明使用原因。
如无wiz在线,请post在武庙。否则将视你为蓄意破坏本mud!如敢再次使用,作杀档处理!\n"NOR);
}
if( term && term!="" ) {
if( mapp(env) && undefinedp(env[term]) && sizeof(env) >= MAX_ENV_VARS )
return notify_fail("你设的环境变数太多了,请先用 unset 删掉几个吧。\n");
sscanf(data, "%d", data);
if((wiz_level(me) == 0) && (member_array(term, wiz_only) != -1))
return notify_fail("只有巫师能用这个设定。\n");
me->set("env/" + term, data);
printf("设定环境变数:%s = %O\n", term, data);
return 1;
}
return help();
}
int help()
{
write(@TEXT
指令格式:set <变数名> [<变数值>]
这个指令让你设定一些环境变数,不加参数时会显示你目前设定的环境变数,不指定
变数值,则内定值为 "YES"。
取消变数设定请用 unset 指令。
至於有哪些环境变数可以设定,请见 help settings。
TEXT
);
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?