ansuan.c

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

C
322
字号
// ansuan.c 暗算//by King 97.05#include <ansi.h>mapping default_where = ([	"n":	"north",	"s":	"south",	"e":	"east",	"w":	"west",	"nu":	"northup",	"su":	"southup",	"eu":	"eastup",	"wu":	"westup",	"nd":	"northdown",	"sd":	"southdown",	"ed":	"eastdown",	"wd":	"westdown",	"ne":	"northeast",	"nw":	"northwest",	"se":	"southeast",	"sw":	"southwest",	"u":	"up",	"d":	"down",]);mapping default_dirs = ([	"north":		"北边",	"south":		"南边",	"east":			"东边",	"west":			"西边",	"northup":		"北边",	"southup":		"南边",	"eastup":		"东边",	"westup":		"西边",	"northdown":		"北边",	"southdown":		"南边",	"eastdown":		"东边",	"westdown":		"西边",	"northeast":		"东北",	"northwest":		"西北",	"southeast":		"东南",	"southwest":		"西南",	"up":			"上面",	"down":			"下面",	"enter":		"里面",	"out":			"外面",]);mapping default_undirs = ([	"south":		"北边",	"north":		"南边",	"west":			"东边",	"east":			"西边",	"southup":		"北边",	"northup":		"南边",	"westup":		"东边",	"eastup":		"西边",	"southdown":		"北边",	"northdown":		"南边",	"westdown":		"东边",	"eastdown":		"西边",	"southwest":		"东北",	"southeast":		"西北",	"northwest":		"东南",	"northeast":		"西南",	"down":			"上面",	"up":			"下面",	"out":			"里面",	"enter":		"外面",]);int main(object me, string arg){	string who, where, dir, undir, where_temp;	object env, old_env;	mapping exits;	object target,obj;	int count;	string gen;	if( !arg || sscanf(arg, "%s at %s", who, where_temp)!=2 ) 		return notify_fail("指令格式:ansuan <人物> at <方向>\n");	env = environment(me);	old_env = env;        if (1)		return notify_fail("请用touxi命令吧!\n");	if( where_temp == "leitai" )		return notify_fail("那里禁止暗算。\n");	if( !undefinedp(default_where[where_temp]) )		where = default_where[where_temp];	else		where = where_temp;        if (userp(me) && !query_heart_beat(me))        {         "/cmds/usr/quithy"->main(me);        return notify_fail("由于你没有心跳,请重新登陆!!\n");//         write("由于你没有心跳,请重新登陆!!\n");        }	if( !mapp(exits = env->query("exits")) || undefinedp(exits[where]) )		return notify_fail("没有这个方向。\n");	if( !objectp(env = find_object(exits[where])) )	{	call_other(exits[where], "???");		env = find_object(exits[where]);	}	if( env->query("no_fight") )		return notify_fail("那里禁止战斗。\n");	if( env->query("outdoors")=="12gong" )		return notify_fail("在12宫内不允许使用暗算。\n");	if( me->is_busy() )		return notify_fail("你的动作还没有完成,不能打。\n");	if( !objectp(target = present(who, env)) )		return notify_fail("这个方向没有此人。\n");	if( !target->is_character() )		return notify_fail("看清楚一点,那并不是生物。\n");        if (userp(target) && !query_heart_beat(target))        {         write("你想做什么!\n");        return notify_fail("此人无心跳!\n");//         write("此人不能beg!\n");        }	if( me->is_busy() )		return notify_fail("你的动作还没有完成,不能暗算。\n");	if( me->is_fighting() )		return notify_fail("你正忙着战斗呢,还有心思暗算别人?\n");	if( !living(target) )		return notify_fail(target->name() + "都已经这样了,你还用得着暗算吗?\n"); 	if((int)target->query("age") <= 17 && userp(target))		return notify_fail("为了世界更美好,放过小孩子吧.\n");	if(target->query_temp("no_kill"))		return notify_fail("你不能杀这个人。\n");	if(target->query("no_touxi"))		return notify_fail("偷袭蜜蜂干什么?\n");	if(target->query("tasknpc"))		return notify_fail("这个方向没有此人。\n");if (environment(me)->query("magicroom"))return notify_fail("此处不能使用偷袭!\n");if(environment(me)->query("short")==BLU"山洞"NOR       ||environment(me)->query("short")==WHT"钟乳石洞"NOR       ||environment(me)->query("short")==YEL"岩洞"NOR       ||environment(me)->query("short")==RED"熔岩洞"NOR       ||environment(me)->query("short")==CYN"石洞"NOR       ||environment(me)->query("magicroom"))return notify_fail("此处不能使用偷袭!\n");if(target->query_temp("owner/id") && target->query_temp("owner/id") != me->query("id"))		return notify_fail("这个人和别人的任务有关,你不能杀这个人。\n");//	if(me->query("combat_exp") < target->query("combat_exp")/3  && userp(target))//		return notify_fail("你和人家差那么多,打什么打?\n");//pk问题    if( userp(target) && me->query_condition("killer"))        return notify_fail("你已经被通辑了,不要再乱杀玩家了!\n");    if( userp(target) && target->query("combat_exp") < me->query("combat_exp") && me->query_condition("killer"))        return notify_fail("你已经被通辑了,不要再乱杀玩家了!\n");	if(me->query("combat_exp") > target->query("combat_exp")*3  && userp(target))		return notify_fail("人家和你差那么多,用不着暗算吧?\n");//免战系统obj=target;        if (userp(me) && userp(obj)         && obj->query_temp("nokill") )        return notify_fail("那人启用了免战牌!\n");        if (userp(me) && userp(obj)         && me->query_temp("nokill") )        return notify_fail("你启用了免战牌!\n");    if( userp(me) && userp(obj) && obj->query_condition("nokill")    && !obj->query_condition("killer"))        return notify_fail("那个人刚被杀过,放过他吧!\n");if( !living(obj) && userp(obj) && obj->query("combat_exp")/2 > me->query("combat_exp") )	return notify_fail("你想要杀此人,但他比你强太多,你不敢动手。\n");		if( (int)me->query("jing", 1) < 100 )		return notify_fail("你无法集中精力,暗算不了别人。\n");	if( !undefinedp(default_dirs[where]) )		dir = default_dirs[where];	else		dir = where;	if( !undefinedp(default_undirs[where]) )		undir = default_undirs[where];	else		undir = where;	if(me->query("gender") == "女性")		gen = "倩影";	else		gen = "人影";	write( CYN"你摒息静气,纵身而起,向" + dir + "的" + target->name() + "扑去!\n"NOR);	message("vision", CYN"\n一条" + gen + "忽然向" + dir + "扑去,转眼间又回到原处!\n\n"NOR, environment(me), me);	tell_object(target, CYN"\n一条" + gen + "忽然从" + undir + "向你扑来!\n\n"NOR);	message("vision", CYN"\n一条" + gen + "忽然从" + undir + "向" + target->name() + "扑来!\n\n"NOR, environment(target), target);	count = me->query_str();//	me->set_temp("apply/name", ({gen}));//	me->set_temp("apply/id", ({"none"}));//	me->set_temp("apply/short", ({gen}));//	me->set_temp("apply/long", ({gen}));	me->move(environment(target));        me->fight_ob(target);        target->fight_ob(me);        me->kill_ob(target);        me->add_temp("str", count);	COMBAT_D->do_attack(me, target, me->query_temp("weapon") );		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");	if( random(me->query("combat_exp")) > (int)target->query("combat_exp")/2 )	{		message_vision(CYN"$N一时没有防范,被$n攻了个措手不及!\n"NOR, target, me);		COMBAT_D->do_attack(me, target, me->query_temp("weapon") );		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");	}	else	{		message_vision(CYN"$N经验丰富,不及细看,立刻向$n反击!\n"NOR, target, me);		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");        me->fight_ob(target);        target->fight_ob(me);        me->kill_ob(target);		COMBAT_D->do_attack(target, me, target->query_temp("weapon") );	}	me->add_temp("str", - count);	if( random(me->query("combat_exp")) < (int)target->query("combat_exp")/5 )	{		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");		tell_object(target, CYN"你一定神,原来是" + me->name() + "在暗算我!\n"NOR);		write( CYN "不好,被" + target->name() + "发觉了!\n"NOR);		message_vision(CYN"$N喝道:$n!你敢暗算我,我跟你没完!\n"NOR, target, me);        me->fight_ob(target);        target->fight_ob(me);me->kill_ob(target);//		if( !target->is_killing(me) ) target->kill_ob(me);		me->start_busy(3);	}	else	{		message("vision", CYN"\n" + gen + "转瞬不见!\n\n"NOR, environment(target), me);		tell_object(me, CYN"\n你立刻退回原处!\n\n"NOR);		me->move(old_env);		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");		tell_object(target, CYN"你一定神,可是什么都没看见。\n"NOR);		message("vision", CYN"" + target->name() + "一脸惶恐,竟不知道谁在暗算他!\n"NOR, environment(target), target);		write( CYN "哈哈," + target->name() + "居然没看出来。\n"NOR);		write( CYN"你措了措手,一脸无辜的样子。\n"NOR);	}	me->start_busy(3);	me->add("jing", -50);        if( userp(me) )                log_file("ansuan_player", sprintf("[%s] %s ansuan %s\n",                        ctime(time()), geteuid(me), target->query("id")));//                        ctime(time()), geteuid(me), geteuid(target)));        return 1;		me->delete_temp("apply/name");		me->delete_temp("apply/id");		me->delete_temp("apply/short");		me->delete_temp("apply/long");}int help(object me){write(@HELP指令格式 : ansuan <人物> at <方向>这个指令让你暗算位于<方向>的<人物>。如果暗算成功,则敌人发现不了你。否则...:)HELP    );    return 1;}

⌨️ 快捷键说明

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