スクリプトでは、アバターがアクティブにしてるグループのキーを取得する方法が無いので、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 件のコメント:
コメントを投稿