xingxingtan.c

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

C
173
字号
#include <ansi.h>#define SHIP_TO __DIR__"changtan"inherit ROOM;void check_trigger();void on_board();void arrive();void close_passage();void create(){        set("short", "猩猩滩");        set("long", @LONG只见一片长滩,山石殷红如血,水流湍急,这便是有名的猩猩滩,对面岸边停泊着几艘小船(chuan) ,要过对面就要靠这几艘小船了。LONG        );        set("outdoors", "heimuya");        set("exits", ([            "eastup" : __DIR__"shidao2",        ]));        set("item_desc", ([            "boat" : "一叶小舟隐藏在芦苇中,喊(yell)一声试看。\n",        ]));        set("no_clean_up", 0);        set("outdoors", "heimuya");        setup();}/*在此付钱摆渡或买鱼吃*//*(等)渡船靠了岸,付了钱,船家一声吆喝,客人们一涌 * 而入,小小渡船片刻间便越过波澜涛涛的汉江,靠上北岸 */void init(){        add_action("do_yell", "yell");        add_action("du_jiang", "dujiang");}void check_trigger(){        object room;        object thisroom = this_object();        if(!query("exits/enter") ) {                if( !(room = find_object(__DIR__"duchuan")) )                        room = load_object(__DIR__"duchuan");                if( room = find_object(__DIR__"duchuan") ) {                        if((int)room->query("yell_trigger")==0 ) {                                room->set("yell_trigger", 1);                                set("exits/enter", __DIR__"duchuan");                                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__"duchuan") )        {                room->delete("exits/out");                message("vision", "艄公把踏脚板收起来,说了一声“坐稳喽”,竹篙一点,扁舟向江心驶去。\n", room);        }        delete("exits/enter");        remove_call_out("arrive");        call_out("arrive", 6);}void arrive(){        object room;        if( room = find_object(__DIR__"duchuan") )        {                room->set("exits/out", SHIP_TO);                message("vision", "艄公说“到啦,上岸吧”,随即把一块踏脚板搭上堤岸。\n", room);        }        remove_call_out("close_passage");        call_out("close_passage", 10);}void close_passage(){        object room, *ob;        int i;        if( room = find_object(__DIR__"duchuan") ) {                room->delete("exits/out");                tell_room(room, "艄公轻声说道:“都下船吧,我也要回去了。”\n", ({}));                ob = all_inventory(room);                for(i = 0; i < sizeof(ob); i++) {                        if (userp(ob[i])) {                                if (!living(ob[i])) tell_room(room, "艄公把$N抬下了船。\n", ob[i]);                                else tell_room(room, "听了艄公的话,乖乖地下了船。\n", ob[i]);                                ob[i]->move(SHIP_TO);                                if (!living(ob[i])) tell_room(SHIP_TO, ob[i]->name() + "被抬下了船。\n", ({ob[i]}));                                else tell_room(SHIP_TO, ob[i]->name() + "走下了船。\n", ({ob[i]}));                        }                }                message("vision", "艄公把踏脚板收起来,把扁舟驶向江心。\n", room);                room->delete("yell_trigger");         }}int do_yell(string arg){        object me = this_player();        if (!arg) return 0;        if (arg == "boat") arg = "船家";        if (me->query("age") < 16  )                message_vision("$N使出吃奶的力气喊了一声:“" + arg + "”\n", me);        else if (me->query("neili") > 500)                message_vision("$N吸了口气,一声“" + arg + "”,声音中正平和地远远传了出去。\n", me);        else                message_vision("$N鼓足中气,长啸一声:“" + arg + "!”\n", me);        if (arg == "船家")        {                check_trigger();                return 1;        }        else                message_vision("江面上远远传来一阵回声:“" + arg + "~~~”\n", me);        return 1;}void reset(){        object room;        ::reset();        if (room = find_object(__DIR__"duchuan"))                room->delete("yell_trigger"); }int du_jiang(){        object me = this_player();        if (!living(me)) return 0;        if (me->query_skill("dodge") < 150)                return notify_fail("你的修为不够!\n");        tell_room(environment(me), HIG + me->name() + "捡起一段芦苇抛入水中,紧跟着飞身跃上芦苇,长袖飘飘,渡过了汉水。\n" NOR, ({me}));        write("你使出「一苇渡江」渡过了汉水。\n");        me->move(SHIP_TO);        tell_room(environment(me), HIG "只见" + me->name() + "踩着一段芦苇从对岸过来,姿态潇洒地落在岸边。\n" NOR, ({me}));        return 1;}

⌨️ 快捷键说明

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