LlTeleportAgentGlobalCoords
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
| 函数名 |
|---|
| Function: llTeleportAgentGlobalCoords( key agent, vector global_coordinates, vector region_coordinates, vector look_at ); |
| 参数:
将代理传送到指定全局_坐标的区域内的区域_坐标集。探员朝着look\u at定义的方向着陆。可以使用llRequestSimulatorData(region_name,DATA_SIM_POS)检索区域的全局坐标 •密钥代理(key agent)–位于同一区域的化身UUID(要传送的化身) •矢量全局坐标(vector global_coordinates)–目的地区域的全局坐标。可以使用llRequestSimulatorData(地区名称,数据_SIM_POS)检索。 •矢量区域_坐标( vector region_coordinates)–化身着陆的区域坐标位置。 •vector look_at–化身着陆时应面向的方向(东、西等)。 若要运行此函数,脚本必须使用llRequestPermissions请求“传送”权限,并且必须由代理授予该权限。 llRequestSimulatorData和llteleportagentglobalords的组合允许代理通过区域名称传送到区域。 |
| 返回值:无 |
| 注意事项 |
|---|
| 不依赖于自动授予权限的状态。始终使用“运行时”权限事件。
如果脚本缺少权限“传送”,脚本将在调试频道上发出错误消息,操作失败(但脚本继续运行)。 如果权限_TELEPORT是由代理以外的任何人授予的,那么当函数被调用时,DEBUG峎通道上将会发出一个错误。 一旦PERMISSION\u TELEPORT权限被授予,除了从脚本内部(例如,使用一个新的llRequestPermissions调用)或脚本被重置或删除之外,就无法撤消它。 此功能只能传送对象的所有者(除非是经验的一部分)。 传送被限制了 此函数不能在使用llAttachToAvatarTemp附加的对象中的脚本中使用。 坐着的化身不能用这个功能传送。你必须先解开它们。 此功能不会覆盖包裹的传送设置,也就是说,如果包裹启用了着陆区域,则代理将被传送到那里。 如果脚本是虚拟人物授予许可的体验的一部分,那么这个功能可以在不作为所有者的情况下传送它们,并且它将覆盖包裹传送路由。 look\u at不是区域中某个点的坐标。look_-at向量是<llCos(facing),llSin(faceing),0.0>,其中facing是到达的化身要看的角度。 |
| 示例 |
|---|
示例1
string simName = "Help Island Public";
vector simGlobalCoords;
vector landingPoint = <128.0, 128.0, 24.0>;
key owner;
default
{
on_rez(integer start_param)
{
llResetScript();
}
changed(integer change)
{
if (change & CHANGED_OWNER)
llResetScript();
}
state_entry()
{
owner = llGetOwner();
llRequestPermissions(owner, PERMISSION_TELEPORT);
llRequestSimulatorData(simName, DATA_SIM_POS);
}
touch_start(integer total_number)
{
key id = llDetectedKey(0);
if (id == owner)
{
if (simGlobalCoords == ZERO_VECTOR)
{
llOwnerSay("Config error, tp request was denied. Please try again!");
llResetScript();
}
else
{
llOwnerSay("Teleporting you to: http://maps.secondlife.com/secondlife/"
+ llEscapeURL(simName) + "/" + (string)llRound(landingPoint.x)
+ "/" + (string)llRound(landingPoint.y) + "/" + (string)llRound(landingPoint.z) + "/");
llTeleportAgentGlobalCoords(owner, simGlobalCoords, landingPoint, ZERO_VECTOR);
}
}
else
{
// llRegionSayTo is faster than llInstantMessage and we can assume
// that the touching avatar is within the same sim
llRegionSayTo(id, PUBLIC_CHANNEL,
"Sorry, I can't tp you. You're NOT my owner!");
}
}
run_time_permissions(integer perm)
{
// if permission request has been denied (read ! as not)
if (!(perm & PERMISSION_TELEPORT))
{
llOwnerSay("I need permissions to teleport you!");
llRequestPermissions(owner, PERMISSION_TELEPORT);
}
}
// dataserver event only called if data is returned
// or in other words, if you request data for a sim that does
// not exist this event will NOT be called
dataserver(key query_id, string data)
{
simGlobalCoords = (vector)data;
// llOwnerSay("Sim global coords: " + (string)simGlobalCoords);
}
}
|
| 相关函数 |
|---|
| llGetPermissions –获得授权
llGetPermissionsKey –找到授予权限的代理 llRequestPermissions–请求权限 llRequestSimulatorData–用于请求模拟器位置 llTeleportAgent–将特工传送到该地区的地标或位置。 |
| 相关事件 |
|---|
| run_time_permissions–权限接收事件 |