LlGetInventoryPermMask

De DigiWiki.

// 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();
    }
}

To test for the opposite (e.g. to see if something is NOT copy):

((PERM_COPY & llGetInventoryPermMask(myitem, MASK_OWNER)) == 0)

To remind the next owner what permissions to set before selling on choose which need to be set;

CheckPerms()
{        
    string item = llGetScriptName();
    if((PERM_COPY & llGetInventoryPermMask(item, MASK_NEXT)) != 0)
    {
        llOwnerSay("Set no copy");
    }
    if((PERM_MODIFY & llGetInventoryPermMask(item, MASK_NEXT)) != 0)
    {
        llOwnerSay("Set no mod");
    }
    if((PERM_TRANSFER & llGetInventoryPermMask(item, MASK_NEXT)) != 0)
    {
        llOwnerSay("Set no transfer");
    }
    return;
}
 
default
{
    on_rez(integer start_param)
    {
        llResetScript();
    }
    state_entry()
    {
        if(llGetOwner() != llGetInventoryCreator(llGetScriptName()))
        {
            CheckPerms();
        }
    }
}
Outils personnels
  • Cette page a été consultée 529 fois.
donate
Google Ads