⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guangchang1.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// Room: /d/shaolin/guangchang1.c
// Date: YZC 96/01/19

inherit ROOM;

void init();
void close_gate();
int do_open();
int valid_leave();
string look_gate();

void create()
{
    set("short", "少林广场");
    set("long", @LONG
这里是少林寺前的广场,整个广场由大块的青石铺成,极为
平坦。但因年代久远,都有些破损。丛丛小草从石板的缝隙中长
了出来。广场周围都是密密的松树林,四角上各放了几块石碑,
字迹都甚为模糊。正前方黄墙碧瓦,飞檐翘檩,正中一道二丈来
宽,三丈来高的朱红杉木包铜大门(gate)。上方一块大匾,龙飞
凤舞地书着『少林寺』三个大字。寺前三三两两的站着几个僧人。
LONG );
    set("exits", ([
        "east" : __DIR__"guangchang1e",
        "south" : __DIR__"shijie11",
        "west" : __DIR__"guangchang1w",
    ]));

    set("outdoors", "shaolin");
    set("item_desc",([
        "gate"        :    (: look_gate :),
    ]));
    set("objects",([
        CLASS_D("shaolin") + "/qing-fa" : 1,
        "quest/menpai/shaolin/shi" : 1,
    ]));
//    set("no_clean_up", 0);
    setup();
    "/clone/board/shaolin_b"->foo();
}


/* TODO
 此处改为:(knock gate) 敲门后一僧人应声打开大门:
“吱”的一声,大门打了开来,一位壮年僧人上上下下打量了你
(他,她,人名) 一会,
(如为本寺僧人,且无罪过,正神提高或无增减)侧身让开,说道:师兄辛苦了,请进。
(如为本寺僧人,正神降低或有负神)沉下脸来,说道:戒律院主持玄痛大师请师兄火
                         速去戒律院陈述此行过犯。
                 (直接送交戒律院处治查问后,打入僧监关押)。
(如非本寺僧人,男性,有正神)说道:这位施主请回罢,本寺不接待俗人。
(如非本寺僧人,女性,有正神)说道:这位女施主还是请回罢,本寺从不接待女客。
(如非本寺僧人,无论男女,有负神)立时从身畔挚出一把雪亮的戒刀来,把明晃晃的
                 刀尖对准你的胸口,横眉怒目地说道:你等邪魔
                 外道,还不给我滚开!以后再敢走近少林一步,
                 我立时就斩断你们的狗腿!
对不起,俗家弟子不得入寺修行
 */
void init()
{
    add_action("do_knock", "knock");
}

void close_gate()
{
    object room;

    if(!( room = find_object(__DIR__"smdian")) )
        room = load_object(__DIR__"smdian");
    if(objectp(room))
    {
        delete("exits/north");
        message("vision", "乒地一声,里面有人把大门关上了。\n",
            this_object());
        room->delete("exits/south");
        if (objectp(present("qingguan", room)))
            message("vision", "清观上前把大门关了起来。\n", room);
        else
            message("vision", "壮年僧人上前把大门关了起来。\n", room);
    }
    else message("vision", "ERROR: gate not found(close).\n", room);
}

int do_knock(string arg)
{
    object room;

    if (query("exits/north"))
        return notify_fail("大门已经是开着了。\n");

    if (!arg || (arg != "gate" && arg != "north"))
        return notify_fail("你要敲什么?\n");

    if(!( room = find_object(__DIR__"smdian")) )
        room = load_object(__DIR__"smdian");
    if(objectp(room))
    {
        set("exits/north", __DIR__"smdian");
        message_vision("$N轻轻地敲了敲门,只听吱地一声,"
            "一位壮年僧人应声打开大门,\n"
            "他用锐利的目光上上下下打量着$N。\n",
            this_player());
        room->set("exits/south", __FILE__);
        message("vision", "外面传来一阵敲门声,壮年僧人应声上前把大门开。\n", room);
        remove_call_out("close_gate");
        call_out("close_gate", 10);
    }

    return 1;
}

int valid_leave(object me, string dir)
{
    if ( dir != "north" )
    {
        return ::valid_leave(me, dir);
    }

    if (!::valid_leave(me, dir))
        return 0;

    if ( (me->query("family/family_name") == "少林派"))
    {
        if (me->query("class") != "bonze")
        {
            return notify_fail("壮年僧人说道:对不起,俗家弟子不得入寺修行。\n");
        }

        if (((int)me->query("guilty") == 0) && ((int)me->query("K_record") ==
            ((int)me->query("PKS") + (int)me->query("MKS"))))
        {
            write("壮年僧人侧身让开,说道:师兄辛苦了,请进。\n");
            return 1;
        }
        else
        {
            if((int)me->query("guilty") == 0) {
                if((int)me->query("shen_record") > (int)me->query("shen"))
                    me->set("guilty", 1);
                else
                    me->set("guilty", 2);
                me->set("K_record", me->query("PKS") + me->query("MKS"));
                me->set("shen_record", me->query("shen"));
            }

            me->move(__DIR__"smdian");
            return notify_fail("壮年僧人沉下脸来,说道:戒律院主持玄痛大师请师兄\n"
                "火速去戒律院陈述此行过犯。\n");
        }
    }
    else if( present("yingxiong ling", me) )
    {
        write("壮年僧人合十为礼,侧身让开,说道:原来是贵客驾到,请进请进!\n");
        return 1;
    }
    
    if (me->query("shen") >= 0)
    {
        if (me->query("gender") == "女性")
        {
            return notify_fail("壮年僧人说道:这位女施主还是请回罢,"
                "本寺从不接待女客。\n");
        }
        else
        {
            return notify_fail("壮年僧人说道:这位施主请回罢,本寺不接待俗人。\n");
        }
    }

    return notify_fail("壮年僧人立时从身畔挚出一把雪亮的戒刀来,把明晃晃的\n"
		"刀尖对准你的胸口,横眉怒目地说道:你等邪魔外道,还不给我滚开!\n"
		"以后再敢走近少林一步,我立时就斩断你们的狗腿!\n");

}

string look_gate()
{
    return "一道三丈来高的朱红杉木包铜大门。\n";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -