xiejian.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 293 行
C
293 行
// xiejian.c 邪剑李四#include <ansi.h>inherit NPC;int waiting(object me);int checking(object me);int do_chase(object me);int do_kill(object me, object dest);string ask_me();void create(){ set_name("李四", ({ "li si", "li" }) ); set("title", "小店老板"); set("gender", "男性" ); set("shen_type", -1); set("age", 40); set("str", 30); set("con", 30); set("int", 30); set("dex", 30); set("no_clean_up",1); set("long", "这是整天笑咪咪的小店老板,虽然不卖什麽东西,却也过得自在。\n" ); set("combat_exp", 880000); set("attitude", "peaceful"); set("chat_chance", 1); set("chat_msg", ({ "李四说道: 这位客官,您想买些什麽东西吗 ?\n", }) ); set("inquiry", ([ "邪剑" : (: ask_me :), "杀人" : (: ask_me :), ]) ); set("max_qi", 2700); set("max_jing", 2400); set("neili", 4700); set("max_neili", 4700); set("jiali", 50); set("shen_type", -1); set("env/wimpy", 60); set_skill("force", 160); set_skill("unarmed", 180); set_skill("sword", 180); set_skill("dodge", 180); set_skill("parry", 180); setup(); carry_object("d/city/obj/gangjian")->wield(); carry_object("d/city/obj/cloth")->wear();}void init(){ object me, ob; me = this_object(); ob = this_player(); ::init(); if( !me->query("waiting_target") && ob->query_temp("fee_paid") ) ob->delete_temp("fee_paid"); add_action("do_name","杀"); }string ask_me(){ return "我就是邪剑李四,你来找我有什麽事吗?\n";}int do_name(string target){ object me, dest, *all; int i; me = this_object(); all = users(); if(me->query("waiting_target")) return notify_fail("李四嘿嘿一笑:我现在正忙着哪,您呆会儿在来吧!\n"); if( !this_player()->query_temp("fee_paid") ) return notify_fail("李四说道:不管叫我做什麽,您可得先付钱哪!\n"); if( !target || target==" ") return notify_fail("李四恶狠狠地说道:快告诉我那家伙的名字,我可没功夫听你闲聊!\n"); for(i=0; i<sizeof(all); i++) { if( target == all[i]->name() || target == all[i]->id() ) dest = all[i]; } if( !dest ) return notify_fail("李四一声冷笑:他现在不在游戏中,过会再来吧。\n"); if (dest->is_ghost()) return notify_fail("李四很不高兴:他已经是个死鬼了,你还来找我干什么!\n"); if( wizardp(dest)) return notify_fail("李四一声冷笑:他现在不在游戏中,过会再来吧。\n"); if( dest->query("age") <= 17) return notify_fail("李四一声冷笑:我不杀小孩的!\n"); write_file("/log/static/KILLRECORD",sprintf("%s 派李四去杀 %s on %s\n", this_player()->name(1),dest->name(1), ctime(time()) )); me->set("waiting_target", dest->query("id")); me->set("target_name", target); me->set_temp("apply/attack", 50); me->set_temp("apply/defense", 50); me->set_temp("apply/damage", 50); me->set_temp("apply/armor", 50); me->set("title", HIB "邪剑" NOR); me->set("long", "邪剑李四,杀手帮十大高级剑士之一,有剑不染血不归鞘之名。\n" ); me->delete("chat_chance"); me->delete("chat_msg"); message("vision", HIY "李四嘿嘿嘿地干笑了几声,说道:您就在这儿静侯好音吧!\n"NOR, environment(), me ); me->set("pursuer", 1); me->set("vendetta/authority", 1); me->set("bellicosity", 10000); me->set("combat_exp", 880000); message_vision("$N走了出去。\n" NOR, me); call_out("do_chase", 1, me); return 1;}int accept_object(object who, object ob){ if (ob->query("money_id") && ob->value() >= 1000000 && !this_object()->query("waiting_target")) { tell_object(who, "李四沉下脸来:好,爽快说吧,你要我帮你杀谁?\n"); tell_object(who, "请键入:杀 目标中文名字\n"); who->set_temp("fee_paid",1); return 1; } else if (ob->query("money_id") && ob->value() < 5000000) { tell_object(who, "李四嘿嘿一笑,说道:给我这麽多钱? 将来我可没法还你啊。\n"); return 1; } return 0;}int do_chase(object me){ object dest; dest = find_player(me->query("waiting_target")); if( !objectp(dest) || !environment(dest) ) { call_out("waiting", 0, me); return 1; } me->move(environment(dest)); message_vision("$N走了过来。\n" NOR, me); me->set_leader(dest); command("look " + dest->query("id")); if ( !environment(me)->query("no_fight")) { call_out("do_kill", 1, me, dest); return 1; } else { call_out("waiting", 0, me); return 1; } return 1;}int do_kill(object me, object dest){ if( objectp(dest) && present(dest, environment(me)) && !environment(me)->query("no_fight")) { message_vision(HIR "$N对$n说道:阴司鬼王差我来,请你去他那儿做客," +RANK_D->query_rude(dest)+",你认命吧!\n" NOR, me, dest); me->set_leader(dest); me->kill_ob(dest); dest->fight_ob(me); call_out("checking", 0, me); } else call_out("waiting", 1, me); return 1;}int waiting(object me){ object dest; dest = find_player(me->query("waiting_target")); if ( objectp(dest) ) { if (dest->is_ghost()) { me->delete("waiting_target"); call_out("do_back", 1, me); return 1; }else if (me->is_fighting() && present(dest, environment(me))) { call_out("checking", 0, me); return 1; }else if (living(me) && !environment(dest)->query("no_fight")) { call_out("do_chase", 0, me); return 1; } } remove_call_out("waiting"); call_out("waiting", 60, me); return 1;}int checking(object me){ object ob; if (me->is_fighting()) { call_out("checking", 1, me); return 1; } if( objectp(ob = present("corpse", environment(me))) && ob->query("victim_name") == me->query("target_name") ) { me->delete("waiting_target"); call_out("do_back", 1, me); return 1; } call_out("waiting", 0, me); return 1;}int do_back(object me){ me->move("/d/village/shop"); message("vision", "李四走了进来,拍了拍身上的尘土,把剑上的血迹抹拭干净,\n" "他接着一笑说道:老天爷保佑,活儿干得干净利落,您老以後有什麽事还可以找我。\n", environment(), me ); me->set("title", "小店老板"); me->set("long", "这是整天笑咪咪的小店老板,虽然不卖什麽东西,却也过得自在。\n" ); me->set_leader(0); me->set("chat_chance", 1); me->set("chat_msg", ({ "李四说道: 这位客官,您想买些什麽东西吗 ?\n", }) ); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?