LlListen/ja
From Second Life Wiki
| チャンネル定数 | 解説 | |
|---|---|---|
| DEBUG_CHANNEL | 0x7FFFFFFF | チャットチャンネルはスクリプトからデバッグとエラーメッセージを受け取ります |
| PUBLIC_CHANNEL | 0x0 | チャットチャンネルは全ての近くのユーザに届きます |
警告
- ステート変更あるいはスクリプトリセットで、すべてのlistenは自動で除去されます。
- ステート変更はlistenの開放のショートカットのように使えます。
- 65listenまでが何らかの単独スクリプトで同時に開くことができます。
- この数を超えた場合、Script run-time errorとToo Many Listensエラーを引き起こします。
- マイナス域のチャットナンバーでチャットは、クライアントのダイアログボックスを除いて出力することはできません。
- これはオブジェクト同士のコミュニケーションの典型的なつくりです。
- これはクライアント上に置かれた人為的な限度かもしれず、プロトコルによるものではありません。
例
オブジェクトオーナからの何らかのチャットを聞き、一度だけ返答する、些細な例です。ラグの削減と周囲のユーザのスパムを回避するため、0以外の広範囲チャンネルから選んでlistenすることと、'/5 hello'のような、選択チャンネル上でのチャットによるlistenイベントで作動することです。
// says beep to owner the first time owner says something in main chat; integer listen_handle; default { state_entry() { //Registers the listen to the owner of the object at the moment of the call. // This does not automatically update when the owner changes. // Change 0 to another positive number to listen for '/5 hello' style of chat. listen_handle = llListen(0, "", llGetOwner(), ""); } listen( integer channel, string name, key id, string message ) { llOwnerSay("beep"); // Stop listening until script is reset llListenRemove(listen_handle); } on_rez(integer param) { //Triggered when the object is rezed, like after the object had been sold from a vendor llResetScript();//By resetting the script on rez it forces the listen to re-register. } changed(integer mask) { //Triggered when the object containing this script changes owner. if(mask & CHANGED_OWNER) { llResetScript(); } } }
ノート
チャンネル0は避けて、避ける可能性のあるnameやidを設定します(Lag)。llListen(0,"","","")はチャット範囲の皆からのチャットを聞くため確実にラグとなりやすく、それらのコストは回避すべきです。
関連項目
イベント
| • | listen |
関数
| • | llListenRemove | – | listenを解除します | |
| • | llListenControl | – | listenを有効(無効)にします | |
| • | llWhisper | – | 10メートルを限度としてチャットを送信します | |
| • | llSay | – | 20メートルを限度としてチャットを送信します | |
| • | llShout | – | 100メートルを限度としてチャットを送信します | |
| • | llRegionSay | – | 現在のSimを限度としてチャットを送信します |
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。

