LlRequestPermissions/ja - Second Life Wiki

LlRequestPermissions/ja

From Second Life Wiki

Second Life Wiki > LlRequestPermissions/ja
Jump to: navigation, search

Contents

要約

関数: llRequestPermissions( key agent, integer perm );

特定の種類の関数の実行を許可するか、アバターに問い合わせます。

• key agent 同一 地域 にいるアバターの UUID
• integer perm 権限マスク (要求する権限を含んでいる ビットフィールド) 。

アバターの回答を待たずに、スクリプトは処理を続行します。回答があった時点で、 run_time_permissions イベントがイベントキューに追加されます。
定数 挙動 カテゴリ 付与対象 自動付与
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 時、装着時

警告

  • 上表で示した自動的に許可されるパターン以外は、エージェントに許可を求めるダイアログがビューアに表示されます。
  • オブジェクトがアバターに装着されているものであれば、「自動付加される」権限はリクエストに対する通知なく許可されます。
  • 権限はステート遷移後も維持されます。
  • 権限が自動/手動いずれであろうと、常に run_time_permissions イベントでの処理が必要です。許可を得るまでには時間がかかります。 run_time_permissions ハンドラが呼ばれるまでにはすっかり許可されているはずだと思いこまないようにしましょう。
  • 権限は重ねていくことができません。
    • 前回この関数を呼び出してある権限をリクエストし、許可された場合、次の呼び出しでその権限をリクエストしないと、その権限は解放されます (消失します) 。
    • 複数の権限を同時に要求するには、次のように OR (|) 演算子でビット加算します:
      llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)
  • 今のところ「権限無し」を要求することはできません (以下の記事を参照してください)。 回避策として llResetScript を使ってください。
  • スクリプトは一度に一名分のアバターの権限しか保持できません。複数のアバターの権限を保持するには、複数のスクリプトを使う必要があります。
  • 権限の許可結果は run_time_permissions イベントがキューに入ったり、オブジェクトのイベントキューが既に満杯である場合を除いて、llGetPermissions 関数および llGetPermissionsKey 関数の戻り値に即座に反映されます。
  • 権限要求ダイアログはタイムアウトすることはありません。
    • 一つのスクリプトが二つの権限要求を出した場合、後から回答された方が承認された権限とみなされます。
  • 一人のアバターから別のアバターへの権限要求ダイアログ表示は 10 秒間につき 5 回が上限となるよう、ビューワで制限されています。
  • Important Issues

    ~ All Issues ~ Search JIRA for related Bugs
       スクリプトの権限 を剥奪することができない

    サンプル

    アバターにアニメーション適用の許可を求めます ---

    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 権限が付与されたアバターを取得する

    記事

    •  スクリプトの権限

    特記事項

    All Issues

    ~ Search JIRA for related Issues
       スクリプトの権限 を剥奪することができない
    この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
    この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。