jiang1.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 190 行
C
190 行
// by mayue#include <ansi.h>#define SHIP_TO __DIR__"jiang2"void check_trigger();void on_board();void arrive();void close_passage();int do_yell(string arg);void reset();inherit ROOM;void create(){ set("short", "桃花江西岸"); set("long", @LONG这里是桃花江边,江水清澈,水流平缓,两岸都是无边的桃树,不断有桃花随风飘入江中,随波逐流。江边停泊着一条渡船。旁边还有一条五毒教的快船(chuan)LONG ); set("outdoors", "wudujiao"); set("exits", ([// "east" : __DIR__"jiang1",// "northeast" : __DIR__"bianzhai1", "west" : __DIR__"bianzhai3",// "north" : __DIR__"bianzhai2", ])); set("objects", ([// "/d/npc/guojing": 1, ])); setup();// replace_program(ROOM);}void init(){ add_action("do_yell", "yell"); add_action("do_enter", "shang");}void check_trigger(){ object room; 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上下。\n", this_object() ); message("vision", "艄公将一块踏脚板搭上堤岸,形成一个向上" "的阶梯。\n", room); remove_call_out("on_board"); call_out("on_board", 15); } else message("vision", "只听得江面上隐隐传来:“别急嘛," "这儿正忙着呐……”\n",this_object() ); } else message("vision", "ERROR: boat not found\n", this_object() ); } else message("vision", "岸边一只渡船上的老艄公说道:正等着你呢,上来吧。\n", this_object() );}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江心驶去。\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", __DIR__"jiang2"); 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){ if( !arg || arg=="" ) return 0; if( arg=="boat" ) arg = "船家"; if( (int)this_player()->query("neili") < 300 ) message_vision("$N使出吃奶的力气喊了一声:“" + arg + "”\n", this_player()); else if( (int)this_player()->query("neili") > 600 ) message_vision("$N吸了口气,一声“" + arg + "”,声音中正平和地远远传" "了出去。\n", this_player()); else message_vision("$N鼓足中气,长啸一声:“" + arg + "!”\n", this_player()); if( arg=="船家") { check_trigger(); return 1; } else message_vision("江面上远远传来一阵回声:“" + arg + "~~~”\n", this_player()); return 1;}void reset(){ object room; ::reset(); if( room = find_object(__DIR__"duchuan") ) room->delete("yell_trigger"); } int do_enter ( string arg ){ object ob ; string dir; if( !arg || arg !="chuan" ) { tell_object(this_player() , "你要 enter 哪儿?\n" ) ; return 1 ; } ob = this_player () ; if( ob->query("family/family_name") != "五毒教"){ message_vision("$N这是五毒教的快船,你不能上!\n", ob); return 1;} message_vision("船夫一见有人上船,忙叫了一声:开船喽!\n", ob); message_vision("船夫升起帆,快船就向湖中航行。\n", ob); ob->move(__DIR__"jiang2") ; tell_object(ob, BLU "你在湖中航行了一会就到了另一边!\n" NOR ) ; return 1 ;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?