smdian.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 113 行
C
113 行
// Room: /d/shaolin/smdian.c
// Date: YZC 96/01/19
inherit ROOM;
void init();
void close_gate();
int do_close(string arg);
string look_gate();
int do_open(string arg);
void create()
{
set("short", "山门殿");
set("long", @LONG
这里是少林寺的前殿山门殿。殿内青砖铺地,两侧分列哼、
哈二将。身躯雄伟,面相忿怒,头带宝冠,上半身裸露,手执
金刚杵,一鼓鼻,一张口,露牙睁目,凶猛可畏。两边各放一
红木供桌,陈列香烛,以供僧俗叩拜。自此左右各有一间偏殿,
供比丘们打坐诵经之用。南面是一道三丈来高的朱红杉木包铜
大门(gate)。
LONG );
set("exits", ([
"east" : __DIR__"smdian1",
"west" : __DIR__"smdian2",
"north" : __DIR__"taijie",
]));
set("item_desc",([
"gate" : (: look_gate :),
]));
set("objects",([
__DIR__"npc/seng-bing3" : 2,
__DIR__"npc/xiang-ke" : 1,
]));
// set("no_clean_up", 0);
setup();
}
void init()
{
add_action("do_open", "open");
add_action("do_close", "close");
}
void close_gate()
{
object room;
if(!( room = find_object(__DIR__"guangchang1")) )
room = load_object(__DIR__"guangchang1");
if(objectp(room))
{
delete("exits/south");
message("vision", "僧兵上前把大门关了起来。\n", this_object());
room->delete("exits/north");
message("vision", "乒地一声,里面有人把大门关上了。\n", room);
}
}
int do_close(string arg)
{
if (!query("exits/south"))
return notify_fail("大门已经是关着的了。\n");
if (!arg || (arg != "gate" && arg != "south"))
return notify_fail("你要关什么?\n");
message_vision("$N朝僧兵点了点头。\n", this_player());
remove_call_out("close_gate");
call_out("close_gate", 2);
return 1;
}
int do_open(string arg)
{
object room;
if (query("exits/south"))
return notify_fail("大门已经是开着了。\n");
if (!arg || (arg != "gate" && arg != "south"))
return notify_fail("你要开什么?\n");
if(!( room = find_object(__DIR__"guangchang1")) )
room = load_object(__DIR__"guangchang1");
if(objectp(room))
{
set("exits/south", __DIR__"guangchang1");
message_vision("$N使劲把大门打了开来。\n", this_player());
room->set("exits/north", __FILE__);
message("vision", "吱地一声,里面有人把大门打开了。\n", room);
remove_call_out("close_gate");
call_out("close_gate", 10);
}
return 1;
}
string look_gate()
{
return "一道三丈来高的朱红杉木包铜大门。\n";
}
int valid_leave(object me, string dir)
{
if ( me->query("id") == "seng bing" && dir == "south" ) return 0;
return ::valid_leave(me, dir);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?