jason 发表于 2010-8-21 09:46:22

原帖由 zine 于 2010-8-21 09:20 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
同意jason的说法,现在创意比代码多出10倍不止,有些是不太容易实现的。谁主张谁施行的原则,要把自己的想法实现出来似乎是一件比mud里练级还好玩的事情:)
就是那个文件包里给的example太少了,有些想法不知道该 ...

我解释两个sample文件吧
map.c,这个是每个地图必须的,名字不能变。inherit F_DBASE;

void create()
{
      set("name","华山之巅");//地图名字
      set("family_entries",//决定可以有几个门派参加,每个门派是一项
                ({
                        ([
                              "entry":"eastgate.c",//门派1的入口
                              "number":3//门派1最多可以参加的人数
                        ]),
                        ([
                              "entry":"westgate.c",//门派2的入口
                              "number":3//门派2最多可以参加的人数
                        ]),
                })
      );
      set("flag_numbers",4);//旗帜个数
}eastgate.c,这是其中一个门的代码#include "/biwu/entryroom.h"//必须#include这个文件
//其他基本是标准房间的代码。
void create()
{
      set("short","水龙门");
      set("long",@LONG
一扇汉白玉制成的大门,通体透白,上面雕刻着一条蟠龙,穿行于波涛之间。比武的英雄,
请在此等候比武开始后进入比武场。
LONG
      );
      set("exits",
                ([
                        "enter":__DIR__"e2",//从入口进入后的第一个房间。
                ]));
//以下三行必须有
      set("no_fight",1);
      set("no_reset",1);
      set("no_clean_up",1);               
      setup();
}e2.c //一个比武房间的名字inherit "/biwu/biwuroom";//必须继承这个

void create()
{
      set("short", "流云谷");
      set("long", @LONG
两座山峰之间形成的一道山谷,仿佛一个漏斗一般,吸纳着半山腰上的云雾。行走在谷中,
就仿佛行走在云层之上。这里有一面云旗,上绘九天流云。
你可以用duo这个命令来夺旗。
LONG
      );
      set("exits", ([ /* sizeof() == 3 */
                  "south" : __DIR__"e3",
                  "north" : __DIR__"e1",
                  "west" : __DIR__"e5",
                  "out" : __DIR__"eastgate",
                ]));
      set("no_clean_up", 0);
      set("flag","云旗");//这里有旗,名字叫云旗
      set("default_flag_hp",5);//旗的血量,等于要duo的次数
      set("flag_hp",5); //旗的血量,等于要duo的次数
      setup();
}


至于标准房间的写法,add_action之类的,没办法解释了。自己看lpc入门吧。这方面资料很多的。

zine 发表于 2010-8-21 09:57:16

已有的example自己揣摩揣摩能弄个八九不离十出来。

改变人物状态的语句呢?
比如
{
                if(userp(invs) && invs->query("family/family_name") != this_player()->query("family/family_name"))
                {
                        this_player()->kill_ob(invs);
                }
        }
        this_player()->add_busy(1);
}

只要有现成的语句,就好理解,比如this_player()->add_busy(1)应该是下killall的玩家自身busy 1 个心跳(或别的一个计时单位)吧?
比如要让一个房间易守难攻,假设这个房间有玩家,就给不同门派的后进这个房间的玩家set 3心跳的busy,不知道这个判断条件怎么写,因为不知道最基本的一些人物属性是怎么定义的(没有例子)

jason 发表于 2010-8-21 12:10:13

写在init函数里
上面的例子已经说明了如何检查门派。。。

不过,路还很远啊,要把变态叫来就好了,让他教你
页: 1 2 [3]
查看完整版本: 高价收购比武地图