気ままな一言
2009年03月24日
lslint へ関数を追加
lslint へ関数を追加
スクリプトのチェックに lslint は使っているのでしょうか?
ビューア内のエディタも LSLEditor も使わない人は便利なツールです。
ただ、もうずっと更新されていないので
新しい関数を使うと全部エラーになってしまいます。
どうにかならないかと思っていたのですが、
サイトに思いっきり対応方法が書かれていました。
早く気付けばよかったです。
今までエラーは無視していました。
次の方法でできるみたいです。
lslint -b builtins.txt xxxx.lsl
builtins.txt は関数のリストです。
これを最新のものにすれば新しい関数でもエラーが出なくなります。
そのためには以下のものが必要です。
・perl の実行環境
・変換用 perl スクリプト
・ビューアのソース
実行環境は、まぁ、そろえて下さい。
perl でググれば色々出てくると思います。
変換用 perl スクリプトは、lslint のサイトにあります。
下記テキストファイルを builtins.pl の名前で適当な場所へ保存します。
http://w-hat.com/lslint/release/builtins.pl.txt
最新ビューアのソースは、下記URLからダウンロードします。
http://wiki.secondlife.com/wiki/Source_downloads
必要なものは lscript_library.cpp だけですので
検索して builtins.pl と同じ場所へコピーします。
あとは次のように実行すれば builtins.txt のできあがりです。
perl builtins.pl < lscript_library.cpp > builtins.txt
という感じに生成したものが、次のものです。
つまりこれをコピペして保存すれば終わりです。
これですっきりします。
続きを読む
スクリプトのチェックに lslint は使っているのでしょうか?
ビューア内のエディタも LSLEditor も使わない人は便利なツールです。
ただ、もうずっと更新されていないので
新しい関数を使うと全部エラーになってしまいます。
どうにかならないかと思っていたのですが、
サイトに思いっきり対応方法が書かれていました。
早く気付けばよかったです。
今までエラーは無視していました。
次の方法でできるみたいです。
lslint -b builtins.txt xxxx.lsl
builtins.txt は関数のリストです。
これを最新のものにすれば新しい関数でもエラーが出なくなります。
そのためには以下のものが必要です。
・perl の実行環境
・変換用 perl スクリプト
・ビューアのソース
実行環境は、まぁ、そろえて下さい。
perl でググれば色々出てくると思います。
変換用 perl スクリプトは、lslint のサイトにあります。
下記テキストファイルを builtins.pl の名前で適当な場所へ保存します。
http://w-hat.com/lslint/release/builtins.pl.txt
最新ビューアのソースは、下記URLからダウンロードします。
http://wiki.secondlife.com/wiki/Source_downloads
必要なものは lscript_library.cpp だけですので
検索して builtins.pl と同じ場所へコピーします。
あとは次のように実行すれば builtins.txt のできあがりです。
perl builtins.pl < lscript_library.cpp > builtins.txt
という感じに生成したものが、次のものです。
つまりこれをコピペして保存すれば終わりです。
これですっきりします。
続きを読む
2009年03月04日
LSL汎用関数 訂正
ずっと直さないといけないと思いつつ放置していたことです。
ここの LSL の Tips には一部、非常に無駄なことが書いてあります。
こっそり直そうと思いましたが、ここで訂正致します。
誰からもツッコミが入らないし、
ここはそんなに見られているとは思いませんが。。
ここの LSL の Tips には一部、非常に無駄なことが書いてあります。
こっそり直そうと思いましたが、ここで訂正致します。
誰からもツッコミが入らないし、
ここはそんなに見られているとは思いませんが。。
これらは組み込み関数にそのままの処理があります。 最大値を取得する llListStatistics(LIST_STAT_MAX, lst); 最小値を取得する llListStatistics(LIST_STAT_MIN, lst); 合計を求める llListStatistics(LIST_STAT_SUM, lst); 平均を求める llListStatistics(LIST_STAT_MEAN, lst); 標準偏差を求める llListStatistics(LIST_STAT_STD_DEV, lst);
文字列置換はこの方が効率的です。 //============================================================================== // 文字列を置換します。 // source 対象の文字列 // search 置換される文字列 // replace 置換する文字列 // 戻り値 置換されたを返します。 //============================================================================== string str_replace(string source, string search, string replace) { return llDumpList2String(llParseStringKeepNulls(source, [ search ], []), replace); } こんな仕組みです。 list lst = llParseStringKeepNulls("abcabcabc", [ "b" ], []); // [ a, ca, ca, c ] string str = llDumpList2String(lst, "*"); // "a*ca*ca*c" あと、コピペされることを前提に i=~(-i)) のような最適化したコードを書いておきましたが、 MONOに変わってから色々と高速化されましたのであまり意味をなさなくなりました。 見にくいだけです。 ちなみに i=~(-i)) はインクリメントと等価です。 i = 0; i = ~i; // ビット反転 0xffffffff (-1) i = -i; // 符号反転 1
2008年08月12日
SLサーバーの環境変数
LSLからHTTP通信を行ったときの環境変数をCGIで抜き出してみました。
(セカンドライフに関するものだけ抜粋)
あまり大した情報は取れないようです。(まぁ色々取れすぎても怖いですし……)
とりあえず、SecondLife以外からのアクセス制限はある程度かけられそうです。
続きを読む
(セカンドライフに関するものだけ抜粋)
HTTP_X_SECONDLIFE_SHARD | Production … メイングリッド Testing … βグリッド |
HTTP_X_SECONDLIFE_OBJECT_NAME | オブジェクトの名前 |
HTTP_X_SECONDLIFE_OBJECT_KEY | オブジェクトのUUID |
HTTP_X_SECONDLIFE_REGION | SIM名(SIMのグローバル座標) |
HTTP_X_SECONDLIFE_LOCAL_POSITION | (オブジェクトの座標) |
HTTP_X_SECONDLIFE_LOCAL_ROTATION | (オブジェクトの回転値) |
HTTP_X_SECONDLIFE_LOCAL_VELOCITY | (オブジェクトの速度) |
HTTP_X_SECONDLIFE_OWNER_NAME | オブジェクトオーナーの名前 |
HTTP_X_SECONDLIFE_OWNER_KEY | オブジェクトオーナーのUUID |
HTTP_USER_AGENT | Second Life LSL/サーバーバージョン (http://secondlife.com) |
HTTP_VIA | プロキシ情報 |
あまり大した情報は取れないようです。(まぁ色々取れすぎても怖いですし……)
とりあえず、SecondLife以外からのアクセス制限はある程度かけられそうです。
続きを読む