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」に何を指定すればいいのかは不明。
複数のスクリプトの扱いについて、情報が散逸しているので自分用にまとめる。
情報源は、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());
}
}
2007年05月07日
Linden Town Hall Meeting 寝落ち
先日の話。Linden Town Hall Meeting に参加しようと、会場に行って座っていたが
うっかり寝てしまい気づくとクライアントが落ちていた。
会場でも流れていたRadio Lindenで、苗字がLindenの人へのインタビューがあった。
スピードを半分にして5,6回聞いても半分も理解できないが、長時間がんばって働いてるぽかった。

うっかり寝てしまい気づくとクライアントが落ちていた。
会場でも流れていたRadio Lindenで、苗字がLindenの人へのインタビューがあった。
スピードを半分にして5,6回聞いても半分も理解できないが、長時間がんばって働いてるぽかった。


Posted by march at
01:27
│Comments(0)