Difference between revisions of "Control/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
(Update translation)
Line 1: Line 1:
{{LSL_Event/ja
{{Issues/SVC-476}}{{LSL_Event/ja
|event_id=15
|event_id=15|event_delay=0.05|event=control
|event_delay=0.05
|p1_type=key|p1_name=id|p1_desc=アバターの {{LSLG/ja|UUID}}
|event=control
|p2_type=integer|p2_name=level|p2_desc=CONTROL_* フラグの{{Wikipedia|1=ビットフィールド|2=ビットフィールド|lang=ja}}。1 個以上のキーが押し下げられている間は、ゼロ以外になります。
|p1_type=key
|p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。
|p1_name=id
|event_desc={{LSLG/ja|llTakeControls}} ライブラリ関数の呼び出しとユーザの入力の結果です。
|p1_desc
|p2_type=integer
|p2_name=level
|p2_desc
|p3_type=integer
|p3_name=edge
|p3_desc
|event_desc=[[llTakeControls/ja|llTakeControls]]ライブラリ関数の呼び出しとユーザの入力の結果です。
|constants={{LSL Constants/Controls/ja}}
|constants={{LSL Constants/Controls/ja}}
|spec
|spec
Line 45: Line 37:
         integer end = ~level & edge;
         integer end = ~level & edge;
         integer held = level & ~edge;
         integer held = level & ~edge;
         integer unheld = ~(level | edge);
         integer untouched = ~(level | edge);
         llOwnerSay(llList2CSV([level, edge, start, end, held, unheld]));
         llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
     }
     }
}</lsl>
}</lsl>
|helpers
|helpers
|also_header
|also_header
|also_events={{LSL DefineRow||[[run_time_permissions/ja|run_time_permissions]]}}
|also_events={{LSL DefineRow||{{LSLG/ja|run_time_permissions}}}}
|also_functions={{LSL DefineRow||[[llTakeControls/ja|llTakeControls]]}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llTakeControls}}}}
{{LSL DefineRow||[[llReleaseControls/ja|llReleaseControls]]}}
{{LSL DefineRow||{{LSLG/ja|llReleaseControls}}}}
{{LSL DefineRow||[[llRequestPermissions/ja|llRequestPermissions]]}}
{{LSL DefineRow||{{LSLG/ja|llRequestPermissions}}}}
|also_tests
|also_tests
|also_articles
|also_articles
|also_footer
|also_footer
|notes=アタッチメントの[[mouselook/ja|mouselook]]での[[llGetRot/ja|llGetRot]]は、アバタの見ている視角から返ります。
|notes=
[[Camera/ja#Mouselook|マウスルック]]時のアタッチメントでの {{LSLG/ja|llGetRot}} は、アバターの見ている視角から返ります。


[[llMinEventDelay/ja|llMinEventDelay]]がこのイベントの遅延の倍くらいに設定される場合、このイベントは[[llMinEventDelay/ja|llMinEventDelay]]のあたかも半分だったかのように扱わるでしょう。言い換えれば、このイベントは[[llMinEventDelay/ja|llMinEventDelay]]が0.1より大きい場合、他のイベントと同じくしばしば2回作動する可能性があります。
{{LSLG/ja|llMinEventDelay}} がこのイベントの遅延の少なくとも二倍に設定された場合、このイベントは {{LSLG/ja|llMinEventDelay}} の設定をその半分であるかのように扱います。言い換えると、{{LSLG/ja|llMinEventDelay}} が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生し得ます。
 
私のテストは、エージェントのコントロールがそのエージェントではないキーを取得してしまったときに返すキーを決定的にしましたが、それはオーナのキーでした。一つ以上のスクリプトが一斉に複数のエージェントの同じオブジェクトの固有の権限を使用する場合、コントロールは全てのスクリプトで作動されるかもしれませんが、どのエージェントが実際に作動する要因となったか知る術はありません。[[User:Anthony Reisman|Anthony Reisman]] 09:59, 14 February 2007 (PST)


私が試したところ、アバターのコントロールが取得されたときに返される UUID は、その当該アバターでなく、所有者の UUID でした。複数のアバターのパーミションを同時に扱うために一つのオブジェクトで複数のスクリプトを動かした場合、control イベントは全てのスクリプトで発生しますが、それがどのアバターに起因するかを知る手立てはありません。これは [[#SVC-476|SVC-476]] として挙げられています。(訳注: 所有者の UUID が渡されるという問題は 2009-04-07 の Server 1.26 で修正されたようです。ただし単一プリム内の複数スクリプト P, Q でそれぞれ複数アバター A, B のパーミションを管理する場合にまだ問題があります。A がキー操作を行なうと、P, Q 双方で control イベントが発生し、P には A の、同時に Q には B の UUID が渡されます。B のキー操作が無いにもかかわらずです。)
|mode
|mode
|issues
|cat1=Controls
|cat1=Controls
|cat2
|cat2

Revision as of 06:04, 11 June 2009

説明

! イベント: control( key id, integer level, integer edge ){ ; }

llTakeControls ライブラリ関数の呼び出しとユーザの入力の結果です。

• key id アバターの UUID
• integer level CONTROL_* フラグの"Wikipedia logo"ビットフィールド。1 個以上のキーが押し下げられている間は、ゼロ以外になります。
• integer edge CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。
定数 説明
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"

サンプル

<lsl>default {

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

注意点

マウスルック時のアタッチメントでの llGetRot は、アバターの見ている視角から返ります。

llMinEventDelay がこのイベントの遅延の少なくとも二倍に設定された場合、このイベントは llMinEventDelay の設定をその半分であるかのように扱います。言い換えると、llMinEventDelay が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生し得ます。

私が試したところ、アバターのコントロールが取得されたときに返される UUID は、その当該アバターでなく、所有者の UUID でした。複数のアバターのパーミションを同時に扱うために一つのオブジェクトで複数のスクリプトを動かした場合、control イベントは全てのスクリプトで発生しますが、それがどのアバターに起因するかを知る手立てはありません。これは SVC-476 として挙げられています。(訳注: 所有者の UUID が渡されるという問題は 2009-04-07 の Server 1.26 で修正されたようです。ただし単一プリム内の複数スクリプト P, Q でそれぞれ複数アバター A, B のパーミションを管理する場合にまだ問題があります。A がキー操作を行なうと、P, Q 双方で control イベントが発生し、P には A の、同時に Q には B の UUID が渡されます。B のキー操作が無いにもかかわらずです。)

参考情報

イベント

•  run_time_permissions

関数

•  llTakeControls
•  llReleaseControls
•  llRequestPermissions

特記事項

議論

   Control event returns script owner key instead of the key of agent initiating the event.
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。