Site search

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

2008年8月31日日曜日

カラフル♥ピアス

立体迷路跡地のフリマ、そして6モール合同夏祭り 2008セール(SL-Shopping.net-Mall)も今日で最後ですね。たくさんのショップでセールやってるので、うちは全然ってくらいセールしてる商品が売れませんでしたwww

今日は新製品。。。じゃなくて改良品ですかね^^; 発表します。期間限定のフリマでフリー配布した♥のピアス をその後Monemaシティ店でL$10で売ってたんですが、ハートの部分に色がチカチカ変わるスクリプトを組み込んで販売し直すことにしました^^

普通にタイマーだけだと左右の色がずれてくるんですが、そこは何とか同期させてます^^;
価格はL$20にしました。宜しくお願いします。


2008年8月30日土曜日

お金を拾われるスクリプト

今回はお金みたいなオブジェクトを作って、誰かに拾ってもらうスクリプトですwww 
拾われると(タッチされると)オブジェクトは消滅して、オーナーの口座からタッチしたアバターに設定した金額が振り込まれます^^ マネーツリーのお金みたいな感じですかね。

用途は。。。人を集めるイベントなんかにいいかもw


オブジェクトの色は最初は黒になりますが、口座引き落とし許可されると白に変わるようにしてます。
紙幣やコインなどのテクスチャを貼ってお金って感じにしてくださいね^^
// お金オブジェクト
integer amount=1;  // お金の金額

default
{
    state_entry()
    {
        llSetColor(<0,0,0>,ALL_SIDES);  // 最初は黒
        llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);  // 口座引き落としリクエスト
    }

    touch_start(integer total_number)
    {
        key agent=llDetectedKey(0);  // タッチしたアバターのキー
        if (llGetColor(0) == <1,1,1>) {  // 色が白なら
            string name=llDetectedName(0);  // アバター名取得
            llGiveMoney(agent, amount);  // お金渡す
            llSay(0,name+" got L$"+(string)amount+".");  // チャットでアナウンス
            llDie();  // 消滅
        }
        else if (agent == llGetOwner()) {  // 色が白でなくてオーナーがタッチしたとき
            llRequestPermissions(llGetOwner(), PERMISSION_DEBIT);  // 口座引き落としリクエスト
        }
    }

    on_rez(integer start_param)
    {  // rezのときリセット
        llResetScript();
    }

    run_time_permissions(integer perm)
    {  // 口座引き落とし許可されると色を白にする
        if (perm & PERMISSION_DEBIT)
            llSetColor(<1,1,1>,ALL_SIDES);
    }
}

9月9日19時半頃追記: 上手くいかないって質問ありました。よくみると使い方をはっきり書いてなかったので書いときますね^^;
最初オブジェクトの色が黒い状態になります。オーナーがrezまたはタッチすると黄色のダイアログが出ますので、それで口座引き落とし許可すると色が白に変わります。この状態で置いとくと、それをタッチしたアバターにお金が振り込まれます。

2008年8月29日金曜日

使い捨てキャンピングダンスパッド

JapaTownのフリーショップ&10L$ショップが前に商品を置かせてもらってから一ヶ月が経って返却が始まりましたw
それで今回はフリーのほうに自動ドア、10L$のほうに使い捨てキャンピングダンスパッドを置かせてもらってきました^^

この使い捨てキャンピングダンスパッドっていうのは、ずいぶん前にキャンピングダンスパッドの試供品みたいな感じで作ったんですよ。キャンプ終了してお金が支払われるとダンスパッドが消滅するようになってるんですwww だからコピーは可なんですがちょっと実用的じゃないですね。ネタとかに使えるかもですけどw
パッケージは間違えてno modifyになってますけど直してないです^^; スクリプトは修正不可、プリムは修正可です。まあマネーキャンプ用品は買う人も限られるので最近ぜんぜん力入れてません^^;;


Watches size change bug fixed

前の記事でサイズチェンジの異常について書いたんですが、滅多に売れないペンダントが短時間のうちに2個も売れてたんですよ。多分その記事見て買いにきてくれたんじゃないかなって思います。でも、バグみたいなので買わないでくださいって^^; 売れるのは嬉しいんですけどねwww

前はきちんと動作してたので、何でおかしくなったのかよくわからないんですが、とりあえずペンダントの販売は中止しました^^;

腕時計は llSetLocalRotを使用するように修正して入れ替えました。一度サイズ合わせるともう変更することないと思いますが、修正版をご希望の方おられますでしょうかね? 現品送って頂けたら交換いたしますので宜しくお願いします。

Watches are bug fixed for size change. If you want to update, please send old version for change.

9月1日17時頃追記: こちらで記録してるお客様に限られますが腕時計も修正版を送ることにしました。


2008年8月28日木曜日

Size change bug(watch, pendant

腕時計やペンダントに組み込んでるサイズチェンジなんですが、動作がおかしくなってました orz
装着してサイズチェンジすると一部のプリムの角度が変になるんですよ;;

llSetPrimitiveParamsのPRIM_ROTATIONが不安定なんじゃないかなって思うんですがよくわからないです。
もしおかしくなったら、rezして回転を<0,0,0>にしてから、もう一度サイズチェンジすると直りますので宜しくお願いします。

Size change for watches and pendant necklesses had a problem. If their prim rotation is not correct after size change, please rez and edit rotation(degrees) to <0,0,0>, and size change again.
I think it is a problem of PRIM_ROTATION in llSetPrimitiveParams.

8月29日8時10分頃追記: 回転(角度)のこと書くの忘れてたので書き加えました。記録してなかったので過去1ヶ月以内の購入者様に限りますがペンダントは修正版を送りますね。


><

あるSIMをふらふらしてたら、前うちの製品を何点か買って頂いたお客さんのお店があったんですよ。
でも、そのお客さんのショップって結構有名で繁盛してるみたいだし、同じような商品で他にもっといいのもあると思うので、もう、うちの製品なんか使ってないだろうなって思ったんですね。

それで、そのお店をドキドキしながら覗いてみたら、あああ。。。うちの製品捨てずに使ってくれてたんですよ><
もーホントこうゆうときは嬉しくって涙出てきますね。

うちの製品、フリーアイテムもそうなんですが、使ってくれてるのを見かけると、口には出さないですがホントありがたいなって思います^^


2008年8月27日水曜日

うわ、間違ってる;;

昨日からテクスチャストッカーがすごい売れてます。メタコマースに登録したからですかね。。。お買い上げくださいました皆様ありがとうございます!!><
でもメタコマースで直接の売り上げは今のところまだなんですけどね^^;

SHOP CHIHIRO Monemaシティ店なんですが、ランドマークをよく見たらSHOP CHINIROになってました。。。ちにろって。。。 orz

Lordさんに連絡とって土地情報を直してもらって、ランドマークの名前は自分で修正したんですが、SLXに登録してるLM giverにも間違ったランドマーク入れてたんですよwww もう結構出荷されちゃったです(恥


モバイルファクトリーのガチャガチャ

最近ガチャガチャが流行っててよく見かけますよねw

モバイルファクトリーさんのSIMでもガチャガチャに結構力入れてるみたいですね。
がちゃがちゃトップページ


http://slurl.com/secondlife/MobileFactory/123/138/26
こちらがモバイルファクトリーのガチャガチャです。凝ってるなって思って、調べてみたら何と1台49プリムもありました@@;
土地持ってなくて25プリムまでL$100とかのレンタル借りてるような身分なので、こうゆうの見ると羨ましいですね^^;;



値段はガチャガチャごとに様々ですが、キャンプに頼ってるベーシックユーザーなんかはL$10とか安価でないと気楽に買えないんじゃないでしょうかね?
L$30のをやってみました。高額商品の当たりも入ってるってゆうのが楽しみです^^ おおぉ、きちんと中のカプセルが出てくる動きをしますね。出てきたカプセルは取れませんがw
髪とパンツとアンダーパンツのセットが当たりました^^ 私はあまりアバターのスタイルとか変えたくない性分なんですが、たまにはこんな感じのスタイルも良いかもですね^^

2008年8月26日火曜日

うちのアイテムキャンプチェアにはポーズ入ってないんですけどw

発売中のPrize camping chairなんですが、椅子のテクスチャ貼り替えはもちろん、椅子を他のものに入れ替えて使ったりもできるんですよ^^



中にはスクリプトが2つ入っててNew Scriptのほうは修正可にしてます。
こんなふうに座る位置を調整してるだけなんですけどねw
default
{
    state_entry()
    {
        llSitTarget(<0.0,-0.375,0.53>,llEuler2Rot(<0.0,0.0,-90.0>*DEG_TO_RAD));
    }
}

でもこのスクリプトを書き換えたら他のポーズも使えますよ^^


まあ普通にポーズの入った椅子のスクリプトと同じなんですが、こんな感じに書き換えてアニメーションを入れたらオッケーですね。
string anim="sitting chair f04";  // アニメーション名

default
{
    state_entry()
    {
        // 座る位置調整
        llSitTarget(<0,0.1,0.4>, llEuler2Rot(<0,0,-90>*DEG_TO_RAD));
    }

    changed(integer change)
    {
        if (change & CHANGED_LINK)
        {
            key agent=llAvatarOnSitTarget();
            if (agent)
            {
                llRequestPermissions(agent, PERMISSION_TRIGGER_ANIMATION);
            }
            else
            {
                llStopAnimation(anim);
            }
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_TRIGGER_ANIMATION)
        {
            llStopAnimation("sit");
            llStartAnimation(anim);
        }
    }
}

但しスクリプト名はNew Scriptに固定にしてます。つまんない名前で申し訳ないですが^^;;

ノートカードを読むスクリプト

今回はノートに書いたテキストを読み出すスクリプトです^^
ノートカードの内容を1行ずつllGetNotecardLineで読み出して、読み出したデータはdataserverイベントでキャッチできます。

スクリプトが編集不可で設定をノートからロードしたりするのによく使われますよね^^ でもdataserver通すので行が増えるほど読み込みが重くなるんですよw
そのノートから設定を読むスクリプトは http://wiki.secondlife.com/wiki/Dataserver_API にも出てます。。。て書くと記事もこれで終わっちゃいますので、ここではノートに書いた文章をそのまま読み出すだけの簡単なスクリプトを載せますね^^;


表示はチャットとフローティングテキストで表示するようにしてみました^^
// ノートカードを読み出す
string text;  // 読み出した文字列格納用
string note;
integer line;  // 読み出す行のカウント用
key queryhandle;
key note_id;  // コンテンツ内のノートのキー

init()
{
    note=llGetInventoryName(INVENTORY_NOTECARD,0);  // コンテンツ内のノート
    text="";  // 文字列初期化
    line=0;  // カウント初期化
    queryhandle=llGetNotecardLine(note, line);  // ノートの行読み出し開始
    note_id=llGetInventoryKey(note);  // ノートのキーを変数に入れとく
}

default
{
    state_entry()
    {  // 最初はinit実行
        init();
    }

    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) {
            if (note_id != llGetInventoryKey(note))
            {  // ノートのキーが変わったら
                init();  // initへ
            }
        }
    }

    dataserver(key query_id, string data)
    {
        if (query_id == queryhandle) {
            if (data != EOF) {  // ノートが終わってなければ
                text+=data+"\n";  // 読み出した行に改行つけてtextに追加
                line++;  // カウンタを次の行にして
                queryhandle=llGetNotecardLine(note,line);  // 読み出し続行
            }
            else {  // そうでないとき(ノートが終わりに達したら)
                llSay(0,text);  // チャットで表示
                llSetText(text,<1,1,1>,1.0);  // フローティングテキストに表示
            }
        }
    }
}

何か書いたノートをコンテンツ内に1つ入れてくださいね。このスクリプトではノートカード名は何でもOKにしてます^^

2008年8月25日月曜日

今週のセールは時計など7点

6モール合同夏祭り 2008もあと一週間ですね。SHOP CHIHIRO SL-Shopping.net-Mall店では週替わりセール実施中です^^

今週は時計、腕時計、カレンダーを20%OFFにしました。

ブレスレットウォッチ、ウォッチ L$100 → L$80
デジタル掛け時計、レギュラーウォッチ、浮世絵カレンダー L$80 → L$64
デジタルクロックモジュール、シンプル掛け時計 L$40 → L$32

それからラッキーレターの景品入れ替えてみました。今回は浮世絵のパネルで、葛飾北斎の有名なグレートウェーブです。時間は3分間隔にしてます^^


宜しくお願いします^^

8月30日追記: その後ラッキーレターはモールのほうに置いてもらいまして、時間は1分間隔に変更しました^^


2008年8月24日日曜日

スパムコメント、スパムトラックバック

最近多いですよね。うざいのでブログ環境設定でスパム対策しときました^^

スパムはプログラムでやってると思うので、コメントは画像認証を行なうようにしました。

トラックバックは言及リンクを騙すようにこんなURLなんですねw
http://○○○.net/×××/http://△△△.slmame.com/e0.html
なので、コメント・トラックバックの禁止ワードに
/http:
って追加しときましたwww


カレンダーですが

発売しても全く売れなかった浮世絵カレンダーなんですが、価格改定後に何とか少し売れました。ご購入いただきましたお客様、ホントにありがとうございます><


浮世絵は外人をターゲットにしてたんですが、まだ外国の方には売れてませんwww
普通に浮世絵だけでも1枚L$10以上で売ってたりとかありますから、12枚内蔵してるこのカレンダーはお買い得だと思うんですけどねぇw

もう少し売れ行きが良かったら、キレイな風景とか可愛い動物なんかのカレンダーも作ろうって思ってたんですけど。。。まあ自分じゃ絵も写真もできないので、商用に使っても問題ないものを探して来なきゃいけないんですが^^;


透明度を変更するスクリプト

今回はメガネ(サングラス)や窓ガラスなどの透明度を変更するスクリプトです^^
llSetAlphaを使います。値が0で透明になるので「不透明度」というほうがいいんですかね?www

まずタッチで切り替えの簡単なスクリプトです。値は透明のとき0.2にしました^^
// 透明・不透明切り替え
float alpha=1.0;  // 不透明度

default
{
    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチしたら
            if (alpha < 0.5) alpha=1.0;  // alphaが0.5以下なら1.0に
            else alpha=0.2;  // そうでないときは0.2に
            llSetAlpha(alpha,ALL_SIDES);  // アルファを設定
        }
    }
}


でも実際はリンクして使うので、スクリプトも親プリムからメッセージを送って変更するようにしないと眼鏡レンズなどに使えないですねw


子プリムに送信するメッセージを alpha0.2 のようにして、こんな感じになりました^^
// 親プリムのスクリプト
float alpha=1.0;  // 不透明度

default
{
    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチしたら
            if (alpha < 0.5) alpha=1.0;  // alphaが0.5以下なら1.0に
            else alpha=0.2;  // そうでないときは0.2に
            // リンクした子プリムにメッセージ送る
            llMessageLinked(LINK_ALL_CHILDREN,0,"alpha"+(string)alpha,"");
        }
    }
}

// 透明にする子プリムのスクリプト
default
{
    link_message(integer sender_num, integer num, string msg, key id)
    {
        if (llGetSubString(msg,0,4) == "alpha")
        {  // alphaのメッセージ受信すると
            float alpha=(float)llGetSubString(msg,5,-1);  // 数値を得る
            llSetAlpha(alpha,ALL_SIDES);  // アルファを設定
        }
    }
}

透明・不透明をタッチで切り替えるだけにしてますが、ダイアログを使うようにすれば何段階に変更とかできますね^^

2008年8月23日土曜日

スタンプラリー最後はSnow Land Mall

今日は6モール合同夏祭り 2008のスタンプラリーでSnow Land Mallに行ってきました^^

モールのオーナーはpopkidsさんという方のようですが、SLMaMeブログのほうはNANAさんという方が担当してるんですかね?よくわかりません^^

雪がちらちら降ってますね。辺り一面雪景色です。建物の壁はガラスなんでしょうか氷なんでしょうか^^
ここも結構広いモールなんですが、スタンプはモール建物内には1個だけ。他のスタンプは教会、hayatoさんの立体迷路、Arrshuさんのショップって感じで分散してるので、ここもヒントなかったらわからないですねwww


低プリムの家具などがずらりと並んだArrshu Main Shopの店内です。前に来たことがあるんですが改装されてますね。改装前と比べると、店内がゆったりと広くなったんじゃないかなって思います^^

さて、今回でスタンプ全部押せたのでスタンプラリーも終了です^^ で、景品なんですが。。。交換機メンテナンス中なんですか。。。サンダルが気になるんですけど^^; まあ、あきらめて帰りますね;;

8月23日18時10分頃追記: サンダルが再開されてるって情報を頂きました^^ あとで交換しに行きますね♪(嬉

8月23日19時40分頃追記: GSさんに聞いてみたらサンダルは修正不可だということなので、あきらめることにしました。私、足大きめなので合わないと思うんですよwww


OpenNebulaグリッドに潜入してきましたw

ソラマメにオープン・ネビュラ・プロジェクト OPEN SIMを使おうっていうバナーがあったのでOPEN NEBULA Projectで登録してログインしてみました^^


すると、こうゆうアバターになっちゃいましたwww んー、スキンとか服どっかにないですかぁー?^^


その辺に置いてあるオブジェクトは、なぜだか全部修正可になってるみたいです。

あと、Rezしたオブジェクトを直接削除するとゴミ箱にも入らず消えてしまいました@@;
自分のインベントリに入れたオブジェクトを削除したときは、きちんとゴミ箱に入るみたいですけどね。

普通のインワールドと違って、Libraryの中にもいいアイテムは入ってなさそうですね。。。てことで、特に何もしないまま短時間でログアウトしてしまいました^^;


2008年8月22日金曜日

スタンプラリーでJuliet Plaza Mall

立体迷路跡地のフリマシークレットセールが今夜21時からなので準備済ませてきました^^ セールの商品はですね。。。あ、シークレットなので書いちゃいけないですねwww

さて、6モール合同夏祭り 2008のスタンプラリー、今日はJuliet Plaza Mallに行ってきました^^

RLによくあるようなショッピングセンターのビルって感じですかね^^ 経営者はLeosoさんという方で、MagSL池袋にはiCubeというモールもお持ちのようです。

中はこんな感じです。ちょっと迷いそうになりましたが、建物内ではスタンプ2個みつけましたw

そして、もうひとつのスタンプは建物を北側に出て探すとすぐに見つかりました^^
暗くなってきたので昼に切り替えて明るくしてみたんですが、この北側の風景は何となく見覚えあるんですよね。

思い出したのでマップ開いてみたら、あ、やっぱりwww AlabusっていうSIMが近くにあって、そこのレンタル借りてたことがあったんですよ^^;


2008年8月21日木曜日

Ys@MALLから逃げ帰りましたw

6モール合同夏祭り 2008のスタンプラリー、今日も後もう一ヶ所クリアしとこうってことでYs@MALLに行ってきました^^

ここは前に一度見に行ったことがあって確か和風のモール。。。て思ってテレポートしたんですが

違いますねwww まあ、どっかと勘違いしてたのかなって思って、スタンプ台探したけど1個しか発見できませんでした^^;

そこで、ヒントの書かれたノートを確認してみると、Yaskeyさん経営のモールは3ヶ所あって、Ys@Mall SATSUKIっていうところが和風のモールだったんですねw


SATSUKIにはスタンプが1個ありました。結構広いのに、ここも1個だけなんですよw

さすが和風のモールだけに日本的な商品置いてる店が多いですね^^
忘れかけてた日本古来の文化の素晴らしさみたいなものを感じちゃうなって思いながら見てたら

え、ツ、ツンデレンジャーてwww 今日のヒットはこれですwww

最後に、Yaskeyさんのもう一ヶ所のモール?Japan villageに行ったら、ここはその名の通り「村」って感じですね。

それにしても広いですねー。迷子になりそw でも何とかスタンプを2個見つけて押しました^^
どのくらいあるのかなって思いながらうろうろしてたら

モールみたいな区画があったので入ってみたんですよ。
あらっ、何か最初に来たところと同じような。。。うわぁあああ!(混乱→テレポート
あとで落ち着いて調べてみたら、3ヶ所は隣同士のSIMですぐ近くだったんですね^^;;

座っても脚の出ないスカートのスクリプト(改)

座っても脚が出ないスカートのスクリプト http://backup-beta.blogspot.com/2008/08/blog-post_2947.htmlなんですが、これって、ここままだとポーズボールに座ったときも反応しちゃうんですよねw なので、このスクリプトは掲載した数日後には修正して使ってたんですよwww

スクリプト苦手な方は結局使えねーってことになっちゃうので、今回はその修正して使ってる足の出ないスクリプトのほうも載せておきますね。座ったときにスカートにタッチするとスカートの反応有り無しを切り替えられるように改良してます^^
但し、今回は注釈や使い方まで書きませんので前のスカートスクリプト http://backup-beta.blogspot.com/2008/08/blog-post_2947.htmlの記事を参考にしてくださいね^^;


特徴のパラメータは必ずプリムスカートに合わせて変更してからスカートにスクリプト入れてください。
// 座っても脚の隠れるスカート(改)
integer stand=FALSE;
// 座ってないときの特徴パラメータリスト [ 柔軟性, 重力, ドラッグ, 風, 緊張, X、Y、Z方向のフォース ]
list unsit=[3,2.0,1.0,1.0,8.0,<0,0,0>];
list sit;
float gravity=0.5;
float force=3;

default
{
    state_entry()
    {
        unsit=[PRIM_FLEXIBLE,TRUE]+unsit;
        sit=llListReplaceList(unsit,[gravity],3,3);
        llSetTimerEvent(0.25);
    }

    touch_start(integer total_number)
    {
        if (llDetectedKey(0) != llGetOwner()) return;
        stand=!stand;
    }

    timer()
    {
        integer i=llGetAgentInfo(llGetOwner());
        string str=llGetAnimation(llGetOwner());
        if ((i & AGENT_SITTING) || str == "Sitting")
        {
            if (!stand) {
                list l=llGetObjectDetails(llGetOwner(),[OBJECT_ROT]);
                vector v=llRot2Euler(llList2Rot(l,0));
                float x=llCos(v.z)*force;
                float y=llSin(v.z)*force;
                sit=llListReplaceList(sit,[<x,y,0>],-1,-1);
                llSetLinkPrimitiveParams(LINK_SET,sit);
            }
            else llSetLinkPrimitiveParams(LINK_SET,unsit);
        }
        else {
            stand=FALSE;
            llSetLinkPrimitiveParams(LINK_SET,unsit);
        }
    }
}

スタンプラリー @ Elsie mini mall

6モール合同夏祭り 2008スタンプカードがおかしくなっちゃって直らないんですが、スタンプ押すときだけ装着するようにして頑張って続行中ですwww

今回はElsie mini mallに行ってきました^^

ここは名前の通り小さなモールですね。でも私はSL始めた頃はこれくらいの規模が普通なんだって思ってたんですよ。小規模なモールって結構ありそうですからねぇ^^
スタンプは2個ありました。経営者はElsieさんという方で、ラリーのスタンプ台とスタンプカードもこの方が作ったみたいですね^^

撮影してると道路が見えたので、道路に沿って少し北上してみました。。。ん?

ここってShibukiさんのショップじゃないですか。。。こちらには前ちょっと来たことがあるんですよ。すぐ近くだったんですね@@;

SLってやっぱり広いようで狭いんですかねwww


2008年8月20日水曜日

スタンプラリーでMisty Cybermareへ

SL-Shopping.net-Mallでゲットした6モール合同夏祭り 2008のスタンプカードには、もちろんスタンプを4つ押して帰りましたので、残りのスタンプも頑張って集めようってことで今日はもう一ヶ所まわってきました^^
人の多いイベントって何か苦手なんですが、こういうイベントは一気に人が集まったりしないみたいなので参加しやすいですね^^

今回行ったのはMisty Cybermareっていうモールです。スタンプは3つありました。このモールの経営者はSaitotさんという方で、JapanSeychellesLandで開催されてたフリコンにマネキンを出品されてたのでお名前は知ってたんですけど、モールなんかも経営されてたんですね@@

モールの地形は東西に横長で、西から東に登っていくような感じで段々になってて、上のほうにSaitotさんのショップがあります。大きなぬいぐるみが目を引きますよねw

あと、知ってる人も出店してるなって思いながらモールをざっと見渡してたら

これって南米のどっかの遺跡にある頭ですかねwww こうゆうのが突然出てくるっていうシチュエーションに弱いんですよ。。。コーヒー噴きそうになりましたwww


スタンプカードがwww

SL-Shopping.net-Mallに寄ってうろうろしてたら、ラッキレターで6モール合同夏祭り 2008のスタンプラリーのカードが当たったんですよ(嬉

カードはHUDになってて装着してみるとタッチで画面の上にたためる(隠れる)ようになってるんですね^^
でも私はいつも中央には他のHUDを装着してるので、このカードを左端装着に変更して位置調整したんですが、たたむと位置が戻ってしまってちょっと使えませんでしたw なので装着を中央に戻したんですが壊れちゃったかな?伸ばしてもたたんでも変な位置に固定されるようになってしまいました。。。ぐはw



輝きを変えるスクリプト

プリムの輝きはllSetPrimitiveParamsで変更できますが、このときに使う PRIM_BUMP_SHINY って輝きと凹凸を両方指定しないといけないのでちょっとややこしいんですよねw

llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_LOW, PRIM_BUMP_NONE]);
こんな感じで [PRIM_BUMP_SHINY, 面番号, 輝きの強さ, 凹凸の種類] の順になります。


PRIM_SHINY_NONE=0
PRIM_SHINY_LOW=1
PRIM_SHINY_MEDIUM=2
PRIM_SHINY_HIGH=3
輝きの定数は上記のように定義されてますので、輝きの強さのところを整数で指定して、タッチの度に輝きが変化する簡単なスクリプトを書いてみました。プリムの形は球にすると輝きが一番わかりやすいと思います^^
// タッチすると輝きが変わる
integer shiny=0;  // 輝きの強さ

default
{
    state_entry()
    {  // 最初は輝きなし
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE]);
    }

    touch_start(integer total_number)
    {  // タッチすると
        shiny++;  // 輝きの数値加算
        if (shiny > 3) shiny=0;  // 3を超えたら0
        // 輝きを設定
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, shiny, PRIM_BUMP_NONE]);
    }
}

2008年8月19日火曜日

onrezとメタコマースその後

SLXほどじゃないんですがonrezも少し利益出てきました。それからメタコマースも売れてたのでちょっとびっくり><

メタコマースは購入者の名前までは表示されないみたいなんですよ。なので製品にバグとか見つかったら、先方から連絡頂かないとこちらからはアップデート送ることもできないですね^^;

でもどっちにしても製品がたくさん売れれば売れるほど、手作業でアップデート送るってのもキツくなってくると思います。そこで、自動アップデートのサーバーを。。。なんて思うんですが、SL内だけの簡単なシステムだとtakeしたりとかでサーバーのUUIDが変わったら使えなくなるので、これはずっとサーバーを固定できる土地でも持ってないと無理って感じですねw

あっ、いや、そんなことよりバグがないような製品作らないとだめですよね^^;;


2008年8月18日月曜日

今週のセールは集客用品と他2点

うっかりレンタル料払うの忘れててレンタルボットが店内に降りてきてたSHOP CHIHIROです^^;;

6モール合同夏祭り 2008SL-Shopping.net-Mall店のセール、今週はアイテムキャンプなど集客用品+その他を20%オフにしました。

プライズキャンピングチェア L$50 → L$40
プライズキャンピングクロス L$50 → L$40
ラッキーレター L$100 → L$80
オンラインインジケーター L$20 → L$16
テクスチャストッカー L$50 → L$40

宜しくお願いします^^


2008年8月17日日曜日

著作権的にNGなので紹介できないw

キャンプで稼いでた頃、よくお世話になってた床拭きキャンプがあったダンスクラブ(今はもうないんですが)の裏に、たぶん名前からして有名だと思われるショップがあったんですねw そのことを思い出して今回記事にしようと現地に向かったんですが、店内をよく見たらアニメの著作権的にやばそうな商品も売ってたんですよw なので紹介するのはやめにしましたwww

著作物以外にも意匠や商標、ブランド、その他商品のデザインなどをRLからパクってる(無断使用してる)のって時々ありますよね。でもこういうのって権利侵害や盗作にならないよう注意しないといけないと思うんですね。
セカンドライフはゲームだからそのくらいいいじゃんって言う方がいるかも知れませんが、逆に考えたらどうでしょう。例えばSL内で服をデザインしたとします。。。いや服でなくても車でも何でもいいんですがw そのデザインがもしRLのほうで無断使用されたら。。。


2008年8月16日土曜日

アナログクロックのスクリプト

今回は簡単なアナログで針の動く時計のスクリプトです^^

Z軸を基準で針が動くようにしますね。文字盤はシリンダーを薄くして作ってください。長針、短針はX方向を長くしてYとZを縮めて棒のようにして、パスカットB0.125 E0.625にします。そして、文字盤を親にしてリンクさせます。

今回、針はパスカットにしましたが、プリムの中心から半分が完全になくなりますので、針もシリンダーにしてテクスチャで描いたほうが良いかもですねw


時間はllGetWallclockでPST/PDT(SL時間)にしてます。スクリプトは針の中に入れてくださいね。
// 短針用
default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー0.1秒
    }

    timer()
    {
        integer t=(integer)llGetWallclock();  // PST/PDT
        integer h=t/3600;  // 時
        integer m=(t%3600)/60;  // 分
        // 短針の角度を計算して設定
        llSetLocalRot(llEuler2Rot(<0,0,360-(h*30+m/2)>*DEG_TO_RAD));
    }
}

// 長針用
default
{
    state_entry()
    {
        llSetTimerEvent(0.1);  // タイマー0.1秒
    }

    timer()
    {
        integer t=(integer)llGetWallclock();  // PST/PDT
        integer m=(t%3600)/60;  // 分
        // 長針の角度を計算して設定
        llSetLocalRot(llEuler2Rot(<0,0,360-m*6>*DEG_TO_RAD));
    }
}

角度の計算は作るときのプリムの向きの違いで、自分でも方向がよくわからなくなっちゃうことがあるので詳しい注釈は省きますね^^;;

2008年8月15日金曜日

ソラマメの検索ってバージョンアップしたんですかね?

検索でアルファベットの大文字が小文字になってたりするとヒットしなかったと思うんですが、ヒットするようになってますね@@
例えば linux で検索すると linux しかヒットしなかったのが、今は普通のサーチエンジンみたいに Linux もヒットするんですよw

今までは引っかかりやすいようにYouTube、Youtube、youtubeとか、わざと大文字小文字入れ替えたものを記事に入れたりしてたんですが、もうそゆことしなくてもいいんですねwww


CSL MALL

今回はSHOP CHIHIRO CSL MALL店の紹介しますね^^ CSL MALLはRoyierっていうSIMにあるとても小さなモールなんですが、メインランドで店舗って感じの区画を借りたのはここが初めてだったんですね^^ レンタル探してて検索で見つけた大きなモールのあるBeaulieuっていうSIM(Royierの斜め上)にきて、近くをうろうろしてたら偶然見つけたんですよw
現在は設置されてたキャンプも撤去されてトラフィックも減っちゃったので移転も考えたんですけど、キャンプでレンタル費用を稼いでたころ借りてたショップの中では中心的な存在だったので、手放しちゃうと何か思い出みたいなのも失っちゃうみたいな気がしてずっと手放せずにいます。

それから車を作ってみようって気になったのもここ借りてたからなんですね。このSIMはヘリコプターや船や飛行機、車など乗り物がいっぱい置いてあるんですよ。全部オーナーの売り物だと思うんですけどねwww

あと、コンバットエリアもあって建物の中は武器なんかも売られてましたw
なので乗り物や戦闘に興味ある方はちょっとした観光にもいいんじゃないでしょうかね^^


2008年8月14日木曜日

メタコマースに再出品

SLXは今日もまあ好調だったので登録してよかったなって感じなんですが、onrezのほうはフリーアイテムばかりが売れてて利益はまだ0なんですよね^^; 何となく onrez が orz に見えてきた千尋ですwww

今日はメタコマースに出品しなおしてみました。0マメタは登録できないので今回フリーアイテムはやめて、シンプル掛け時計デジタルクロックモジュールです。どちらも定価L$40なんですがマメタなのでちょっと低めに価格設定してみました。まあここで売れなくっても広告みたいな効果はあるかなって思ってるんですねw なので今後もちょっとずつ追加していく予定です。


onrez

今度はonrezにも登録してみましたw
ここの商品登録用の箱(サーバー)はノーコピーなんですよ。てことは複数設置しなくっても大丈夫なんですか?SIMが落ちてたら届かないってことは?。。。気になったので実験してみました。
無料アイテムを1個だけ登録して、箱をtakeしてから自分で購入してみたんですw そしたら届かないんですが、箱をrezしてみたらそのときに届きました@@


SLXは心配だったので箱を別々のSIM2ヶ所に設置したんですが、これも1ヶ所だけでもOKだったんでしょうか。。。^^;
メタコマースは仮確定マメタしか持ってないので試せないしwww

8月16日16時50分頃追記: メタコマースも箱をtakeしてテストボタンで試してみたら、発送できなかったていうブラウザのウィンドウが開きました。それで、箱をrezしてもまだダメで、タッチして商品情報を送信し直すとやっと復帰ました。復帰するまでにテストしたぶんは復帰後も届いてないんですが、これで大丈夫なんですかね???


2008年8月13日水曜日

マメタの通販

メタコマースに出品登録してみたんですが、店舗情報って何なんですか?必要ないと思うんですけどw あと0マメタで登録できないしwww
ソラマメさんには申し訳ないですけども、何か登録してもあまり売れそうな気配がしなかったので1アイテム登録で手が止まってしまいました^^; そゆことで、せっかく登録したんですが箱1プリム分ショップの隅に置いとくのも、もったいないですから多分すぐに撤去しちゃいそうですw

SLXも登録してみたんですが、こっちは店舗登録みたいなのないので簡単でした。登録してすぐに売れたし><

8月13日20時頃追記: ちょっと試しに出品用ベンダー削除してみますねw

8月13日20時15分頃追記: 一度出品したらベンダー削除しても出品・未出品を切り替えられるみたいですねw 手違いで消しちゃってても気付かなかったりとかありそうw


ブログ用LSL変換フォーム

http://beta.slmame.com/e318253.html のスクリプトを見やすく変換するフォームをちょっと改良してコメントのところだけなんですが色分けできるようにしてみました^^
// の行コメントだけ対応なので一応リンデンスクリプト専用ってことにしときますねw

default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");  // へろぅ、アバター!
    }
 
    touch_start(integer total_number)
    {
        llSay(0, "Touched.");  // タッチ
    }
}


変換されるとコメントのところはクラスlcoってなるようにしました。
<span class="lco">// へろぅ、アバター!</span>
なので、使ってるテンプレートのスタイルシートにクラスセレクタで色指定してくださいね^^
.lco { color:#ff7700 }
それから入力欄と出力欄を別々にして、クリックで出力を選択できるようにしましたw


LSLをソラマメ掲載用に変換するフォーム(改良版)



8月24日15時頃追記: http://などは判別するようにしましたが "" の中に // が入ってたりしたら見分けられません^^;;

2008年8月12日火曜日

プログのテンプレート

テンプレートのCSSをいじくって茶色い背景だったところを木目調に変えてみたら、ブログの雰囲気がちょっと明るい感じになったような気がします^^
あとブログタイトルのところにインワールドで撮った写真を加工して。。。なんて思うんですけど、画像の加工得意じゃないので、いい画像が作れるまでとりあえず空白ですねwww


10分間プリムセーバーて感じのスクリプト

暑い時期は頭がボーっとして、ものづくりができない千尋ですw

今回は10分間ほど臨時オブジェクトを出して表示する簡単なスクリプトです^^
時間制限つけてますがプリムセーバーやTemp Rezzerとたぶん同じようなものだと思うので取り扱いには注意してくださいねwww

本体として使うオブジェクトを作って、コンテンツ内には臨時オブジェクトを入れておいてllRezObjectでrezします。臨時オブジェクトが消滅する前にllDieさせて、またllRezObjectを繰り返します。


まず本体のスクリプトです。臨時オブジェクトは1分で消えますので、55秒のタイマーでrezを繰り返すようにしましたw
// 約10分間のプリムセーバー本体
integer int=0;  // カウンタ
integer ch=0;  // チャット用チャンネル

default
{
    touch_start(integer total_number)
    {
        if (llDetectedKey(0) == llGetOwner())
        {  // オーナーがタッチすると
            int=0;  // カウンタ初期化
            llSetTimerEvent(0.1); // 0.1秒後にタイマー
        }
    }

    timer()
    {
        llSetTimerEvent(55);  // タイマー55秒毎
        if (llGetInventoryNumber(INVENTORY_OBJECT) < 1)
        {  // コンテンツ内にオブジェクトがないと
            llSetTimerEvent(0);  // タイマー停止
            return;  // 実行中断
        }
        int++;  // カウンタ加算
        if (int > 10) llSetTimerEvent(0);  // カウント11でタイマー停止
        if (ch != 0) llSay(ch,"氏ねばいいと思うよ");  // 臨時オブジェクト削除用メッセージ
        ch=llCeil(llFrand(2147483646));  // 乱数でチャンネル設定
        string str=llGetInventoryName(INVENTORY_OBJECT,0);  // コンテンツ内のオブジェクト名取得
        // 本体の1.5m上にオブジェクトをRez
        llRezObject(str,llGetPos()+<0,0,1.5>,ZERO_VECTOR,ZERO_ROTATION,ch);
    }
}


次にrezするオブジェクトに入れるスクリプトです。コピー不可のものは使えません。このスクリプトを入れたら臨時オブジェクトになりますので消滅するまで(1分以内)にtakeしてくださいねw
// Rezするオブジェクト用
integer listen_handle;
integer CHANNEL;

default
{
    state_entry()
    {  // オブジェクトを臨時に設定
        llSetPrimitiveParams([PRIM_TEMP_ON_REZ,TRUE]);
    }

    on_rez(integer start_param)
    {  // Rezされると本体からチャンネル番号を取得
        CHANNEL=start_param;  // チャットチャンネル設定
        listen_handle=llListen(CHANNEL, "",NULL_KEY , "");  // リッスン開始
    }

    listen(integer channel, string name, key id, string msg)
    {
        llListenRemove(listen_handle);
        if (channel == CHANNEL) {
            if (msg == "氏ねばいいと思うよ") {  // メッセージ受信したら
                llDie();  // 逝ってきます
            }
        }
    }
}

takeしたオブジェクトをプリムセーバー本体内に入れてください。そしてオーナーがタッチすると約10分間臨時オブジェクトが表示されます。

2008年8月11日月曜日

臨時オブジェクトをrezするベンダー

フリーで配布してるベンダーをちょこっと改造して商品サンプルを一時的にrezする機能を搭載してみました^^

今のところrez用のボタンを増やして、パネルの正面にrezするようにしてるんですが、これだと小さいものはわかりにくいし、大きなものは邪魔になりそうなので、アニメーションベンダーみたいな形にしてベンダーの上にrezするようにしたほうがいいかなって思います。あと、うちの他のベンダーと同じように簡単な設定で使用できるように工夫したいですね。

商品サンプルをrezできるベンダーって何か高価ですごそうに感じるかもですけど、ベンダーに販売用の商品とサンプル用の商品(臨時オブジェクト)を入れておくので仕組みは結構簡単だったりします^^; スクリプトの量的にはアニメーションベンダーとあまり変わらないかもですwww

でもプリムセーバーやTemp rezzerみたいなのがSIMに負荷かけるってことで禁止されてることが多いみたいなので、臨時オブジェクトって聞くとあまりいい印象ないですねー^^;
なので、こんなベンダー完成して販売しても売れるかどうかが心配なんですねw それに似たような機能のベンダーはフリー配布されてるのもあったと思うので。。。て書いたら余計売れなくなっちゃいそうなので場所は秘密にしときますねwww 


2008年8月10日日曜日

今週のセールは眼鏡

6モール合同夏祭り 2008が20時から始まってると思いますので、うちもSL-Shopping.net-Mall店でセール開始しました^^

今週は眼鏡です。SHOP CHIHIROの眼鏡は2種類あります。(2種類しかありませんw)

ダイアログでレンズが7種類変えられる他はサイズ調整と、弱めのフェイスライト付きです。

価格は元々パッケージに印刷してないんですが通常価格L$30を30%OFFのL$21にしました。宜しくお願いします^^


2008年8月9日土曜日

オンライン状態を表示するスクリプト

今回はアバターがオンラインかどうかのステータスを表示するスクリプトです。オンラインボード(オンラインステータスボード)やチップジャーなんかによく組み込まれてるものですね。うちの製品にもボードタイプのオンラインインジケータがあります^^

仕組みは簡単で、llRequestAgentDataを使ってタイマーで定期的に DATA_ONLINE を調べて結果を表示すればOKです。


2つ前の記事ご覧になられた方は、あっ!て思うでしょうかね^^ ええ、これアバターのキーを名前に変換するスクリプトでコメント頂きました関数なんですw この関数はやっぱり用途としてはこっちのほうがよく使われるかなってことで早速記事にしました^^;
// オンライン表示
key query;
key av;
string name;

default
{
    state_entry()
    {
        av=llGetOwner();  // オーナーのキー
        name=llKey2Name(av);  // オーナーがいる間にアバター名に変換しとく
        llSetTimerEvent(1);  // 最初は1秒後にチェック
    }

    on_rez(integer start_param)
    {  // Rezのときリセット
        llResetScript();
    }

    timer()
    {
        llSetTimerEvent(30);  // 30秒毎にタイマー動かしてチェック
        query=llRequestAgentData(av,DATA_ONLINE);  // データ問い合わせ
    }

    dataserver(key id, string data)
    {
        if (id == query) {
            string str=name+" は";
            if ((integer)data) {  // データがTRUEなら
                str+="オンラインです";
            }
            else {  // そうでないとき
                str+="オフラインです";
            }
            llSetText(str,<1,1,1>,1.0);  // フローティングテキストで表示
        }
    }
}

6モール合同夏祭り2008でセール

メインランドにある日系のモール6ヶ所が共同で6モール合同夏祭り 2008を行いますので、その期間中SL-Shopping.net-MallのセールにSHOP CHIHIROも参加の予定です^^

http://slurl.com/secondlife/Jiminy/113/20/106

期間 8月10日20:00~8月31日24:00(日本時間)
SL-shopping-net-Mall
Misty Cybermare
Elsie Mini Mall
スノーランドモール
Juliet Plaza Mall
Ys@MALL

看板に書いてある通りなんですがスタンプラリーってのがあるらしいですw

長期間なので値引きは控えめで、週替わりで2~3点ほどのセールにしようかなって思ってます^^ あ、せこいwって思われちゃいそうですが、千尋は気が弱いので、あまりどーんと値引きしちゃうと今までに通常価格で買って頂いたお客様に申し訳ないかなって感じちゃうんですよ^^;;


2008年8月8日金曜日

アバターのキーを名前に変換するスクリプト

アバターのキー(UUID)がわかればllKey2Nameで名前を取得することができますが、これって対象のアバターが近くにいないとだめなんですねw
でも、アバターのキーがわかったらプロフ画像を表示するRandom AV Profile Projectorみたいにプロフィールのページから名前拾ってこれますよねwww


// アバターのキーから名前をゲット
key av="00000000-0000-0000-0000-000000000000";  // アバターのキー
string url="http://world.secondlife.com/resident/";
key http_request_id;

default
{
    state_entry()
    {
        url+=(string)av;  // プロフのURL
        http_request_id=llHTTPRequest(url,[],"");  // HTTPリクエスト送信
    }

    http_response(key request_id, integer status, list metadata, string body)
    {
        if (request_id == http_request_id)
        {
            integer i=llSubStringIndex(body,"<title>");  // プロフページ<title>の位置
            integer j=llSubStringIndex(body,"</title>");  // プロフページ</title>の位置
            string name=llGetSubString(body,i+7,j-1);  // タイトルは名前
            llSay(0,name);  // アバター名をチャットで表示
        }
    }
}

最初のNULL_KEY入れてるところにアバターのキーを入れてくださいね^^

8月9日12時頃追記: ささぴさんよりコメント頂きまして、結局こんなことしなくってもdataserver通して名前を得るほうが簡単なんですね^^; その方法を一応下に載せておきますね(上のは、まあHTTPリクエストのサンプルってことで残しときますw)
key av="00000000-0000-0000-0000-000000000000";  // アバターのキー
key query;

default
{
    state_entry()
    {  // データサーバーに問い合わせ
        query=llRequestAgentData(av,DATA_NAME);
    }

    dataserver(key queryid, string data)
    {
        if (query == queryid) {
            llSay(0,data);  // アバター名をチャットで表示
        }
    }
}

2008年8月7日木曜日

また店舗借りました

ずっと前から気になってたモールがあったんですが経営が上手くいかなかったのでしょうか閉めちゃうようです;; モールの経営も大変なんですね。やっぱり健全な経営してて上手くいってるとこって数少ないんですかね。ソラマメで過剰に宣伝繰り返したり、SL内の検索で大量にヒットするような不正な登録?してるとこはバンバン儲かってそうw 理不尽ですよねぇ。でも、そゆとこはいくら条件が良くて高トラフィックでもやっぱり好感持てないので借りたいとは思わないですwww

この前、試しに借りてみた高トラフィックのモールはドイツ系なんですね。とは言ってもApfellandでもメインランドでもない場所です。モールの規模は大きめでトラフィックは数千~1万ぐらいあるみたいなんですが思うように売れてませんwww なので、ここは撤退するかもです^^; まあ、うちの商品はショップや土地持ってる人向けのものが多いので売れ行き良くないのは仕方ないんですけどね。。。いや、パッケージからして商品のできばえもあまり良くないのかな orz
それで、また別に探してたら良さそうなのがあったのでレンタルしてきました。今まで主要店舗のひとつだったサンセットショッピングモール店が閉店してちょっと寂しくなったので、今度はそれに代わる新店舗っていうことで探しました^^;

場所はMonemaというSIMにあるモールです。一番端っこなので客足はあまり期待せずに借りたんですが、店舗がゆったりしてて各店舗に直接TP設定してあるんですよ>< それで気にいっちゃいました^^
http://slurl.com/secondlife/Monema/7/22/58


ガチャガチャのスクリプト

ブログで宣伝もしたのに新作が全く売れないって悲しいですね。また何か作ろうって気にもなりません。。。ああぁ、私ったらまた誰もほしがらないアイテムを作っちゃったんですね orz

さて、今回はガチャガチャのスクリプトを書いてみました。まあ支払うとコンテンツ内のアイテムをランダムに選んで渡すベンダーですね^^


コンテンツ内が変化したらオブジェクト数をチェックして1個以上入ってたら支払い可能になるようにしました。
// ガチャガチャ
integer price=10;  // 値段
integer len;

init()
{
    llSetPayPrice(PAY_HIDE,[PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]);  // 一時的に支払いを不可に設定
    len=llGetInventoryNumber(INVENTORY_OBJECT);  // コンテンツ内のオブジェクト数
    if (len > 0) {  // オブジェクトが1個以上入ってたら支払いボタンに値段を設定
        llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
    }
}

default
{
    state_entry()
    {
        init();  // 最初にinit実行
    }

    changed(integer change)
    {
        if (change & CHANGED_INVENTORY) {
            init();  // コンテンツ内が変わったらinit
        }
    }

    money(key id, integer amount)
    {  // 支払いがあったら
        if (amount == price) {  // 金額チェック
            integer i=llFloor(llFrand(len));  // 乱数発生して
            string str=llGetInventoryName(INVENTORY_OBJECT,i);  // オブジェクト名を決め
            llGiveInventory(id,str);  // 購入者に渡す
        }
        else llWhisper(0,"Error - illegal amount");  // 金額がおかしかったらエラー表示
    }
}

あと、編集でタッチすると支払いに設定しとくといいでしょうかね。スクリプトで llSetClickAction(CLICK_ACTION_PAY); でもいいですがw

2011年5月19日追記: 支払い額のチェックを追加しました。

2008年8月6日水曜日

TokyoZERO番地のフリマっていつまで?

記事のタイトルにわざとフリーとか無料とか入れてまでアクセス稼ぎするのが、恥ずかしくてできなくなってきた千尋ですw そうしたらアクセス数増えるの皆さん知ってますからねぇwww

今日はTokyoZERO番地のSIMで開催中のフリーマーケット出品してる商品を半分ほど入れ替えてきました^^

http://slurl.com/secondlife/TokyoZERO%20Entertainment/70/47/26

このフリマではSHOP CHIHIROは主催者TZB Loveさんの意向に合わせてフリーアイテム~L$10以下の格安商品を出品してます^^

出店したのは6月頃なんですが、会場が次々と拡張されて離れや2階までできてますね^^ 数えてないんですが参加者の数すごそうです。
それにフリマの期間は最初1ヶ月ぐらいかなって勝手に思ってたんですけど、2ヶ月過ぎてもまだ続いてます^^ いつまでの予定なのかなw


2008年8月5日火曜日

空高く飛べるスクリプト

時々サンドボックスで放置して寝てたりするので、スカイボックスがリターンされてても落ちないようHUDにエアプレーン用スクリプトを入れてる千尋ですwww

アバターは普通に飛ぶと高度150mぐらいが限界ですよね。そこで今回はもっともっと高く飛べるようにするスクリプトです^^

装着したときにllGetMassで物理オブジェクト(装着したアバターも含む)の質量を出して、それに重力加速度(だと思います)を掛けた値を垂直方向にllSetForceで加えると高いところを飛行しても落ちなくなりますね。
default
{
    attach(key on)
    {
        if (on) {  // 装着したとき
            float f=llGetMass()*9.8;  // 質量×重力加速度
            llSetForce(<0,0,f>,TRUE);  // Z方向に力を加える
        }
        else {  // そうでないとき
            llSetForce(<0,0,0>,TRUE);  // 力をリセット
        }
    }
}

でも、これだけだと落下は防げますが上昇ができませんw


上昇させるにはUPキー押したときllSetForceでZ方向に加える力を増やすだけでいいんですが、乗り物みたいにキー入力コントロールの部分を書かなきゃいけないのでちょっと複雑になります^^;;
// 空高く飛べる
float gravity=9.8;  // 重力加速度

default
{
    attach(key on)
    {
        if (on) {  // 装着したらコントロールのパーミッションをリクエスト
            llRequestPermissions(on, PERMISSION_TAKE_CONTROLS);
        }
        else { // そうでないときは
            llReleaseControls();  // コントロール解除
            llSetForce(<0,0,0>,TRUE);  // 力をリセット
        }
    }

    run_time_permissions(integer perm)  
    {
        if (perm & PERMISSION_TAKE_CONTROLS)
        {  // コントロールが許可されたら
            llTakeControls(CONTROL_UP|CONTROL_DOWN, TRUE, TRUE);  // UP/DOWNキー受付
        }
    }

    control(key id, integer level, integer edge)
    {
        integer i=llGetAgentInfo(llGetOwner());  // アバターの状態を調べて
        if (i & AGENT_FLYING) {  // 飛んでるとき
            float f;  // Z方向の力の計算用
            if (level & CONTROL_UP) f=llGetMass()*gravity*2;  // UPキーが押されると加速度を増やす
            else if (edge & (CONTROL_UP|CONTROL_DOWN)) f=llGetMass()*gravity;  // UP/DOWNキーが戻ると加速度を戻す
            llSetForce(<0,0,f>,TRUE);  // 力を設定
        }
        else llSetForce(<0,0,0>,TRUE);  // 飛んでないとき力を0にする
    }
}

同じような要領で力をX方向やY方向に加えるようにすると高速移動させたりとかもできますね^^

2010年3月25日追記: ログインしたとき浮いてしまうことがあったので、コントロールが許可された直後にもアバターの状態をチェックするよう変更にしました。高くまで飛べるスクリプトは一般にフライトアシストって呼ばれてるようです。9.8の値を使うっていうのは昔フリービーで入手した、高速で飛び回れるマントか何かのスクリプトを見て知ってたんですが、このスクリプトを書いた頃はフライトアシストっていう言葉を知りませんでした^^;

2010年3月28日追記: 場所によってまだ浮いてしまうことがあるみたいなのでスリープを入れました。

2010年5月11日追記: 一度飛んで、高度3000m以上くらいの場所に降りたとき浮き上がるっていうご報告がありましたので、もう飛んでないときは0じゃなくて下向きに力をかけるよう変更してみました^^;

2011年6月24日追記: 時々浮き上がるのは llTakeControls(CONTROL_UP, TRUE, TRUE); でUPキーしか受付けてないのが原因でした。。。できるだけ簡単にしようと色々削ったのが失敗だったですね。それに今まで気がつかなかったのも、かなりいい加減ですけど。。。orz キーの受付けと加速度を戻す部分にもDOWNキーを追加して、去年いい加減に追加してた部分は元に戻しました。m(_ _;)m

立体迷路のフリマ

立体迷路跡地で開催されてますフリーマーケットに出店させて頂きました^^

http://slurl.com/secondlife/NEOJAPAN%20TOKYO/158/208/23

主催者hayatoさんのブログでは、この時点でまだ正式には募集かけてないみたいでしたが、私が商品をならべてる間にも出店希望者が来られていました。。。何だか募集しない間に埋まっちゃいそうですねwww
http://slurl.com/secondlife/NEOJAPAN%20TOKYO/159/248/22
期間は8月31日までです

ところでhayatoさんと言えばやっぱり立体迷路なんですが、方向音痴な千尋はまだチャレンジしたことがありませんw でも今度行ってみますねー。たぶん途中でうわぁあああ!ってなって逃げ出しちゃうと思いますけどねwww


2008年8月3日日曜日

座っても脚が出ないスカートのスクリプト

ものづくり始めたころは服なんかも少し作ってみたんですが、失敗の連続でアップロード費用かかりすぎて挫けた千尋ですwww それで服はもう今のところ全く作ってないので、ときどき買っちゃたりとかすることあるんですが、着替えちゃうと何かいつもの自分じゃない気がして落ち着かないんですよw なので結局いつもの同じ服に戻ってます^^;

でも、この前いろんなモール見てまわってたときにワンダーチェアでゲットした服着てみたら、かわいすぎず、ハデすぎず、まあまあ自分的に合ってそうな感じだったんで、しばらくはこれ着てようかなって気になってきました^^ それで、今までずっと地味なタイトスカートだったんですが、この服のはプリムスカートなんですね。座ると足が。。。^^;;

そゆことで今回はフレキシブルなプリムスカートで座っても脚が出ないようにするスクリプトを書いてみました。
タイマーでアバターの状態を定期的に調べて、座ってたらフレキシブルの特徴の重力とX軸、Y軸のフォース(力?)を足が隠れるように変えます。



使い方は、編集でスカートのプリムに設定してる特徴の数値のとおりに、スクリプトのunsitのリスト変数のところを変えてください(柔軟性は整数にして)。その後にスクリプトを親プリムに入れてください。(そこを変えずにスクリプトを先に入れちゃうとプリムの特徴が書き換えられてしまいますのでw)
親プリムがフレキシじゃないときはllSetLinkPrimitiveParamsのLINK_SETをLINK_ALL_CHILDRENに変えてくださいね^^
あとは座ってみて変だったらスクリプトのgravityとforceの値をテキトーに調整してください。
// 座っても脚の隠れるスカート
// 座ってないときの特徴パラメータリスト [ 柔軟性, 重力, ドラッグ, 風, 緊張, X、Y、Z方向のフォース ]
list unsit=[3, 2.0, 1.0, 1.0, 8.0, <0,0,0>];
list sit;  // 座ったときの特徴パラメータリスト
float gravity=0.5;  // 座ったときの重力(調整してね)
float force=3;  // 座ったときに加えるフォース(調整してね)

default
{
    state_entry()
    {
        unsit=[PRIM_FLEXIBLE,TRUE]+unsit;  // llSetLinkPrimitiveParams用にパラメータを追加
        sit=llListReplaceList(unsit,[gravity],3,3);  // 座ったときの特徴の重力を設定
        llSetTimerEvent(0.5);  // 0.5秒間隔でタイマー
    }

    timer()
    {
        integer i=llGetAgentInfo(llGetOwner());  // アバターの状態
        string str=llGetAnimation(llGetOwner());  // アバターのアニメーション
        if ((i & AGENT_SITTING) || str == "Sitting")
        {  // 座ってるか座るアニメーションだったら
            list l=llGetObjectDetails(llGetOwner(),[OBJECT_ROT]);  // アバターのローテーションを調べる
            vector v=llRot2Euler(llList2Rot(l,0));  // リストのローテーションをベクトルに変換
            float x=llCos(v.z)*force;  // z方向の角度から
            float y=llSin(v.z)*force;  // x,yに加える数値を計算
            sit=llListReplaceList(sit,[<x,y,0>],-1,-1);  // リストの値に入れて
            llSetLinkPrimitiveParams(LINK_SET,sit);  // それをプリムに反映
        }
        else {  // 座ってないとき
            llSetLinkPrimitiveParams(LINK_SET,unsit);  // プリムに座ってない状態を設定
        }
    }
}

フレキシブルプリムってあまり使ったことないので詳しくないんですよw それで今回は簡単に重力だけ調整するようにしたんですが、他の柔軟性、ドラッグ、 緊張なんかも細かく調整できるようにしたほうがいいんでしょうかね?^^;
8月5日11時20分頃追記: アバターの状態の判定のところを間違えてたので修正しました
if (i == AGENT_SITTING || str == "Sitting") → if ((i & AGENT_SITTING) || str == "Sitting")

2008年8月2日土曜日

ウェルカムマットのスクリプト

今回はとても簡単なウェルカムマットです。ショップの出入り口なんかに敷いてあって、踏むと Chihiro Owatatsumi, welcome to SHOP CHIHIRO !! みたいなメッセージを喋るマットです。

ビューワーが1.20になってから普通にスクリプトに直接日本語を入れれるようになったので、日本語で表示するのも簡単にできるようになりましたね^^
マットを踏んだとかはcollision_startcollision_endイベントで接触を検知します。
// 接触するとチャットで喋る
default
{
    collision_start(integer total_number)
    {  // オブジェクトに接触すると
        string name=llDetectedName(0);  // 名前を調べて
        llSay(0, name+"さん、いらっしゃい!!");  // いらっさい♪
    }
}

はい、こんだけですw オブジェクトはもちろん踏みやすいように薄くして、マットって感じのテクスチャ貼ってくださいねー^^
でも、これだとちょっと引き返したり、短時間のうちに何度も往復したりですとか、あと普通ないと思いますがぴょんぴょん跳ねながら移動するアバターなんかが通ったりするとメッセージがたらたら連続で表示されるはずなので、もうひと工夫したほうがいいんじゃないかなって思いますwww


今度はcollision_endでマットから離れたときに喋るようにして、30秒以内に同じアバターが来たときは喋らないようにしてみました^^
// ウェルカムマット
string tmp;  // 名前の記憶用

default
{
    collision_end(integer total_number)
    {  // マットから離れると
        string name=llDetectedName(0);  // アバター名を調べて
        if (name != tmp) {  // 前のアバター名と違ったら
            tmp=name;  // 名前を記憶しといて
            llSay(0, name+"さん、ようこそ♪");  // メッセージ喋る
        }
        llSetTimerEvent(30);  // 30秒後にタイマー
    }

    timer()
    {
        llSetTimerEvent(0);  // タイマークリア
        tmp="";  // 記憶を消去
    }
}

2008年8月1日金曜日

セイシェルマイスターセレクトショップ

サンセットショッピングモール店は予定通り閉店いたしました。ご来店頂きました皆様ありがとうございました。
そのサンセットでもお世話になりましたwildcatさんのご好意で、サンタモニカ第二モールのセイシェルマイスターセレクトショップ内にSHOP CHIHIROの製品も置かせて頂いてます^^

http://slurl.com/secondlife/Thisbe/109/217/22

店内はショップオーナーwildcatさんの植物製品、ファルコンさんのAFKツール(ネタ用品?)、珠姫(みるく)さんのタイニーアバター、お手製商店さんのお人形さんなど、そして千尋のまとまりのない商品w が置いてあります^^
それから、ピンクのハートピアスを入れてますラッキーレターは、外のほうがいいかなって思って外壁に移動させました。宜しくお願いします♪

サンタモニカショッピングモールはwildcatさんのパートナーりこさんの経営です。第二モールはまだ店舗の空きありますのでクリエーターの皆様、レンタルいかがでしょうか^^

9月18日1時半頃追記: このショップはサンタモニカ第二モールの改装で変更になりました。


栃木JAPAN 宮祭り 2008

TOCHIGI JAPAN SIMで開催される宮祭りの屋台モールに出店させて頂きました^^
お祭りの期間は8/1~8/20です。会場が見てのとおり盆踊りって感じになってるんでそのまんまなんですが盆踊り大会もあるそうですw

http://slurl.com/secondlife/TOCHIGI%20JAPAN/44/74/23
お祭りなのでイカ焼きとかリンゴ飴みたいなホントに「祭り」って感じの屋台出してる人はいるかなって思って見まわしたんですけど、そうゆう屋台はないみたいでしたw