llGetAgentList

From Second Life Wiki
Revision as of 13:49, 20 March 2012 by Talarus Luan (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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 );