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
at 2008年10月15日 22:45

