Difference between revisions of "LlGetAgentInfo"

From Second Life Wiki
Jump to navigation Jump to search
m
m
(8 intermediate revisions by 4 users not shown)
Line 4: Line 4:
|sort=GetAgentInfo
|sort=GetAgentInfo
|func_id=206|func_sleep=0.0|func_energy=10.0
|func_id=206|func_sleep=0.0|func_energy=10.0
|return_type=integer|p1_type=key|p1_name=id
|return_type=integer|return_subtype=bit field
|p1_type=key|p1_name=id
|func_footnote
|func_footnote
|func_desc
|func_desc
|return_text=bitfield containing the agent information about {{LSLP|id}}.
|return_text=containing the agent information about {{LSLP|id}}.
|spec
|spec
|caveats=*[[AGENT_BUSY]] indicates that the "busy" [[Internal Animations|internal animation]] is playing, even if the user is not truly in busy mode.
|caveats=*[[AGENT_BUSY]] indicates that the "busy" [[Internal Animations|internal animation]] is playing, even if the user is not truly in busy mode.
Line 14: Line 15:
*This function does not return reliable information immediately after a border crossing. Use [[llGetAnimation]] instead, if you can. — {{Jira|SVC-3177}}
*This function does not return reliable information immediately after a border crossing. Use [[llGetAnimation]] instead, if you can. — {{Jira|SVC-3177}}
|constants=
|constants=
{{{!}}class="wikitable sortable collapsible" {{Prettytable|style=margin-top:0;}}
{{LSL Constants/llGetAgentInfo|table=*}}
{{!}}-{{Hl2}}
! Constant
! title="Value" {{!}} {{HoverText|Val|Value}}
!class="unsortable"{{!}} Returned if agent...
{{!}}-
{{!}}{{LSL Const|AGENT_ALWAYS_RUN|integer|hex=0x1000|4096|c=has running ({{String|Always Run}}) enabled, or is using tap-tap-hold}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_ATTACHMENTS|integer|hex=0x0002|2|c=has attachments}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_AUTOPILOT|integer|hex=0x2000|8192|c=is in {{String|autopilot}} mode}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_AWAY|integer|hex=0x0040|64|c=is in {{String|away}} mode}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_BUSY|integer|hex=0x0800|2048|c=is in {{String|busy}} mode}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_CROUCHING|integer|hex=0x0400|1024|c=is crouching}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_FLYING|integer|hex=0x0001|1|c=is flying or hovering}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_IN_AIR|integer|hex=0x0100|256|c=is in the air (jumping, flying or falling)}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_MOUSELOOK|integer|hex=0x0008|8|c=is in mouselook}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_ON_OBJECT|integer|hex=0x0020|32|c=is sitting on an object (and linked to it)}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_SCRIPTED|integer|hex=0x0004|4|c=has scripted attachments}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_SITTING|integer|hex=0x0010|16|c=is sitting}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}{{Footnote|1="Sit down" on the avatar context menu allows ground sits anywhere: atop the terrain, on objects or even in the air, so it is possible to sit "on" an object without linking.}}
{{!}}-
{{!}}{{LSL Const|AGENT_TYPING|integer|hex=0x0200|512|c=is typing}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}-
{{!}}{{LSL Const|AGENT_WALKING|integer|hex=0x0080|128|c=is walking, running or crouch walking}}
{{!}}{{#var:value}}
{{!}}{{#var:comment}}
{{!}}}
|examples=
|examples=
<lsl>
<source lang="lsl2">
default
default
{
{
     touch_start(integer num_detected)
     touch_start(integer buf)
     {
     {
         key id = llDetectedKey(0);
         buf = llGetAgentInfo(llDetectedKey(0));
        integer agentInfo = llGetAgentInfo(id);
         string out;
 
         if(buf & AGENT_FLYING)
         string output;// = "";
             out += "The agent is flying.\n";
 
         else
         if(agentInfo & AGENT_FLYING)
             out += "The agent is not flying.\n";
             output += "The agent is flying.\n";
         else      
             output += "The agent is not flying.\n";
   
   
         if(agentInfo & AGENT_ATTACHMENTS)
         if(buf & AGENT_ATTACHMENTS)
         {
         {
             if(agentInfo & AGENT_SCRIPTED)
             if(buf & AGENT_SCRIPTED)
                 output += "The agent has scripted attachments.\n";
                 out += "The agent has scripted attachments.\n";
             else
             else
                 output += "The agent's attachments are unscripted.\n";
                 out += "The agent's attachments are unscripted.\n";
         }
         }
         else
         else
             output += "The agent does not have attachments.\n";
             out += "The agent does not have attachments.\n";
   
   
         if(agentInfo & AGENT_MOUSELOOK)
         if(buf & AGENT_MOUSELOOK)
             output += "The agent is in mouselook.\n";
             out += "the agent is in mouselook.";
         else
         else
             output += "The agent is in normal camera mode.\n";
             out += "the agent is in normal camera mode.";
 
         llWhisper(0, out);
         if (agentInfo & AGENT_AWAY)
            output += "The agent is away.";
        else
            output += "The agent is not away.";
 
        // PUBLIC_CHANNEL has the integer value 0
        llWhisper(PUBLIC_CHANNEL, output);
     }
     }
}
}
</lsl>
</source>
 
|helpers
|helpers
|also_functions=
|also_functions=
Line 127: Line 58:
|also_articles
|also_articles
|notes=This is not a good way of testing if an avatar is in the region, use [[llGetAgentSize]] instead.
|notes=This is not a good way of testing if an avatar is in the region, use [[llGetAgentSize]] instead.
|history={{LSL Added|0.2|remote=http://secondlife.wikia.com/wiki/Version_0.2.0}} along with these flags [[AGENT_FLYING]], [[AGENT_ATTACHMENTS]], & [[AGENT_SCRIPTED]].
|history={{LSL Added|0.4.0|remote=http://secondlife.wikia.com/wiki/Version_0.4.0#Scripting}} along with these flags [[AGENT_FLYING]], [[AGENT_ATTACHMENTS]], & [[AGENT_SCRIPTED]].
*[[AGENT_AUTOPILOT]] was added in {{SVN|2900|rev=136439|trunk=*|ser=1.33.0|anchor=file21}}
*[[AGENT_AUTOPILOT]] was added in {{SVN|2900|rev=136439|trunk=*|ser=1.33.0|anchor=file21}}
|cat1=Avatar
|cat1=Avatar

Revision as of 01:32, 22 January 2015

Summary

Function: integer llGetAgentInfo( key id );

Returns a bit field (an integer) containing the agent information about id.

• key id avatar UUID that is in the same region

Constant Val Returned if agent...
AGENT_ALWAYS_RUN 0x1000 has running ("Always Run") enabled, or is using tap-tap-hold
AGENT_ATTACHMENTS 0x0002 has attachments
AGENT_AUTOMATED 0x4000 is marked as a scripted agent/bot
AGENT_AUTOPILOT 0x2000 is in "autopilot" mode
AGENT_AWAY 0x0040 is in "away" mode
AGENT_BUSY 0x0800 is in "busy" mode
AGENT_CROUCHING 0x0400 is crouching
AGENT_FLYING 0x0001 is flying or hovering
AGENT_IN_AIR 0x0100 is in the air (jumping, flying or falling)
AGENT_MOUSELOOK 0x0008 is in mouselook
AGENT_ON_OBJECT 0x0020 is sitting on an object (and linked to it)
AGENT_SCRIPTED 0x0004 has scripted attachments
AGENT_SITTING 0x0010 is sitting[1]
AGENT_TYPING 0x0200 is typing
AGENT_WALKING 0x0080 is walking, running or crouch walking

Caveats

Important Issues

~ All Issues ~ Search JIRA for related Bugs
   llGetAgentInfo() returns unreliable info after a sim border crossing

Examples

default
{
    touch_start(integer buf)
    {
        buf = llGetAgentInfo(llDetectedKey(0));
        string out;
        if(buf & AGENT_FLYING)
            out += "The agent is flying.\n";
        else
            out += "The agent is not flying.\n";
 
        if(buf & AGENT_ATTACHMENTS)
        {
            if(buf & AGENT_SCRIPTED)
                out += "The agent has scripted attachments.\n";
            else
                out += "The agent's attachments are unscripted.\n";
        }
        else
            out += "The agent does not have attachments.\n";
 
        if(buf & AGENT_MOUSELOOK)
            out += "the agent is in mouselook.";
        else
            out += "the agent is in normal camera mode.";
        llWhisper(0, out);
    }
}

Notes

This is not a good way of testing if an avatar is in the region, use llGetAgentSize instead.

See Also

Deep Notes

History

All Issues

~ Search JIRA for related Issues
   agent_info() event
   llGetAgentInfo() returns unreliable info after a sim border crossing

Tests

•  llGetAgentInfo_Test

Footnotes

  1. ^ "Sit down" on the avatar context menu allows ground sits anywhere: atop the terrain, on objects or even in the air, so it is possible to sit "on" an object without linking.
  2. ^ Early release notes were not very accurate or thorough, they sometimes included information about features added in previous releases or failed to include information about features added in that release.

Signature

function integer llGetAgentInfo( key id );