オブジェクトのコンテンツに自分自身を入れて再帰Rezしたい

sabro

2008年12月17日 01:55


オブジェクトのコンテンツに自分自身を入れて、そのコンテンツ内の自分をRez。Rezされたオブジェクトが、またコンテンツ内の自分をRezというのをやりたかったんですが・・・。

とりあえず、Rezするスクリプトを作成

default
{
touch_start(integer total_number)
{
llRezObject("Object",
llGetPos() + ,
ZERO_VECTOR,
ZERO_ROTATION,
0);
}
}


コンテンツにRez用スクリプトと、自分自身を入れる。


タッチ連打、あれ・・・。2つめでRezが止まってしまいました。


実は2つめのObjectには、コンテンツにスクリプトしか入ってないのです。これは絶対不可避な問題で、最初の1つ目には自分を入れれないからです。たとえば、下の1つ目のObjectを持ち物に入れて、それを2つ目のオブジェクトの代わりに使っても、今度は3つ目で同じように止まってしまいます。100回入れ直せば100回Rezできると思いますが、無限にRezさせるのはできません(多分)。

そこで考え方を変えて、Rez後にObjectを渡してす方法を試してみました。これなら煩わしい下準備もなく無限にRez可能になるはず!

スクリプトはこちら。

default
{
touch_start(integer total_number)
{
llRezObject("Object",
llGetPos() + ,
ZERO_VECTOR,
ZERO_ROTATION,
0);
}

// Rezが終わった後に呼ばれるイベント
object_rez(key id)
{
// idにRezしたkeyが入ってくるのでObjectを渡す
llGiveInventory(id, "Object");
}
}


で、タッチ連打~。成功したようです(・∀・)
LSL