Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2008年8月12日火曜日

10分間プリムセーバーて感じのスクリプト

暑い時期は頭がボーっとして、ものづくりができない千尋ですw

今回は10分間ほど臨時オブジェクトを出して表示する簡単なスクリプトです^^
時間制限つけてますがプリムセーバーやTemp Rezzerとたぶん同じようなものだと思うので取り扱いには注意してくださいねwww

本体として使うオブジェクトを作って、コンテンツ内には臨時オブジェクトを入れておいてllRezObjectでrezします。臨時オブジェクトが消滅する前にllDieさせて、またllRezObjectを繰り返します。


まず本体のスクリプトです。臨時オブジェクトは1分で消えますので、55秒のタイマーでrezを繰り返すようにしましたw
// 約10分間のプリムセーバー本体
integer int=0;  // カウンタ
integer ch=0;  // チャット用チャンネル

default
{
    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチすると
            int=0;  // カウンタ初期化
            llSetTimerEvent(0.1); // 0.1秒後にタイマー
        }
    }

    timer()
    {
        llSetTimerEvent(55);  // タイマー55秒毎
        if (llGetInventoryNumber(INVENTORY_OBJECT) < 1)
        {  // コンテンツ内にオブジェクトがないと
            llSetTimerEvent(0);  // タイマー停止
            return;  // 実行中断
        }
        int++;  // カウンタ加算
        if (int > 10) llSetTimerEvent(0);  // カウント11でタイマー停止
        if (ch != 0) llSay(ch,"氏ねばいいと思うよ");  // 臨時オブジェクト削除用メッセージ
        ch=llCeil(llFrand(2147483646));  // 乱数でチャンネル設定
        string str=llGetInventoryName(INVENTORY_OBJECT,0);  // コンテンツ内のオブジェクト名取得
        // 本体の1.5m上にオブジェクトをRez
        llRezObject(str,llGetPos()+<0,0,1.5>,ZERO_VECTOR,ZERO_ROTATION,ch);
    }
}


次にrezするオブジェクトに入れるスクリプトです。コピー不可のものは使えません。このスクリプトを入れたら臨時オブジェクトになりますので消滅するまで(1分以内)にtakeしてくださいねw
// Rezするオブジェクト用
integer listen_handle;
integer CHANNEL;

default
{
    state_entry()
    {  // オブジェクトを臨時に設定
        llSetPrimitiveParams([PRIM_TEMP_ON_REZ,TRUE]);
    }

    on_rez(integer start_param)
    {  // Rezされると本体からチャンネル番号を取得
        CHANNEL=start_param;  // チャットチャンネル設定
        listen_handle=llListen(CHANNEL, "",NULL_KEY , "");  // リッスン開始
    }

    listen(integer channel, string name, key id, string msg)
    {
        llListenRemove(listen_handle);
        if (channel == CHANNEL) {
            if (msg == "氏ねばいいと思うよ") {  // メッセージ受信したら
                llDie();  // 逝ってきます
            }
        }
    }
}

takeしたオブジェクトをプリムセーバー本体内に入れてください。そしてオーナーがタッチすると約10分間臨時オブジェクトが表示されます。

0 件のコメント:

コメントを投稿