pet.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 540 行 · 第 1/2 页
C
540 行
return notify_fail("这里不准战斗。\n");if( query_temp("is_rided_by"))return notify_fail("你的宏物不是正被你骑着吗!\n"); if( !arg ) return notify_fail("你想杀谁?\n"); if(!objectp(obj = present(arg, environment(me)))) return notify_fail("这里没有这个人。\n"); if( environment(me)->query("no_fight") ) return notify_fail("这里不准战斗。\n"); if( !obj->is_character() || obj->is_corpse() ) return notify_fail("看清楚一点,那并不是活物。\n"); if( obj->query_temp("no_kill") ) return notify_fail("不能打,打不得啊!\n"); if((int)obj->query("age") <= 17 && userp(obj)) return notify_fail("为了世界更美好,放过小孩子吧.\n");if( !living(obj) && userp(obj) ) return notify_fail("宏物不能攻击已经昏了的玩家。\n"); if(userp(obj) && (int)obj->query("combat_exp") < this_object()->query("combat_exp")) return notify_fail("宏物不能向比自己低的玩家进攻.\n");//pk if( userp(obj) && me->query_condition("killer")) return notify_fail("你已经被通辑了,不要再乱杀玩家了!\n"); if( userp(obj) && obj->query("combat_exp") < me->query("combat_exp") && me->query_condition("killer")) return notify_fail("你已经被通辑了,不要再乱杀玩家了!\n"); if( !living(obj) && userp(obj) && obj->query("combat_exp")/2 > me->query("combat_exp") ) return notify_fail("你想要杀此人,但他比你强太多,你不敢动手。\n"); //免战系统 if (userp(me) && userp(obj) && obj->query_temp("nokill") ) return notify_fail("那人启用了免战牌!\n"); if (userp(me) && userp(obj) && me->query_temp("nokill") ) return notify_fail("你启用了免战牌!\n"); if( userp(me) && userp(obj) && obj->query_condition("nokill") && !obj->query_condition("killer")) return notify_fail("那个人刚被杀过,放过他吧!\n"); message_vision( sprintf("$N对$n一指,对%s命令道:"上!"\n",this_object()->name()),me,obj); me->add("jing",-5); add("jing",-10); if(random(50) > query("obedience") ) command("emote 很不情愿地哼了一声。"); else kill_ob(obj); return 1; }int do_teach(string arg){ object me; int gin_cost,amount; int myskill, itskill; me = this_player(); if(!myskill = me->query_skill(arg,1)) return notify_fail("这项技能你好象还不会呢!\n"); if(arg != "unarmed" && arg != "dodge" && arg != "parry" && arg != "puyaogedou" && arg != "force") return notify_fail("它学不会这项技能的!\n"); itskill = query_skill(arg,1); if(myskill <= itskill) return notify_fail(name()+"以嘲笑的目光望着你。\n"); if((int)me->query("potential")-(int)me->query("learned_points") < 2) return notify_fail("你的潜能不够!\n"); gin_cost = (int) query_int(); if((int)me->query("jing") < gin_cost) return notify_fail("你显然太累了没有办法教!\n"); me->receive_damage("jing",gin_cost); me->add("potential",-2); amount = (int)me->query("int") * (int) query("int"); message_vision(sprintf("$N不厌其烦地教$n「%s」。\n",to_chinese(arg)),me,this_object()); if(random(50) > query("obedience") ) command("emote 很不情愿地哼了一声。"); else { improve_skill(arg,amount); improve_skill("puyaogedou", random(me->query_int()/2)); message_vision(sprintf("$N似乎真的学会了一些「%s」!\n",to_chinese(arg)),this_object()); } 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; my = query_entire_dbase(); printf(HIC"≡"HIY"──────────────────────────────"HIC"≡\n"NOR);printf("精力:%s%3d/ %3d %s(%3d%%) 气血:%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("内力: %d\t\t内力上限: %d\n", query("neili"), query("max_neili") ); printf("主人: "HIW"%s"NOR"\t\t经验: %d\t\t"HIR"杀气: %d\n"NOR, my["owner"], my["combat_exp"],my["bellicosity"] ); printf("才智: %d\t\t体质: %d\t\t体态: %d\n", query_int(), query_con(),query_per() ); printf("速度: %d\t\t力量: %d\t\t灵性: %d\n", query_dex(), query_str(),query_kar() ); printf("驯服度: "HIM"%d"NOR"\t\t个性: %d\n", query_obe(), query_tol() ); 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(HIB"攻击力: %d\t\t\t\t"NOR+HIY"防御力: %d\n\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;}void unconcious(){object me;string file;me=this_player();add("petdie",1);if (query("petdie")>10){me->delete("marks/pet");write(HIR"你的宏物,由于收伤过多,而死亡了\n"NOR);}die();}int do_move(string arg){ string pla; object me = this_player(); if( query("up1") < 2 )return notify_fail("你的宏物还没有到终级.\n");if(!query_temp("is_rided_by"))return notify_fail("你还没有骑上你的宏物呢!\n");if( !me->query_temp("is_riding") )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 { message_vision(HIG"$N对着自己的宏物做了一个手势,然后飞身跃上,身手很是矫捷。。\n"+"$N爬上自己的宏物,大喝一声“去吧”,只见宏物向外飞跑而去。。。\n\n"NOR, me);} 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 { message_vision(HIR"宏物跑了半天,没找到要去的地方!\n"NOR, me); message_vision(HIR"目前你可以去的地方有如下:天安门(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(HIC"\n到了!你飞身一跃,跳下自己的宏物。\n"NOR,me);me->add("jing",-30);me->start_busy(4);} return 1;}int do_pfm(string arg){ int obedience; object me = this_player();if( query("up1") < 1 )return notify_fail("你的宏物还没有这个能力.\n");if( !is_fighting())return notify_fail("你的宏物现在没有站斗啊?\n");if( query_temp("is_rided_by"))return notify_fail("你的宏物不是正被你骑着吗!\n");if( me->is_busy())return notify_fail("你现在正忙着呢!!\n");if( me->query("jing") < 50 ) return notify_fail("你精神不够旺盛!你吃不消的!\n"); me->add("jing",-5); me->start_busy(random(7)); obedience = query("obedience"); if(random(50) < obedience ){ command("emote 大声努吼了一下。");command("perform unarmed.pfm1");command("perform unarmed.pfm2");command("perform unarmed.pfm3");command("perform unarmed.pfm4");command("perform unarmed.pfm5");command("perform unarmed.pfm6");} else command("emote 很不情愿地哼了一声。"); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?