Skip to content
lsl.devlsl.devLSL Dev

llSetRegionPos

function
Function syntax
integer llSetRegionPos(
  1. 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.

How to use
integer result = llSetRegionPos(ZERO_VECTOR);

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 TRUE if the object is successfully placed within 0.1 m of position.
  • Returns FALSE and 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 FALSE if 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 and TRUE is returned as per the first case.
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.

  • 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.
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.