Difference between revisions of "LlRequestPermissions"
Jump to navigation
Jump to search
Core Taurog (talk | contribs) |
|||
Line 11: | Line 11: | ||
**If a permission was requested with a previous call to this function and granted, then in subsequent call was not requested, that permission is released (lost). | **If a permission was requested with a previous call to this function and granted, then in subsequent call was not requested, that permission is released (lost). | ||
*Scripts may hold permissions for only one agent at a time. To hold permissions for multiple agents you must use more then one script. | *Scripts may hold permissions for only one agent at a time. To hold permissions for multiple agents you must use more then one script. | ||
|examples | |examples=Request permission to animate an avatar | ||
<Pre> | |||
default | |||
{ | |||
touch_start(integer detected) | |||
{ | |||
llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION); | |||
} | |||
run_time_permissions(integer perm) | |||
{ | |||
if (perm & PERMISSION_TRIGGER_ANIMATION) | |||
{ | |||
llStartAnimation("sit"); | |||
llOwnerSay("animation will end in 5 seconds"); | |||
llSetTimerEvent(5.0); | |||
} | |||
} | |||
timer() | |||
{ | |||
llSetTimerEvent(0.0); | |||
llStopAnimation("sit"); | |||
} | |||
} | |||
</Pre> | |||
|helpers | |helpers | ||
|also_events={{LSL DefineRow||{{LSLG|run_time_permissions}}|Permission receiver event}} | |also_events={{LSL DefineRow||{{LSLG|run_time_permissions}}|Permission receiver event}} |
Revision as of 05:29, 27 September 2007
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: llRequestPermissions( key agent, integer perm );0.0 | Forced Delay |
10.0 | Energy |
Ask agent for permission to run certain classes of functions.
• key | agent | – | Avatar key | |
• integer | perm | – | Permission mask (bitfield containing the permissions to request). |
Constants | Action | Category | Granter | Automatically granted when… | |
---|---|---|---|---|---|
PERMISSION_DEBIT | 0x2 | take money from agent's account | Money | Owner | |
PERMISSION_TAKE_CONTROLS | 0x4 | take agent's controls | Control | Anyone | sat on, attached |
PERMISSION_TRIGGER_ANIMATION | 0x10 | start or stop Animations on agent | Animation | Anyone | sat on, attached |
PERMISSION_ATTACH | 0x20 | attach/detach from agent | Attachment | Owner or Anyone | attached |
PERMISSION_CHANGE_LINKS | 0x80 | change links | Link | Owner | |
PERMISSION_TRACK_CAMERA | 0x400 | track the agent's camera position and rotation | Camera | Anyone | sat on, attached |
PERMISSION_CONTROL_CAMERA | 0x800 | control the agent's camera (must be sat on or attached; automatically revoked on stand or detach) |
Camera | Anyone | sat on, attached |
PERMISSION_TELEPORT | 0x1000 | teleport the agent | Teleport | Anyone[1] | |
PERMISSION_SILENT_ESTATE_MANAGEMENT | 0x4000 | manage estate access without notifying the owner of changes | Estate | Owner | |
PERMISSION_OVERRIDE_ANIMATIONS | 0x8000 | configure the overriding of default animations on agent | Animation | Anyone | attached |
PERMISSION_RETURN_OBJECTS | 0x10000 | Used by llReturnObjectsByOwner and llReturnObjectsByID to return objects from parcels | Cleanup | Owner, Group Owner |
Caveats
- Permissions do not accumulate.
- If a permission was requested with a previous call to this function and granted, then in subsequent call was not requested, that permission is released (lost).
- Scripts may hold permissions for only one agent at a time. To hold permissions for multiple agents you must use more then one script.
Examples
Request permission to animate an avatar
default { touch_start(integer detected) { llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION); } run_time_permissions(integer perm) { if (perm & PERMISSION_TRIGGER_ANIMATION) { llStartAnimation("sit"); llOwnerSay("animation will end in 5 seconds"); llSetTimerEvent(5.0); } } timer() { llSetTimerEvent(0.0); llStopAnimation("sit"); } }
Notes
A dialog is presented to the agent to grant these permissions except for a few cases:
- If agent is sitting on object - Control and Camera tracking permissions are granted without notification upon request.
- If object is attached to agent - Control and Attach permissions are granted without notification upon request.
Regardless if a dialog is displayed you should always use the run_time_permissions event instead of depending upon this quirk.
See Also
Events
• | run_time_permissions | – | Permission receiver event |
Functions
• | llGetPermissions | – | Get the permissions granted | |
• | llGetPermissionsKey | – | Get the avatar who granted permissions. |
Articles
• | Script permissions |