Posted by   at 

2015年07月01日

テクスチェンジのHUDについて

 スクリプトの基本的な構造は理解した!というレベルではありますが、ヘアオブジェクトのテクスチェンジHUDを作りたいと思っております。
現段階では
HUDのボタン(例えば茶髪切り替え用)を押したとき、ヘアオブジェクトの子プリムすべて(親プリムには常にショップロゴが貼ってある状態)を1つの茶髪用のテクスに替えることができました。
次のステップとして、
同じくボタンを押したとき、子プリムの中のでも"このプリムにはAのテクス"、"この部分のプリムにはBのテクス"というように
複数のテクスをそれぞれ対応するプリムへと結びつけたいですがなかなか上手くいきません。

HUD側でチャンネルの設定と、llsayで数パターンのテクスをUUIDで送信してます。
ヘアオブジェクト側でチャンネルを合わせてllListenで受信してオーナーかの確認をするところまではできているのですが、
そのあとがどうもおかしいようで「Syntax error」となってしまいます。
自分の中で考えているのはテクスAを貼りたいプリム名をprim1,テクスBを貼りたいプリム名をprim2にして
演算子の判定を使ってそれぞれのプリムのテクスを変更できるのでは?と思ったのですが....(以下詳細)


integer channel=◯◯◯◯◯◯◯;




default
{
state_entry()
{
llListen(channel,"",NULL_KEY,"");


}
listen(integer channel, string name, key id, string msg)
{
if (llGetOwner() == llGetOwnerKey(id))
{
if(llGetLinkName(i) == "prim1") && (msg == "テクスAのUUID"){llSetTexture(llGetSubString(msg,0,-1),ALL_SIDES);}
else if(llGetLinkName(i)=="prim2") && (msg == "テクスBのUUID"){llSetTexture(llGetSubString(msg,0,-1),ALL_SIDES);}
}
}
}

ちなみにこの形でいくと、替えたいヘアカラーのボタンを増やしていくときにelse if文を書き足すことになってしまい数十種類のカラーセットの場合など限界があると思うのですが、もっといい方法があるのでしょうか?
その際テクスはインベントリに入れるのではなくUUID型で使用したいのと、ヘアオブジェクト側は親プリムのみにスクリプトを入れるようにしたいです。
どなたか教えていただけるとありがたいです。
よろしくお願いします><  


Posted by kerry  at 04:51Comments(5)スクリプト関連