ソラマメブログ
プロフィール
you Xiao
芸名:黒井悠
...
SL Picks
QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 0人
オーナーへメッセージ

  

Posted by at

2011年03月21日

LSLCON2010始まりました


さりげなくLSLCON2010が始まりました。
会場は、Zig Marchさんに作ってもらいました。
開催直前の突然のお願いでしたが、楽しく過ごせる会場になりました。
ありがたやー

今回、自分でも3点、展示出してます。
ひとつのブースにまとめて置いてるんで
かなりぎゅうぎゅうしてます。
よかったら見てみてください。
特に目新しいことはしてないので、地味ですけど。
→ 公式: http://lsl-con.org/2010/

会場で会った人が、「スクリプトは詳しくないのですが...」って言ってらしたんですが
スクリプトに詳しくなくても全く問題ないです!
普通にまわって、普通にいじってもらえれば、楽しめると思います。
スクリプトに詳しい人は、詳しい説明を読んだり
仕組を想像してもらえれば、+αの楽しみがありますが。

とりあえず、今日はこんな感想で。
・かたぬきで星型に挑戦して、3位とった!

・植物育ってる!

・ジェットコースター、ぐるぐるしすぎ!


今日は、こすげさんのアイテムデモもありました。

外部サーバーを使ったHUDの実装でした。
プリムにメディアはってるんで、Viewer2でないとダメなんですが
こういう可能性が見えるデモは楽しいです。


私は、明日と来週の土曜日の朝11時からアイテムデモやります。
時間が時間なので、人も少なくていい感じです。
展示見て、興味あるなぁって人は、どうぞ。

期間中、ひさびさのぬるいOHでもやろうかなぁ  


Posted by you Xiao at 00:30Comments(0)LSL

2010年09月13日

LSL Portalで本気で調べてみた(おしまい)

ということで、ラスト3つのキーワードが残ってますが
ここまでとします。

調べてた元はコレですよ、コレ
-----------------------------
default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number)
  {
    llSay(0, "Touched.");
  }
}
-----------------------------
ほんの10行程度調べるのに
こんだけ長くなるとは夢にも思わず
 ※ほんとに調べるとなると、もっとかかると思いますけど...

でも、私の場合、ほんとに知らないものを調べるなら、こんな感じです。
なんというか、
辞書見てて、エロワードからエロワードにつながっていくような
見るところ見るところに、わからないこと・気になることがちりばめられてます

LSLをちゃんと書こうと思った頃
最初にやったのは、Portalの全関数・イベントに目を通すってことでした。

こんな関数あるのかーとか、とりあえず、記憶にひっかかるように。
入門のサイトとかもなかったし、他の言語と違って
リファレンス本とかもない状態だったので...

人に聞くのは、簡単で早いんですが
忘れるのも早いです、身につかないというか。
調べても、やっぱりわからないことは残ります。
今回の16進数のとこなんかも、???ってなりそうです。
でも、調べまくって、その上で人に聞くと、理解度が全然違います。

今回は、あえて入門的なことを書いてくれているサイトは避けました。
調べる時には、そういうところを見るのもかなり有効です。

久々にportalをじっくり見てみましたが
なかなかおもしろかったです。
調べる楽しさみたいなのはあるんじゃないでしょうか。
書き始めから、アップまで本気で半日つかったので
もう一回やろうとは思いませんが...

※ちなみに、私の英語は、高校でとまってます。
 機械翻訳と電子辞書、ぐーぐるさんがないと全然ダメです...

ってことで、だらだらと続く文章につきあってくれた人、ありがとうございました。
  


Posted by you Xiao at 00:39Comments(0)LSL

2010年09月13日

LSL Portalで本気で調べてみた(その10)

さて、最後のllSayです!

...なげーよ
じゃあ、もうおなじみのやり方で
http://wiki.secondlife.com/wiki/LlSay
http://wiki.secondlife.com/wiki/LlSay/ja
で、見ると
「関数:llSay(integer channel,string msg);」
関数っすか
関数のところを見てみると
http://wiki.secondlife.com/wiki/Category:LSL_Functions/ja
LSLでは全てのデータ型(の値はそれ自身で)は不変であり(すなわち何らかの副作用で変化することはなく)、
言い換えると、変数の値は上書きによってのみ変更可能です。
変数の値を間接的に変更する方法は無く、変更する唯一の方法は代入演算子(=,+=,-=,*=,/=,%=,++,--)を使って直接操作することです。
*ビルトイン関数が、引数として渡された変数を書き換えることはありません。
*ユーザ定義関数の関数スコープ内で引数の値を変更したとしても、それが呼び出し元の変数の書き換えにつながることはありません。


ぬー?
なんか「変数」の説明してる気がする
原文も似たようなもんだなぁ
http://wiki.secondlife.com/wiki/Category:LSL_Functions
下の2行見ると、関数が変数をどう扱うかって文章みたいですのう
これは、また、なんか長くなる気がしてきた

この文章で、一般的な言葉じゃないのが、このあたりかなぁ
「関数」「代入演算子」「ビルトイン関数」「ユーザ定義関数」「引数」

「関数とは」でぐぐってみる
最初にくるのがコレか
http://e-words.jp/w/E996A2E695B0.html
なんかいいのくるなぁ
この説明に「引数」でてくるな
関数に渡すデータのことを引数と呼ぶと。
「データ(引数)を渡すとなんかしてくれる処理のカタマリ」と。
あー、それで、渡したデータはどうなるのかっていうのがさっきの文章なわけですか。

じゃあ、llSayだと、この2つが引数というデータで
integer channel
string msg
これを渡すと、こういう処理をしてくれると。
整数で指定されたchannelのチャネル上で、文字列で指定されたmsgを発言します。
これだと
llSay(integer channel,string msg);
こうなんだから
llSay(0,"Hello,Avatar!");
integer型とstring型の値を直接指定できるよってことか

integer型とstring型ということなら
integeri=0;
strings="Hello,Avatar!";
llSay(i,s);
って書いてもいいはず。
さっきの「変化がどうこう」っていうのは、
このiとかsとかが、関数が実行された後も、変わりませんよってことなわけかー

この「整数で指定されたchannelのチャネル上で」の
指定されたchannelのチャネル上でって
前の「channel」は、変数の名前のことか、
「チャネルのチャネルって」何かと思った。

こうなってれば
「llSay(integer cha,string msg);」
この「整数で指定されたchaのチャネル上で」だね

で、チャネルってナニ??
「チャネルとは」っと
データの通り道、チャンネル...チャンネル??
あれか、パーティ/パーリィみたいなもんか
チャネルっていうと、チャネラーとかモヤモヤしてくるので
私は心の中で、チャンネルと呼ぼう

だから、アレだ
いろんなデータのchannelがあって、
llSayの1つ目の引数で、それを指定するってことなんだな

よく見てみるとllSayのところに、チャネル定数とか書いてある
定数は、さっきやったからわかる。
チャネル用の定数があるんだよということね
DEBUG_CHANNEL 0x7FFFFFFF
   スクリプトのデバッグメッセージとエラーメッセージを受け取るチャットチャネル
PUBLIC_CHANNEL 0x0
   近くのユーザ全員にブロードキャストされるチャットチャネル

0x0っていうのは、ゼロのことなんだから
llSay(0,"Hello,Avatar!");で、使ってるのと同じか
近くのユーザ全員にブロードキャストされるチャットチャネル
ブロードキャスト...?
なんかわからんけど
実際の動き見てると、アバターに送られるチャンネルって理解でいいのかな
よし、わかった感じ

で、あとはこの3つ...
「代入演算子」「ビルトイン関数」「ユーザ定義関数」
  


Posted by you Xiao at 00:05Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その9)

さてさて、さっきの変数のページをもうちょっと見てみましょう
http://wiki.secondlife.com/wiki/LSL_Variables/ja
「変数のスコープ」
変数名は最初に現れたところからその変数が含まれるスコープまで、
 またグローバル変数ではスクリプトの最後までスコープを持ちます。
 同じ名前を同じスコープの中で二度定義することはできませんが、
 内側のスコープで同じ名前を再定義することはできて、
 再定義された名前は外側のスコープの同じ名前を隠蔽します。
 重ねますが、動作的にはCやJavaにきわめて似通っています。
 一方で、次のコードはコンパイルして実行可能です。


って、「スコープ」そのものの意味がわかんねぇ!
スコープドッグしか、思いうかばねぇ
原文どーなってんだ、ちくしょうめ
(この時点で、開始から6時間くらい経過。結構気がたってる)
http://wiki.secondlife.com/wiki/LSL_Variables
「A variable can be limited to only certain parts of the script, depending upon where it is placed.
  This placement, and the areas where it is enabled is called the "scope."
  Variables that apply to the entire script are called global variables: they are defined at the top of the script above the state declarations.
  Variables that are within functions or within nested areas are considered local variables.

 The variable name is in scope from the point it first appears to the end of the scope it is in,
  or the end of the script for global variables.
  A name may not be defined twice in the same scope, but a name may be redefined in an inner scope,
  and it hides the same name at outer scope. Again, the semantics are very similar to C and Java.
  That is to say, the following code will compile and run. 」

?あれ?

ってなんか長くないです?
日本語に対して、原文が妙になげーんですけど

ちょっと訳してみよう...

変数は、宣言した場所によって、特定の範囲だけに限定できます」?

あ、これ、前半は「スコープ」についての説明なんじゃないの?

その範囲は、"スコープ"といいます

ってやっぱり!

スクリプト全てに適用される変数はグローバル変数と呼ばれます
それは、スクリプトの最初からstate宣言の間に定義します

defaultより上に書いたら、スクリプト全体の変数(グローバル変数)
それ以外の場所だと、範囲限定の変数だということね
この範囲のことをスコープって言うと。

で、後半が...
変数の名前が、最初に宣言したところから終わりまでがスコープです
 グローバル変数の場合は、スクリプトの終わりまで
」?

あ、これ、日本語訳のところだ

1つの名前は、同じスコープで二度使うことはできません
でも、中のスコープで再度定義されることはできます

これは、こういうことか

できない:グローバル変数としてdefaultの外で定義した名前を
       同じグローバル変数として、もう一回定義

できる:グローバル変数としてdefaultの外で定義した名前を
       defaultの中で、もう一回定義

そいでもって、そのときは、外の名前は見えなくなるよ

中で再定義すると、外の変数は使えないよってことね

まあ、同じ名前だから、「外の」とか「中の」とか区別できないしね

名前のところでも言ったけど、マジ、Cとかjavaと似てるぜ
次のsampleは、コンパイルして実行できるよーん
---------------------------------------
integer i = 50;

default
{
  state_entry()
  {
    string i = "Hello there!"; //This WILL compile just fine, unlike in Java.
    llOwnerSay(i); //Will say "Hello there!". There is no way to get the global variable i.
  }
}
---------------------------------------
グローバル変数として、integer型のiを宣言して、50って値をいれて
中では、string型のiに"Hello there!"を入れる
で、使ってみると、string型の方を使ってることになってるよってことかー
最初に宣言した方が有効とかじゃなくて
どこに宣言したかが大事なんじゃな
string型の方のスコープは、
state_entryの{}の間だけってことね
ってことは、別のイベントの中だと、integer型のグローバル変数が使えるのかな  


Posted by you Xiao at 22:36Comments(2)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その8)

ということで、integer型は、
-2,147,483,648 ~ +2,147,483,647の整数だということがわかりました!

わかりましたけど、ナニコレ
-------------------------

以下のすべてはintegerです。
integer firstInt = 5512623;
integer secondInt = ACTIVE;
integer thridInt = 0x61EC1A;
integer fourthInt = -160693;
-------------------------
firstIntとfourthIntは、わかるよ
なんで=なのかはわかんないけど、
integer型で宣言したfirstIntに、5512623を入れてるんだよね
thridIntも、16進数でも書けるよってことだし、わかる
これはナニ?
----
integer secondInt = ACTIVE;
----
ACTIVEは、文字でないの?
SEARCH&...
http://wiki.secondlife.com/wiki/ACTIVE
Constant:integer ACTIVE = 0x2;」?
http://wiki.secondlife.com/wiki/ACTIVE/ja
定数:integer ACTIVE = 0x2;
「定数」ときた!

って、定数ってどっかで見た気が

これだ!
http://wiki.secondlife.com/wiki/Category:LSL_%E5%AE%9A%E6%95%B0

Note : まだ全ての定数のページが作成されていないため、これはけっして完全な定数の一覧ではありません。
原文「Note: Not all the constants have had pages created yet so this is by no means a complete list of constants. 」
定数の説明かと思った!

ってことは、また、当たり前の言葉なのか...

http://ja.wikipedia.org/wiki/%E5%AE%9A%E6%95%B0
πみたいな感じか!
LSLだと、さっきの一覧みたいなのがあるんだな...

-----
「integer total_number」
これを気にしたばかりに、えらいことになってました。
たかが2つの単語を調べるだけで、えらいしんどいです。
ほんとにみんなこんなふうに調べてるのかなぁ
  


Posted by you Xiao at 22:19Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その7)

で、integerの続き

2)範囲は、0x00000000から0xFFFFFFFFの32bitの値です。
ふんふん
integer型の範囲は、0x00000000~0xFFFFFFFFだと。

で、"0x"て...
SEARCH&GOもダメだな
ぐぐってみましょう
ぐぐる時の技に「とは」をつけるというのは、わりかし有名です
「0xとは」で見てみると
これは、「これは16進数ですよ」って印だとわかります。
ここまでくれば、16進数もぐぐってみよう!ってもんです。(ぐぐりませんけど)

よし、そうか、integerは、0~4294967295の範囲の整数ってことか!


って、待て待て待て、ちょっと待てと、最初に見てたここには、
http://wiki.secondlife.com/wiki/Integer
The integer data type is a signed 32 bit value between -2,147,483,648 and +2,147,483,647
(that is 0x80000000 to 0x7FFFFFFF in hex)
」ってあったさ!
なんか違うじゃんかよー
日本語のページだと
http://wiki.secondlife.com/wiki/Integer/ja
integerデータ型は-2,147,483,648 ~ +2,147,483,647
(16進数で0x00000000 ~ 0xFFFFFFFF)の範囲の符号付きの32ビットの値です。


って、あれ?英語と日本語のページ
範囲の数値は「-2,147,483,648 ~ +2,147,483,647」で一緒なのに
16進数のがなんか違う...

もうナニがなんだか...

Windowsの電卓で、見てみます
まず、16進数→10進数
0x00000000→0
0x80000000→2147483648
0x7FFFFFFF→2147483647

「-2,147,483,648」が出てきません...
10進数→16進数で見ると
-2,147,483,648→FFFFFFFF80000000
ぬー、なんかこれがヘン
負の数が正しく16進数でかかれてないのかなー
「16進数 負の数」でググってみた

----
ということで、この日本語版と英語版の違いは、
このあたりは、本筋とはあまり関係ないですので
ここまでとしておきます。

この部分、16進数とかわけわからん!
ってなる上に、表記が揺れているので
大混乱になるかもしれません。

16進数についての理解を深めると
「0x00000000から0xFFFFFFFFの32bit」で
符号のついた整数は
-2,147,483,648 ~ +2,147,483,647となることがわかります。  


Posted by you Xiao at 22:14Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その6)

さて、次は、順序でいうとllSayを調べるつもりでしたけど
「integer total_number」がちょっと気になります
integer total_numberって、総数が入ってるのはわかりましたよ
わかりましたけど、そもそもコレ何?って話です。

integerって、直訳すると「整数」だし
「ああ、総数って、整数ですよってことか」ってのもわかります。
困ったときは、SEARCH&GOですよ

やっぱりあるよねー
http://wiki.secondlife.com/wiki/Integer
ふと、上のところを見ると
「Second Life Wiki > LSL Portal > LSL Integer (Redirected from Integer)」とかあります


PortalからいきなりIntegerのとこにつながってるんだ
ってことは、最初のページにintegerってあるんかな

って、あるな...

型のひとつってことか
で、型にリンクがあるってことは
そこに何かが書いてあるはず!
http://wiki.secondlife.com/wiki/Category:LSL_%E5%9E%8B


データ型はデータの型またはフォーマットの定義です。
原文「A data type is a definition of the type or format of data」
※このorって「すなわち」の方がいいのかな
つまり、さっきのinteger total_numberっていうのは
このtotal_numberは、整数なんですよって定義してるってことか。

それから、この文は...
integerの例だと、0x00000000から0xFFFFFFFFの範囲にある全数値の要素を、
 32bit用のintegerのみ含むべきdataの種類(あるいはタイプ)として有効であろう変数で定義します。

原文「An integer for example,
       defines that the variable which will hold this kind (or 'type') of data shall contain only integers,
       which for 32-bit are whole number values in the range of 0x00000000 to 0xFFFFFFFF. 」
こんな感じですか
integerの例
 1)整数型の変数の定義です。
 2)範囲は、0x00000000から0xFFFFFFFFの32bitの値です。

前に進めないのはわかってるんだけど、
わからない言葉がゾクゾクと...

「1)整数型の変数の定義です。」

「変数」という、またや耳慣れぬ言葉が出てきます
これも、SEAR・・・

 http://wiki.secondlife.com/wiki/LSL_Variables/ja
 「変数(variable)は数値や文字列などの情報を保持しておく場所です。
  変数は名前、型、値を持ちます。
  名前は文字で始まり、命名規則はCやJavaと同じです。
  大文字と小文字は区別されます。Xはxと同じではありません。
  LSLは著しく静的な型を持つ言語です。
  これは、変数が型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味します。
  しかしながら,list変数は他の型の値を0個以上持つことができます。


integer total_numberっていうのは
「整数をいれておく場所」なんですね
で、total_numberというのは、その場所の名前。

名前は、文字で始まればよくて、大文字と小文字は別
この2つは、別の変数として扱うってことですね
 integer total_number
 integer TOTAL_NUMBER
名前のつけ方のルールは、Cとかjavaと一緒
...一緒って言われてもなぁ。知ってる前提なのか、それとも「詳しくはそっち見てね」ってことなのか

で、「著しく静的な型」?
変数が型を宣言する必要があり、変数は型に一致する値しか持つことができないことを意味します。
この2つを合わせると、
変数を宣言する時に指定した型しか入れられないよってことで
 integer total_number
って書いたら、そこに他の型、文字とかは入れられません
静的というのは、入れられる型が変化したりしませんよ(動的の反対)と。
ただし、listという型は、他の型の値が入れられますと。
このlistは、ちょっと変わったものみたいなので、後でじっくりみる必要がありそう。

----------------
「理解がよすぎる!
 真の初心者だったら、こんなにすんなりいかねーよ!」と
不満の声がでそうです。
  


Posted by you Xiao at 21:57Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その5)

と、なんか認識を少し深めた感じになりつつ
state_entryを見てみます。

stateが遷移するとき、もしくはスクリプトの起動時に発生します。
うわぁ、しんぷるー
でも、defaultのところで、stateが切り替わるのとかはわかったので
これは、わかります、ええ、わかります。

「発生します」「発生しません」のとことが、今ひとつアレだな...
キューってなんだ...
でも、まあ、どんなときにstate_entryになるのかは
わかった気がする。

touch_startは...
エージェントがタスクのクリックを開始したときに発生します。
integer num_detected 最後のクロック周期に検出されたエージェントの数


「エージェント」??
私がタッチした時に、動いたんだから
エージェントってのは、アバターのことなんかな
クリックは、タッチなので
タッチしたら動くよってことなんだろうけど
タスクのクリック」ってなんだ...
とりあえず、おーよそ、わかったことにする。

わかったけど、これがちょっと...
integer num_detected 最後のクロック周期に検出されたエージェントの数
そもそも、お題のの
「touch_start(integer total_number)」と
「touch_start(integer num_detected)」って、違うしなぁ

直訳すると、
total_numberは、「総数」
num_detectedも、「検出された数」
「検出されたエージェントの数」ってことで、同じ内容っぽいから気にしなくてもいいのかな

次は、「最後のクロック周期」ってのやつですが
原文では、どーなってんだ
「Number of agents detected touching during the last clockcycle」
このthe lastは、「最新の」みたいな感じに訳す方がいいんでないかなぁ
「クロック周期」つーのは、ぐぐってみると
「周期的な信号のことをいう」ようなので
LSLの処理では
「誰かタッチしたー?」って一定期間ごとにチェックしてて
誰かがタッチしたら、その総数が入ってる、
んでもって、その最新の数がイベントが起こるたびに更新されるってことでいいのかな

「クロック周期」なので、コンピュータ的な速度で、チョー短いんでしょうね

さて、この2つのイベントは、なんとなくわかりましたよ
「最初に発生するやつ」と「タッチされた時に発生するやつ」

-----
さて、ちょっと一息
一言でいうと、さっきの2つなんですけど
こんだけのことを調べるのに、どんだけかかるんだ...

で、このあたりのことを調べた人だと
なんとなく納得できることがあると思います
それは、
  スクリプトに詳しい人に、『「state_entry」っていつ実行されるの?』って聞くと
  妙に歯切れが悪い答え方をする理由
です。
「プログラムの最初」と言っても、stateとかのことを考えると
言い切ってしまっていいのかどうか
  でも、この人、state自体知ってるのかなぁ
  でも、stateの説明しはじめると混乱しそうだしなぁ
  でも、「最初」って言い切っても、厳密には違うしなぁ
  うーん、うーん
  「と、とりあえず、プログラムの最初と考えていいと思うよ
こういう思考なんじゃないでしょうかね
少なくとも、私はそーです。

  


Posted by you Xiao at 21:47Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その4)

で、次はstate_entry()
「"state"_entry」ってことは、さっきのstateに関連するモノなのかな
とりあえず、よくわからんのでSEARCH&GOで。
http://wiki.secondlife.com/wiki/State_entry
「Event: state_entry( ){ ; }」とか書いてある

Eventって、なんですか...
とりあえず、Eventのところのリンクをふんでみる
http://wiki.secondlife.com/wiki/Category:LSL_Events
なんかアレなので、日本語へ
http://wiki.secondlife.com/wiki/Category:LSL_Events/ja
どうもコレは、「イベント」というものについて
総括的に書いてあるところのよーだ。

イベントのステート内部でのLSLの働きは~
いかん、横に長いとぐっと理解力が落ちるな...

ということで、改行しつつ見てみる
  1)state内でのイベントは、モノが動いたり、ぶつかったり、もしくは、タイマーとかのことです
  2)イベントが発生したからといって、実行中のイベントが中断されることはないのです。FIFOですので。
  3)stateがかわると、イベントキューはクリアされるよ。で、Listenもナシになりますです。
  4)繰り返しのイベントも、同様、必要なら自分で設定してね

...どうもこれは、「イベントとは何か」ではなく
LSLでのイベント」について書いてある気が...
1)を見ると、要するに、「何かのデキゴトが起こること」がイベント?
つーか、よく考えてみるとイベントって、「本日のメーンエベントー!」とかのイベントじゃねーすか
って、「イベント」ってナニ?ってつっこんで考えると、催し??
「イベント」でググると、なんかイミフだったので
「イベント プログラム」でググって見たところ、
「なんかのきっかけで、何かがおこる」
で、「なんかのきっかけ」がイベントみたいな感じ。
たぶん、そーいうことなんだろう

2)以降は、なんかわかるよーな、わからんよーな...FIFOってなんだFIFOって
※3)と4)は、同じようなことがstateのところに書いてあった気がする

でも、今回、このページを見た目的は、イベントって何かってことなので
もう、コレでわかった気になります
  ・state_entryっていうのは、イベント
  ・イベントは、何かをするきっかけ
きっとやっていくうちに、2)以降も実感できる日がくるさ、きっと

とりあえず、イベントだとわかったところで
どんなイベントがあるのか、ちらっと見てみる
まあ、「At_rot_target/ja」とか、全然意味わかりませんけど
「/ja」は、日本語ページへのリンクなのだなとはわかりますが。
MoneyとかEmailとか、わかる単語もあります。
そういうのもきっかけになるのか...
つーか、Touch_startも書いてある
ってことは、こうか
-----------------------------
default  ←state
{
  state_entry()  ←イベント
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number)  ←イベント
  {
    llSay(0, "Touched.");
  }
}
-----------------------------
なんかわからんけど、わかった感じがするので次へ



-----
実際のところ、
「時がくればわかる」とか
「いつか歯車がカチっとくる」というのはあります  


Posted by you Xiao at 21:25Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その3)

さて、"default"ですが、
ざっとportalを眺めてみると...

どこで見ればいいんだ...

ということで、左側のSEARCHを使ってみます



"default"と入力して、なんとなくGOを押してみました
  ※実は、このSEARCHって使ったことなかったんですけど
   GOとSearchってあったんですね

ずばっとページが切り替わります
http://wiki.secondlife.com/wiki/Default#default_.7B_events_.7D
検索結果が、ズラズラでてくるのかと思ってたんだけどな
stateのページが出てくるってことは、defaultというのは、stateなのか
stateって、ナニ?
とりあえず、日本語訳の方を主に使ってみる方針でイキマス。

左下の「In other languages」に、きっちり「日本語」というリンクがありました。



訳してくれてるんだなぁ
http://wiki.secondlife.com/wiki/State/ja
いきなり「状態」ときた。
LSLでは、ほとんどのスクリプトは何らかの入力を受け取るか~」のところを読んでみたんですが
私には、すげー難しいです。
これ、みんなサクサク理解できるん??
文ごとに改行して、がんばってみます。
  1)スクリプトは、何かの変化や入力を待っています。
  2)いつでも、いずれかのstateにいて、指定された変化や入力に反応します。
  3)スクリプトには、複数のstateを書くことができ、stateごとの処理を書くことができます。
  4)主となるstateは、default stateです。
  5)スクリプトは、コンパイル・リセット・リロードされた時、まずdefault stateになります。
  6)default stateより下に、別のstateを書くことができます。

なんかわかるようなわからんような...
今回調べてたdefaultは、stateのひとつなのか
1)と2)は、へーって思っただけです。
「いずれか」ってことは、defaultみたいなのがいっぱいあるってことかな
と、思ってたら3)で複数かけるよと。
で、5)をみると、まず、defaultになると書いてある
コンパイルとリセットは、保存ボタンとリセットボタンとしても
リロードが、よくわかんねぇなと。

実例を見ればわかるんじゃないかと、サンプル部分を見てみたり。

ああ、複数っていうのは、ほんとに複数あるんだ...
default以外のstateだと、「state ○○」みたいな書き方なのか
で、移動するときは、行きたいとこを「state ○○」みたいに書くのか
このときは、defaultに行くときも「state default」って書くんだ

ただ、これ、state複数あってもナニに使うんだろ...って感じです。
まあ、defaultがなんとなくわかったので、
注意点とかは、複数書くようになったら見ようと心に決めました

ってことで次へ
なんかdefaultだけで異常に疲れるな...
  


Posted by you Xiao at 20:37Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その2)

さて、LSL Portal(えるえすえる ぽーたる)ですけど、
portalは、英語で作成されています。
http://wiki.secondlife.com/wiki/LSL_Portal
有志によって日本語訳も進められています。
http://wiki.secondlife.com/wiki/LSL_Portal/ja

これをぐいぐい使って、調べてみようと思います
-----------------------------
default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number)
  {
    llSay(0, "Touched.");
  }
}
-----------------------------
これを作った時点で
  Object:"Hello, Avatar!"
タッチしてみると
  Object:"Touched."

なんか言わしてんだな
そーいうスクリプトなんだな

これを元にいろいろ調べてみます
キーワードは、これだけです
  default
  state_entry()
  touch_start(integer total_number)
  llSay(0,"XXXXX");
意外と少ないです。

じゃあ、まずはdefaultから...

-----
久しぶりにこのblogを書いてるわけですが
「沢 尻エリカ 問題の露天風呂盗 撮動 画【全編40分】」とかコメント入っててヘコみますな
  


Posted by you Xiao at 20:02Comments(0)LSL

2010年09月12日

LSL Portalで本気で調べてみた(その1)

今月の8日(土)からデジアカでLSL講座が始まりました。
講師は、ぺんぎんの人です。
私とametaさんは、講座中の細かい質問に答えるサポーター役で参加しています。

デジアカの講座は、事前に申し込みをして参加するようになっています。
継続した講座を固定の人が受けることで、講座の威力が増す感じです。

ということで、一回目の講座では、
自動的にできる最初のスクリプトを使ってやりました。
詳しくはこちら http://northernpenguin.slmame.com/e960010.html
次回の講座では、新たなお題が出ていて
宿題の中には、そのお題を事前に調べるというものがあります。
使われている関数を中心に調べるのですが、他にもいろいろ調べてみるとおもしろいということなので
ソレをやってみたいと思います。

一回目のお題は、コレでした
スクリプトを書く人なら、誰でも見たことがあるものだと思います。
-----------------------------
default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer total_number)
  {
    llSay(0, "Touched.");
  }
}
-----------------------------
コレを
portal(http://wiki.secondlife.com/wiki/LSL_Portal)で調べてみることにします。
一応、「スクリプトのことは、ほとんど知らない人が調べてる」という態でやってみます。  


Posted by you Xiao at 19:45Comments(0)LSL

2009年08月16日

孤独なコード書き-LSLCONに出してみよう

最近でこそ、LSLのコードを書いている人は増えてきましたが
それでも「身近にそんな人いません!」って人は
少なくないと思います。

「コンパクトに書けたよ!」
「すっきりした書き方見つけた!」
「こんなにスムーズに動かせるんだよ!」
「見て見て!こんなのできたよ!」
こういうのは、共感してくれる人が身近にいないと
一人でニヤニヤするしかなくて、結構悲しいです。

なんというか、普通のゲームでは
ドアは、ギィとなってススススーっとスムーズに開くし
バイクは、当然動くし操作もしやすい
そういうことは「当たり前」なわけです。

間違っても、ドアはありえない方向にグリっと開いたり
バイクは、異次元にふっとんでいったりしません。

「どうよ!ドア開くよ!」って言っても
理解されることは少ないです。
まあ、そーいうもんです。  続きを読む


Posted by you Xiao at 19:16Comments(2)LSL

2009年08月14日

LSL:オーダーメイドなスクリプト等の話

最終回(14日)は、こんな感じです
・ameta Amiotさん
・naho Ayaさん…naho's Funny Shop =kuri*gohan=
・Fake Fitzgeraldさん…LSLSL
・Sayuri Cremorneさん…::SUGARCUBE;Memoirs of Second Life
※名前を出す許可をいただいて載せています  続きを読む


Posted by you Xiao at 18:34Comments(7)LSL

2009年08月14日

LSLについてのゆるいOHのお知らせ(8/14)最終日

LSLについてのOH(オフィスアワー)をやります

8月14日(金)は、15:05~16:05を予定しています。
場所は、New Script SIMの砂場です。

こんなことを思ってる人はお気軽にどうぞ
・スクリプトアイテムについての疑問
 (なんでこういう手順になるの?/こういうことってできるの?ナドナド)
・スクリプトを書く時の疑問
・LSLについての雑談をしたい

盆休み期間だけ、ゲリラ的にやってました...今日が最終日です。
知らないことも多いので
「解決できればラッキー」程度の気持ちでどうぞ。  続きを読む


Posted by you Xiao at 14:23Comments(0)ゆるいOH

2009年08月13日

LSL:それはいいゾウだ

今日(13日)も、客人ありです
・eriko Floresさん…お散歩日記
・Naoya Bellicさん…北国ぺんぎん
※名前を出す許可をいただいて載せています

例のメンバー対応の話
公開鍵暗号みたいなものでできないか
 1)復号機を各メンバーが持っている
 2)メンバーに対してキーを送る
 3)復号機で復号(メンバーのUUIDも含む)
 4)お店で復号したコードを使って(say)、ギフトを受け取る
・↑なら、復号機を持っていった方が
 メンバーがすることが減って楽じゃない?
・↑会員カードみたいな感じで。
 会員カードを使うことで、外部DBとのやりとりの回数が減るのでは?
 商品ごとにメンバー認証するのではなく、
 会員カードで認証して、あとは商品と会員カードのin worldのやりとり
Edelweissの保証書システムとかも似たような思想?
・スタンプカードみたいなのは、楽しい
 attachするタイプのものは、設定したテクスチャなどが
 SIM落ちなどで戻る可能性がある。
 (Contentsにいれたものも、特定の条件で戻る可能性がある)
 →結局外部サーバーが必要...

ゾウの話
ハナも動くよ!
 関節っぽい動きのものは、わかるけど
 鼻が動くってフレキ??
 →絶妙な調整のフレキでした(VOONER!!!のゾウです)
・LSLの技術とは別に、こういう調整作業って根気がいるよね
・透過型の多脚って汎用化できそう

ジェネレータの話(フレキの値の調整の話より)
・パーティクルの調整って手動?
 それともジェネレータ??
展示あの人のやつに期待しよう
・HUDのジェネレータで、おもしろそうなの作ってる人がいるよ
 →Particle creater HUD
 思い切りがよくて使いやすそう
・ビークルのジェネレータってあってもいいよね
 controlの制御によっても動作が変わるから難しいのかな
 でも、作る価値はありかも。  


Posted by you Xiao at 14:59Comments(0)LSL

2009年08月13日

LSLについてのゆるいOHのお知らせ(8/13)

LSLについてのOH(オフィスアワー)をやります

8月13日(木)は、13:05~14:05を予定しています。
場所は、New Script SIMの砂場です。

こんなことを思ってる人はお気軽にどうぞ
・スクリプトアイテムについての疑問
 (なんでこういう手順になるの?/こういうことってできるの?ナドナド)
・スクリプトを書く時の疑問
・LSLについての雑談をしたい

盆休み期間だけ、ゲリラ的にやってます
知らないことも多いので
「わかればラッキー」程度の気持ちでどうぞ。  続きを読む


Posted by you Xiao at 12:36Comments(0)ゆるいOH

2009年08月13日

LSL:llGiveInventoryListの仕様

仕様として、
「Must be or recently have been within the same Region as sending object.」と
なっています。
なので、前回・前々回のllGiveInventoryListは使えませんね。
これは、ずいぶん前からjiraにあがってる上に
Strifeが"this is not a bug; it was designed this way on purpose. "と書いてます。
 ※その次のコメントで笑ってしまいましたが

残念なり残念なり

詳しく知りたい方はこちらなどを。
llGiveInventoryList should be able to work gridwide
https://jira.secondlife.com/browse/SVC-868  


Posted by you Xiao at 11:32Comments(2)LSL

2009年08月13日

LSL:何かを送る

DKさん一連記事昨日の話からなにやら書いてみました。
※ベースは、DKさんのものです。

とりあえず、形になってきたのでここに載せておきます。
  通常、この状態になってから、二週間くらいは自分で使います。
  それで、問題点とか改善点とかをチェックして
  その後、お蔵入りか、説明書をつけてリリースするかどちらかになります。
  ※お蔵入り率90%超えてるような気がします。

変更した仕様
・メンバーリストを以下のようにしてみました
 UUID[SPC]名前
 ※同じUUIDが複数書かれていてもUniqする
・ノート以外も送れるように
 変数"g_i_type"で設定
・複数のオブジェクトをまとめて送れる
 変数"g_i_send_mode"で設定
 ※大量のものを送ろうとするとメモリがあふれますけど

気になるところ
1)noteに定義したユーザのUUIDリスト
 ・アバターのUUIDであることのチェックは不要?
  チェックする方法はあるけれども、結構めんどくさい
2)送信リストの事前チェック
 ・Primにいれると送信されるが、
  送信の開始は確認しなくてもいい?
 ・送信するオブジェクトがno copyの場合
  一人目の送信後、Contentsから消えうせる
  ※すべてオーナー作成のオブジェクトという前提でよい?
   →CreatorKeyのチェックくらいした方が?
3)ノートの読み込み
 ・進捗を表示するために最大行数をとっているが
  いらないなら、EOFが来るまで順番に読めばいい。
  EOFと行数チェックを二重にしているのが、アレな感じ
4)SPAMにならない?
 ・先方がmuteすればいいんだろーか...

若干のスクリプトの説明
1)定義ノートの扱い
 ・オーナー作成のノートだという前提
 ・保存するたびにノートのUUIDが変化する
  最後に読んだノートと同じUUIDなら読む必要なし
 ・無編集のノートのUUIDはNULL_KEY(※ソースなし)
  この判断が気に入らない場合、
  noteの読み込みにtimeoutをつけてもいい
2)まとめて送付
 ・テスト中、20個のノートを自分宛に送付していらっとした。
 ・llGiveInventoryListを使う
 ・ディレクトリ名の日時にllGetTimestampを使っているが
  PDTではないので、ちょっとアレ
3)Contents内の存在チェック
 ・ llGetInventoryTypeを使う
  今回は、その名前のnoteがあるかという確認なので
  INVENTORY_NONEは使っていない
4)changed
 ・1000個いれても、1000のchangedが発生するわけでもないようです
 ・changedが発生するたびに、Timerを設定しています
  最後にchangedが発生してから、一定時間を間隔をあけることで
  Contents内の状態が"落ち着いて"から処理しようという意図です。
  厳密にやるなら、Contents内の数をチェックして、
  一定の数から変わらなくなったら処理開始!とした方がいいかもしれません。
5)なんでOwnerSayじゃないの?
  グループで~の可能性も示唆されていたので
  Whisperにしてみましたが、その場合、noteのUUIDチェックとか
  どうなるのかうさんくさいです。

全く自分で使わないものなので、
今後、このスクリプトはノーチェックになります。
ただ、個々の処理は一般的な内容なので
「この処理だっさー」とか
「こう書いた方がエレガントです!」とか
「君は何か誤解している」とか
センスあるコメントを期待しています。  続きを読む


Posted by you Xiao at 11:07Comments(0)LSL

2009年08月12日

顧客サービスシステムについて

今日(12日)は、なぜか人が来られました。
・naho Ayaさん…naho's Funny Shop =kuri*gohan=
・RBK Drachnydさん…一日一膳腹八分目
・Sayuri Cremorneさん…::SUGARCUBE;Memoirs of Second Life
※名前を出す許可をいただいて載せています

「SLのグループ機能を使わない会員サービスの実現について」でましたので、
それについてわいわい話をしました。
  ※最近は、いろんなお店で見られるサービスで
   店舗内に設置してあるボードにタッチすることで
   登録と解除が簡単にできるものです。
   お店の告知や、ギフトの送付などに使われます。

ということで、話をした内容を。

SLのグループへの不満
・グループメンバーかどうかの判断しかできない
  -----以下は黒井の補足-----
  ・上限が25しかない
  ・グループをアクティブにしないと機能しない

やりたいこと
■オーナーから顧客への自動配布機能
 配布機にいれると、全顧客へ自動で配布
 →配布だけならllGiveInventoryで実現可能
  ・送信相手のUUIDがあれば、別SIMへの送れる

■簡単な登録と解除
 メンバーリストの管理は外部サーバー??
 既存のシステムは一長一短
  登録したメンバーリストにアクセスするAPI等がない場合もある
  ※システムを提供している側のアイテムで完結している

■ギフトは、noteなどで告知して、店舗で配布したい
 「お店に足を運んでほしい」
 →店内で、来た人がメンバーかどうかを簡単に知る仕組が必要
  外部サーバーへのアクセス

■メンバーの登録情報によるサービスをしたい
  ・メンバーでいる期間に応じてのサービス
    ※ギフトだけを目当てに一瞬だけ登録されるのを避けたい
     長くメンバーでいるといいことが起こる!
  ・メンバーの誕生日のサービス
  ・ポイントサービス
    ミスドのような
  ・割引サービス
    買った人のポイントや履歴に応じて割引して返金する
  ・再配布サービス
    COPY OKアイテム等は、紛失した場合など
    販売履歴を参照して、自動で提供できるようにしたい。
    ex)
      1)来店
      2)商品タッチ…Payで買うので、touch欄は別のことに使える
      3)以前に買った人なら提供

不安なところ
■"Pay"に対する不満
  ◎Pay嫌いの人は多い??
  ・Buyに対して信頼度が低い
  ・ベンダーの中が見えないことが多い
    ネットワークベンダーなどではスクリプトしか入ってないケースも。
    Popでどんなレイヤーなのかをアピールしては?
  ・Box販売が多い
    ※BuyのContents販売のようなことがしたい
    →llGiveInventoryListでできるよね
    
    こんなふうなGiveのやり方もあるよ?(黒井作のsample)
    ※ただし、商品が多い場合、商品と構成アイテムの関連付けの定義が必要。
   1: list l_tmp = [];
2:
3: default
4: {
5: state_entry()
6: {
7: l_tmp = [];
8: integer i=llGetInventoryNumber(INVENTORY_ALL)-1;
9: for (;i>=0;--i)
10: l_tmp += llGetInventoryName(INVENTORY_ALL,i);
11: }
12: touch_start(integer total_number)
13: {
14: llGiveInventoryList(llDetectedKey(0),"from you xiao",l_tmp);
15: }
16: }

   ※iNNXの「LSLコード色づけ」利用(SLmame利用時のTips)

■ベンダーの自作って難しい?
  ・それぞれの機能の実装そのものは難しくないよ
    ※Pay関係はクレームが怖いので作りたくないという心理もある
    問題が発生したらLindenのせいにしちゃう?w
    サーバーのFPSなどに応じて、サービスを閉じる仕組をつけるとか?
      (めやすが難しい)

■外部サーバーの仕組は...
  ・こういう顧客管理システムを、月極めで提供してもいいよね
  ・外部サーバーの信頼性は?(定期メンテ・不慮のトラブル)
    外部サーバーと連携がとれない場合の処理も実装が必要
  ・ノウハウを持っている人も巻き込んで相談してみよう
    専門家が持っている知識はすごい
  ・サーバーとの連携の今後は...
    Http-inとかは?
    扱いがいろいろ難しそう
    使いどころを見極めないと...

と、こんな感じでした。
えー、そんなのもうあるよーって人は、ぜひ教えてくださいね。

その他に
スクリプトアイテムは、「使える」レベルで完成させるのはそれほど難しくないけれど
「リリースする」レベルで完成させるのは難しい
みたいなこともちょっと出ました。  


Posted by you Xiao at 19:23Comments(5)LSL