2008年01月25日
LSLインクリメンタルサーチ

LSL IncSearch β0.1なるものを試してみました。
lslモジュール達人のjvnさんの製作です。
lslをweb上でインクリメンタルサーチできるだけでなく、
構文までコピーできるという優れものです。
コチラです!
http://www2.k-rent.net/jvn/lsl/lsl_search/
ブログの解説記事はコチラ
http://jvn.slmame.com/e122869.html

こういうサービスってもっとモッソリ動く物かと思ってたんですが
ずいぶんサクサク動くもんですねー。
基本キーボードだけで操作できるのがツボにはまる人、いるかもです。
入力保管されるエディタと比べてという部分ですが
・インストールがいらないので外出先とかでもお気軽につかえる
・日本語だ
・一覧表示が見やすい
・リンク先が適切(BlackSheep-LSL@Wikiさんなど)
といういい部分がありますね。
惜しいなという部分では、
自分のvista+IE7ではクリップボードコピーの際に
1回だけ警告ダイアログでちゃいます。
が、firefox系であれば平気です。
こういった開発の役に立つツールはどんどん増えていくと良いですね。
ユーザの開発の敷居を下げてくれる感じでステキです。
-=-=-=-=
自分はワガママなため、誰かのためのツールというのは
どうしても作る気がしません。
(自分のために作ったものを公開したりはしますが)
jvnさんのようにこういう物を労力費やして
作れるのは1つの才能だなと思いました。
2007年10月17日
テクスチャをプリロードする
あるテクスチャが画面に初めて出るときに
あらかじめキャッシュに読み込まれているよう、
影で隠れて連続でテクスチャを連続表示しておくlslです。
前に作ったヤツが出てきたので、エントリーに書いておきます。
適当なプリムにこのscriptを設定し、
プリロードしておきたいテクスチャもたくさん突っ込んでおきます。
目立たないところに小さくしておいて置くといいでしょう。
効果があるかちゃんと検証してませんが…。
うーん、scriptよりも別のことをしたい。
あらかじめキャッシュに読み込まれているよう、
影で隠れて連続でテクスチャを連続表示しておくlslです。
前に作ったヤツが出てきたので、エントリーに書いておきます。
適当なプリムにこのscriptを設定し、
プリロードしておきたいテクスチャもたくさん突っ込んでおきます。
目立たないところに小さくしておいて置くといいでしょう。
効果があるかちゃんと検証してませんが…。
list textures;
float interval = 0.2;
integer len;
integer cur = -1;
Init(){
len = llGetInventoryNumber(INVENTORY_TEXTURE);
textures= [];
integer i;
for(i=0;i<len;i++){
string name = llGetInventoryName(INVENTORY_TEXTURE,i);
textures += [name];
}
llSetTimerEvent(interval);
//llSetAlpha(0.0,ALL_SIDES);
}
default{
state_entry(){
Init();
}
on_rez(integer num){
Init();
}
changed(integer cha){
if(cha & CHANGED_INVENTORY){
Init();
}
}
timer(){
if(len==0) return;
if(++cur>=len) cur = 0;
string tex = llList2String(textures,cur);
llSetTexture(tex,1);
}
}
うーん、scriptよりも別のことをしたい。
2007年10月11日
複雑な関数は上に置け!

最近はなかなか多忙でINできないので…
lslプログラムをSciTE上で作ってみたりしていました。
(SciTEは汎用プログラムエディターです…詳しくはココを)
INする時間がなくても、コンパイルが通るかどうかまではSciTEだけで作れますし。
で、だんだんプログラムが長くなってくると。コンパイルチェック時に
Parser stack depth exceeded
などという、エラーが出てしまう事が多くなりました。
このエラーの挙動がなんだかよくわからい感じで…
気持ち悪かったので調べてみました。
まずlslプログラムは複雑な状態になると…
…簡単に言うと150以上の階層ができてしまうとエラーになってしまうようです。
変数・関数の宣言はそれぞれ1階層増えたとみなされます。
うーん、簡単じゃないですね。
実は、自分もよくわかってません。が、なんとなくはわかりました。
ここで、エラーになる例を1つ 続きを読む
2007年05月16日
何度も同じscriptはロードできない
ミニscriptメモ
別オブジェクトに対して何度も同じscriptをロードしてみた。
を連続で呼び出す。
しかし、2回目以降のllRemoteLoadScriptPinでは前のscriptが
上書きされて消えてしまった。
クラスのインスタンス化みたいに一つのscriptを複製できないかと
試みたのだけれど。失敗。
別オブジェクトに対して何度も同じscriptをロードしてみた。
llRemoteLoadScriptPin(id,scriptName,scriptPin,TRUE,0);
を連続で呼び出す。
しかし、2回目以降のllRemoteLoadScriptPinでは前のscriptが
上書きされて消えてしまった。
クラスのインスタンス化みたいに一つのscriptを複製できないかと
試みたのだけれど。失敗。
2007年05月16日
自分に自分のscriptはロードできない
ミニscriptメモ
下記のscriptでInventoryにある"copyScript"というscriptを
自分自身にロードしようかと思ったら失敗した。
エラーになるんじゃなくて、scriptが張り付いているオブジェクト自身が
叫んできたのでびっくりした。
”Object shouts: Unable to add item!”
クラスのインスタンス化みたいに一つのscriptを複製できないかと
試みたのだけれど。失敗。 続きを読む
下記のscriptでInventoryにある"copyScript"というscriptを
自分自身にロードしようかと思ったら失敗した。
エラーになるんじゃなくて、scriptが張り付いているオブジェクト自身が
叫んできたのでびっくりした。
”Object shouts: Unable to add item!”
クラスのインスタンス化みたいに一つのscriptを複製できないかと
試みたのだけれど。失敗。 続きを読む
2007年05月06日
touchとstateのステキな関係

問題です。
下記のscriptを実行してプリムにtouchすると
default{
touch_start(integer total_number){
llSay(0, "Touch start default");
state state1;
}
}
state state1{
touch_start(integer total_number){
llSay(0, "Touch start state1");
}
touch_end(integer total_number){
llSay(0, "Touch end state1");
state default;
}
}

このように
"Touch start default"
"touch end state1"
と表示されますが
では、プリムをドラッグしてからマウスをリリースした場合はどうなるでしょう?
予想外にも正解は… 続きを読む
2007年04月29日
scriptエディタのご紹介

自分はlslを書く際には、外部エディタのSciTE-ezというものを使っています。

これがかなり優れものでして
キーワードの強調やコード補完機能だけでなくオフラインの文法エラーチェックもしてくれます。
SLにログインしていなくとも、プログラムが組めて
どこに間違いがあるかコンパイルして知らせてくるわけです。
(実際はSLにログインしながら作業は行いますが。
また、実行ファイルは書き出されません。)
そのエラーの通知内容は、SL内のエディタよりもずっと詳しいです。 続きを読む
2007年04月28日
llSitTarget注意点

瞬間ワープのエントリーの補足で、llSItTargetについての渋いエントリーを書いておきます。
自分がはまった所のおさらいです。
llSItTargetの注意点
1.アバタが座った事を感知できないYO!?
エレベータ作成の際は気づかなかったのですが、
llSitTarget(<0,0,0>,rot);
などと椅子に座る座標を指定すると
rotがどんな値であっても、アバタがいすに座ったことを
changeイベントで感知できなくなります。 続きを読む