LlGetInventoryPermMask/ja - Second Life Wiki

LlGetInventoryPermMask/ja

From Second Life Wiki

Jump to: navigation, search

関数: integer llGetInventoryPermMask( string item, integer mask );

インベントリアイテムの要求された権限maskのビットフィールドのinteger値を返します。

• string item item名、
• integer mask MASK_*フラグ
マスク 解説
MASK_BASE 0 基本権限。
MASK_OWNER 1 現在のオーナの権限。
MASK_GROUP 2 アクティブなグループの権限。
MASK_EVERYONE 3 皆が持っている権限。
MASK_NEXT 4 次のオーナがもちうる権限。
権限 解説
PERM_ALL 0x7FFFFFFF 移動/編集/複製/譲渡 権
PERM_COPY 0x00008000 複製権
PERM_MODIFY 0x00004000 編集権
PERM_MOVE 0x00080000 移動権
PERM_TRANSFER 0x00002000 譲渡権

警告

  • itemがプリム内から無くなっている場合、エラーがDEBUG_CHANNELで報告されます。

 
// Complain unless this script is Open/ Yes Mod/ Yes Copy/ Yes Transfer.
 
warnIfClosed()
{        
    integer PERMS_OPEN = (PERM_MODIFY | PERM_COPY | PERM_TRANSFER);
    string item = llGetScriptName();
    integer everyonePerms = llGetInventoryPermMask(item, MASK_EVERYONE);
    integer nextPerms = llGetInventoryPermMask(item, MASK_NEXT);
    if ((everyonePerms & PERM_COPY))
    {
        if ((nextPerms & PERMS_OPEN) == PERMS_OPEN)
        {
            llOwnerSay("Open/ Yes Mod/ Yes Copy/ Yes Transfer/ Thank you");
            return;
        }
    }
    llSay(0, "Q: Open/ Yes Mod/ Yes Copy/ Yes Transfer? A: Not so!!!");
}
 
default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }
    state_entry()
    {
        warnIfClosed();
    }
}
 

ノート

  • 事実上、このLSL wikiで公開されたスクリプトの権限はログインするまではPERM_COPYで、ログイン後はPERM_MODIFYかPERM_COPYです。
  • 作られたスクリプトの権限は、基本はPERM_ALL、オーナはPERM_ALL、次のオーナはPERM_MOVEあるいはPERM_TRANSFER、グループは0(なし)、全体は0(なし)ということが多いです。これらの権限はインベントリ内またはオブジェクト内で作る場合のいずれも問わず同じということが多いです。

関連項目