ソラマメブログ
< 2007年10>
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
アクセスカウンタ
オーナーへメッセージ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→こちら
現在の読者数 4人

2007年10月24日

リンク/リッスン/ダイアログ(LSL リファレンス)

リンク系の関数/イベント
名称種別内容
llMessageLinked関数指定したリンクプリムにメッセージを送信する。
link_messageイベントリンクメッセージを受信する。
llGetLinkName関数指定したリンクプリムの名称を返す。
llGetLinkNumber関数リンクされているプリムのリンクナンバーを返す。
llGetNumberOfPrims関数リンクされているプリムの総数を返す。
llGetLinkKey関数指定したリンクプリムのkeyを取得する。
llCreateLink関数オブジェクトをリンクする。
llBreakLink関数指定したプリムのリンクを解除する。
llBreakAllLinks関数オブジェクト全てのリンクを解除する。
リッスン系の関数/イベント
名称種別内容
llListen関数リッスンモードを開始する。
listenイベントアバターやオブジェクトの発言に反応する。
ダイアログ
名称種別内容
llDialog関数ダイアログを表示する。

llMessageLinked <機能> 指定したリンクプリムにメッセージを送信する。 link_messageイベントとペアで使用する。 llsay系コマンドとlistenを併用する方法より、40%以上高速らしい。 <構文> llMessageLinked(integer linknum, integer num, string str, key id) * linknum : メッセージの送信先プリムのリンクナンバーを指定する。以下の定数も使用可能。 * num : 送信する数値メッセージ。(特になければ0) * str : 送信する文字列メッセージ。(特になければ"")        メモリーが許す範囲内であれば、送信する文字列の長さに特に制限はない。 * id : 送信するkey。(特になければNULL_KEY) [linknum定数]
Statistical OperationValuelinknum
LINK_ROOT1ルートプリム
LINK_SET-1全てのプリム
LINK_ALL_OTHERS-2自分以外の全てのプリム
LINK_ALL_CHILDREN-3全ての子プリム
LINK_THIS-4自分自身
<例> // "Hello"という文字列を送信する。 llMessageLinked(LINK_THIS, 0, "Hello", NULL_KEY);; ページ先頭へ
link_message <機能> リンクメッセージを受信する。 llMessageLinkedコマンドとペアで使用する。 <構文> link_message(integer sender_num, integer num, string str, key id) * sender_num : 送信元プリムのリンクナンバー。 * num : 受信した数値メッセージ。 * str : 受信した文字列メッセージ。 * key : 受信したkey。 <例> // 受信メッセージを表示する。 link_message(integer sender_num, integer num, string str, key id) { llOwnerSay(str); } ページ先頭へ
llGetLinkNumber <機能> プリムのリンクナンバーを返す。 何もリンクされていなかった場合は、0を返す。 ルートプリムで実行された場合は、1を返す。 <構文> integer llGetLinkNumber() <例> // リンクナンバーを表示する。 llOwnerSay((string)llGetLinkNumber()); ページ先頭へ
llGetNumberOfPrims <機能> リンクされているプリムの総数を返す。 <構文> integer llGetNumberOfPrims() <例> // リンクプリムの総数を表示する。 llOwnerSay((string)llGetNumberOfPrims()); ページ先頭へ
llGetLinkName <機能> 指定したリンクプリムの名称を返す。 <構文> string llGetLinkName(integer linknum) * linknum : プリムのリンクナンバー <例> // リンクされている全プリムの名称を表示する。 integer i = llGetNumberOfPrims(); for (; i >= 0; --i) { llOwnerSay(llGetLinkName(i)); } ページ先頭へ
llGetLinkKey <機能> 指定したリンクプリムのkeyを取得する。 <構文> key llGetLinkKey( integer linknum ) * linknum : プリムのリンクナンバー <例> // リンクされている全プリムのkeyを表示する。 integer i = llGetNumberOfPrims(); for (; i >= 0; --i) { llOwnerSay(llGetLinkKey(i)); } ページ先頭へ
llCreateLink <機能> オブジェクトをリンクする。 * 実行には、PERMISSION_CHANGE_LINKS の権限が必要。 * アタッチしたオブジェクトでは、使用できない。 <構文> llCreateLink(key target, integer parent) * target : リンクするオブジェクトのkeyを指定する。 * parent : TRUEまたはFALSEを指定する。(TRUEの場合、自分がルートプリムになる。) ページ先頭へ
llBreakLink <機能> 指定したプリムのリンクを解除する。 * 実行には、PERMISSION_CHANGE_LINKS の権限が必要。 <構文> llBreakLink(integer linknum) * linknum : プリムのリンクナンバー。 <例> // リンクナンバー5のプリムのリンクを解除する。 llBreakLink(5); * もしこのオブジェクトに6,7番目のリンクナンバーを持つプリムがあった場合、 それらのプリムのリンクナンバーは、それぞれ5,6に振り替えられる。 ページ先頭へ
llBreakAllLinks <機能> オブジェクト全てのリンクを解除する。 * 実行には、PERMISSION_CHANGE_LINKS の権限が必要。 * アタッチしたオブジェクトでは、使用できない。 <構文> llBreakAllLinks() ページ先頭へ
llListen <機能> リッスンモードを開始する。 * リッスンモードとは、llSay等の発言を監視するモードである。 listenイベントとペアで使用する。 <構文> integer llListen(integer channel, string name, key id, string msg) * channel : リッスンするチャンネル番号を指定する。(通常のチャット画面は、チャンネル0) * name : リッスン対象とするアバターやオブジェクトの名前を指定する。("" とすると全ての名前が対象になる) * id : リッスン対象とするアバターやオブジェクトのkeyを指定する。(NULL_KEY とすると全てのkeyが対象になる) * msg : リッスン対象とするメッセージを指定する。ここで指定したメッセージ以外は全て無視される。 ("" とすると全てのメッセージが対象になる) <例> // チャンネル0番の全ての人の全ての発言をリッスンする。 handle = llListen( 0, "", NULL_KEY, "" ); * チャンネル番号が0になっているので、通常のチャット画面上に入力された発言全てが対象となる。 // チャンネル7番のオーナーの発言のみをリッスンする。 handle = llListen( 7, "", llGetOwner(), "" ); * ここでいうオーナーとは、スクリプトが動作するオブジェクトのオーナーのことである。 * チャット入力欄からチャンネル7に発言する場合は、発言の頭に /7 をつける。   このとき画面上には、発言内容は出力されない。 ページ先頭へ
listen <機能> アバターやオブジェクトの発言に反応する。 llListenコマンドとペアで使用する。 <構文> listen(integer channel, string name, key id, string message) * channel : 発言があったチャンネル番号が入る。 * name : 発言者の名前が入る。 * id : 発言者のkeyが入る。 * message : 発言者のメッセージが入る。 <例> // 発言者の名前を表示する。 listen( integer channel, string name, key id, string message ) { llOwnerSay(name); } ページ先頭へ
llDialog <機能> ダイアログを表示する。画面の右上に出現する青いダイアログである。 ・配置可能なボタン数は、最大12個。 ・listenイベントとペアで使用する。 <構文> llDialog(key id, string message, list buttons, integer chat_channel) * id:ダイアログを表示するアバターのUUIDを指定する。 * message:ダイアログに表示するメッセージを指定する。最大512文字(半角)。日本語もOK。 * buttons:ダイアログに表示するボタン名称を指定する。ボタン一個につき最大24文字(半角)まで。 ボタンは、左から右、下から上へと順番に配置される。ボタン名を1〜12という名称で指定した 場合、左下角が"1"で、右上角が12となる。日本語もOK。 * chat_channel:チャットチャンネルを指定する。-2,147,483,648 〜 2,147,483,647の中から好きな数字を選択。 <例> // オーナーがタッチしたときダイアログを表示し、選んだボタン名称をチャット画面上に表示する。 integer CHANNEL = -1; list MENU_MAIN = ["Hello","Door","Sit"]; default { state_entry() { llListen(CHANNEL, "", llGetOwner(), ""); } touch_start(integer total_number) { if (llDetectedKey(0)==llGetOwner()) { llDialog(llGetOwner(), "Please Select Menu", MENU_MAIN, CHANNEL); } } listen(integer channel, string name, key id, string message) { llOwnerSay(message); } } ページ先頭へ