Difference between revisions of "LlGetAgentList"

From Second Life Wiki
Jump to navigation Jump to search
m (just noticed that template was out of place!)
(Added new example)
Line 44: Line 44:
   }
   }
}</lsl>
}</lsl>
<lsl>
//Orders new list based off distance, and returns
//then om touch_start
default
{
touch_start(integer num){
list keys = llGetAgentList(AGENT_LIST_REGION,[]);
list newkeys;
integer i;
for (i=0; i < llGetListLength(keys); ++i){
newkeys += llVecDist(llGetPos(), llList2Vector(llGetObjectDetails(llList2Key(keys,i), [OBJECT_POS]), 0));
newkeys += llList2Key(keys,i);
}
newkeys = llListSort(newkeys, 2, FALSE);
for (i=0; i < llGetListLength(newkeys); ++i){
llOwnerSay(llGetDisplayName(llList2Key(newkeys,i+1)) + " ["+(string)llRound(llList2Float(newkeys, i)) + "m]");
++i;
}
}
}
</lsl>
|helpers
|helpers
|also_header
|also_header

Revision as of 14:22, 16 May 2012

Summary

Function: list llGetAgentList( integer scope, list options );

Requests a list of agents currently in the region, limited by the scope parameter.
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 scope

• integer scope
AGENT_LIST_* flag specifies the selection scope
  • 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.
• list options Unused.

Caveats

  • There is no guaranteed understandable order or randomness to the list returned.
  • Will only return up to 100 agents.
All Issues ~ Search JIRA for related Bugs

Examples

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

default {

   touch_start(integer total_number)
   {
       integer  i;
       integer  liCount;
       gaAgents = llGetAgentList(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> <lsl> //Orders new list based off distance, and returns //then om touch_start default {

touch_start(integer num){ list keys = llGetAgentList(AGENT_LIST_REGION,[]); list newkeys; integer i; for (i=0; i < llGetListLength(keys); ++i){ newkeys += llVecDist(llGetPos(), llList2Vector(llGetObjectDetails(llList2Key(keys,i), [OBJECT_POS]), 0)); newkeys += llList2Key(keys,i);

}

newkeys = llListSort(newkeys, 2, FALSE);

for (i=0; i < llGetListLength(newkeys); ++i){ llOwnerSay(llGetDisplayName(llList2Key(newkeys,i+1)) + " ["+(string)llRound(llList2Float(newkeys, i)) + "m]"); ++i; } }

}

</lsl>

See Also

Deep Notes

History

All Issues

~ Search JIRA for related Issues
   llGetAgentList() with scope AGENT_LIST_PARCEL or AGENT_LIST_PARCEL_OWNER returns empty list when attached to avatar

Signature

function list llGetAgentList( integer scope, list options );