Sensor

From Second Life Wiki
Revision as of 00:09, 22 January 2015 by Lady Sumoku (talk | contribs) (Replaced old <LSL> block with <source lang="lsl2">)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Description

Event: sensor( integer num_detected ){ ; }

Results from a call to either llSensor or llSensorRepeat.

• integer num_detected number of objects/avatars found

The results are ordered from nearest to furthest.
num_detected is always greater than zero, the no_sensor event is triggered if no objects/avatars were found.

Caveats

  • Lindens in administrative mode cannot be sensed by sensors in the same region as the Linden.
  • Sensors placed in attachments will use the direction the avatar is facing as their forward vector. In mouselook, this means that it will be wherever the avatar is looking, while out of mouselook, this means whichever way the avatar is pointing. This does not include where the avatar's head is pointing, or what animation the avatar is doing, just the direction the avatar would move in if you walked forward. This is the case, regardless of where the object is attached.
  • A sensor running in an attachment will not detect the avatar wearing it.
  • A sensor will only return the first 16 objects/avatars found.
  • This event is not executed when nothing is detected, means, you never get the result 0 returned. Use no_sensor for that.
  • on logout all avatars leave a Ghost for a few moments, this results in Failures in llDetected functions in sensor events.


Examples

default
{
    touch_start(integer num_detected)
    {
    //  do a 10m spherical sweep
        llSensor("", NULL_KEY, AGENT_BY_LEGACY_NAME, 10.0, PI);
    }

    sensor (integer num_detected)
    {
        string message = "Detected " + (string)num_detected + " avatar(s): " + llDetectedName(0);

    //  we already added the first avatar above, so continue from index 1
        integer index = 1;
        while (index < num_detected)
            message += ", " + llDetectedName(index++);

        llWhisper(PUBLIC_CHANNEL, message);
    }

    no_sensor()
    {
        llWhisper(PUBLIC_CHANNEL, "Nobody is near me at present.");
    }
}

Notes

KBcaution.png Important: You might want to use llGetAgentList instead of using sensors to get a list of all avatars within the same parcel or region.

See Also

Functions

•  llSensor
•  llSensorRepeat

Articles

•  Detected

Deep Notes

Signature

event void sensor( integer num_detected );