De DigiWiki.
// Get the object to land on the ground or on the water
// by Konigmann Lippmann & Strife Onizuka
FindGroundOrWater()
{
float fHeight = llGround( ZERO_VECTOR );
float fWaterLevel = llWater( ZERO_VECTOR );
if( fHeight < fWaterLevel )
fHeight = fWaterLevel;
vector vTarget = llGetPos();
//llSetPos can only move 10m at a time.
integer iCounter = 1 + llAbs((integer)(vTarget.z - fHeight) / 10);
vTarget.z = fHeight;
do
llSetPos( vTarget );
while( --iCounter );
}
default
{
touch_start(integer total_number)
{
FindGroundOrWater();
}
}
Snippet
integer isSea(vector p)
{
if (llGround(p - llGetPos()) - llWater(p - llGetPos()) < 0.0)
return TRUE;
else
return FALSE;
}