MH+ Alive-C viewer update (v1.6)

MH+ Alive-C viewerがVersion 1.6となりました。
UIまわりの見た目の変更がメインです。
スマートフォン風のバックパネルを取り払い一回りコンパクトになりました。
あと、効果の程は不明ですがZオーダーの不具合回避になるかと思い、装着時にHUD上のX軸方向を少しオフセットするように仕掛けてみました。

変更点は
----- v1.6 (2017/01/27) -----
・UI用のテクスチャを統合して軽量化
・UIデザインをフラットな外観に変更
 (アイコンはhttp://www.iconsdb.comより取得)


新バージョンは各地にあるCasperVendの再配送ターミナルから受け取ってください。
(近くにない場合はMH+ Labsの店内にあるre-delivery端末をご利用下さい。)

出歩けないアバターな場合はマーケットプレイスのご利用もどうぞ~

Welcomeマットを作ろう

俗にwelcomeマットというもの。アイテムとしては店先にある玄関マットの事ですがSecondLife的には来訪者に何らかのアクションを行うアイテムというところでしょうか。どうやって来訪者を検出して動作をするかで色々なタイプが考えられます。

・そのまま玄関マット形状でアバターの衝突を契機にするもの
・透明なVolumeDetect物でアバターの衝突を契機にするもの
・ドアなどの出入り口の操作などを契機にするもの
・範囲レーダーでアバターの検出を契機にするもの
・区画に存在するアバターの増減を契機にするもの
・CastRayで遮蔽物としてアバターの検出を契機にするもの

まぁ普通に考えると上2つでしょうね。



VolumeDetectというのは左図のように見た目はファントムのオブジェクトと同じでアバターなど物理物が通過できますがファントムと違って衝突の検出が可能なものです。板状の敷物だとテレポートの着地時に浮遊しているアバターだと衝突が発生しませんがVolumeDetectなら飛んでいるアバターでも検出できます。

どうしてこんな基本的なスクリプトに触れてみたかは、あまりにも簡単なことなので誰もわざわざ書こうとしないと思ったからw 簡単な事でもきっかけがないとやってみようとか思わないでしょうから、わざとらしく書いてみるということなのです。 特にVolumeDetectはプロパティなのにスクリプトからしか弄れない項目なので試しにやってみて損はないでしょう。



key Prev_KEY;

default{
    state_entry(){
        llVolumeDetect(TRUE);//VolumeDetectを使わない場合、この行は削除
    }
    
    collision_start(integer num_detected){

        //アバター以外の衝突は無視する
        if(!(llDetectedType(0) & AGENT)) return;

        //前回と同じKeyの場合は無視する
        if(llDetectedKey(0) == Prev_KEY ) return;

        //key値の置き換え
        Prev_KEY = llDetectedKey(0);

        //カウンタの加算
        integer CNT = (integer)llGetObjectDesc();
        if(CNT == 0xFFFFFFFF) CNT = 0;//越える事はないと思われるけど念のためw
        llSetObjectDesc((string)(++CNT));

        //メッセージの出力など
        llRegionSayTo(Prev_KEY,0, "ようこそ!いらっしゃいませ♪ " + (string)CNT + "番目のお客様。");
        llRegionSayTo(Prev_KEY,0, "ごゆっくりお楽しみ下さい。");

    }
}

お堅い人だと衝突で複数個検出したらどーするのと思うでしょうけど、そんな同一フレーム内でアバターが同時に現れるなんてあり得ませんから気にしなくていいかとw それでも気になる人は検出個数分ループで回しましょう。 あと注意点としてはこういったアイテムでは遅延による動作停止はマズイのでllInstantMessageなどのディレイのある関数使用は避けましょう。 どうしても来訪者の有無をIMで通知したりメールで送ったりなどディレイのある関数を使いたい場合は、別のスクリプトを用意してLinkMessageをトリガーにして動作させれば別のスクリプトは停止してもメインのスクリプトは影響なく動き続けます。そういった工夫をしてみましょう。

Popular Posts of the Month