Difference between revisions of "LlAvatarOnSitTarget/ja"
Jump to navigation
Jump to search
Mako Nozaki (talk | contribs) m (Undo revision 849032 by Mako Nozaki (Talk)) |
Mako Nozaki (talk | contribs) |
||
Line 2: | Line 2: | ||
|func=llAvatarOnSitTarget | |func=llAvatarOnSitTarget | ||
|return_type=key | |return_type=key | ||
|return_text= | |return_text=プリムに座っているユーザの {{LSLG/ja|UUID}} | ||
|func_footnote= | |func_footnote=プリムに {{LSLG/ja|llSitTarget|着座ポイント}} がないか、プリムにアバターが座っていないときは、 {{LSL Const/ja|NULL_KEY|key|"00000000-0000-0000-0000-000000000000"|c=条件文では不正なキーと同じように false と判定されます。}} が返されます。 | ||
|caveats=* | |caveats=*プリムは、{{LSLG/ja|llSitTarget}} が '''ゼロ以外の''' ベクトル値を第一引数にして呼ばれない限りは、着座ポイント をもちません。 | ||
* | *プリムに着座ポイントがないか、アバターが他のプリムに座っている場合、オブジェクトに座っているアバターの人数や、どのアバターがオブジェクトに座っているかを知る唯一の方法は、リンクセットをスキャンすることです (例として、[[llGetNumberOfPrims/ja#便利なスペニット|llGetNumberOfPrims]] を参照してください)。 | ||
|spec | |spec | ||
|examples=<lsl> | |examples=<lsl>default | ||
default | |||
{ | { | ||
state_entry() | state_entry() | ||
{ | { | ||
// | //着座ポイントを設定します。そうしないと動きません | ||
llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); | llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); | ||
} | } | ||
Line 19: | Line 18: | ||
if (change & CHANGED_LINK) { | if (change & CHANGED_LINK) { | ||
key av = llAvatarOnSitTarget(); | key av = llAvatarOnSitTarget(); | ||
if (av) {// | if (av) {//NULL_KEY または不正な値でない場合、true となります | ||
llSay(0, " | llSay(0, "こんにちは " + llKey2Name(av) + "さん。座ってくれてありがとう"); | ||
} | } | ||
} | } | ||
} | } | ||
} | }</lsl> | ||
</lsl> | |helpers=<lsl>//座っているアバターのリンク番号を取得します | ||
|helpers=<lsl> | |||
// | |||
integer GetAgentLinkNumber(key avatar) | integer GetAgentLinkNumber(key avatar) | ||
{ | { | ||
integer linkNum = 1 + llGetNumberOfPrims(); | integer linkNum = 1 + llGetNumberOfPrims(); | ||
key linkKey; | key linkKey; | ||
// | //次に linkKey を取得し、それが null でないことを確かめます。null であれば既にやっていることになります | ||
while((linkKey = llGetLinkKey( --linkNum )))// | while((linkKey = llGetLinkKey( --linkNum )))//key が正当か? | ||
if(avatar == linkKey)// | if(avatar == linkKey)//意図しているアバターか? | ||
return linkNum;// | return linkNum;//意図したアバターなら復帰します | ||
// | //アバターが見つからない | ||
// | //LINK_* フラグでない、かつリンク番号でない数字を返します。 | ||
return 0x7FFFFFFF;// | return 0x7FFFFFFF;//最大の integer | ||
}//Written by Strife Onizuka | }//Written by Strife Onizuka</lsl> | ||
</lsl> | |||
|related | |related | ||
|also_tests | |also_tests | ||
|also_events={{LSL DefineRow|| | |also_events={{LSL DefineRow||{{LSLG/ja|changed}}|}} | ||
|also_functions={{LSL DefineRow|| | |also_functions={{LSL DefineRow||{{LSLG/ja|llSitTarget}}|}} | ||
{{LSL DefineRow|| | {{LSL DefineRow||{{LSLG/ja|llGetLinkKey}}}} | ||
|also_articles={{LSL DefineRow|| | |also_articles={{LSL DefineRow||{{LSLG/ja|CHANGED_LINK}}|}} | ||
|notes= | |notes=着座ポイント に座っているアバターの位置は {{LSLG/ja|llGetObjectDetails}} を使って導き出すことができます (例として [[llSitTarget#便利なスペニット|llSitTarget]] を参照してください)。 | ||
|cat1=Avatar | |cat1=Avatar | ||
|cat2=Prim | |cat2=Prim |
Revision as of 04:20, 2 May 2010
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: key llAvatarOnSitTarget( );警告
- プリムは、llSitTarget が ゼロ以外の ベクトル値を第一引数にして呼ばれない限りは、着座ポイント をもちません。
- プリムに着座ポイントがないか、アバターが他のプリムに座っている場合、オブジェクトに座っているアバターの人数や、どのアバターがオブジェクトに座っているかを知る唯一の方法は、リンクセットをスキャンすることです (例として、llGetNumberOfPrims を参照してください)。
サンプル
<lsl>default {
state_entry() { //着座ポイントを設定します。そうしないと動きません llSitTarget(<0.0, 0.0, 0.1>, ZERO_ROTATION); }
changed(integer change) { if (change & CHANGED_LINK) { key av = llAvatarOnSitTarget(); if (av) {//NULL_KEY または不正な値でない場合、true となります llSay(0, "こんにちは " + llKey2Name(av) + "さん。座ってくれてありがとう"); } } }}</lsl>
便利なスニペット
<lsl>//座っているアバターのリンク番号を取得します integer GetAgentLinkNumber(key avatar) {
integer linkNum = 1 + llGetNumberOfPrims(); key linkKey; //次に linkKey を取得し、それが null でないことを確かめます。null であれば既にやっていることになります while((linkKey = llGetLinkKey( --linkNum )))//key が正当か? if(avatar == linkKey)//意図しているアバターか? return linkNum;//意図したアバターなら復帰します //アバターが見つからない //LINK_* フラグでない、かつリンク番号でない数字を返します。 return 0x7FFFFFFF;//最大の integer
}//Written by Strife Onizuka</lsl>
注意点
着座ポイント に座っているアバターの位置は llGetObjectDetails を使って導き出すことができます (例として llSitTarget を参照してください)。
関連項目
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。