|
发表于 2017-1-16 08:26:36
|
显示全部楼层
// senlin.c
#include <ansi.h> 加载颜色.h 定义文件
#include <room.h> 加载房间.h 定义文件
inherit ROOM; 加载房间类型的特殊定义,比如变量,全局变量 函数定义等等
void create()
{
set("short","针叶林");
set("long", @LONG
这是极西天山脚下的一片针叶林,林中鸟兽成群,满地铺盖着厚厚一层松
针。北方的一座高耸的山脉便是天山了,山上终年积雪,山下却是绿树成荫。
往东南走便是大草原,有辛勤的哈萨克族人在那里放牧。你走着走着,竟然迷
失了道路。
LONG);
set("exits", ([
"east" : __DIR__"senlin"+(1+random(4)), // __DIR__是当前目录的全局变量 后面表示 文件名为senlin+ (1+(0~3的随机数)),
"west" : __DIR__"senlin"+(1+random(4)),
"south" : __DIR__"senlin"+(1+random(4)),
"north" : __DIR__"senlin"+(1+random(4)),
]));
set("objects", ([
__DIR__"npc/toulang" : 1,
]));
set("outdoors", "天山");
set("coor/x",-310);
set("coor/y",120);
set("coor/z",0);
set("coor/x",-310);
set("coor/y",120);
set("coor/z",0);
setup();
}
int valid_leave(object me, string dir) //离开房间执行的函数,在room文件里有定义
{
if( dir != me->query_temp("correct_dir")) 如果从来没进过这个房间 correct_dir 是个标识符 默认是空无或者0
me->set_temp("ts_sl", 0); 如果没有标示,ts_sl 临时状态设为0
else me->add_temp("ts_sl", 1); 如果有标示,临时变量+1
if( me->query_temp("ts_sl") > 5 + random(5) ) { 如果临时变量ts_sl大于5~9的随机数执行下面的命令,也就是说这个迷宫最多走9步最少走5步就能离开
me->move(__DIR__"senlin"); 移动到senlin 这个房间
me->delete_temp("ts_sl"); 删除目标身上的临时标志
me->delete_temp("correct_dir"); 删除目标身上的临时标志
return notify_fail("你累得半死,终於找到了正确的方向。\n"); 告诉给目标一个信息。
}
return ::valid_leave(me,dir);
}
这个是以前的老code,大概是一个5房间的迷宫,如果为了节约内存,可以创建成华山菜地那样的一个房间的迷宫,也能达到这种效果。
改这样
"east" : __DIR__"senlin1",
"west" : __DIR__"senlin1",
"south" : __DIR__"senlin1",
"north" : __DIR__"senlin1",
就行了
|
评分
-
1
查看全部评分
-
|