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

📄 long2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 5 页
字号:
//  sscanf(query("id"),"%s's long er",host_id);  if(me->query("id")!=query("host_id"))  return notify_fail(" "+query("name")+"连理都不理你!\n");        if(me->is_busy())        return notify_fail("你上一个动作还没有完成。\n");  if(!arg||!objectp(ob=present(arg,environment(me))))	return notify_fail(" "+query("name")+"傻傻地望着你,不明白你的意思。\n");  if(!living(ob)) 	 return notify_fail(" "+query("name")+"说:"              +ob->query("name")+"已经这样啦你还要...??!!\n");	if (userp(ob) && ob == me->query("possessed"))		return notify_fail("你疯了,想自杀么?\n");	if (userp(ob) && !living(ob))		return notify_fail("他已经昏了啊?\n");	if (userp(ob) && ob->query("combat_exp") < me->query("combat_exp"))		return notify_fail("你不能欺负比自己弱小的玩家!\n");          if (userp(ob)         && ob->query_temp("nokill") )        return notify_fail("那人启用了免战牌!\n");        if (userp(ob)         && me->query_temp("nokill") )        return notify_fail("你启用了免战牌!\n");    if(userp(ob) && ob->query_condition("nokill")    && !ob->query_condition("killer"))        return notify_fail("那个人刚被杀过,放过他吧!\n");	  message_vision(name()+"对$N点头道: 嗯,好的。\n",this_player());command("hit "+ob->query("id"));  return 1;}int do_ting(){   string host_id;  object me=this_player();	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");if (this_player()->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");//  if(query("id")=="long er")//   return notify_fail("你无权使用此命令。\n");//  sscanf(query("id"),"%s's long er",host_id);  if(me->query("id")!=query("host_id"))   return notify_fail(" "+query("name")+"连理都不理你!\n"); if(!is_fighting())	 return notify_fail(" "+query("name")+"现在没和人打斗。\n"); message_vision(" "+query("name")+"对主人$N微微一笑,跳出了战圈。\n",me);command("halt");return 1;}int do_send(string arg){  object ob; string host_id,new_name,new_id;  object me=this_player();if (this_player()->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");//  if(query("id")=="long er")//   return notify_fail("你无权使用此命令。\n");//  sscanf(query("id"),"%s's long er",host_id);  if(me->query("id")!=query("host_id"))   return notify_fail(" "+query("name")+"连理都不理你!\n");        if(me->is_busy())        return notify_fail("你上一个动作还没有完成。\n");  if(!arg||!objectp(ob=present(arg,environment(me))))	return notify_fail("你要把 "+query("name")+"送给谁?\n");  if(!living(ob)) 	 return notify_fail("你只能把"+query("name")+"给活人!\n"); message_vision(" "+query("name")+"眼泪汪汪地望着主人$N,说:\n主人待我好,是我命好;主人待我不好,是我命苦罢了.\n",me); set_leader(ob); new_name = ob->query("name")+"的丫环"+query("name")+" ";	   set("long","这是"+new_name+"。\n"		"她是一个清纯绝俗的少女,大约十八,九岁年纪;\n"	            "她长得极美,尤其是那双眼睛,清纯得像一潭碧水。\n"+	            "其容色晶莹如玉,映照于红红烛光之下,娇美不可方物。\n"+		"一张雪白的脸庞,眉弯嘴小,却象是刚受人欺负,眼泪汪汪地看着你。\n"); new_id=ob->query("id")+"'s long er";           set("possessed",ob);           set("host_id",ob->query("id")); set("name",new_name); set("id",new_id); write( HIY " "+query("name")+HIY"对新主人"+ob->query("name")+"楚楚可怜地盈盈一拜。\n" NOR);write( "可用指令:\natt sb 攻击某人.\nsha sb 杀死某人.\nting 停止战斗.sendto sb.--把"+query("name")+"送给sb.hulian skill 互练某武功.taolun skill 讨论某武功.mache  splace叫马车去某地.heji   sb    合击某人.shape  id    看状态.\n"); return 1;}int do_sha(string arg){        int i ;	object me,ob;	object* obj;	me = this_object();if (this_object()->is_busy())return notify_fail("她正忙着呢!\n");	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");        if(this_player()->is_busy())        return notify_fail("你上一个动作还没有完成。\n");if (this_player()->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");        if(!arg||!objectp(ob=present(arg,environment(me))))	return notify_fail("你要"+query("name")+"杀谁?\n");	if(!environment(ob)->query("no_fight"))	{// 不能杀自己	if (userp(ob) && ob == me->query("possessed"))		return notify_fail("你疯了,想自杀么?\n");// 不能 pk exp < 自己的玩家 (by xbd)	if (userp(ob) && !living(ob))		return notify_fail("他已经昏了啊?\n");	if (userp(ob) && ob->query("combat_exp") < me->query("combat_exp"))		return notify_fail("你不能欺负比自己弱小的玩家!\n");                if (userp(ob)         && ob->query_temp("nokill") )        return notify_fail("那人启用了免战牌!\n");        if (userp(ob)         && me->query_temp("nokill") )        return notify_fail("你启用了免战牌!\n");    if(userp(ob) && ob->query_condition("nokill")    && !ob->query_condition("killer"))        return notify_fail("那个人刚被杀过,放过他吧!\n");								        message_vision(name()+"对$N点头说道: 嗯,好的。\n",this_player());	command("say 哼,主人要我杀了你!");        command("hit " + ob->query("id"));	}	return 1;}       void kill_ob(object ob){if (ob->query("id")==query("host_id")){command("say 我对主人尽心尽力,但主人你为什么要杀我啊!");	command("die");call_out("destroying", 0,ob);      return;      }}int do_quit(string arg){        object ob= this_object();	object me= this_player();	if(arg==query("host_id")	&& me->query("id")!=arg) {        command("say " + me->name() + ",你想做什么!不要伤我主人!");        command("emote 闪身挡在你的面前!");//        me->fight_ob(ob);        ob->fight_ob(me);        return 1;	}}int do_hulian(string arg){ 	object me=this_player(); 	object where = environment(me);	string skillname;	int skill, skill_basic, times, pertimes;	seteuid(getuid());	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 (where->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 (where->query("sleep_room"))                return notify_fail("卧室不能互练,会影响别人休息。\n");if( environment(me)->query("outdoors") )           return notify_fail(HIY"\n不要影响别人,还是找一个室内的地方吧。\n"NOR);       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( !arg ) 		return notify_fail("你要互练什么武功啊。\n");	if ( (sscanf(arg, "%s %d", arg, times)!=2 ))		return notify_fail("指令格式:practice|lian <技能种类> <次数>\n");	if ( times < 1 || times > 10)		return notify_fail("互练次数必须大于一次,但不能超过十次。\n");	if( !stringp(skillname = me->query_skill_mapped(arg)) )		return notify_fail("你只能练习用 enable 指定的特殊技能。\n");	skill_basic = me->query_skill(arg, 1);	skill = me->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");	if (skill*skill*skill/10 > (int)me->query("combat_exp")) 		return notify_fail("也许是缺乏实战经验,你的练习总没法进步。\n");	if( !SKILL_D(skillname)->valid_learn(me) ) return 0;	notify_fail("你试着练习" + to_chinese(skillname) + ",但是并没有任何进步。\n");	write( HIW "你与"+query("name")+"把" + to_chinese(skillname) + HIW"互练了"+chinese_number(times)+"趟。\n" NOR);	if (skill*skill*skill/10 > (int)me->query("combat_exp")) 	{                me->start_busy(1);		return notify_fail("也许是缺乏实战经验,你的练习总没法进步。\n");		return 1;	}	for (pertimes = 1; pertimes <= times; pertimes ++)	{		if( SKILL_D(skillname)->practice_skill(me) ){			me->improve_skill(skillname, (skill_basic/5 +1), skill_basic > skill? 0: 1);			me->improve_skill(skillname, (skill_basic/5 +1), skill_basic > skill? 0: 1);}		else return 0;	}	write( HIY "你的" + to_chinese(skillname) + "进步了!\n" NOR);	return 1;}void destroying(object ob){   object me=this_player();command("say 主人你要杀我,不劳您动手。。。\n");command("say 我的命真苦。。。\n");command("say "+me->query("name")+"主人以后我不能继续再服待你了。。。\n");command("say 大家珍重。。。\n");command("say 珍重。。。\n");message_vision("$N说罢,拿起剑自刎而死,她缓缓的到在地上。。。\n",this_object());this_object()->die();   return;      }int do_move(string arg){          string pla;          object me = this_player();	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");if (this_object()->is_busy())return notify_fail("她正忙着呢!\n");if (this_player()->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");if( me->query("jing") < 50 )               return notify_fail("你身体不太好,做马车加出事的!\n");if( me->is_busy())return notify_fail("你现在在正忙着呢!\n");if( !environment(me)->query("no_fight")){  message_vision("只有在安全的地方才能叫马车!\n"                 ,me);      	return 1;}if (!arg)return notify_fail("你想去哪里呢?\n");if( !wizardp(me) && me->is_fighting()  )  return notify_fail("你在和别人打架,没空叫马车吧?\n");          else {}          if(arg=="gc") pla = "/d/city/guangchang";     else if(arg=="xx") pla = "/d/xingxiu/xxh1";     else if(arg=="mj") pla = "/d/mingjiao/shanmen";     else if(arg=="em") pla = "/d/emei/qingyinge";     else if(arg=="shl") pla = "/d/shaolin/guangchang1";     else if(arg=="lj") pla = "/d/lingjiu/damen";     else if(arg=="dl") pla = "/d/dali/center";     else if(arg=="xs") pla = "/d/xueshan/shanmen";     else if(arg=="wd") pla = "/d/wudang/guangchang";     else if(arg=="hs") pla = "/d/huashan/zhenyue";     else if(arg=="tam") pla = "/d/city2/tian_anm";     else if(arg=="quz") pla = "/d/quanzhen/damen";     else if(arg=="bt") pla = "/d/baituo/dating";     else if(arg=="qz") pla = "/d/quanzhou/zhongxin";     else if(arg=="gm") pla = "/d/gumu/mumen";     else if(arg=="sz") pla = "/d/suzhou/canlangting";     else if(arg=="gyz") pla = "/d/guiyun/taihu";     else if(arg=="xy") pla = "/d/xiangyang/guangchang";               else {command("snake");               message_vision(HIW"马车不到那个地方啊!\n"NOR, me);               message_vision(HIY"车行里可以去的地方有如下:天安门(tam) 大理(dl) 泉州(qz) 少林(shl)华山(hs) 灵鹫(lj)  武当(wd)    明教(mj) 扬州(gc) 星宿(xx) 雪山(xs) 峨眉(em)  全真(quz)  白驼山(bt) 古墓(gm) 苏州(sz)归云庄(gyz)襄阳(xy)  \n"NOR, me);}     if (me->move(pla)) {          message_vision(HIG"$N对"+query("name")+HIG"说:这附近有没有马车,我们要赶路了\n"+query("name")+HIG"在附近叫了一匹马车,\n$N和"+query("name")+HIG"双双上马,向外飞跑而去。。。\n\n"NOR, me);       message_vision(HIC"\n一路奔驰,终于到了!你和"+query("name")+HIC"双双飞身一跃,跳下马车。\n"NOR,me);this_object()->move(pla);me->add("jing",-30);me->start_busy(4);}     return 1;}string status_color(int current, int max){        int percent;        if( max>0 ) percent = current * 100 / max;        else percent = 100;        if( percent > 100 ) return HIC;        if( percent >= 90 ) return HIG;        if( percent >= 60 ) return HIY;        if( percent >= 30 ) return YEL;        if( percent >= 10 ) return HIR;        return RED;}int do_shape(string arg){	mapping my;	string shape;	int at_pt,pa_pt,do_pt;if (!arg)return notify_fail("你要看谁的状态?\n");if (arg !=query("id"))

⌨️ 快捷键说明

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