2008年12月21日
再度教えてくださいm(_ _)m
度々すいません~
タッチで数字がUp・Downは無事成功したのですが
どうしても同じオブジェクトを与えて装備している
人も同じようにUp・Downしてしまいます~
理想はタッチした人のみUp・Down出来たらと
教えていただいたヒントを元にいろいろ試して
いるのですがうまくいきません。
更なるヒントorアドバイスお願いします~
タッチで数字がUp・Downは無事成功したのですが
どうしても同じオブジェクトを与えて装備している
人も同じようにUp・Downしてしまいます~
理想はタッチした人のみUp・Down出来たらと
教えていただいたヒントを元にいろいろ試して
いるのですがうまくいきません。
更なるヒントorアドバイスお願いします~
Posted by Tsubaki
at 10:39
│Comments(6)
タッチされたら、-10channel に発言して、受信したオブジェクトでカウントという感じですよね?
もしそうだとするとチャンネルが全て同じであれば、全てのカウントが上がるのは当然かもしれません。
また、if ( llDetectedKey(0) == llGetOwner())
という記述がlistenイベントの中にありましたけど、これは無視されると思いますよ。
Detected系の関数は touch,collision,sensor あたりでないと使えないと思います。
なのでこれを受信側でなく送信側のtouchイベントに挿入すれば大丈夫な気がしますが、的外れだったらごめんなさい。
UP DOWNがおわったら llListenRemove するようにすれば
タッチしてないオブジェクトを装着している人には反応されないとおもいます。
ちょっとわかったような~ ちんぷんかんぷんのような~
素人なりに再度チャレンジしてみます~
助かりました~
出来るかどうかは神のみぞ知る~って感じ~
このスクリプトに、もう二週間ぐらいかかりっきりだな~
でもこのような場があってほんと助かりです~
ではがんばります~
なかなか苦労しましたが
完成しました~
参考までに^^
integer hit = 0 ;
string txt;
default
{
state_entry()
{
llListen(-10,"",llDetectedKey(0),"");
}
on_rez(integer num)
{
llListen(-10,"",llDetectedKey(0),"");
}
listen(integer channel , string name , key id , string message){
list listMessage = llCSV2List(message);
if (message == (string)llGetOwner() + "," + "LvUp"){
if(hit < 100){
hit += 1;
txt = (string)hit;
(string)hit;
llSetText("Lv."+txt,<1.0,0.0,1.0>,1.0);}
}else if (message == (string)llGetOwner() + "," + "LvDown"){
llList2String(listMessage, 0) == "LvDown";
if(hit > 0){
hit--;
txt = (string)hit;
(string)hit;
llSetText("Lv."+txt,<1.0,0.0,1.0>,1.0);
}
llListenRemove(0);
}
}
}
先にも書きましたが、llDetectedKey()はタッチした、衝突した、センサーに引っ掛かった等でないと アバタのUUIDを検出出来ないと思います。
key id のところは NULL_KEY で良いと思います。たぶん現状ではllDetectedKey()が検出出来ないので NULL_KEYという扱いになり、ちゃんと機能しているという感じがします。
一応もう一つのオブジェクトのスクリプトに
llDetectedKey()が含まれていまして
そちらをタッチor激突で使用します。
上記をベースにして、まだいくつか作成予定です。
他のスクリプトも山積みになっていますので、
引き続きがんばります~