llRezAtRoot

From Second Life Wiki
Revision as of 19:50, 5 September 2009 by Hewee Zetkin (talk | contribs) (Added example that uses coordinates in the rezzing prim's coordinate system)
Jump to navigation Jump to search

Summary

Function: llRezAtRoot( string inventory, vector position, vector velocity, rotation rot, integer param );
0.1 Forced Delay
200.0 Energy

Instantiate inventory object rotated to rot with its root at position, moving at velocity, using param as the start parameter

• string inventory an object in the inventory of the prim this script is in
• vector position initial position (in region coordinates)
• vector velocity initial velocity
• rotation rot initial rotation
• integer param on_rez event parameter and value returned by llGetStartParameter in the rezzed object.

Causes a hard delay based on the mass of the object rezzed.
To rez an object so its center is at pos (instead of the root) use llRezObject instead.

Caveats

  • This function causes the script to sleep for 0.1 seconds.
  • If inventory is missing from the prim's inventory or it is not an object then an error is shouted on DEBUG_CHANNEL.
  • Silently fails to rez inventory if pos is more than 10 meters away from the prim trying to rez inventory.
  • Silently fails if you don't have offline building rights on the land. Which means that you need to either: Own the land yourself. Be in the group that owns it, the allow group to build parcel flag has to be enabled and the object has to be set to group. Or everyone should be allowed to build. You can also deed the object to the group that owns the land, this will always work. The group role "Always allow 'Create Objects'" will only work to override this when you are online. See the issues under Deep Notes for more information.

Examples

<lsl> //Rez an object on touch string object = "Object";//Object in inventory integer start_param = 10; rotation rot;

default {

   state_entry()
   {
       rot = llEuler2Rot(< 0, 90, 90> * DEG_TO_RAD);
   }
   touch_start(integer a)
   {
       vector vec = llGetPos() + < 0.0, 0.0, 5.0>; // 5 meter above this
       vector speed = llGetVel();
       llRezAtRoot(object, vec, speed, rot, start_param);
   }

} </lsl> <lsl>//Rez an object on touch, with relative position, rotation, and velocity all described in the rezzing prim's coordinate system. string object = "Object"; // Name of object in inventory vector relativePosOffset = <2.0, 0.0, 1.0>; // "Forward" and a little "above" this prim vector relativeVel = <1.0, 0.0, 0.0>; // Traveling in this prim's "forward" direction at 1m/s rotation relativeRot = <0.707107, 0.0, 0.0, 0.707107>; // Rotated 90 degrees on the x-axis compared to this prim integer startParam = 10;

default {

   touch_start(integer a)
   {
       vector myPos = llGetPos();
       rotation myRot = llGetRot();
       vector rezPos = myPos+relativePosOffset*myRot;
       vector rezVel = relativeVel*myRot;
       rotation rezRot = relativeRot*myRot;
       llRezAtRoot(object, rezPos, rezVel, rezRot, startParam);
   }

}

</lsl>

See Also

Constants

•  PRIM_TEMP_ON_REZ

Events

•  object_rez triggered when this object rezzes an object from inventory

Functions

•  llRezObject
•  llGetStartParameter
•  llGodLikeRezObject

Deep Notes

Signature

function void llRezAtRoot( string inventory, vector position, vector velocity, rotation rot, integer param );