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

📄 baby2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
    "左手",    "右手",    "胳膊肘",    "瘦排骨",    "小腿",    "短腿",    "大腿",    "火柴棍大腿",    "罗圈腿",    "哈吧腿",    "水桶腰",    "南瓜腰",    "水蛇腰",    "水萝卜腰",    "麻花腰",    "搓板儿背",    "脚后跟",    "裹脚背",    "大脚趾",    "细脚肘",    "大肚皮",    "啤酒肥肚",    "瘪肚皮",    "驼背",    "肥臀",    "臀尖",  });  string *actions = ({    "不客气地迅速尿了一小滩尿。",    "端起小水枪就狂浇一气。",    "呸了一小口。",    "吐出一小堆粘粘的口香糖渣。",    "张口就舔了几口。",    "将$n舔得死去活来。",    "张开小嘴咬了一口。",    "张开小嘴咬住$n死死不放。",    "咬下一小砣肉。",    "咬下一大块疙瘩肉。",    "咬得$n捶胸顿足哭爹喊娘。",    "咬出两排红牙印儿。",    "咬出一大块瘀血紫疤。",    "揪下一撮毛。",    "揪下一层老皮。",    "扯住一撮细毛不放。",    "硬是扯出一个血囊葫芦。",    "吧嗒吧嗒使劲捶了几拳。",    "捶出一个大囊肿。",    "胡乱踢了几下。",    "踢得$n上吐下泄。",    "砰地一声踢中要害。",    "踢得$n直翻白眼。",    "用大脑袋轰地一撞。",    "用小指扎出几个绣花窟窿。",    "使劲地抓出五道血痕。",    "抓出五串水泡。",    "伸出双手玩命地一掐。",    "咬牙切齿地掐住$n的人中。",    "伸出手掐出好大一个肿块。",    "拽着悠秋千。",    "啪啪左右开弓扇了十几下。",    "扇了个两面红。",    "毫不客气地挠起痒痒儿。",    "挠出一大片粉头痱子。",    "用小手指抠出一小肿疱。",    "用手指抠出一沙疮。",    "掏出一块红疤。",    "抓出一大片青春美丽豆。",  });  string *returns = ({    "然后跑回$N身上。",    "然后悄悄地回到$N手中。",    "再回头一本正经地爬到$N身上。",    "再纵身跃回到$N手中。",    "再回头一跳,跃到$N身上。",    "然后高兴地回到$N手中。",    "然后得意地钻回$N身上。",    "然后十分满意地钻回$N手中。",    "然后兴奋地蹦回$N身上。",    "然后欣喜若狂地蹦回$N手中。",  });  string str1 = my_name+rdm(dos)+rdm(parts)+"上,"+rdm(actions)+"\n";    if (! arg)    return 0;  who = present(arg,environment(this_player()));  if (! who)    return notify_fail ("耍谁?\n");  message_vision ("$N向"+my_name+                  "使了一个眼色,然后若无其事地看了$n一眼。\n",                  this_player(),who);  remove_call_out ("delayed_action");  call_out ("delayed_action",3,str1,this_player(),who);  remove_call_out ("delayed_reaction");  call_out ("delayed_reaction",4,rdm(returns)+"\n",            this_player(),who);  return 1;}void delayed_action (string str, object ob1, object ob2){  message_vision (str,ob1,ob2);}void delayed_reaction (string str, object ob1, object ob2){  message_vision (str,ob1,ob2);}void die(){		int i;	object owner, *enemy;	int jing,qi,exp;owner=this_player();	exp = (int) query("combat_exp");	jing = (int) query("max_jing");	qi = (int) query("max_qi");	if(!environment()->query("no_death_penalty"))		set("combat_exp", exp/10 * 8);	set("eff_qi", qi);	set("eff_jing", jing);	set("qi", qi);	set("jing", jing);if(member_array(owner->query("id"),owner->query("parents"))>-1){owner->set("baby/exp",(int)query("combat_exp"));owner->save();}	::die();}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"))return notify_fail("你要看谁的状态?\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)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["name"], my["combat_exp"],my["age"]	);        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;}int do_cun(string arg){	object me, ob;	me = this_player();	ob = this_object();if (!arg)return notify_fail("你要让谁存档?\n");if (arg !=query("id"))return notify_fail("你要让谁存档?\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)		return notify_fail ("自己的孩子自己管,你不用担这份心啦。\n");                if ( me->is_busy() )                return notify_fail("你上一个动作还没有完成!\n");        if ( me->is_fighting() )                return notify_fail("你还是专心作战吧!\n");	me->set("baby/age",(int)this_object()->query("age"));        me->set("baby/exp",(int)this_object()->query("combat_exp"));//        me->set("baby/skills",this_object()->query("skills"));        me->set("baby/skills",this_object()->query_skills());                if (!wizardp(me)) me->start_busy(8);//	write("年龄"+(int)this_object()->query("age")+"\n");//	write("经验"+(int)this_object()->query("combat_exp")+"\n");//	write("武功"+this_object()->query("skills")+"\n");//	write("年龄"+(int)me->query("baby/age")+"\n");//	write("经验"+(int)me->query("baby/exp")+"\n");//	write("武功"+me->query("baby/skills")+"\n");	write("孩子的情况已经储存完毕。\n");	return 1;}int do_teach(string arg){	object me, ob;	int gin_cost,amount, myskill, itskill;	string student, skill;	me = this_player();	ob = this_object();        if ( me->is_busy()) return notify_fail("你现在正忙着呢。\n");        if ( me->is_fighting() ) return notify_fail("你不能在战斗中教人知识。\n");	if ( !arg || (sscanf(arg, "%s about %s", student, skill) != 2) )		return notify_fail("指令格式:jiao <某人> about <技能>\n");	if ( student != ob->query("id") ) return notify_fail("你要教谁?\n");	if ( !myskill = me->query_skill(skill, 1)) return notify_fail("这项技能你好象还不会呢!\n");if( !SKILL_D(skill)->valid_learn(ob) ) return notify_fail("宝宝显然无法学会这项技能!\n");if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)		return notify_fail ("自己的孩子自己教,你不用担这份心啦。\n");	if ( !living(ob) ) return notify_fail("嗯....你得先把" + ob->name() + "弄醒再说。\n");	if ( ! ob->query("is_baby") ) return notify_fail("人家也有师傅,有得着你来教?\n");	itskill = ob->query_skill(skill, 1);	if(myskill <= itskill) return notify_fail( ob->name()+"以嘲笑的目光望着你。\n");	if( (int)me->query("potential") < 1 ) return notify_fail("你的潜能不够!\n");	gin_cost = (int)ob->query_int();	if( (int)me->query("jing") < gin_cost) return notify_fail("你显然太累了没有办法教!\n");	me->receive_damage("jing", gin_cost);	amount = (int)me->query("int") + (int)ob->query("int");	message_vision(sprintf("$N不厌其烦地教$n「%s」。\n", to_chinese(skill)), me, ob);	if(ob->query("age") < 5) {ob->add( "combat_exp", 1);		me->start_busy(1);		if (ob->query("age") < 5)			message_vision("$n哇哇地大哭起来,$N说什么也哄不住。\n", me, ob);		else			message_vision("$n大哭大闹,说什么也不听$N话。\n", me, ob);	}	else {		ob->add_skill(skill, amount);		ob->add( "combat_exp", amount/20+random(amount/20) );		message_vision(sprintf("$N似乎真的学会了一些「%s」!\n", to_chinese(skill)), ob);		me->start_busy(1);	}	return 1;}varargs void add_skill(string skill, int amount){	if( !find_object(SKILL_D(skill)) && file_size(SKILL_D(skill)+".c") < 0 )		error("F_SKILL: No such skill (" + skill + ")\n");	if( !mapp(skills) ) skills = ([]);	if( undefinedp(skills[skill]) ) skills[skill] = 0;	if( !amount ) amount = 1;	if( !mapp(learned) ) learned = ([ skill : amount ]);	else (int)learned[skill] += amount;	if( learned[skill] > (skills[skill] + 1) * (skills[skill] + 1) ) {		skills[skill]++;		learned[skill] = 0;		this_object()->improve_skill(skill, skills[skill]+1);	}}int accept_object(object me, object obj){	object ob;	ob = this_object();if(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)		return notify_fail ("人家父母会照顾自己的孩子啦。\n");if (obj->is_character())	return notify_fail("你想把活人送人??\n");        return 1;}int do_make(string arg){    object baby;    int number;object me,obj;me=this_player();obj=this_player();if (!arg)return notify_fail("你要看谁的状态?\n");if (arg !=query("id"))return notify_fail("你要看谁的状态?\n");    baby=new("/d/taohuacun/npc/baby2");    baby->set("long", baby->query("long")+"这是"+obj->query("name")+"和"+me->query("name")+"的孩子。\n");    if (random(100)<50)    {        baby->set("gender","男性");        baby->set_name("小"+obj->query("name"),({"xiao "+obj->query("id"),"baby"}));    }    else    {        baby->set("gender","女性");        baby->set_name("小"+me->query("name"),({"xiao "+me->query("id"),"baby"}));    }    me->add("child",1);    baby->set("parents",({me->query("id"),me->query("id")}));    number=me->query("child");    me->set("child_"+number+"/gender",baby->query("gender"));    me->set("child_"+number+"/long",baby->query("long"));    me->set("child_"+number+"/name",baby->query("name"));    me->set("child_"+number+"/id",({baby->query("id"),"baby"}));    me->set("child_"+number+"/parents",baby->query("parents"));    me->delete_temp("is_bearing");    me->save();    obj->save();   //this needs to be put at the last since   //can only move the baby after it's parameters are set.    if(!baby->move(environment(me)))        baby->move(environment(environment(me)));return 1;}int do_order(string arg){	object me = this_player();	string type, cmd;	int i;		seteuid(getuid());	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(member_array(this_player()->query("id"),this_object()->query("parents"))<-1)		return notify_fail ("自己的孩子自己管,你不用担这份心啦。\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		command("nod");}

⌨️ 快捷键说明

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