Ty(讨论 | 贡献)2020年6月30日 (二) 13:31的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
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]");
}
}
}
|