Difference between revisions of "LlRequestPermissions"

From Second Life Wiki
Jump to navigation Jump to search
m
Line 27: Line 27:
|notes=When an agent grants a script non-automatic permissions they will receive a notification (in chat) of - The '''name''' of the object that contains the script that has been granted perms, The name of the owner of the object, The location of the object in the order - Region name at '''position''' - and a statement of what permissions were granted. If the script that holds the permissions is in a child prim the '''name''' will be that of the child prim (not the object (root)) and '''position''' will be its [[llGetLocalPos|local]] position (relative to its root).
|notes=When an agent grants a script non-automatic permissions they will receive a notification (in chat) of - The '''name''' of the object that contains the script that has been granted perms, The name of the owner of the object, The location of the object in the order - Region name at '''position''' - and a statement of what permissions were granted. If the script that holds the permissions is in a child prim the '''name''' will be that of the child prim (not the object (root)) and '''position''' will be its [[llGetLocalPos|local]] position (relative to its root).
|examples=Request permission to animate an avatar
|examples=Request permission to animate an avatar
<lsl>default
<lsl>
default
{
{
     touch_start(integer detected)
     touch_start(integer num_detected)
     {
     {
         llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION);
         key id = llDetectedKey(0);
        llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
     }
     }
     run_time_permissions(integer perm)
 
     run_time_permissions(integer perm)                                
     {
     {
         if (perm & PERMISSION_TRIGGER_ANIMATION)
         if (perm & PERMISSION_TRIGGER_ANIMATION)
         {
         {
             llStartAnimation("sit");
             llStartAnimation("sit");
             llOwnerSay("animation will end in 5 seconds");
             llSay(PUBLIC_CHANNEL, "Animation will end in 5.0 seconds.");
 
             llSetTimerEvent(5.0);
             llSetTimerEvent(5.0);
         }
         }
     }
     }
     timer()
     timer()
     {
     {
         llSetTimerEvent(0.0);
         llSetTimerEvent((float)FALSE);
 
         llStopAnimation("sit");
         llStopAnimation("sit");
     }
     }
}</lsl>
}
</lsl>


To request two (or more) different permissions at the same time you can using the bitwise OR <nowiki>(|)</nowiki> or precompute the value.
To request two (or more) different permissions at the same time you can using the bitwise OR <nowiki>(|)</nowiki> or precompute the value.

Revision as of 14:42, 23 September 2012

Summary

Function: llRequestPermissions( key agent, integer permissions );
0.0 Forced Delay
10.0 Energy

Ask agent for permissions to run certain classes of functions.

• key agent avatar UUID that is in the same region
• integer permissions Permission mask (bitfield containing the permissions to request).

Script execution continues without waiting for a response. When a response is given, a run_time_permissions event is put in the event queue.

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

  • A dialog is presented to the agent to grant these permissions except when granted automatically as shown in the table above.
  • If object is attached to agent, "automatic" permissions are granted without notification upon request.
  • Permissions persist across state changes.
  • Regardless of whether granting is automatic, you should always use the run_time_permissions event. Granting permissions takes time, and you shouldn't assume it's completed until the run_time_permissions handler gets invoked.
  • 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).
    • To request two or more permissions at the same time, use the bitwise OR (|) operator, e.g.: <lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS

Examples

Request permission to animate an avatar <lsl> default {

   touch_start(integer num_detected)
   {
       key id = llDetectedKey(0);
       llRequestPermissions(id, PERMISSION_TRIGGER_ANIMATION);
   }
   run_time_permissions(integer perm)                                  
   {
       if (perm & PERMISSION_TRIGGER_ANIMATION)
       {
           llStartAnimation("sit");
           llSay(PUBLIC_CHANNEL, "Animation will end in 5.0 seconds.");
           llSetTimerEvent(5.0);
       }
   }
   timer()
   {
       llSetTimerEvent((float)FALSE);
       llStopAnimation("sit");
   }

} </lsl>

To request two (or more) different permissions at the same time you can using the bitwise OR (|) or precompute the value.

<lsl>llRequestPermissions(AvatarID, PERMISSION_TAKE_CONTROLS

Notes

When an agent grants a script non-automatic permissions they will receive a notification (in chat) of - The name of the object that contains the script that has been granted perms, The name of the owner of the object, The location of the object in the order - Region name at position - and a statement of what permissions were granted. If the script that holds the permissions is in a child prim the name will be that of the child prim (not the object (root)) and position will be its local position (relative to its root).

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

Deep Notes

Footnotes

Signature

function void llRequestPermissions( key agent, integer permissions );