セカCHU☆

SecondLifeのこと

実験結果は成功だよ

2008年08月28日 23時55分04秒 | セカンドライフのすくりぷと
SecondLifeよりも綺麗なVirtualSpaceはいっぱいあるけれど、
SLほど自由に物を生み出す仕組みが揃ってるのって、ないよね。
唯一にして絶対的なアドバンテージだよね


前回のscript、実験してみたよ。
思ったとおりでしたぁ

2つのprimをlinkさせておいて、親primにはタッチとllLinkMessageを入れておいて、
もう1つの子primには、ownerの名前を調べてllSayするscriptを入れてっと。

それからprimをタッチするとー

こんなふうにメッセージが出たよ
後からprimの名前を見てみると、親primは最初のまんまobjectで、子primは私の名前に変わってました。
primが喋るからメッセージの色は緑色だけど、今までの中で一番違和感の無い方法なのかもしれないね

絶対遵守の力ももうすぐ完成かなっ
せめてアニメが終わっちゃわないうちに作らなきゃ


親primの実験scriptだよ
default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

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

子primの実験scriptだよ
key master_key = NULL_KEY;
string master_name = "";

default
{
    state_entry()
    {

    }

    link_message(integer send_num,integer num,string str,key key_id)
    {
        master_key = llGetOwner();
        master_name = llKey2Name(master_key);
        llSetObjectName(master_name);
        llSay(0,master_name+"が命じる!");
    }
}

ここまでー

objectなんだけど、本人が喋ってるように見せる案?

2008年08月26日 03時15分05秒 | セカンドライフのものづくり
ちょっとだけ思いついた事、忘れないようにメモしておきます

絶対遵守の力を作る上で、うまくいかなかったこと。
どうしてもobjectが喋っちゃう部分なんだけど、linkしてある別のprimの名前を
llSetObjectNameと、llGetOwnerと、llKey2Nameを組み合わせて、
objectの名前を自分の名前に変えちゃえば、
そのobjectを喋らせることで自分が喋ってるように見えなくもないんじゃないかなぁ。

chatの文字が緑色で出るから、自分で喋った言葉じゃないのは見てすぐばれちゃうんだけど、あんまり違和感もないような気がしない?

ちょっと試してみなくっちゃね

LSLエディタが改良されてるね

2008年08月23日 19時25分48秒 | セカンドライフのすくりぷと
今まで漢字が使えなかったのが、いつの間にか使えるようになってますね
lslのコメントをローマ字で書くとすぐ1行いっぱいになっちゃってたから、漢字が使えるのすっごく便利
便利記念に、あんまり役に立たないscriptの覚書を書いてみようと思いまぁす

戦車の砲台script
integer stat = 0; //撃ってないか、撃ち終わったか
integer sex = 0; //最初に選択する性別
integer hundle; //聞き耳
list play_anim = ["canon-f","canon-m"]; //性別に対応したアニメの名前

default
{
  state_entry()
  {
//ここは空っぽでいいの?
  }

  attach(key id)
  {
    if (id != NULL_KEY)
    {//装着した時だけ、dialogを出してポーズが選べるよ
      hundle = llListen(-44,"",llGetOwner(),"");
      llDialog(llGetOwner(),"I am a....",["man","woman"],-44);
    }
  }

  touch_start(integer total_number)
  {
    if (stat == 0)
    {//まだ撃ってない時の処理
      stat = 1;
      if (llDetectedKey(0)==llGetOwner())
      {//タッチしたのが所有者の時だけ、弾発射ー
        llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);
        llStartAnimation(llList2String(play_anim,sex));
        llSleep(1.9);
        llPlaySound("tankfire",1);
        llMessageLinked(LINK_ALL_OTHERS,0,"flash",NULL_KEY);
      }
    } else {//撃った後の処理
      stat = 0;
      if (llDetectedKey(0) == llGetOwner())
      {//タッチしたのが所有者の時だけ、アニメ終了
        llRequestPermissions(llGetOwner(),PERMISSION_TRIGGER_ANIMATION);
        llStopAnimation(llList2String(play_anim,sex));
      }
    }
  }
   
  listen(integer ch,string uname,key uid,string mes)
  {//装着してポーズを選ぶまでの間は聞き耳。
  //聞いたら性別をセットして聞き耳終わるよ。
    if (mes == "man")
    {
      sex = 1;
      llListenRemove(hundle);
    } else if (mes == "woman")
    {
      sex = 0;
      llListenRemove(hundle);
    }
  }
}

戦車の爆発script

default
{
  state_entry()
  {
//ここは空っぽでいいの?
  }

  link_message(integer sender_number, integer num, string str, key id)
  {
    if (str == "flash")
    {//"flash"のLinkMessageが来たら爆発表示するよ
      llSetTexture("muzzleflash",ALL_SIDES);
      llSleep(0.2);
      llSetTexture(TEXTURE_TRANSPARENT,ALL_SIDES);
    }
  }
}


どっちから見ても正面に見える看板
default
{
  state_entry()
  {

  }

  touch_start(integer total_number)
  {
    llOwnerSay("touched");
    string texture = "Snapshot";//POPのテクスチャ名
    llParticleSystem(
    [  PSYS_PART_FLAGS , ( 0 |
        PSYS_PART_EMISSIVE_MASK |
        PSYS_PART_INTERP_COLOR_MASK |
        PSYS_PART_INTERP_SCALE_MASK
        )
       ,PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE
       ,PSYS_PART_START_ALPHA, 1.0
       ,PSYS_PART_END_ALPHA, 1.0
       ,PSYS_PART_START_COLOR, <1,1,1>//色
       ,PSYS_PART_END_COLOR, <1,1,1>//色
       ,PSYS_PART_START_SCALE, <2,2,2>//大きさ 最大4x4x4
       ,PSYS_PART_END_SCALE, <2,2,2>//大きさ 最大4x4x4
       ,PSYS_SRC_MAX_AGE, 0.0
       ,PSYS_PART_MAX_AGE, 3.0
       ,PSYS_SRC_ACCEL, <0.0, 0.0, 0.0>
       ,PSYS_SRC_OMEGA, <0.0, 0.0, 0.0>
       ,PSYS_SRC_ANGLE_BEGIN, PI
       ,PSYS_SRC_ANGLE_END, 0*DEG_TO_RAD
       ,PSYS_SRC_BURST_PART_COUNT, 1
       ,PSYS_SRC_BURST_RATE, 1.0
       ,PSYS_SRC_BURST_SPEED_MIN, 0.0
       ,PSYS_SRC_BURST_SPEED_MAX, 0.0
       ,PSYS_SRC_TEXTURE,texture
    ]);
  }
}

touchで飛び跳ねる箱
integer TOUCH=0;  // touch hantei
integer DOCCHI=0;

default
{
  state_entry()
  {

  }
  
  touch_start(integer total_number)
  {
    if (TOUCH == 0){
      llSetTimerEvent(1.5);
      TOUCH = 1;
      llSetText("hop",<1,1,1>,1);
    } else {
      llSetTimerEvent(0.0);
      TOUCH = 0;
      llSetText("off",<1,1,1>,1);
    }
  }

  timer()
  {
    llApplyImpulse(<0,0,10>,FALSE);
  }
}

戦車完成☆

2008年08月23日 16時53分13秒 | セカンドライフのものづくり
ヤッホー、ヤッホッホー、○ーブラヤッホー
完成したよ



またまたインターネットでの写真を探して、撃つ瞬間の爆発を頂いちゃった
自分で描ければって思ってたんだけど、無理だよこんなのー
煙のパーティクルはどうかな?とも思ったけれど、やっぱり絵のほうが迫力あるよね

前から見るとペラペラだから、十字に交差させて後ろからも見えるようにしたよ。
爆発のトコにちょこっと点が見えてるのは、私の技術不足なんだー
音が鳴る瞬間だけ、爆発1プリムにつき裏と表の2枚のtextureを出して、ちょっと後に全部の面を透明にして見えなくしちゃう作戦だったの。
だけど、このtextureを出す命令って、1つにつき0.2秒掛かっちゃうの忘れてた。
1つの命令で出せる面って、1箇所か全部の面かのどっちかだから、
2面に絵を出そうとすると、命令2つ必要になって0.4秒掛かっちゃうのね。
プリム毎に同時に命令を動かしてるから、交差させた2プリムで合計4枚の絵を出すのでも、命令2つを同時に2回で、結局0.4秒。
最悪の2倍で0.8秒っていう事態にはならなかったんだけれど、それでも0.4秒って十分長いよ、全然一瞬じゃないよ。

どうしようか考えて、結局命令1つで全部の面に爆発の絵を出すことに。。。
だから、細ーい縦の面にもじつは絵が出ちゃってるのね
あんまり目立たないからいいけれど、これが売り物だと許されないレベルだよねー


それと、作った後でちょっと考えてみた。
戦車って夢がないよね。
銃やナイフと違って、完全に人間を殺すためだけにしか使われない兵器だもの。
作っちゃったからしょうがないけど、次はもっと夢のあるの作らなきゃダメね



p.s.
よほどじゃないとLMを取らない私
持ってるLMの、古いのから新しいのまで一気に飛んで、今どうなってるか確認してみると、、、
ビックリ、半分くらいは空き地になっちゃってました。
LMを取り始めたのって今年に入ってからだから、半年足らずでどこか他所に移転しちゃってるのね。
お客さん逃がしてないのか、ちょっぴり心配です。
私みたいな人だと、たぶんそれ以上探さずにLMをゴミ箱にポイだもん。
容姿(skinとかshape)とか店舗とか、頻繁に変えちゃってると、見かけても声を掛けられない人になっちゃうよー。
それってすごく悲しいよね。

なので、おうちには興味あるけれど、SIM購入ブームに乗っかっただけのオーナーさんが淘汰されるかなって思う3ヶ月くらい様子を見てから、土地借りたいなって密かに企んじゃってます。
誰かのグループハウスにしちゃってもいいよね。
住むなら長く居られるところで、環境SIMじゃないところね

戦車♪その3

2008年08月16日 14時35分33秒 | セカンドライフのものづくり
男の子用と女の子用を一緒にして、あとは爆発を作れば完成かな


THiRD-iが業務終了で使用できなくなりますっていうことだったんだけど、
今のところは使えてます。
私はAOとRSSを使ってて、使えなくなると少し不便になっちゃう。
使えなくする事にどんな意味があるの?って思ってたけれど、このまま開発保守停止という事なのかな。
それなら一安心


の男の子ポーズと女の子ポーズを、装着した時のダイアログで選べるようにしたよ。
初めてダイアログ使ったよ~
ボタンを押すとchatに発言して、それをListenで拾う仕組みなのね。
すっごい簡単 だけどListenに全部の負担が集中しちゃいそう

男の子ポーズも中に入れて、ほぼ完成の予感なのです
私の場合、この「ほぼ」完成からが超長ーいんだけどね




p.s.
相変わらず買おうかなって思う靴がないんだよねー。
どっちを見ても、ピンヒール、ピンヒール、ピンヒール
みんなそんなに普段からハイヒール履いてるの? ホントに?
ゴシックな服に合いそうなメリージェーンを探してても、全然売ってないよ~。