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

📄 long2.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 5 页
字号:
// 已完成部分:// 1, 增加了自动跟随的功能// 2, 把主人离开后自动清除的程序从heal_up移到了heart_beat// 3, 由于增加了zhaohuan命令,ask_go()命令可以取消了// 4, kill时自动保护的程序有错误,已纠正// 5, 由于丫环的参数是保存在自己身上的,如果启用sendto的功能会有很多问题,所以暂时关闭// 6, 由于丫环的skills部分的mapping直接映射到玩家的dbase里,所以不需要再做特别的save程序了// 7, 丫环的主体初始化部分转移到了/cmds/usr/zhaohuan.c->clone_guard函数里// 8, 为无名居士增加了申请丫环的功能// 9, party.h用来存放各门派功夫的列表// 10,修改了att和kill,不能杀自己或比自己弱小的玩家// 11,增加了lianxi命令来指导丫环练习武功// 12,增加了接受东西和比武的判断// 13,增加了order指令,可以用来命令丫环执行某个指令,可以执行的指令在数组cmds里定义// 14,order指令增加了accept_object和accept_fight的接口// 15,用chat()代替了heal_up()// 16,完成自动exert和perform的功能,玩家可以设置,移除疗伤的ask// 17,增加了让丫环候命的功能// 18,增加了让丫环继续跟随你的功能// 19,完成了让丫环在玩家气血低于一定百分比时启动自动保护的功能,并在set里加了save_me参数// 20,比武场不死,如果正常死亡,all skills - 2// 21,完成各门派功夫的阵列// 22,增加了改名字的功能// 23,增加了control指令,可以用天心通进行遥控// 24,zhaohuan指令加了限制,每15分钟才能召唤一次// 25,不能在战斗或忙乱状态ask回家// 26,重写了chat()函数,使她能更好的自动powerup和perform// 27,加入了玩家设置战斗指令阵列,可以用ticks来设定战斗指令// 28,加入了set_long和set_title,原来的name指令也相应改为set_name// 29,修改了指令显示的描述// 30,增加了男性的随从,如果你的男的只能问noname要丫环,否则只能要侍童// 待完成部分:// 1, party.h里各门派的功夫没有全部完成 (已完成)// 2, 还没有做skills升级的功能 (已完成)// 3, 未确定是否应该开放让丫环学新的武功 (已确认,不能开放)// 4, 未完成让丫环在玩家气血低于一定百分比时启动自动保护的功能 (已完成)// 5, 不明白为什么丫环kill打昏后不会自动杀死对方?// 6, 未完成命令丫环enable、bei、wield、unwield的功能 (已完成)// 7, 未完成设置自动pfm的功能 (已完成)// 8, 不清楚还有什么需要增加的功能#include <ansi.h>#include <combat.h>inherit NPC;#include "action.h"string *cmds = ({"wield", "unwield", "wear", "remove", "enable", "jifa", "prepare", "bei", "exert","yun", "perform", "yong", "enforce", "jiali"});void random_chat();int ask_go();int ask_kiss();int ask_wait();int ask_home();int ask_eat();int ask_fight();int ask_fight1();int ask_fight2();int ask_fight3();string replace_color(string,int);void exec_cmd(object me, string arg);mixed get_auto_actions(string action);void change_combat_mode(object me, int mode);int check_legal_title(string name);create_wine(string nmstr, string* idlist, string cup, string longstr){        object obj;object me=this_player();        obj = new(__DIR__"obj/wine");        obj->set_name(cup, idlist);        obj->set("guardfood",1);        if (longstr)              obj->set("long", longstr);        else              obj->set("long", RED+"一杯醇正的" + nmstr + "。\n" + NOR);        obj->set("liquid/name", nmstr);write( HIG "酒:"+nmstr+HIG"做好了。"+"\n" NOR);        obj->move(me);}create_water(string nmstr, string* idlist, string cup, string longstr){        object obj;object me=this_player();        obj = new(__DIR__"obj/water");        obj->set_name(cup, idlist);        obj->set("guardfood",1);        if (longstr)              obj->set("long", longstr);        else              obj->set("long", YEL+"一杯可口的" + nmstr + "。\n" + NOR);        obj->set("liquid/name", nmstr);write( HIG "荼:"+nmstr+HIG"买好了。"+"\n" NOR);        obj->move(me);}create_food(string nmstr, string* idlist, string longstr){        object obj;object me=this_player();        obj = new(__DIR__"obj/food");        obj->set_name(nmstr, idlist);        obj->set("guardfood",1);        if (longstr)              obj->set("long", longstr);        else              obj->set("long", GRN+"一盘热气腾腾, 香喷喷的"+nmstr+"。\n"+NOR);write( HIG "菜:"+obj->query("name")+HIG"做好了。"+"\n" NOR);        obj->move(me);}void create(){        set_name(HIW"小龙女"NOR, ({ "shi nu",  "shinu"}));	set("title", HIG "风动梨花" NOR);	set("long", HIC "她长得极美,尤其是那双眼睛,清纯得像一潭碧水。\n"+	"其容色晶莹如玉,映照于红红烛光之下,娇美不可方物。\n"+	"回眸嫣然一笑,雅如仙子下凡。眼波流转之间,\n"+	"便把你的心灵,推向梦中极美的境界。\n" NOR);        set("marry","hxsd");        set("gender", "女性"); 	set("age", 18);        set("str", 50);        set("cor", 50);        set("baohu","hxsd");        set("couple/couple_name","小人物");        set("cps", 50);        set("int", 50);        set("dex", 200);        set("per", 100);        set("agi",55);	set("no_get",1);	set("no_put",1);	set("no_get",1);	set("no_drop",1);	set("no_beg",1);	set("no_steal",1);	set("ownmake",1);        set("combat_exp", 1000000);        set("score", 9000);        set("shen", 9000);        set("max_qi",80000);        set("max_jing",80000);        set("max_neili",160000);        set("neili",160000);        set_skill("tianluo-diwang",400);        set_skill("yinsuo-jinling",400);        set_skill("strike",400);        set_skill("whip",400);        set_skill("yangyanshu", 400);        set_skill("yunv-xinfa", 400);    //玉女心法        set_skill("sword", 400);        set_skill("yunv-jian", 400);     //玉女剑        set_skill("quanzhen-jian",400);  //全真剑        set_skill("dodge", 400);        set_skill("yunv-shenfa", 400);   //玉女身法        set_skill("parry", 400);        set_skill("hubo", 400);          //双手互搏        set_skill("unarmed",400);        set_skill("meinv-quan", 400);    //美女拳法        set_skill("literate",400);        set_skill("qufeng",400);         //驱蜂之术        set_skill("wuzhan-mei",400);        set_skill("dodge",400);        set_skill("spells",400);        set_skill("magic-old",400);        map_skill("strike", "tianluo-diwang");        map_skill("force", "yunv-xinfa");        map_skill("spells", "magic-old");        map_skill("sword", "yunv-jian");        map_skill("dodge", "tianluo-diwang");        map_skill("parry", "yunv-jian");        map_skill("unarmed", "meinv-quan");        prepare_skill("strike","tianluo-diwang");        prepare_skill("cuff","meinv-quan");        set("chat_chance", 10);        set("chat_msg", ({		(: command, "emote 眨了眨眼道:我们差不多该上路了吧,好吗!" :),		(: command, "emote 把头一挥,满头乌发随风飘荡,如仙女下凡一般。" :),                (:random_chat:),        }) );	set("inquiry", ([		"走" : (: ask_go :),		"亲热" :  (: ask_kiss :),		"等待" :  (: ask_wait :),		"回家" :  (: ask_home :),		"做饭" :  (: ask_eat :),		"普通攻击" :  (: ask_fight :),		"一般攻击" :  (: ask_fight1 :),		"全力攻击" :  (: ask_fight2 :),		"牵制攻击" :  (: ask_fight3 :),	]));	setup();        carry_object("/clone/cloth/female-shoe")->wear();        carry_object(sprintf("/clone/cloth/female%d-cloth", random(8) + 1))->wear();}int init(){ object ob;ob = this_player();::init();       add_action("do_quit","kill");if (userp(ob)&& ob->query("id")==query("host_id")){       add_action("do_att","att");       add_action("do_ting","ting");       add_action("do_hulian","hulian");       add_action("do_sha","sha");       add_action("do_move","mache");       add_action("do_shape","shape");       add_action("do_lingwu","taolun");       add_action("do_heji","heji");       add_action("do_lian","lianxi");       add_action("do_order", "order");       add_action("do_name", "set_name");       add_action("do_long", "set_long");      add_action("do_title", "set_title");      add_action("do_ticks", "ticks");}}void random_chat(){  string *e,str="";   int i;   object npc,*inv;if (!environment(this_object()))   return;   inv=all_inventory(environment(this_object()));	if(!inv)	return;	if(!sizeof(inv))	return;    e = sort_array(EMOTE_D->query_all_emote(), 1);   str=e[random(sizeof(e))];   command(str+" "+inv[random(sizeof(inv))]->query("id"));   set("answer",str);     return;}void smiling (object who){  if (random(2))    command("smile");  else    command("smile "+who->query("id"));}int ask_go(){  object me;  string new_name,new_id,host_id;   me=this_player();	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");//		 sscanf(query("id"),"%s's long er",host_id);		 if(query("id")==query("host_id"))           {say(query("name")+"睁大眼睛看了看"+				me->query("name")+",说:当然愿意啦,我都听你的。\n");            return 1;           }	 if(me->query("id")!=query("host_id"))           {say(query("name")+"睁大眼睛看了看"+				me->query("name")+",说:不行的,我得听我主人的。\n");			return 1;           }	   command("nod");	   command("say 主人待我恩重如山,我一定会尽心尽力的服侍你!");           set_leader(me);return 1;}int ask_kiss(){  object me;  string new_name,new_id,host_id;  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(me->is_busy()){command("say 主人,你太忙了,我帮不上你!");        return notify_fail("你上一个动作还没有完成。\n");return 1;}//  if(query("id")!="long er")//        {//	 sscanf(query("id"),"%s's long er",host_id);	 if(me->query("id")==query("host_id"))           {	   if(random(10)>7)	                     {	   say(query("name")+"满脸羞得通红,垂下头来,缓缓的点了点头。\n");           command("lovelook "+ me->query("id") );           command("cat "+ me->query("id") );           command("kiss "+ me->query("id") );           write(CYN"你对"+query("name")+CYN"微微一笑,流露出无限的喜爱之情。\n"NOR);           write(CYN" "+query("name")+CYN"回眸嫣然一笑,雅如仙子下凡。其容色晶莹如玉。\n"NOR);           command("makelove "+ me->query("id") );           me->start_busy(1);           this_object()->start_busy(1);           }		           else {	   me->start_busy(1);           this_object()->start_busy(1);	   say(query("name")+"啊的一声,一下子跳将开去,说:不嘛,不要。\n");	   return 1;}           }return 1;}int ask_wait(){  object me;  string new_name,new_id,host_id;  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(me->is_busy()){command("say 主人,你太忙了,我帮不上你!");        return notify_fail("你上一个动作还没有完成。\n");return 1;}//  if(query("id")!="long er")//        {//	 sscanf(query("id"),"%s's long er",host_id);	 if(me->query("id")==query("host_id"))           {           command("inn " + me->query("id"));           command("say 我暂时在这里等你,如果有什么事,记得召唤我哦!");           set_leader(0);	   return 1;           }//	}//say(query("name")+"说道:你是谁?我又不认识你,就不听你的!");return 1;}int ask_home(){  object me;  string new_name,new_id,host_id;  me=this_player();	if (this_object()->is_busy())		return notify_fail("现在正忙着呢。\n");	if( this_object()->is_fighting() )		return notify_fail("已经在战斗中了,学一点实战经验吧。\n");	if( !living(this_object()) )		return notify_fail("嗯....你得先把" + this_object()->name() + "弄醒再说。\n");if (this_player()->query("id")!=query("host_id"))return notify_fail("你无权使用这个命令!\n");        if(me->is_busy())

⌨️ 快捷键说明

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