2009年08月13日
マップが開かなくて、困っています
すみません。
実は、ランドマークを読み込む形の簡単テレポートというスクリプトをブログで見つけたので、使ってみました。
そうしたら、このスクリプトは、同じSIM内の移動のためのテレポートで、LMを使うからと言って、他のSIMにテレポートできるものとは、違っていました。
それで、自分で改良してダイアログで、行き先を選択してSLURLをチャットに表示して、テレポートする形のものを作りました。
これは、完成したのですが・・・
SLURLで出来たのだから、マップを開いてテレポートする形も出来るのでは?と思い、早速改良しました。
それで、座標を下記の方法で、変換してマップにいれるようにしました。
string f;
f = "<"+(string)X+","+(string)Y+","+(string)Z+">";
pos = (vector)f;
ここからは、リッスンのイベントの中にあります。
llMapDestination(Name, pos, ZERO_VECTOR);
X,Y,Zが整数のため、一度文字に変換しています。
既に僕が作った上下に移動する乗り物は、この変換方法で、オブジェクトの高度の設定などが出来ています。
それで、今回も、マップの座標にいれるだけでと思ったのですが、上手く行きません。
僕は、ランドマークのタイトルに書かれているSIM名、座標を読み取ってそれをSLURL変えるスクリプトを作りました。
僕が最初に見たスクリプトの一部です。
一番初めにLMの名前を読み込んでいますが、そこは、省略しました。
touch_start(integer total_number){//触られると実行
if(lname!=""){
llMapDestination(llGetRegionName(), pos, );//マップを開く
//llGiveInventory(llDetectedKey(0),lname);//この行を有効にするとLMを渡す
}
}//
dataserver(key qid, string data){//リクエストに対するリターンが有れば実行
if (qid==rid){ rid="";pos=(vector)data;}//LMを読み取る(リターン)
}//
とりあえず、僕のllMapDestinationの手前で、チャットでSIMと座標を確認にたら、ちゃんと入っています。
ただ、座標の方は、正しい座標の後ろ小数点以下にゼロが、4桁くらい並んでいました。
やっぱり、小数点以下のゼロが、いけないのでしょうか?
それとも、ベクトルに変換するやり方が悪いのでしょうか?
すいません。
教えてください。
お願いします。
実は、ランドマークを読み込む形の簡単テレポートというスクリプトをブログで見つけたので、使ってみました。
そうしたら、このスクリプトは、同じSIM内の移動のためのテレポートで、LMを使うからと言って、他のSIMにテレポートできるものとは、違っていました。
それで、自分で改良してダイアログで、行き先を選択してSLURLをチャットに表示して、テレポートする形のものを作りました。
これは、完成したのですが・・・
SLURLで出来たのだから、マップを開いてテレポートする形も出来るのでは?と思い、早速改良しました。
それで、座標を下記の方法で、変換してマップにいれるようにしました。
string f;
f = "<"+(string)X+","+(string)Y+","+(string)Z+">";
pos = (vector)f;
ここからは、リッスンのイベントの中にあります。
llMapDestination(Name, pos, ZERO_VECTOR);
X,Y,Zが整数のため、一度文字に変換しています。
既に僕が作った上下に移動する乗り物は、この変換方法で、オブジェクトの高度の設定などが出来ています。
それで、今回も、マップの座標にいれるだけでと思ったのですが、上手く行きません。
僕は、ランドマークのタイトルに書かれているSIM名、座標を読み取ってそれをSLURL変えるスクリプトを作りました。
僕が最初に見たスクリプトの一部です。
一番初めにLMの名前を読み込んでいますが、そこは、省略しました。
touch_start(integer total_number){//触られると実行
if(lname!=""){
llMapDestination(llGetRegionName(), pos, );//マップを開く
//llGiveInventory(llDetectedKey(0),lname);//この行を有効にするとLMを渡す
}
}//
dataserver(key qid, string data){//リクエストに対するリターンが有れば実行
if (qid==rid){ rid="";pos=(vector)data;}//LMを読み取る(リターン)
}//
とりあえず、僕のllMapDestinationの手前で、チャットでSIMと座標を確認にたら、ちゃんと入っています。
ただ、座標の方は、正しい座標の後ろ小数点以下にゼロが、4桁くらい並んでいました。
やっぱり、小数点以下のゼロが、いけないのでしょうか?
それとも、ベクトルに変換するやり方が悪いのでしょうか?
すいません。
教えてください。
お願いします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
マップ表示の関数自体には、「誰に」表示すると言う引数がありませんよね。
タッチイベントでは自動的に「さわった人」としてくれるのですが、リッスンイベントでは自動的に発言者にはしてくれないのです。
これは、spam防止のための仕様のようなものですね。
↑詳しくはここを。
英語ですが、大抵のSLwikiのページは同一項目の日本語ページより英語ページのほうが情報量が多いです。日本語ページはたまに言葉足らずだったり誤解を招きそうな表現になっている場合もあります。
たまにそういうの見つけたら、日本語のほうを修正とか追加するんですけどね・・・。
実験したところ、右手に装着したアタッチメントの中に入れたスクリプトでは、state_entryイベントからの呼び出しでも、timerイベント、listenイベントからの呼び出しでも問題なくマップ表示出来ました。
あと、文字列のベクトルにキャストを使って変換するとき、integerにキャストしてからstringにキャストすれば、小数点はなくなると思います。
string f_str;
float flt=5.625468;
f_str=(string)((integer)flt);
llSay(0,f_str);
上記のコードを適当にstate_entryにでも放り込んでみてください。
"5"が表示されます。
設置型のオブジェクトで使う場合は、タッチイベントのみ有効なんですね、
助かりました。
ありがとうございます。
とっても、助かりました。
アタッチすれば、タッチ以外のイベントでも使えるんですね。
早速、アタッチさせて、やってみます。
それから、小数点を消す方法も、とても助かりました。
ありがとうございます。