2012年3月24日土曜日

お隣が埋まってちょっと活気出たかな

Mansion Mall店の隣の店舗がずっと空いてたんですけど、最近そこにTakuto Toolsさんっていう日本の方が入店されました^^
http://slurl.com/secondlife/Graybar/223/99/30


まだ看板が付いてない気がするんですけど、商品が並んでからもう数日経つのでOKなんでしょうかね?


店内はこんな感じです。スクリプト製品を主に販売されてて、うちに無いようなちょっと変わった機能が付いた装置とかが多いみたいです。

なので、お客様がうちに来られてコレって商品がなかったら、お隣さんのほうも見てもらったり、または、お隣さんに来られたついでにうちにも寄ってもらったりしたらいいなってtakutoさんが出店されるときにお話したんですよ。。。皆様、宜しくお願いします^^

2012年3月14日水曜日

新関数を使った長距離用高速テレポーターのスクリプト

昨日、何となく公式wikiのLSL関数一覧を見てたらllSetRegionPosっていう便利な関数が追加されてるってことに気がつきました。この新関数はllSetPosみたいな最大10mの移動制限がないので、SIM内長距離用のテレポーターとかを書くのが楽になりますね。。。ホント簡単にオブジェクトが一瞬で移動できます^^

昔書いた長距離用高速テレポーターのスクリプト にllSetRegionPosを使うよう書き換えてみたら、こんな感じでかなりシンプルになりました^^
// 長距離用高速テレポーター(新)
vector dest;  // 目的地の座標保存用
vector pos;  // 出発地の座標保存用

default
{
    state_entry()
    {
        llSitTarget(<0.2,0,0.55>, ZERO_ROTATION);  // 座る位置
        dest=llGetPos();  // 現在位置の座標を目的地に設定
        llOwnerSay("Destination = "+(string)dest);
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK) {  // リンクが変わったとき
            key id=llAvatarOnSitTarget();  // 乗ってるアバターのキー
            if (id) {
                if (pos) return;  // 出発地座標が設定されてるとき(動作中)はリターン
                pos=llGetPos();  // 現在位置を出発地の座標に設定
                llSetRegionPos(dest);  // 目的地へテレポート
                llUnSit(id);  // 目的地でアバターを降ろす
                llSetRegionPos(pos);  // テレポーターを出発地に戻す
                pos=ZERO_VECTOR;  // 出発地の座標をクリア
            }
        }
    }
}

移動させる部分以外は変更してないので、使い方は古いのと全く同じです。目的地でスクリプトをリセットしてから出発地に置くだけで使えます。