📄 long2.c
字号:
// 已完成部分:// 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 + -