LlGetObjectPermMask
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