→ doall:應該說...有沒有判斷該obj內部有沒有ppl的函數? 12/16 02:39
這次的問題是一個可以走不完的房間。
以下為原始碼:
#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