<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0">
<channel>
<title>物見遊山</title>
<link>http://tanakaakio.slmame.com</link>
<description></description>
<language>ja</language>
<pubDate>Thu, 20 Dec 2007 19:25:17 +0900</pubDate>
<lastBuildDate>Thu, 20 Dec 2007 19:25:17 +0900</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 
<generator>CLOG</generator>


<item>
<title>衝突</title>
<description>ガードレールに衝突。　スカルプトテクスチャを切り替えて凹んだように見せるつもりなんですが、ラグがあって最初の衝突ではしばらく丸くなってしまいます。スカルプトは光源によってかなり色が変わるのも特徴ですね。いいところでもありますが、意図しない色に見えてしまうことも。色を白にして太陽光がまともにあたると白くなりすぎて、ガードレールの溝が見えないこともあります。ちょっと灰色にした方がいいかもしれません。　何故かllPlaySoundを使うとスクリプトで記述していないところで、音がなったりするので、最近はllTriggerSoundを使うようにしてます。Video: Collision with guardrails　in second life.　愛用のSciTEエディタのコンパイラは、`PRIM_TYPE_SCULPT' is undeclared.`PRIM_SCULPT_TYPE_CYLINDER' is undeclared.などと言ってきて新しい定数に対応できてません。開発はとまってるらしいので、ＬＳＬエディタに代えた方がよさそうです。でも、なんか馴染んでしまってなかなか代える気がおきないんですよね。//guardrail.lslstring  defaultTex  =   "flat"; string  crashTex  	=   "crash"; string  crashsound  =   "crashsound";string  curTex;default	{    state_entry()	{        curTex  =   defaultTex;		        llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, defaultTex, PRIM_SCULPT_TYPE_CYLINDER]);    }	    on_rez(integer int)    {                llPreloadSound(crashsound);    }	    collision(integer num_detected) {        if  (curTex!=crashTex)  {            curTex  =   crashTex;            llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, crashTex, PRIM_SCULPT_TYPE_CYLINDER]);            llTriggerSound(crashsound,1.0);   //            llSay(0,"collision");        }        llSetTimerEvent(10);    }	    timer() {        curTex  =   defaultTex;        		        llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, defaultTex, PRIM_SCULPT_TYPE_CYLINDER]);        llSetTimerEvent(0);　　//おっと忘れてた    }}</description>
<link>http://tanakaakio.slmame.com/e278223.html</link>
<guid>http://tanakaakio.slmame.com/e278223.html</guid>
<category>簡単スクリプト</category>
<pubDate>Thu, 19 Jun 2008 15:27:26 +0900</pubDate>

</item>

<item>
<title>リンク番号と名前を調べるスクリプト</title>
<description>　20個ぐらいまでならなんとかリンク番号が狂わないように編集できますが、いっぱいになってくるとそれもなかなか大変です。　リンクオブジェクトの場合は、0番はないのでNULL_KEYが帰ってくるようです。(0 means no link, 1 the root/parent, 2 for first child)  1番から始まるので、終了判定を　i　</description>
<link>http://tanakaakio.slmame.com/e216501.html</link>
<guid>http://tanakaakio.slmame.com/e216501.html</guid>
<category>簡単スクリプト</category>
<pubDate>Tue, 22 Apr 2008 23:08:15 +0900</pubDate>

</item>

<item>
<title>デバッグ用のsay</title>
<description>　オブジェクトの中にいくつかスクリプトを入れていると、どれがsayしてるのか分からなくて困ることがありました。それに不要になったときsayがデバッグ用のものなのか確認しながら、最後には削除するわけですが、この関数でデバッグ用のsayをしておくと楽に検索できます。　llGetScriptName関数で得たスクリプト名とデバッグ用の文字をくっつけてsayします。 最初の変数debugmodeでスクリプトごとにデバッグ用表示をするかどうかを決めます。デバッグ用のsayでは、多くのメッセージがチャットウィンドウに流れてllSayだと迷惑がかかるので、llOwnerSayを使ってます。　しかし、最初にできるスクリプト「Hello, Avatar!」なんですが、あれってllOwnerSayを使うべきだと思うのですが。始めたころｌｌSayばっかり使って、かなりスパムをばらまいてました。ごめんなさい。// スクリプト sayDebuginteger     debugmode    =    TRUE;sayDebug(string s)    {    if(debugmode)    {        s    =   llGetScriptName() +    ":"    +    s;        llOwnerSay(s);    }        }default    {    touch_start(integer total_number)    {        sayDebug("HELLO!");    }}</description>
<link>http://tanakaakio.slmame.com/e152856.html</link>
<guid>http://tanakaakio.slmame.com/e152856.html</guid>
<category>簡単スクリプト</category>
<pubDate>Sun, 24 Feb 2008 19:34:39 +0900</pubDate>

</item>

<item>
<title>自爆スクリプト</title>
<description>スクリプトコードのをエスケープするの忘れててあわてて直しました。　作ったオブジェクトを消すとき普通は、１.Takeする２.削除する３.ゴミ箱から除外すると３つの手順が必要ですが、これがとても面倒です。しかも、持ち物のインターフェイスが反応が遅くてたまりません。（物が多すぎるのかな・・・）　それで、スクリプトを調べているうちにすぐに抹消する命令がありました。llDie()という関数なのですが、ちょっと工夫してオブジェクトにドラッグしてクリックしたら抹消できるスクリプトを作りました。// スクリプトTouchToDieWithDialoginteger dialogHandle;integer ListenChannelDialog=10; default    {    touch_start(integer total_number)    {        dialogHandle = llListen(ListenChannelDialog, "", llGetOwner(), "");           string mes = "Do you delete this " + llGetObjectName() + " really?";            llDialog(llDetectedKey(0), mes , ["&amp;lt;OK&amp;gt;","&amp;lt;CANCEL&amp;gt;"] , ListenChannelDialog);            }    listen(integer channel, string name, key id, string message)    {        if (channel==ListenChannelDialog )        {        //for llDialog            if  (message == "&amp;lt;OK&amp;gt;")    {                llOwnerSay( llGetObjectName() + " say \"Bye!\"");                llDie();                            }         }        llListenRemove(dialogHandle);      }}　このスクリプトですが、持ち物の中に作ります。「作成」＞「新しいスクリプト」をクリックします。　Scriptsフォルダに「New Script」ができてます。　これをリネームして、「TouchToDieWithDialog」とします（なんでもいいですけど）。　それで、自動作成されたスクリプトを消してさっきのコードをコピペして、保存します。「Compile successful!」と下の欄に表示されたら完了です。　これで準備は完了です。さぁ、試してみましょう。　さっきのスクリプトをオブジェクトにドラッグします。クリックすると削除するかダイアログで確認してくるので、OKをクリックすると跡形もなく消えてしまいます。もうどこにもありません。でも、modify可のオブジェクトにしかできませんけどね。</description>
<link>http://tanakaakio.slmame.com/e112504.html</link>
<guid>http://tanakaakio.slmame.com/e112504.html</guid>
<category>簡単スクリプト</category>
<pubDate>Sat, 12 Jan 2008 23:44:59 +0900</pubDate>

</item>


</channel>
</rss>