llRezObjectWithParams

From Second Life Wiki
Revision as of 13:07, 17 December 2023 by Daemonika Nightfire (talk | contribs) (simple example added)
Jump to navigation Jump to search

Summary

Function: key llRezObjectWithParams( string inventory, list params );

Instantiate inventory object at pos with an initial set of parameters specified in params.
Returns a key which will be the key of the object when it is successfully rezzed in the world.

• string inventory an object in the inventory of the prim this script is in
• list params

Specification

Parameters

parameter integer value values to set description
REZ_PARAM 0 integer param Start parameter passed into the rezzed object's on_rez(integer) event.
REZ_FLAGS 1 integer flags Flags applied to rezzed object when it is created in the world.

Flags

parameter integer value description
REZ_FLAG_TEMP 0x0001 Object is rezzed as temporary.
REZ_FLAG_PHYSICAL 0x0002 Object is rezzed as physical.
REZ_FLAG_PHANTOM 0x0004 Object is rezzed as phantom
REZ_FLAG_DIE_ON_COLLIDE 0x0008 The object will die after its first collision.
REZ_FLAG_DIE_ON_NOENTRY 0x0010 Object will die if it attempts to enter a parcel that it can't.
REZ_FLAG_NO_COLLIDE_OWNER 0x0020 Object will not trigger a collision event if colliding with its owner.
REZ_FLAG_NO_COLLIDE_FAMILY 0x0040 Object will not trigger collision events when colliding with other object rezzed by the same rezzer.
REZ_FLAG_BLOCK_GRAB_OBJECT 0x0080 Grabbing is disabled for this object.

† Disabling collisions only disables collision events and damage. The object will still cause a physics collision and may push the objects.

REZ_POS 2 vector pos, integer relative, integer at_root Position to rez the new object in the world. If relative is FALSE the position is in region coordinates. If relative is TRUE, the position will be relative to the rezzing object.

If at_root is FALSE, the center of the object will be at the position specified by pos(llRezObject). Set at_root to TRUE to set the position of the root prim(llRezAtRoot).

REZ_ROT 3 rotation rot, integer relative The initial rotation to apply to the object. If relative is TRUE, the rotation is relative to the rezzing object, otherwise it is absolute.
REZ_VEL 4 vector velocity, integer local, integer inherit The initial velocity to apply to the object. If local is TRUE the velocity is in the local object coordinate frame, otherwise it is in world coordinates.

If inherit is TRUE the object also inherits it's rezzer's velocity.

REZ_ACCEL 5 vector force, integer local A constant force to apply to the object. If local is TRUE, the force vector is in local coordinates.
REZ_OMEGA 7 vector axis, integer local, float spin, float gain Spin the object around the specified axis. If local is TRUE that axis is in local coordinates, otherwise they are global.
REZ_DAMAGE 8 float damage The amount of damage applied to an agent upon collision with this object.
REZ_SOUND 9 string sound, float volume, integer loop A sound to attach to this object. It will be played at the specified volume.

If loop is TRUE the sound will loop continuously for the life of the object. The sound parameter may be either a sound file in the rezzer's inventory or the UUID of a sound asset.

REZ_SOUND_COLLIDE 10 string sound, float volume A sound to play upon collision with another object, the ground or an avatar.

The sound parameter may be either a sound file in the rezzer's inventory or the UUID of a sound asset.

REZ_LOCK_AXES 11 vector locks Prevent the object from spinning on certain axes. Setting the vector's coordinate to non-zero will prevent the object from spinning on that axis.


For instance
REZ_LOCK_AXES, <1.0, 1.0, 0.0>
will allow the object to only rotate around its Z-axis.

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 REZ_POS is too far from the geometric center of the object trying to rez inventory.
  • When scripting attachments meant to rez objects, remember that when used in the root of an (attached) attachment llGetPos doesn't return the position of the attachment but instead returns the position of the avatar's bounding box geometric center. Read llGetPos and llParticleSystem Caveats for more information.
  • If the object is unattached and the owner of the object does not have copy permission on inventory, the object will no longer be present in inventory after it is rezzed (so another attempt to rez (the same object) will fail); if the owner does have copy permission, then a copy is rezzed, and the original inventory remains in inventory.
  • If the object is attached and the owner of the object does not have copy permission on inventory, an error is shouted on DEBUG_CHANNEL: "Cannot rez no copy objects from an attached object."
  • Silently fails if you don't have offline building rights on the land. To have the right, your objects needs to either:
    • Be on land you own yourself.
    • Be on land where anyone is allowed to build, e.g. a sandbox.
    • Be deeded to the group that owns the land.
    • Be set to the same group that owns the land and the land have the parcel flag 'allow group to build' set.
    • The group role "Always allow 'Create Objects'" will only work to override this when you are online, in the region, or have a child agent in the region. See SVC-3145 in the Issues subsection of Deep Notes for more information.
  • See object_rez for examples on how to establish communications between the rezzing object and the new prim.
All Issues ~ Search JIRA for related Bugs

Examples

Place this script together with a cube called testprim in a rezzer (object).

/*
    Example by *DS* Script-Schule (german)
    
    Participants:
    Ⅼudwig (Ludwig Darwin)
    Ϯ Kerstin Diamondfire Ϯ (Sklavin Randt)
    Strandwind
    Jan (Janross)
    Almut Brunswick
    ƤƖƬƖ ƧƔƛƧƬƖƘƛ (Piti Banana)
    Daemonika Nightfire
    
    We always make sure that the scripts are as minimalistic as possible for the best learning effect.
*/

default
{
    touch_start(integer total_number)
    {
        llRezObjectWithParams("testprim", [
        REZ_FLAGS, REZ_FLAG_PHANTOM | REZ_FLAG_TEMP, // you can combine several flags separated by pipes.
        REZ_POS, <0,0,1>, TRUE, TRUE,
        REZ_OMEGA, <0,0,1>, TRUE, 0.5, PI
        ]);
    }
}

See Also

Constants

•  PRIM_TEMP_ON_REZ

Events

•  object_rez triggered when this object rezzes an object from inventory

Functions

•  llRezAtRoot Rezzes the object at the requested position
•  llRezObject Rezzes the object at the requested position
•  llGetStartParameter
•  llGodLikeRezObject
•  LlGetParcelFlags#Examples Test if the parcel allows this script to rez

Deep Notes

Search JIRA for related Issues

Signature

function key llRezObjectWithParams( string inventory, list params );