Difference between revisions of "LlTakeControls/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 9: Line 9:
'''accept''' が {{LSLG/ja|TRUE}} で '''pass_on''' が {{LSLG/ja|FALSE}} の場合、指定したコントロールは操作不能となり (しかし {{LSLG/ja|control}} イベントは発生する) 、他のコントロールは全て通常通りにふるまいます。<br />
'''accept''' が {{LSLG/ja|TRUE}} で '''pass_on''' が {{LSLG/ja|FALSE}} の場合、指定したコントロールは操作不能となり (しかし {{LSLG/ja|control}} イベントは発生する) 、他のコントロールは全て通常通りにふるまいます。<br />
'''accept''' が {{LSLG/ja|TRUE}} で '''pass_on''' が {{LSLG/ja|TRUE}} の場合、指定したコントロールは {{LSLG/ja|control}} イベントを発生させ、全てのコントロールは通常通りふるまいます。
'''accept''' が {{LSLG/ja|TRUE}} で '''pass_on''' が {{LSLG/ja|TRUE}} の場合、指定したコントロールは {{LSLG/ja|control}} イベントを発生させ、全てのコントロールは通常通りふるまいます。
|func_desc=スクリプトが権限をもつエージェントのキーボードやマウスのクリックを、'''controls''' で指定したものは特に、傍受させます。
|func_desc=スクリプトが権限をもつエージェントのキーボードやマウスのクリックを、具体的には '''controls''' で指定したものを、傍受させます。
|return_text
|return_text
|spec
|spec

Revision as of 03:24, 15 May 2010

要約

関数: llTakeControls( integer controls, integer accept, integer pass_on );

スクリプトが権限をもつエージェントのキーボードやマウスのクリックを、具体的には controls で指定したものを、傍受させます。

• integer controls CONTROL_* フラグのビットフィールド
• integer accept 真偽値。 control イベントが発生するかを指定します。
• integer pass_on 真偽値。コントロールを操作不能にするかを指定します。

実行するには、llRequestPermissions による PERMISSION_TAKE_CONTROLS 権限が必要です。 acceptFALSEpass_onFALSE の場合、指定したコントロールは通常通りにふるまい、他のコントロールは全て操作不能になります。
acceptFALSEpass_onTRUE の場合、全てのコントロールは通常通りにふるまいます。
acceptTRUEpass_onFALSE の場合、指定したコントロールは操作不能となり (しかし control イベントは発生する) 、他のコントロールは全て通常通りにふるまいます。
acceptTRUEpass_onTRUE の場合、指定したコントロールは control イベントを発生させ、全てのコントロールは通常通りふるまいます。

定数 説明
CONTROL_FWD 0x00000001 前進 (W)
CONTROL_BACK 0x00000002 後進 (S)
CONTROL_LEFT 0x00000004 左移動 (⇧ Shift-⇧ Shift-A [マウスルックならば A])
CONTROL_RIGHT 0x00000008 右移動 (⇧ Shift-⇧ Shift-D [マウスルックならば D])
CONTROL_ROT_LEFT 0x00000100 左回転 (A)
CONTROL_ROT_RIGHT 0x00000200 右回転 (D)
CONTROL_UP 0x00000010 上昇 (PgUpE)
CONTROL_DOWN 0x00000020 下降 (PgDnC)
CONTROL_LBUTTON 0x10000000 マウス左クリック
CONTROL_ML_LBUTTON 0x40000000 マウスルック中のマウス左クリック
(undocumented) 0x02000000 Avatar left rotation detected. Triggers llGetAnimation == "Turning Left"
(undocumented) 0x04000000 Avatar right rotation detected. Triggers llGetAnimation == "Turning Right"

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_TAKE_CONTROLS の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • PERMISSION_TAKE_CONTROLS 権限が付与された後は、スクリプトの中で (llReleaseControls か、新しい llRequestPermissions の呼び出しにより)、もしくはユーザがビューワから「キー制御を解除」を選択することで、権限をはく奪することができます。そうでなければ、スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   llTakeControls overrides existing controls

サンプル

<lsl>default {

   state_entry()
   {
       llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
   }
   run_time_permissions(integer perm)
   {
       if(PERMISSION_TAKE_CONTROLS & perm)
       {
           llTakeControls(
CONTROL_FWD

注意点

スクリプトがコントロールを取得すると、そのスクリプトや、同じプリムに入っている他のスクリプトは、エージェントが「スクリプト禁止」の土地に入っても停止しません。これは、乗り物のコントロールを動作させ、 AO を機能させるためにあります。これは、意図した仕様です。

関連項目

イベント

•  run_time_permissions 権限取得イベント
•  control

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llReleaseControls

記事

•  権限/スクリプト

特記事項

All Issues

~ Search JIRA for related Issues
   llTakeControls overrides existing controls

Signature

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