2009年9月9日水曜日

グループギフトとかのスクリプト

うちで販売してる集客用品にはグループ限定機能って付けてないんですけど、時々そういう機能をご希望されるお客様もいるので、もう今後の改良では実装していこうかなって思ってる千尋です。元々トラフィックを上げるのにそういう限定しちゃうってのが個人的にあまり好ましいと思わなかったから付けなかったんですけど、実装自体はそんなに難しくないので、お客様のご希望でランダムチャットマネーとかラッキーレターを改造したものを納品したことがありました^^

スクリプトでは、アバターがアクティブにしてるグループのキーを取得する方法が無いので、llSameGroupでオブジェクトに設定されてるグループと、アバターがアクティブにしてるグループが一致するかをチェックぐらいしか出来ないんですねw

なのでグループ限定は、基本的に自分の土地(土地オーナーが自分の名義)でないと使えません。通常レンタルは、その土地のグループと同じグループを設置するオブジェクトに設定しないといけないので、レンタルの場合は自分のグループが使えないと思います。

前置きがちょっと長くなりましたが、今回はタッチでグループギフトを渡すスクリプトです。
コンテンツ内にギフト用のオブジェクトを1つ(オブジェクト以外のアイテムは箱詰めして)入れて使ってくださいね^^

// Group gift giver
string gift;

init()
{  // コンテンツ内にあるオブジェクト名を取得
    gift=llGetInventoryName(INVENTORY_OBJECT,0);
}

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

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

    touch_start(integer total_number)
    {
        key id=llDetectedKey(0);  // タッチしたアバターのキー
        if (llList2Key(llGetObjectDetails(llGetKey(),[OBJECT_GROUP]),0) == NULL_KEY) {
            // グループ設定されてなかったら
            llWhisper(0,"Sorry, owner must set a group.");  // エラーメッセージ
            return;  // リターン
        }
        else if (llGetInventoryType(gift) == INVENTORY_NONE) {
            // ギフトが入ってなかったら
            llWhisper(0,"Sorry, I have not a gift now.");  // エラーメッセージ
            return;  // リターン
        }
        if (llSameGroup(id)) {  // グループが一致したら
            llGiveInventory(id,gift);  // ギフトを渡す
            llInstantMessage(id,"Here is an our group gift, thanks.");  // グループギフトをどうぞ~♪
        }
        else {  // 一致しなかったらエラーメッセージ
            llInstantMessage(id,"Group member only. Activate our group tag and touch again.");
        }
    }
}

0 件のコメント:

コメントを投稿