2007年11月30日金曜日

【LSL】ONLINEインジケータ&カフェ用看板

お友達がたまにマスターをしている白虎のミルクカフェ(slurl)。
「たまに」なので常駐している訳ではないので、留守の時などは自作の看板をその都度rezしていたそうな。
そんな話を聞いて、以前自分が作って放置していたオンラインインジケーターを思い出し、ちょっと作っちゃいました。


まずはオンライン/オフラインの状況をフローティングテキストとテクスチャーで表示する看板。
英語はテキトーなので気にしないようにw

基本スクリプトはこんな感じ。

key owner_key;
string owner_name;
key AgentData;

default {
state_entry() {
owner_key = llGetOwner();
owner_name = llKey2Name(owner_key);
llSetTimerEvent(1.0);
}

on_rez(integer start_param) {
llResetScript();
}

timer() {
// ONLINE CHECK
AgentData = llRequestAgentData(owner_key, DATA_ONLINE);
}

dataserver(key id, string data) {
if (data == "1") {
llSetText(owner_name + " is ONLINE", <1.0,0.0,0.0>, 1.0);
} else {
llSetText(owner_name + " is OFFLINE", <0.0,0.0,0.0>, 1.0);
}
}
}


コレはフローティングテキストでの表示のみでテクスチャーの変更は入っていません。
その辺はLSL Wikiあたりをみましょー(爆
あぁ、諸先輩方の突っ込みがコワイ・・・。

次はカフェ用の看板。

カフェ用看板で必要だったのは
  1. オフライン時「閉店」の表示
  2. オンライン時「出かけていて留守」と「お店にいます(お店やってます)」の2パターンが必要
でした。

そこで
  • オンライン/オフラインの判定はそのまま。
  • ログオンした時は常に「留守」を表示(お店にいるとは限らないから)
  • (オンライン時に)オーナーがタッチする事で「留守」と「開店」のテクスチャーを差し替え。データベース接続時もその状態を維持。
というのをフラグで管理しつつ作ったのが、これ。


相変わらず英語はテキ(ry
友達にも気に入ってもらえました。

今回はカフェっぽい看板にしたので9プリムもあるんですが、そのうち1プリム物を開発して売り物にしようかしらw