ソラマメブログ
< 2008年12>
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
アクセスカウンタ
オーナーへメッセージ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→こちら
現在の読者数 4人

2008年10月13日

オンラインチェッカー(リンデンスクリプト Tips)


 今回は、コメントにご要望のあったオンラインチェッカーのスクリプトです。
オブジェクトオーナーのステータス状態によって、テキスト内容およびオブジェクトのカラーを変更します。



「スクリプト内容」
//
//    Tips34 OnlineChecker Script v1.0
//
//                   Created by Zero2000 Kid     2008/10/13
//

float timerRate=5;
vector online_color=<0,1,0>;
vector offline_color=<1,1,1>;
key query_key;
string ownername;

default {
    
    state_entry(){ 
        ownername=llKey2Name(llGetOwner());
        llSetText("",<1,1,1>, 1.0);
        llSetTimerEvent(timerRate);
    } 

    on_rez(integer int) {
        llResetScript(); 
    }
    
    timer() {
        query_key = llRequestAgentData(llGetOwner(), DATA_ONLINE); 
    }
    
    dataserver(key queryid, string data) {
        string msg=ownername+" is ";
        if (queryid==query_key) {
            if ((integer)data) {
                msg+="online.";
                llSetColor(online_color,ALL_SIDES);
            } else {
                msg+="offline.";
                llSetColor(offline_color,ALL_SIDES);
            }
        }
        llSetText(msg,<1,1,1>, 1.0);
    }
}

「使用方法」
1. チェッカー用のオブジェクトを作成します。(球でも箱でもなんでも構いません)
2. オブジェクトのコンテンツの中にスクリプトをセットします。

以上で完了です。


「スクリプトの説明」
今回のスクリプトのポイントは、llRequestAgentData関数でしょうか。
この関数は、dataserverというイベントとペアで使用します。
llRequestAgentData関数だけで、値を取りたいとこですが、ステータス
状態は、別のデータベースサーバ上に値を保持しているためこのような
仕様になっていると思います。llRequestAgentData関数が、呼び出され
ると引数のパラメータに応じて情報を保持しているサーバに問い合わせ
を行います。リモートのサーバから応答があるとdataserverイベントが
発生し、値を受け取ることが出来ます。今回は、引数としてDATA_ONLINE
を指定しています。返り値は、アバターがオンラインだとTRUE、オフライ
ンだとFALSEを返します。スクリプトの処理としては、timerイベントを使用
して、5秒毎にllRequestAgentDataを実行し、情報を更新しています。

参考:
llSetText
llSetTimerEvent
llKey2Name
llRequestAgentData
dataserver
llSetColor


リンデンスクリプト Tips Intexへ





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

この記事へのコメント
ZEROさんはじめまして^^
「オンラインチェッカー」使わせていただきます^^
Posted by あおあお at 2008年10月15日 22:45