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