2008年07月23日
LSLツール”スクラッチ”
LSL(リンデンスクリプト)作成ツールとして、視覚的、感覚的に出来るツールScratch。
しかしその前にLSLというよりも、スクリプトってなんだ?について少し書いておきますネ^^。
まあプログラム言語ってなにか?っていうと、いきなり拒否反応示すのも無理はないですね。そもそもが日本語圏で作られたものではないので、日本語に該当しない言葉を無理矢理翻訳した結果、余計に意味が解りにくい表現が多く、また、そもそもプログラム言語に関しては、なんというか「良い教科書」よりも、結局プログラムをよく理解できている方から教わるのが一番・・という部分がありますし。
私はプログラマではありませんが、一通り知識として仕組みにまで突っ込んだ勉強はしてきました。^^
そこでまあ、基本としてスクリプトそのものについてお話ししようと考えたわけです。
スクリプト・・日本語で言うと”構文”です。まあイキナシなんの事やらですが、要するに文章。本来プログラムは言葉の組み立て方なんですが、いかんせん開発者が外人なので、自分たちで判る書式でしか書けないというのが、プログラミングをする上での最大の障害。
まず簡単にいいますけど、文章には出だしと終わりがあるのは当たり前ですよね?
この世にあるプログラミング言語は、それを{ }で囲むことで、1つの文章を完結させています。多分全部そうだと断言して良いでしょう。LSLも全く同じ。
次にプログラム言語は、書いても動きません。何故でしょうか?全てのプログラムは、中間処理という部分を通してでしか、働きません。この中間処理はどこでしているのか?というと、あなたのコンピューターだったり、ネット上にあるサーバーだったりします。この処理を通すと、プログラムは何かの操作をすると反応するようになります。
この中間処理が”コンパイル”と呼ばれています。つまり、人間が読める状態の文章を、コンピューターが読める書き方に自動で処理させることが必要。つまり目には見えない部分です。処理が終わるとプログラムは人間が読める文章ではなく、コンピューターが理解できる文章に変換されています。
これがソフトなら、ウィンドウという操作盤をユーザーに表示させ、ファイル、編集、ツールなどという操作プログラム(インターフェスという)を提供して、操作を受け付けますが、LSLはコントロールパネルは単純なものしか無く、多くはタッチするとか、アバターがぶつかるとか、そうした事でしか操作できない事になっています。
コンパイルはこの世にあるプログラム全てに必要な処理で、WEBでいうJavaScriptは、コンパイルという中間処理をブラウザが行っています。従いブラウザがないとJavaScriptは動作できません。同じようなものにFlashお馴染みのActionScriptがあります。動画やアニメーション(モーション・プログラミング)などで有名ですね。
ではLSLはというと、これはリンデンが提供している仮想空間内で”コンパイル”する事で動作します。要するにリンデンのサーバーが動作環境というわけで、中間処理はサーバー側で行われています。
で、スクリプトというのは、本来中間処理を継続しながら、実行します。
どういう事かというと、本来スクリプトというプログラムは、コンパイルをしながら処理結果を出力しますので、サーバー側の処理能力に偏った動作になります。つまり、あなたがどこかのフリーソフトをダウンロードしてインストールする際、よくEXEファイルをダブルクリックしますよね?あのEXEファイルは、既にコンパイルを終えたプログラムで、コンピューターにインストールすれば、すぐに操作できますが、スクリプトはそうはいかず、必ず実行環境がないと動作しません。つまり、スクリプトは、操作をするたびサーバーが中間処理を行うやり方なので、スクリプト以外のプログラムのように素早い処理結果は得られないのが普通。
私達があまりそれを感じないのは、PCの性能が上がったことと、サーバー側の性能が上がったということなのでしょうね。
ところが、LSLがちょっと変ってるのは、コンパイルした後の動作は、何時でもログインしてインワールドに入っていれば、すぐに動作します。中間処理は一度だけ・・。ほんとはこの”コンパイル”という言葉がチトわかりにくいんですよね。
実はコンパイルという意味がLSLではちょっと違っているそうで、リンデンでの説明によれば、LSLはコンパイルとしたことで、初めてリンデンのサーバー側へ処理環境が移るんだそうです。つまり、ユーザーがLSLを書いて保存すると同時に、そのコードはリンデンサーバーに処理が渡され、エラーチェックをします。難しい言葉を使えばデバッグです。つまり、書かれたコードに”プログラムの約束に沿った書き方”が為されているかチェックしているワケです。
便宜上コンパイルと書いてるだけで、やってることはデバッグだったというわけ。
で、エラーがなければスクリプトは、何らかの操作を待つようになるか、動作を開始します。このとき実際プログラムを動作させているのは、リンデンのサーバーであり、しかも今度は本当にコンパイルしながら、実行処理をしています。
こんな経験をしたことはありませんか?
SIMを移動したら、スクリプト禁止ではないが何故かHUDが動作しない
これは、サーバー側でLSLの処理(コンパイル)を受け付けなくなっている状態・・というのがほとんどの場合です。つまりLSLはサーバー側の処理速度で、動作が決まっているわけで、これが”スクリプト”というプログラム言語の正体です。サーバー・サイドプログラムとも呼びますが、このサーバーサイドとSLビュワーを使ったクライアント環境の2足のわらじがないと、動作しないのがスクリプトというわけ。
とりわけLSLは、サーバーの動作環境に大きく影響されるため、動作が他のスクリプトに比べ遅く、不安定だといわれています。
しかも、LSLはほとんど複雑な処理をファイルごとに分割して、お互いを読み込んだりしてコードを判りやすくするようなマネができず、一目見て非常に汚いコードになりやすいです。^^;;「コレをやったらこれをやって、次はこれこれ・・」といった書き方をするので、ブロックごとに見ていてもダメで、やたらブン長いコード全体を見通してでしか、理解できないという欠点があります。最終的にこうなるという予測が立てにくいので、1つの動作に何通りもの書き方を許してしまっている・・。
それを回避したいがため、関数という単純なプログラムの塊を、いわばユニットのようにコードに繰り返し書くことで補おうとしてますが、これが余計コードが汚くなる原因^^;;
本来ならこうした関数は外部からプログラムへ持ち込んで、関数はブロックごとにまとめて読み込ませれば、読みやすくもなると思うんですが、なにせ手続き型のプログラムなのでしょうがないところです。
Cという古くからあるプログラミング言語がありますが、ちょうどこの書き方によく似ています。手続き型と呼ばれるプログラムの書き方ですね。とにかくバグが見つけにくい書き方をしているということ・・LSL最大の欠点はそこでしょうか。
SLは世界を構成しているものは、空以外すべて何らかのプリム(レンダリングされたオブジェクト)で構成されていますが、LSLはその中でもアバター以外のプリムにしか入れることは出来ません。当たり前ですが、LSLがもしアバター自身に直接作用すると、暴走した場合どうにもならなくなりますよね?アバターを操作するにしても、スクリプトはアバター以外のプリムに仕込む必要があります。
これは全てのスクリプトに言えるのではなく、SLでは”ルール”としてそうしてあるだけです。ですから当然そのルールを破壊する猛者もいるわけで、アバターを直接制御してアカウント操作をしたり、L$を盗み出す制御を使うある種犯罪者も存在するわけです。どこまでリンデンがそうした制御に対する対抗策を講じているかは謎ですが、L$を盗み出す制御以外、禁じている様子も無いような気もします。^^;;
で、前置きが非常に長くなりましたが、Scratchというソフト、本来簡単なゲームを作るために出来たソフトなんですが、プログラムの勉強にもなります^^。
子供にも作れるプログラミング・・こうしたコンセプトで作られたそうで^^。
おもちゃのロボット「PaPeRo」でNECと共同開発してるそうです^^。
関連記事http://www.atmarkit.co.jp/news/200801/17/mit.html
簡単に使い方だけ紹介しましょう^^
まずは以下からScratch LSL版を入手。
http://web.mit.edu/~eric_r/Public/S4SL/

ダウンロード&インストール完了して立ち上げると以下のようなウィンドウになってます。

視覚的にできるといっても、LSLの基本的な構造を理解していないと、結局は使えないんですが・・^^;;
まずは左側のペインから、ユニットを移動。

上図はタッチしたときのイベントを表わしています。

タッチするとテキストを表示するスクリプトということにしました^^。
Copy Linden Scriptでコードがコピーされます。
ビュワー側で、プリムを作って”新しいスクリプト”で、スクリプトを出し、既に書かれたコードを選択して、ペースト。

保存して、編集を閉じて試してみます^^。

このようにコードを直接書かなくて済むというのは、初心者にはハードルが低くなる事かも知れませんね。
あまり複雑なことをやらせようとすると、結構大変かも知れませんが・・^^;。
実際こうやってLSLコードを自動生成さえてから、改めてコードに書かれていることを読み解く方が、ヘタな解説本を読むよりは良いかもしれませんね^^。
まあ道具は使いようということでしょうが^^。
しかしその前にLSLというよりも、スクリプトってなんだ?について少し書いておきますネ^^。
まあプログラム言語ってなにか?っていうと、いきなり拒否反応示すのも無理はないですね。そもそもが日本語圏で作られたものではないので、日本語に該当しない言葉を無理矢理翻訳した結果、余計に意味が解りにくい表現が多く、また、そもそもプログラム言語に関しては、なんというか「良い教科書」よりも、結局プログラムをよく理解できている方から教わるのが一番・・という部分がありますし。
私はプログラマではありませんが、一通り知識として仕組みにまで突っ込んだ勉強はしてきました。^^
そこでまあ、基本としてスクリプトそのものについてお話ししようと考えたわけです。
スクリプト・・日本語で言うと”構文”です。まあイキナシなんの事やらですが、要するに文章。本来プログラムは言葉の組み立て方なんですが、いかんせん開発者が外人なので、自分たちで判る書式でしか書けないというのが、プログラミングをする上での最大の障害。
まず簡単にいいますけど、文章には出だしと終わりがあるのは当たり前ですよね?
この世にあるプログラミング言語は、それを{ }で囲むことで、1つの文章を完結させています。多分全部そうだと断言して良いでしょう。LSLも全く同じ。
次にプログラム言語は、書いても動きません。何故でしょうか?全てのプログラムは、中間処理という部分を通してでしか、働きません。この中間処理はどこでしているのか?というと、あなたのコンピューターだったり、ネット上にあるサーバーだったりします。この処理を通すと、プログラムは何かの操作をすると反応するようになります。
この中間処理が”コンパイル”と呼ばれています。つまり、人間が読める状態の文章を、コンピューターが読める書き方に自動で処理させることが必要。つまり目には見えない部分です。処理が終わるとプログラムは人間が読める文章ではなく、コンピューターが理解できる文章に変換されています。
これがソフトなら、ウィンドウという操作盤をユーザーに表示させ、ファイル、編集、ツールなどという操作プログラム(インターフェスという)を提供して、操作を受け付けますが、LSLはコントロールパネルは単純なものしか無く、多くはタッチするとか、アバターがぶつかるとか、そうした事でしか操作できない事になっています。
コンパイルはこの世にあるプログラム全てに必要な処理で、WEBでいうJavaScriptは、コンパイルという中間処理をブラウザが行っています。従いブラウザがないとJavaScriptは動作できません。同じようなものにFlashお馴染みのActionScriptがあります。動画やアニメーション(モーション・プログラミング)などで有名ですね。
ではLSLはというと、これはリンデンが提供している仮想空間内で”コンパイル”する事で動作します。要するにリンデンのサーバーが動作環境というわけで、中間処理はサーバー側で行われています。
で、スクリプトというのは、本来中間処理を継続しながら、実行します。
どういう事かというと、本来スクリプトというプログラムは、コンパイルをしながら処理結果を出力しますので、サーバー側の処理能力に偏った動作になります。つまり、あなたがどこかのフリーソフトをダウンロードしてインストールする際、よくEXEファイルをダブルクリックしますよね?あのEXEファイルは、既にコンパイルを終えたプログラムで、コンピューターにインストールすれば、すぐに操作できますが、スクリプトはそうはいかず、必ず実行環境がないと動作しません。つまり、スクリプトは、操作をするたびサーバーが中間処理を行うやり方なので、スクリプト以外のプログラムのように素早い処理結果は得られないのが普通。
私達があまりそれを感じないのは、PCの性能が上がったことと、サーバー側の性能が上がったということなのでしょうね。
ところが、LSLがちょっと変ってるのは、コンパイルした後の動作は、何時でもログインしてインワールドに入っていれば、すぐに動作します。中間処理は一度だけ・・。ほんとはこの”コンパイル”という言葉がチトわかりにくいんですよね。
実はコンパイルという意味がLSLではちょっと違っているそうで、リンデンでの説明によれば、LSLはコンパイルとしたことで、初めてリンデンのサーバー側へ処理環境が移るんだそうです。つまり、ユーザーがLSLを書いて保存すると同時に、そのコードはリンデンサーバーに処理が渡され、エラーチェックをします。難しい言葉を使えばデバッグです。つまり、書かれたコードに”プログラムの約束に沿った書き方”が為されているかチェックしているワケです。
便宜上コンパイルと書いてるだけで、やってることはデバッグだったというわけ。
で、エラーがなければスクリプトは、何らかの操作を待つようになるか、動作を開始します。このとき実際プログラムを動作させているのは、リンデンのサーバーであり、しかも今度は本当にコンパイルしながら、実行処理をしています。
こんな経験をしたことはありませんか?
SIMを移動したら、スクリプト禁止ではないが何故かHUDが動作しない
これは、サーバー側でLSLの処理(コンパイル)を受け付けなくなっている状態・・というのがほとんどの場合です。つまりLSLはサーバー側の処理速度で、動作が決まっているわけで、これが”スクリプト”というプログラム言語の正体です。サーバー・サイドプログラムとも呼びますが、このサーバーサイドとSLビュワーを使ったクライアント環境の2足のわらじがないと、動作しないのがスクリプトというわけ。
とりわけLSLは、サーバーの動作環境に大きく影響されるため、動作が他のスクリプトに比べ遅く、不安定だといわれています。
しかも、LSLはほとんど複雑な処理をファイルごとに分割して、お互いを読み込んだりしてコードを判りやすくするようなマネができず、一目見て非常に汚いコードになりやすいです。^^;;「コレをやったらこれをやって、次はこれこれ・・」といった書き方をするので、ブロックごとに見ていてもダメで、やたらブン長いコード全体を見通してでしか、理解できないという欠点があります。最終的にこうなるという予測が立てにくいので、1つの動作に何通りもの書き方を許してしまっている・・。
それを回避したいがため、関数という単純なプログラムの塊を、いわばユニットのようにコードに繰り返し書くことで補おうとしてますが、これが余計コードが汚くなる原因^^;;
本来ならこうした関数は外部からプログラムへ持ち込んで、関数はブロックごとにまとめて読み込ませれば、読みやすくもなると思うんですが、なにせ手続き型のプログラムなのでしょうがないところです。
Cという古くからあるプログラミング言語がありますが、ちょうどこの書き方によく似ています。手続き型と呼ばれるプログラムの書き方ですね。とにかくバグが見つけにくい書き方をしているということ・・LSL最大の欠点はそこでしょうか。
SLは世界を構成しているものは、空以外すべて何らかのプリム(レンダリングされたオブジェクト)で構成されていますが、LSLはその中でもアバター以外のプリムにしか入れることは出来ません。当たり前ですが、LSLがもしアバター自身に直接作用すると、暴走した場合どうにもならなくなりますよね?アバターを操作するにしても、スクリプトはアバター以外のプリムに仕込む必要があります。
これは全てのスクリプトに言えるのではなく、SLでは”ルール”としてそうしてあるだけです。ですから当然そのルールを破壊する猛者もいるわけで、アバターを直接制御してアカウント操作をしたり、L$を盗み出す制御を使うある種犯罪者も存在するわけです。どこまでリンデンがそうした制御に対する対抗策を講じているかは謎ですが、L$を盗み出す制御以外、禁じている様子も無いような気もします。^^;;
で、前置きが非常に長くなりましたが、Scratchというソフト、本来簡単なゲームを作るために出来たソフトなんですが、プログラムの勉強にもなります^^。
子供にも作れるプログラミング・・こうしたコンセプトで作られたそうで^^。
おもちゃのロボット「PaPeRo」でNECと共同開発してるそうです^^。
関連記事http://www.atmarkit.co.jp/news/200801/17/mit.html
簡単に使い方だけ紹介しましょう^^
まずは以下からScratch LSL版を入手。
http://web.mit.edu/~eric_r/Public/S4SL/
ダウンロード&インストール完了して立ち上げると以下のようなウィンドウになってます。
視覚的にできるといっても、LSLの基本的な構造を理解していないと、結局は使えないんですが・・^^;;
まずは左側のペインから、ユニットを移動。
上図はタッチしたときのイベントを表わしています。
タッチするとテキストを表示するスクリプトということにしました^^。
Copy Linden Scriptでコードがコピーされます。
ビュワー側で、プリムを作って”新しいスクリプト”で、スクリプトを出し、既に書かれたコードを選択して、ペースト。
保存して、編集を閉じて試してみます^^。
このようにコードを直接書かなくて済むというのは、初心者にはハードルが低くなる事かも知れませんね。
あまり複雑なことをやらせようとすると、結構大変かも知れませんが・・^^;。
実際こうやってLSLコードを自動生成さえてから、改めてコードに書かれていることを読み解く方が、ヘタな解説本を読むよりは良いかもしれませんね^^。
まあ道具は使いようということでしょうが^^。
2008年05月02日
リンデンスクリプト第五回。今日は縮小版。
今夜もワタシをデバッグ♪(意味不明)リンデンスクリプト怒濤の第五回です。
今Libraryフォルダにあるカートのスクリプトを分解して解説していますが、過去記事は以下に。
http://rado.slmame.com/e224623.html
で、今回はカメラポジションのことはひとまずおいておいて、やたら数が多いコイツ等から。

パラメーターと数字という組み合わせで制御してます。パラメーター?知らなくていいです^^。
ガイドを読むと、VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY最低(0.0) と最高の(1.0 ) で可変します。それは角度と偏向の強さを調整する為の簡単な数値で、車の速度と・・・・・
こんな感じに簡潔に、しかしダラダラと書き連なっています。(見てるだけで吐き気が・・・)
まあなにせ具体的な動作を、どうやったら上手く伝わるのか苦労した感じは伝わってきます。^^
あー日本語だといい表現があるのにねぇって同情してあげて下さい。

とまあ、なんだかわからんことが書いてありますが、実のところ、実際プログラムの数値を変えれば、これがなんなのかよくわかります。まずこの部分の上から見ていきます。
VEHICLE_ANGULAR_DEFLECTION_EFFICIENCYの後ろに数字がありますから、この数字を最低(0.0) と最高の(1.0 ) の間で変化させればいいのです。

とりあえずマックスにしてみましょう。

乗り込む角度にもよりますが、乗った途端カートは気が違ってアクセルとブレーキを間違えたかのように前に進みます。
乗り込んだらイキナリ谷底に突き落とされそうになりました。正に自爆。

では無効というか、あり得ない数字を入れたらどうなるでしょうか?やっぱしぶっ飛んであの世にまで一直線なのでしょうか?

実は何も変りません。ほっと一安心ですね。

では値を最小にしたらどうなるんでしょう?

実はほとんど値を変えていないときと全く同じです。

両極端ではどちらも実は同じと言うことは、ある程度デフォルトで定位置が既に決まっているようですね。
つまりそれを基準として、そこから若干乗り物を進めた方が良い場合は、この値をいじるというわけ。
従いデフォルトでは最低値0.01が設定されています。限りなく0に近い。
もともと自分で好きなようにスクリプトをいじって、自分だけの乗り物を造れるように、あえてこの部分を入れているようです。ではこの部分をスクリプトから削除します。

実は削除してもほとんど変化はありません。

実はこのスクリプトのllSetVehicleFloatParamなどのパラメーターは19ぐらい書かれていますが、乗り物のパラメーターは24あります。つまりほとんどがここに書かれている事になります。しかも同じパラメータは書かれてはいないので、学習用に元々用意されている事がわかります。特に llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.01);なんていのは、必要かどうか?といわれれば、ほぼ間違いなく削除しても問題はありません。それでも敢えて書いているというのは理由がある。なるほどね。ステキ。
ココのパラメーターについては、あまり1つ1つパラメータの意味を考えるより、実際にスクリプトに組み込んで値を変化させた方が理解できます。というかこのパラメーターについて、LSLガイドの説明は1~2歩下がって考えてみても具体性に欠けます。「ツベコベ言わずにやってみろよ」といわんばかり。実際やってみると、百聞は一見にしかずというジジババ(失礼)ご老齢の紳士ご婦人の言うことはごもっともでございます。
ちなみにちょっとこのカートのスクリプトは面白い事が書かれてあります。
前回やったこの部分。

この部分を抜き出して値を変えた場合、前回では極端な値を入れるととんでもないことになりましたよね?これを、もとのスクリプトでやるとどうなるのでしょうか?

ちょっとドキドキします・・・・・・。

前回もここからコントロールを少しでも動かすと凄いことになりました。
じゃーーーーーーーーーーもっとスッッゲ事に・

なりません^^。
実はコレがこのカートスクリプトの面白い所なんです。
つまり、ワザワザ書いてあるこのカメラと視点の位置を、コイツ等を無視しねじ伏せてまでも、位置を決めている連中がいるのです。こういう奴らは外部参照とか呼ばれていますが、それはまたの機会。
次回はコイツ等の住処の下にある、別の野郎共についてお話しします。
では。
今Libraryフォルダにあるカートのスクリプトを分解して解説していますが、過去記事は以下に。
http://rado.slmame.com/e224623.html
で、今回はカメラポジションのことはひとまずおいておいて、やたら数が多いコイツ等から。
パラメーターと数字という組み合わせで制御してます。パラメーター?知らなくていいです^^。
ガイドを読むと、VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY最低(0.0) と最高の(1.0 ) で可変します。それは角度と偏向の強さを調整する為の簡単な数値で、車の速度と・・・・・
こんな感じに簡潔に、しかしダラダラと書き連なっています。(見てるだけで吐き気が・・・)
まあなにせ具体的な動作を、どうやったら上手く伝わるのか苦労した感じは伝わってきます。^^
あー日本語だといい表現があるのにねぇって同情してあげて下さい。
とまあ、なんだかわからんことが書いてありますが、実のところ、実際プログラムの数値を変えれば、これがなんなのかよくわかります。まずこの部分の上から見ていきます。
VEHICLE_ANGULAR_DEFLECTION_EFFICIENCYの後ろに数字がありますから、この数字を最低(0.0) と最高の(1.0 ) の間で変化させればいいのです。
とりあえずマックスにしてみましょう。
乗り込む角度にもよりますが、乗った途端カートは気が違ってアクセルとブレーキを間違えたかのように前に進みます。
乗り込んだらイキナリ谷底に突き落とされそうになりました。正に自爆。
では無効というか、あり得ない数字を入れたらどうなるでしょうか?やっぱしぶっ飛んであの世にまで一直線なのでしょうか?
実は何も変りません。ほっと一安心ですね。
では値を最小にしたらどうなるんでしょう?
実はほとんど値を変えていないときと全く同じです。
両極端ではどちらも実は同じと言うことは、ある程度デフォルトで定位置が既に決まっているようですね。
つまりそれを基準として、そこから若干乗り物を進めた方が良い場合は、この値をいじるというわけ。
従いデフォルトでは最低値0.01が設定されています。限りなく0に近い。
もともと自分で好きなようにスクリプトをいじって、自分だけの乗り物を造れるように、あえてこの部分を入れているようです。ではこの部分をスクリプトから削除します。
実は削除してもほとんど変化はありません。
実はこのスクリプトのllSetVehicleFloatParamなどのパラメーターは19ぐらい書かれていますが、乗り物のパラメーターは24あります。つまりほとんどがここに書かれている事になります。しかも同じパラメータは書かれてはいないので、学習用に元々用意されている事がわかります。特に llSetVehicleFloatParam(VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY, 0.01);なんていのは、必要かどうか?といわれれば、ほぼ間違いなく削除しても問題はありません。それでも敢えて書いているというのは理由がある。なるほどね。ステキ。
ココのパラメーターについては、あまり1つ1つパラメータの意味を考えるより、実際にスクリプトに組み込んで値を変化させた方が理解できます。というかこのパラメーターについて、LSLガイドの説明は1~2歩下がって考えてみても具体性に欠けます。「ツベコベ言わずにやってみろよ」といわんばかり。実際やってみると、百聞は一見にしかずというジジババ(失礼)ご老齢の紳士ご婦人の言うことはごもっともでございます。
ちなみにちょっとこのカートのスクリプトは面白い事が書かれてあります。
前回やったこの部分。
この部分を抜き出して値を変えた場合、前回では極端な値を入れるととんでもないことになりましたよね?これを、もとのスクリプトでやるとどうなるのでしょうか?
ちょっとドキドキします・・・・・・。
前回もここからコントロールを少しでも動かすと凄いことになりました。
じゃーーーーーーーーーーもっとスッッゲ事に・
なりません^^。
実はコレがこのカートスクリプトの面白い所なんです。
つまり、ワザワザ書いてあるこのカメラと視点の位置を、コイツ等を無視しねじ伏せてまでも、位置を決めている連中がいるのです。こういう奴らは外部参照とか呼ばれていますが、それはまたの機会。
次回はコイツ等の住処の下にある、別の野郎共についてお話しします。
では。
2008年05月01日
リンデンスクリプトだ!テメ!コラ!第4回
さて、昨日から不定期とかいいながらマメに書いとる「リンデンスクリプト!ワタシャ基礎からダラダラやンネーゾ!カートでGO!」第4回目。
過去記事はコチラ。
http://rado.slmame.com/e222552.html
http://rado.slmame.com/e223562.html
http://rado.slmame.com/e223795.html
で、今はLibraryフォルダのカートをばらして、スクリプトを見ているわけですが、前回スクリプトの前半が、アバターの位置とカメラ目線を決めているということはわかりました。
問題はコイツ等ですよね? この同じような名前を連ねてるドングリのナントカみたいな奴らです。

こっからがめんどクセーんですが、まあちまちま気長にやりましょう。^^
コイツ等は
コイツの子分ではありません。ナンつーかこのstate_entryというヤツは、一人では何にもデキネーくせに、生意気にもスクリプトを制御出来ます。ムカツク会社の上司を思い起こしてもらえれば、何となくわかるかと思います。内容見てコレがやりたいことナンスってdefult{ }クンにいそいそとレポートを提出するようなこざかしさ。腹立つけど、コイツがいないとどうにもならないという始末。そもそもが自分の社員がどんなヤツかは、スクリプトをスタートさせないと「?」ってくらいボンクラです。
では、そのstate_entryというアホ上司に仕事を手渡すカワイソウな社員連中の自己紹介から参りましょうか・・・。
例のごとくC:\Program Files\SecondLifeのなかにあるlsl_guide.htmを取り出してみてみます。

案外LSLガイドはシンプルな解説なので、解りにくいことはないかも知れませんが、学者クセー臭いがプンプン。
鼻つまんで我慢です。()の中は社員に送る指示書です。意味不明で今はいいです。コイツ等には今は用はありませんから。
llSetSoundQueueing(なんか数字入れてね、待ち時間指定よ)
もし素敵な音楽とかサウンドを見つけたら、ワタクシは見逃しません。聞こえてくるまで待っちゃうよ♪
まあ大抵何時もないから通常はFALSE(ハズレ)なんですケド。あっても音が流れるまで待ってマース。
llPassCollisions(アタリかハズレを指定せい)
もしもTRUE(アタリ)を引いたら、土地とオブジェクトはオブジェクトのおこちゃま達からパスしまーす。(なんだそりゃ)
llSetSitText(ステキな言葉)
パイメニューの「座る」にあたるところの言葉を変えます。ステキな言葉でワタシを悩殺して♪
llSitTarget(位置をきめてね、どこら辺か教えて)
あなたの座る場所を決めちゃいます。offset == ZERO_VECTORで、座らせネーゾ!
llSetCameraEyeOffset(どこ見ればいいのよ)
もしあなたがオブジェクトに座ったら、カメラ目線は強制的にワタシに従ってもらいます。問答無用。
llSetCameraAtOffset(みる位置を教えて♪)
アタイもllSetCameraEyeOffsetさんと同じなんだけど、アバター目線とはチト違うらしいわ。
llSetVehicleType(なんか書きなー)
乗り物を動かすならオレに聞いてくれ。 詳しい種類はシラネーから、 車両のタイプ定数でも調べろや。
llSetVehicleFlags(なんか書きなー)
乗り物には印みたいのがあんのよ。そいつを有効にしてやるのがオイラの仕事。馬鹿にするなよ。詳しいことは車両のフラグ定数でもしらべヤガレ。
llSetVehicleFloatParam(数字で教えてね、型を聞いてア・ゲ・ル)
乗り物のフローティング位置を決めてあげるわ。 param_value param_nameを使うのよ。何が使えるか知らないの。 車両パラメータの定数をオ・シ・エ・テ・・ね!パラメータはきっと外部にあるわ。
llSetVehicleVectorParam(数字で教えていただければ、型を聞かせてください)
乗り物の方向を決めて差し上げます。やっぱparam_value param_nameが最高です。 車両パラメータの定数 は知らないです。すみません、馬鹿な者で。教えて頂ければありがたいです。
llCollisionSound(衝撃音の文字だよ、そいつの型番ッス)
モノがぶつかったらその音をどうんすんのか教えナー。持ち物にその音があれば、デフォルトの音を置換えてやるぜ。カラの文字列が好き。
とまあ、性別はともかく細かく役割分担があります。何でもかんでも分業制ってのが、メンドクセー原因。たしかにイチイチ指定するのがムカつきます。
先日書いたとおり、スクリプトに日本語が使えるように出来る事を利用して、ここはひとつ、抜き出したオマヌケスクリプトに役割別にコメントつけるとわかりやすいでしょう。
元はズラズラとわかりにくいので、

ゴリゴリにコメントだらけにしてアホでもわかるようにシマス。^^

こうしてコメントをつけると、抜き出したところで動作する部分は、結局アバターの座る位置とカメラの視点、つまり見る位置だけだということがわかるはずです。何せ座ったところで動きはしないンですから。
他連中は外部になんか書いてあって、それを参照してるってことに一応なってます。他は削除しましたから、結局コイツ等は今は無能。ちなみにvehicleとは乗り物です。
だけど今は動きもしないので、やっぱしコイツ等は今は能なしですね。

では、ちょっと悪戯をしましょう。スクリプトでそこが何を表わすかは、数字が書いてあれば、そこに極端な値をぶち込むことです。「そ、そんなことしてダイジョブ?!・・・・・」
それはデバッカ様がおかしな値であれば「ザッケンじゃねーーーっ!!!!」ってエラーを出してスクリプトを止めますからご安心を。
まずは只今の時点ではアバターの座る位置とカメラを表わすところはココ。

ココを以下のように言葉を変え、数字があれば極端な値に変えてみるとよくわかります。

まずはパイメニュー。llSetSitTextは本来「座る」の所を書き換えるモノだとわかります。

少し女性らしさを演出。ネオロマンティック・・・・・。(意味不明)
で、座る位置。というか座ってません。

で、ここでコントロールを少しでも動かすと、カメラ目線とアバターを見る位置が変るんですが、あまりに極端なので、一瞬「BANされたんかっっっっっっ!!!!!」って動揺する位の位置にいます。

視点を自分側に設定するように値を変えると、もはや神様になった気分に。

プリムを編集にして状態でコンテンツに納めてあるスクリプトを、順番に数字を変化させて保存して編集を閉じて実行していけば、何がどう変るのか一目瞭然となるわけ。
そばで見てた方が興味津々に近づいてきましたが、「実験中です」の一言でどっかいきました。
きっと「変態だ。この人」と思ったのに違いありません。
では次回、後半の型とか乗り物を決めてる奴らをガシゲシと解説します。
追伸。何故スクリプトは理解しにくいのか?
それは、大抵プログラム設計は構文を書いては試し、書いては試すの連続です。予想に反して変な結果が出た場合、それを直すのは設計者の仕事。
そういった作業の中から、先ほどのような仕事をさせる小さなプログラムを羅列して表わすわけですが、これを言葉で説明しようとすると、どうしても無理があり、やはり理解しがたいが物理で使われる言葉を使ったり、なんとか端的にその動作を説明しようとするから、そのところが理解しがたいと思われるところだと思います。「なんつーか具体的な言葉が見つからないのよ^^;」こんなところです。
しかしそうした設計者の苦労を、別にスクリプトを書く側が気にする必要はありません。やりたいことを実現するには何を使うといいかなーぐらいの意識でいいのです。
それには、何より試すのが一番わかりやすいと思います。いくら頭をひねって「よっしゃこれで完璧だ!」といったところで、苦労したスクリプトが動作しないことで頭を抱えるくらいなら、マトモに動くスクリプトをよく見ておくことが何よりも一番いいのです。
教訓としては「1から学ぶな、どうせ覚えたことすべてが必要じゃない」ということ。
いつ使うんだ?てな関数覚えたところで、役に立つ頃には忘れてます。まあ記憶力がある人ならいいんでしょうが、別に暗記しなくてもガイドはありますから、無理する必要はありません。
それと、「何かに使えるかも知れませんね」、とかいうスクリプトを苦労して自作したところで、格言として「何時かやろうは結局なにもしない」の言葉道理、「特に使えることがないムダな努力」が多いもの。似たようなフリーで、ライセンスが特に無いカスタマイズ可能なスクリプトをいじれば何とかなるなら、それが一番確実です。それが覚えるのに最も適しているからです。
ホントに必要ならいいんですが、スクリプトを1から書く必要が特にないなら、それで別に不自由しない。ということ。
過去記事はコチラ。
http://rado.slmame.com/e222552.html
http://rado.slmame.com/e223562.html
http://rado.slmame.com/e223795.html
で、今はLibraryフォルダのカートをばらして、スクリプトを見ているわけですが、前回スクリプトの前半が、アバターの位置とカメラ目線を決めているということはわかりました。
問題はコイツ等ですよね? この同じような名前を連ねてるドングリのナントカみたいな奴らです。
こっからがめんどクセーんですが、まあちまちま気長にやりましょう。^^
コイツ等は
では、そのstate_entryというアホ上司に仕事を手渡すカワイソウな社員連中の自己紹介から参りましょうか・・・。
例のごとくC:\Program Files\SecondLifeのなかにあるlsl_guide.htmを取り出してみてみます。
案外LSLガイドはシンプルな解説なので、解りにくいことはないかも知れませんが、学者クセー臭いがプンプン。
鼻つまんで我慢です。()の中は社員に送る指示書です。意味不明で今はいいです。コイツ等には今は用はありませんから。
llSetSoundQueueing(なんか数字入れてね、待ち時間指定よ)
もし素敵な音楽とかサウンドを見つけたら、ワタクシは見逃しません。聞こえてくるまで待っちゃうよ♪
まあ大抵何時もないから通常はFALSE(ハズレ)なんですケド。あっても音が流れるまで待ってマース。
llPassCollisions(アタリかハズレを指定せい)
もしもTRUE(アタリ)を引いたら、土地とオブジェクトはオブジェクトのおこちゃま達からパスしまーす。(なんだそりゃ)
llSetSitText(ステキな言葉)
パイメニューの「座る」にあたるところの言葉を変えます。ステキな言葉でワタシを悩殺して♪
llSitTarget(位置をきめてね、どこら辺か教えて)
あなたの座る場所を決めちゃいます。offset == ZERO_VECTORで、座らせネーゾ!
llSetCameraEyeOffset(どこ見ればいいのよ)
もしあなたがオブジェクトに座ったら、カメラ目線は強制的にワタシに従ってもらいます。問答無用。
llSetCameraAtOffset(みる位置を教えて♪)
アタイもllSetCameraEyeOffsetさんと同じなんだけど、アバター目線とはチト違うらしいわ。
llSetVehicleType(なんか書きなー)
乗り物を動かすならオレに聞いてくれ。 詳しい種類はシラネーから、 車両のタイプ定数でも調べろや。
llSetVehicleFlags(なんか書きなー)
乗り物には印みたいのがあんのよ。そいつを有効にしてやるのがオイラの仕事。馬鹿にするなよ。詳しいことは車両のフラグ定数でもしらべヤガレ。
llSetVehicleFloatParam(数字で教えてね、型を聞いてア・ゲ・ル)
乗り物のフローティング位置を決めてあげるわ。 param_value param_nameを使うのよ。何が使えるか知らないの。 車両パラメータの定数をオ・シ・エ・テ・・ね!パラメータはきっと外部にあるわ。
llSetVehicleVectorParam(数字で教えていただければ、型を聞かせてください)
乗り物の方向を決めて差し上げます。やっぱparam_value param_nameが最高です。 車両パラメータの定数 は知らないです。すみません、馬鹿な者で。教えて頂ければありがたいです。
llCollisionSound(衝撃音の文字だよ、そいつの型番ッス)
モノがぶつかったらその音をどうんすんのか教えナー。持ち物にその音があれば、デフォルトの音を置換えてやるぜ。カラの文字列が好き。
とまあ、性別はともかく細かく役割分担があります。何でもかんでも分業制ってのが、メンドクセー原因。たしかにイチイチ指定するのがムカつきます。
先日書いたとおり、スクリプトに日本語が使えるように出来る事を利用して、ここはひとつ、抜き出したオマヌケスクリプトに役割別にコメントつけるとわかりやすいでしょう。
元はズラズラとわかりにくいので、
ゴリゴリにコメントだらけにしてアホでもわかるようにシマス。^^
こうしてコメントをつけると、抜き出したところで動作する部分は、結局アバターの座る位置とカメラの視点、つまり見る位置だけだということがわかるはずです。何せ座ったところで動きはしないンですから。
他連中は外部になんか書いてあって、それを参照してるってことに一応なってます。他は削除しましたから、結局コイツ等は今は無能。ちなみにvehicleとは乗り物です。
だけど今は動きもしないので、やっぱしコイツ等は今は能なしですね。
では、ちょっと悪戯をしましょう。スクリプトでそこが何を表わすかは、数字が書いてあれば、そこに極端な値をぶち込むことです。「そ、そんなことしてダイジョブ?!・・・・・」
それはデバッカ様がおかしな値であれば「ザッケンじゃねーーーっ!!!!」ってエラーを出してスクリプトを止めますからご安心を。
まずは只今の時点ではアバターの座る位置とカメラを表わすところはココ。
ココを以下のように言葉を変え、数字があれば極端な値に変えてみるとよくわかります。
まずはパイメニュー。llSetSitTextは本来「座る」の所を書き換えるモノだとわかります。
少し女性らしさを演出。ネオロマンティック・・・・・。(意味不明)
で、座る位置。というか座ってません。
で、ここでコントロールを少しでも動かすと、カメラ目線とアバターを見る位置が変るんですが、あまりに極端なので、一瞬「BANされたんかっっっっっっ!!!!!」って動揺する位の位置にいます。
視点を自分側に設定するように値を変えると、もはや神様になった気分に。
プリムを編集にして状態でコンテンツに納めてあるスクリプトを、順番に数字を変化させて保存して編集を閉じて実行していけば、何がどう変るのか一目瞭然となるわけ。
そばで見てた方が興味津々に近づいてきましたが、「実験中です」の一言でどっかいきました。
きっと「変態だ。この人」と思ったのに違いありません。
では次回、後半の型とか乗り物を決めてる奴らをガシゲシと解説します。
追伸。何故スクリプトは理解しにくいのか?
それは、大抵プログラム設計は構文を書いては試し、書いては試すの連続です。予想に反して変な結果が出た場合、それを直すのは設計者の仕事。
そういった作業の中から、先ほどのような仕事をさせる小さなプログラムを羅列して表わすわけですが、これを言葉で説明しようとすると、どうしても無理があり、やはり理解しがたいが物理で使われる言葉を使ったり、なんとか端的にその動作を説明しようとするから、そのところが理解しがたいと思われるところだと思います。「なんつーか具体的な言葉が見つからないのよ^^;」こんなところです。
しかしそうした設計者の苦労を、別にスクリプトを書く側が気にする必要はありません。やりたいことを実現するには何を使うといいかなーぐらいの意識でいいのです。
それには、何より試すのが一番わかりやすいと思います。いくら頭をひねって「よっしゃこれで完璧だ!」といったところで、苦労したスクリプトが動作しないことで頭を抱えるくらいなら、マトモに動くスクリプトをよく見ておくことが何よりも一番いいのです。
教訓としては「1から学ぶな、どうせ覚えたことすべてが必要じゃない」ということ。
いつ使うんだ?てな関数覚えたところで、役に立つ頃には忘れてます。まあ記憶力がある人ならいいんでしょうが、別に暗記しなくてもガイドはありますから、無理する必要はありません。
それと、「何かに使えるかも知れませんね」、とかいうスクリプトを苦労して自作したところで、格言として「何時かやろうは結局なにもしない」の言葉道理、「特に使えることがないムダな努力」が多いもの。似たようなフリーで、ライセンスが特に無いカスタマイズ可能なスクリプトをいじれば何とかなるなら、それが一番確実です。それが覚えるのに最も適しているからです。
ホントに必要ならいいんですが、スクリプトを1から書く必要が特にないなら、それで別に不自由しない。ということ。
2008年04月30日
リンデンスクリプトだわな第3回日本語つかいてぇ
さて、とりあえずカートのスクリプト解説はひとまず置いておいて、今回はスクリプトで日本語を扱おうというお話しです。
ホバー・テキストなどで、なんか「日本語使いたいなぁ・・」と思ってもデフォルトじゃあ、以下のようになって使えません。う~ん。

今回はコレをナントカします。既にソラマメのスクリプトのことで書いていらっしゃる方が多いようですので、そちらで参照を・・・・ンなことあるかいっ!!!
でまあ、良くあるフリーフォントでナントカします。漢字が使えないと面白くないので、今回は以下のサイトから頂いてまいりマス。感謝。
http://mix-mplus-ipa.sourceforge.jp/download.html

ダウンロードしてきたのは良いんですが、コレLinux用なので、ファイルは通常では開けません。
残念でした^^。(アホか)

で、まあ解凍ソフトがいるんですが、これは上記のサイトからでもリンクが張ってあるんですが、本家サイトから頂戴します。もちフリー。有名なソフトです。再度感謝。
http://www.chitora.jp/lhaz.html
なんだか真っ黒なページで裏サイトみたいですが、作者の趣味です。ここは「わぁーステキ。クール!」と褒め称えましょう。^^

ダウンロード&インストでOK。
先ほどのファイルを解凍します。同じ場所で解凍した方がラクです。

フォルダを開けましょう。

たくさんのファイル、フォルダが入っていますが、必要なのは"fonts"というフォルダだけ。デスクトップにでもドラックして、残ったファイル、フォルダは木っ端微塵に削除して下さい。(READ MEがついてますが、”商用個人利用何でもOK”としか書いてないので)

抜いたファイルを開けてアイコンで"TT"とあるのが、フォントファイルです。テキストファイル以外は全て選択。切り取りでスコッと抜いて下さい。^^
例のごとくC:\Program Files\SecondLifeを開きます。
その中にfontsというファイルがあるので、開きます。

で、開いていきなり問答無用で貼付け。

貼付けたファイルをダブルクリックで開いて、文字を確認しておいた方が良いですね。
ワタシは馬鹿正直に右クリックで開く・・・・・。

こうやって、使いたいフォントを見ておくワケ。

SLにログインして、インできたらキーボードのCtrl+Alt+Dでクライアントメニューを出します。
ワタシはベーターグリット用ビュワーなので気にしないでね^^。普通はAdvancedとか出て来るはずです。

メニューから以下を選択。

なにやら小さい窓が現れます。コレがかの有名なビュワー詳細セッティングメニュー、デバッグモードってヤツですっ・・ってどうでもいいんだわ。んなこたあ。上の空白横にプルUPメニュー(メニューが上に現れるんで)から画像のマウスカーソルが選んでる場所を選択します。

でもってその下の文字が書いてある部分を選択しておき、

またまたC:\Program Files\SecondLife\fontsを開き、お目当てのフォントファイルを選択。名前を変更とすると、ファイル名をコピーできるのでコピー。リネームしちゃダメですよ^^。


で、再びビュワーに戻って先ほどの所に貼付け。ワタクシは再び馬鹿正直にメニューから張り付けと・・・・・。

で、設定をプログラムに読み込ませるため、ビュワーを終了。再度ログイン。平たく言えば”リログ”です。^^
”I SHALL RETURN”してきたら(素直にログインでいいんですが)、先ほどのスクリプトにオラーッ!!と日本語を書き殴り、ドスコイと保存。

結果を見るために、プリムを作成。コンテンツにブチコミましょう。

以上。
やっぱしEnglishがクールだわんって方は、さっきの小窓を再び出して、デフォルトに戻すボタンを押して、リログすれば元に戻ります。

ホバー・テキストなどで、なんか「日本語使いたいなぁ・・」と思ってもデフォルトじゃあ、以下のようになって使えません。う~ん。
今回はコレをナントカします。既にソラマメのスクリプトのことで書いていらっしゃる方が多いようですので、そちらで参照を・・・・ンなことあるかいっ!!!
でまあ、良くあるフリーフォントでナントカします。漢字が使えないと面白くないので、今回は以下のサイトから頂いてまいりマス。感謝。
http://mix-mplus-ipa.sourceforge.jp/download.html
ダウンロードしてきたのは良いんですが、コレLinux用なので、ファイルは通常では開けません。
残念でした^^。(アホか)
で、まあ解凍ソフトがいるんですが、これは上記のサイトからでもリンクが張ってあるんですが、本家サイトから頂戴します。もちフリー。有名なソフトです。再度感謝。
http://www.chitora.jp/lhaz.html
なんだか真っ黒なページで裏サイトみたいですが、作者の趣味です。ここは「わぁーステキ。クール!」と褒め称えましょう。^^
ダウンロード&インストでOK。
先ほどのファイルを解凍します。同じ場所で解凍した方がラクです。
フォルダを開けましょう。
たくさんのファイル、フォルダが入っていますが、必要なのは"fonts"というフォルダだけ。デスクトップにでもドラックして、残ったファイル、フォルダは木っ端微塵に削除して下さい。(READ MEがついてますが、”商用個人利用何でもOK”としか書いてないので)
抜いたファイルを開けてアイコンで"TT"とあるのが、フォントファイルです。テキストファイル以外は全て選択。切り取りでスコッと抜いて下さい。^^
例のごとくC:\Program Files\SecondLifeを開きます。
その中にfontsというファイルがあるので、開きます。
で、開いていきなり問答無用で貼付け。
貼付けたファイルをダブルクリックで開いて、文字を確認しておいた方が良いですね。
ワタシは馬鹿正直に右クリックで開く・・・・・。
こうやって、使いたいフォントを見ておくワケ。
SLにログインして、インできたらキーボードのCtrl+Alt+Dでクライアントメニューを出します。
ワタシはベーターグリット用ビュワーなので気にしないでね^^。普通はAdvancedとか出て来るはずです。
メニューから以下を選択。
なにやら小さい窓が現れます。コレがかの有名なビュワー詳細セッティングメニュー、デバッグモードってヤツですっ・・ってどうでもいいんだわ。んなこたあ。上の空白横にプルUPメニュー(メニューが上に現れるんで)から画像のマウスカーソルが選んでる場所を選択します。
でもってその下の文字が書いてある部分を選択しておき、
またまたC:\Program Files\SecondLife\fontsを開き、お目当てのフォントファイルを選択。名前を変更とすると、ファイル名をコピーできるのでコピー。リネームしちゃダメですよ^^。
で、再びビュワーに戻って先ほどの所に貼付け。ワタクシは再び馬鹿正直にメニューから張り付けと・・・・・。
で、設定をプログラムに読み込ませるため、ビュワーを終了。再度ログイン。平たく言えば”リログ”です。^^
”I SHALL RETURN”してきたら(素直にログインでいいんですが)、先ほどのスクリプトにオラーッ!!と日本語を書き殴り、ドスコイと保存。
結果を見るために、プリムを作成。コンテンツにブチコミましょう。
以上。
やっぱしEnglishがクールだわんって方は、さっきの小窓を再び出して、デフォルトに戻すボタンを押して、リログすれば元に戻ります。
2008年04月29日
LSL リンデンスクリプトだわな。第2回
さて、不定期にやってるリンデンスクリプト解説ですが、ワタクシのことですから、「ぢゃあまずは”Hello Wolud”を表示してみましょうぉ」とか生ぬるいかったるい馬鹿らしいクソッタレな(言いすぎ)事なんてやりません。実践です。^^
前回、とりあえず新しいスクリプトを作ると、親切ご丁寧にスクリプトが既に書いてあり、defult{ }以外は全て削除して保存でエラーが出るというのをやりました。ついでにホバーテキストについても解説しましたが、
前回参照はコチラ→http://rado.slmame.com/d2008-04-28.html
では今回、もうこれ以上ないスクリプトってなんだ?ってことからはじめしょう。^^
要するに、一番最小のもう馬鹿みたいなスクリプトです。
まずdefult{ }以外を削除した状態、それにstate_entry()以降を削除した部分だけ加えて見ましょう。

コレで保存。不思議に思うでしょうが、エラーは出ません。別にプリムに入れたところでウンともスンとも言いませんが、一応生意気にもこのスクリプトは成功です。ちなみに無能なコイツ等でも、{ }でくくったものを嘘でも良いから書かないと、「それは不正だぜ!」ってデバッガ様のおしかりを受けます。
つまり、無能だがマトモ^^。(それアタシジャねーか?)
なんかここでコイツ等何やってんだ?って思いますよね?
ひょっとしてマジで馬鹿なんじゃ・・・・ まあコイツ等から名誉毀損の起訴状が来る前に、チトめんどクセーけど調べてみます。
今回はワザワザINする事でもないので、直接LSLガイドを見てみます。
PCスタートから以下のように、ファイルを指定して実行をだして、

以下のパスをそのまま入力。

OKでビュワーのフォルダが開くので、以下の.htmlって書いてあるヤツをダブルクリックで開きます。

これがビュワーに出て来るLSLガイドです^^。直接開いたわけですね。

ココでコイツ等を検索。

ちぃーとばかしグダグダ書いてありますが、「リンデンスクリプトって、1つのことだけじゃなく、複数の処理をすることがあるよねぇ。プリムに幾つかのスクリプト仕込んじゃッたっりさー・・。だからまー、混乱しないようにとりあえず”オレの処理は貴様等ボンクラとは違うんだよ!”ってとりあえず宣言させとくんだよ。まー僕らの決まりなんで許して」的なことが書いてあります。^^
で、次のstate_entry()って何よ?ってのは、「あー、まあボクのしてもらいたいことは、次から書いてあるんでヨロシク頼むよ。ワトソンくん。それまでdefult{ }くんの言うとおりにして、暇ならポテチしてていいよ」てな具合らしい。さっき私はstate_entry()の後半を何も書かなかったので、まさにポテチでボヤァ~ンとアクビしながら「なんか暇だなぁ~」って仕事もせずにだらけてた状態になってるわけで、ウンともスンともいわなかったわけです。マトモだが無能。
無能から少しはデキルヤツへ・・。
では、先日からベーター・グリットにいるワタクシの方で、暴れてみたいと思います。^^

SLの生活が長いと完全に無視されるLibraryフォルダ。ホントはこのフォルダ、スンゴク有益なんですが、宣伝が行き届かないのと余りに控え目な性格で、いつもションボリしています^^。今回は大活躍。
起きろよ!オラッ!仕事だ!

objectフォルダを開いて、リンデンズが作った粋なカートをREZします。

それを編集。ココのフォルダにあるものは、自由に改造が許されています。Libraryフォルダからは削除できませんが、REZしてTAKEすると、自分の持ち物にはいるので削除しても問題なし。さすがは太っ腹なリンデンズ。

コンテンツを見ると、なにやらスクリプトと説明らしきノートが。

中身確認したら、バラシます。^^

バラシながらコンテンツを見て、中身が何もなきゃ全部削除です。

最後は板っきれ1枚になるので、コンテンツを見ると、ココにスクリプトがあるのがわかります。


ついでだから乗ってみます。

当然ですが、運転できます。^^ ハタから見てると変人です。
そしてこの板っきれの中から、スクリプトだけを、自分の持ち物にコピーします。

板は用がないので削除。バイバーイ^^。
で、持ち物に移したスクリプトを開きます。

気が狂いそうなコードがドバドバ書いてありますが、深呼吸してゆっくり見ていくと、先ほどのヤツがちゃっかり鎮座しているのがわかります。

コレを、state_entry(){ }の連中だけ中身ごとコピー。

先ほどの無能スクリプトの同じ部分に貼付けます。

まあ、ちったあ有能にしてやったわけ。これでポテチともしばしお別れです。
保存します。

デバッガ様は大満足。

とりあえず試してみましょう。プリムを作って、コンテンツにブッコミます。(お下品)

パイメニューを見ると、”RIDE”と出ています。

ついでなんで乗って見ます。

動きはしませんが、移動コントロールを動かすと、正面を向いてピタッと静止します。
つまり引き抜いた部分は、こういう部分だったとわかります。
ノートカードを新しく作ってみます。

ノートに先ほど引き抜いたコードをペースト。

ここでよく見ると、似たような単語がいっぱい書いてあるのがわかります。そこで、同じ単語は削除して、リストにしてみます。

まあ、アバターの視点を固定するために、これだけの仕事があるんだとわかりますねぇ。
では、この解説は次回。
不定期にお送りします。^^
前回、とりあえず新しいスクリプトを作ると、親切ご丁寧にスクリプトが既に書いてあり、defult{ }以外は全て削除して保存でエラーが出るというのをやりました。ついでにホバーテキストについても解説しましたが、
前回参照はコチラ→http://rado.slmame.com/d2008-04-28.html
では今回、もうこれ以上ないスクリプトってなんだ?ってことからはじめしょう。^^
要するに、一番最小のもう馬鹿みたいなスクリプトです。
まずdefult{ }以外を削除した状態、それにstate_entry()以降を削除した部分だけ加えて見ましょう。
コレで保存。不思議に思うでしょうが、エラーは出ません。別にプリムに入れたところでウンともスンとも言いませんが、一応生意気にもこのスクリプトは成功です。ちなみに無能なコイツ等でも、{ }でくくったものを嘘でも良いから書かないと、「それは不正だぜ!」ってデバッガ様のおしかりを受けます。
つまり、無能だがマトモ^^。(それアタシジャねーか?)
なんかここでコイツ等何やってんだ?って思いますよね?
今回はワザワザINする事でもないので、直接LSLガイドを見てみます。
PCスタートから以下のように、ファイルを指定して実行をだして、
以下のパスをそのまま入力。
OKでビュワーのフォルダが開くので、以下の.htmlって書いてあるヤツをダブルクリックで開きます。
これがビュワーに出て来るLSLガイドです^^。直接開いたわけですね。
ココでコイツ等を検索。
ちぃーとばかしグダグダ書いてありますが、「リンデンスクリプトって、1つのことだけじゃなく、複数の処理をすることがあるよねぇ。プリムに幾つかのスクリプト仕込んじゃッたっりさー・・。だからまー、混乱しないようにとりあえず”オレの処理は貴様等ボンクラとは違うんだよ!”ってとりあえず宣言させとくんだよ。まー僕らの決まりなんで許して」的なことが書いてあります。^^
で、次のstate_entry()って何よ?ってのは、「あー、まあボクのしてもらいたいことは、次から書いてあるんでヨロシク頼むよ。ワトソンくん。それまでdefult{ }くんの言うとおりにして、暇ならポテチしてていいよ」てな具合らしい。さっき私はstate_entry()の後半を何も書かなかったので、まさにポテチでボヤァ~ンとアクビしながら「なんか暇だなぁ~」って仕事もせずにだらけてた状態になってるわけで、ウンともスンともいわなかったわけです。マトモだが無能。
無能から少しはデキルヤツへ・・。
では、先日からベーター・グリットにいるワタクシの方で、暴れてみたいと思います。^^
SLの生活が長いと完全に無視されるLibraryフォルダ。ホントはこのフォルダ、スンゴク有益なんですが、宣伝が行き届かないのと余りに控え目な性格で、いつもションボリしています^^。今回は大活躍。
起きろよ!オラッ!仕事だ!
objectフォルダを開いて、リンデンズが作った粋なカートをREZします。
それを編集。ココのフォルダにあるものは、自由に改造が許されています。Libraryフォルダからは削除できませんが、REZしてTAKEすると、自分の持ち物にはいるので削除しても問題なし。さすがは太っ腹なリンデンズ。
コンテンツを見ると、なにやらスクリプトと説明らしきノートが。
中身確認したら、バラシます。^^
バラシながらコンテンツを見て、中身が何もなきゃ全部削除です。
最後は板っきれ1枚になるので、コンテンツを見ると、ココにスクリプトがあるのがわかります。
ついでだから乗ってみます。
当然ですが、運転できます。^^ ハタから見てると変人です。
そしてこの板っきれの中から、スクリプトだけを、自分の持ち物にコピーします。
板は用がないので削除。バイバーイ^^。
で、持ち物に移したスクリプトを開きます。
気が狂いそうなコードがドバドバ書いてありますが、深呼吸してゆっくり見ていくと、先ほどのヤツがちゃっかり鎮座しているのがわかります。
コレを、state_entry(){ }の連中だけ中身ごとコピー。
先ほどの無能スクリプトの同じ部分に貼付けます。
まあ、ちったあ有能にしてやったわけ。これでポテチともしばしお別れです。
保存します。
デバッガ様は大満足。
とりあえず試してみましょう。プリムを作って、コンテンツにブッコミます。(お下品)
パイメニューを見ると、”RIDE”と出ています。
ついでなんで乗って見ます。
動きはしませんが、移動コントロールを動かすと、正面を向いてピタッと静止します。
つまり引き抜いた部分は、こういう部分だったとわかります。
ノートカードを新しく作ってみます。
ノートに先ほど引き抜いたコードをペースト。
ここでよく見ると、似たような単語がいっぱい書いてあるのがわかります。そこで、同じ単語は削除して、リストにしてみます。
まあ、アバターの視点を固定するために、これだけの仕事があるんだとわかりますねぇ。
では、この解説は次回。
不定期にお送りします。^^
2008年04月28日
LSL・・つまりリンデンスクリプトデース!
でまあ、もうLSLの初心者向けに、解説。い~え全く難しくないように解説します。
ワタクシがXMLのスキーマを設計(思案してた)頃、まあその時「あ、そうか」と思ったような感じで、偏屈なところから取り組んでると意外と理解は深まる・・そういうモンだったりします。^^
じゃ、早速ベーターグリッドで始めてみましょう。
まずは持ち物を開いて、一番うえの編集から”新しいスクリプトを作成”をクリックします。

名前を適当に変更。どうせ削除しますから、何でも良いです。名前なんてどうとでも^^

で、開くとなにやらいきなり書いてあります。

文字とカッコがいっぱい。この際邪魔なんでひと組のカッコと一文字残して、後は全部選択。
いきなり削除して保存しちゃって下さい^^。


まあイキナリこんなことするひとは私くらいでしょ^^。
当然エラーが出ます。

Syntaxとは構文、つまり文章のことで、()の数字はその場所。要するに3行目がオカシイ。
3行目はカッコ "}" ですよね。
要するにこういうのをデバックというんですが、プログラムにおかしな所があると実行する前に、読込みを止めて「ナントカしろよ」と教えてくれるわけです。エライですな。感心、カンシン。
しかし、元通りのするのはつまらないので、削除した一部だけ戻してやります。再度保存。

今時、ワザワザ消すよりも無効にしてやりゃいいので、"/" を頭につけて「コレはアタイが勝手に書いたコメントだから無視シナー」と教えてやります。「あっそ」てなかんじで、今度はエラーが出ないで、「編集は完了したよ!」とか、デバッガはホザいてくれます。


リンデンスクリプトは、オブジェクトに放り込まないと結果がよくわからないので、ホッとする間もなくプリムに放り込みます^^。


放り込むとなにやらチャットに文字が・・。
て見つめてると消えていくので、チャットウィンドウを開くと、スクリプトに書いてある一部がチャットに表示されています。

「なんだ。オブジェクトが喋っていやがったぜ」
しかし後は”シーン”・・。
ここで、ちょっと似たような構文、つまりそっくりなスクリプトとして「ホバー・テキスト」というのがあります。

並べるとよく似ています。

コレを別のプリムにブチ込み・・じゃなかった・・放り込みましょう^^;

ま、想像通りつまんないスクリプトです。
2つのスクリプトを比べると、真ん中の1行だけ違っています。


カッコの内容は、一部がプリムの上に表示している文字だとわかりますから、その他を調べましょう。
あ~~~かったるい・・。
スクリプトガイドなんて開いてみたりして、”llSetText" を検索。

英文ですが、結構シンプルに書いてあります。

オブジェクトの上に文字を出すんだよ。ベクトルカラーとアルファ(透明度)を指定してね♪
てな感じでしょうか。VECTOR COLORとはRGBカラーなんですが、コレは255までの数字を使って、赤、青、緑(三原色ではない)表わすんですが、シンプルにするためか、255で数字を割ってそれを使ってます。(めんどくせぇ)。
アタしゃー計算が嫌いなんで、ソフト使わせて頂くわ。
カラーの所をスライドするだけで、数字がわかるお手軽RGBソフトよ♪

ここから得た数字を計算機で割る・・・・。
まあどうせ小数点なんぞ「なんだそりゃ?」って感じ悪く無視するから、ししゃごにゅー。てか、それすらもメンドくさいんで、小数点第2以下全部切り捨てじゃ!!!

llSetText("なんか文字をいれて”, <赤,緑,青>, 透明度)
となります。透明度は1が一番ハッキリしてるんで、ひねくれて0.7とかにしてやります。^^
で保存。「OKよ♪」ってなったら、プリムにブチ込む。(お下品)

案の定ボケェーっとしたホバー・テキストの完成。
で、ここで素朴な疑問が。そうですよね~テキストの高さ。じゃ~またステートメントからって、そこはワタクシ。そんな頭良くネーはずだから、スクリプト騙しちゃれってやつです^^。
””で文字列を囲ってますから、その中に改行をズラーーーーっと入れてしまうんです。””で囲まれてさえいれば、アホなLSLは「やけに文字の編成がながいなぁ」って、特にエラーは出しません。^^
文字の最後にENTERをガバガバいれます。

で、保存。プリムにブチ込みます。(つくづくお下品)ドヒャー。

文字が文字通り”フロート”してます^^。
ちなみに文字の前や後ろにスペースをぶちかますと、左右に文字が移動して表示されます。
複雑な処理系の場合、必ずベーター・グリッドでのテストはした方が良いです。
いずれはメインに適用されていくので、まあお気をつけて。
では気が向いたら次回。
ワタクシがXMLのスキーマを設計(思案してた)頃、まあその時「あ、そうか」と思ったような感じで、偏屈なところから取り組んでると意外と理解は深まる・・そういうモンだったりします。^^
じゃ、早速ベーターグリッドで始めてみましょう。
まずは持ち物を開いて、一番うえの編集から”新しいスクリプトを作成”をクリックします。
名前を適当に変更。どうせ削除しますから、何でも良いです。名前なんてどうとでも^^
で、開くとなにやらいきなり書いてあります。
文字とカッコがいっぱい。この際邪魔なんでひと組のカッコと一文字残して、後は全部選択。
いきなり削除して保存しちゃって下さい^^。
まあイキナリこんなことするひとは私くらいでしょ^^。
当然エラーが出ます。
Syntaxとは構文、つまり文章のことで、()の数字はその場所。要するに3行目がオカシイ。
3行目はカッコ "}" ですよね。
要するにこういうのをデバックというんですが、プログラムにおかしな所があると実行する前に、読込みを止めて「ナントカしろよ」と教えてくれるわけです。エライですな。感心、カンシン。
しかし、元通りのするのはつまらないので、削除した一部だけ戻してやります。再度保存。
今時、ワザワザ消すよりも無効にしてやりゃいいので、"/" を頭につけて「コレはアタイが勝手に書いたコメントだから無視シナー」と教えてやります。「あっそ」てなかんじで、今度はエラーが出ないで、「編集は完了したよ!」とか、デバッガはホザいてくれます。
リンデンスクリプトは、オブジェクトに放り込まないと結果がよくわからないので、ホッとする間もなくプリムに放り込みます^^。
放り込むとなにやらチャットに文字が・・。
て見つめてると消えていくので、チャットウィンドウを開くと、スクリプトに書いてある一部がチャットに表示されています。
「なんだ。オブジェクトが喋っていやがったぜ」
しかし後は”シーン”・・。
ここで、ちょっと似たような構文、つまりそっくりなスクリプトとして「ホバー・テキスト」というのがあります。
並べるとよく似ています。
コレを別のプリムにブチ込み・・じゃなかった・・放り込みましょう^^;
ま、想像通りつまんないスクリプトです。
2つのスクリプトを比べると、真ん中の1行だけ違っています。
カッコの内容は、一部がプリムの上に表示している文字だとわかりますから、その他を調べましょう。
あ~~~かったるい・・。
スクリプトガイドなんて開いてみたりして、”llSetText" を検索。
英文ですが、結構シンプルに書いてあります。
オブジェクトの上に文字を出すんだよ。ベクトルカラーとアルファ(透明度)を指定してね♪
てな感じでしょうか。VECTOR COLORとはRGBカラーなんですが、コレは255までの数字を使って、赤、青、緑(三原色ではない)表わすんですが、シンプルにするためか、255で数字を割ってそれを使ってます。(めんどくせぇ)。
アタしゃー計算が嫌いなんで、ソフト使わせて頂くわ。
カラーの所をスライドするだけで、数字がわかるお手軽RGBソフトよ♪
ここから得た数字を計算機で割る・・・・。
まあどうせ小数点なんぞ「なんだそりゃ?」って感じ悪く無視するから、ししゃごにゅー。てか、それすらもメンドくさいんで、小数点第2以下全部切り捨てじゃ!!!
llSetText("なんか文字をいれて”, <赤,緑,青>, 透明度)
となります。透明度は1が一番ハッキリしてるんで、ひねくれて0.7とかにしてやります。^^
で保存。「OKよ♪」ってなったら、プリムにブチ込む。(お下品)
案の定ボケェーっとしたホバー・テキストの完成。
で、ここで素朴な疑問が。そうですよね~テキストの高さ。じゃ~またステートメントからって、そこはワタクシ。そんな頭良くネーはずだから、スクリプト騙しちゃれってやつです^^。
””で文字列を囲ってますから、その中に改行をズラーーーーっと入れてしまうんです。””で囲まれてさえいれば、アホなLSLは「やけに文字の編成がながいなぁ」って、特にエラーは出しません。^^
文字の最後にENTERをガバガバいれます。
で、保存。プリムにブチ込みます。(つくづくお下品)ドヒャー。
文字が文字通り”フロート”してます^^。
ちなみに文字の前や後ろにスペースをぶちかますと、左右に文字が移動して表示されます。
複雑な処理系の場合、必ずベーター・グリッドでのテストはした方が良いです。
いずれはメインに適用されていくので、まあお気をつけて。
では気が向いたら次回。


