Jump to content

LlGetObjectPermMask

From OSgrid Wiki

Function: integer llGetObjectPermMask( integer mask );

Returns an integer that is the requested permission mask for the root object the task is attached to.

• integer mask – MASK_* flag

Mask Description
MASK_BASE 0 The base permissions.
MASK_OWNER 1 Current owner permissions.
MASK_GROUP 2 Active group permissions.
MASK_EVERYONE 3 Permissions everyone has.
MASK_NEXT 4 Permissions the next owner will have.


Permissions Value Description
PERM_ALL 0x7FFFFFFF Move/Modify/Copy/Transfer permissions
PERM_COPY 0x00008000 Copy permission
PERM_MODIFY 0x00004000 Modify permission
PERM_MOVE 0x00080000 Move permission
PERM_TRANSFER 0x00002000 Transfer permission


Examples

See the text floating above an object blink out and then come back to say something like:

<source lang="lsl">
            Open Object
                ---
           by Anonymous
                ---

Open/ Yes Mod/ Yes Copy/ Yes Transfer </source>

when you drag the following script from inventory on to the object:

<source lang="lsl">

// Float a label over an object: its name, description, and permissions. // http://wiki.secondlife.com/wiki/llGetObjectPermMask

string perms2String(integer everyonePerms, integer nextPerms) {

   integer PERMS_OPEN = (PERM_MODIFY | PERM_COPY | PERM_TRANSFER);

   string line = "Closed";
   if ((nextPerms & PERMS_OPEN) == PERMS_OPEN)
   {
       if (everyonePerms & PERM_COPY)
       {
           line = "Open";
       }
   }

   if (nextPerms & PERM_MODIFY)
   {
       line += "/ Yes Mod";
   }
   if (nextPerms & PERM_COPY)
   {
       line += "/ Yes Copy";
   }
   if (nextPerms & PERM_TRANSFER)
   {
       line += "/ Yes Transfer";
   }

   return line;

}

list getLabels() {

   string name = llGetObjectName();
   if (name == "Object") { name = "(No Name)"; }

   string description = llGetObjectDesc();
   if (description == "") { description = "(No Description)"; }

   integer everyonePerms = llGetObjectPermMask(MASK_EVERYONE);
   integer nextPerms = llGetObjectPermMask(MASK_NEXT);
   string permissions = perms2String(everyonePerms, nextPerms);
   return [name, description, permissions];

}

floatLabels(list lines) {

       string label = llDumpList2String(lines, "\n---\n");
       vector color = <1.0, 1.0, 1.0>; // color = <R, G, B>
       float opacity = 1.0; // opacity = alpha = 1.0 - transparency        
       llSetText(label, color, opacity);

}

default {

   state_entry()
   {
       llSetText("", <0.0, 0.0, 0.0>, 0.0);
       llSleep(0.1);
       floatLabels(getLabels());
       llRemoveInventory(llGetScriptName());
   }

} </source>


Notes
The perms of a newly created object often are Base = PERM_ALL, Owner = PERM_ALL, Next = PERM_MOVE or PERM_TRANSFER, Group = 0 (none), Everyone = 0 (none). The perms2String example describes those perms as "Closed / Yes Transfer".

See Also
Functions
• llGetInventoryPermMask