llAllowInventoryDrop
llAllowInventoryDrop(integer add)
オブジェクトのコンテンツへのアイテムドロップを許可/不許可にする。
引数addにTRUEを指定した場合はドロップ許可、FALSEにすると不許可である。
引数addにTRUEを指定した場合はドロップ許可、FALSEにすると不許可である。
通常、オブジェクトのmodify権限を持っていない場合は、コンテンツの中にアイテムを入れることはできない。
しかしこの関数を使ってドロップを許可すると、誰でも任意のアイテムをコンテンツに入れることができるようになる。
なお、FALSEを指定してドロップを不許可にしたからといって、modify権限を持っているユーザーがドロップできなくなるわけではない。
つまりこの関数は、modify権限持っていないユーザーに関して、コンテンツへのアイテムドロップを許可するかしないかを設定する関数である。
しかしこの関数を使ってドロップを許可すると、誰でも任意のアイテムをコンテンツに入れることができるようになる。
なお、FALSEを指定してドロップを不許可にしたからといって、modify権限を持っているユーザーがドロップできなくなるわけではない。
つまりこの関数は、modify権限持っていないユーザーに関して、コンテンツへのアイテムドロップを許可するかしないかを設定する関数である。
参考までに、コンテンツへのアイテムドロップが行われるとchangeイベントが発生するが、modify権限の有無によってセットされるフラグが異なる。
modify権限を保持しているユーザーによるアイテムドロップ時はCHANGED_INVENTORYフラグ、modify権限の無いユーザーの場合はCHANGED_ALLOWED_DROPフラグがセットされる。
modify権限を保持しているユーザーによるアイテムドロップ時はCHANGED_INVENTORYフラグ、modify権限の無いユーザーの場合はCHANGED_ALLOWED_DROPフラグがセットされる。
以下のようにして判定が可能である。
changed(integer mask){ if(mask & CHANGED_INVENTORY){ llWhisper(0, "Contents has changed by user who have modify permission."); }else if(mask & CHANGED_ALLOWED_DROP){ llWhisper(0, "Contents has changed by user who dose not have modify permission."); } }
modify権限の有無に関わらずコンテンツへのアイテムドロップを検知するには以下の判定で良い。
changed(integer mask){ if(mask & (CHANGED_INVENTORY | CHANGED_ALLOWED_DROP)){ llWhisper(0, "Contents has changed."); } }