<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>セカンドライフ[Second Life]　日本人居住区　土地レンタルのSLing &#187; mayukoの小ネタ</title>
	<atom:link href="http://slingweb.jp/category/mayuko-nishi/feed" rel="self" type="application/rss+xml" />
	<link>http://slingweb.jp</link>
	<description>セカンドライフ　Second Life　日本人居住区レンタルサービス　環境SIM 石川</description>
	<lastBuildDate>Sat, 19 May 2012 15:33:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/category/mayuko-nishi/feed" />
		<item>
		<title>しるふぃーどクリスマスバナーアワード開催します！</title>
		<link>http://slingweb.jp/2275.html</link>
		<comments>http://slingweb.jp/2275.html#comments</comments>
		<pubDate>Mon, 09 Nov 2009 16:30:05 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=2275</guid>
		<description><![CDATA[しるふぃーどクリスマスバナーアワードを開催します。
しるふぃーどクリスマス特設サイトにふさわしいと思うバナーのデザインを
公募致します。
/*募集要項*/
**募集テーマ
しるふぃーど．ねっとのクリスマス関連記事の]]></description>
			<content:encoded><![CDATA[<p>しるふぃーどクリスマスバナーアワードを開催します。<br />
しるふぃーどクリスマス特設サイトにふさわしいと思うバナーのデザインを<br />
公募致します。</p>
<p>/*募集要項*/</p>
<p>**募集テーマ<br />
しるふぃーど．ねっとのクリスマス関連記事の特設サイトの<br />
トップページバナー<br />
あなたがクリスマスにふさわしいと思うバナーのデザインをしてください。<br />
しるふぃーどの背景は黒または白となりますので<br />
背景に合うデザインを公募致します。</p>
<p>**サイズ<br />
横600px縦125～150px(縦の大きさはご自由に決めて下さい。)<br />
**画像フォーマット<br />
JPGまたはPNG<br />
**含まれる文字<br />
特設サイトへのリンクですので、それにふさわしい文章、コピーなど<br />
例としてハロウィン特設サイトのURLです。<br />
<a href="http://slfeed.net/event.php" title="http://slfeed.net/event.php" class="autohyperlink" target="_blank">slfeed.net/event.php</a></p>
<p>賞金・賞品</p>
<p>グランプリ(１名)<br />
賞金 5000L$<br />
しるふぃーどトップページに優勝者様のお名前とブログへのリンクを<br />
12/31まで表示致します。</p>
<p>佳作(応募の中から３～５名)<br />
佳作作品の人数は応募人数により決定いたします。<br />
賞品は別ページで特集サイトを組みます。<br />
そちらにグランプリ作品と一緒に表示致します。<br />
その場所からあなたのブログへのリンクを12/31まで表示致します。</p>
<p>募集方法</p>
<p>11/15夜に一般応募フォームをWEB上に開設します。<br />
応募フォームの場所はしるふぃーどトップページにて告知致します。</p>
<p>募集期間</p>
<p>11/15～11/30まで</p>
<p>募集に必要な条件</p>
<p>    * アバターの名前<br />
    * ブログのURL<br />
    * あなたの著作物であること</p>
<p>（素材集など使用されることはかまいません、しかし著作物として問題のある物は<br />
ご使用にならないで下さい。<br />
そして、しるふぃーどにあなたのブログが登録されていること。</p>
<p>審査方法</p>
<p>審査員による投票をWEB上のPHP投票フォームにて集計します。</p>
<p>審査結果発表</p>
<p>12/15を予定しています。<br />
12/15よりクリスマス特設サイトを公開致しますので<br />
佳作作品に関しましてはWEB上の公開にて結果発表に返させていただきます。<br />
優勝作品作者様には15日にインワールドにて賞金の受け渡しを行う予定です。</p>
<p>現在、応募フォームのプログラムを書いていますので、<br />
詳細が決まり次第、インフォメーションで告知致します。</p>
<p>しるふぃーどにブログが登録されている方ならどなたでもご応募する事が出来ます。<br />
そしてグランプリ作品の作者様にはささやかな賞金と１５日間トップページに<br />
作者様のブログへのリンクを表示致します。<br />
なるべく簡単な方法で参加できるようにただいま急いでプログラムを書いています。</p>
<p>宜しくお願い致します＞＜</p>
<p><a href="http://info.slfeed.net/xmas.html">募集記事のURL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/2275.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/2275.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　計算の方法？演算子について</title>
		<link>http://slingweb.jp/1313.html</link>
		<comments>http://slingweb.jp/1313.html#comments</comments>
		<pubDate>Sun, 25 Jan 2009 04:34:15 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1313</guid>
		<description><![CDATA[if-elseのお話が出ましたので。
条件式で必要な演算子（関係＆理論）の話をしようかと思います。
まずは関係演算子と言われてるものです。
&#62;   より大きい
&#62;=  以上
&#60; より小さい
&#60; =  以下
==  等しい
!=  等しくない
です。
この関係演算]]></description>
			<content:encoded><![CDATA[<p>if-elseのお話が出ましたので。<br />
条件式で必要な演算子（関係＆理論）の話をしようかと思います。</p>
<p>まずは<span style="color: #ff1493;"><strong>関係演算子</strong></span>と言われてるものです。</p>
<p><strong>&gt;   より大きい</strong><br />
<strong>&gt;=  以上</strong><br />
<strong>&lt; より小さい</strong><br />
<strong>&lt; =  以下</strong><br />
<strong>==  等しい</strong><br />
<strong>!=  等しくない</strong></p>
<p>です。<br />
この関係演算子とは２つの値を比較して<strong>真</strong>か<strong>偽</strong>かの値を返します。<br />
関係演算子は浮動少数型、整数型で使用しますが<br />
大きいのか、以上なのか、小さいのか、以下なのか<br />
等しいのか、等しくないのか<br />
これを<strong>TRUE(真)</strong>か<strong>FALSE(偽)</strong>かで判断します。<br />
<span style="color: #ff1493;">等しいの&#8221;==&#8221;と&#8221;!=&#8221;は文字列型でも使用できます。</span></p>
<p><span style="color: #ff1493;"><strong>理論演算子</strong></span></p>
<p>理論演算子は真や偽の値を結合します。<br />
<strong>&amp;&amp;  理論積(and)</strong><br />
<strong>||  理論和(or)</strong><br />
<strong>!   否定(not)</strong></p>
<p>です。</p>
<p>例題はこんな感じで</p>
<p><span style="color: #ff1493;">理論積の&#8221;&amp;&amp;&#8221;は両方真ならば真と返します。</span></p>
<pre>(ホイットはスケベ(真)　&amp;&amp;　ホイットはエッチ(真))
ならば真と返します。
左右に配置した条件式が両方とも真ならば真(1)と返します。

(ホイットはスケベ(真)　&amp;&amp;　ホイットは紳士(偽))
これは左右の条件式の片側に偽があるので偽(0)と返します。

(ホイットはカッコイイ(偽)　&amp;&amp;　ホイットは紳士(偽))
両方とも偽の場合は偽(0)と返します。</pre>
<p><span style="color: #ff1493;">理論和の&#8221;||&#8221;はどちらかが真ならば真と返します。</span></p>
<pre>(ホイットはスケベ(真)　||　ホイットはエッチ(真))
は、真(1)と返します。

(ホイットはスケベ(真)　&amp;&amp;　ホイットは紳士(偽))
これでも片側が真なので真(1)と返します。

(ホイットはカッコイイ(偽)　&amp;&amp;　ホイットは紳士(偽))
両方とも偽の場合は偽(0)と返します。</pre>
<p><span style="color: #ff1493;">否定の&#8221;!&#8221;はもしも真(1)の答えならば偽(0)と答え<br />
偽(0)ならば真(1)と答えます。</span><br />
つまり当てはまった答えを否定するという意味です。</p>
<pre>if(!"ホイットは紳士(偽)"){
llOwnerSay("いいえ、ホイットはスケベです。");
}

if(!"ホイットはスケベ(真)"){
llOwnerSay("いいえ、ホイットは紳士です。");
}</pre>
<p>となりますｗ</p>
<p>この関係演算子と理論演算子は主にif(条件式)の<br />
この条件式の部分で使用します。<br />
*else ifはif文の見やすい段組の結果のかたちなので<br />
if文と一括りにして説明しちゃいます:)<br />
<span style="color: #ff1493;">条件式に入る最終的な値は<br />
TRUE(真)かFALSE(偽)の2通りとなり<br />
数式で書くと<br />
TRUE(1)かFALSE(0)となります。</span></p>
<p>その他の演算子<br />
その他のと括るのはちょっち弊害があるのですが＞＜<br />
条件文で必要なものから書いちゃったので許してください；；</p>
<p>これ以外にもプログラムをかこー！と思うと<br />
必要な演算子というものがあります。</p>
<p><span style="color: #ff1493;"><strong>算術演算子（2項演算）</strong></span></p>
<p>もちろんコンピュータは大きな計算機ですから、普通に計算とか<br />
出来るわけですｗ</p>
<p><strong>+（プラス）</strong><br />
<strong>-（マイナス）</strong><br />
<strong>*（掛け算）</strong>*これで掛け算の意味で×は使いませんｗ<br />
<strong>/（割り算）</strong>÷ではないですｗ<br />
<strong>%（割り算の余り）</strong>*整数型しか使えません。</p>
<p>があります。<br />
なので、イベントやif-else文のブロックの中で<br />
何かを計算して、その答えの値を使用することが出来ます。<br />
ここの算術演算子でちょっち変わり者が+です。<br />
この+に関してはlistや文字列型をくっつけると言うことが出来ます。<br />
また-（マイナス）は正負を反転させる単項演算（後述）としても使えます。<br />
そしてここが最初間違えやすいのですが<br />
<span style="color: #ff1493;">=(イコール)は等号としてプログラムでは使用できません。<br />
=は代入として使って、等号が必要な場合は==を使用します。</span></p>
<p>文字列の連結として+を使用する例</p>
<pre>string Howitt;
default
{
	touch_start(integer total_number)
	{
	Howitt = "スケベ"+"エッチ";
	llOwnerSay(Howitt);
	}
}</pre>
<p>listの連結として+を使用する例</p>
<pre>list Howitt;
default
{
	touch_start(integer total_number)
	{
	Howitt = ["スケベ"]+["エッチ"];
	llOwnerSay((string)Howitt);
	}
}</pre>
<p><strong>スケベエッチとしゃべりますｗ</strong></p>
<p>正負を反転させる単項演算としての－の例</p>
<pre>default
{
	touch_start(integer total_number)
	{
	integer i= 10;
	i =-i;
	llOwnerSay((string)i);
	}
}</pre>
<p><strong>-10としゃべります。</strong></p>
<p><span style="color: #ff1493;"><strong>インクリメント、デクリメント演算子(単項演算)</strong></span><br />
今までのご説明の演算子はAとBを比べたら？とかAとBを足したら？引いたら？<br />
の2項演算と呼ばれるものの説明でした。<br />
これがAなどひとつだけに作用して計算するものを単項演算と呼びます</p>
<p>簡単に1を増やす、1を減らすという計算はこんな風に単純に書くことが出来ます。</p>
<p>1を増やすの場合<br />
このようなものをインクリメントと呼び、こんな風に書くことが出来ます。</p>
<pre>++1;
1++;</pre>
<p>また1を減らすものは</p>
<pre>--1;
1--;</pre>
<p>と書くことが出来て、これをデクリメントと呼びます。</p>
<p>このような感じで単独で使用する場合にはどちらを使用しても結果が変わらないので<br />
あまり意識する必要はないのですが、<br />
先に+ +や- -がある場合とうしろに+ +、- -がある場合で<br />
単独使用以外の組み合わせだと<br />
<span style="color: #ff1493;">先に処理してるのか後で処理しているのかの違いで<br />
答えが変わるので注意が必要です；；</span></p>
<p>a=++b;<br />
の場合は</p>
<pre>b=b+1;
a=b;</pre>
<p>という順番で計算しています。</p>
<p>a=b++;<br />
の場合は</p>
<pre>a=b;
b=b+1;</pre>
<p>という順番で計算していますので<br />
<strong>bがもしも10ならば</strong>の結果が<br />
<strong>a=++b;</strong><br />
は<strong>aの結果が11</strong><br />
<strong>a=b++;</strong><br />
の場合は<strong>aの結果が10</strong>と答えます。</p>
<p>++が先処理か後処理かの違いの証明。</p>
<pre>default
{
　　　　touch_start(integer total_number)
	{
		integer a;
		integer b =10;
		a=b++;
		llOwnerSay("a=b++;のa"+(string)a);
		a =0;
		b =10;
		a=++b;
		llOwnerSay("a=++b;のa"+(string)a);

	}
}</pre>
<p>このインクリメントデクリメントの演算は<br />
forとかwhileという繰り返し処理の制御文などで良く使用します。</p>
<p>そのほかにもビット演算子、シフト演算子なんて高度な演算もLSLで<br />
出来たりします。</p>
<p><strong>&amp; （ビットごとの）理論積</strong><br />
<strong>| 理論和</strong><br />
<strong>^ 排他的理論和</strong><br />
<strong>~ 否定</strong></p>
<p><strong>&lt; &lt; 左シフト演算子</strong></p>
<p><strong>&gt;&gt; 右シフト演算子</strong></p>
<p>この2つの演算子は普段めったに使うことは無いと思いますが、<br />
これらを使用すると計算処理の負担があまりかからないと言われます。<br />
なぜならこのビット演算、シフト演算は<br />
コンピュータの内部処理そのものの2進法です。</p>
<p>LSLでは特定のイベント*changed、controlなど<br />
の引数で使用することがありますので<br />
あーそんなのもあるんだなぁなどとさらーと覚えておくとよいと思います:)</p>
<p>さて、演算子のことをざーっと書いてみました。<br />
で、結局計算してその数をどうやって出力したらいいの？って疑問があるかと思います。<br />
さっきからllOwnerSayで数字を書き出していますが、ここで型変換（キャスト変換）<br />
というものをしています。</p>
<p>次はこの型変換について書いてみたいと思います:)</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1313.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1313.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　ifとかelseとか</title>
		<link>http://slingweb.jp/1215.html</link>
		<comments>http://slingweb.jp/1215.html#comments</comments>
		<pubDate>Thu, 22 Jan 2009 11:24:40 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1215</guid>
		<description><![CDATA[条件文？ifとかelseとか
こんにちわー
今日は分岐のお話です:)
スクリプトは条件が合うとき、または合わないとき
でプログラムを実行するか、しないかを決めることが出来ます。
これを制御文とか条件文とか条件分岐とか言]]></description>
			<content:encoded><![CDATA[<p>条件文？ifとかelseとか</p>
<p>こんにちわー<br />
今日は分岐のお話です:)<br />
スクリプトは条件が合うとき、または合わないとき<br />
でプログラムを実行するか、しないかを決めることが出来ます。<br />
これを<strong>制御文</strong>とか<strong>条件文</strong>とか<strong>条件分岐</strong>とか言います。</p>
<p>一番簡単なのは<span style="color: rgb(255, 20, 147);">if文</span>でif（もしも）で<br />
条件付実行をさせることが出来ます。<br />
<span style="color: rgb(255, 20, 147);">ifの条件が真ならば実行</span>するというふうに書けます。</p>
<p>if文の一番簡単な形はこんなです</p>
<p><strong>if(条件式)実行文;</strong></p>
<p>例題とするとこんな感じｗ</p>
<pre>
if(ホイット==スケベ)｛
 llOwnerSay("エッチスケベ変態！");
}
</pre>
<p>またはこういう風にも書けます。</p>
<pre>
if(ホイット==スケベ) llOwnerSay("エッチスケベ変態！");
</pre>
<p><span style="color: rgb(255, 20, 147);">*実行文が一文だけならブロックを書かなくてもちゃんと動きます。</span><br />
ただしネストしたりするとわけがわからなくなるので<br />
ブロックで書いたほうがよいと思います:)<br />
ネストの事は後述しますー</p>
<p>次に<span style="color: rgb(255, 20, 147);">else文</span>（ちがければ）というものもあります。<br />
これは<span style="color: rgb(255, 20, 147);">if文の条件が偽ならば実行</span>させることが出来ます。</p>
<pre>
if(ホイット==スケベ) llOwnerSay("エッチスケベ変態！");
else llOwnerSay("ありえなーい！");
</pre>
<p>スケベじゃなかったら、ありえなーい！としゃべりますｗ<br />
こんな感じで条件を付けてifとelseでプログラムの実行を分岐することが出来ます。<br />
まだ演算子についての説明をしていないので条件文が<br />
ホイット==スケベとかになってますけどｗ</p>
<p>では、先ほどのネストのこと。<br />
if文の中にif文を書いたりすることが出来ます。</p>
<pre>
if(ホイット==スケベ)
	if(ホイット==エッチ) llOwnerSay("スケベでエッチ!");
　　　　else llOwnerSay("ホイットはスケベだけどエッチじゃなかった！");
</pre>
<p>これは最初のif文のホイット==スケベの条件が真ならば<br />
ホイット==エッチが真なのか確認して両方とも真ならば<br />
スケベでエッチ!と両方真だったと結果を話しています。<br />
ということは、スケベというのは既定の路線と言うことですねｗ</p>
<p>こういう状態を<span style="color: rgb(255, 20, 147);">外側のifの入れ子になった</span>とか<br />
<span style="color: rgb(255, 20, 147);">外側のifにネストされた</span>と言います。</p>
<p>しかーしちょっちわかりにくいですよﾈｪ＞＜<br />
なのでこういうネストしちゃったときはブロックをちゃんと書いたほうが<br />
わかりやすいです。<br />
*わたしは自分でわかりやすいように<br />
一文でもブロックで書くのがくせになってます＞＜</p>
<pre>
if(ホイット==スケベ){
	if(ホイット==エッチ)｛
	 llOwnerSay("スケベでエッチ!");
	}else{
	 llOwnerSay("ホイットはスケベだけどエッチじゃなかった！");
}
</pre>
<p>またifとelseは続けていくつも書くことが出来ます。</p>
<pre>
if(ホイット==スケベ) llOwnerSay("スケベ!");
else
if(ホイット==エッチ) llOwnerSay("エッチ!");
else
if(ホイット==変態) llOwnerSay("変態!");
else llOwnerSay("ホイットは紳士だった!");
</pre>
<p>これはホイット==スケベじゃなかったらホイット==エッチを見て<br />
ホイット==エッチじゃなかったらホイット==変態を見て<br />
条件がひとつも当てはまらなければホイットは紳士だった!<br />
としゃべります。</p>
<p>こんな風に書くことを<span style="color: rgb(255, 20, 147);">if else ifのはしご</span>とか<br />
<span style="color: rgb(255, 20, 147);">if elseの階段</span>とか言います。</p>
<p>でもこれじゃちょっとわかりにくいですよねぇ<br />
これをこういう風にelseの横にifを慣例的に持っていっていくのが<br />
普通です。</p>
<pre>
if(ホイット==スケベ) llOwnerSay("スケベ!");
else if(ホイット==エッチ) llOwnerSay("エッチ!");
else if(ホイット==変態) llOwnerSay("変態!");
else llOwnerSay("ホイットは紳士だった!");
</pre>
<p>そうすると、こんな風に<span style="color: rgb(255, 20, 147);">else if文</span> とよく<br />
いわれてるものの形になります。<br />
else if　さもなければ、もし　しかし、もしもとなって<br />
真偽の2通りだった分岐に<br />
なんとおりもの分岐を持たせるような感じで<br />
プログラムが書けるようになります。</p>
<p>このような条件分岐を繰り返したりして<br />
複雑に見えるようなプログラムを書いていくのです:)</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1215.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1215.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　イベントって？</title>
		<link>http://slingweb.jp/1170.html</link>
		<comments>http://slingweb.jp/1170.html#comments</comments>
		<pubDate>Tue, 20 Jan 2009 14:29:26 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1170</guid>
		<description><![CDATA[イベントとは、端的にいってしまえば
スクリプトのトリガー（きっかけ）
スタートのスイッチのようなものです。
こちらでLSLはイベント駆動型
と書きましたが、イベントを全く作らないLSLスクリプトは
どうなるかという]]></description>
			<content:encoded><![CDATA[<p>イベントとは、端的にいってしまえば<br />
スクリプトのトリガー（きっかけ）<br />
スタートのスイッチのようなものです。</p>
<p><a href="http://slingweb.jp/?p=1120">こちら</a>でLSLはイベント駆動型<br />
と書きましたが、イベントを全く作らないLSLスクリプトは<br />
どうなるかというと、何にも行わないスクリプトとなってしまいます。<br />
*実際のところイベントを全く含まずにスクリプトをコンパイル<br />
しようとするとエラーとなりコンパイルできません＞＜</p>
<p>イベントとして使えるトリガーは<br />
ステート開始がトリガーのstate_entry<br />
タッチする事がトリガーのtouch<br />
物を装着でのattach、オブジェクトに変化があったときの<br />
changed、などなど20種類くらいあります。</p>
<p>イベントには<span style="color: rgb(255, 20, 147);">引数</span>（ひきすうと読みます）が付くものがほとんどで<br />
<span style="color: rgb(255, 20, 147);">イベントの引数にはそのイベントが起きた事によって取得できた<br />
値が入って渡されます。</span></p>
<p>例えばtouch( integer num_detected )には、<br />
タッチイベントがおきて、そのときに検知した数がint型で<br />
渡されると読み取れます。<br />
attach( key id )には<br />
アタッチイベントがおきて、そのときに検知したキーが渡されると<br />
読むことが出来ます。<br />
まあ、アタッチというのはアバターが何かを装着したときの<br />
イベントなので自然と<br />
あ、アバターのUUIDが入るんだな？と気が付くわけですｗ</p>
<p>ですからそのイベントが起きたことをトリガーに<br />
何かをさせると同時に<br />
引数に入った値で、その値から何かを取得したり<br />
条件分岐をさせたりとかそういう風にスクリプトの<br />
おおまかな中身を作って書いていったりします。</p>
<p><a href="http://slingweb.jp/?p=917">かんたん翻訳機</a>では<br />
このようなイベントを使用しています。<br />
わかりやすいようにイベント以外は文章で書いてみますね:)</p>
<pre>
on_rez(integer start_param)
	{
rezされたイベントスタート！
イベントの引数は使用せず、リセットさせる。
	}
state_entry()
	{
ステートが始まったとき、リセットされたときのイベントスタート！
オーナーのUUIDを取ってグローバル変数に代入
	}
touch_start(integer total_number)
	{
タッチされたイベントスタート！
dialogの為のリスンチャンネル500番を開き
グローバル変数に入ったオーナーのみの言葉を聴く。
dialogを開く。
	}
listen(integer channel, string name, key id, string message)
	{
言葉を聴いたイベントスタート！
もしも(引数のチャンネル番号が500だったら){
dialog用のリスンチャンネルを閉じて
メッセージに入った文字列がリスト型のボタンの何番目なのか探して
その番号と同じ番号のもの文字列方グローバル変数に代入して
リスンチャンネル7番を開きます。
	}しかし、もしも(引数のチャンネル番号が7だったら){
リスンチャンネル7番を閉じて
言葉をURLエンコードして
HTTP接続を生成URLにしてください！キーを設定します。
		}
	}
http_response(key request_id, integer status, list metadata, string body)
	{
生成URLの接続を設定したキーが戻ってきたらのイベントスタート！
	もしも(そのHTTP接続は成功との引数ならば){
"translatedText"という言葉を取得できたWEBページの文字列から
何番目にあるか番号で出してもらい。
"responseDetails"という言葉を取得できたWEBページの文字列から
何番目にあるか番号で出してもらい。
番号と番号に挟まれた文字列だけをさらに抽出して
このオブジェクトのオーナーにしゃべります。
	}ちがければ{
このオブジェクトのオーナー接続で失敗したHTTPの引数の番号しゃべります。
		}
	}
}
</pre>
<p>と条件分岐のところまで文章で書いてしまいましたが<br />
こんな感じの流れのスクリプトということになります。</p>
<p>次はここで話題が出ちゃったので次は条件分岐のことを書いてみたいと思います:)</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1170.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1170.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　defaultってなんだろ？状態のはなし</title>
		<link>http://slingweb.jp/1120.html</link>
		<comments>http://slingweb.jp/1120.html#comments</comments>
		<pubDate>Sat, 17 Jan 2009 17:02:15 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1120</guid>
		<description><![CDATA[defaultってなんだろ？ステート（状態)のはなしです
LSLというスクリプトはタッチされたり聞いたり何かが衝突したり
といったことをトリガーとして何かをするというスクリプトです。
こういったスクリプトの事をイベント駆動と]]></description>
			<content:encoded><![CDATA[<p>defaultってなんだろ？ステート（状態)のはなしです</p>
<p>LSLというスクリプトはタッチされたり聞いたり何かが衝突したり<br />
といったことをトリガーとして何かをするというスクリプトです。<br />
こういったスクリプトの事をイベント駆動と言います。<br />
ということはスクリプトを書き上げて<br />
コンパイルすると何かのイベントを待っているという<br />
待機の状態で始まります。</p>
<p>通常はこれでなにかのイベントをトリガーとして起動して<br />
オブジェクトを動かせてみたり、しゃべってみたり<br />
条件を付けて分岐したり、計算したりといった事をします。</p>
<p>しかしLSLはもうひとつ機能をもっています。<br />
それはプログラムの書き手が<strong>明確な区分け</strong>をして<br />
<strong>複数の状態を定義</strong>しその流れを決め<strong>遷移させて動かす</strong>ということが<br />
出来るということです。</p>
<p>このように書き手が区分けして定義して<br />
状態を遷移しながら動くプログラムを<span style="color: rgb(255, 20, 147);">ステート・マシン</span><br />
（状態機械）とか<span style="color: rgb(255, 20, 147);">オートマトン</span>とか言います。<br />
手順を明確に決めれば、状態を遷移することによって<br />
状態1でタッチした場合は「<span style="color: rgb(220, 20, 60);">ホイットはスケベ</span>」としゃべらせて<br />
状態2でタッチした場合は「<span style="color: rgb(220, 20, 60);">ホイットは紳士</span>」と文字を浮かべることが<br />
出来ます。<br />
*こんな小さなプログラムの「ホイットはスケベ」プログラムでは<br />
ステートチェンジ（状態遷移）をする必要はないんですけど、例題ねｗ</p>
<p>たぶん最初に小さなプログラムから挑戦するような<br />
この記事を読んでいる方はステートを変えるということをしないでも<br />
分岐したりとかそう言ったことでほとんどのプログラムを書き終えるでしょう。<br />
*どうやって条件をつけようとか、分岐しようとか<br />
それをいろいろ試したり考えたりするといろんなことが出来るようになるので<br />
そのほうが勉強になったりしますｗ</p>
<p>しかしある一定の大きさになった複雑なプログラムは<br />
同じイベントを違うように使いたい。同じオブジェクトなんだけど<br />
こういう時はこういう風に動いて、こういったときはまったく別の動きが<br />
したい！とか出てくると思います。<br />
そういった時にひとつのスクリプトのイベントのボックスの中で<br />
すべてに条件の分岐を考えたりして<br />
スクリプトを書くとすごく複雑になったり冗長になったりして<br />
すごく読みにくいプログラムになってしまったりします。</p>
<p>そのときにはステートを変えてしまい<br />
同じイベントでも違う動きに書いたりすることで<br />
見やすいわかりやすいプログラムにすることが出来ます。</p>
<p>ですから最初のdefaultってなんだ？は<br />
初期の状態はこの状態（default）で<br />
そこからLSLのスクリプトは始まって<br />
何かのイベントを待っている。<br />
さあどんなことをさせてみようかな？<br />
ということの宣言なのです。</p>
<p>今回の<a href="http://slingweb.jp/?p=917">かんたん翻訳機</a>では<br />
ステートの遷移はしていません。<br />
ただ最初にdefaultと書いてあるだけです。</p>
<p>ステートチェンジの使いどころとしては<br />
<span style="color: rgb(255, 20, 147);"><strong>1.同じイベントを使用したいのにぶつかる。</strong><br />
<strong>2.または必須のイベントを状態によっては<br />
動作させる必要が無いので完全に無くしたい。</strong><br />
<strong>3.全く違う動作を期待してるので状態を変えたい。</strong></span></p>
<p>このような条件の時でこのスクリプトの状態が変えられると<br />
判断できる場合には一考したほうが良いと思います。</p>
<p>なので今回の<a href="http://slingweb.jp/?p=917">かんたん翻訳機</a>では<br />
同じイベントもかぶらないし、必須のイベントをなくす必要もないし<br />
違う動作なんてないし・・・と言うことで採用していません。</p>
<p>ただ説明として最初のdefaultってなんだろ？にお答えすると<br />
ながーい説明になってしまいましたがｗ<br />
ますステート（状態）というものがLSLではあって、そして<br />
その中でトリガーをなることを待ち構えて待機してる。<br />
というのがさらーとご理解いただければいいかなぁ？と思います。</p>
<p>次の例題でスクリプトを書くときは<br />
しっかりステートチェンジのスクリプトを書いてみたいと思いますﾈ</p>
<p>さてお次は言葉ばっかり出てきて説明がまだのイベントについて<br />
書いてみたいと思います:)</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1120.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1120.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　グローバルへんすう？</title>
		<link>http://slingweb.jp/1082.html</link>
		<comments>http://slingweb.jp/1082.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 15:31:27 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1082</guid>
		<description><![CDATA[では変数ってなに＞＜
からちょーっち踏み込んでグローバルとローカル変数について
書いてみようかと思います:)
じゃぁグローバル変数に定義する変数ってどんなのがいいかなぁ？
{}の内外関係なくどのブロックでも読み]]></description>
			<content:encoded><![CDATA[<p>では<a href="http://slingweb.jp/?p=1025">変数ってなに＞＜</a><br />
からちょーっち踏み込んでグローバルとローカル変数について<br />
書いてみようかと思います:)</p>
<p>じゃぁグローバル変数に定義する変数ってどんなのがいいかなぁ？<br />
<span style="color: #ff1493;">{}</span>の内外関係なくどのブロックでも読み書きできるんだから<br />
グローバルに全部定義しちゃえばいいじゃない！？<br />
って考えませんか？</p>
<p>そうだ！全部一番上に書けばいいんだ！とスケベなホイットさんも言ってます。<br />
ﾊｲ</p>
<p>しかしそれだとちょっち問題が出てきてしまいます。</p>
<p><span style="color: #ff1493;"><strong>1.グローバル変数は必要のないときもたえずメモリを使うので<br />
メモリがもったいない</strong></span><br />
ローカルだとそのブロックから次に移ると値がメモリから開放されて<br />
消えちゃいます。<br />
LSLは使われるメモリがLSLで16KB、たとえMONOでコンパイルしたとしても<br />
最大でたった64KBです。<br />
*コンパイルとは実行できるように機械語にすること<br />
*64KBとはFDの約<del datetime="2009-01-17T18:05:52+00:00">1/23500</del>1/23くらいの大きさでちっさいﾃﾞｽ<br />
スｯゴイ計算違いしてた＞＜</p>
<p><span style="color: #ff1493;"><strong>2.ローカル変数で出来ることにグローバル変数を使うと<br />
煩雑になる</strong></span><br />
同じ変数名が使えなくてなんかスクリプトの最初の変数の定義で<br />
名前がずらずらーっとたくさんになっちゃう＞＜</p>
<p><span style="color: #ff1493;"><strong>3.どこからでも書き換えが出来るので思いもしないエラーを出す可能性がある</strong></span><br />
どこからも見れる（参照）と言うことはどこからでも<br />
書き換えが出来るということです。<br />
なのでー大きなプログラムを書いたときに、うっかりしてスクリプトの中で<br />
値を書き換えたりしたら全部のプログラムに影響が出ます。<br />
つまり修正が困難になってわけわかんなくなるｗ</p>
<p>などなど、問題が出てきちゃいます。</p>
<p>それもスクリプトとして書いたコードや計算したりして実行する場所のメモリも<br />
全部含めて16KBや64KBなのです。</p>
<p>ということで、こんなことにグローバル変数は定義するのが良いと思います。</p>
<p><span style="color: #ff1493;"><strong>1.可視性を考えて、絶対に変わらない値だとスクリプトを書く人が定義するとき。</strong></span><br />
*例外としてコメントをスクリプト内に書くことで可視性が保たれるならローカルでもいいと思います。<br />
<span style="color: #ff1493;"><strong>2.ブロックを越えて、値の参照、保存したいとき</strong></span><br />
*何度も同じ値を使いまわすときとか、何回も書くのもコードのむだだし<br />
他ブロックで出した値を次に送りたいよね。</p>
<p>こんなことを考えると<br />
<strong>ブロック内ですべての計算が完結して終わるもの</strong><br />
は<br />
<strong>ローカル変数</strong><br />
でするのが良いと思います。</p>
<p>また<br />
<strong>そのブロックでの計算の値がころころ変わるもの、変えたいもの、変わることを期待して書いたプログラムのブロック</strong><br />
は<br />
<strong>ローカル変数</strong><br />
を使用すべきなんだと思います。</p>
<p>ただしLSLはあまり効率が良くないスクリプト言語のようで<br />
最初からコンパイル後のコード圧縮などのために文字列やリストを<br />
グローバル変数に定義してしまうということもけっこうします。<br />
ただしこういった弊害があるかも？というのは<br />
ちょっち考えながら作ったほうがいいと思います。</p>
<p>変数のことを2回にわけて書きました。<br />
他にも注意点やもっと細かい説明を書かなきゃ＞＜<br />
と思うんだけど、<br />
スクリプトは変数などの細かいところから全体像までなんとなく理解しないと<br />
じゃ書いてみよ！っていうのがむずかしいと思います。</p>
<p>なので話を飛ばして、グローバル変数のうしろの<br />
ステート（状態）というところから次は書いちゃおうと思います:)<br />
*細かいところはブロックごとイベントとかそのつどで<br />
また細かく書いてみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1082.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1082.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　変数ってなに&gt;</title>
		<link>http://slingweb.jp/1025.html</link>
		<comments>http://slingweb.jp/1025.html#comments</comments>
		<pubDate>Thu, 15 Jan 2009 16:43:39 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1025</guid>
		<description><![CDATA[さてｗスクリプトの構造ってこんなになってるで最初にある変数の定義からちょーと説明をしてみます。
まず最初の変数って何？から解説です。
とりあえずグローバル（他にローカルってのもあります）は置いといて
変]]></description>
			<content:encoded><![CDATA[<p>さてｗ<a href="http://slingweb.jp/?p=1017">スクリプトの構造ってこんなになってる</a>で最初にある変数の定義からちょーと説明をしてみます。</p>
<p>まず最初の変数って何？から解説です。<br />
とりあえずグローバル（他にローカルってのもあります）は置いといて</p>
<p>変数ってなに？ってお話から<br />
変数とは何かというと<strong>「なんかの値を保存するメモリ上の空間」</strong>のことです。<br />
例えばね<br />
なにかプログラムが書きたーい！<br />
えーとわたしは<br />
<span style="color: #ff1493;">タッチしたときに「こんにちわ」とお話するオブジェクトが作りたい！</span><br />
とか思いついたとします。<br />
じゃその「こんにちわ」という言葉をLSLのメモリ上に覚えておいてもらって置こう！<br />
ということです:)<br />
ただしそこはコンピュータ、結構頭いいです。<br />
こんな感じの値が入るかも知れないから、場所確保しといてー<br />
としておくことも出来るし、途中で書き換えたいんだけど・・・<br />
ってわがままも聞いてくれちゃったりします。<br />
ただしちょーち条件がありまして、最初からどんなのが入るのか教えてあげてください。</p>
<p>それを変数の「基本のデータ型」とかただ単純に「型」いいます。<br />
LSLで使えるのはこの7つ<br />
<strong>integer</strong><br />
*int型、整数型とか言います　0とか1とか100とか1000とか整数が入れられます。<br />
<strong>float</strong><br />
*float型、浮動小数点型とか言います。0.1とか0.01とか小数点が入れられます。<br />
<strong>string</strong><br />
*str型、文字列型とか言います。「おはよう」とか<span style="color: #DC143C;">「ホイットのスケベ」</span>とか文字が入れれます。<br />
もう一度言います。<span style="color: #DC143C;">「ホイットのスケベ」</span>とか文字が入れれますｗ<br />
<strong>vector</strong><br />
*vector型とかベクトル型とか言います。　&lt;1.0,1.0,1.0>とかが入ります。<br />
SLは3Dなのでこんな変数の型が用意されてます。<br />
<strong>rotation</strong><br />
*ローテーション型。クオータニオンとかいいます。SLは3Dなので<br />
こんな変数の型が用意されてます。<br />
なんかこむずかしい＞＜　よくわかんない；；<br />
<strong>key</strong><br />
*キー型とかキーとかいいます。<br />
SLではオブジェクトもアバターもテクスチャーもいっこいっこに<br />
UUIDという16バイトの識別番号がついています。<br />
Universally Unique Identifierとか言うみたい・・・<br />
<strong>list</strong><br />
*リスト型といいます。文字列でも整数でもなんでもいれられます。配列です。</p>
<p>LSLはここらへんをきちっと指定してあげなきゃならないﾃﾞｽ</p>
<p>さてと、ここで話が戻ってグローバルていぎーの話！<br />
<a href="http://slingweb.jp/?p=1017">スクリプトの構造ってこんなになってる</a>から見てみると<br />
[状態・イベント・条件とかとか]<br />
<span style="color: #ff1493;">{　</span><br />
なんかする<br />
<span style="color: #ff1493;">}　</span><br />
って<span style="color: #ff1493;">{}</span>に区切られた形が見えるかと思います。<br />
これをブロックといいます。<br />
変数というのは<span style="color: #ff1493;">{}</span>の中に書くとローカル変数と呼ばれます。<br />
ローカル変数っていうのは、この<span style="color: #ff1493;">{}</span>の中でしかメモリ空間に保存されません。</p>
<p>では、<strong>文字列型</strong>の<strong>god</strong>を定義して<br />
それの中の<strong>値</strong>を&#8221;<span style="color: #DC143C;">ホイットのスケベ</span>&#8220;にしてみて<br />
どういう風になるのか見てみましょうｗ</p>
<pre>
状態・イベント(引数)・条件(式)とか
{
string god = "ホイットのスケベ";
llOwnerSay(god);
}
</pre>
<p>は、ちゃんと書いたとおりにお話できるのですが</p>
<pre>
状態・イベント(引数)・条件(式)とか
{
string god = "ホイットのスケベ";
}

状態・イベント(引数)・条件(式)とか
{
llOwnerSay(god);
}
</pre>
<p>とか書いてもお話できません。<br />
他の<span style="color: #ff1493;">{}</span>で定義して、定義した場所以外で書いても<br />
スクリプトは理解できなくて実行できません。</p>
<p>しかし</p>
<pre>
状態・イベント(引数)・条件(式)とか
{
string god = "ホイットのスケベ";
　　　　{
　　　　llOwnerSay(god);
　　　　}
}
</pre>
<pre>
状態・イベント(引数)・条件(式)とか
{
string god = "ホイットのスケベ";
　　　　if(ホイットは紳士){
　　　　llOwnerSay("えー！");
　　　　}else{
　　　　llOwnerSay(god);
　　　　}
}
</pre>
<p>これは理解できます。<br />
<span style="color: #ff1493;">{}</span>の外に書いてあるものは読めて<br />
その<span style="color: #ff1493;">{}</span>の外に出ると見えなくなっちゃうのです。</p>
<p>これを変数の有効範囲（scope）とか言います。<br />
一番外側に書いた変数はどの<span style="color: #ff1493;">{}</span>にも属さないで<br />
どこの<span style="color: #ff1493;">{}</span>からも見えて読めます。<br />
このことを、グローバル変数といいます。</p>
<p>グローバル変数の例ならこんな感じね</p>
<pre>
string god = "ホイットのスケベ";

状態・イベント(引数)・条件(式)とか
{
　　　　if(ホイットは紳士){
　　　　llOwnerSay("ありえなーい！");
　　　　}else{
　　　　llOwnerSay(god);
　　　　}
}
</pre>
<p><span style="color: #ff1493;">*ところどころで誰かさんの誹謗中傷があるような文章ですが、<br />
これはスクリプトのさんぷるであって、そんなことちっとも思ってません。<br />
ここが小ネタでした:)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1025.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1025.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　スクリプトの構造ってこんなになってる:)</title>
		<link>http://slingweb.jp/1017.html</link>
		<comments>http://slingweb.jp/1017.html#comments</comments>
		<pubDate>Thu, 15 Jan 2009 13:37:51 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=1017</guid>
		<description><![CDATA[前回のかんたん翻訳機の構造を簡単に書いてみます。
LSLって簡単に書くとこんな構造になっています。
これからこの中をひとつひとつを読み取ってみて
いったいどんな風になってるのかなぁ？というのを説明してみよーか]]></description>
			<content:encoded><![CDATA[<p>前回の<a href="http://slingweb.jp/?p=917">かんたん翻訳機</a>の構造を簡単に書いてみます。<br />
LSLって簡単に書くとこんな構造になっています。<br />
これからこの中をひとつひとつを読み取ってみて<br />
いったいどんな風になってるのかなぁ？というのを説明してみよーかと思います。</p>
<p>大まかに書くとこんなふうになっていますﾖ:)</p>
<pre>
変数の定義(グローバル)

状態
{
	on_rez(引数)
	{
	イベントがあった場合これをする（REZ）
	}
	state_entry()
	{
	イベントがあった場合これをする(ステートエントリー)
	}
	touch_start(引数)
	{
	イベントがあった場合これをする（タッチ）
	}
	listen(引数)
	{
	イベントがあった場合これをする（リスン）
		if(条件式){
		IFの式が真の場合はこれをする
		}else if(条件式){
		ELSE IFの式が真の場合はこれをする
		}
	}
	http_response(引数)
	{
	イベントがあった場合これをする（ＨＴＴＰレスポンス）
		if(条件式){
		IFの式が真の場合はこれをする
		}else{
		IFの式が偽の場合はこれをする
		}
	}
}
</pre>
<p>なんかいろんな言葉が出てきました。<br />
変数の定義？グローバルって？条件式ってなに？if？else？状態？<br />
なんですかこれ？おいしいの？って感じです＞＜<br />
大体にしてイベントってなんだ？って感じ；；</p>
<p>まずは言葉の意味から、形から順を追って書いてみますねー</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/1017.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/1017.html" />
	</item>
		<item>
		<title>mayukoの小ネタ　50行で作ったかんたん翻訳機</title>
		<link>http://slingweb.jp/917.html</link>
		<comments>http://slingweb.jp/917.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 18:38:14 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>
		<category><![CDATA[La maille]]></category>
		<category><![CDATA[mayuko]]></category>
		<category><![CDATA[スクリプト]]></category>
		<category><![CDATA[小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=917</guid>
		<description><![CDATA[ちょっちmayukoの小ネタということで、なんかスクリプトとか書くことになりました:)
なんかいいのないかなぁ？と・・・
んでこんなのどかな？
お題：たった50行のLSLで作るかんたん翻訳機！
*ブログの勝手な改行は抜きで50行だよ:)
]]></description>
			<content:encoded><![CDATA[<p>ちょっちmayukoの小ネタということで、なんかスクリプトとか書くことになりました:)<br />
なんかいいのないかなぁ？と・・・<br />
んでこんなのどかな？</p>
<p><span style="color: #ff1493;"><strong>お題：たった50行のLSLで作るかんたん翻訳機！</strong><br />
</span><span style="color: #ff1493; font-size: xx-small;">*ブログの勝手な改行は抜きで50行だよ:)</span></p>
<p>外部サーバのPHPとか、余計なサーバを通さないで<br />
SLから直接GoogleさんのAjaxapiに問い合わせさせてるので<br />
レスポンスは軽いと思います。<br />
でも、このslingのブログのためのネタとして作ったので、<br />
余計な機能はなんにもありません。そこらへん許してねｗ</p>
<p>この翻訳はJavaScript用に公開してるgoogleさんのサービスなのですが<br />
PHPとかrubyとかのスクリプトでも使えるようなサービスもあったりします。<br />
ならLSLで書いちゃえばぁ？<br />
って感じでちょっち書いてみたｗ</p>
<p>このスクリプトはパブリックライセンスということで著作権は放棄です。<br />
好きに使ってくださいね:)</p>
<p>で、こんな感じｗ<br />
*ホントはきれいにならんだコード書きたいのだけど、preタグ書いちゃうと<br />
横にはみ出しちゃうので、左にぺたっとくっついちゃうのは許してね；；</p>
<pre><code>key keyOwner;
integer listenDialog;
integer listenChat;
string ajaxURI_F = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&#038;q=";
string ajaxURI_S = "&#038;langpair=";
list listButton = ["英和","和英"];
list listStr = ["en%7Cja","ja%7Cen"];
string strDialog = "翻訳するのは日本語？英語？\n/7でしゃべってね:)";
key keyRes;
string langPair;
default
{
	on_rez(integer start_param)
	{
		llResetScript();
	}
	state_entry()
	{
		keyOwner =llGetOwner();
	}
	touch_start(integer total_number)
	{
		listenDialog =llListen(500,"",keyOwner,"");
		llDialog(keyOwner,strDialog,listButton,500);
	}
	listen(integer channel, string name, key id, string message)
	{
		if(channel ==500){
			llListenRemove(listenDialog);
			integer indexnum = llListFindList(listButton,[message]);
			langPair = llList2String(listStr,indexnum);
			listenChat =llListen(7,"",keyOwner,"");
		}else if(channel ==7){
			llListenRemove(listenChat);
			string requestMessage =llEscapeURL(message);
			keyRes = llHTTPRequest(ajaxURI_F + requestMessage + ajaxURI_S + langPair,[],"");
		}
	}
	http_response(key request_id, integer status, list metadata, string body)
	{
		if(status ==200){
			integer cherNum = llSubStringIndex(body,"translatedText");
			integer cherNum_end = llSubStringIndex(body,"responseDetails");
			string response = llGetSubString(body, cherNum + 17, cherNum_end - 6);
			llOwnerSay(response);
		}else{
			llOwnerSay((string)status);
		}
	}
}
</code></pre>
<p><span style="font-size: x-small;"><span style="color: #ff00ff;">※preタグにスクロールバーで対応するようにしました。</span></span></p>
<p>コードだけ書き込んじゃいましたが、これを教材にスクリプトってどんな感じで<br />
書くのん？って言う解説なんかをしてみよーかと思います:)</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/917.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/917.html" />
	</item>
		<item>
		<title>mayukoです！ヘルプミー！</title>
		<link>http://slingweb.jp/662.html</link>
		<comments>http://slingweb.jp/662.html#comments</comments>
		<pubDate>Sat, 10 May 2008 02:50:50 +0000</pubDate>
		<dc:creator>mayuko</dc:creator>
				<category><![CDATA[mayukoの小ネタ]]></category>

		<guid isPermaLink="false">http://slingweb.jp/?p=662</guid>
		<description><![CDATA[ちょっち画期的なベンダーを作りました＾＾

で、slingにお住まいの方でお店を営んでいる方をメインに
テスターさんを大募集します！
詳細はWEB上で発売前に発表しちゃうのもあれなのでｗ
ちょっち内緒ｗ
地域限定のロー]]></description>
			<content:encoded><![CDATA[<p>ちょっち画期的なベンダーを作りました＾＾</p>
<p><img id="image661" alt="apv.jpg" src="http://slingweb.jp/wp-content/uploads/2008/05/imgphp.thumbnail.jpg" /></p>
<p>で、slingにお住まいの方でお店を営んでいる方をメインに<br />
テスターさんを大募集します！</p>
<p>詳細はWEB上で発売前に発表しちゃうのもあれなのでｗ<br />
ちょっち内緒ｗ</p>
<p>地域限定のローカルネタですが、「私テストしてあげるよー！」と言う<br />
素敵な方を大募集しちゃいます！</p>
<p>操作のしやすさや使用感などレポートをちゃんと下さった方で<br />
もし気に入ってずーとつかってもいいよーとアンコールがありましたら<br />
テスターの方には謝礼として、このベンダーを希望する数量あげますｗ</p>
<p>気軽にIM下さい。<br />
よろしくですー＾＾</p>
]]></content:encoded>
			<wfw:commentRss>http://slingweb.jp/662.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://slingweb.jp/662.html" />
	</item>
	</channel>
</rss>

