De DigiWiki.
//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)));
}
}
//Orders new list based off distance, and returns
//then on 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;
}
}
}