hanshui1.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 182 行
C
182 行
// Room: /d/shaolin/hanshui1.c// Date: YZC 96/01/19#include <ansi.h>#define SHIP_TO __DIR__"hanshui2"inherit ROOM;void check_trigger();void on_board();void arrive();void close_passage();int do_yell(string arg);void reset();void create(){ set("short", "汉水南岸"); set("long", @LONG面前是一条波涛翻滚的大江(river)。浊流滚滚,万舟竞发。两岸渡船来来往往,江边一长溜摆满了鱼摊,渔家就将船泊在岸边,几个破萝支一块木板,板上摆满了活蹦乱跳的汉江鲤鱼。过去不远,是有名的老河口,不少过江客都在这里等待渡船摆渡。LONG ); set("exits", ([ "south" : __DIR__"yidao2", "east" : "/quest/newbie/fishroom", ])); set("item_desc", ([ "river" : "近岸处有一叶小舟,也许喊(yell)一声船家就能听见。\n", ])); set("no_clean_up", 0); set("outdoors", "shaolin"); 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", 20);}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", 20);}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(); int skill = 0; if (!living(me)) return 0; if (stringp(me->query_skill_mapped("dodge"))) skill = me->query_skill( me->query_skill_mapped("dodge"), 1 ); if ( skill + me->query_skill("dodge", 1) /2 < 200 ) return notify_fail(HIR "你的修为不够!\n" NOR); tell_room(environment(me), HIW + me->name() + "捡起一段芦苇抛入水中,紧跟着飞身跃上芦苇,长袖飘飘,渡过了汉水。\n" NOR, ({me})); write(HIY "你使出「一苇渡江」渡过了汉水。\n" NOR); me->move(SHIP_TO); tell_room(environment(me), HIG "只见" + me->name() + "踩着一段芦苇从对岸过来,姿态潇洒地落在岸边。\n" NOR, ({me})); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?