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

📄 meipo.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
// NPC: /d/ruzhou/npc/meipo.c 只处理结婚与拜堂// llm 99/06/04 修改#include <ansi.h>inherit NPC;//inherit F_CLEAN_UP;int do_marry(string arg);int waiting(object ob);int do_name(string target);int do_chase(object ob);int do_ok(object ob);int meipo_waiting(object ob,object me,object obj);int ready_marry(object ob,object me,object obj);int wait_marry(object ob,object me,object obj);int start_marry(object ob,object me,object obj);int do_back(object ob);int do_bai(string arg);void create(){	set_name("媒婆", ({ "meipo","po" }) );	set("title", HIM""NOR);	set("gender", "女性" );	set("age", 43);	set("long",		"一位精明能干的老媒婆。\n");	set("combat_exp", 100000);	set("attitude", "friendly");	set("inquiry", ([		"结婚" : "媒婆笑眯眯地点头道:“是啊... 要结婚(marry)当然要找我来做媒的呀!”\n",		"marry" : "媒婆笑眯眯地点头道:“是啊... 要结婚(marry)当然要找我来做媒的呀!”\n",      "登记" : "媒婆笑眯眯地点头道:“是啊... 要结婚(marry)登记当然要找我来做媒的呀!”\n",		"离婚" : "媒婆脸色一变,有点勉强地笑道:“要...离婚(unmarry)?唉...!我可是看你们成婚的呀!\n"      	"不过你们要是一定要离的话,那得去汝州知府处办理了!”\n",		"unmarry" : "媒婆脸色一变,有点勉强地笑道:“要...离婚(unmarry)?唉...!媒都是我作\n"      	"的,只好由我办,真是作啊!”\n",      "费用":"媒婆嘻嘻笑道:“结婚这么大的事,花费的地方可不少,要50 gold,,而离婚\n"      	"更要花费不少钱,所以要100 gold。”\n",	]) );	set_skill("literate", 100);	set_skill("dodge", 500);	set_skill("unarmed", 300);   setup();	add_money("gold", 4);	carry_object("/clone/misc/cloth")->wear();}void init(){	object ob;	::init();	add_action("do_marry", "marry");   add_action("do_bai","拜");	add_action("do_name","请");}int accept_object(object me, object ob)//交钱{   if (!ob->query("money_id"))     	return notify_fail("媒婆嘻嘻笑道:“我老婆子有吃有喝不收什么礼,您还是拿回去吧!”\n");	if(!me->query_temp("ask_money"))//由下面判断交钱的人是否符合结婚条件。   	return notify_fail("媒婆迷惑地问:“你想干什么?白给我钱?”\n");  	if(ob->value() < 500000)	      return notify_fail("媒婆皱了皱眉头说道:“钱太少了吧?50 gold,结婚这么大的事,再少就不行了。”\n");	message_vision("媒婆接过钱对$N说:“这位"+RANK_D->query_respect(me)+"我可没赚你的钱,呆会儿我还要张罗喜堂、还\n"   		"要雇人、还有办酒宴,搞不好我还得赔上一点的!而且我还可以帮你发请束,\n"         "你可以输入‘请 <某人的中名>’。”\n",me);	this_object()->set_temp("marry/money",me->name());   //记录给过钱的人  	return 1;}int do_name(string target)//请客人{	object me,ob,dest, *all;	int i;	me = this_player();	ob = this_object();	all = users();	if (me->is_busy())		return notify_fail("媒婆说道:“你忙完后再和我说话吧!”\n");	if( ob->is_fighting()||me->is_fighting() )		return notify_fail("媒婆说道:“现在没功夫!”\n");	if( !living(ob) )		return notify_fail("你还是先想办法把媒婆救醒吧。\n");	if((string)ob->query_temp("marry/money")!=(string)me->name())      return notify_fail("媒婆斜了斜你:“你又没交钱!”\n");	if(ob->query("waiting_target"))		return notify_fail("媒婆笑笑说:“不要急,我的小喜鹊们还没有飞回来呢!”\n");	if( !target || target==" ")		return notify_fail("媒婆抽出一张请柬写了几笔问:“你想请谁来参加你的婚礼?告诉我他(她)的名字!”\n");	for(i=0; i<sizeof(all); i++)	{		if( target == all[i]->name() || target == all[i]->query("id") )			dest = all[i];	}	if( !dest )		return notify_fail("媒婆告诉你:“很遗憾,您想请的人他现在不在游戏中!”\n");	if (dest->is_ghost())   	return notify_fail("媒婆婉惜地地告诉你:“据我们所知,您要请的人已经死了,您请节哀顺便!”\n");	ob->set("waiting_target", dest->query("id"));	ob->set("me_name", me->query("name"));	ob->set("me_id", me->query("id"));	message_vision(HIG"媒婆一张喜柬上写上几个字,双手一拍,从东廊就飞出一只小喜鹊,衔着喜帖,\n"   "扑愣愣地一下子消失在天空中了。\n" NOR,me);	call_out("do_chase", 1, ob);	return 1;}int do_chase(object ob)//喜鹊送请柬{	object dest,obj;	dest = find_player(ob->query("waiting_target"));	if( !objectp(dest) || !environment(dest) )	{		call_out("waiting", 0, ob);		return 1;	}	message_vision(HIY"天空中突然飞过来一只花喜鹊,落在$N肩头,将衔着的一张喜柬递给$N。\n" NOR, dest);	obj = new(__DIR__"obj/xitie");        obj->set("name",HIR+(string)ob->query("me_name")+"("+(string)ob->query("me_id")+")"+"的结婚请帖" NOR);	obj->move(dest);	call_out("do_ok", 0, ob);	return 1;}int waiting(object ob)//喜鹊等待{	object dest;	dest = find_player(ob->query("waiting_target"));	if ( objectp(dest)&&dest->is_ghost() )	{			ob->delete("waiting_target");			call_out("do_ok", 1, ob);			return 1;	}	remove_call_out("waiting");	call_out("waiting", 60, ob);   return 1;}int do_ok(object ob)//喜鹊送柬成功回来{	message("vision", "突然看见花喜鹊从窗外飞进来,落在媒婆身旁,媒婆笑眯眯地抚着花喜鹊的头后\n"		"说道:“请柬刚才已经都送到了!您还想请谁?不想请了就开始结婚手续(marry sb.)吧!”\n", environment(), ob);  	ob->delete("waiting_target");	ob->delete("me_name");	ob->delete("me_id");	return 1;}int do_marry(string arg) //判断结婚{	object obj, me,ob,old_target;	me = this_player();	ob = this_object();	if ( (string)me->query("gender") == "无性")		return notify_fail("媒婆哼了一声:“你无根无性,结个什么婚?!”\n");        if (((int)me->query("age") < 18) && (me->query("gender") == "男性")                ||((int)me->query("age") < 16) && (me->query("gender") == "女性"))                return notify_fail("媒婆笑嘻嘻地说道:“你们现在还年轻,以后再说吧!”\n");	if (me->is_busy())		return notify_fail("媒婆说道:“你现在不是正忙着吗?”\n");	if( me->is_fighting(this_object()) )	{		if( !this_object()->is_killing(me) )			this_object()->kill_ob(me);		return notify_fail("媒婆说道:“好,好,老娘送你去阴间成婚!”\n");	}	if( this_object()->is_fighting() )		return notify_fail("媒婆说道:“没看见这儿有人捣乱吗!“\n");	if( !living(this_object()) )		return notify_fail("你还是先想办法把媒婆救醒吧。\n");	if( me->is_fighting() )		return notify_fail("媒婆说道:嘿嘿,你先还是料理完你的朋友再说吧!\n");	if( !environment() || base_name(environment()) != query("startroom"))		return notify_fail("媒婆说道:“真抱歉,我现在很忙,请您等一会到红娘庄来找我吧。”\n");	if( (string)me->query("class")=="bonze"||(string)me->query("jobname")=="bonze" )		return notify_fail("媒婆笑道:“哈哈!怎么,信佛的也想开色戒了吗?”\n");	if( (string)me->query("jobname")=="taoist" )		return notify_fail("媒婆摇了摇头道:“你修了道竟还是凡心不泯,唉!你要是真想,还是还了俗再来吧!”\n");	if(!arg ||!find_player(arg) )		return notify_fail("媒婆问道:“你想和谁喜结良缘?”\n");	if(!objectp(obj = present(arg, environment(me))))		return notify_fail("媒婆说道:“结婚可是要两个人一起来的呀!”\n");	if( me->query_temp("pending/pro"))		return notify_fail("媒婆奇道:“咦?你的婚礼不是正在进行中吗?还要问什么?”\n");	if( obj->query_temp("pending/pro") )		return notify_fail("媒婆说道:“你想给别人搅局吗?”\n");	if( !obj->is_character() )		return notify_fail("媒婆说道:“你这不是拿自己开涮吗。”\n");	if((string)obj->query("class")=="bonze"||(string)me->query("jobname")=="taoist")		return notify_fail("媒婆笑道:哈哈!"+ obj->name() +"可是出家人,别跟人家开玩笑了。\n");	if( mapp( me->query("couple")))	{      if ((int)me->query("couple/married")>2)	      return notify_fail("媒婆翻了翻姻缘簿,板下脸说道:“我早就跟你说过,怎么又来了?\n"   	   "这次我实在不能帮你什么了,你结婚次数太多了,按朝廷纲纪,是不\n"      	"准再办理结婚手续了,你们去做对野鸳鸯吧!\n");              if ( me->query("couple/have_couple") )              {                      if ( obj == present((string)me->query("couple/couple_id"), environment(me)) )                              return notify_fail("媒婆奇道:“你们本来就是夫妻呀!干嘛还要再来?”\n");                      if ((string)me->query("gender") == "女性")                              return notify_fail("媒婆说道:“你已经是有夫之妇了,这里不允许重婚的。”\n");                      else                              return notify_fail("媒婆说道:“你已经是有妇之夫了,这里不允许重婚的。”\n");              }        }        if( mapp( obj->query("couple") ) )        {      if ((int)obj->query("couple/married")>2)              return notify_fail("媒婆翻了翻姻缘簿,叹了口气道:“早跟你们说过,怎么又离了,这\n"           "次我实在不能帮你们什么了,你是没问题,但"+obj->name()+"结婚次数太多了,\n"        "按朝廷纲纪,是不准再办理结婚手续了,你们去做对野鸳鸯吧!\n");        if( obj->query("couple/have_couple") )                {                        if((string)obj->query("gender") == "女性")                                return notify_fail("媒婆说道:可惜她已经是有夫之妇了,这里不允许重婚的。\n");                        else                                return notify_fail("媒婆说道:可惜他已经是有妇之夫了,这里不允许重婚的。\n");                }        }        if( !living(obj) )                return notify_fail("媒婆摇摇头说道:“"+ obj->name()+"现在还没清醒过来,我还不能确定你们双方都是自愿的。”\n");	if((string)obj->query("gender") == (string)me->query("gender"))		return notify_fail("媒婆惊道:“哇!你是同性恋?对不起,老婆子处理不了这事!”\n");	if(obj == me)		return notify_fail("媒婆说道:“你这不是拿自己开涮吗?”\n");       if( !userp(obj) )                return notify_fail("媒婆说道:“对不起,你只能和玩家结婚。”\n");   if(ob->query_temp("marry/money")!=me->name()   	&&ob->query_temp("marry/money")!=obj->name())   //只要其中有一个人给过就行	{   	me->set_temp("ask_money",1);       obj->set_temp("ask_money",1);//防止条件不符白结婚   	return notify_fail("媒婆笑嘻嘻地道:结婚总要花一笔钱的喽!要50 gold,不给钱,我可没法给你办!\n");   }	if((int)me->query("unmarried")>2)	{   	me->delete("unmarried");      me->delete("married");      me->set("couple/married",2);      message_vision("媒婆翻了翻姻缘簿,对$N说道:“婚姻大事怎么会象你这样随随便便?现在\n"      "再给你最后一次机会,再离婚,我这儿就不给你办结婚了!”\n",me);   }	if((int)obj->query("unmarried")>2)   {   	obj->delete("unmarried");      obj->delete("married");      obj->set("couple/married",2);      message_vision("媒婆翻了翻姻缘簿,对$N说道:“婚姻大事怎么会象你这样随随便便?现在\n"      "再给你最后一次机会,再离婚,我这儿就不给你办结婚了!”\n",obj);   }	if(!me->query_temp("marry/answer"))   {	   message_vision(HIG"媒婆摊开姻缘簿,絮絮叨叨地说道:“结婚是一辈子的终身大事,可不能\n"   	"随随便便,否则,这世道就乱了。每个人只能在我这里办三次结婚手续。\n"	   "让我看看:"HIC"  "+me->name()+"结过"+(int)me->query("couple/married")+"次婚;  "+obj->name()+"结过"+(int)obj->query("couple/married")+"次婚;    "   	HIG"好的,\n最后,你们再认真考虑一下:是不是真心愿意和对方结婚?”\n"NOR,me);   	obj->set_temp("marry/answer",1);   }	if( (object)obj->query_temp("pending/marry")!=me )	{		if ((string)obj->query("gender") == "女性")			message_vision(MAG "\n$N对著$n问道:“你愿意嫁给我吗?”\n\n"NOR, me,obj);		else			message_vision(MAG "\n$N对著$n问道:“你愿意娶我吗?”\n\n"NOR, me,obj);		if( objectp(old_target = me->query_temp("pending/marry")) && old_target != obj )			tell_object(old_target, YEL + me->name() +                        "取消了和你结婚的念头。\n" NOR);		me->set_temp("pending/marry", obj);		if ((string)obj->query("gender") == "女性")			tell_object(obj, MAG "如果你愿意嫁给他,请你也对" + me->name()			+ "("+(string)me->query("id") + ")"+ "下一次 marry 指令。\n" NOR);		else			tell_object(obj, MAG "如果你愿意娶她,请你也对" + me->name() +			"("+(string)me->query("id") + ")"+ "下一次 marry "+(string)me->query("id")+" 的指令。\n" NOR);      write(MAG"现在你急切盼望着你的心上人说同意...\n" NOR);      return 1;	}	message_vision(MAG "\n$N对著$n大声说道:我愿意!\n\n"NOR, me,obj);	message_vision(MAG "媒婆呵呵笑道:“那就好,那就好,都跟我到东边的姻缘堂来准备拜堂吧!”\n"   	"说完,媒婆一扭一扭地走进了东边的大堂。\n" NOR, obj, me);	me->delete_temp("ask/marry");	ob->move("/d/ruzhou/yinyuan-tang");	me->set_temp("pending/pro",1);	obj->set_temp("pending/pro",1);	me->set("couple/couple_name",(string)obj->name());	me->set("couple/couple_id",obj->query("id"));	obj->set("couple/couple_name",(string)me->name());

⌨️ 快捷键说明

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