⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 long2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 5 页
字号:
return notify_fail("你要看谁的状态?\n");	my = query_entire_dbase();	 printf(HIC"≡"HIY"──────────────────────────────"HIC"≡\n"NOR);printf(HIC"精力:"NOR"%s%3d/ %3d %s(%3d%%)   "HIC"气血:"NOR"%s%3d/ %3d %s(%3d%%)\n",                status_color(my["jing"], my["eff_jing"]), my["jing"],my["eff_jing"],                status_color(my["eff_jing"], my["max_jing"]),     my["eff_jing"] * 100 / my["max_jing"],                status_color(my["qi"], my["eff_qi"]), my["qi"], my["eff_qi"],                status_color(my["eff_qi"], my["max_qi"]),     my["eff_qi"] * 100 / my["max_qi"]            	);			printf(HIW"主人: "HIG"%s"NOR"\t\t"HIW"经验: "HIG"%d"NOR"\t\t"HIW"杀气: "HIG"%d"NOR"\n"NOR,	my["host_id"], my["combat_exp"],my["bellicosity"]	);        printf(HIY"悟性: "HIG"%d"NOR"\t\t"HIY"根骨: "HIG"%d"NOR"\t\t"HIY"容貌: "HIG"%d"NOR"\n"NOR,        query_int(), query_con(),query_per()        );        printf(HIY"身法: "HIG"%d"NOR"\t\t"HIY"臂力: "HIG"%d"NOR"\t\t"HIY"福缘: "HIG"%d"NOR"\n"NOR,        query_dex(), query_str(),query_kar()        );        printf(HIY"内力: "HIG"%d"NOR"\t\t"HIY"内力上限: "HIG"%d"NOR"\t\t\n"NOR,        query("neili"), query("max_neili")        );        at_pt= COMBAT_D->skill_power(this_object(), "unarmed", SKILL_USAGE_ATTACK);        pa_pt= COMBAT_D->skill_power(this_object(), "parry", SKILL_USAGE_DEFENSE);        do_pt= COMBAT_D->skill_power(this_object(), "dodge", SKILL_USAGE_DEFENSE);        printf(HIR"攻击力: %d\t"NOR+HIR"防御力: %d\t\n"NOR,        at_pt+1, pa_pt/2+do_pt/2+1        );	printf("/cmds/skill/skills"->pet_skill(this_object()));	 printf(HIC"≡"HIY"──────────────────────────────"HIC"≡\n"NOR);return 1;}// 永久跟随主人 (by xbd)int chat(){	object me = query("possessed");	int i, ratio, chance, rnd, flag = 0;	string *msg, *emotes, cmd;	object *inv, *killer;	if (!me) {		if( environment() && !is_fighting() )			call_out("leave", 0);		return 0;	}	if( !environment(me) ) return 0;	if( !environment() ) return 0;	if( query_temp("is_unconcious") ) return 0;	if (environment(this_object()) != environment(me)	&& !is_fighting()	&& !is_busy()	&& query_leader() == me) {		command("say 主人等等我!!!");		move(environment(me));		command("say 主人,别走那么快,我差点跟不上了!");	}	if (!is_busy()) {		if (arrayp(msg = get_auto_actions("powerup")))			for (i = 0; i < sizeof(msg); i++)				if (functionp(msg[i]))					evaluate(msg[i]);	}	if (living(me)	&& !me->is_ghost()	&& me->is_killing()	&& me->is_fighting()	&& !is_fighting()	&& !is_killing()	&& !is_busy()	&& intp(ratio = (int)me->query("env/save_me"))	&& ratio > 0	&& ( me->query("qi") * 100 / me->query("max_qi") <= ratio		|| me->query("jing") * 100 / me->query("max_jing") <= ratio))	{		if (environment(this_object()) != environment(me)) {			command("say 不好,主人有危险!!!");			move(environment(me));		}		command("say 主人有难,我一定会誓死保护你的!!!");		if (arrayp(killer = me->query_enemy()))			for (i = 0; i < sizeof(killer); i++)				if (objectp(killer[i])) {					this_object()->fight_ob(killer[i]);					killer[i]->fight_ob(this_object());					this_object()->fight_ob(killer[i]);					killer[i]->fight_ob(this_object());				}	}	if (query("neili") > 100 && query("max_neili") > 200 && !is_busy()) {		if (query("eff_jing") && query("jing") * 100 / query("eff_jing") <= 80)			command("exert regenerate");		if (query("eff_qi") && query("qi") >= 0 && query("qi") * 100 / query("eff_qi") <= 80)			command("exert recover");		if (query("eff_qi") && query("qi") >= 0		&& query("max_qi") && !is_fighting() && !query("mute")		&& query_skill_mapped("force")		&& query("eff_qi") < query("max_qi")		&& query("eff_qi") >= query("max_qi") / 3)			command("exert heal");		if (query("max_neili")		&& query("neili") * 100 / query("max_neili") <= 80		&& !is_fighting()		&& query_skill_mapped("force")) {			i = 1 + (int)query_skill("force") / 15 * (1 + (int)query_skill("force") / 100);			command(sprintf("dazuo %d", i));		}	}	if (is_fighting()) {		for (i = 1; i <= 5; i++)			if (stringp(cmd = query(sprintf("ticks/%d", i))))			{				command(cmd);				flag = 1;			}		if (flag) return 1;	}	if( !chance = (int)query(is_fighting()? "chat_chance_combat": "chat_chance") )		return 0;	if( arrayp(msg = query(is_fighting()? "chat_msg_combat": "chat_msg"))) {		if( query_temp("is_unconcious") ) return 0;		if( random(100) < chance ) {			rnd = random(sizeof(msg));			if( stringp(msg[rnd]) )				say(msg[rnd]);			else if( functionp(msg[rnd]) )				return evaluate(msg[rnd]);		}		return 1;	}	return 1;}void leave(){        if(!objectp(query("possessed")))	{	set_heart_beat(1);		command("say  主人不在,我回家算了。");	command("emote 往人群里一闪就不见了。");        destruct(this_object());	}	set_heart_beat(1);}int do_lingwu(string arg){	object me=this_player();	string special;	int bl,sl;        string msg;	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");if (me->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");if (this_object()->is_busy())return notify_fail("她正忙着呢!\n");        if (environment(me)->query("pigging"))                return notify_fail("你还是专心拱猪吧!\n");        if (me->is_busy())                return notify_fail("你现在正忙着呢。\n");	if( (int)me->query("qi") < 50 )		return notify_fail("你没有那么多的气!\n");	if( (int)me->query("jing") < 50 )		return notify_fail("你现在精不够!\n");if( environment(me)->query("outdoors") )           return notify_fail(HIY"\n不要影响别人,还是找一个室内的地方吧。\n"NOR);        if (environment(me)->query("sleep_room"))                return notify_fail("卧室不能讨论,会影响别人休息。\n");       if( environment(me)->query("no_beg") &&       environment(me)->query("no_fight") &&       environment(me)->query("no_steal"))           return notify_fail(HIY"\n不要影响别人,还是找一个别的地方吧。\n"NOR);	if( me->is_fighting() )		return notify_fail("你已经在战斗中了,学一点实战经验吧。\n");	if (!living(me)) return 0;	if (me->is_busy() || me->is_fighting()) return notify_fail("你正忙着呢。\n");	if (me->query("potential") - me->query("learned_points") < 0)          return notify_fail("你的潜能太少了!\n");		if (!arg) return notify_fail("你要与"+query("name")+"讨论什么?\n");	if (!me->query_skill(arg,1))		return notify_fail("你不会这种技能。\n");	if (!(special=me->query_skill_mapped(arg)))		return notify_fail("这个武功好像从特殊技能中领悟。\n");	bl=me->query_skill(arg,1);	if (bl > me->query("jing") || me->query("jing")*100/me->query("max_jing") < 20) {		me->receive_damage("jing",bl/2);		return notify_fail("你没办法集中精神。\n");	}	if(me->query("potential") < 100 )          return notify_fail("你的潜能太少了!\n");		sl=me->query_skill(special,1);	if (bl > sl)		return notify_fail("你的"+to_chinese(special)+"造诣不够,无法对更深一层的"+CHINESE_D->chinese(arg)+"进行讨论。\n");	write(HIY"你和"+query("name")+HIY"席地而坐,开始对"+to_chinese(arg)+HIY"的使用方法和体会进行和讨论。\n"NOR);	me->receive_damage("jing",bl/2);	me->improve_skill(arg,sl/5+2);	write(HIG"在"+query("name")+HIG"的帮助和你的努力下。\n你对"+to_chinese(arg)+HIG"好像有了更深一层的了解!\n"NOR);	return 1;}int do_heji(object me, string arg){        int same_place;        string couple_id;        string couple_name;        object couple;        object target;object weapon,weapon1; int extra,extra1; string msg;me=this_player();weapon = me->query_temp("weapon");weapon1 = this_object()->query_temp("weapon");if (!weapon) return notify_fail("你没有武器!\n");if (!weapon1) return notify_fail("她没有武器!\n");if (me->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");if (this_object()->is_busy())return notify_fail("她正忙着呢!\n");        if (me->is_busy())                return notify_fail("你现在正忙着呢。\n");        if (this_object()->is_busy())                return notify_fail("她现在正忙着呢。\n");        if (environment(me)->query("no_fight"))                return notify_fail("这里不能战斗。\n");        if (! arg)        {                me->clean_up_enemy();                target = me->select_opponent();        } else                target = present(arg, environment(me));        if (! target || ! me->is_fighting(target))                return notify_fail("合击只能对两人都在战斗中的对手使用。\n");        if (! target || ! this_object()->is_fighting(target))                return notify_fail("合击只能对两人都在战斗中的对手使用。\n");        if( target->is_busy() )                return notify_fail(target->name() + "目前正自顾不暇,放胆攻击吧!\n");        message_combatd(HIY " $N" HIY "和$n" HIY "两人眼神一交,心意已"                        "然相通,不由的会心一笑,只见二人身形一错,霎时\n"                        " 已经向" + target->name() + "攻出数招!\n" NOR,                        me, this_object());if (random(this_object()->query("combat_exp")) >target->query("combat_exp")/3){                        msg = HIG " "+query("name")+ HIG "弹" + weapon1->name() +                              HIG"轻吟,宛若黄莺出谷,飘身而进,手中的" +                              weapon1->name() + HIG "化作流星夜雨,披向"+target->query("name")+" "                              HIG "。\n" NOR;target->start_busy(4);msg += HIR " 结果"+target->query("name")+HIR"被"+query("name")+HIR"闹个手忙脚乱,惊慌失措,呆在当场,不知如何应对!\n" NOR;message_combatd(msg, me, target);          message_combatd(HIW" " + me->name() + HIW"见" + query("name") + HIW"得手,急向前跃,补足了" + query("name") + HIW"的破绽,并连连出招!\n" NOR,                        me, this_object());                        msg = HIC " " + me->name() + HIC"纵声长啸,一股杀气凛然而起,天"                              "地登时色变,$N" HIC "挟风雷万钧之势,压向"+target->query("name")+HIC"                              。\n" NOR;extra=(int)me->query_skill("force",1)/10;extra1=(int)this_object()->query_skill("force",1)/10;		me->add_temp("apply/attack", extra);	me->add_temp("apply/damage", extra);	this_object()->add_temp("apply/attack", extra1);	this_object()->add_temp("apply/damage", extra1);	COMBAT_D->do_attack(me,target, weapon, TYPE_REGULAR,msg);msg = HIC " " + query("name") + HIC"紧跟着,从左面又是一击!\n" NOR;	COMBAT_D->do_attack(this_object(),target, weapon1, TYPE_REGULAR,msg);msg = HIW " " + me->query("name") + HIW"紧跟着,从右面又是一击!\n" NOR;	COMBAT_D->do_attack(me,target, weapon, TYPE_REGULAR,msg);msg = HIC " " + query("name") + HIC"最后,从上面补足一击!\n" NOR;	COMBAT_D->do_attack(this_object(),target, weapon1, TYPE_REGULAR,msg);	me->add_temp("apply/attack", -extra);	me->add_temp("apply/damage", -extra);	this_object()->add_temp("apply/attack", -extra1);	this_object()->add_temp("apply/damage", -extra1);me->add("neili",200);this_object()->add("neili",200);me->start_busy(1);this_object()->start_busy(1);}else{          message_combatd(" " + target->name() + "急向后跃,跳出了被合击的范围!\n" NOR,                        me, this_object());me->add("neili",200);this_object()->add("neili",200);me->start_busy(2);this_object()->start_busy(2);}        return 1;}int do_lian(string arg){ 	object me = this_player(), ob = this_object(); 	object where = environment(me);	string skillname;	int skill, skill_basic, times, pertimes;	int neili, jing, qi;	seteuid(getuid());	if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if( !arg ) 		return notify_fail("你想让她练习什么武功?\n");	if ((sscanf(arg, "%s %d", arg, times)!=2 ))		return notify_fail("指令格式:lianxi <技能种类> <次数>\n");	if( !living(ob) )		return notify_fail("嗯....你得先把" + ob->name() + "弄醒再说。\n");        if (where->query("pigging"))                return notify_fail("你还是专心拱猪吧!\n");        if (where->query("sleep_room"))                return notify_fail("卧室不能互练,会影响别人休息。\n");	if( environment(me)->query("no_beg") &&	environment(me)->query("no_fight") && environment(me)->query("no_steal")) 		return notify_fail(HIY"\n不要影响别人,还是找一个别的地方吧。\n"NOR);        if (me->is_busy())                return notify_fail("你现在正忙着呢。\n");	if( me->is_fighting() )		return notify_fail("你已经在战斗中了,学一点实战经验吧。\n");	if (ob->is_busy())		return notify_fail("她现在正忙着呢。\n");	if( ob->is_fighting() )		return notify_fail("她已经在战斗中了,学一点实战经验吧。\n");	if ( times < 1 || times > 30)		return notify_fail("互练次数必须大于一次,但不能超过三十次。\n");	if( !stringp(skillname = ob->query_skill_mapped(arg)) )		return notify_fail("你只能练习用 enable 指定的特殊技能。\n");	skill_basic = ob->query_skill(arg, 1);	skill = ob->query_skill(skillname, 1);	if( skill < 1 )		return notify_fail("她好像还没有学过这项技能吧?\n");	if( skill_basic < 1 )		return notify_fail("她对这方面的技能还是一窍不通,最好从先从基本学起。\n");	if( skill_basic/2 <= skill/3 )		return notify_fail("她的基本功火候未到,必须先打好基础才能继续提高。\n");	notify_fail("她现在不能练习这项技能。\n");

⌨️ 快捷键说明

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