LSL挨拶スクリプト:訪問者へのウェルカムメッセージ
SLのストアやクラブ向けの無料LSL挨拶スクリプト。近くに来た訪問者に1日1回、個別にウェルカムメッセージを送信。ローカルチャットは荒らさません。
オーナーがログインしていなくても、すべての訪問者に挨拶できます。この挨拶スクリプト(greeter script)は、近くに来たアバターを検知し、1日1回、一人ひとりに個別のウェルカムメッセージを送ります。メッセージは訪問者本人だけに届くので、ローカルチャットは静かなままで、オーナー自身には挨拶されません。
// Visitor Greeter - free LSL script from WhatSL (https://whatsl.com/scripts/lsl-greeter-script)
// Free to use, change and put in your own creations, also ones you sell.
//
// Sends a private welcome message to each visitor who comes near, once a day.
// Only the visitor sees it, so it does not spam local chat. The owner is never greeted.
string WELCOME_TEXT = "Welcome, %name%! Have a look around and grab the free gift at the entrance.";
float RANGE_METRES = 20.0; // how close a visitor must come (up to 96.0)
float SCAN_SECONDS = 10.0; // how often to look for new visitors
integer MAX_REMEMBER = 300; // visitors remembered per day
list gSeen = [];
integer gDay;
string fillName(string s, string name)
{
integer i = llSubStringIndex(s, "%name%");
if (i == -1) return s;
return llInsertString(llDeleteSubString(s, i, i + 5), i, name);
}
default
{
state_entry()
{
gDay = llGetUnixTime() / 86400;
llSensorRepeat("", NULL_KEY, AGENT, RANGE_METRES, PI, SCAN_SECONDS);
}
on_rez(integer param)
{
llResetScript();
}
sensor(integer total)
{
integer today = llGetUnixTime() / 86400;
if (today != gDay)
{
gDay = today;
gSeen = [];
}
key owner = llGetOwner();
integer i;
for (i = 0; i < total; ++i)
{
key av = llDetectedKey(i);
if (av != owner)
{
if (llListFindList(gSeen, [av]) == -1)
{
llRegionSayTo(av, 0, fillName(WELCOME_TEXT, llGetDisplayName(av)));
gSeen += [av];
if (llGetListLength(gSeen) > MAX_REMEMBER) gSeen = llDeleteSubList(gSeen, 0, 0);
}
}
}
}
}
自由に使用・改変でき、販売する作品にも組み込めます。
設定方法
- スクリプトを、ランディングポイントの近くにある小さなオブジェクト(看板や透明なプリムなど)に入れます。
- WELCOME_TEXTにメッセージを書きます。%name%は訪問者の表示名に置き換わります。
- 保存します。その場を離れ、別のアバターで戻ってくるか、友達にテストしてもらいましょう。
設定項目
- WELCOME_TEXT:ウェルカムメッセージです。新しい商品、ギフトの場所、グループについて触れるとよいでしょう。
- RANGE_METRES:訪問者がどれくらい近づいたら挨拶するかを決めます。最大96メートルまで設定できます。
- SCAN_SECONDS:新しい訪問者を探す間隔です。10秒がちょうどよいバランスです。
- MAX_REMEMBER:1日に覚えておく訪問者の数です。上限を超えると、いちばん古いものから忘れていきます。
ヒント
- メッセージは短く、親しみやすく。一文か二文にまとめましょう。
- 挨拶役は、ストアの周りに複数置くのではなく、ランディングポイントの近くに一つだけ置きましょう。訪問者が二重にメッセージを受け取らずに済みます。
よくある質問
訪問者は来るたびにメッセージを受け取りますか?
いいえ。訪問者には1日1回(サーバーのUTC日付基準で)挨拶します。
挨拶スクリプトは誰が訪れたかを保存しますか?
二重に挨拶しないよう、今日の訪問者のキーだけをメモリに保持します。それらは翌日になるか、スクリプトが再起動すると忘れられます。
挨拶スクリプトで重くなりますか?
10秒ごとのセンサーは軽い負荷です。毎秒スキャンしたり、同じリージョンで非常に多くの挨拶スクリプトを使ったりするのは避けましょう。