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–权限接收事件 |