Difference between revisions of "LlGetObjectPermMask"

From Second Life Wiki
Jump to navigation Jump to search
m (fixed typo)
m (removed second example script)
Line 33: Line 33:
         output += "transfer permissions";
         output += "transfer permissions";


     //  remember, neither 'only mod perms' nor 'no perms' is possible
     //  remember, neither PERM_MODIFY only nor no perms at all is possible
     //  item either has copy or mod perms at least.
     //  items in Second Life either have PERM_COPY or PERM_TRANSFER at least


     return
     return
Line 57: Line 57:
         llSay(PUBLIC_CHANNEL, "group" + getPermsAsReadableString(groupPerms));
         llSay(PUBLIC_CHANNEL, "group" + getPermsAsReadableString(groupPerms));
         llSay(PUBLIC_CHANNEL, "everyone" + getPermsAsReadableString(everyonePerms));
         llSay(PUBLIC_CHANNEL, "everyone" + getPermsAsReadableString(everyonePerms));
    }
}
</lsl>
See the text floating above an object blink out and then come back to say something like:
<pre>
            Open Object
                ---
            by Anonymous
                ---
Open/ Yes Mod/ Yes Copy/ Yes Transfer
</pre>
when you drag the following script from inventory on to the object:
<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()
     // remove this script after having spammed local chat with info
{
     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());
         llRemoveInventory(llGetScriptName());
     }
     }

Revision as of 11:30, 25 November 2012

Summary

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

Category 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

<lsl> string getPermsAsReadableString(integer perm) {

integer fullPerms = PERM_COPY

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

Articles

•  hex

Deep Notes

Search JIRA for related Issues

Tests

•  llGetObjectPermMask_Test

Signature

function integer llGetObjectPermMask( integer mask );