LlAllowInventoryDrop/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llAllowInventoryDrop( integer add );プリムへインベントリアイテムを加えることを、パーミッションの変更が不要のまま全てのユーザに許可します。
• integer | add | – | TRUEの場合、プリムのインベントリにだれでもドロップすることを許可し、FALSEだと取り消します。 |
実際にドロップするには、Ctrl キーを押しながらインベントリからアイテムをドラッグしてプリムにドロップする必要があります。全てがうまくいっていれば、離す直前にプリムが赤く縁取られているのがわかります。
ドロップしたインベントリアイテムの所有権がプリムのオーナーに変わります。ドロップされたアイテムには、次のオーナーの権限が働きます。譲渡不可のアイテムは、他の人が所有するプリムにドロップできません。
例えば、公開された「投書箱」にノートカードを投函してもらう、というような用途に使えます。
警告
- リンクセットでは、llAllowInventoryDropはルートプリム内のスクリプトから実行されなければならず、そうでなければ静かに失敗します。
- スクリプトは、llAllowInventoryDropステートに関係なく、プリムへエージェントよりドロップされることはありません。(ユーザが権限を変更することなく、プリムにインベントリドロップを許可するスクリプトをドロップするのを試す場合、プリムは"これを編集する権限はありません"と叫ぶでしょう)
- プリムの「オブジェクト」タブで「ロックされている」がチェックされていると動作しません。
- テクスチャーをプリムにドロップするときは、(a) ターゲットプリムを囲む赤いボックスが表示されていることを確認し、(b) テクスチャが実際にボックスの中に入っていることを確認するまで、Ctrlボタンを離さないことに注意してください。白い枠が見えていたり、Ctrlを離すのが早かったりすると、テクスチャはプリムの面に適用されます。
- 誰がアイテムを入れたのかを知る方法はありません。どうしても知りたい場合は、まずユーザーがプリムをタッチしてllAllowInventoryDropをONにし、タッチイベントからユーザーの情報を取得し、タイマーでFALSEに戻すことを検討してください。
- また、llAllowInventoryDropだけでは、ユーザーが何をドロップしたかを知る方法がありません。これについては WhoAddedWhat スクリプトを参照してください。
- 一般のエンドユーザーは、実際にドラッグ&ドロップを行う際に困難に直面するかもしれません。以下のセクションを参照してください。
- llAllowInventoryDrop がなくても、あなたの(編集可能な)ものに対する編集権を持つ人は、あなたと同様にこれを行うことができます。
- あなたがプリムを所有していても、編集権を持っていなければ、プリムに何かをドロップすることはできません。ただし、作成者があなたに渡す前にllAllowInventoryDrop(TRUE)を入れている場合、この限りではありません。
- もし、あなたが編集権を持っていないプリムで、作者がllAllowInventoryDrop(TRUE)を設定したものがあれば、物を入れることはできても、それを削除することはできません。ただし、インベントリに移動することはできます。
llAllowInventoryDrop and Everyday Users
- 例えば、ノートカードを投書箱にドラッグ&ドロップしてもらいたい場合、相手を誘うと同時に、やり方を説明しなければなりません(その際、Ctrlキーを押しながら操作することが不可欠です)。
- これには、かなりの運動神経が必要です。手が不自由だったり、不安定だったり、座ったままでノートパソコンのトラックパッドを使っていたりして、手先の器用さがない人は、この操作を正確に行うことができないかもしれません。
- 例えば、ギフトボックスを販売する際に、インベントリからドラッグ&ドロップで入れるように指示した場合、インベントリとプリムの間には多くのミスがあることを覚えておいてください。例えば、ユーザーが間違ってプレゼントをギフトボックスのリボンにドラッグしてしまい、ギフトボックスのメイン部分にプレゼントが見当たらないとパニックになってしまうかもしれません。(覚えておいてほしいのですが、プリムの編集権を持っている人は、llAllowInventoryDropがあるかどうかに関わらず、プリムのどの部分にでも物をドラッグ&ドロップすることができます。) 代わりに、プリムを右クリックして、開くを選択し、"Open" Object Contents ウィンドウにドラッグ&ドロップするように提案するとよいでしょう -- もっと大きくて安全なターゲットです。
サンプル
integer allow;
default
{
touch_start(integer num)
{
llAllowInventoryDrop(allow = !allow);
llOwnerSay("llAllowInventoryDrop == "+llList2String(["FALSE","TRUE"],allow));
}
changed(integer change)
{
if (change & CHANGED_ALLOWED_DROP) //note that it's & and not &&... it's bitwise!
{
llOwnerSay("The inventory has changed as a result of a user without mod permissions dropping an item on the prim and it being allowed by the script.");
}
}
}
注意点
ユーザはドロップされるインベントリアイテムへ譲渡権を与えるべきです。
関連項目
イベント
• | changed | – | CHANGED_ALLOWED_DROP |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。