Difference between revisions of "LlRequestPermissions/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL_Function/avatar/ja|agent|sim=*}}{{LSL_Function/ja |func=llRequestPermissions|sort=RequestPermissions |func_id=136|func_sleep=0.0|func_energy=10.0 |p1_type=key|p1_name=agent|p1_desc |...)
 
(Update translation)
Line 1: Line 1:
{{LSL_Function/avatar/ja|agent|sim=*}}{{LSL_Function/ja
{{Issues/SVC-1006}}{{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=パーミッションマスク(要求するパーミッションを含んでいるビットフィールド)。
|p2_type=integer|p2_name=perm|p2_desc=パーミッションマスク(要求するパーミッションを含んでいるビットフィールド)。
|func_desc=複数種の関数を正確に動かすためのパーミッションをエージェントに問い合わせます。|func_footer=スクリプトの実行は非同期で継続します。レスポンスが与えられた時、イベントキューに[[run_time_permissions/ja|run_time_permissions]]イベントが置かれます。
|func_desc=特定の関数の実行を許可するか、アバターに問い合わせます。
|func_footer=アバターの回答を待たずに、スクリプトは処理を続行します。回答があった時点で、{{LSLG/ja|run_time_permissions}} イベントがイベント キューに追加されます。
|return_text
|return_text
|spec
|spec
|caveats=
|caveats=
<div>
<div>
* パーミッションは蓄積しません。
* パーミション (実行許可) を求めるダイアログがビューアに表示されますが、上表で示した例外の場合は自動的に許可されます。
** パーミッションが以前にこの関数の呼び出しで要求されて付与された場合、その後の呼び出しでは要求されずパーミッションは解放されます(消失)。
* パーミションは state 遷移後も維持されます。
** 同時に2つ(以上)の異なるパーミッションを要求するには、ビット演算か、<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION)</lsl>のようにします。
* パーミションが自動/手動いずれであろうと、常に {{LSLG/ja|run_time_permissions}} イベントでの処理が必要です。(ダイアログが表示される) 手動パーミションは (ユーザの反応に) 時間がかかりますので、その場合 "ユーザの反応があって初めて {{LSLG/ja|run_time_permissions}} イベントが発生する" という点に注意してください。
* スクリプトは一度に1エージェントのパーミッションのみを保有するでしょう。複数のエージェントのパーミッションを保有するには、1つ以上のスクリプトを用いなければなりません。
* パーミションの付与は一度きりです。
* 許可しているパーミッションが生じる効果は、[[run_time_permissions/ja|run_time_permissions]]イベントが待機要求するやいないなや、[[llGetPermissions/ja|llGetPermissions]]と[[llGetPermissionsKey/ja|llGetPermissionsKey]]を返す、あるいはキューが満杯の場合はキューから跳ね返されます。
** 既に一度この関数を呼び出してパーミションが許可されているならば、それ以降は (わざわざ) パーミション要求は行われず、その要求内容も無視されます。
** 複数のパーミションを同時に要求するには、次のように 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 イベントが受け付けられなかった場合も同様です。
* パーミッション要求ダイアログはタイムアウトすることはありません。
* パーミッション要求ダイアログはタイムアウトすることはありません。
** スクリプトが2つのパーミッションを要求する場合、いつも応答は最後のパーミッションが付与されたものとなります。
** 一つのスクリプトが二つのパーミション要求を出した場合、後から回答された方が承認されたパーミションとみなされます。
* ビューアは、10秒間に5ダイアログをいずれかのエージェントからいずれかの他のエージェントに要求するように制限されます。
* 一人のアバターから別のアバターへのパーミション要求ダイアログ表示は 10 秒間につき 5 回が上限です。これはビューアの制限です。
|examples=アバターにアニメのパーミッションを要求します。
|examples=アバターにアニメーション適用の許可を求める
<lsl>default{
<lsl>default
{
     touch_start(integer detected)
     touch_start(integer detected)
     {
     {
Line 28: Line 34:
         {
         {
             llStartAnimation("sit");
             llStartAnimation("sit");
             llOwnerSay("animation will end in 5 seconds");
             llOwnerSay("アニメーションは 5 秒で終わります");
             llSetTimerEvent(5.0);
             llSetTimerEvent(5.0);
         }
         }
Line 37: Line 43:
         llStopAnimation("sit");
         llStopAnimation("sit");
     }
     }
}
}</lsl>
</lsl>


To request two (or more) different permissions at the same time you can using the bitwise OR <nowiki>(|)</nowiki> or precompute the value.
複数の異なったパーミションを同時に要求するには、OR <nowiki>(|)</nowiki> を使ったビット加算を行なうか、あらかじめその合計値を計算しておいてください。
<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);
<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS | PERMISSION_TRIGGER_ANIMATION);


Line 47: Line 52:


|helpers
|helpers
|also_events={{LSL DefineRow||[[run_time_permissions/ja|run_time_permissions]]|パーミッション受信イベント}}
|also_events={{LSL DefineRow||{{LSLG/ja|run_time_permissions}}|パーミッション受信イベント}}
|also_functions={{LSL DefineRow||[[llGetPermissions/ja|llGetPermissions]]|付与されたパーミッションを取得する}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetPermissions}}|付与されたパーミッションを取得する}}
{{LSL DefineRow||[[llGetPermissionsKey/ja|llGetPermissionsKey]]|パーミッションが付与されたアバターを取得する}}
{{LSL DefineRow||{{LSLG/ja|llGetPermissionsKey}}|パーミッションが付与されたアバターを取得する}}
|also_articles={{LSL DefineRow||{{LSLGC/ja|Permissions/Script|Script permissions}}|}}
|also_articles={{LSL DefineRow||{{LSLGC/ja|Permissions/Script|スクリプトのパーミション}}|}}
|notes = ダイアログは、予想される少数のケースで、これらの権限を付与するアバターに表示されます。
|notes=
* エージェントがオブジェクトに座っている場合、コントロールとカメラ追跡のパーミッションは要求上の通告からは除外されて付与されます。
* オブジェクトがエージェントにアタッチされている場合、コントロール、アタッチ、そしてアニメのパーミッションは、ルートプリム内のスクリプトである限りは要求上の通告から除外されて付与されます。スクリプトがルートプリム内にない場合、ユーザは確認ダイアログをみるでしょう。
* パーミッションはステートの変更を越えて持続します。あなたはスクリプト内の各ステートのstate_entry()でパーミッションを要求する必要はありません。それに関わらずダイアログが表示される場合、この予測できない状況上ではむしろ[[run_time_permissions/ja|run_time_permissions]]を常につかうべきでしょう。
|constants={{LSL Constants/Permissions/ja}}
|constants={{LSL Constants/Permissions/ja}}
|cat1=Permissions/Script
|cat1=Permissions/Script

Revision as of 08:03, 1 June 2009

要約

関数: 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 時、装着時
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 オーナー, グループオーナー

警告

  • パーミション (実行許可) を求めるダイアログがビューアに表示されますが、上表で示した例外の場合は自動的に許可されます。
  • パーミションは state 遷移後も維持されます。
  • パーミションが自動/手動いずれであろうと、常に run_time_permissions イベントでの処理が必要です。(ダイアログが表示される) 手動パーミションは (ユーザの反応に) 時間がかかりますので、その場合 "ユーザの反応があって初めて run_time_permissions イベントが発生する" という点に注意してください。
  • パーミションの付与は一度きりです。
    • 既に一度この関数を呼び出してパーミションが許可されているならば、それ以降は (わざわざ) パーミション要求は行われず、その要求内容も無視されます。
    • 複数のパーミションを同時に要求するには、次のように OR (|) 演算子でビット加算します: <lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   Unable to release script permissions

サンプル

アバターにアニメーション適用の許可を求める <lsl>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");
   }

}</lsl>

複数の異なったパーミションを同時に要求するには、OR (|) を使ったビット加算を行なうか、あらかじめその合計値を計算しておいてください。

<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS

関連項目

イベント

•  run_time_permissions パーミッション受信イベント

関数

•  llGetPermissions 付与されたパーミッションを取得する
•  llGetPermissionsKey パーミッションが付与されたアバターを取得する

記事

•  スクリプトのパーミション

特記事項

All Issues

~ Search JIRA for related Issues
   Unable to release script permissions

脚注

Signature

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