Difference between revisions of "LlGetObjectPermMask"
Jump to navigation
Jump to search
(add first example - promptly complain any time the SL GUI restricts copying differently than you wish) |
(make example shorter & more useful -- float a label over an object: its name, description, and permissions) |
||
Line 10: | Line 10: | ||
|constants={{LSL Constants Perm Mask}} | |constants={{LSL Constants Perm Mask}} | ||
|examples= | |examples= | ||
Picking apart a permissions mask can produce such labels as "Open/ Yes Mod/ Yes Copy/ Yes Transfer", for example: | |||
<pre> | <pre> | ||
// | // Float a label over an object: its name, description, and permissions. | ||
integer everyonePerms | string perms2String(integer everyonePerms, integer nextPerms) | ||
integer nextPerms | { | ||
integer | integer PERMS_OPEN = (PERM_MODIFY | PERM_COPY | PERM_TRANSFER); | ||
string line = "Closed"; | |||
if ((nextPerms & PERMS_OPEN) == PERMS_OPEN) | |||
{ | |||
if (everyonePerms & PERM_COPY) | |||
if | |||
{ | { | ||
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; | |||
} | } | ||
default | default | ||
Line 70: | Line 47: | ||
on_rez(integer start_param) | on_rez(integer start_param) | ||
{ | { | ||
llResetScript(); | llResetScript(); | ||
} | } | ||
state_entry() | state_entry() | ||
{ | { | ||
string name = llGetObjectName(); | |||
string description = llGetObjectDesc(); | |||
integer everyonePerms = llGetObjectPermMask(MASK_EVERYONE); | |||
integer nextPerms = llGetObjectPermMask(MASK_NEXT); | |||
integer | string permissions = perms2String(everyonePerms, nextPerms); | ||
integer | |||
string between = "\n---\n"; | |||
vector color = <1.0, 1.0, 1.0>; // color = <R, G, B> | |||
float opacity = 1.0; // opacity = alpha = 1.0 - transparency | |||
string lines = name + between + description + between + permissions; | |||
llSetText(lines, color, opacity); | |||
} | } | ||
} | } |
Revision as of 08:44, 4 October 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: integer llGetObjectPermMask( integer mask );287 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns an integer that is the requested permission mask for the root object the task is attached to.
• integer | mask |
|
|
Caveats
Examples
Picking apart a permissions mask can produce such labels as "Open/ Yes Mod/ Yes Copy/ Yes Transfer", for example:
// Float a label over an object: its name, description, and permissions. 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; } default { on_rez(integer start_param) { llResetScript(); } state_entry() { string name = llGetObjectName(); string description = llGetObjectDesc(); integer everyonePerms = llGetObjectPermMask(MASK_EVERYONE); integer nextPerms = llGetObjectPermMask(MASK_NEXT); string permissions = perms2String(everyonePerms, nextPerms); string between = "\n---\n"; vector color = <1.0, 1.0, 1.0>; // color = <R, G, B> float opacity = 1.0; // opacity = alpha = 1.0 - transparency string lines = name + between + description + between + permissions; llSetText(lines, color, opacity); } }
See Also
Functions
• | llGetInventoryPermMask |