setskill.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 78 行

C
78
字号
// setSkill.c
// 25th, March 1997. - SPY

#include <ansi.h>

inherit F_CLEAN_UP;

int main(object me, string arg)
{
	int i,j,level;
	mapping skill_status;
	object ob;
	string skill,obj;
	string *skills;
	if( !arg )	return notify_fail("setskill <某人> <技能>/all <级别数>。\n");
        if( !arg || sscanf(arg, "%s %s %d", obj, skill, level)!=3 )
                return notify_fail("setskill <某人> <技能>/all <级别数>。\n");
	ob = find_player(obj);
	if( !ob )	ob = find_living(obj);
	if( !ob )	ob = present(obj, environment(me));
        if( !ob ) return notify_fail("找不到这个生物.\n");
	if( (wiz_level(me) < wiz_level(ob)) && userp(ob) )
		return notify_fail("你没有设置" + ob->name() + "技能的权利。\n");
	if( level == 0 && wizardp(ob) )
		return notify_fail("不能用此命令将巫师的功夫删除。\n");
	if( (wiz_level(me) < wiz_level("(arch)")) && me!=ob )
		return notify_fail("你没有设置" + ob->name() + "技能的权利。\n");
	write(WHT"begin setting skills for "NOR + ob->short(1) + WHT":\n"NOR);
	if( skill == "all" ) {
		if ( !(skill_status = ob->query_skills()) || !sizeof(skill_status) )
			return notify_fail("这个人没有学会任何技能,不能用 all 这个参数。\n");
		skills  = keys(skill_status);
		j = sizeof(skill_status);
        	for(i=0; i<j; i++) {
			if( level ==0 ) {
				ob->delete_skill(skills[i]);
				write("deleting->" + to_chinese(skills[i]) + 
					"(" + skills[i] + ")\n");
			}
			else {
				ob->set_skill(skills[i], level);
				printf("setting-> %-36s%d\n", to_chinese(skills[i]) + 
					"(" + skills[i] + ")", level);
			}
		}
	}
	else {
		if( level ==0 ) {
			write("deleting->" + to_chinese(skills[i]) + "(" + skills[i] + ")\n");
			ob->delete_skill(skill);
		}
		else	{
			ob->set_skill(skill, level);
			printf("setting-> %-36s%d\n", to_chinese(skill) + 
				"(" + skill + ")", level);
		}
	}
	if( userp(ob) && ob!=me ) log_file("setskill",
		sprintf("%s(%s) setskill %s(%s) %s to level %d at %s.\n", me->name(1),
			me->query("id"), ob->name(1), ob->query("id"), skill, level,
			ctime(time()) ) );
	write(WHT"Done.\n"NOR);
	return 1;
}

int help()
{
	write(@LONG
指令格式:setskill  <某人> <技能>/all <级别数>。

用来设定某人的某种技能的级别数, 如果第二项是 all 则将其所有的
技能改为设定的级别数。如果选择了级别数为 0 则删除该人此项技能。

警告:请慎用此命令。
LONG	);
	return 1;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?