2011年5月29日日曜日

サンマルコ広場のカフェって感じのチェア&テーブルセット

ヴェネチア(ベニス)のサンマルコ広場によくある野外カフェの椅子、テーブルに似たものを作ってみました^^

見本にした椅子はもっと濃い黄色だったんですけど、あまり明るい原色だと何か仕上げるの難しそうなので色とかは妥協してます^^;

あと、テーブルクロスが最初全然いい感じに出来なくて諦めかけてたんですが、検索したらブレンダーのクロスシミュレーションっていう機能で楽に作れることがわかりました。
こちらとてもわかりやすくて手順が載ってて参考になったページです^^
BlenderでSculpted Primを作ってみる - 布のような表現(Kagami Kohimeさん)

椅子は3プリムで4個セット、テープルが1プリム、テーブルクロスが1プリムで、それぞれ1プリムの影と全部くっ付いた影2パターンもセットになってます。他のオプションの影以外は1つにまとめて入れてるので、パッケージのコンテンツ内は椅子1つの他は影ばかりに見えますが、椅子を取り出したらテーブルや椅子全部並べた状態で出てきます。。。て、すいません、何書いてるのかよくわからないですよね?^^; 椅子のポーズは今までに作ってたものやそれを修正したもの、新規に作ったものを合わせて5つ入れました。ポーズの切り替えは座ってからタッチで順に切り替わります。

パーミションは修正可、コピー不可、譲渡可で、価格はL$200にしました。ヴェネチアARIA店限定発売です。宜しくお願いします^^

2012年4月30日追記: ヴェネチアの店舗こちらに移転になりました。


2011年5月10日火曜日

グループ専用ベンダーのスクリプト

グループギフトってのはよくあると思うんですが、たまにグループメンバーだけしか商品買えないベンダーなんてのもありますよね。そこで今回は簡単なグループ専用ベンダーのスクリプトです^^

まあこのグループギフトスクリプトをPayイベントで商品を渡すようにした感じですが、商品オブジェクトのチェックは支払いが起きたときだけにしました。無料のグループギフトと違って、グループが一致しなかったら返金しないといけないので、単品を売る商品ベンダーですが口座からリンデンドル引落しの許可が必要になります。

// グループ専用ベンダー
integer price=10;  // 価格

set_pay(integer on)
{
    if (on) {  // 支払いダイアログに価格を設定する
        llSetPayPrice(PAY_HIDE,[price,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
        llSetClickAction(CLICK_ACTION_PAY);  // クリックで支払い
    }
    else {  // 支払いダイアログを無効にする
        llSetPayPrice(PAY_HIDE,[PAY_HIDE,PAY_HIDE,PAY_HIDE,PAY_HIDE]);
        llSetClickAction(CLICK_ACTION_TOUCH);  // クリックでタッチ
    }
}

default
{
    state_entry()
    {
        set_pay(FALSE);  // 支払いダイアログを無効に
        llRequestPermissions(llGetOwner(),PERMISSION_DEBIT);  // 口座引落しリクエスト
    }

    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (id == llGetOwner()) {  // オーナーだったら
            // 口座引落しが許可されてなかったら再リクエスト
            if (!(llGetPermissions() & PERMISSION_DEBIT)) llRequestPermissions(id,PERMISSION_DEBIT);
        }
    }

    run_time_permissions(integer perm)
    {
        if (perm & PERMISSION_DEBIT)
        {  // 口座引落し許可されたら
            set_pay(TRUE);  // 支払いダイアログ設定
        }
    }

    money(key id, integer amount)
    {  // 支払いが発生したら
        string item=llGetInventoryName(INVENTORY_OBJECT,0);  // コンテンツ内の最初のオブジェクト
        if (llList2Key(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0) == NULL_KEY) {  // グループ設定されてなかったら
            llGiveMoney(id,amount);  // 返金
            llWhisper(0,"Error - owner must set a group.");  // グループ未設定エラー
        }
        else if (llGetInventoryType(item) == INVENTORY_NONE) {  // オブジェクトが入ってなかったら
            llGiveMoney(id,amount);  // 返金
            llWhisper(0,"Error - object not found.");  // オブジェクトが見つからないエラー
        }
        else if (amount != price) {  // 支払い額が価格と一致しないとき
            llGiveMoney(id,amount);  // 返金
            llWhisper(0,"Error - illegal amount.");  // 不正な金額ですエラー
        }
        else {  // エラーじゃないとき
            if (llSameGroup(id)) {  // グループが同じだったら
                llGiveInventory(id,item);  // 商品を渡す
                llInstantMessage(id,"Thank you!!");  // サンキュー^^
            }
            else {  // グループが同じじゃない
                llGiveMoney(id,amount);  // 返金
                llInstantMessage(id,"Sorry, group member only.");  // グループ専用です
            }
        }
    }
}

スクリプトの価格のところだけ設定して、コンテンツ内に商品のオブジェクトを1個入れてください。オブジェクトが複数のときやオブジェクト以外のアイテムのときは箱詰めしてくださいね。そして忘れないようベンダーにグループをセットしてご使用ください。

他のグループ限定スクリプト同様、設置場所が自分名義の土地でない場合は使えないことが多いです。(異なるグループは自動返却される土地設定が多いので)

5月14日追記: 不正な額の支払いが起きたときのエラーを追加しました。

2011年5月5日木曜日

水の都ヴェネチアに出店♪

イタリアのヴェネチアを模して作られたVenezia ARIAっていう街があるんですが、そちらを建設されたkaedepanさんのご厚意で店舗を貸してもらえることになりました^^


あまり奥の方まで撮れてないかもですが、こんな感じの街並です。運河をゴンドラに乗って移動したりできます。
http://slurl.com/secondlife/Prada/119/85/30


こちらが貸してもらった新店舗です。どうぞ宜しくお願いします^^
http://slurl.com/secondlife/Prada/132/50/22

2012年4月30日追記: 移転しました。
http://slurl.com/secondlife/Prada/198/12/24