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

📄 damen.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// damen.c 大门
// By Lgg,1998.10

#include <ansi.h>
inherit ROOM;
void init();
int close_gate();
int valid_leave();
string look_gate();
int do_knock(string arg);

void create()
{
        set("short", "全真教大门");
        set("long", @LONG
你已走到了终南山半山腰,前面就是全真教的总部重阳宫了。殿
宇依山而筑,高低错落有致。周围古木森森,翠竹成林,景色清幽。
正前方黄墙碧瓦,飞檐翘檩,正中一道二丈来宽,三丈来高的朱红杉
木包铜大门(gate),气势不凡。门上挂着一块匾(bian),门前的石柱
上挂着一副对联(duilian)。
LONG
        );
        set("exits", ([
//                "east" : __DIR__"datang1",
                "westdown" : __DIR__"jiaobei",
        ]));
        set("outdoors", "quanzhen");
        set("item_desc", ([
            "gate":
"一道三丈来高的"HIR"朱红杉木"HIY"包铜"NOR"大门。\n",
            "bian": HIG"
*************
**         **
** 全 真 古 教  **
**         **
*************
\n"NOR,
            "duilian": BLINK+HIW"
一生二二生三三生万物\n
地法天天法道道法自然
\n"NOR
        ]) );
        set("objects",([
                __DIR__"npc/zhike" : 1,
        ]));
        setup();
}

void init()
{
    add_action("do_knock", "knock");
}

int close_gate()
{
    object room;

    if(!( room = find_object(__DIR__"datang1")) )
        room = load_object(__DIR__"datang1");
    if(objectp(room))
    {
        delete("exits/east");
        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/east"))
        return notify_fail("大门已经是开着了。\n");

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

    if(!( room = find_object(__DIR__"datang1")) )
        room = load_object(__DIR__"datang1");
    if(objectp(room))
    {
        set("exits/east", __DIR__"datang1");
        message_vision("$N轻轻地敲了敲门,只听吱地一声,"
            "一位道童应声打开大门,\n"
            "他用警惕的目光上上下下打量着$N。\n",
            this_player());
        room->set("exits/west", __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 != "east" )
    {
        return ::valid_leave(me, dir);
    }
    if (!query("exits/east"))
        return 0;

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

    if ( (me->query("family/family_name") == "全真教"))
    {
        if (me->query("class") != "taoist")
        {
            return notify_fail("道童说道:对不起,俗家弟子不得入宫修行。\n");
        }
        write("道童侧身让开,说道:师兄辛苦了,请进。\n");
        return 1;
    }
    else if( present("chongyang ling", me) )
    {
        write("道童打个稽首,侧身让开,说道:原来是贵客驾到,请进请进!\n");
        return 1;
    }
    if (me->query("shen") >= 0)
         return notify_fail("道童说道:这位施主请回罢,重阳宫不接待俗人。\n");
    return notify_fail("道童说道:你等邪魔外道,重阳宫向不接纳,请了!\n");

}

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

⌨️ 快捷键说明

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