2008年8月29日星期五

MUD-人物NPC的编写-欧阳峰

[转自http://blog.sina.com.cn/s/blog_548fe95c01000bwr.html]

一个较为复杂的人物例子
// /kungfu/class/baituo/ouyang-feng.c 白驼开山祖师欧阳锋
#include     //表明这个文件要用到颜色
#inherit NPC;       //继承NPC的属性
inherit F_MASTER;     //继承可收徒的NPC属性
int check_self();     //声明,文件中有战斗行为函数的定义
int learn_message(object ob,string skill);//声明:文件中有learn_message()函数的定义
string ask_zhang(); //声明:文件中有谜题函数的定义
void create()
{
  set_name("欧阳锋", ({ "ouyang feng", "ouyang", "feng" }));
//注意,不要用set("name","")直接set_name
  set("long", "他是白驼山庄主,号称"HIW"“西毒”"NOR"的欧阳锋。\n"
    +"虽然由于习练「九阴真经」走火入魔,变得精神错乱,但\n"
  +"是他那额头上的层层紫晕,令人不得不服他是一代高手!\n");
//这就是不用@LONG&LONG的例子,所以就必须在每句尾加上“\n”的换行标志
  set("nickname", HIW"西毒"NOR); //外号,用到了颜色,所以开头没有include 这里会出错
  set("gender", "男性"); //性别,太监是无性
  set("age", 53);     //年龄
  set("shen_type",-1); //神的正负,如果没有set默认是1,用这个乘以exp/10得到神值
  set("attitude", "peaceful"); //指这个人物的好战态度
  set("str", 30); //膂力,
  set("int", 29); //悟性
  set("con", 30); //根骨
  set("dex", 28); //身法,这些先天属性,可设可不设,但要符合原著精神
  set("qi", 2500); //当前气
  set("max_qi", 2500); //最大气,就是恢复满时
  set("jing", 900); //当前精
  set("max_jing", 900); //最大精
  set("neili", 2000); //当前内力
  set("max_neili", 2000); //最大内力
  set("jiali", 50); //相当于玩家的加力jiali *
  set("combat_exp", 1500000); //经验
  set_skill("force", 200); //设置武功,这是基本内功
  set_skill("unarmed", 170); //反正一项项设,略.......
    ......
  set_skill("nilian-shengong", 200);
    ......
  map_skill("force", "nilian-shengong"); //相当于玩家的jifa
    ......
  create_family("白驼山派",1, "开山祖师");//门派头衔
  set("inquiry" ,([
    "欧阳克":"欧阳锋嘿嘿一笑:“那是我的乖侄子,你见过他了吗?”\n",
    "蛇杖":(:ask_zhang:),
  ]));
/*这个是设置当玩家ask sb about sth时的信息,“:”前就是sth,后面
则是返回的信息。这有点与房间里的set("desc_item")相似。所以也有关
于 (:ask_zhang:)的函数调用,这个函数我们在文件头已经定义过了,后
面将会有具体的内容。*/

  set("chat_chance",2); //设置随机动作的机率,这是指2%
  set("chat_msg",({ //设置随机动动作
    "欧阳锋自言自语道:“我白驼山派神功一成,定能重霸江湖!!”\n",
    "欧阳锋道:“我儿欧阳克聪慧过人,必能够重振白驼山派雄风!”\n",
    "欧阳锋道:“江湖险恶,困难重重,我才是天下第一!”\n",
  }));
  set("chat_chance_combat", 100); //这是指战斗中的随机行为,注意区别。
  set("chat_msg_combat", ({
    (: command("wield zhang") :),
    (: command("wield zhang") :), //装备武器
    (: perform_action, "staff.shewu" :),
    (: perform_action, "staff.shewu" :),//使用绝招
    (: command("unwield zhang") :),
    (: check_self :), //这是我们自定义的一个函数,在后面写着
  }) );
  setup();
  carry_object("/d/baituo/obj/shezhang");//身上的东西,加上“->wield”就是装备好了,如果没有这个,就会在身上,但没装备起来
  carry_object("/clone/misc/cloth")->wear();//这件衣服就是穿上的,也可不穿
  add_money("silver",50); //设置他身上的钱,可以gold,coin
}
void init()
{
  ::init();
  add_action("do_skills","skills");
  add_action("do_skills","cha"); //两个动作调用同一个函数do_skills
}
int do_skills(string arg)//定义do_skills函数,并表明其类型
{
  object ob ;
  ob = this_player () ; //定义ob是指的执行这个动作的人
  if( !arg && arg!="ouyang feng"&& arg!="ouyang"&& arg!="feng" )
    return 0; //如果对象不是欧阳锋,则返回调用skills的cmds指令
  if(wizardp(ob)) //return 0; 是巫师的话返回调用skills的cmds指令
  if (ob->query("family/master_name")!="欧阳锋")
    return 0; //师父不是欧阳锋的话返回调用skills的cmds指令
  if(!ob->query_skill("nilian-shengong",1))//如果没学过逆练神功
  {
    write("欧阳锋目前所学过的技能:\n"+
" 基本内功 (force) - 深不可测 200/ 0\n"+
"□蛤蟆功 (hamagong) - 深不可测 200/ 0\n"+
......\n"); //略
    return 1; //参考前面的懂了这里retrun 0和return 1的意思吗?
  }
  else //相反则是学过
  {
    write("欧阳锋目前所学过的技能:\n"+
" 基本内功 (force) - 深不可测 200/ 0\n"+
"□逆练神功 (nilian-shengong) - 深不可测 200/ 0\n"+
.......
\n"); //这时才让他的徒弟能查看欧的逆练神功级别
    return 1;
  }
}

void attempt_apprentice(object ob)//这个函数的原型就是在前面定义的inherit F_MASTER里
{
  if((int)ob->query("combat_exp")<100000) color="#009999">//条件一,经验要大于100000
  {
    message_vision("欧阳锋冷冷地对$N道:“这点经验就想来拜师?!”\n",ob);
    return; //因为这是一个void函数,直接return,面不是return 1之类的
  }
  if((int)ob->query_skill("hamagong",1)<60) color="#009999">//条件二,蛤蟆功大于60级
  {
    message_vision("欧阳锋冷冷地对$N道:“武功不错,先跟我的弟子学些的入门武功吧!”\n",ob);
    return;
  }
  message_vision("欧阳锋拍拍$N的头,微微点了点头。\n",ob); //过滤完了就通过
  command("recruit " + ob->query("id"));
  return;
}
int check_self() //即我们自定义战斗中行为
{
  int max_qi,eff_qi,qi; //命名三个变量
  object me;
  me = this_object(); //不多说了吧
  max_qi = me->query("max_qi");
  eff_qi = me->query("eff_qi");
  qi = me->query("qi"); //对三个变量进行初始定义
  if((int)(qi*100/max_qi)<30 color="#009999">//就是说欧受伤到一定程度
  {
    if((int)me->query_temp("powerup")) //如果已经在提升战斗力状态
    {
      ....... //将干什么什么
      return 1;
    }
    ......; //否则就怎么怎么
    return 1;
  }
}

string ask_zhang()//定义解谜中的关于蛇杖的函数
{   //string与int都可以,区别在于string函数return的是字符串
  object me,weapon,obj,obn;
  mapping fam;
  me = this_player();
  if(!(fam = me->query("family"))|| fam["family_name"] != "白驼山派") //不是白驼弟子
    return "\n欧阳锋冲你阴阴地一笑:“你是不是想尝尝我西域灵蛇毒的厉害?”\n";
  if((int)me->query_skill("xunshe-shu",1)<50) color="#009999">//驯蛇术太低
    return "\n欧阳锋拍拍你的头说:“你的驯蛇术还不到家,现在用蛇杖太危险!”\n";
  if( !me->query("weapon")||(string)me->query("weapon/type")!= "杖") //没有自铸的杖
    return "\n欧阳锋说道:“要想炼蛇杖,必须要有一根自铸的杖,你先找欧冶子铸杖吧!\n";
  if( me->query("weapon/she")) //已经有了蛇杖
    return "\n欧阳锋怒道:“小子也敢戏弄老夫,明明已有蛇杖,还要问什么?滚!!!\n";
  if( me->query_temp("dixi-wan")) //已经要了药丸
    return "\n欧阳锋大怒:“贪得无厌的家伙,拿了还想拿,再这样,老夫一杖叫你上西天!\n";
//到此为止,一切不符合解谜的条件都过滤完了,则开始执行
  obn=new("/d/baituo/obj/dixi-wan"); //要取出的东西的路径文件名,相当于clone
  obn->set("sign",me->query("id")); //东西上设上给的人的记号
  obn->move(me); //这个东西放进问的人的身上
  me->set_temp("dixi-wan",1); //问的人做记号,以防他再去要,看前面
return "\n欧阳峰仰天哈哈一笑后,缓缓说道:“我灵蛇杖法奇妙无比,配合蛇杖上灵蛇\n"
"的攻击,可使对手防不胜防,我这有一颗通灵地犀丸,你拿去找蛇奴,他会知道的!”\n"
HIC"说完欧阳锋递过来一颗鸽蛋大小的药丸。\n"NOR;
}

int learn_message(object ob,string skill) //定义学武功的条件
{
  if((skill=="nilian-shengong")&&(!ob->query_skill("nilian-shengong",1)))
  {
    message_vision("欧阳锋阴阴地对$N说道:“你如何能从我这学会这种没有一点功基的武功?”\n",ob);
    return 0;
  }
  else return 1;
}

2008年8月8日星期五

有些事情,其实我们被骗了好久...

[转自http://www.52blackberry.com/viewthread.php?tid=100917&page=1#pid1123830]

1、月球上能看到长城-------事实上如同人从50米看一根头发丝......
'j/d6s-~$Q!LBlackBerry-最好的黑莓手机论坛-刷机|下载  BlackBerry-最好的黑莓手机论坛-刷机|下载6e/K5z5K._
2、牛顿和苹果的故事!M.@1_#U&M2j t$Z
  达芬奇和鸡蛋的故事黑莓手机论坛-黑莓论坛0m5o-y2J-i'P8b%Y$Y
  爱因斯坦和小凳子的故事
3j'k1B%c9@  华盛顿和樱桃树的故事----------文学创作是神奇的......www.52blackberry.com/o&m;t6^,y7W/r&D
  www.52blackberry.com*`2i:F4P%L;?-|
3、菠菜富含铁元素 ---------菠菜铁元素确实比其他蔬菜高那么一点点,关键是当初科学家点错小数点......www.52blackberry.com/t5d#?&e6
  
9^+G2X'p-]1\&p4、兔子应该吃胡萝卜----养过兔子都知道。很少有兔子吃。"Z6a8p2R8e)b(E)G'S8g
  0`)p4`:y1M S8b
5、鱼翅燕窝营养丰富-------实际营养不如粉条和木耳!
.i&N3G8a-F;H!\黑莓手机论坛-黑莓论坛  
7{#]4T2M9H,i2X黑莓手机论坛-黑莓论坛  www.52blackberry.com(S&X0S(Y(c1X%@
6、怀孕不能养猫,有弓型虫--------只要去宠物医院做次排虫测试就成,医生为图省事说的,不只是猫~ 猪牛羊等触类都能感染弓型虫。而且比例上来讲比猫不知道高多少......而且猫一生也只感染一次弓型虫。绝大多数感染过弓型虫的人一辈子都没养过猫。'i*o/O/R8[5F6L-Q&?+F$J
  
&o0h'j-G1N$y3x+E黑莓手机论坛-黑莓论坛7、瓦特看见水壶烧开产生灵感发明蒸汽机---------蒸汽机在瓦特出生前有。他只不过改良了而已...... X;t;C1k$Z)o%p X)w
  +k+Q0K$n:O9g1X
8、锂电池前三次充电要满12小时-----------以前的电池是需要充分充电,用来激活,现在都是锂电池了,是不需要这样做的。www.52blackberry.com W*I7`0w(F:{$b3s;@7K/m0P
  BlackBerry-最好的黑莓手机论坛-刷机|下载-u5u3f*v/M$W7G1c'G
9、电视电影里常见的,****拿根手指蘸掉白色粉末尝尝就知道是毒品-------真这样做......那是****......纯度越高死的越快
!T*`6v6u3K4X9s  
;i8J9E6O7D2?6h10、天才就是99%的汗水+1%的灵感 ------------原话是 ‘天才就是99%的汗水+1%的灵感,但这1%的灵感远远比99%的汗水重要’......同样的还有天才就是1%的天赋+99%的汗水,但那1%的天赋比汗 水重要的多啊等等......我被欺骗多年啊!!!
8_4f%E9L(k-Wwww.52blackberry.com  黑莓手机论坛-黑莓论坛.E*E-O+u"\
11、老师常用‘吾生有崖,而知无崖’教育我们要好好读书-----------------其4p.o @;|$G6L'z3H4S
  实......原文是‘吾生有崖,而知无崖,以有崖求无崖,殆哉矣 ‘......完全相反啊......
8x,^8E,d.r:{$iBlackBerry-最好的黑莓手机论坛-刷机|下载  
3M*\+]0I+o(KBlackBerry-最好的黑莓手机论坛-刷机|下载  /v5K&r0k"c8O5{
12、感冒是由感冒病毒引起的,吃消炎药可以治感冒--------晕了+J,q){'} s,a#_0a!A
  
o&_1L'X J.c黑莓手机论坛-黑莓论坛13、吃麦当劳、肯德基索要发票是爱国,去家乐福、沃尔玛索要发票他们就不能偷税了--------可怜我当初深信不移......
7j H'G$m6b-O5x o黑莓手机论坛-黑莓论坛  
14、1999年7月...恐怖大王从天降...---------------这个不用证明了吧.......
:x.W5B'`.{"H;i.{+S7r  
*~7Y0i+O:h!N15、“这世界上最遥远的距离……你却不知道我爱你”是泰戈尔大师写的-------------是张小娴女士的哦黑莓手机论坛-黑莓论坛+O:Z1P#y.@'^:}3k5t"}3?0C
  www.52blackberry.com3k#s+J1G"Z'U-O
16、不存在一个掷骰子的上帝 BY爱因斯坦------原句为‘上帝不掷骰子’这话主要针对量子理论......爱因斯坦毕竟是犹太人。
2`;c'J*^6b F(~  
4W(D-G&q5|;^3@5H,@17、中国是一只睡狮,一旦它醒来,整个世界都会为之颤抖——拿破仑-----------原话是‘中国是一只睡狮,一旦它醒来,整个世界都会为之颤抖。……它在沉睡着,谢谢上帝,让它睡下去吧!’
O8@'G:r5y*w;I$i$Fwww.52blackberry.com  BlackBerry-最好的黑莓手机论坛-刷机|下载#c%Z0v2d2T+Q.s%k0d%Y2C
18、民可使由之,不可使知之--孔子-------------其实是‘民可,使由之;不可,使知之’古代没标点害人啊......,s6?%G3A8s$
  5@-A!J'D;l(j
19、周总理去世,联合国降半旗是有史以来第一次----虽然我很想相信,但其实是为非国家领导人降半旗第一次。
5A4C L:w E5D4h$yBlackBerry-最好的黑莓手机论坛-刷机|下载  
/i1@!V5B,A3W;R3M-Dwww.52blackberry.com20、小时侯老师说过美国西点军校挂雷锋的头像. 有雷锋手册什么的.每天向雷锋学习. 老师都以这个事情向我们宣传叔叔多么的有名------------哭,人家根本没有!!纯粹是国内****的YY!!
5v2k9l5H7W+~0h)r黑莓手机论坛-黑莓论坛  黑莓手机论坛-黑莓论坛9Y6r!D,v3T#s/z'U3x7H.Q&h
21、执子之手,与子偕老-------。。。原句是‘死生契阔,与子成说。执子之手,与子偕老。于嗟阔兮,不我活兮。于嗟洵兮,不我信兮’其实写的是战士之间的约定,说要一起死。后面的两句是说现在和我约定的人都走了,我可怎么活啊= =~
2M;q8a&X&lBlackBerry-最好的黑莓手机论坛-刷机|下载  www.52blackberry.com*Z2E*^2R5f"X:~9e6v
22、梁山伯与祝英台------汗。。。文学创作果然是神奇的。。。梁山伯其实是个清官。。。和祝英台朝代差满大的,只是被埋的近而已。。还有种说法是,埋梁的时候那地里挖到祝的碑,就埋一起,冥婚。。
$p3Z${8X,_ I*i9Y  #{$y;v!O*z#a
23、陈世美抛妻弃子,武大郎的身高,杨门女将,杨家将----------杨业就一个儿子,杨延昭,也就是俗称的杨六郎。所谓杨家七个儿子是假的。陈世美的朝代比包公早很多,是个非常好的清官,得罪了权贵被传成了一个贱人遭后世唾骂。(可怜的人)
]+m6E"c)Y2o  
*@*N/E-g#h8Y0W1{(P/VBlackBerry-最好的黑莓手机论坛-刷机|下载24、周瑜被诸葛亮气得吐血,空城计-------三国演义里周瑜被诸葛亮气得吐血而死是罗贯中胡扯的,原因在于罗屡试不第并迁怒于某周瑜的后人,故在书里YY泄愤。事实上现在周瑜的族人还有族谱,证实此说纯粹造谣。)w!T;p!w$?"X:|&A
  诸葛亮根本没做这回事,但是据说曹操曾有类似演出,引易中天一句话,难道司马懿那么蠢不会叫个弓箭手把诸葛亮射下来吗3^(B0[%P;q
  www.52blackberry.com1A4}(W6}&Q2P
  /n&}'B-z;G1T(W)K!Q
25、李时珍画像(一慈眉善目老爷爷)-----其实是现代画家根据李时珍遗物YY的,据考证李时珍相貌凶恶满脸络腮胡身材魁梧大概和张飞李逵差不多形象......