ソラマメブログ

2007年05月07日

llRemoteLoadScriptPinで別スクリプト呼出

llRemoteLoadScriptPinで別スクリプト呼出

複数のスクリプトの扱いについて、情報が散逸しているので自分用にまとめる。
情報源は、http://wiki.secondlife.com/wiki/http://www.lslwiki.net/lslwiki/wakka.php
LSLGuide.pdf。
(間違いがあったら教えてください~)

・オブジェクト内には、スクリプト名のABC順に並べ変えられて格納される。
 大文字小文字は関係ない。
・一番上に格納されているスクリプトが実行される
・同じオブジェクトに入っているスクリプトを呼び出す際は、PINを指定しておかなくてOK。
 KEYもNULL_KEYでOK。
・別なオブジェクトに入っているスクリプトを呼ぶ場合は、呼び先がRezされている必要がある
 (インベントリに入っているだけではダメ)
・呼び出すタイミング(イベント)によって、動作が変わるので注意。下記の例参照。
 state_entry()で別スクリプトを呼び出すと、touch_start()の処理はinvokerが終わってからchild
 touch_start()で別スクリプトを呼び出すと、
 ・・・だと思ったが、いったんTakeしてからでないと、最後にオブジェクトに入れたスクリプト
 を最初に実行しているように見える。不明。
・PIN(Personal Identification Number)はinteger
・スクリプトをまたがって変数を受け渡す方法はなさそう。
 llRemoteLoadScriptPin関数の最後の引数を使えば、llGetStartParameter関数でintegerを受け取れる
 ID設定に使うなら、オブジェクトの属性としてllSetAlpha関数/llGetAlpha関数とかで受け渡したほうがいいかも。
・llRemoteLoadScriptPin関数の先頭の引数の「key target」に何を指定すればいいのかは不明。



//00Invoker-1 呼び出す側のスクリプトその1
default
{
state_entry()
{
llOwnerSay("rez " + llGetObjectName() + "with " + llGetScriptName());
llRemoteLoadScriptPin(NULL_KEY, "child-script", 3, FALSE, 0);
}

touch_start(integer total_number)
{
llOwnerSay("Touch start at " + llGetScriptName());
llOwnerSay("Touch end at " + llGetScriptName());
}
}


//00Invoker-2 呼び出す側のスクリプトその2
default
{
state_entry()
{
llOwnerSay("rez " + llGetObjectName() + "with " + llGetScriptName());
}

touch_start(integer total_number)
{
llOwnerSay("Touch start at " + llGetScriptName());
llRemoteLoadScriptPin(NULL_KEY, "child-script", 3, FALSE, 0);
llOwnerSay("Touch end at " + llGetScriptName());
}
}


//child-script 呼び出される側のスクリプト
default
{
state_entry()
{
llOwnerSay("rez " + llGetObjectName() + "with " + llGetScriptName());
}

touch_start(integer total_number)
{
llOwnerSay("Touch start at " + llGetScriptName());
llOwnerSay("Touch end at " + llGetScriptName());
}
}

Miz さんのBLOGで解説記事が載っているのでトラックバックを追加しました。

同じカテゴリー(LSL)の記事画像
1.17でllGetNotecardLineで日本語取出せず
「Limit 5 コンテスト」表彰式
ひとこと掲示板を漢字対応
「Limit 5 コンテスト」に作品を出した
文字の変わる箱
同じカテゴリー(LSL)の記事
 ソース(2):【日本語対応メッセージボード v05】 (2008-10-13 00:11)
 ソース(1):【日本語対応メッセージボード v05】 (2008-10-12 23:48)
 説明書:【日本語対応メッセージボード v05】 (2008-10-12 23:43)
 別プリムにあるスクリプト間で定数を素直に共有できないか? (2008-02-08 00:22)
 1.17でllGetNotecardLineで日本語取出せず (2007-06-25 22:54)
 メモリ管理には謎がある (2007-06-07 22:50)

Posted by march at 19:12│Comments(0)LSL
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。