ソラマメブログ

  

Posted by at

2007年07月07日

llSetLinkPrimitiveParamsの謎

llSetLinkPrimitiveParamsだと、PRIM_POSITIONが機能しない現象が起こってます。
PRIM_POSITION以外は機能しているようです。llSetPrimitiveParamsでは、確かに機能し
していたので、これは便利と思っていたのですが・・・。
もっとっも、簡単なTEST文を載せてみました。何か問題があるのでしょうか?
ご存知の方がいらしゃったら是非お教えください。

-----------------------------------------------------------------------------------------
default
{ touch_start(integer total_number)
{
llSetLinkPrimitiveParams(LINK_ALL_OTHERS, [PRIM_POSITION, <148, 188, 30>]);
}
}
---------------------------------------------------------------------------------------

これを前提とした便利ツールを考えていて、かなりの部分ができた段階で
この問題に直面・・・一気にやる気が・・・。
  


Posted by T4476 at 14:18Comments(8)LSL

2007年06月25日

リッスン

llListen(integer channel, string name, key id, string msg)

channel  
チャットチャンネルを指定します。整数ならなんでもOKプリム同士で通信させたい場合は、 llSay(0, "こんにちわ");のチャットチャンネル部分を同じにしなければなりません。

name
アバターに限らず、オブジェクトの名前を指定できる。

id
UUIDを指定します。NULL_KEYを使った場合は、全ての人/物に有効になる。UUIDが不明の場合はこれを指定。

msg
なんと言う言葉にを受信するか、指定した場合はその単語の受信の有無を示す。
何でも聞いて欲しい場合は””空文字を指定。


llListen(2, "obj", NULL_KEY, ""); 〔2チャンネルのobjの発言を聞け!! 〕



llListenRemove(integer number)

llListenをストップする命令。llListenを常時つけっぱなりはよくないそうでなので、必要な情報が聞けたらすぐにストップするのがいいようです。

number
llListen(integer channel, string name, key id, string msg)を変数に代入すると、整数値が入ります。整数値がllListenの番号となります。つまりllListenは複数同時に走らせ好きな番号のllListenをつけたり消したりできるようです。



integer CH;
CH=llListen(2, "obj", NULL_KEY, ""); 
llListenRemove(CH); // listen OFF









  


Posted by T4476 at 23:05Comments(0)LSL

2007年06月15日

パーミッション問題解決

小物を持った時に強制的にアニメーションさせようと思い、

attach(key attached)

llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);


と書くて見ましたが、どうもこのattach時にオーナーのPERMISSIONを参照しようというのが
そもそもの間違いのようでした。この方法では、takeして初めて使うプリムはオーナーがどうやら参照できないようで、パーミションの許可を取るタイミングを別の方法を使用する必要があるようでした。

そこで、掲示板で書かれたいた、changed イベントを検討したのですがどうもattachと同じ理由で
うまくいかず、そうこうしているうちにrezの存在を知り色々と思考錯誤の結果解決する事ができました。

以下が解決した、スクリプトです。ただし以下のスクリプトだけでは実用品としては問題が多数ありエラーも起きます。まー今回の問題にくらべれば簡単そうなので、実用品になれば公開したいなぁーと考えています。

-----------------------------------------

string Anim = "Model Pose 3"; //アニメの名前

default
{

 //プリム出現時にパーミションを要求

on_rez(integer param){
llRequestPermissions(llGetOwner(), PERMISSION_TRIGGER_ANIMATION);
}

//装着後アニメ開始

attach(key attached)
{
llStartAnimation(Anim);
}

}

-----------------------------------------  


Posted by T4476 at 08:30Comments(0)LSL

2007年06月12日

パーミッション

llRequestPermissions(key agent, integer perm);

key agent・・・・・・対象者のkey

integer perm・・・許可してほしい内容


 PERMISSION_TRIGGER_ANIMATION(アニメーションさせたい)
 PERMISSION_ATTACH (アタッチしたい)
 PERMISSION_CHANGE_LINKS (リンクさせたい)

問題は対象者のkeyの習得習得には、現時点で以下の方法があるらしい事が判明

llGetKey () スプリクトが入っているprimのkey?
llDetectedKey(integer number) 0だと自分?
llGetOwner   現時点での所有者?
llGetOwnerKey(key id) さっぱりわかりません?????
llGetInventoryKey(string name) 名前で習得??

これらの使いわけがさっぱりわかりません。
いろいろ試してはみているものの、自分に着させる時に、パーミッションを要求させようとしても
うまくいきません。さてさてどうしたものか?  


Posted by T4476 at 19:33Comments(3)LSL