作者doall (狂人)
看板mud_sanc
标题Re: [问题] 一些函数用法的问题。
时间Sun Dec 16 02:07:18 2007
这次的问题是一个可以走不完的房间。
以下为原始码:
#include <path.h>
inherit ROOM;
void create()
{
string *long_str,*short_str,long_string;
int i;
long_str = ({});
short_str =({});
set("hell_level",1);
::create();
seteuid(getuid());
short_str = ({"石磨地狱",
"石压地狱",
"刀锯地狱"
});
i = random(3);
set("short",RED+short_str[i]+NOR);
long_str =({
" 阴暗的角落中缩着几条等着受罚的亡魂,大殿中央摆着一副\n"
+"巨大的石磨,石磨上是一条正在受罚而痛苦哀鸣的亡魂。只见石\n"
+"磨慢慢将他的身体一寸寸磨成肉酱,鬼卒则在一旁欢笑取乐。\n",
" 只见大殿正中央挖了一口大池,鬼卒将犯魂一条接着一条丢\n"
+"进大池中,接着快刀一挥,上方砸下一块大石将一群犯魂压成血\n"
+"泥。血气一冲,你的胃忍不住一阵翻涌。\n",
" 殿上立满无数的木桩,只见一条条的亡魂四肢被绑在不同的\n"
+"木桩上,大锯自他们的下体往头部慢慢的锯上,锯断之後再将残\n"
+"破的躯干合上,不断重复。\n"
});
long_string = long_str[i] + "\n\t\t无论何方皆出路,非去路!\n";
set("long",long_string);
reset();
}
void init(){
add_action("cmd_move",({
"up","down","north","east","west","south"
,"u","d","n","e","w","s"
}) );
}
int cmd_move(){
object newroom, player, here;
int lv;
player = this_player();
here = environment(player);
lv = here->query("hell_level");
if(lv < 19){
newroom = new(base_name(here)+".c");
newroom -> set("hell_level",random(20));
player -> move_player(newroom);
}
else {
player -> move_player("/u/d/dolla/workroom.c");
}
return 1;
}
如此,用这个obj的action创造一个新的obj。如此循环。
但是有个大缺点!这样一来,不就有无限多个obj???
会不会对系统造成负担?若有,有无删除内部没有玩家存在的obj的函数?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.147.252
1F:→ doall:应该说...有没有判断该obj内部有没有ppl的函数? 12/16 02:39