llDetectedType

From Second Life Wiki
Revision as of 03:39, 27 July 2009 by Huney Jewell (talk | contribs) (Use LSL constant to identify detected type)
Jump to navigation Jump to search

Summary

Function: integer llDetectedType( integer number );
0.0 Forced Delay
10.0 Energy

Returns an integer mask that is the types of detected object or avatar.

• integer number Index of detection information

number does not support negative indexes. Returns zero if number is not valid sensed object or avatar.

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.

Flag Mask Description (llDetectedType()) Description (llSensor() and llSensorRepeat() mask)
AGENT_BY_LEGACY_NAME 0x1 Agents This is used to find agents by legacy name.
AGENT 0x1 Agents This is also used to find agents by legacy name, and is functionally identical to AGENT_BY_LEGACY_NAME
AGENT_BY_USERNAME 0x10 Reserved This is used to find agents by username.
ACTIVE 0x2 Physical tasks. (Physical objects & agents) Physical objects that are moving or objects containing an active script. Thus, it is using SL server resources now.
PASSIVE 0x4 Non-physical objects. Non-scripted or script is inactive and non-physical or, if physical, not moving. Thus, it is not using SL server resources now.
SCRIPTED 0x8 Objects containing any active script. Objects that has any script, which is doing anything in simulator just now.
DAMAGEABLE 0x20 Objects & agents that are able to process damage. Filter for objects in world that have a script with on_damage or a final_damage event (able to process damage)
llDetectedType() Scripted Not Scripted Agent Standing Agent Sitting
Physical Movement 10 (ACTIVE|SCRIPTED) 2 (ACTIVE) 3 (ACTIVE|AGENT) 3 (ACTIVE|AGENT)
Non-Physical 12 (PASSIVE|SCRIPTED) 4 (PASSIVE) 1 (AGENT) 5 (PASSIVE|AGENT)

Caveats

  • If number is out of bounds 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]

Examples

<lsl> //--// Type & name of collision source //--//

default{

   collision_start( integer vIntCollided ){
       integer vBitType;
       string vStrType;
       do
       {
           vBitType = llDetectedType( --vIntCollided );
           if (vBitType & AGENT)
               vStrType = "Avatar";
           else
               vStrType = "object";
           llOwnerSay( "An " + vStrType + "named '" + llDetectedName( vIntCollided ) + "' collided with me" );
       }
       while (vIntCollided);
   }

}

</lsl>

See Also

Articles

•  Detected

Deep Notes

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 integer llDetectedType( integer number );