xikou.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 94 行

C
94
字号
#include <ansi.h>
inherit ROOM;
void check_trigger();
void on_board();

void create()
{
        set("short", "溪口");
        set("long", @LONG
你迎着阵阵海风来到了溪口,这里是自古代以来兵家必挣之地,这里连
接着与海外的贸易,岸边停泊着的几艘大帆船在夕阳的照射下,船帆显得分
外美丽。岸边有几个老艄公正等着拉客人,也许你上前询问一下就能雇船出
海。
LONG);
        set("outdoors", "宁波");
        set("exits",([
        "west" : "/u/beyond/ningbo/aywsi",
        "south" : "/u/beyond/ningbo/dongqianhu",
        ]));
        set("objects",([
            "/d/mingjiao/bhd/npc/shao"  :   1,
        ]));       
        setup();
}

void init()
{
        add_action("do_yell", "yell");
}

void check_trigger()
{
        object room;
        object thisroom = this_object();
        if(!query("exits/enter") ) {
                if(!(room = find_object(__DIR__"haichuan")))
                        room = load_object(__DIR__"haichuan");
                if(room = find_object(__DIR__"haichuan")){
                    if((int)room->query("yell_trigger")==0 ) {
                          room->set("yell_trigger", 1);
                          set("exits/enter", __DIR__"haichuan");
                          room->set("exits/out", __FILE__);
                          message("vision", "一名壮年艄公将一块踏脚板搭上堤岸,以便乘客上下。\n", thisroom);
                          message("vision", "壮年艄公将一块踏脚板搭上堤岸,形成一个向上的阶梯。\n", room);
                          remove_call_out("on_board");
                          call_out("on_board", 15);
                          }
                    else message("vision", "只见一名老艄公摇了摇头:等等吧,刚出海去了。\n", thisroom);
                }
                else message("vision", "ERROR: boat not found\n", thisroom);
        }
        else message("vision", "海船上的艄公说道:正等着你呢,上来吧。\n", thisroom);
}

void on_board()
{
        object room;
        if( !query("exits/enter") ) return;
        message("vision", "壮年艄公把踏脚板收了起来,拉开帆,海船缓缓驶了出去。\n", this_object());
        if(room = find_object(__DIR__"haichuan")){
                room->delete("exits/out");
                room->set_temp("stepw", 14);
                room->set_temp("steps", 15);
                message("vision", "艄公把踏脚板收起来,说了一声“开船喽”,把帆啦开,向大海驶去。\n", room);
                }
        delete("exits/enter");        
}

int do_yell(string arg)
{
        string dir;
        object me = this_player();
        if (!arg) return 0;
        if (arg == "chuan"){
             message_vision("$N对着海船叫了一声:“船家,出海!”\n", me);
             if(!me->query_temp("haichuan_paid")){
                 message_vision("海船上的艄公对$N理都不理。\n", me);
                 return 1;
                 }
             check_trigger();
             return 1;
             }
        else message_vision("$N对着大海大叫一声:“" + arg + "~~~”\n", me);      
        return 1;
}
int valid_leave(object me, string dir)
{
  object ob;
  if(!me->query_temp("haichuan_paid") && objectp(present("shao gong", environment(me))) && dir == "enter")
               return notify_fail("艄公闪身拦在你面前:上船要先给钱啊!\n");

      return ::valid_leave(me, dir);
} 

⌨️ 快捷键说明

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