Changed/ja
From Second Life Wiki
Second Life Wiki > Changed/ja
| フラグ | 説明 | |
|---|---|---|
| CHANGED_INVENTORY | 0x001 | プリムのインベントリが変わりました。 (オーナーが追加したインベントリだけ) |
| CHANGED_COLOR | 0x002 | プリムの色か透過度が変わりました。 |
| CHANGED_SHAPE | 0x004 | プリムの形が変わりました。 |
| CHANGED_SCALE | 0x008 | プリムのサイズが変わりました。 |
| CHANGED_TEXTURE | 0x010 | プリムのテクスチャかテクスチャの属性が変わりました。 |
| CHANGED_LINK | 0x020 | オブジェクトを構成するプリムの数が変わったか、オブジェクトの上に座っているアバターの数が変わりました。 |
| CHANGED_ALLOWED_DROP | 0x040 | オーナー以外のユーザ (編集不可能な場合はオーナーも含む) がプリムにインベントリを追加しました。 |
| CHANGED_OWNER | 0x080 | オブジェクトのオーナーが変わりました。 |
| CHANGED_REGION | 0x100 | オブジェクトのある地域が変わりました。 |
| CHANGED_TELEPORT | 0x200 | オブジェクトが 装着 されたままテレポートしました。 |
| CHANGED_REGION_START | 0x400 | 地域が今オンラインになりました。 |
| CHANGED_MEDIA | 0x800 | プリムメディア が変更されました。 |
警告
changed イベントの中で state を離れる場合、state を変更する直前にさらに変更が行われていると、この state に戻ってきたときに changed イベントが発生することになります。例えば、
default { changed(integer change) { if(change & CHANGED_LINK) { integer links = 0; if(llGetObjectPrimCount(llGetKey()) < (links = llGetNumberOfPrims())) { llUnSit(llGetLinkKey(links)); state whatever; } else llOwnerSay("リンクかリンク解除かされましたが、上には誰も座っていません。); // default ステートに戻ってきた後にこれがチャットされます。 } } } state whatever { state_entry() { llSetTimerEvent(10.0); } timer() { state default; } }
サンプル
default { changed(integer change) { // & です。 && ではありません ... ビット演算子です! if (change & CHANGED_INVENTORY) { llOwnerSay("インベントリが変わりました。"); } if (change & CHANGED_COLOR) { llOwnerSay("色か透過度が変わりました。"); } if (change & CHANGED_SHAPE) { llOwnerSay("プリムの形が変わりました。"); } if (change & CHANGED_SCALE) { llOwnerSay("プリムのサイズが変わりました。"); } if (change & CHANGED_TEXTURE) { llOwnerSay("プリムのテクスチャかテクスチャの属性が変わりました。"); } if (change & CHANGED_LINK) { llOwnerSay("リンクされているプリムの数が変わりました。"); } if (change & CHANGED_ALLOWED_DROP) { llOwnerSay("インベントリが編集権限のないユーザによって変更されました "+ "プリムにアイテムが落とされ、スクリプトはそれを許可しました。"); } if (change & CHANGED_OWNER) { llOwnerSay("オブジェクトのオーナーが変わりました。"); } if (change & CHANGED_REGION) { llOwnerSay("オブジェクトのある地域が変わりました。"); } if (change & CHANGED_TELEPORT) { llOwnerSay("オブジェクトが装着されたままテレポートしました。"); } if (change & CHANGED_REGION_START) { llOwnerSay("地域が今再起動されました。"); } } }複数の変更で同じアクションが呼ばれたときのために、以下の構文を使用するとよいでしょう。
default{
changed(integer change) { if(change & (CHANGED_OWNER | CHANGED_INVENTORY)) // どちらかの変更で true が返ります。 llResetScript(); }}
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。

