2009年10月31日土曜日

スライドショーのスクリプト

今回はコンテンツに入ってるテクスチャを順に表示する、スライドショーって感じのスクリプトです^^

タイマーで一定時間毎にテクスチャを張り替えたらいいんですが、ただ順に表示するだけだったら簡単すぎるのでフェードイン、フェードアウトするようにしてみました。まあ、ありがちですけどね^^;

// スライドショー
float time=10;  // 表示時間(秒)
float val=0;  // 加減値用
integer int=0;  // カウンタ
integer dir=1;  // 符号設定用

default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー始動
    }

    timer()
    {
        llSetTimerEvent(0.1);  // タイマー0.1秒
        if (val > 1) {  // valが1を超えたら
            dir=-1;  // 符号をマイナス
            llSetTimerEvent(time);  // タイマーを調整して一定時間表示させる
        }
        else if (val < 0) {  // valがマイナスになったら
            dir=1;  // 符号をプラス
            integer i=llGetInventoryNumber(INVENTORY_TEXTURE);  // コンテンツ内のテクスチャ数
            int++;  // カウンタを進める
            if (int >= i) int=0;  // カウンタがテクスチャ数を超えたら0にする
            string texture=llGetInventoryName(INVENTORY_TEXTURE,int);  // カウンタからテクスチャ名取得
            if (texture) llSetTexture(texture,0);  // 面番号0にテクスチャ表示
        }
        val+=0.05*dir;  // 加減する値を計算
        llSetColor(<val,val,val>,0);  // 面番号0の色を設定
    }
}

フェードイン、フェードアウトは色を白から黒く変化させています。色設定の代わりにllScaleTextureを使うとズームイン、ズームアウトする感じにできますが、この関数は0.2秒遅滞があるので、あまりスムーズにならないですね。

2009年10月28日水曜日

YouTubeが少し変わってた

LSL CONは2,3回に分けて、ざっとですが見てきたんですが、Ys@MALLのトレハンは気がついたら終わってて行きそびれた千尋です^^;

YouTube TV screenなんですが、お客様から映らない動画があるってご連絡もらったので、TVをいろいろテストしたんですね。その時、うちで用意してた変換サーバーを使ってみたら、どの動画も全然映らなくなってました><

それでYouTubeの動画ページを調べてみたら、JavaScriptの変数名とかが変更されてたんですよ。。。ううぅ、いつの間に仕様が変わってたんでしょうか。とにかくPHPスクリプトを修正して映るようになりました^^;

2009年10月27日火曜日

ワゴン借りてお小遣いもらいましたw

昨日、Zindraで見つけた小さなモールでワゴン借りたんですが、借りようと思ったワゴンの上にパイが4個置いてあったんですね。それでオーナーの方に、「このワゴン借りれますか?」って問い合わせてみたら、「借りれます。パイはタッチで姿を消します」ってお返事がありました。

それで、ハロウィンなので何か仕掛けがあるのかな。。。爆発してもびっくりしないようにしようwって思ってタッチしたら、その瞬間パイが消えて5L$もらいました@@;

あー、これはお金を拾われるスクリプトみたいになってたんですね。でも、私がもらっちゃっていいんでしょうか。キャンプのような感じで置いてたんじゃあ。。。全部食べていいですか?って聞いたら、「どうぞ、私のおごりです」って言われたので4個とも頂いちゃいましたw(あ、パイが乗ってるワゴン撮影してたら良かったんですが。。。^^;)

金額は4個ともバラバラに設定されてて(ランダムかも?)合計14L$になりました。別にお金に困ってたわけじゃないんですが、何か微笑ましい仕掛けだなって思ってちょっと嬉しい気分になりました^^

2009年10月23日金曜日

テレポート元を記録するスクリプト

テレポート履歴を記録するスクリプトみたいなテレポート先じゃなくて、テレポートしたらビューワーの機能でチャット履歴に
Teleport completed from http://slurl.com/secondlife/Artsebarsky/236/185/23
みたいに表示されるリンクありますよね。そのテレポート元アドレスを履歴として記録できる機能を持ったHUDか何かが、前どこかで売られてるのを見たことがあったと思うんですよ。

その時は、そういうのもあるんだって思ったんですけど、今回はそのテレポート元を記録するスクリプトを考えてみました^^

一定時間毎に現在位置をチェックするようにして、テレポートした直後にタイマーを止めてテレポート前の位置データを記録させます。ただ、これだけだとタイミングによってテレポート直後の位置データが記録されちゃうことがあるので、一時リストに何件か保存しておいて、テレポート直後のデータと比較して違ってたら履歴リストに記録するようにしました。

// テレポート元を記録
list tp;  // テレポート元履歴用リスト
integer max=20;  // 最大記録数
list tmp;  // 現在位置一時記録用リスト
float time=1;  // チェックする間隔

string get_pos()
{
    vector v=llGetPos();  // 現在位置取得
    // リージョン名を取得して現在位置をRegion/x/y/zにする
    return llEscapeURL(llGetRegionName())+"/"+(string)((integer)v.x)+"/"+(string)((integer)v.y)+"/"+(string)((integer)v.z);
}

default
{
    state_entry()
    {
        llSetTimerEvent(time);  // タイマーをセット
    }

    timer()
    {
        tmp+=[get_pos()];  // 現在の位置データを一時的に記録
        if (llGetListLength(tmp) > 10) tmp=llList2List(tmp,-10,-1);  // tmpの記録数を10件に調整
    }

    changed(integer change)
    {
        if (change & CHANGED_TELEPORT)
        {  // テレポートしたとき
            llSetTimerEvent(0);  // タイマー停止
            string here=get_pos();  // 現在の位置データ取得
            string str=here;
            integer i;
            integer j=llGetListLength(tmp);
            for (i=0; here == str && i < j; i++)
            {  // 現在の位置データと比較して一時記録リストからテレポート直前の位置データを取得
                str=llList2String(tmp,i);
            }
            i=llGetListLength(tp);  // 履歴リストの長さ
            if (i >= max) tp=llList2List(tp,-max,-1);  // 履歴リストの長さを調整
            tp+=[str];  // テレポート元を履歴リストに加える
            llSetTimerEvent(time);  // タイマー開始
        }
    }

    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチするとSLURLにして履歴リストを表示
            integer i;
            integer j=llGetListLength(tp);
            llOwnerSay("** TP from location history **");
            for (i=0; i < j; i++) llOwnerSay("http://slurl.com/secondlife/"+llList2String(tp,i));
        }
    }
}


2010年4月2日追記: ビューワー2.0.0からスペースの入ったSIM名のリンクがおかしくなるのでURLエンコード追加しました。

2009年10月22日木曜日

うちの支店に他所様製のラキボが

この前、新しくなったラッキーレターの広告を何ヶ所かで出したんですが、クリックの多かったところと広告費が格安だったところを継続しようと思って、昨夜、追加で支払いに回ってたんですね。
それでFukuoka SIMにあるモールの近くで借りたADボードに支払ったあと、次の場所に移動しようと思ってたら、そちらを経営されてるMiabiさんに話しかけられまして、広告出したお礼を言われました^^

そして、ラッキーレター作られてるんですか?って聞かれて、新機種が出たので広告出してみたんですって感じで少しお話してたら、Fukuoka Honey's Mallに支店出してみませんか?っていう話になりました。

そのモールは、月額1L$のレンタル代と売上の30%を徴収するようになってるんですね。(モールの看板にはポイント制がどうとかややこしそうなことも書いてありましたが、そのシステムはまだだそうです)
それで、こういう形態のところは出店したことがなかったので、試しに出店してみることにしました。

契約してグループ加入と「出店セット」を頂いた後、その日は準備せずに帰ったんですが、今日準備に行こうと思って、出店セットを確認したらShop NNさん製のラッキーボードが入ってました。。。あー、そういえば借りるときラッキーボードも設置してくださいって言われてました。もちろん、うちのラッキーレターを設置したらいいと思ってたんですけど;;

元々ラッキーレター(SHOP CHIHIROのラキボ)の広告のために来たはずなのに、他所様製の競合製品をうちの支店に設置するなんて、何かアホみたいじゃないですかね。。。んー、でも、まあいいか orz

賞品は天板のガラス面に浮世絵を写したような感じのテーブルです。テクスチャは去年景品に使った浮世絵パネルの使いまわしなんですけどね^^; あとパッケージに書き忘れてますが3プリムです。

店舗はこんな感じです。よろしくお願いします^^
http://slurl.com/secondlife/Fukuoka/100/38/24

11月28日追記: Fukuoka Honey's Mallですが改装されるそうなので、本日商品を撤去しました。

Ys@MALL トレハン 秋の収穫祭 2009

トレハン用のアイテムがなかなか思いつかなくて、開始日の午後過ぎてやっとアイテムが完成してホッとした千尋です^^;;

今夜からYs@MALLのトレハンが始まりました^^
トレハン まもなくスタート!Ys@MALL(Ys@MALL / もっさい商店街w)

Yaskeyさんの経営されてるショッピングモール、商店街が対象区域です。いっぱいありますが、確かGreece以外はSIMが違っても場所的に隣同士とかでスグ近くだったと思います。。。私は方向音痴なので、もっさい商店街の辺りでよく迷っちゃうんですが^^;
Ys@MALL Wyrlsong
Ys@MALL Symmetry & mossai(もっさい商店街)
Ys@MALL SATSUKI(颯月)
Ys@MALL Romantic Street(ロマンチック街道)
Ys@MALL Greece

参加店とアイテム一覧です。
http://www.yaskey.cside.tv/japanvillage/Ys@MALL/torehun2009.php

うちはStanding signboard(立て看板)をトレハンのアイテムとして作りしました。。。あ、でもお店とかされてない方にはイラネって言われちゃいそうですね(すみません><

スタンドっていうかフレームの部分がスカルプで、サインボード部分と合わせて全部で2プリムです。テクスチャを1枚コンテンツに入れると表示します。それからランドマークやノート、オブジェクトなどをコンテンツに入れるとタッチしたアバターに渡せるようになってるんですよ。あと、グループ限定もできるようにしたので、何となくグループギフト配布とかにも使えそうな気がしますw

宝箱は小さな栗の形です。うちはワゴンなので見つけるのめっちゃ簡単だと思いますけどw
SATSUKIのワゴンに隠しに行ったときにラッキーレターアップデートクライアントも置いてきたんですよ。なので過去ラッキーレターをお買い上げ頂いた方は、ついでにラッキーレターoneもゲットしていってくださいね^^

ラッキーレターoneは1プリムの新型ラッキーレターです。ソラマメとか見てたら数人のお客様がブログで紹介してくださってました。どうもありがとうございます!!><

3時10分頃追記: 期間は2009年10月21日(水)22時~10月27日(火)22時(日本時間)です。期間中は花火大会やマーメイドショーも企画されてるので皆様是非お越しくださいね^^

2009年10月16日金曜日

Lucky letter oneのスキン?

この前お問い合わせがあったんですが、ラッキーレターone(1プリム版)は自作のボード用スキンを貼って使用することができません。。。なぜかっていうと、1プリム化したことでレターや時間毎に同じ背景で一覧表みたい敷き詰めて作ってるからテクスチャ製作が大変なのと、稼動中にスクリプトで直接テクスチャのUUID指定してる部分があるのでスクリプトの書き換えも必要なんです^^;

はい、勘のいい方はもうわかったかなって思いますけど、従来の3プリム版ラッキーレターを廃止しなかった最大の理由はやっぱりこのスキンですね。3プリム版はグループ限定オン・オフを切り替えたり、スクリプトをリセットしたらスキンが元に戻りますが、その点に気をつければ一応自作したスキンを背景部分に貼り付けて使用することができます^^
http://backup-beta.blogspot.com/2009/02/blog-post_5967.html

ってことで、ラッキーレターoneには自作スキン使えないんですけど、隠しモードみたいな感じで、3プリム版ラッキーレターに似たブラックレターモードがあったりします。オレンジ色には黒い文字のほうが、やっぱり遠くから見たとき視認性がいいかなって思うのでこっそり実装してたんですよw

文字の大きさがちょっと違ってる部分あるけど、真ん中のレターが影付きになってる以外はそっくりだと思いますw 黒文字にする方法はBlack letterっていう名前でノートを作って(中は空でOK)それをコンテンツに入れると切り替わります。。。でもホントは数種類スキンを作ってメニューで切り替えられるようにしようかなって思ってたんですけど、そこまでする根気がなかったんですね^^;;

10月18日追記: ちなみにオレンジの背景はハロウィンのカボチャを意識して作ってるとかじゃありませんwww ラッキーレター発売開始は去年の6月頃ですし。。。ラッキーって感じの色は、私は金色とか黄色辺りの色をイメージしたのでオレンジ色のグラデーションに決めたんですよ。

12月21日追記: この隠しモードはV1.0.2からスキンチェンジメニューで切り替えできるようになったので後のバージョンでは廃止になりました。