スカイボックス「MyBox」は、サンドボックスなどの上空に臨時の部屋やプラットフォームなどを出して、もの作りの作業や着替えなどができるようにしたものです。
箱に座って、メニューで上空に行って部屋などを出し、用がすんだら「Clear」で片付けます。
写真は築地のお店のデモ機で、場所が狭いので小さめの8m四方のプラットフォームを出しています。
商品では標準で20m四方、サイズ変更でもっと大きくもできます。
下に、スクリプトの部屋を出す(Rez)ところと、「Clear」で片付けるところを書きます。
片付けるときには、llDie()という、名前からして恐ろしい、オブジェクトをきれいさっぱり消去する命令を使います。
llDie()で消えたオブジェクト(中のスクリプトも)を復活する方法はありませんので(ゴミ箱にもない)、テストする前には必ずコピーをとっといてください…経験者は語る^^;
default {部屋側には「Clear」を聞いて自分を消去するスクリプトを入れておきます。
// (省略)
listen(integer channel, string name, key id, string button) { // 押されたボタンを聞く
// (省略)
else if ( 0 <= llListFindList( Rooms, [button] )) {
// 部屋名のボタンで部屋をRezしRoomChannelの数字を渡す
llRezAtRoot( button, llGetPos() + Offset,
ZERO_VECTOR, ZERO_ROTATION, RoomChannel );
}
else if ( button == "Clear" ) {
// 「Clear」ボタンでRoomChannelで「Clear」と言う
llRegionSay( RoomChannel, "Clear" );
llListenRemove(Handle);
llSleep(0.7);
jumpPos(HomePos); // もとの場所に戻る
llSleep(0.7);
unsitAll(); // 座っている人を立たせる
llDie(); // 自分を消去(デモでは消えずに残る)
}
}
}
default {
on_rez(integer start_param) {
if (start_param) llListen(start_param,"","","Clear");
// Rezで渡された数字のチャンネルで「Clear」を聞く
}
listen(integer channel, string name, key id, string msg) {
llDie(); // 聞こえたら自分を消去
}
}