llSetRegionPos
integer llSetRegionPos(vector position// Target position vector in region coordinates (can cross up to 10m over a region border).
);- Returns
integer- Energy
- 10
Tries to move the entire object so that the root prim is within 0.1m of position.
Only if TRUE is returned does the object move, if FALSE is returned, the object does not change position. (Spec does not quite agree, if object tries to go underground, the spec says it moves to ground level with the provided X and Y.)
Returns an integer , TRUE if the object is successfully placed within 0.1 m of position, FALSE otherwise. See specification for details.
integer result = llSetRegionPos(ZERO_VECTOR);Specification
Section titled “Specification”The object with the script will move the root prim position to the given location. The position is any position within the region. If the position is below ground, it will be set to the ground level at that X,Y spot. The function has no delay or throttle.
- Returns
TRUEif the object is successfully placed within 0.1 m of position. - Returns
FALSEand does not move the object if… - position is more than 10m off region or above 4096m.
- The x & y components of position must be in the range [-10.0, 266.0].
- The z component must be in the range [0.0, 4096].
- the object is dynamic (has physics enabled).
- the object can not move to position due to parcel/region restrictions (object entry rules, prim limits, bans, etc).
- the object is an avatar attachment.
- Returns
FALSEif the position is a point more than 0.1 m below region ground level, but the object will still be moved so that the midpoint of the root prim is snapped to the ground. If the point is less than 0.1 m below ground, the object is moved as before andTRUEis returned as per the first case.
Examples
Section titled “Examples”Example 1
6 collapsed lines
default{ touch_start(integer num_detected) { vector currentPosition = llGetPos();
// check whether the object has successfully been moved // to the center of the sim at the same height integer hasMoved = llSetRegionPos(<128.0, 128.0, currentPosition.z>);
if (hasMoved)15 collapsed lines
{ llOwnerSay("My new position is now:\n" + "http://maps.secondlife.com/secondlife/" + llEscapeURL(llGetRegionName()) + "/128/128/" + (string)llRound(currentPosition.z) + "/"); } else if ( currentPosition.z < llGround(ZERO_VECTOR) ) { llOwnerSay("My new position is now:\n" + "http://maps.secondlife.com/secondlife/" + llEscapeURL(llGetRegionName()) + "/128/128/" + (string)llCeil(llGround(ZERO_VECTOR)) + "/"); } else llOwnerSay("Move was not possible!"); }}This function is intended to replace WarpPos.
History
Section titled “History”- New LSL function integer
llSetRegionPos(vector position)in Second Life Server 12.01.24.248357 - : The object with the script will move the root prim position to the given location. The position is any position within the region. If the position is below ground, it will be set to the ground level at that X,Y spot. The function has no delay or throttle.
- :* Returns 1 if the object is successfully placed within 0.1 m of position.
- :* Returns 0 and does not move the object if position is more than 10m off region or above 4096m.
- :* Returns 0 and does not move the object if the object is dynamic (has physics enabled).
- :* Returns 0 and does not move the object if the object can not move to position due to object entry rules, prim limits, bans, etc.
See also
Section titled “See also”Functions
Section titled “Functions”llGetLocalPos— Returns the prim’s local position if it is attached or non-root (otherwise it returns the global position)llGetRootPosition— Gets the root prims positionllGetPos— Returns the prim’s global position, even if it is attached or non-rootllSetPosllEdgeOfWorld
Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.