2007年06月28日
第6回 超初心者用スクリプト講座 ステートエントリー?
こんばんは。ペンです。
昨晩は友人のTさんとQooというSIMにある海賊カフェに行ってきました。
ここは前に観光ブログ担当のジャスミンさんと偶然発見した場所。
いいとこだったので、Tさんを連れて行った次第ですw
(ちなみにこのSIMは居住地区で、観光SIMではありません。)
海賊カフェも仕掛けがいっぱいあって楽しいのですが
それ以上に私たちの心を掴んで離さなかったのがここ!!

下水道w
もうリアルすぎですwたまりませんw
二人して、
「すごい落ち着くわ~」
って感心しきってましたw
######################################
それではスクリプト講座に移っていきましょう~
今回は前回の復習もかねてスクリプトを
新規で生成したときにできるNew Scriptを使って講座をすすめたい
と思います。
まず、今回のメインは何かと言うと
お題のとおりstate_entryについてです。
これですね。
この講座を読んでいる人なら、毎回目にしてきたこの単語。
おまじないとか言って全く説明してきませんでしたw
面倒だったわけじゃないですよw
簡単のためですw
しかしながら、前回にtouch_startっていうのがでてきました。
内容は、オブジェクトがタッチされたかどうかを判断して
touch_start内のスクリプトを実行するというものでした。
では、このstate_entryっていつ実行されるのでしょうか?
はい、答えは簡単。スクリプトが生成、またはリセットされたときです。
じゃあここで、おなじみのスクリプトに登場してもらいましょう。
今、state_entryには
llSay(0, "Hello, Avator!")
っていうコマンドが含まれています。このコマンドは
チャンネル0番でオブジェクトが
Hello, Avator!
って叫ぶというものです。
チャンネル0番は通常のチャットを表しています。普段会話で
使っているのはチャンネルの0番ということになりますね。
今は0のままでいいです。
また、叫ぶ内容はHello, Avataor!の部分を何かに変えればいいです。
いつstate_entryが実行されるかという話にもどりますが、
この場合だと、上記のとおりスクリプトが生成、またはリセットされたときにだけHello, Avator!って叫ぶよってことになります。
補足ですが Touched. はオブジェクトが触れられたときに
チャットをとおして叫びます。
(タッチイベントに関しては第5回講座を参照のこと)
ここで大事なのはstate_entry内が実行されるのはあくまでも
スクリプトが生成、またはリセットされたときだけということ
です。(ちなみにセーブした場合は自動的にリセットされます)
さて、ここで問題です。
オブジェクトを作って新しいボタンを押し、
上記のスクリプトを組み込みました。
次に、作ったオブジェクトをtakeし、さらにtakeしたオブジェクトを
もういちど出します。
この出したときにstate_entry内のコマンドは実行されるでしょうか?
答えはされません。この場合だと、Hello,Avator!!とは
言わないということです。
これはtakeしてもスクリプトはリセットされないためです。
では、どうすればオブジェクトを在庫目録から出すたびに
実行されるようなスクリプトを作ることができるのでしょう?
というのが次回のテーマですw
それでは御機嫌よう
昨晩は友人のTさんとQooというSIMにある海賊カフェに行ってきました。
ここは前に観光ブログ担当のジャスミンさんと偶然発見した場所。
いいとこだったので、Tさんを連れて行った次第ですw
(ちなみにこのSIMは居住地区で、観光SIMではありません。)
海賊カフェも仕掛けがいっぱいあって楽しいのですが
それ以上に私たちの心を掴んで離さなかったのがここ!!

下水道w
もうリアルすぎですwたまりませんw
二人して、
「すごい落ち着くわ~」
って感心しきってましたw
######################################
それではスクリプト講座に移っていきましょう~
今回は前回の復習もかねてスクリプトを
新規で生成したときにできるNew Scriptを使って講座をすすめたい
と思います。
まず、今回のメインは何かと言うと
お題のとおりstate_entryについてです。
state_entry(){
}
これですね。
この講座を読んでいる人なら、毎回目にしてきたこの単語。
おまじないとか言って全く説明してきませんでしたw
面倒だったわけじゃないですよw
簡単のためですw
しかしながら、前回にtouch_startっていうのがでてきました。
内容は、オブジェクトがタッチされたかどうかを判断して
touch_start内のスクリプトを実行するというものでした。
では、このstate_entryっていつ実行されるのでしょうか?
はい、答えは簡単。スクリプトが生成、またはリセットされたときです。
じゃあここで、おなじみのスクリプトに登場してもらいましょう。
default{
state_entry(){
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number){
llSay(0, "Touched.");
}
}
今、state_entryには
llSay(0, "Hello, Avator!")
っていうコマンドが含まれています。このコマンドは
チャンネル0番でオブジェクトが
Hello, Avator!
って叫ぶというものです。
チャンネル0番は通常のチャットを表しています。普段会話で
使っているのはチャンネルの0番ということになりますね。
今は0のままでいいです。
また、叫ぶ内容はHello, Avataor!の部分を何かに変えればいいです。
いつstate_entryが実行されるかという話にもどりますが、
この場合だと、上記のとおりスクリプトが生成、またはリセットされたときにだけHello, Avator!って叫ぶよってことになります。
補足ですが Touched. はオブジェクトが触れられたときに
チャットをとおして叫びます。
(タッチイベントに関しては第5回講座を参照のこと)
ここで大事なのはstate_entry内が実行されるのはあくまでも
スクリプトが生成、またはリセットされたときだけということ
です。(ちなみにセーブした場合は自動的にリセットされます)
さて、ここで問題です。
オブジェクトを作って新しいボタンを押し、
上記のスクリプトを組み込みました。
次に、作ったオブジェクトをtakeし、さらにtakeしたオブジェクトを
もういちど出します。
この出したときにstate_entry内のコマンドは実行されるでしょうか?
答えはされません。この場合だと、Hello,Avator!!とは
言わないということです。
これはtakeしてもスクリプトはリセットされないためです。
では、どうすればオブジェクトを在庫目録から出すたびに
実行されるようなスクリプトを作ることができるのでしょう?
というのが次回のテーマですw
それでは御機嫌よう