Difference between revisions of "LlGetLinkName/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{LSL_Function/link/ja|linknum|}}
{{Issues/SVC-600}}{{LSL_Function/link/ja|linknum|}}{{LSL_Function/limits/ja}}
{{LSL_Function/ja
{{LSL_Function/ja
|func_id=145|func_sleep=0.0|func_energy=10.0
|func_id=145|func_sleep=0.0|func_energy=10.0
Line 6: Line 6:
|func_footnote
|func_footnote
|func_desc
|func_desc
|return_text=リンクセットの'''linknum'''の名前
|return_text=リンクセットの '''linknum''' の名前
|spec
|spec
|caveats=*プリム名の要素は255byteを限度とされ、いくらかstringが長いと切捨てられるでしょう。 この切捨ては要素が設定、もしくは読まれるときに常に起こるわけではありません。
|caveats=*プリムの名前属性は 63 バイトに制限されており、これより長い文字列はカットされます。この切り捨て処理は、属性が設定されたり読み込まれたりするたびに毎回発生するわけではありません。
*現在 '''link_number''' に LINK_* フラグが使えるのは、{{LSLG/ja|LINK_ROOT}} のみです。 [[#SVC-600|SVC-600]]
**プリムの名前の取得には {{LSLG/ja|llGetLinkNumber}}() を使用し、 {{LSLG/ja|LINK_THIS}} を使用しないでください。
|constants
|constants
|examples=名前をチャンネル10でリッスンし、名前がこのオブジェクトの一部分かを確認します。
|examples=チャネル 10 で名前を listen し、オブジェクトの一部にその名前をもつプリムが存在するか調べます。
<lsl>
<source lang="lsl2">
integer check_for_prim(string name)
integer check_for_prim(string name)
{
{
Line 41: Line 43:
         }
         }
     }
     }
}</lsl>
}</source>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llGetLinkKey/ja|llGetLinkKey]]|リンクプリムのインスタンスUUIDを取得します}}
{{LSL DefineRow||{{LSLG/ja|llGetLinkKey}}|リンクプリムのインスタンス UUID を取得します}}
{{LSL DefineRow||[[llGetObjectName/ja|llGetObjectName]]|プリム名を取得します}}
{{LSL DefineRow||{{LSLG/ja|llGetObjectName}}|プリムの名前を取得します}}
{{LSL DefineRow||[[llSetObjectName/ja|llSetObjectName]]|プリム名を設定します}}
{{LSL DefineRow||{{LSLG/ja|llSetObjectName}}|プリムの名前を設定します}}
{{LSL DefineRow||[[llGetObjectDesc/ja|llGetObjectDesc]]|プリムの記述欄を取得します}}
{{LSL DefineRow||{{LSLG/ja|llGetObjectDesc}}|プリムの説明を取得します}}
{{LSL DefineRow||[[llSetObjectDesc/ja|llSetObjectDesc]]|プリムの記述欄を設定します}}
{{LSL DefineRow||{{LSLG/ja|llSetObjectDesc}}|プリムの説明を設定します}}
{{LSL DefineRow||[[llGetObjectDetails/ja|llGetObjectDetails]]}}
{{LSL DefineRow||{{LSLG/ja|llGetObjectDetails}}}}
|also_tests
|also_tests
|also_events
|also_events
Line 56: Line 58:
|notes
|notes
|cat1=Link
|cat1=Link
|cat2
|cat2=Link/Get
|cat3
|cat3
|cat4
|cat4
}}
}}

Latest revision as of 06:01, 25 February 2016

要約

関数: string llGetLinkName( integer linknum );

リンクセットの linknum の名前を string で返します。

• integer linknum リンク 番号 (0: リンクなし, 1: ルートプリム, >1: 子プリム) または LINK_* フラグ
フラグ 説明
LINK_ROOT 1 リンクセットの中のルートプリムに送ります
LINK_SET -1 全プリムに送ります
LINK_ALL_OTHERS -2 自分以外の全プリムに送ります
フラグ 説明
LINK_ALL_CHILDREN -3 (ルートプリム以外の全ての)子プリムに送ります
LINK_THIS -4 スクリプトの入った自プリムに送ります

警告

  • プリムの名前属性は 63 バイトに制限されており、これより長い文字列はカットされます。この切り捨て処理は、属性が設定されたり読み込まれたりするたびに毎回発生するわけではありません。
  • 現在 link_number に LINK_* フラグが使えるのは、LINK_ROOT のみです。 SVC-600

サンプル

チャネル 10 で名前を listen し、オブジェクトの一部にその名前をもつプリムが存在するか調べます。

integer check_for_prim(string name)
{
    integer i = llGetNumberOfPrims();
    for (; i >= 0; --i)
    {
        if (llGetLinkName(i) == name)
        {
            return TRUE;
        }
    }
    return FALSE;
}
default
{
    state_entry()
    {
        llListen(10, "", llGetOwner(), "");
    }
    listen(integer chan, string obj, key id, string msg)
    {
        if (check_for_prim(msg))
        {
            llOwnerSay("found a linked prim named \"" + msg + "\"");
        }
        else
        {
            llOwnerSay("this object does not have any linked prims named \"" + msg + "\"");
        }
    }
}

注意点

リンク番号

オブジェクトを構成するそれぞれのプリムにはアドレスがあります。それがリンク番号です。オブジェクトの特定のプリムにアクセスするには、そのプリムのリンク番号を知らなければなりません。リンク番号はプリムに振られますが、オブジェクトに座っているアバターにも振られます。

  • オブジェクトが単一のプリムで構成されていて、アバターが座っていないとき、(ルート)プリムのリンク番号は 0 です。
  • しかし、オブジェクトが複数のプリムで構成されていたり、オブジェクトに座っているアバターがいたりすると、ルートプリムのリンク番号は 1 となります。

アバターがオブジェクトに座ると、リンクセットの末尾に追加され、いちばん大きなリンク番号が振られることになります。さらに、アバターがオブジェクトに座っている場合、アバターを立たせないと、プリムのリンク・リンク解除ができません。

プリムやアバターの数え方

オブジェクトのプリムや、プリムに座っているアバターの数を調べるのに、2つの関数があります。

  • llGetNumberOfPrims() - プリムと座っているアバターの数を返します。
  • llGetObjectPrimCount(llGetKey()) - オブジェクトのプリムの数だけを返しますが、アタッチメントとなっている場合は 0 を返します。
integer GetPrimCount() { //常にプリムの数だけを返します。
    if(llGetAttached())//装着されているか?
        return llGetNumberOfPrims();//アバターとプリムの数を返しますが、アタッチメントの上には座れないのでこれでいいです。
    return llGetObjectPrimCount(llGetKey());//プリムの数だけを返しますが、アタッチメントの場合ここは通りません。
}

関連項目

関数

•  llGetLinkNumber スクリプトが入っているプリムのリンク番号を取得します。
•  llGetLinkKey リンクプリムのインスタンス UUID を取得します
•  llGetObjectName プリムの名前を取得します
•  llSetObjectName プリムの名前を設定します
•  llGetObjectDesc プリムの説明を取得します
•  llSetObjectDesc プリムの説明を設定します
•  llGetObjectDetails

記事

•  各種制限 SL の制限と制約
•  Prim Attribute Overloading

特記事項

All Issues

~ Search JIRA for related Issues
   llGetLinkKey returns the wrong result when passed LINK_THIS

Signature

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