LlGetAgentList

来自人工智能助力教育知识百科
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: list llGetAgentList( integer scope, list options );
参数:

Integer scope-agent list * 标志指定选择范围

  • AGENT_LIST_PARCEL -只返回运行脚本的同一块上的代理。
  • AGENT_LIST_PARCEL_OWNER -只返回该区域中包裹所有者与脚本对象下包裹所有者相同的任何包裹的代理。
  • AGENT_LIST_REGION - 返回该地区的所有探员
返回一个列表[ key id0,key id1,... ,key idn ]或者[ string error msg ]-返回范围指定区域内所有代理程序的化身密钥
注意事项
*返回的名单没有可理解的顺序或随机性。
  • 只会回来100个探员。
  • 鬼,代理离开损坏的存在和代理在上帝模式取决于级别将返回空键,而不是他们的真正的密钥与 llgetagentlist ()。 还有一个问题,某种鬼魂特工还在归还钥匙。 也许可以根据 llgetagentsize ()检查每个键,以验证它们是否真的在 sim 中; 上述异常不会影响 llgetagentsize ()。
示例
示例一
//Displays up to 100 avatar key: name pairs detected in the entire region
 
default
{
    touch_start(integer total_number)
    {
        list avatarsInRegion = llGetAgentList(AGENT_LIST_REGION, []);
        integer numOfAvatars = llGetListLength(avatarsInRegion);
 
        // if no avatars, abort avatar listing process and give a short notice
        if (!numOfAvatars)
        {
            llOwnerSay("No avatars found within the region!");
            return;
        }
 
        integer index;
        while (index < numOfAvatars)
        {
            key id = llList2Key(avatarsInRegion, index);
            string name = llKey2Name(id);
 
            llOwnerSay(name + " [ " + (string)id + " ]");
            ++index;
        }
    }
}


示例二
//  Orders new list based on distance
//  and returns names and distances on touch
 
default
{
    touch_start(integer num_detected)
    {
        list keys = llGetAgentList(AGENT_LIST_REGION, []);
        integer numberOfKeys = llGetListLength(keys);
 
        vector currentPos = llGetPos();
        list newkeys;
        key thisAvKey;
 
        integer i;
        for (i = 0; i < numberOfKeys; ++i) {
            thisAvKey = llList2Key(keys,i);
            newkeys += [llRound(llVecDist(currentPos,
                            llList2Vector(llGetObjectDetails(thisAvKey, [OBJECT_POS]), 0))),
                        thisAvKey];
        }
 
        newkeys = llListSort(newkeys, 2, FALSE);     //  sort strided list by descending distance
 
        for (i = 0; i < (numberOfKeys * 2); i += 2) {
            llOwnerSay(llGetDisplayName(llList2Key(newkeys, i+1))
                +" ["+ (string) llList2Integer(newkeys, i) + "m]");
        }
    }
}
相关函数
llGetRegionAgentCount
相关事件