ソラマメブログ

2008年01月12日

自爆スクリプト


スクリプトコードの<>をエスケープするの忘れててあわてて直しました。

 作ったオブジェクトを消すとき普通は、
1.Takeする
2.削除する
3.ゴミ箱から除外する
と3つの手順が必要ですが、これがとても面倒です。
しかも、持ち物のインターフェイスが反応が遅くてたまりません。(物が多すぎるのかな・・・)face07

 それで、スクリプトを調べているうちにすぐに抹消する命令がありました。
llDie()という関数なのですが、ちょっと工夫してオブジェクトにドラッグしてクリックしたら抹消できるスクリプトを作りました。

// スクリプトTouchToDieWithDialog

integer dialogHandle;
integer ListenChannelDialog=10;
default {
touch_start(integer total_number) {
dialogHandle = llListen(ListenChannelDialog, "", llGetOwner(), "");
string mes = "Do you delete this " + llGetObjectName() + " really?";
llDialog(llDetectedKey(0), mes , ["<OK>","<CANCEL>"] , ListenChannelDialog);
}
listen(integer channel, string name, key id, string message) {
if (channel==ListenChannelDialog ) { //for llDialog
if (message == "<OK>") {
llOwnerSay( llGetObjectName() + " say \"Bye!\"");
llDie();
}
}
llListenRemove(dialogHandle);
}
}


 このスクリプトですが、持ち物の中に作ります。「作成」>「新しいスクリプト」をクリックします。



 Scriptsフォルダに「New Script」ができてます。



 これをリネームして、「TouchToDieWithDialog」とします(なんでもいいですけど)。



 それで、自動作成されたスクリプトを消してさっきのコードをコピペして、保存します。「Compile successful!」と下の欄に表示されたら完了です。



 これで準備は完了です。さぁ、試してみましょう。face02

 さっきのスクリプトをオブジェクトにドラッグします。




クリックすると削除するかダイアログで確認してくるので、OKをクリックすると跡形もなく消えてしまいます。もうどこにもありません。face02




でも、modify可のオブジェクトにしかできませんけどね。

HUDCampTimerMessageBoard WittyRadar

この記事へのトラックバックURL

http://tanakaakio.slmame.com/t112504