Difference between revisions of "Attach/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 3: Line 3:
|event_delay
|event_delay
|event=attach
|event=attach
|p1_type=key
|p1_type=key|p1_name=id
|p1_name=id
|p1_desc=装着された場合はアバターの名前、装着されなくなった場合は {{LSL_Constant/NULL_KEY/ja}}
|p1_desc=装着されていたなら該当アバタ、装着されていなかった場合には{{LSL_Constant/NULL_KEY/ja}}
|p1_hover=装着された場合はアバターの名前、装着されなくなった場合は NULL_KEY.
|p1_hover=装着されていたなら該当アバタ、装着されていなかった場合にはNULL_KEY。
|event_desc=オブジェクトがエージェントに {{LSLG|attachment|装着}} されたか、エージェントから取り外されたときにオブジェクト内部で発生します。
|event_desc=オブジェクトがエージェントに装着もしくは取り外す時に作動します。
|constants
|constants
|spec
|spec=
===発生します===
# オブジェクトがアバターに装着されたとき
#* 地面の上にあるものを装着したとき
#* 持ち物から装着したとき
#* オブジェクトを装着したアバターがログインしたとき
# オブジェクトが取り外されたとき ('''id''' == {{LSL_Constant/NULL_KEY/ja}})
#* 地面の上に落としたとき
#* 持ち物にしまったとき
#* オブジェクトを装着したアバターがログアウトしたとき
 
===発生しません===
# オブジェクトを装着したアバターがテレポートしたとき
#* {{LSLG/ja|CHANGED_TELEPORT}} でアバターがテレポートしたことを検出します
# オブジェクトを装着したアバターが違う地域に移ったとき
#* {{LSLG/ja|CHANGED_REGION}} でアバターが地域を移ったことを検出します
|caveats
|caveats
|examples=
|examples=
以下はattachイベントの簡易例です。
以下は attach イベントを単純化した例です。変数 id はスクリプトが入っているオブジェクトを装着したアバターのキーか、 {{LSL_Constant/NULL_KEY/ja}} となります。 {{LSLG/ja|if}} 条件式を使って、変数 id の値を調べています。
上の変数idから{{LSL_Constant/NULL_KEY/ja|NULL_KEY}}以外のアバターのキーを受け取ったときに、用意されたオブジェクトが装着される、という説明です。ifステートメントの状態は変数idの値によって決定するものが用いられます。
 
<lsl>default
<lsl>default
{   
{   
     attach(key id)
     attach(key id)
     {
     {
         if(id)//tests if it is a valid key and not NULL_KEY
         if(id)//有効なキーか NULL_KEY かを調べます
         {
         {
             llSay(PUBLIC_CHANNEL,"I have been attached!");
             llSay(PUBLIC_CHANNEL,"装着されました!");
         }
         }
         else
         else
         {
         {
             llSay(PUBLIC_CHANNEL,"I have been detached!");
             llSay(PUBLIC_CHANNEL,"取り外されました!");
         }
         }
     }
     }
Line 31: Line 43:
|helpers
|helpers
|also_header
|also_header
|also_events
|also_events=
{{LSL DefineRow|{{LSLG/ja|on_rez}}}}
|also_functions=
|also_functions=
{{LSL DefineRow|[[llAttachToAvatar/ja|llAttachToAvatar]]}}
{{LSL DefineRow|{{LSLG/ja|llAttachToAvatar}}}}
{{LSL DefineRow|[[llDetachFromAvatar/ja|llDetachFromAvatar]]}}
{{LSL DefineRow|{{LSLG/ja|llDetachFromAvatar}}}}
{{LSL DefineRow|[[llGetAttached/ja|llGetAttached]]}}
{{LSL DefineRow|{{LSLG/ja|llGetAttached}}}}
|also_articles=
|also_articles=
{{LSL DefineRow|{{LSLGC|Attachment/ja|Attachment}}}}
{{LSL DefineRow|{{LSLGC/ja|Attachment}}}}
|also_footer
|also_footer
|notes
|notes=
==={{LSLG/ja|on_rez}} と {{LSLG/ja|attach}}===
持ち物の中から装着したときや、ログイン時には、 {{LSLG/ja|on_rez}} は {{LSLG/ja|attach}} の前に発生します。
 
===取り込みタイミング===
取り込みの間、オブジェクトには attach イベントを実行するだけの時間が与えられます。スクリプトが取り込まれる瞬間、これらのイベントを実行中でまだ完了していない場合、オブジェクトが次に rez されたときに実行を完了させます (これは望んでいないことかもしれません) 。取り外し時の処理をシンプルにすることをお薦めします。
 
{{LSLG/ja|attach}} は、最後に rez されたときにスクリプトがループしていた場合には発生'''しません'''。 ({{LSLG/ja|on_rez}} と同じです)
|mode
|mode
|deprecated
|deprecated

Revision as of 04:31, 18 May 2010

説明

イベント: attach( key id ){ ; }

オブジェクトがエージェントに 装着 されたか、エージェントから取り外されたときにオブジェクト内部で発生します。

• key id 装着された場合はアバターの名前、装着されなくなった場合は NULL_KEY

仕様

発生します

  1. オブジェクトがアバターに装着されたとき
    • 地面の上にあるものを装着したとき
    • 持ち物から装着したとき
    • オブジェクトを装着したアバターがログインしたとき
  2. オブジェクトが取り外されたとき (id == NULL_KEY)
    • 地面の上に落としたとき
    • 持ち物にしまったとき
    • オブジェクトを装着したアバターがログアウトしたとき

発生しません

  1. オブジェクトを装着したアバターがテレポートしたとき
    • CHANGED_TELEPORT でアバターがテレポートしたことを検出します
  2. オブジェクトを装着したアバターが違う地域に移ったとき
    • CHANGED_REGION でアバターが地域を移ったことを検出します

サンプル

以下は attach イベントを単純化した例です。変数 id はスクリプトが入っているオブジェクトを装着したアバターのキーか、 NULL_KEY となります。 if 条件式を使って、変数 id の値を調べています。 <lsl>default {

   attach(key id)
   {
       if(id)//有効なキーか NULL_KEY かを調べます
       {
           llSay(PUBLIC_CHANNEL,"装着されました!");
       }
       else
       {
           llSay(PUBLIC_CHANNEL,"取り外されました!");
       }
   }

}</lsl>

注意点

on_rezattach

持ち物の中から装着したときや、ログイン時には、 on_rezattach の前に発生します。

取り込みタイミング

取り込みの間、オブジェクトには attach イベントを実行するだけの時間が与えられます。スクリプトが取り込まれる瞬間、これらのイベントを実行中でまだ完了していない場合、オブジェクトが次に rez されたときに実行を完了させます (これは望んでいないことかもしれません) 。取り外し時の処理をシンプルにすることをお薦めします。

attach は、最後に rez されたときにスクリプトがループしていた場合には発生しません。 (on_rez と同じです)

参考情報

イベント

• on_rez

関数

• llAttachToAvatar
• llDetachFromAvatar
• llGetAttached

記事

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