Difference between revisions of "LlDetectedType"

From Second Life Wiki
Jump to: navigation, search
m
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{LSL_Function/detected|number|type}}{{LSL_Function
+
{{LSL_Function
 +
|inject-2={{LSL_Function/detected|number|type|error={{HoverText|zero|0}}}}
 
|func_id=34|func_sleep=0.0|func_energy=10.0
 
|func_id=34|func_sleep=0.0|func_energy=10.0
 
|sort=DetectedType|func=llDetectedType
 
|sort=DetectedType|func=llDetectedType
 
|return_type=integer
 
|return_type=integer
 
|p1_type=integer|p1_name=number
 
|p1_type=integer|p1_name=number
|func_footnote=Returns {{HoverText|zero|0}} if number is not valid sensed object or avatar.
+
|func_footnote=Returns {{HoverText|zero|0}} if {{LSLP|number}} is not valid sensed object or avatar.
 
|func_desc
 
|func_desc
 
|return_text=mask that is the types of detected object or avatar.
 
|return_text=mask that is the types of detected object or avatar.
Line 10: Line 11:
 
|caveats
 
|caveats
 
|constants={{LSL Constants Sensor}}
 
|constants={{LSL Constants Sensor}}
|examples
+
|examples=
 +
<source lang="lsl2">
 +
//--// Type & name of collision source //--//
 +
 
 +
default{
 +
    collision_start( integer vIntCollided ){
 +
        integer vBitType;
 +
        string vStrType;
 +
        do
 +
        {
 +
            vBitType = llDetectedType( --vIntCollided );
 +
            if (vBitType & AGENT_BY_LEGACY_NAME)
 +
                vStrType = "avatar";
 +
            else
 +
                vStrType = "object";
 +
            llOwnerSay( "An " + vStrType + " named '" + llDetectedName( vIntCollided ) + "' collided with me" );
 +
        }
 +
        while (vIntCollided);
 +
    }
 +
}
 +
</source>
 
|helpers
 
|helpers
 
|also_functions
 
|also_functions
 
|also_events
 
|also_events
|also_articles
+
|also_articles=
 +
{{LSL DefineRow||[http://blogs.secondlife.com/thread/50968 Sense whether another object is physical?] on SL forum}}
 
|notes
 
|notes
 
|permission
 
|permission

Latest revision as of 00:02, 22 January 2015

Summary

Function: integer llDetectedType( integer number );

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.
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 this function returns zero 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

//--// Type & name of collision source //--//
 
default{
    collision_start( integer vIntCollided ){
        integer vBitType;
        string vStrType;
        do
        {
            vBitType = llDetectedType( --vIntCollided );
            if (vBitType & AGENT_BY_LEGACY_NAME)
                vStrType = "avatar";
            else
                vStrType = "object";
            llOwnerSay( "An " + vStrType + " named '" + llDetectedName( vIntCollided ) + "' collided with me" );
        }
        while (vIntCollided);
    }
}

See Also

Articles

•  Detected
•  Object Type
•  Sense whether another object is physical? on SL forum

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