LSL(Linden Script Language)スクリプトTips集

ダイアログボックスを表示する(llDialog,llListen,llListenRemove関数)

オブジェクトをクリックすると、ダイアログボックスを表示し、返ってきたメッセージにあわせてオブジェクトの色が変わるサンプルです。
下記のスクリプトを使います。

list Colors =
[
   "Red", "Green","Blue"
];
integer Handle;

default
{
  touch_start(integer total_number)
  {
    Handle = llListen(123, "", "", "");
    llDialog(llDetectedKey(0), "Select one color from among these.", Colors, 123);
  }
  listen(integer channel, string name, key id, string message)
  {
    if(message == "Red")
    {
      llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
    }
    else if(message == "Green")
    {
      llSetColor(<0.0, 1.0, 0.0>, ALL_SIDES);
    }
    else if(message == "Blue")
    {
      llSetColor(<0.0, 0.0, 1.0>, ALL_SIDES);
    }
    llListenRemove(Handle);
  }
}
llListen関数:llListen(integer channel, string name, key id, string msg)
一番目のパラメータ(channel) : チャットチャンネル
二番目のパラメータ(name) : 何or誰の発言を聞くか(アバターやオブジェクトの名前)
三番目のパラメータ(id) : 何or誰の発言を聞くか(アバターやオブジェクトのUUID)
四番目のパラメータ(msg) : 何という言葉を聞くか(ここに指定された言葉以外は聞きません。)
今回のサンプルTipsでは、チャンネル以外は指定してないので、チャンネル123で発言されたすべてがキャッチされます。
llDialog関数:llDialog(key id, string message, list buttons, integer chat_channel)
一番目のパラメータ(id) : 表示するアバターのID
二番目のパラメータ(message) : ダイアログに表示するメッセージ
三番目のパラメータ(buttons) : 選択肢ボタンに表示するラベルのリスト
四番目のパラメータ(chat_channel) : ボタンを押下時、選択結果を送信するチャットチャンネル
llListenRemove関数:llListenRemove(integer number)
一番目のパラメータ : llListenで指定した発言を聞くのをやめる(llListenの戻り値を指定します。)

■チャンネルについて
このサンプルでは123を使っていますが、0やマイナス値でも可能です。
サンプルの場合、チャンネル123は1以上であり(3)に該当しますので
Chatで「/123 Blue」と発言しても青色にオブジェクトは変化します。
同じチャンネル、命令で動くオブジェクトがあればそれも同時に反応します。

(1)-1以下   通常ログへ表示されない。スクリプトからの指示のみ可能。
(2)   0       通常ログへ表示 チャットとスクリプトからの指示可能。
(3) 1以上   通常ログへ表示されない。チャットとスクリプトからの指示可能。