Difference between revisions of "Control/ja"

From Second Life Wiki
Jump to navigation Jump to search
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Issues/SVC-3187}}{{LSL_Event/ja
{{Issues/SVC-3187}}{{LSL_Event/ja
|event_id=15|event_delay=0.05|event=control
|event_id=15|event_delay=0.05|event=control
|p1_type=key|p1_name=id|p1_desc=アバターの {{LSLG/ja|UUID}}
|p1_type=key|p1_name=id|p1_desc
|p2_type=integer|p2_name=level|p2_desc=CONTROL_* フラグの{{Wikipedia|1=ビットフィールド|2=ビットフィールド|lang=ja}}。1 個以上のキーが押し下げられている間は、ゼロ以外になります。
|p2_type=integer|p2_name=level|p2_desc=CONTROL_* フラグのビットフィールド。 1 個以上のキーが押し下げられている間は、ゼロ以外になります。
|p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。
|p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。
|event_desc={{LSLG/ja|llTakeControls}} ライブラリ関数の呼び出しとユーザの入力の結果です。
|event_desc={{LSLG/ja|llTakeControls}} ライブラリ関数の呼び出しとユーザの入力の結果、発生します。
|constants={{LSL Constants/Controls/ja}}
|constants={{LSL Constants/Controls/ja}}
|spec
|spec
|caveats
|caveats
|examples=<lsl>default
|examples=<source lang="lsl2">default
{
{
     state_entry()
     state_entry()
Line 30: Line 30:
                             CONTROL_ML_LBUTTON |
                             CONTROL_ML_LBUTTON |
                             0, TRUE, TRUE);
                             0, TRUE, TRUE);
                            // | 0 は編集上の都合で、
                            // マスクを変更することはありません。
         }
         }
     }
     }
Line 40: Line 42:
         llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
         llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
     }
     }
}</lsl>
}</source>
|helpers
|helpers
|also_header
|also_header
Line 51: Line 53:
|also_footer
|also_footer
|notes=
|notes=
[[Camera/ja#Mouselook|マウスルック]]時のアタッチメントでの {{LSLG/ja|llGetRot}} は、アバターの見ている視角から返ります。
[[Camera/ja#Mouselook|マウスルック]] でアタッチメントの {{LSLG/ja|llGetRot}} を行うと、アバターの見ている方向が返ります。


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


1 つのプリムに 2 つのスクリプトを入れて llTakeControls() を呼び出したときの処理にバグがあり、意図した '''id''' が返ってこない場合があります。[http://jira.secondlife.com/browse/SVC-3187 SVC-3187] を参照してください。
1 つのプリムに 2 つのスクリプトを入れて llTakeControls() を呼び出したときの処理にバグがあり、意図した '''id''' が返ってこない場合があります。[http://jira.secondlife.com/browse/SVC-3187 SVC-3187] を参照してください。

Latest revision as of 09:58, 21 February 2016

説明

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

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

• key id
• integer level CONTROL_* フラグのビットフィールド。 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"

サンプル

default
{
    state_entry()
    {
        llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
    }
    run_time_permissions(integer perm)
    {
        if(PERMISSION_TAKE_CONTROLS & perm)
        {
            llTakeControls(
                            CONTROL_FWD |
                            CONTROL_BACK |
                            CONTROL_LEFT |
                            CONTROL_RIGHT |
                            CONTROL_ROT_LEFT |
                            CONTROL_ROT_RIGHT |
                            CONTROL_UP |
                            CONTROL_DOWN |
                            CONTROL_LBUTTON |
                            CONTROL_ML_LBUTTON |
                            0, TRUE, TRUE);
                            // | 0 は編集上の都合で、
                            // マスクを変更することはありません。
        }
    }
    control(key id, integer level, integer edge)
    {
        integer start = level & edge;
        integer end = ~level & edge;
        integer held = level & ~edge;
        integer untouched = ~(level | edge);
        llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
    }
}

注意点

マウスルック でアタッチメントの llGetRot を行うと、アバターの見ている方向が返ります。

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

1 つのプリムに 2 つのスクリプトを入れて llTakeControls() を呼び出したときの処理にバグがあり、意図した id が返ってこない場合があります。SVC-3187 を参照してください。

参考情報

イベント

•  run_time_permissions

関数

•  llTakeControls
•  llReleaseControls
•  llRequestPermissions

特記事項

議論

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