2011年7月10日日曜日

簡単にフローティングテキストを付けるスクリプト

今回はllTextBoxを使ってフローティングテキスト(ホバーリングテキスト)を付けられる簡単で便利なスクリプトです。llTextBox実装の関係でビューワー2.4以上でないと使えないみたいですけど^^;

スクリプトをインベントリ(持ち物)の中で作っておいて、フローティングテキストを付けたいプリムにドロップするとテキスト入力ダイアログが出るので、そこにテキストを入れて送信すればオッケーです。あとフローティングテキストが設定されるとスクリプトは消えるようにしました。また無視とか放置したりしたときのために5分後には自動的に消えるようにしました。

// フローティングテキスト簡単設定

integer ch;  // ダイアログのチャンネル用変数

default
{
    state_entry()
    {
        ch=llCeil(llFrand(2147483646));  // チャンネルをランダムに決める
        key id=llGetOwner();  // オーナーのキー
        llListen(ch,"",id,"");  // リッスン開始
        llTextBox(id,"5分以内にフローティングテキストを入力してください",ch);  // テキスト入力用のダイアログ
        llSetTimerEvent(300);  // タイマー5分
    }

    timer()
    {  // 5分後にスクリプト削除
        llOwnerSay("時間切れです。スクリプトを削除します!");
        llRemoveInventory(llGetScriptName());
    }

    listen(integer channel, string name, key id, string msg)
    {  // リッスンイベント
        if (channel == ch && id == llGetOwner()) {  // いらないけど一応
            llSetText(msg,<1,1,1>,1.0);  // 受信したメッセージをフローティングテキストに設定
            llOwnerSay("テキストを設定しました。スクリプトを削除します。");  // なお、このスクリプトは自動的に消滅する
            llRemoveInventory(llGetScriptName());  // スクリプト削除
        }
    }
}

繰り返しますが、このスクリプトは消えるようになってるので、オブジェクト内でスクリプトを作ったときは実行する前に持ち物にコピーしてくださいねw

0 件のコメント:

コメントを投稿