|
lpc npc全攻略(以sj2002为例)
npc.c本身的文件能够表示的东西其实不多,都是固定的
不讲解大家基本也能猜出个123。现就工作原理写了一下
以古墓派yang guo 这个npc为例
/kungfu/class/gumu/yang.c- :--------------------------------------------------------------------------------
- // yang.c 杨过 //注释
- // By River 98.8
- // Modified by darken
- /*
- 如果你对c没什么了解那我就没什么办法了
- 至于mudos的include的搜索路径配置在mudos同目录中的config.sj中的下面设定里可以更改
- # the directories which are searched by #include <...>
- # for multiple dirs, separate each path with a ':'
- include directories : /include
- 在config.sj中还有一个设定在这里很重要就是:
- # This is an include file which is automatically #include'd in all objects
- #global include file : <config.h>
- global include file : <globals.h>
- 这里配置的是mudos在启动后每一个文件的默认设定,即所有的文件可以不用定义就是用globals.h中已经定义的变量、宏、等。
- globals.h的位置自然是在上面定义完的/include中寻找了,也就是sj2002中的/include/globals.h
- 下面对yangguo.c的语句逐一解释
- */
- #include <ansi.h> //导入颜色设置文件,文件是/include/ansi.h
- inherit NPC; //inherit也是可以达到包含的目的,这里的NPC是一个宏在globals.h中定义的代表/inherit/char/npc.c 注解1
- inherit F_MASTER; //F_MASTER也是globals.h中定义的代表/inherit/char/master;注解2
- string ask_sword(); //定义函数,或者叫成员方法,c语言中有明确的解释
- int pfm_haichao(); //同上
- void create() //npc的创建,其中一些默认的设定在/inherit/char/npc.c中有详细的定义
- {
- set_name("杨过",({"yang guo","yang","guo"})); //npc中文名称,英文id
- set("title",HIW"古墓侠侣"NOR); //头衔
- set("nickname",HIY"神雕大侠"NOR); //外号
- set("long", "他就是名满天下的杨过。虽断一臂但仍遮不去一脸的英雄豪气。\n");//look的时候显示详细的描述
- set("age", 39); //年龄
- set("attitude", "friendly"); //见/inherit/char/npc.c中的int accept_fight(object who)函数
- set("no_bark",1); //不接受bark命令
- set("shen", 10000); //神
- set("per", 30); //纯朴
- set("str", 40); //臂力
- set("int", 30); //悟性
- set("con", 40); //根骨
- set("dex", 25); //身法
- //各项数值的设定
- set("max_qi", 6500);
- set("max_jing", 5000);
- set("neili", 13500);
- set("eff_jingli", 3500);
- set("max_neili", 13500);
- set("jiali", 100);
- set("combat_exp", 2800000);
- set("unique", 1);
- //武功设定
- set_skill("sword",300);
- set_skill("dodge",300);
- set_skill("strike",300);
- set_skill("force", 300);
- set_skill("hand", 300);
- set_skill("cuff", 300);
- set_skill("parry", 300);
- set_skill("stick", 300);
- set_skill("staff", 300);
- set_skill("finger",140);
- set_skill("literate", 250);
- set_skill("baituo-shezhang",180);
- set_skill("xiantian-gong",20);
- set_skill("hamagong",300);
- set_skill("medicine",120);
- set_skill("jingmai-xue",80);
- set_skill("qimen-baguazhen",80);
- set_skill("throwing",110);
- set_skill("dagou-bang",220);
- set_skill("bangjue",170);
- set_skill("yuxiao-jian",190);
- set_skill("tanzhi-shentong",160);
- set_skill("yunu-shenfa", 300);
- set_skill("meinu-quanfa",300);
- set_skill("xuantie-jianfa", 300);
- set_skill("anran-zhang", 300);
- set_skill("quanzhen-jianfa",300);
- set_skill("tianluo-diwang", 300);
- set_skill("yunu-xinjing",300);
- set_skill("jiuyin-zhengong",160);
- set_skill("dafumo-quan",60);
- set_skill("daode-jing",60);
- set_skill("jiuyin-shenfa",130);
- set_skill("qimen-bagua",150);
- set_skill("taoism",100);
- map_skill("force", "yunu-xinjing");
- map_skill("sword","xuantie-jianfa");
- map_skill("stick","dagou-bang");
- map_skill("staff","baituo-shezhang");
- map_skill("throwing","tanzhi-shentong");
- map_skill("finger","tanzhi-shentong");
- map_skill("dodge", "yunu-shenfa");
- map_skill("parry", "anran-zhang");
- map_skill("hand", "tianluo-diwang");
- map_skill("cuff", "meinu-quanfa");
- map_skill("strike", "anran-zhang");
- prepare_skill("strike","anran-zhang");
- //随机说话或者调用函数,在/inherit/char/npc.c中有部分的定义
- set("chat_chance_combat", 30); //随机值,注解1中详细描述
- set("chat_msg_combat", ({
- (: exert_function, "xinjing" :),
- (: pfm_haichao :), //自定义函数
- (: perform_action, "strike.xiaohun":),
- (: perform_action, "strike.anran":),
- })); //随机调用函数的设定,见注解1
- create_family("古墓派",3,"男主人");
- set_temp("apply/damage", 70);
- set_temp("apply/dodge", 60);
- set_temp("apply/attack", 60);
- set_temp("apply/armor", 70);
- set("inquiry", ([
- //在使用ask命令的时候使用到的一些设定通过(:***:)可以在ask这个问题的时候调用***函数
- "古墓" : "那日华山与众英雄诀别后和龙儿隐居于此已有数年,不闻世事,能与\n"+
- "龙儿在此长伴一世,此身足矣!",
- "小龙女" : "龙儿乃我爱妻,你问她做甚?",
- "玄铁剑" : (: ask_sword :),
- "玄铁剑法" : (: ask_sword :),
- ]));
- setup();
- carry_object(BINGQI_D("sword/gangjian")); //carry_object()在/inherit/char/npc.c中有部分的定义
- carry_object("/d/gumu/obj/buxue1")->wear(); // ->wear() 是在武器文件中定义的npc中不涉及
- carry_object("/d/gumu/obj/pao1")->wear();
- }
- void attempt_apprentice(object ob) //拜师要求
- {
- 。。。。。。。。。。
- }
- string ask_sword() //自己定义的一些函数
- {
- 。。。。。。。。。。。。
- }
- int pfm_haichao()
- {
- 。。。。。。。。。。。。
- }
复制代码 |
|