築地のお店にオンライン伝言板を置いています。
タッチしてチャットで何か言うと、私がオンラインのときに伝言として送ります。
何も用事はなくても、ひやかしでもいいので、何か送ってみてください。
「ブログ見たよ」でもいいので^^
スクリプトでは、タッチした人の伝言が聞こえたらそれを記録して、私がオンラインかどうか問合せ、オンラインだったら伝言を送ります。
一定時間たっても何も聞こえないときは、聞くのをやめます。
問合せてもしオフラインだったら何もしないのですが、一定時間ごとにオンラインかどうか問合せするので、オンラインになった時にまとめて送るしくみになってます。
実際のスクリプトは、オンライン/オフラインの表示など、もっといろんなこともしてますが、伝言を聞いて送る部分はこんな感じです…。
default {
state_entry() {
Owner = llGetOwner();
llSetTimerEvent(StepTime);
}
touch_start(integer touch_num) { // 誰かがタッチしたら
llWhisper(0, "Say your message on chat.");
Handle = llListen(0, "", llDetectedKey(0), ""); // 伝言を待つ
llSetTimerEvent(StepTime);
}
listen(integer channel, string name, key id, string message) { // 伝言を聞いたら
llWhisper(0, "Thank you for your message.");
removeListen(); // 聞くのをやめる
Messages += name+": "+message; // 名前と伝言を記録
llRequestAgentData(Owner, DATA_ONLINE); // オンラインを問合せ
}
timer() { // 一定時間たったら
if (Handle) removeListen(); // 伝言待ちなら聞くのをやめる
llRequestAgentData(Owner, DATA_ONLINE); // オンラインを問合せ
}
dataserver(key query, string online) { // 問合せの答
if ((integer)online == TRUE && Messages != []) {
// 所有者がオンラインで、伝言があればIMを送る
llInstantMessage(Owner, llDumpList2String(Messages,"\n\t"));
llResetScript();
}
}
}
築地のお店