Difference between revisions of "LlAttachToAvatar/ja"

From Second Life Wiki
Jump to navigation Jump to search
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LSL_Function/permission/ja|PERMISSION_ATTACH|grant=owner}}{{LSL_Function/ja
{{Issues/VWR-12525}}{{Issues/SCR-137}}{{Issues/SVC-890}}{{Issues/SCR-277}}{{LSL_Function/permission/ja|PERMISSION_ATTACH|grant=オーナー}}{{LSL_Function/ja
|func_id=113
|func_id=113|func_sleep=0.0|func_energy=10.0
|func_sleep=0.0
|func_energy=10.0
|func=llAttachToAvatar
|func=llAttachToAvatar
|sort=AttachToAvatar
|p1_type=integer|p1_name=attach_point|p1_desc=ATTACH_* 定数または適当な値 (下表参照)
|p1_type=integer|p1_name=attachment|p1_desc=ATTACH_* 定数もしくは有効な値(テーブル以下を参照)
|func_desc=スクリプトに許可を与えたアバターにオブジェクトを装着させます。オブジェクトはユーザの持ち物に取り込まれ、'''attach_point''' へ装着されます。
|func_desc=権限が付与されたアバターの、'''attachment'''箇所に装着します。オブジェクトはユーザのインベントリに渡されて、'''attachment'''箇所にアタッチされます。
|func_footnote='''attach_point''' がゼロの場合、オブジェクトは最後に装着された装着ポイントに装着されます。
|func_footnote
|return_text
|return_text
|spec
|spec
|caveats=*[[llGetPermissionsKey|アバタ]]がオブジェクトを装着されている[[llGetOwner|オーナ]]ではない場合、たとえ[[PERMISSION_ATTACH/ja|PERMISSION_ATTACH]]が適切に付与されていたとしても、呼び出しは失敗するでしょう。
|caveats=*装着ポイントには複数のアタッチメントを装着できます。{{Footnote|{{Jira|SCR-277}}により1つの装着ポイントに複数装着できるようになりました|SCR-277により1つの装着ポイントに複数装着できるようになりました}}
*2つのオブジェクトを同時に同じ装着場所には装着することができません。
**以前は'''attach_point''' がふさがっている場合、2つのオブジェクトを同時に同じ装着ポイントに装着することはできず、既にあるオブジェクトが取り外され、新しいアタッチメントが乗っ取りました。
*(を含めたいずれかのアタッチ箇所)にアタッチされたオブジェクトは、"show attachments in mouselook"が無効の場合、一人称視点では有効にはならないでしょう。
*頭に (首から上の全ての装着ポイント) 装着されたオブジェクトは、"show attachments in mouselook" が無効になっている場合、一人称視点 (別名 [[Mouselook|マウスルック]]) では表示されません。
*'''attach_point''' がゼロだがオブジェクトが装着されたことがない場合、デフォルトで右手に装着されます ({{LSL Const/ja|ATTACH_RHAND|integer|6|c=右手}}).
*オブジェクトが既に装着されていると、'''attach_point''' が異なる {{LSLG/ja|llGetAttached|装着ポイント}} かどうかに関わらず、関数がエラーを出さずに失敗します。
|examples=
|examples=
<lsl>//-- rez object on ground, drop in this script, it will request permissions to attach,
<source lang="lsl2">//-- オブジェクトを地面に rez し、このスクリプトを入れると、装着許可を要求します。
//-- and then attach to the left hand if permission is granted. if permission is denied,
//-- そして許可されると左手に装着します。拒否されると、スクリプトは文句を言います。
//-- then the script complains.
default
default
{
{
Line 26: Line 24:
     run_time_permissions( integer vBitPermissions )
     run_time_permissions( integer vBitPermissions )
     {
     {
         if (PERMISSION_ATTACH & vBitPermissions)
         if( vBitPermissions & PERMISSION_ATTACH )
         {
         {
             llAttachToAvatar( ATTACH_LHAND );
             llAttachToAvatar( ATTACH_LHAND );
Line 32: Line 30:
         else
         else
         {
         {
             llOwnerSay( "Permission to attach denied" );
             llOwnerSay( "装着の許可が下りませんでした" );
         }
         }
     }
     }
Line 39: Line 37:
     {
     {
         if(!llGetAttached())
         if(!llGetAttached())
         { //reset the script if it's not attached.
         { //装着されていなければスクリプトをリセットします。
             llResetScript();
             llResetScript();
         }
         }
Line 47: Line 45:
     {
     {
         if(AvatarKey)
         if(AvatarKey)
         {//event is called on both attach and detach, but Key is only valid on attach
         {//装着と取り外しの両方でイベントが呼ばれますが、キーは装着の時のみ正しいものがきます
             integer test = llGetAttached();
             integer test = llGetAttached();
             if (test) {
             if (test) {
                 llOwnerSay( "The object is attached" );
                 llOwnerSay( "オブジェクトは装着されています" );
             } else {
             } else {
                 llOwnerSay( "The object is not attached");
                 llOwnerSay( "オブジェクトは装着されていません");
             }
             }
         }
         }
     }
     }
}</lsl>
}</source>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llDetachFromAvatar/ja|llDetachFromAvatar]]|アバタからオブジェクトを外します}}
|also_functions=
{{LSL DefineRow||[[llGetAttached/ja|llGetAttached]]|装着部位番号を取得します}}
{{LSL DefineRow||{{LSLG/ja|llAttachToAvatarTemp}}|アバターにオブジェクトを一時的に装着します}}
{{LSL DefineRow||{{LSLG/ja|llDetachFromAvatar}}|アバターからオブジェクトを外します}}
{{LSL DefineRow||{{LSLG/ja|llGetAttached}}|装着ポイント番号を取得します}}
|also_articles
|also_articles
|also_events
|also_events={{LSL DefineRow||[[attach/ja|attach]]|}}
|constants={{LSL_Constants_Attachment/ja}}
|constants={{LSL_Constants_Attachment/ja}}
|notes
|notes

Latest revision as of 05:44, 25 February 2016

要約

関数: llAttachToAvatar( integer attach_point );

スクリプトに許可を与えたアバターにオブジェクトを装着させます。オブジェクトはユーザの持ち物に取り込まれ、attach_point へ装着されます。

• integer attach_point ATTACH_* 定数または適当な値 (下表参照)

実行するには、llRequestPermissions による PERMISSION_ATTACH 権限がオーナーから与えられなければなりません。 attach_point がゼロの場合、オブジェクトは最後に装着された装着ポイントに装着されます。

Body
定数 # 名称 解説
ATTACH_HEAD 2 Skull
ATTACH_NOSE 17 Nose
ATTACH_MOUTH 11 Mouth
ATTACH_FACE_TONGUE 52 Tongue
ATTACH_CHIN 12 Chin あご先
ATTACH_FACE_JAW 47 Jaw あご
ATTACH_LEAR 13 Left Ear 左耳
ATTACH_REAR 14 Right Ear 右耳
ATTACH_FACE_LEAR 48 Alt Left Ear 左耳 (拡張)
ATTACH_FACE_REAR 49 Alt Right Ear 右耳 (拡張)
ATTACH_LEYE 15 Left Eye 左耳
ATTACH_REYE 16 Right Eye 右耳
ATTACH_FACE_LEYE 50 Alt Left Eye 左目 (拡張)
ATTACH_FACE_REYE 51 Alt Right Eye 右目 (拡張)
ATTACH_NECK 39 Neck
ATTACH_LSHOULDER 3 Left Shoulder 左肩
ATTACH_RSHOULDER 4 Right Shoulder 右肩
ATTACH_LUARM 20 L Upper Arm 左上腕
ATTACH_RUARM 18 R Upper Arm 右上腕
ATTACH_LLARM 21 L Lower Arm 左下腕
ATTACH_RLARM 19 R Lower Arm 右下腕
ATTACH_LHAND 5 Left Hand 左手
ATTACH_RHAND 6 Right Hand 右手
ATTACH_LHAND_RING1 41 Left Ring Finger 左薬指
ATTACH_RHAND_RING1 42 Right Ring Finger 右薬指
ATTACH_LWING 45 Left Wing 左翼
ATTACH_RWING 46 Right Wing 右翼
ATTACH_CHEST 1 Chest
ATTACH_LEFT_PEC 29 Left Pec 左胸筋
ATTACH_RIGHT_PEC 30 Right Pec 右胸筋
ATTACH_BELLY 28 Stomach お腹
ATTACH_BACK 9 Spine 背中
ATTACH_TAIL_BASE 43 Tail Base 尻尾の付け根
ATTACH_TAIL_TIP 44 Tail Tip 尾端
ATTACH_AVATAR_CENTER 40 Avatar Center アバター中央
ATTACH_PELVIS 10 Pelvis へそ
ATTACH_GROIN 53 Groin 股間
ATTACH_LHIP 25 Left Hip 左尻
ATTACH_RHIP 22 Right Hip 右尻
ATTACH_LULEG 26 L Upper Leg 左上肢
ATTACH_RULEG 23 R Upper Leg 右上肢
ATTACH_RLLEG 24 R Lower Leg 右下肢
ATTACH_LLLEG 27 L Lower Leg 左下肢
ATTACH_LFOOT 7 Left Foot 左足
ATTACH_RFOOT 8 Right Foot 右足
ATTACH_HIND_LFOOT 54 Left Hind Foot 左後足
ATTACH_HIND_RFOOT 55 Right Hind Foot 右後足
HUD
定数 解説
ATTACH_HUD_CENTER_2 31 HUD 中心部 2
ATTACH_HUD_TOP_RIGHT 32 HUD 右上部
ATTACH_HUD_TOP_CENTER 33 HUD 上部
ATTACH_HUD_TOP_LEFT 34 HUD 左上部
ATTACH_HUD_CENTER_1 35 HUD 中心部
ATTACH_HUD_BOTTOM_LEFT 36 HUD 左下部
ATTACH_HUD_BOTTOM 37 HUD 下部
ATTACH_HUD_BOTTOM_RIGHT 38 HUD 右下部

警告

  • 権限の自動付与に頼らないようにしましょう。常に run_time_permissions イベントを使用しましょう。
  • スクリプトに PERMISSION_ATTACH の権限が不足していると、スクリプトはエラーを DEBUG_CHANNEL で叫び、操作に失敗します (しかしスクリプトは処理を続けます)。
  • PERMISSION_ATTACH がオーナー以外の人から許可され、関数が呼び出されると、 DEBUG_CHANNEL でエラーが叫ばれます。
  • いったん PERMISSION_ATTACH 権限が付与されると、スクリプトの中で (例えば、新しい llRequestPermissions 呼び出しなどにより) 権限をはく奪することができません。スクリプトはオブジェクトが derez (削除、取り外し、取り込み) されない限り権限が失われません。
  • 装着ポイントには複数のアタッチメントを装着できます。[1]
    • 以前はattach_point がふさがっている場合、2つのオブジェクトを同時に同じ装着ポイントに装着することはできず、既にあるオブジェクトが取り外され、新しいアタッチメントが乗っ取りました。
  • 頭に (首から上の全ての装着ポイント) 装着されたオブジェクトは、"show attachments in mouselook" が無効になっている場合、一人称視点 (別名 マウスルック) では表示されません。
  • attach_point がゼロだがオブジェクトが装着されたことがない場合、デフォルトで右手に装着されます (ATTACH_RHAND).
  • オブジェクトが既に装着されていると、attach_point が異なる 装着ポイント かどうかに関わらず、関数がエラーを出さずに失敗します。

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   llAttachToAvatar can cause a stack/heap collision in certain circumstances
   Add companion command to llAttachToAvatar() to allow attaching multiple items in same attachment point

サンプル

//-- オブジェクトを地面に rez し、このスクリプトを入れると、装着許可を要求します。
//-- そして許可されると左手に装着します。拒否されると、スクリプトは文句を言います。
default
{
    state_entry()
    {
        llRequestPermissions( llGetOwner(), PERMISSION_ATTACH );
    }

    run_time_permissions( integer vBitPermissions )
    {
        if( vBitPermissions & PERMISSION_ATTACH )
        {
            llAttachToAvatar( ATTACH_LHAND );
        }
        else
        {
            llOwnerSay( "装着の許可が下りませんでした" );
        }
    }

    on_rez(integer rez)
    {
        if(!llGetAttached())
        { //装着されていなければスクリプトをリセットします。
            llResetScript();
        }
    }

    attach(key AvatarKey)
    {
        if(AvatarKey)
        {//装着と取り外しの両方でイベントが呼ばれますが、キーは装着の時のみ正しいものがきます
            integer test = llGetAttached();
            if (test) {
                llOwnerSay( "オブジェクトは装着されています" );
            } else {
                llOwnerSay( "オブジェクトは装着されていません");
            }
        }
    }
}

関連項目

イベント

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

関数

•  llGetPermissions 付与されている権限を取得します
•  llGetPermissionsKey 権限を許可したエージェントを取得します
•  llRequestPermissions 権限を要求します
•  llAttachToAvatarTemp アバターにオブジェクトを一時的に装着します
•  llDetachFromAvatar アバターからオブジェクトを外します
•  llGetAttached 装着ポイント番号を取得します

記事

•  権限/スクリプト

特記事項

All Issues

~ Search JIRA for related Issues
   llAttachToAvatar() can cause parentless attachments that can subsequently crash the client when selected
   Allow llAttachToAvatar() to switch attachment locations
   llAttachToAvatar can cause a stack/heap collision in certain circumstances
   Add companion command to llAttachToAvatar() to allow attaching multiple items in same attachment point

脚注

  1. ^ SCR-277により1つの装着ポイントに複数装着できるようになりました

Signature

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