Difference between revisions of "LlGetAgentList"

From Second Life Wiki
Jump to: navigation, search
Line 12: Line 12:
 
|func_footnote=
 
|func_footnote=
 
|return_type=list
 
|return_type=list
|return_text=[key id0, key id1, ..., key idn] or [string error_msg] -  returns avatar keys for all agents in the region limited to the area specified by flags
+
|return_text=[key id0, key id1, ..., key idn] or [string error_msg] -  returns avatar keys for all agents in the region limited to the area(s) specified by flags
 
|spec=
 
|spec=
 
|p1_type=integer|p1_name=max_agents|p1_desc=Maximum number of agents to return in the list. Must be greater than 0 and less than 200. |p1_hover=max agents to return
 
|p1_type=integer|p1_name=max_agents|p1_desc=Maximum number of agents to return in the list. Must be greater than 0 and less than 200. |p1_hover=max agents to return
Line 54: Line 54:
 
|also_footer
 
|also_footer
 
|notes=
 
|notes=
|mode=request
+
|mode=pre-release
 
|deprecated
 
|deprecated
 
|location
 
|location
 
|cat1=Functions
 
|cat1=Functions
|cat2
+
|cat2=Avatar
|cat3
+
|cat3=Owner
|cat4
+
|cat4=Parcel
|cat5
+
|cat5=Region
 
|cat6
 
|cat6
 
}}
 
}}

Revision as of 13:49, 20 March 2012

Emblem-important-red.png Pre-release Documentation Warning!

This function is not available yet. This documentation was written prior to its final release so it may not match the final implementation.

Summary

Function: list llGetAgentList( integer max_agents, integer flags );

Requests a list of agents currently in the region, limited by the flags parameter.

  • AGENT_LIST_PARCEL - returns only agents on the same parcel where the script is running.
  • AGENT_LIST_PARCEL_OWNER - returns only agents on any parcel in the region where the parcel owner is the same as the owner of the parcel under the scripted object.
  • AGENT_LIST_REGION - returns any/all agents in the region.
    Returns a list [key id0, key id1, ..., key idn] or [string error_msg] - returns avatar keys for all agents in the region limited to the area(s) specified by flags
• integer max_agents Maximum number of agents to return in the list. Must be greater than 0 and less than 200.
• integer flags selection flags

Caveats

  • There is no guaranteed understandable order or randomness to the list returned.
  • If there are more agents than max_agents, the agents returned will not be random nor meaningfully ordered.
  • If no agents enter or leave the list returned will probably not change.
    • Example: in a region with 20 agents, llGetAgentList(5,AGENT_LIST_REGION) will return 5 arbitrary agents. It will probably return the same 5 as long as no one enters or leaves the region, but that is not guaranteed. It will not cycle through the agents in any way and the 5 agents returned are not random.
    • Example: llGetAgentList(1,AGENT_LIST_PARCEL) is NOT a good way to get 1 random resident on a parcel because the result is not random.
  • It is recommended to set max_agents as high as needed for the possible number of agents to process and low enough that a list with that many UUIDs would not cause a Stack-Heap Collision error.
  • Examples and shared code should use 100 for max_agents unless specifically required to be something else: this will ensure that the script will work in all current regions in Second Life.
All Issues ~ Search JIRA for related Bugs

Examples

<lsl>//Displays up to 100 avatar key: name pairs detected in the entire region list gaAgents; integer giMaxAgentsToReturn = 100;

default {

   touch_start(integer total_number)
   {
       integer  i;
       integer  liCount;
       gaAgents = llGetAgentList(giMaxAgentsToReturn,AGENT_LIST_REGION);
       liCount = llGetListLength(gaAgents);
       if (liCount > 0)
           if (llGetListEntryType(gaAgents,0) == TYPE_STRING)
               llOwnerSay("Error: "+llList2String(gaAgents,0));
           else
               for (i=0; i < liCount; ++i)
                   llOwnerSay(llList2String(gaAgents,i)+": "+llKey2Name(llList2String(gaAgents,i)));
  }
}</lsl>

Deep Notes

Search JIRA for related Issues

Signature

function list llGetAgentList( integer max_agents, integer flags );