2009年09月29日

オーナーだけがタッチすると作動するスクリプト

こんばんは^^
タッチで壁のテクスが変わるスクリプトを入れてみたのですが、上手く動きません;;
オーナーだけが作動するようにしたいのですが、誰がタッチしてもテクスが変わってしまいます。
正しく作動するよう、ご教授願えたら幸いです。
よろしくお願いいたします^^

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

integer number;
string name;
integer choice = 0;

default
{
state_entry()
{
number = llGetInventoryNumber(INVENTORY_TEXTURE);
number -= 1;
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = choice + 1;
}
}

touch_start(integer total_number){
if (llDetectedKey(0) == llGetOwner()) {
}
if (choice < number)
{
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = choice + 1;
}
}
else
{
name = llGetInventoryName(INVENTORY_TEXTURE, choice);
if (name != "")
{
llSetTexture(name, ALL_SIDES);
choice = 0;
}
}
}

changed(integer change)
{
if (change & CHANGED_INVENTORY)
{
llResetScript();
}
}
}



Posted by Raz  at 00:42 │Comments(2)

この記事へのコメント
if (llDetectedKey(0) == llGetOwner()) {
}
の部分がおかしいです。せっかくオーナーのKEYをチェックしているのに、
そのチェック結果を全く無駄にしています。
このifブロックの中に、touch_startの残りのコード全体を入れてしまえば期待した通りの動きになるのではないかなと思います。

それと、質問の内容からは外れますが、name=...の処理とかllSetTextureとかが繰り返し書かれているのは無駄ですね。
これらは、if (choice < number)の前に出して纏められそうですよ。
Posted by YooYoo at 2009年09月29日 01:36
Yoo様ありがとうございます^^
ご指摘して頂いた部分を直したらきちんと動きました!
理解もないまま拾いもののスクリを組み合わせただけなので助かりました^^;
ありがとうございました^^
Posted by Raz at 2009年10月01日 19:18
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。