LlRequestPermissions/ja
From Second Life Wiki
メインページ > LlRequestPermissions > LlRequestPermissions/ja
| 定数 | 挙動 | カテゴリ | 付与対象 | 自動付与 | |
|---|---|---|---|---|---|
| PERMISSION_DEBIT | 0x2 | アバターの口座からお金を徴収します | お金 | オーナー | |
| PERMISSION_TAKE_CONTROLS | 0x4 | アバターのコントロールを取得します | コントロール | 誰でも | sit 時、装着時 |
| PERMISSION_TRIGGER_ANIMATION | 0x10 | アバターのアニメーションを再生/停止します | アニメーション | 誰でも | sit 時、装着時 |
| PERMISSION_ATTACH | 0x20 | アバターにアタッチ/デタッチします | 装備 | オーナー | 装着時 |
| PERMISSION_CHANGE_LINKS | 0x80 | リンクを変更します | リンク | オーナー | |
| PERMISSION_TRACK_CAMERA | 0x400 | アバターのカメラの位置と回転を追跡します | カメラ | 誰でも | sit 時、装着時 |
| PERMISSION_CONTROL_CAMERA | 0x800 | アバターのカメラを制御します (sit か装備が必須) | カメラ | 誰でも | sit 時、装着時 |
警告
- パーミション (実行許可) を求めるダイアログがビューアに表示されますが、上表で示した例外の場合は自動的に許可されます。
- パーミションは state 遷移後も維持されます。
- パーミションが自動/手動いずれであろうと、常に run_time_permissions イベントでの処理が必要です。(ダイアログが表示される) 手動パーミションは (ユーザの反応に) 時間がかかりますので、その場合 "ユーザの反応があって初めて run_time_permissions イベントが発生する" という点に注意してください。
- パーミションの付与は一度きりです。
- 既に一度この関数を呼び出してパーミションが許可されているならば、それ以降は (わざわざ) パーミション要求は行われず、その要求内容も無視されます。
- 複数のパーミションを同時に要求するには、次のように OR (|) 演算子でビット加算します:
llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)
- 今のところ "パーミション無し" を要求することはできません。(訳注: 一度与えたパーミションを取り上げることはできない。) (以下のディープノートを参照してください。) 代わりに llResetScript を使ってください。
- スクリプトは一度に一名分のアバターのパーミションしか保持できません。複数のアバターのパーミションを保持するには、複数のスクリプトを使う必要があります。
- パーミションの許可結果は llGetPermissions 関数および llGetPermissionsKey 関数の戻り値に即座に反映されます。これは、たとえ run_time_permissions イベントがキューで待機状態であったり、オブジェクトのイベント キューが既に満杯で run_time_permissions イベントが受け付けられなかった場合も同様です。
- パーミッション要求ダイアログはタイムアウトすることはありません。
- 一つのスクリプトが二つのパーミション要求を出した場合、後から回答された方が承認されたパーミションとみなされます。
- 一人のアバターから別のアバターへのパーミション要求ダイアログ表示は 10 秒間につき 5 回が上限です。これはビューアの制限です。
例
アバターにアニメーション適用の許可を求める
default { touch_start(integer detected) { llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm) { if (perm & PERMISSION_TRIGGER_ANIMATION) { llStartAnimation("sit"); llOwnerSay("アニメーションは 5 秒で終わります"); llSetTimerEvent(5.0); } } timer() { llSetTimerEvent(0.0); llStopAnimation("sit"); } }
複数の異なったパーミションを同時に要求するには、OR (|) を使ったビット加算を行なうか、あらかじめその合計値を計算しておいてください。
llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION); integer perms = PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION; llRequestPermissions(AvatarID, perms);
関連項目
イベント
| • | run_time_permissions | – | パーミッション受信イベント |
関数
| • | llGetPermissions | – | 付与されたパーミッションを取得する | |
| • | llGetPermissionsKey | – | パーミッションが付与されたアバターを取得する |
項目
| • | スクリプトのパーミション |
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。

