Difference between revisions of "LlRequestPermissions/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 850912 by Mako Nozaki (Talk))
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{Issues/SVC-1006}}{{LSL_Function/avatar/ja|agent|sim=*}}{{LSL_Function/ja
{{Issues/SVC-1006/ja}}{{LSL_Function/avatar/ja|agent|sim=*}}{{LSL_Function/ja
|func=llRequestPermissions|sort=RequestPermissions
|func=llRequestPermissions|sort=RequestPermissions
|func_id=136|func_sleep=0.0|func_energy=10.0
|func_id=136|func_sleep=0.0|func_energy=10.0
|p1_type=key|p1_name=agent|p1_desc
|p1_type=key|p1_name=agent|p1_desc
|p2_type=integer|p2_name=perm|p2_desc=パーミッションマスク(要求するパーミッションを含んでいる{{Wikipedia|1=ビットフィールド|2=ビットフィールド|lang=ja}})。
|p2_type=integer|p2_name=perm|p2_desc=権限マスク (要求する権限を含んでいる {{Wikipedia|1=ビットフィールド|2=ビットフィールド|lang=ja}}) 。
|func_desc=特定の関数の実行を許可するか、アバターに問い合わせます。
|func_desc=特定の種類の関数の実行を許可するか、アバターに問い合わせます。
|func_footer=アバターの回答を待たずに、スクリプトは処理を続行します。回答があった時点で、{{LSLG/ja|run_time_permissions}} イベントがイベント キューに追加されます。
|func_footer=アバターの回答を待たずに、スクリプトは処理を続行します。回答があった時点で、 {{LSLG/ja|run_time_permissions}} イベントがイベントキューに追加されます。
|return_text
|return_text
|spec
|spec
|caveats=
|caveats=
<div>
<div>
* パーミション (実行許可) を求めるダイアログがビューアに表示されますが、上表で示した例外の場合は自動的に許可されます。
* 上表で示した自動的に許可されるパターン以外は、エージェントに許可を求めるダイアログがビューアに表示されます。
* パーミションは state 遷移後も維持されます。
* オブジェクトがアバターに装着されているものであれば、「自動付加される」権限はリクエストに対する通知なく許可されます。
* パーミションが自動/手動いずれであろうと、常に {{LSLG/ja|run_time_permissions}} イベントでの処理が必要です。(ダイアログが表示される) 手動パーミションは (ユーザの反応に) 時間がかかりますので、その場合 "ユーザの反応があって初めて {{LSLG/ja|run_time_permissions}} イベントが発生する" という点に注意してください。
* 権限はステート遷移後も維持されます。
* パーミションの付与は一度きりです。
* 権限が自動/手動いずれであろうと、常に {{LSLG/ja|run_time_permissions}} イベントでの処理が必要です。許可を得るまでには時間がかかります。 {{LSLG/ja|run_time_permissions}} ハンドラが呼ばれるまでにはすっかり許可されているはずだと思いこまないようにしましょう。
** 既に一度この関数を呼び出してパーミションが許可されているならば、それ以降は (わざわざ) パーミション要求は行われず、その要求内容も無視されます。
* 権限は重ねていくことができません。
** 複数のパーミションを同時に要求するには、次のように OR <nowiki>(|)</nowiki> 演算子でビット加算します: <lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)</lsl></div>
** 前回この関数を呼び出してある権限をリクエストし、許可された場合、次の呼び出しでその権限をリクエストしないと、その権限は解放されます (消失します)
* 今のところ "パーミション無し" を要求することはできません。(訳注: 一度与えたパーミションを取り上げることはできない。) (以下のディープノートを参照してください。) 代わりに {{LSLG/ja|llResetScript}} を使ってください。
** 複数の権限を同時に要求するには、次のように OR <nowiki>(|)</nowiki> 演算子でビット加算します: <lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)</lsl></div>
* スクリプトは一度に一名分のアバターのパーミションしか保持できません。複数のアバターのパーミションを保持するには、複数のスクリプトを使う必要があります。
* 今のところ「権限無し」を要求することはできません (以下の記事を参照してください)。 回避策として {{LSLG/ja|llResetScript}} を使ってください。
* パーミションの許可結果は {{LSLG/ja|llGetPermissions}} 関数および {{LSLG/ja|llGetPermissionsKey}} 関数の戻り値に即座に反映されます。これは、たとえ {{LSLG/ja|run_time_permissions}} イベントがキューで待機状態であったり、オブジェクトのイベント キューが既に満杯で run_time_permissions イベントが受け付けられなかった場合も同様です。
* スクリプトは一度に一名分のアバターの権限しか保持できません。複数のアバターの権限を保持するには、複数のスクリプトを使う必要があります。
* パーミッション要求ダイアログはタイムアウトすることはありません。
* 権限の許可結果は {{LSLG/ja|run_time_permissions}} イベントがキューに入ったり、オブジェクトのイベントキューが既に満杯である場合を除いて、{{LSLG/ja|llGetPermissions}} 関数および {{LSLG/ja|llGetPermissionsKey}} 関数の戻り値に即座に反映されます。
** 一つのスクリプトが二つのパーミション要求を出した場合、後から回答された方が承認されたパーミションとみなされます。
* 権限要求ダイアログはタイムアウトすることはありません。
* 一人のアバターから別のアバターへのパーミション要求ダイアログ表示は 10 秒間につき 5 回が上限です。これはビューアの制限です。
** 一つのスクリプトが二つの権限要求を出した場合、後から回答された方が承認された権限とみなされます。
|examples=アバターにアニメーション適用の許可を求める
* 一人のアバターから別のアバターへの権限要求ダイアログ表示は 10 秒間につき 5 回が上限となるよう、ビューワで制限されています。
<lsl>default
|notes=エージェントが自動付加されない権限をスクリプトに与えると、(チャットで) 通知を受け取ることになります - 権限が与えられたスクリプトの入っているオブジェクトの '''名前'''、オブジェクトのオーナーの名前、オブジェクトの座標が順に - 地域名と '''位置'''、そして与えられた権限についての説明が表示されます。権限をもつスクリプトが子プリムの中にある場合、'''名前''' は (オブジェクト (ルート) ではなく) 子プリムのものになり、'''位置''' は (ルートに対する) [[llGetLocalPos/ja|ローカル]] 座標になります。
|examples=アバターにアニメーション適用の許可を求めます
---
<source lang="lsl2">default
{
{
     touch_start(integer detected)
     touch_start(integer detected)
Line 43: Line 46:
         llStopAnimation("sit");
         llStopAnimation("sit");
     }
     }
}</lsl>
}</source>


複数の異なったパーミションを同時に要求するには、OR <nowiki>(|)</nowiki> を使ったビット加算を行なうか、あらかじめその合計値を計算しておいてください。
複数の異なった権限を同時に要求するには、OR <nowiki>(|)</nowiki> を使ったビット加算を行なうか、あらかじめその合計値を計算しておいてください。
<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);
<source lang="lsl2">llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);


integer perms = PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION;
integer perms = PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION;
llRequestPermissions(AvatarID, perms);</lsl>
llRequestPermissions(AvatarID, perms);</source>


|helpers
|helpers
|also_events={{LSL DefineRow||{{LSLG/ja|run_time_permissions}}|パーミッション受信イベント}}
|also_events={{LSL DefineRow||{{LSLG/ja|run_time_permissions}}|権限受信イベント}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetPermissions}}|付与されたパーミッションを取得する}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetPermissions}}|付与された権限を取得する}}
{{LSL DefineRow||{{LSLG/ja|llGetPermissionsKey}}|パーミッションが付与されたアバターを取得する}}
{{LSL DefineRow||{{LSLG/ja|llGetPermissionsKey}}|権限が付与されたアバターを取得する}}
|also_articles={{LSL DefineRow||{{LSLGC/ja|Permissions/Script|スクリプトのパーミション}}|}}
|also_articles={{LSL DefineRow||{{LSLGC/ja|Permissions/Script|スクリプトの権限}}|}}
|notes=
|constants={{LSL Constants/Permissions/ja}}
|constants={{LSL Constants/Permissions/ja}}
|cat1=Permissions/Script
|cat1=Permissions/Script

Latest revision as of 04:15, 25 February 2016

要約

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

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

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

アバターの回答を待たずに、スクリプトは処理を続行します。回答があった時点で、 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 時、装着時
PERMISSION_TELEPORT 0x1000 アバターのテレポートを制御します テレポート 誰でも[1]
PERMISSION_SILENT_ESTATE_MANAGEMENT 0x4000 llManageEstateAccess without notifying the owner of changes Estate オーナー
PERMISSION_OVERRIDE_ANIMATIONS 0x8000 configure the overriding of default llStartAnimation on agent アニメーション 誰でも 装着時
PERMISSION_RETURN_OBJECTS 0x10000 Used by llReturnObjectsByOwner and llReturnObjectsByID to return objects from parcels Cleanup/ja オーナー, グループオーナー

警告

  • 上表で示した自動的に許可されるパターン以外は、エージェントに許可を求めるダイアログがビューアに表示されます。
  • オブジェクトがアバターに装着されているものであれば、「自動付加される」権限はリクエストに対する通知なく許可されます。
  • 権限はステート遷移後も維持されます。
  • 権限が自動/手動いずれであろうと、常に run_time_permissions イベントでの処理が必要です。許可を得るまでには時間がかかります。 run_time_permissions ハンドラが呼ばれるまでにはすっかり許可されているはずだと思いこまないようにしましょう。
  • 権限は重ねていくことができません。
    • 前回この関数を呼び出してある権限をリクエストし、許可された場合、次の呼び出しでその権限をリクエストしないと、その権限は解放されます (消失します) 。
    • 複数の権限を同時に要求するには、次のように OR (|) 演算子でビット加算します: <lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS

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
   スクリプトの権限 を剥奪することができない

脚注

Signature

function void llRequestPermissions( key agent, integer perm );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。