llModifyLand

From Second Life Wiki
Jump to navigation Jump to search

Summary

Function: llModifyLand( integer action, integer brush );

Modify land with action on brush

• integer action LAND_* flag
• integer brush LAND_*_BRUSH flag

The position of the prim is used to determine the input for various flags.

Action Description
LAND_LEVEL 0 Levels on prim center
LAND_RAISE 1 Raises the land
LAND_LOWER 2 Lowers the land
LAND_SMOOTH 3 Smooths the land
LAND_NOISE 4 Makes the land rough
LAND_REVERT 5 Restores to baked value
Brush Value Size
LAND_SMALL_BRUSH 0 2m x 2m
LAND_MEDIUM_BRUSH 1 4m x 4m
LAND_LARGE_BRUSH 2 8m x 8m
The constant values in the compiler are wrong.
Use these values instead.

Caveats

  • This function has no effect if the script's owner is offline or not in the same sim as the scripted object.
  • Uncontrolled use of llModifyLand in scripted objects may force the region's navmesh to rebake continually and cause Memory Allocated for the region to exceed its limit, making it impossible to rez objects. (BUG-9047)
  • This function has no effect if the scripted object is deeded to a group.
  • Playing with this command, I have found that the LAND_SMALL_BRUSH edits a 4m x 4m area. The LAND_MEDIUM_BRUSH and the LAND_LARGE_BRUSH, both edit an 8m x 8m area. However using 0 instead of LAND_SMALL_BRUSH will edit a 2m x 2m area. I have bug reported this, but until it gets fixed, it should be noted. correct values for the brushes are 0, 1 and 2, not 1, 2, and 3. - Bev
  • If the script is in a prim that is attached to an avatar or is in the child prim of a linkset, then the local position relative to it's attachment point or root prim is used rather than the position within the region. (BUG-4929)
  • If land is not owned by script owner or the owner doesn't have terraform permissions, the script will silently fail.
  • You cannot change altitude beyond land terraform limits for the specified parcel..

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   Brush constants are all off-by-one.
   llModifyLand modifies wrong location in region, when called in a child prim

Examples

default
{
    state_entry()
    {
        llSetTimerEvent(0.1);
    }
    
    timer()
    {
        llModifyLand(LAND_LEVEL, 0);
    }
}

Deep Notes

All Issues

~ Search JIRA for related Issues
   LSL: llModifyLandStrength
   Brush constants are all off-by-one.
   llModifyLand modifies wrong location in region, when called in a child prim

Signature

function void llModifyLand( integer action, integer brush );
integer LAND_SMALL_BRUSH = 1;//Should do 2m x 2m but does 4m x 4m
integer LAND_MEDIUM_BRUSH = 2;//Should do 4m x 4m but does 8m x 8m
integer LAND_LARGE_BRUSH = 3;//8m x 8m