Site search

Google
WWW を検索 backup-beta.blogspot.com を検索

2009年8月22日土曜日

一応移転しときます

新製品の発表はブログでしなくてもXstreet SLに出品したら、まあ売れるかなって思ってたんですが、製品にバグとかあったときは、やっぱり告知できる場所が必要だなって思ったので、一応Bloggerを借りてみました。

放置かも~ SHOP CHIHIRO

っていうか、Profile picks gift giver http://backup-beta.blogspot.com/2009/06/blog-post_975.htmlにバグが見つかったので修正したんですよ^^;;
そのバグや改良点については後で移転先に記事書きますね。。。まだBloggerの使い勝手がよくわかってないんですけどw

このブログは削除せずに放置しときますが、コメントは不可に設定して、サイドバーに入れてたお店のSLURLや主要商品一覧(記事へのリンク)は外しました。

ソラマメの運営者様、当ブログをご覧くださいました皆様、大変お世話になり有難うございました。今後は移転先で情報を発信することになります。宜しくお願いします。


2009年8月19日水曜日

ソラマメ商用有料化に伴いサスペンドモードに移行します

http://staff.slmame.com/e710467.html
10月からソラマメの商用利用が有料になりますが、うちは最初からお店の商品の宣伝目的で始めたので思いっきり商用ですね^^;

商用利用の月額840円っていう価格はブログサービスの中ではかなり高価なほうだと思います。なので、この機会に移転される方も多いんじゃないでしょうかね。うちもソラマメでブログを始めて商品の売り上げが伸びたので、ソラマメさんにはホント感謝してるんですよ。でも、月それだけ支払って宣伝を続けていく余裕は。。。ないです^^;;

気が向いたら商用以外の記事を書くってことがあるかも知れないので、このブログは一応休止ってことにする予定ですが、もし移転してしまうんだったら宣伝以外の記事だけソラマメで書くってのもややこしいので全て移転先になると思いますね。。。まあ、私は最近記事書くのもだらけてきてたので、このまま何となくブログやめてしまってもいいかなって気もしてますけどwww


2009年8月17日月曜日

もうひとりの私

店舗の商品を並べてたら、ドイツ語っぽい言語でIMがきたんですね。

ドイツ語? わかりません。。。って返事したら、英語で返答してくれたんですが、何か私がドイツのSIMに来て4日前にハング(ハングアップ?)させたとか言ってるみたいなんですよ@@;
そして、あなたのアバターには問題があると思うって言われて、こんな写真が送られてきました。

んー、服やスキンのテクスチャがグレーで表示されてませんけど、確かに千尋です。。。でも、この写真を問題がある証拠だって感じで見せられても、ホント何が何だかわからないですよ^^;

4日ほど前ドイツのSIMに行った覚えはあります。セカンドライフのブログに出てたGermany in 3Dっていうのを見て、そこに行ってみたんです。


まあ、私はSIMが落ちたりするほどの重い装備はしてないって思うんですが、とりあえずSIMとかのシステムはわからないって言って謝っておきました。でも何か変な気がしたので、その後もう一度落ち着いてIMの内容を見直したら、何かSIMじゃなくて私自身が4日前からハングしてるって意味みたいな感じだったんですよw

それで気になって、その場所へ行ってみたんですね。そしたら、マップを開くと写真の場所には緑色の点が見えるんですが、ミニマップには点が映ってないんですよ。その点のところに自分(の分身?)がいるのかなって思って近くに行こうとしたら、一瞬でその点の場所に移動してしまって全く身動きができなくなってしまいました。

それでも諦めずにキーを押してたら突然一気に隣のSIMを超えそうなほど移動して、その場を離れることができましたが、マップの点はその後も消えていません。なので、これはやっぱりおかしいって思って、ログアウトして別のアカウントでログインしてみたら、そこにはホントにグレーの千尋がいました@@;

あの写真は4日前に来たとき撮られたような覚えはなかったんですが、そうじゃなくて、このSIMに取り残された「もうひとりの私」を撮ったものだったんですね。。。んー、何かドッペルゲンガーですか、怪奇現象みたいで怖いんですけど、ほっといても大丈夫なんでしょうかね?^^;

8月18日17時10分頃追記: 今日、北側にあるSIMにテレポートして、もう一度近づいてみたら、今回は何の異常も起きなくて、問題のSIMに入ったときマップに表示されてた自分の分身(緑色の点)は消えてしまいました。んー、原因とかさっぱりわからないんですけど直ってよかったです^^

2009年8月14日金曜日

低プリムの椅子に決まった人数座れるスクリプト

暑い時期はボケーっとして物作りもする気の起きない千尋です^^;

今回はスカルプで作った低プリムのソファーとかに設定した人数座れるような簡単なスクリプトを考えてみました。。。ずっとソファー作りたいって思ってるんですけどねw

座れる人数分(座席数)のリストにアバターのキーを保存するようにして、空席にはNULL_KEYを入れておくようにしてます。2人用で書いてますが人数を増やす場合は、座る位置のベクトル値を増やしてくださいね。


// 1プリムの定位置に2人座れる
list pos=[<0.4,-0.5,0.4>, <0.4,0.5,0.4>];  // 座る位置のリスト(1人目、2人目)
list av;  // 座ってるアバターのキーリスト用
vector ang=<0,0,0>;  // 座った角度

default
{
    state_entry()
    {
        llSitTarget(<0,0,0.5>, llEuler2Rot(ang*DEG_TO_RAD));  // 座る位置の初期値
        integer i;
        for (i=0; i < llGetListLength(pos); i++)
        {  // キーリストに座席分のNULL_KEYを設定
            av+=[NULL_KEY];
        }
    }

    changed(integer change)
    {
       if (change & CHANGED_LINK)
       {  // リンクが変化したら
            integer i=llGetNumberOfPrims();  // リンクしてるプリムの数
            key id=llGetLinkKey(i);  // 座った(リンクした)アバターのキー取得
            if (id) {
                integer j=llListFindList(av,[NULL_KEY]);  // 空席チェック
                if (~j) {  // 空いてたら
                    av=llListReplaceList(av,[id],j,j);  // アバターのキーをセット
                    vector v=llList2Vector(pos,j);  // 空いてた席の座る位置
                    v.z+=0.35;  // Z方向に0.35加算
                    // 座った位置を移動
                    llSetLinkPrimitiveParams(i,[PRIM_POSITION,v, PRIM_ROTATION,ZERO_ROTATION/llGetRot()*llEuler2Rot(ang*DEG_TO_RAD)]);
                }
                else {  // 空席がないとき
                    if (llListFindList(av,[id]) < 0) llUnSit(id);  // キーリストになかったら立たせる
                }
            }
            list l;
            for (i; i > 1; i--) {  // 子プリムのキーをリストアップ
                l+=[llGetLinkKey(i)];
            }
            for (i=0; i < llGetListLength(av); i++) {
                // 座ってるアバターのキーリストと比較して、一致しないキーをリストから削除
                id=llList2Key(av,i);
                if (llListFindList(l,[id]) < 0) av=llListReplaceList(av,[NULL_KEY],i,i);
            }
        }
    }
}

ポーズさせる部分はありませんが、座った位置を移動させた直後にllRequestPermissionsを追加して、アニメーションさせるイベントを入れるとかしたらいいかなって思います。

19時5分頃追記: シェイプ変えて調べてみたんですが、llSitTargetとllSetLinkPrimitiveParamsのPRIM_POSITIONはアバターが座ったとき体格に関係なくZ方向に0.35の差があるみたいなんですね。それで0.35足してから移動させてます。

2009年8月7日金曜日

フィードリーダー発売

試作してたブログの最新記事タイトルを表示するRSS/Atom Feed readerなんですが、ホントに販売しないのかっていうご質問を頂いたことがあったんですね。
でも、llHTTPRequestに2KBの制限があって1タイトルずつデータを送受信してたので、頻繁に更新されるフィードはPipesのキャッシュで古い記事と新しい記事の順番が入れ替わったり2重になったりしてきちんと表示されなかったんですよ。
それで、LSL http serverを使うように変更して、何とか順番が変にならないように修正して発売することにしました。ただ、Pipesからのデータが遅いので受信に30秒ほど時間が掛かってしまうんですが。。。^^;

不具合は出なくなったんですが、ちょっと動作が遅いので、お値段はL$80にしました。。。それがなかったらL$120くらいにしたかったんですけどねw
Mansion Mall店Market Beach Mall East店に置いてきました。Mansion Mall店では実物も展示してます。宜しくお願いします^^


2009年8月3日月曜日

視界を切り替えるスクリプト

いつの間にかブログ書くの結構さぼり気味になってる千尋です^^;;

今回はタッチで視界(カメラ)を切り替えるスクリプトです。乗り物とかオブジェクトに座る場合はllSetCameraAtOffsetllSetCameraEyeOffsetで簡単に設定する方法もありますが、今回は装着用なのでllSetCameraParamsを使いました。

llSetCameraParamsはパラメータがたくさんあってややこしいですけど、いろいろ細かい設定とかできそうですね。あと、アバターにアニメーションさせるのと同様に事前にパーミッションの要求が要ります。


装着してタッチすると、低めの視界、真上からの視界、通常の視界の順で切り替わるようにしました。HUDなどに組み込んで使用してくださいね^^
// 視界切り替え
integer cam=1;  // 最初は1(低め)

cam1()
{  // 低めの位置になるカメラ設定
    llSetCameraParams([
        CAMERA_ACTIVE, TRUE,
        CAMERA_BEHINDNESS_ANGLE, 5.0,
        CAMERA_DISTANCE, 3.0,
        CAMERA_FOCUS_OFFSET,<2,0,0>]);
    llOwnerSay("Under");
}

cam2()
{  // 真上から見えるカメラ設定
    llSetCameraParams([
        CAMERA_ACTIVE, TRUE,
        CAMERA_BEHINDNESS_ANGLE, 0.0,
        CAMERA_PITCH, 80.0,
        CAMERA_FOCUS_THRESHOLD, 0.0,
        CAMERA_DISTANCE, 20.0,
        CAMERA_FOCUS_OFFSET,<0,0,0>]);
    llOwnerSay("Over head");
}

set_cam()
{
    llClearCameraParams();  // カメラ設定を初期化
    // camの値によって処理を分ける
    if (cam == 0) llOwnerSay("Normal");  // 普通
    else if (cam == 1) cam1();  // 低め
    else if (cam == 2) cam2();  // 真上
}

default
{
    state_entry()
    {
        // 装着されてたらカメラコントロールの権限を要求
        if (llGetAttached()) llRequestPermissions(llGetOwner(), PERMISSION_CONTROL_CAMERA);
    }

    attach(key id)
    {
        // 装着したらカメラコントロールの権限を要求
        if (id) llRequestPermissions(id, PERMISSION_CONTROL_CAMERA);
    }

    touch_start(integer total_number)
    {
        if (llGetPermissionsKey() == llDetectedKey(0)) {
            // タッチしたアバターのパーミッションが有効になってたら
            cam++;  // camの値を1増やす
            if (cam > 2) cam=0;  // camの値が2を超えたら0にする
            set_cam();  // set_camへ
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_CONTROL_CAMERA)
        {  // カメラコントロールが許可されたらset_camへ
            set_cam();
        }
    }
}