Site search

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

2008年8月7日木曜日

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

ブログで宣伝もしたのに新作が全く売れないって悲しいですね。また何か作ろうって気にもなりません。。。ああぁ、私ったらまた誰もほしがらないアイテムを作っちゃったんですね 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日追記: 支払い額のチェックを追加しました。

0 件のコメント:

コメントを投稿