jia.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 260 行
C
260 行
// m_jia.c#include <ansi.h>#include <armor.h>inherit S_ROBE;int duanlian(object weapon);int do_hui(object weapon);string query_autoload() { return 1 + ""; } //autoload weaponvoid init(){ add_action("do_duanlian","lianjia"); add_action("do_hui","huijia"); add_action("do_levelup","jijia");}void create(){ object me; string w_name,w_id,w_or; int w_lv; me = this_player();//读入数据 w_name=me->query("jia/name"); w_id = "my "+me->query("jia/id"); w_or = me->query("jia/or"); w_lv = me->query("jia/lv"); if (!me->query("jia/name")) { w_name="自制的甲衣"; } if (!me->query("jia/id")) { w_id="jia"; } if (!me->query("jia/or")) { w_or="千年神木"; } if (!me->query("jia/lv")) { w_lv=1; } if (me->query("jia/lv",1) > 200) { w_lv=200; } set("material", "fur"); set_name(w_name, ({w_id})); set("unit", "件"); set("value",0); set("no_get",1); set("no_drop",1); set("no_put",1); set("no_beg",1); set("no_steal",1); set("ownmake",1);set("material", "fur");// set("material", "cloth");// set_desc(w_lv,w_or,w_name); switch(w_or) { case "千年神木" : set_weight(500);set("material", "fur"); break; case "海底金母" : set_weight(1000);set("material", "fur"); break; case "寒丝羽竹" : set_weight(30);set("material", "fur"); break; default : } set("unit", "件"); if( me->query("jia/wear_msg")) set("wear_msg", me->query("jia/wear_msg")+"\n"); else set("wear_msg", "$N穿上"+w_name+"在身上。\n"); if( me->query("jia/unequip_msg")) set("unequip_msg", me->query("jia/unequip_msg")+"\n"); else set("unequip_msg", "$N身上的"+w_name+"脱了下来,眨眼间已然不见影踪。\n"); set("armor_prop/armor", w_lv * 10);set("armor_type","cloth");set("material", "fur"); setup();} int do_duanlian(object weapon){ object me; int w_zhi, w_level; string w_or; me=this_player(); weapon=this_object(); if( !weapon ) return notify_fail("你要锻炼什么?\n"); if(weapon->query("equipped") ) return notify_fail("甲你正穿着呢!\n"); if( (int)me->query("max_neili") < 10 ) return notify_fail("你的内力不够,无法锻炼甲气!\n"); if( (int)me->query("max_neili") < 500 ) return notify_fail("你的内力不够,无法锻炼甲气!\n");if (userp(me) && !me->query_skill_mapped("force"))return notify_fail("你没有内功,在使用中啊!\n"); if( me->query_skill("shenzhao-jing", 1) > 100 ) return notify_fail("神照经的内力,无法锻炼兵器!\n"); if( me->query_skill("shenzhao-jing", 1) > 100 && (int)me->query("max_neili") < 5000 ) return notify_fail("你的内力不够,无法锻炼兵器!\n"); if( (int)me->query("qi") < 150 ) return notify_fail("你的气不够,无法锻炼甲气!\n"); if( (int)me->query("eff_qi") < 30 ) return notify_fail("你现在的体力太弱,无法锻炼甲气!\n"); if( (int)me->query("eff_jing") < 10 ) return notify_fail("你现在的精力无法集中,不能锻炼甲气!\n"); if( ((int)me->query("potential") - (int)me->query("learned_points"))< 2 ) return notify_fail("你的潜能不够,无法锻炼甲气!\n"); message_vision(HIR "$N手指甲脊,一股内力丝丝的传了进去。\n" NOR, me); me->add("max_neili",-10); me->set("neili", (int)me->query("max_neili")); me->add("qi",-150); me->add("eff_qi",-30); me->add("jing",-30); me->add("eff_jing",-30); me->add("learned_points", 2); w_zhi = (int)me->query("jia/value"); w_zhi++; me->set("jia/value", w_zhi); w_or = (string)me->query("jia/or"); w_level = (int)me->query("jia/lv"); if( w_zhi >= ((w_level + 1) * (w_level + 1))) { w_level++; me->set("jia/lv", w_level); message_vision(CYN "甲身忽的一闪,一道银光隐入$N的甲中,不见了!\n" NOR,me); message_vision(HIG "$N的甲的等级提高了!\n" NOR, me); weapon=this_object(); if(weapon->query("equipped") ) weapon->unequip(); reload_object( weapon ); me->set("jia/value",0); return 1; } message_vision(RED "$N的甲气提升了!\n" NOR, me); return 1;}int do_hui(object weapon){ string w_name; object me,ob; me=this_player(); w_name=me->query("jia/name"); if( !weapon ) return notify_fail("你要摧毁什么?\n"); message_vision(HIR "$N大喝一声,一掌擎甲,一掌猛力击下。结果轰隆一声巨响" +w_name+HIR"断为两截!\n" NOR,me); me->set("jia/make",0); destruct( this_object() ); me->delete("weapon"); me->save(); return 1;}int do_levelup(string arg){ object me, ob; object gold; int cost = 1; int i,j,base,current; string id,name ; string file,newfile,filestring; me = this_player(); id = me->query("id"); if( !arg ) return notify_fail("你要提升什麽武器?\n"); gold = present("gold_money", this_player()); if( !gold) return notify_fail("你身上没有金子。\n"); if( !objectp(ob = present(arg, me)) ) return notify_fail("你身上没有这样东西。\n"); if(me->is_busy()) return notify_fail("你上一个动作还没有完成。\n"); if( ob->query("equipped") ) return notify_fail("你不可祭装备著了的武器。\n"); if( !ob->query("ownmake") ) return notify_fail("你只可祭自己打造的武器。\n"); if( (int)me->query("qi") < 150 ) return notify_fail("你的气不够,无法锻炼神甲!\n"); if( (int)me->query("eff_qi") < 30 ) return notify_fail("你现在的体力太弱,无法锻炼神甲!\n"); if( (int)me->query("eff_jing") < 10 ) return notify_fail("你现在的精力无法集中,不能锻炼神甲!\n"); if( (int)me->query("score") < 100 ) return notify_fail("你现在的江湖阅历不够,不能锻炼神甲!\n"); if( ob->query("wield_msg") ) return notify_fail("提升武器请去海天一线。\n"); if( ((int)me->query("potential") - (int)me->query("learned_points"))< 20 ) return notify_fail("你的潜能不够,无法锻炼神甲!\n"); j = (int)me->query("jia/lv"); if(j<6) cost = 15*j; else if(j<11) cost = 20*j; else if(j<16) cost = 30*j; else if(j>500) cost = 200*j; else cost = 60*j; if((int) gold->query_amount() < 100) return notify_fail("你身上没带够100两金子。\n"); if((int) gold->query_amount() < cost) return notify_fail("你身上没带够" + sprintf("%d",cost)+ "两金子。\n"); gold->add_amount(-cost); me->start_busy(2); me->add("bellicosity",cost); seteuid(ROOT_UID); me->add("qi",-150); me->add("eff_qi",-30); me->add("jing",-30); me->add("eff_jing",-30); me->add("score",-100); me->add("learned_points", 20); me->set("jia/lv", j+1); me->save(); reload_object(ob); message_vision(HIY "甲身忽的一亮,一道金光隐入$N的"+ob->name()+HIY",不见了!\n" NOR,me); message_vision(HIG "$N的"+ob->name()+HIG"的等级提高了!\n" NOR, me); seteuid(getuid()); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?