今回は権限(パーミッション)をチェックするスクリプトのサンプルです。権限のチェックはllGetInventoryPermMaskを使います。
サンプルでは、オーナーがアイテムの譲渡権限(トランスファー)を持ってるかを簡単にチェックしてます。。。まあ自作のアイテムしか扱う機会がない人は無用かなって思いますけどw
比べやすいようにオブジェクトのコンテンツを全部渡すスクリプトをベースにしてみました。今回注釈とかあまり入れてませんので、そちらのスクリプトも参考にしてくださいね^^
// 譲渡権限チェックのサンプル
// タッチでコンテンツ内のアイテムを全部渡す
list item;
listup()
{ // アイテムのリストアップ
item=[];
integer i;
integer j=llGetInventoryNumber(INVENTORY_ALL);
string str;
for (i=0; i < j; i++) {
str=llGetInventoryName(INVENTORY_ALL,i);
if (str != llGetScriptName()) { // このスクリプト以外
if (!(llGetInventoryPermMask(str,MASK_OWNER) & PERM_TRANSFER)) { // オーナーが譲渡できないアイテム
llOwnerSay(str+" の譲渡権限がありません><");
}
else { // それ以外はリストアップ
item+=[str];
}
}
}
}
default
{
state_entry()
{
listup();
}
changed(integer change)
{
if (change & CHANGED_INVENTORY) { // コンテンツ内が変化したとき
listup();
}
}
touch_start(integer total_number)
{ // タッチイベント
key id=llDetectedKey(0);
if (item) {
string folder=llGetObjectName();
if (id) llGiveInventoryList(id,folder,item); // フォルダで渡す
}
else { // 渡すアイテムが無いとき
llWhisper(0,"準備中です^^;"); // 準備中ってことでごまかすw
}
}
}
0 件のコメント:
コメントを投稿