Difference between revisions of "LlDetectedPos"

From Second Life Wiki
Jump to navigation Jump to search
m
(Remove dead references. Correct indenting.)
Line 12: Line 12:
|constants
|constants
|examples=
|examples=
<lsl>//--// get sim position of Avatars in "say" range //--//
<lsl>// get name and sim position of Avatars within "say" range
 
//-- @@ = Contains code optimizations, see the following page for details
//-- https://wiki.secondlife.com/wiki/User:Void_Singer/Optimizations


default
default
{
{
  state_entry()
    state_entry()
  {
    {
    llOwnerSay( "Touch me to get the positions of avatars in 'Say' range" );
        llOwnerSay( "Touch me to get the positions of avatars in 'Say' range" );
  }
    }


  touch_start( integer vIntTouchCount )
    touch_start( integer vIntTouchCount )
  {
    {
    //-- trigger the sensor for avatars within 20m
        // Do a one-off sensor sweep over a 20m radius sphere for avatars
    llSensor( "", "", AGENT, 20, PI );
        llSensor( "", "", AGENT, 20, PI );
  }
    }


  sensor( integer vIntFound )
    sensor( integer vIntFound )
  {
    integer vIntCounter = 0;
    //-- loop through all avatars found
    do
     {
     {
      llOwnerSay( llDetectedName( vIntCounter )
        integer vIntCounter = 0;
                  + " @ "
        //-- loop through all avatars found
                  //-- the next line gets the position of each found avatar
        do
                  + (string)llDetectedPos( vIntCounter ) );
        {
    }while (++vIntCounter < vIntFound); //-- @@
            llOwnerSay( llDetectedName( vIntCounter )
  }
                // get the position of this detected avatar
                + (string) llDetectedPos( vIntCounter ) );
        } while (++vIntCounter < vIntFound);  
    }


  //-- sensor does not detect owner if it's attached
    // sensor does not detect owner if it's attached
  no_sensor()
    no_sensor()
  {
    {
    llOwnerSay( "I couldn't find anybody" );
        llOwnerSay( "I couldn't find anybody" );
  }
    }
}</lsl>
}</lsl>
|helpers
|helpers

Revision as of 12:33, 4 January 2013

Summary

Function: vector llDetectedPos( integer number );

Returns a vector that is the position (in region coordinates) of detected object number.

• integer number Index of detection information

number does not support negative indexes. Returns <0.0, 0.0, 0.0> if number is not valid sensed object.

Specification

llDetected* functions only work if called from within Detection events (collision, collision_start, collision_end, sensor, touch, touch_start, touch_end) or in functions called by Detection events. They will fail silently and return unusable values if called during other events.

Caveats

  • If number is out of bounds this function returns <0.0, 0.0, 0.0> and the script continues to execute without an error message.
  • Events that enable the llDetected* functions always return at least one detected item.
    • Detection events are not raised if there is nothing detected.[1]
    • The detection event's items detected parameter is initially never less than 1.[2]
All Issues ~ Search JIRA for related Bugs

Examples

<lsl>// get name and sim position of Avatars within "say" range

default {

   state_entry()
   {
       llOwnerSay( "Touch me to get the positions of avatars in 'Say' range" );
   }
   touch_start( integer vIntTouchCount )
   {
       // Do a one-off sensor sweep over a 20m radius sphere for avatars
       llSensor( "", "", AGENT, 20, PI );
   }
   sensor( integer vIntFound )
   {
       integer vIntCounter = 0;
       //-- loop through all avatars found
       do
       {
           llOwnerSay( llDetectedName( vIntCounter )
               // get the position of this detected avatar
               + (string) llDetectedPos( vIntCounter ) );
       } while (++vIntCounter < vIntFound); 
   }
   // sensor does not detect owner if it's attached
   no_sensor()
   {
       llOwnerSay( "I couldn't find anybody" );
   }
}</lsl>

See Also

Articles

•  Detected

Deep Notes

Search JIRA for related Issues

Footnotes

  1. ^ The exception is no_sensor but it doesn't enable llDetected* functions.
  2. ^ Like all event parameters, the user can overwrite the initial value.

Signature

function vector llDetectedPos( integer number );