ソラマメブログ

2008年09月11日

スクリプトとの戦闘日誌① ~vector VS list~

今日経験したスクリプトに関するTipsのコーナーです。

①llList2Vector
ベクトルをリストに追加します。
ベクトルをリストからllList2Vectorを使って読み出します。
そうするとベクトルは読み込まれずZERO_VECTORになるみたいですwww
stringで読み込んでキャストしなきゃいけません。……なぜだ!!

NGスクリプト

list vecList = [<1, 1, 1>];
vector vec = llList2Vector(vecList, 0);
//結果⇒vec == ZERO_VECTOR

OKスクリプト

list vecList = [<1, 1, 1>];
vector vec = (vector)llList2String(vecList, 0);
//結果⇒vec == <1, 1, 1>



②llListFindList(list , vector)での戦い
まあ上の方は問題おきた時点できっとこうだろうと思って修正すぐにできましたが、こちらはめんどくさかったな。
問題サンプル

list vecList = [llGetPos()];
integer i = llListFindList(vecList, [llGetPos()] );

インテジャーiは-1を指しますw
リストの中では小数点6ケタになるのに、普通にベクトルを取得すると小数点5ケタになっていました。
だから、次のようにすればリストの中に見つけられます。

list vecList = [llGetPos()];
integer i = llListFindList(vecList, [llList2String(vecList, 0)] );

実際はこんな文でなかったけど、要するに言いたかったのはリストから抜き出すとベクトルは小数点6ケタになるということ。
非常に不可解でした><;


③大発見
知っている人は知っているんでしょうが、スクリプト編集画面でマウスをLSL関数の上に載せると解説が出るんですね・・・。
引数がわからないときわざわざインターネットエクスプローラーでwikiまで見に行っていた俺、合掌…。
スクリプト


Posted by さかぷん at 00:30│Comments(0)LSL, スクリプト
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。

サイトマップ