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

📄 long2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 5 页
字号:
	if (skill*skill*skill/10 > (int)ob->query("combat_exp")) 		return notify_fail("也许是缺乏实战经验,她的练习总没法进步。\n");//	if( !SKILL_D(skillname)->valid_learn(ob) ) return 0;	notify_fail("她试着练习" + to_chinese(skillname) + ",但是并没有任何进步。\n");	write( HIW "在你的指导下," + ob->name() + "把" + to_chinese(skillname) + HIW"练习了"+chinese_number(times)+"趟。\n" NOR);	if (skill*skill*skill/10 > (int)ob->query("combat_exp")) 	{                me->start_busy(1);		return notify_fail("也许是缺乏实战经验,她的练习总没法进步。\n");		return 1;	}	for (pertimes = 1; pertimes <= times; pertimes ++)	{// 用自己的jing、qi、neili来进行练习		jing = random(200);		qi = random(400);		neili = random(200);		if (me->query("jing") < jing)			return notify_fail("你的精气太低了,无法继续指导她的练习!\n");		if (me->query("qi") < qi)			return notify_fail("你的气血太低了,无法继续指导她的练习!\n");		if (me->query("neili") < neili)			return notify_fail("你的内力太低了,无法继续指导她的练习!\n");		me->add("jing", -jing);		me->add("qi", -qi);		me->add("neili", -neili);		ob->improve_skill(skillname, (skill_basic/5 +1), skill_basic > skill? 0: 1);	}	write( HIY + ob->name() + "的" + to_chinese(skillname) + "进步了!\n" NOR);	return 1;}int accept_object(object who, object ob){	if (!query("no_accept") || who == query("possessed")) {		command("thank " + who->query("id"));		return 1;	}	command("shake " + who->query("id"));	command("say 主人和我说过,别随便拿别人的东西!");	return 0;}int accept_fight(object ob){	if (!query("no_fight") || ob == query("possessed")) {		command("say 好吧,你小心了!");		return 1;	}	command("shake " + ob->query("id"));	command("say 主人和我说过,不要随便和别人动武!");	return 0;}int do_order(string arg){	object me = this_player();	string type, cmd;	int i;		seteuid(getuid());	if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if( !arg ) 		return notify_fail("你想让她做什么?\n");	if ((sscanf(arg, "%s %s", type, cmd) < 2 ))		return notify_fail("指令格式:order [un]accept object | [un]accept fight | <指令>\n");	if (!living(this_object()))		return notify_fail("以她目前的状态,怎么可能听你的命令呢?\n");	if (type == "accept") {		if (cmd == "object") {			me->set("guard/status/no_accept", 0);			set("no_accept", 0);			command("nod");			command("say 好的,我以后就代你接受别人的东西吧!");			return 1;		}		if (cmd == "fight") {			me->set("guard/status/no_fight", 0);			set("no_fight", 0);			command("nod");			command("say 好的,我以后也和别人一起切磋切磋武艺!");			return 1;		}		return notify_fail("指令格式:order accept object|fight\n");	}	if (type == "unaccept") {		if (cmd == "object") {			me->set("guard/status/no_accept", 1);			set("no_accept", 1);			command("nod");			command("say 好的,我以后再也不随便接受别人的东西了!");			return 1;		}		if (cmd == "fight") {			me->set("guard/status/no_fight", 1);			set("no_fight", 1);			command("nod");			command("say 好的,我以后再也不随便和别人比武了!");			return 1;		}		return notify_fail("指令格式:order unaccept object|fight\n");	}	for (i = 0; i < sizeof(cmds); i++)		if (cmds[i] == type) {			exec_cmd(me, arg);			return 1;		}	return notify_fail("你只能对她下达战斗指令!\n");}void exec_cmd(object me, string arg){	if (!command(arg))		write("她现在无法正确执行你的命令!\n");	else		write("遵命,主人!\n");}mixed get_auto_actions(string action){	int i, flag = 0;	for (i = 0; i < sizeof(pfm); i++)		if (pfm[i]["party"] == query("party")) {			flag = 1;			break;		}	if (!flag)		return ({ });	if (arrayp(pfm[i][action]))		return pfm[i][action];	else		return ({ });}void change_combat_mode(object me, int mode){	switch (mode) {	case 0:		delete("chat_chance_combat");		delete("chat_msg_combat");		set("jiali", 1);		break;	case 1:		set("chat_chance_combat", 50);		set("chat_msg_combat", get_auto_actions("perform"));		set("jiali", 50);		break;	case 2:		set("chat_chance_combat", 100);		set("chat_msg_combat", get_auto_actions("perform1"));		set("jiali", (int)query_skill("force") / 2);		break;	case 3:		set("chat_chance_combat", 100);		set("chat_msg_combat", get_auto_actions("perform2"));		set("jiali", 1);		break;	default:		return;	}	set("combat_mode", mode);	me->set("guard/status/combat_mode", mode);}void die(){	object ob = this_object();		if (environment(ob)->query("pingan") || environment(ob)->query("biwu") || environment(ob)->query("citybiwu")) {		message_vision(HIR "比武之地,只分胜负,不分生死。$N被打败了但却偷得一命。\n" NOR, ob);		ob->set("jing", 50);			ob->set("eff_jing", 50);		ob->set("qi", 50);		ob->set("eff_qi", 50);                ob->remove_all_killer();		all_inventory(environment())->remove_killer(ob);                ob->revive(1);                return;	}		tell_object(ob->query("possessed"), HIG"对不起主人,我无法再服侍你了,你一定要好好保重自己!\n"NOR);	// skills - 2	ob->skill_death_penalty();	ob->skill_death_penalty();	::die();}int do_name(string arg){	object me = this_player();		if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if (!arg || arg == "") 		return notify_fail("你想帮她改什么名字?\n");	if (!living(this_object()))		return notify_fail("以她目前的状态,怎么可能听你的命令呢?\n");	if (!LOGIN_D->check_legal_name(arg))		return 1;;	command("say 从今以后我就叫做" + arg + "了!");// arg = "cmds/usr/nick"->replace_color(arg, "$HIG$");//        arg=replace_color(arg,color_flag);	me->set("guard/name"," "+ arg+" ");        set("name"," "+ arg+" ");	command("thank " + me->query("id"));		return 1;}int do_long(string arg){	object me = this_player();	string *txt;		if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if (!arg || arg == "") 		return notify_fail("你想把她的描述改为什么?\n");	if (!living(this_object()))		return notify_fail("以她目前的状态,怎么可能听你的命令呢?\n");		if (arg == "none") {		me->delete("guard/long");		delete("long");		command("thank " + me->query("id"));		return 1;	}	txt = explode(arg, "\n");	if( sizeof(txt) > 8 )		return notify_fail("请将对她的描述控制在八行以内。\n");	arg = implode(txt, "\n") + "\n";	arg = "cmds/usr/nick"->replace_color(arg, 1);	me->set("guard/long", arg);	set("long", arg);	command("thank " + me->query("id"));		return 1;}int do_title(string arg){	object me = this_player();		if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if (!arg || arg == "") 		return notify_fail("你想把她的称号改为什么?\n");	if (!living(this_object()))		return notify_fail("以她目前的状态,怎么可能听你的命令呢?\n");	if (!check_legal_title("cmds/usr/nick"->replace_color(arg, 0)))		return 1;	arg = "cmds/usr/nick"->replace_color(arg, 1);	me->set("guard/title", arg);	set("title", arg);	command("thank " + me->query("id"));		return 1;}int do_ticks(string arg){	object me = this_player();	int i;	string type, cmd, cmd1, cmd2;		if (me->query("id") != query("host_id"))		return notify_fail("你无权使用这个命令!\n");	if (!living(this_object()))		return notify_fail("以她目前的状态,怎么可能听你的命令呢?\n");	if (!arg || arg == "") {		write(HIG"她现在的战斗指令阵列为:\n"NOR);		for (i = 1; i <= 5; i++)			if (stringp(cmd = me->query(sprintf("guard/status/ticks/%d", i))))				write(sprintf("%d - %s\n", i, cmd));			else				write(sprintf("%d - %s\n", i, "<空缺>"));		return 1;	}	if ((sscanf(arg, "%s %s", type, cmd) < 2 ))		return notify_fail("指令格式:ticks [1-5 <指令>] | [-d 1-5|all]\n");	if (type == "1" || type == "2" || type == "3" || type == "4" || type == "5") {		if (sscanf(cmd, "%s %s", cmd1, cmd2) < 2)			cmd1 = cmd;		for (i = 0; i < sizeof(cmds); i++)			if (cmds[i] == cmd1) {				me->set("guard/status/ticks/" + type, cmd);				command("en " + query("id"));				return 1;			}		return notify_fail("你所设定的只能是战斗指令!\n");	} else if (type == "-d" && (cmd == "1" || cmd == "2" || cmd == "3" || cmd == "4" || cmd == "5"))		me->delete("guard/status/ticks/" + cmd);	else if (type == "-d" && cmd == "all")		for (i = 1; i <= 5; i++)			me->delete(sprintf("guard/status/ticks/%d", i));	else		return notify_fail("指令格式:ticks [1-5 <指令>] | [-d 1-5|all]\n");	command("en " + query("id"));		return 1;}int check_legal_title(string name){	int i = strlen(name);		if( (strlen(name) < 8) || (strlen(name) > 20 ) ) {		write("对不起,称号必须是 4 到 10 个中文字。\n");		return 0;	}	while(i--) {		if( i%2==0 && !is_chinese(name[i..<0]) ) {			write("对不起,称号不能用控制字元。\n");			return 0;		}		if( (strsrch(name, " ") >= 0) ||		    (strsrch(name, "爸") >= 0)) {			write("对不起,称号不能用引起误会的单字。\n");			return 0;		}		if( i%2==0 && !is_chinese(name[i..<0]) ) {			write("对不起,称号必须使用中文字。\n");			return 0;		}	}	return 1;}string replace_color(string arg,int flag){	arg = replace_string(arg, "$BLK$", flag?BLK:"");	arg = replace_string(arg, "$RED$", flag?RED:"");	arg = replace_string(arg, "$GRN$", flag?GRN:"");	arg = replace_string(arg, "$YEL$", flag?YEL:"");	arg = replace_string(arg, "$BLU$", flag?BLU:"");	arg = replace_string(arg, "$MAG$", flag?MAG:"");	arg = replace_string(arg, "$CYN$", flag?CYN:"");	arg = replace_string(arg, "$WHT$", flag?WHT:"");	arg = replace_string(arg, "$HIR$", flag?HIR:"");	arg = replace_string(arg, "$HIG$", flag?HIG:"");	arg = replace_string(arg, "$HIY$", flag?HIY:"");	arg = replace_string(arg, "$HIB$", flag?HIB:"");	arg = replace_string(arg, "$HIM$", flag?HIM:"");	arg = replace_string(arg, "$HIC$", flag?HIC:"");	arg = replace_string(arg, "$HIW$", flag?HIW:"");	arg = replace_string(arg, "$NOR$", flag?NOR:"");	arg = replace_string(arg, "$BLINK$", flag?BLINK:"");	if(flag) arg+=NOR;	return arg;}

⌨️ 快捷键说明

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