Skip to content
lsl.devlsl.devLSL Dev

llGetObjectPermMask

function
Function syntax
integer llGetObjectPermMask(
  1. integer group// MASK_* group (e.g., MASK_BASE, MASK_OWNER, MASK_GROUP, MASK_EVERYONE, or MASK_NEXT) to get. Values: AssetPermissionCategoryOrFlag
);
Returns
integer
Energy
10

Returns an integer of the requested permission category for the object containing this script.

How to use
integer result = llGetObjectPermMask(0);
categoryDescription
MASK_BASE0The base permissions.
MASK_OWNER1Current owner permissions.
MASK_GROUP2Active group permissions.
MASK_EVERYONE3Permissions everyone has.
MASK_NEXT4Permissions the next owner will have.
MASK_COMBINED16Include object inventory contents when calculating perms.
Combine with other mask flags, for instance MASK_OWNER|MASK_COMBINED
PermissionsValueDescription
PERM_ALL0x7FFFFFFFMove/Modify/Copy/Transfer permissions
PERM_COPY0x00008000Copy permission
PERM_MODIFY0x00004000Modify permission
PERM_MOVE0x00080000Move permission
PERM_TRANSFER0x00002000Transfer permission
Example 1
if ((permsYouHave & permsYouWant) == permsYouWant)
llSay(0, "You have the perms you want.");
else
llSay(0, "You don't have the perms you want.");
Example 2
integer ownerPerms = llGetObjectPermMask(MASK_OWNER);
integer copyAndModPerms = PERM_COPY | PERM_MODIFY;
if ((ownerPerms & copyAndModPerms) == copyAndModPerms)
llSay(0, "Owner has copy & modify perms.");
else
llSay(0, "Owner does not have copy & modify perms.");
Example 3
58 collapsed lines
string getPermsAsReadableString(integer perm)
{
integer allPerms = PERM_ALL;
integer fullPerms = PERM_COPY | PERM_MODIFY | PERM_TRANSFER;
integer copyModMovePerms = PERM_COPY | PERM_MODIFY | PERM_MOVE;
integer copyModPerms = PERM_COPY | PERM_MODIFY;
integer copyTransMovePerms = PERM_COPY | PERM_TRANSFER | PERM_MOVE;
integer copyTransPerms = PERM_COPY | PERM_TRANSFER;
integer modTransMovePerms = PERM_MODIFY | PERM_TRANSFER | PERM_MOVE;
integer modTransPerms = PERM_MODIFY | PERM_TRANSFER;
integer copyMovePerms = PERM_COPY | PERM_MOVE;
integer transMovePerms = PERM_TRANSFER | PERM_MOVE;
string output = " perms: ";
if ((perm & allPerms) == allPerms)
output += "full and move";
else if ((perm & fullPerms) == fullPerms)
output += "full";
else if ((perm & copyModMovePerms) == copyModMovePerms)
output += "copy & modify & move";
else if ((perm & copyModPerms) == copyModPerms)
output += "copy & modify";
else if ((perm & copyTransMovePerms) == copyTransMovePerms)
output += "copy & transfer & move";
else if ((perm & copyTransPerms) == copyTransPerms)
output += "copy & transfer";
else if ((perm & modTransMovePerms) == modTransMovePerms)
output += "modify & transfer & move";
else if ((perm & modTransPerms) == modTransPerms)
output += "modify & transfer";
else if ((perm & copyMovePerms) == copyMovePerms)
output += "copy & move";
else if ((perm & PERM_COPY) == PERM_COPY)
output += "copy";
else if ((perm & transMovePerms) == transMovePerms)
output += "transfer & move";
else if ((perm & PERM_TRANSFER) == PERM_TRANSFER)
output += "transfer";
else if ((perm & PERM_MOVE) == PERM_MOVE)
output += "move";
else
output += "none";
// Remember, items in Second Life must have either
// PERM_COPY or PERM_TRANSFER when "talking about"
// owner perms or perms for next owner.
return
output;
}
default
{
state_entry()
{
integer basePerms = llGetObjectPermMask(MASK_BASE);
integer ownerPerms = llGetObjectPermMask(MASK_OWNER);
integer nextOwnerPerms = llGetObjectPermMask(MASK_NEXT);
integer groupPerms = llGetObjectPermMask(MASK_GROUP);
integer everyonePerms = llGetObjectPermMask(MASK_EVERYONE);
llSay(0, "base" + getPermsAsReadableString(basePerms));
6 collapsed lines
llSay(0, "owner" + getPermsAsReadableString(ownerPerms));
llSay(0, "next owner" + getPermsAsReadableString(nextOwnerPerms));
llSay(0, "group" + getPermsAsReadableString(groupPerms));
llSay(0, "everyone" + getPermsAsReadableString(everyonePerms));
}
}
Example 4
integer isLocked()
{
return !(llGetObjectPermMask(MASK_OWNER) & PERM_MOVE);
}

The perms of a newly created object are often:

Base = PERM_ALL

Owner = PERM_ALL

Next = PERM_MOVE or PERM_TRANSFER

Group = 0 (none)

Everyone = 0 (none)

Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.