セカンドライフプラネット

セカンドライフのスクリプト言語(LSL)をプラネットします。3DCG で物体をプラネットしたりもします。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

LSL101 状態とイベント

超初心者向けチュートリアル(LSL101)の第2章です。原文では第2章はなく、状態とイベントという名前の章になっています。英語が得意な人は、原文を見ると詳しく記述されてます。

これまでと同様に、Yahoo! の機械翻訳を元に、意訳しながら作業を進めています。あまり英語が得意でない方はこのブログを参考にしてください。

状態とイベント


LSL アーキテクチャー
LSL スクリプトは以下のようになっています。
●グローバル変数と関数(あなたはまだこれらを知りません)
●少なくとも一つのdefault 状態。任意に、さらなる状態
●各状態には一つ以上のイベント


プログラミング経験があれば、フローチャート(他の言語でプログラムを設計するためのグラフィックな道具)に精通しているでしょう。
しかし、LSL スクリプトで役に立つグラフィックな道具は、状態とイベントの行列です。


以下に例証します。

default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer tnum)
  {
    llSay(0, "Touched.");
  }
}


セカンドライフ スクリプト 状態 イベント

最も左のコラムは、「イベント」にリストされます;「状態」(このスクリプトは、1つの状態を持っています)は、一番上の列にリストされます。
イベントと状態が交差するところで,イベントがこの状態ですることについての簡潔なメモを書くことができます。

思い出してください。このスクリプトはほとんど何もしません;それは,ちょうどあなたが書きたいスクリプトのテンプレートとして用いられます。



2つの状態、何と言う考え!


例はここにあります;むずがゆ箱
あなたがそれにさわる最初の時、それはあなたに再びさわるように頼みます。
次にそれにさわると、その箱はあなたに感謝します。むずがゆ箱の行列は、以下のようになります。


セカンドライフ スクリプト 状態 イベント


いくつかの状態を定義する方法


例えば、「tickled」状態を定義するには以下の書式です。


state tickled
{
 ・・・
}


 一つの状態からもう一つの状態に遷移(移動)する方法
状態#1 の適当なイベントの中に、状態#2 に遷移しなさいという「状態遷移」命令を使ってください。


例えば、「tickled」状態に遷移する命令は以下の書式です。


state ticked;



挑戦:むずがゆ箱
申し訳ありません。ここで全部の「むずがゆ箱」スクリプトが記述されていると思いましたか?ハハ、あなたはとても愚かです。それはあなたの任務です!世界の中で(どこかのsandboxで)箱を作成し,それの中でスクリプトを作成してください。
以下の挑戦は作業をより面白くします。


●話しをする部分で,llSay 以外の関数を使用してください。


●「状態移動」命令以外の手段で,ticked 状態からdefault 状態に移動してください(ヒント;スクリプトをリセットしたとき、スクリプトはどの状態になりますか?)


あなたが挑戦を達成した(または,ヘルプが必要な)とき、解決は以下のURLにあります。覗かないこと!
http://rpgstats.com/wiki/index.php?title=LSL101solutions#States_And_Events_Challenge:_Tickle_Box



やってみました:むずがゆ箱
作業風景の画像です。今回はあまりチョッカイをだされませんでした。
髪の綺麗な(ピカッピカッ光る)女性アバターがやってきたので、5分ほど話しました。完成したむずがゆ箱を見て、これはとてもすばらしい。お父さんのおみやげにしたいので、500,000L$ でゆずって欲しいといってきたので、「hito de nasi !」、「kono ko ha watasi no ko yo !」とやってたら去っていきました。
llSay 関数はチャンネルがゼロの場合、半径約20m 内のアバターやオブジェクトに、会話がが聞こえます。そのため、近くの人は面白がって寄ってくるのかな~・・・、ヤレヤレ(*.*)。今度から、llOwnerSay 関数を使おうかな・・・、でも、まったくチョッカイだされないのも、サ・ミ・シ・イ・しー(どっちやねん!)。


セカンドライフ スクリプト サンドボックス


むずがゆ箱をタッチ(マウスで左クリック)すると、「Now, touch me again.」と返事します。また、タッチすると、「Thank you! That felt good.」と返事します。その後もタッチする度に交互に返事内容を変えて返事します。そうなれば完成です。おめでとう!


セカンドライフ スクリプト Tickle Box


完成したうれしさのあまり、何回もタッチしていると周りの人に気づかれるので注意!

スポンサーサイト

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/07(木) 16:45:50|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター!(その3)

LSL101 第1章 こんにちは、アバター!(その2)の続きです。

ファンクション(関数)
llSay から始まっているステートメントは、関数 llSay への呼び出しです。関数は、それが欲しい情報を与えるとき、面白い何かをする名前を付けられたコードブロックです。関数は,あなたのスクリプトの中に位置するコードブロックであるかもしれません;または,それは「共有な場所であなたのスクリプトの外側に位置するかもしれません」


名前が2つの小文字のL から始まる関数は、SL環境にあるリンデン関数です。llSay はリンデン関数です。



セカンドライフ スクリプト New Script



パラメータ
関数が欲している情報という部分は,パラメータと呼ばれています。


関数llSay

state_entry()
{
  llSay(0, "Hello, Avatar!");
}


llSay は、およそ20m離れた物体やアバターに「聞くことができる」チャンネル上のテキストチャットができる関数です。
llSay は、2つのパラメータ(チャンネルとテキスト)が与えられることを予想します。非ゼロのチャンネルは、2つの(またはより多くの)物体間での、個人的なコミュニケーションに役立ちます。


チャットのテキストは、ダブルコーテーション( " )で囲まれます。


touch_start イベント

touch_start(integer total_number)
{
  llSay(0, "Touched.");
}


その名前(touch_start)にパラメータリストが続くので,このイベントは関数呼び出しのように見えますがイベントです.パラメータのリストは変数を含みます:整数total_number


関数と同様に,この変数は,パラメータ値にセットされます。セカンドライフは、イベントにパラメータを供給します。イベントで定められているとき、変数はシミュレーションがとった措置によって値を与えられます。特にお金のようなイベントでは、これは非常に役に立ちます。この場合、total_number は,その時物体にさわっている人々の数を定めます。「さわっている人々」の数を知っていることの長所は、今は疑わしいかもしれません。いつか,あなたがそれを知っていてうれしいと思っていてください。


llSay 関数が物体のパイメニューの「タッチ」がどんなユーザにでもクリックされるとあらゆる場合に「Touched.」と叫んでいます。


おめでとう!あなたは,最初のスクリプトをうまく解読しました!

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/05(火) 23:50:32|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター! (その2)

LSL101 第1章 こんにちは、アバター!(その1)の続きです。

建造ウィンドウの右下にある「全表示」ボタンをクリックします。


セカンドライフ スクリプト 建造ウィンドウ


タブが5枚あります。その中の「内容」タブを選択します。そして、内容タブの左上方にある「新しいスクリプト」ボタンをクリックします。木構造の「Contents」の下に「New Script」ができたことを確認します。


セカンドライフ スクリプト 建造ウィンドウ




「New Script」の部分をダブルクリックすると、スクリプトエディターが表示されます。


セカンドライフ スクリプト スクリプトエディター


スコープ(または、コードブロック)
一対の開中括弧( { )と閉中括弧( } )との間をスコープ(または、コードブロック)と呼びます。スコープは、より小さなスコープを内蔵することができます。上のスクリプトの例では、default のスコープは、state_entry のスコープとtouch_start のスコープを内蔵しています。開中括弧で開かれたあらゆるスコープは閉中括弧で閉められなければなりません。

default 状態
上のスクリプトで見る最初のものは、「default」という言葉です。これは、「状態」と呼ばれています。全てのLSL は一つのdefault 状態を持つ必要があります。LSL は複数の「状態」をもつことができます。状態についての詳しい説明は後ほど。状態とは、適切な名前をつけられたコードブロックです。


イベント
イベントは、Second Life の中で起こる何かによって引き起こされる、名前をつけられたコードブロックです。

state_entry イベント

state_entry()
{
    llSay(0, "Hello,Avator !");
}

default 状態に記述されているstate_entry イベントを起こす方法は以下です。

1)スクリプトをコンパイル(保存)する
例えば、スクリプトエディターで、"Hello, Avator !"を"Hello, Master !"に修正して、保存ボタンを押してみてください。コンパイルが終わり、今いるsandbox にセーブが完了する(rez される)と、オブジェクト(Object)から、以下のチャットメッセージが現れます。

Object:: Hello, Master !

2)スクリプトをリセットする
LSL は、あなたにスクリプトをリセットするために使用できる関数(llResetScript)を提供します。

ステートメント(声明)
「llSay」で始まっている一行はステートメントです。各々のステートメントは、セミコロン( ; )で終わらなければなりません。

パーシステンス(持続)
物体をさわると、「Hello, Avator !」と再び答える代わりに「Touched」といいます。答えは、touch_start イベントから来ます。なぜ、state_entry イベントは答えませんでしたか?

1)あなたはその物体にさわったので、それはそれが反応したイベントです。
2)その新しいスクリプトは終了していません。それはまだdefault 状態にあります。そして、二度とdefault 状態のstate_entry イベントを起こすことはありませんでした。あなたが、SL を終了し再接続すると、そのスクリプトはまだそこにいてdefault 状態が続いていることが解るでしょう。


 

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/05(火) 02:06:38|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター! (その1)

LSL101 は本当によくできたチュートリアルだと思います。


LSL101 にそって実際にLSL を動作させてみます。


sandbox へのテレポート


sandbox 以外の場所で「オブジェクト:物」を制作していると怒られるので、まず、適当なsandbox にテレポートしてください。


・・・sandbox の探し方


「検索」機能を使って探します。「検索」ボタンは、セカンドライフ画面の下方、「飛ぶ」ボタンや「スナップ」ボタンの近くにあります。「検索」ボタンをクリックすると検索のプルダウンメニューが表示されます。そのメニューの「場所」タグを選び、検索窓に”sandbox”と入力し、検索ボタンをクリックします。


・・・sandbox について


リストの上位にあるsandbox に行けば問題ないと思いますが、場所によってはチョッカイを出されることもあります。そんなときは、「kora, kora」とか、「acchi ni ike ! si, si…」とチャットするといなくなります。


 


オブジェクトの制作


LSL はオブジェクトに付随しているものなので、まずオブジェクトを制作します。オブジェクトの制作方法については、他のHP や書籍などで詳しく説明されているので、簡単に説明します。




(1)オブジェクトの生成
マウスを地面の何もないところへ移動し、右クリックします。すると、パイ状のメニュー画面(パイメニュー)が現われます。


セカンドライフ スクリプト サンドボックス


パイメニューの「生成」を選択し、そのまま何もない地面をクリックすると立方体オブジェクトが生成されます。同時に、プルダウンメニューが表示されます。


セカンドライフ スクリプト サンドボックス




 


セカンドライフ スクリプト 建造ウィンドウ




(2)オブジェクトの修正


オブジェクトを生成すると、プルダウンメニューは自動的に編集モード「編」になります。プルダウンメニューが消えたときは、生成したオブジェクトを右クリックしてパイメニューを表示するとその中に「編集」がありますので、それを選択します。


生成物体の位置移動や回転、引き伸ばしなどの編集ができます。直感的に操作ができるので難しくはないでしょう。いろいろとトライしてみてください。
 


セカンドライフ スクリプト サンドボックス




位置の移動
x 軸(赤)y 軸(緑)z 軸(青)の各軸毎にそれぞれの色の付いた「立体矢印」が表示される。その矢頭をドラッグすることでオブジェクトを移動させる。

回転
各軸毎にそれぞれの色の付いた「立体リング」が表示される。そのリングをドラッグすることでオブジェクトを回転させる。
 


引き伸ばす
各軸毎にそれぞれの色の付いた「小立方体」が表示される。その立方体をドラッグすることでオブジェクトを引き伸ばす。


テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/02(土) 21:18:40|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101前書き

前回に引継ぎ、LSL101 の簡易翻訳です。詳細は原文を参照してください。


LSL101前書き


前書き:LSL Wiki を使用すること


LSL Wiki は最初に、キャサリン・オメガにより確立され、BadGeometry.com によりホストされた。それ以来、他のユーザーはここが最も完全な資料となるように貢献しました。リンデンはここを公式SL サイトに融合させました。


このwiki は5つの主要記事により分けられます。
●ホームページ:ここであなたは、残りのwiki へのリンクを見つけます
●関数:主なリンデン関数のリスト
●イベント:主なリンデンイベントのリスト
●用語集
●スクリプトライブラリー:他の居住者からの役立つ例とコード断片


Q&A


wiki に関するQ&A が記述されています。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/05/30(水) 01:45:05|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

スクリプト完全新入り向けガイド

セカンドライフのスクリプト(LSL)を調べていたら以下URLに行き着きました。
 Ja:Main Page : http://rpgstats.com/wiki/index.php?title=Ja:Main_Page


LSL Wiki の日本語訳のようですが、Wiki って? 登録して翻訳しているみたいです。


「はじめてここを訪れた人は LSLチュートリアルへ」とあったので、そこに行きました。
http://rpgstats.com/wiki/index.php?title=LSLTutorials


チュートリアル名「LSL101」、内容「これまでにプログラミングをしたことが無い人向けのチュートリアルです。」


そうかそうか、ここからやっていけばいいのかーとクリックすると英語でした・・・。 ここはまだ翻訳されてないのね・・・


Yahoo! 翻訳で一括翻訳して作業していきますので、参考にしてください。プラネットしてるなぁー


翻訳基準(えらそうだなぁ)
●基本的に翻訳機(Yahoo! 翻訳など)の一括翻訳です。
●あまりにこ・れ・は・といった翻訳は意訳してます。
●コードが実働するのに必要な部分を主に翻訳してます。
●よくわからん翻訳結果は削除してます。オイオイ


LSL101
セカンドライフのスクリプトの完全新入りガイド


目次
●前書き:このWiki を使用すること
●こんにちは、アバター!簡単なスクリプト
●状態とイベント
●構文の再訪
●変数
●論理
●最初のパラメータへの導入
●単純なポーズボール
・付録
・スクリプトのすべきこととすべからざること
・一般エラー
・挑戦の解決


LSL(Linden Scripting Language:リンデンスクリプト言語)にようこそ!あなたがここに来たようにあなたが自信がないならば、恐れないでください。このガイドは、まさにあなたのために作られました。あなたがコーディング経験がないのであれば、心配しないでください!


LSL は、明確で直接の言語です。たとえあなたがプログラミング背景を持たないとしても、その簡素な構築物はあなたに理解するのが簡単であるプログラムを書かせます。あなたが行動で学ぶタイプであるならば、あなたがすぐに創造的になることができるように、各々の章は「挑戦」部で終わります。


あなたが、特にC++ で、すでに熟練したプログラマーであれば、ここを飛ばして「Crash Course」を読むことを望むかもしれません。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/05/29(火) 02:14:24|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

プロフィール

Aa

Author:Aa
SLプラネットへようこそ!
Koenjiで物づくりしてます。
皆さん、遊びにきてください。

ショップのSLURL

ショップ(白屋)のSLURLです。メタバーズの高円寺にあります。商品を展示販売しています。

メタバーズ、高円寺、白屋

最近の記事

月別アーカイブ

カテゴリー

ブログ内検索

おすすめ商品!


パソコンの横において、疑問点をサッと調べられます!...



オブジェクト制作を基礎から解説!販売方法も詳しく記述!...



すぐに使えるサンプルプログラムを多数収録!...



関数の詳しい記述あり!辞書のように便利!...

ゲームPC

ゲーム用パソコンならドスパラへ!Galleriaシリーズが大人気!

リンク

このブログをリンクに追加する

スポンサードリンク

スポンサードリンク

最近のコメント

最近のトラックバック

RSSフィード

FC2カウンター

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。