LlTeleportAgent

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

Template:Needs Translation/


函数名
Function: llTeleportAgent( key avatar, string landmark, vector position, vector look_at );
参数:请求将化身传送到存储在对象清单中的地标。如果没有提供地标(空字符串),则化身被传送到当前区域中的位置。在任何一种情况下,化身都被转向朝向look\u at给出的方向。

•关键化身(key avatar)–同一区域的化身UUID(要传送的化身必须是所有者) •string landmark–此脚本所在的prim目录中的地标或空字符串(用于在同一区域内传送) •矢量位置(vector position)–如果没有提供地标,则在本地区域内将化身传送到的位置。 •vector look_at–化身到达时应面向的区域内的位置。(注意:这与llteleportagentglobalords中的同一参数不同,后者需要一个方向。) 要运行此函数,脚本必须使用llRequestPermissions请求权限“传送”权限,并且必须由avatar授予。

返回值:无
注意事项
如果landmark不是空字符串。

prim的库存中缺少landmark,或者它不是landmark,则在DEBUG峎CHANNEL上显示错误。 权限 不依赖于自动授予权限的状态。始终使用“运行时”权限事件。 如果脚本缺少权限“传送”,脚本将在调试频道上发出错误消息,操作失败(但脚本继续运行)。 如果许可_TELEPORT是由除avatar之外的任何人授予的,那么当函数被调用时,DEBUG频道上会发出一个错误。 一旦PERMISSION\u TELEPORT权限被授予,除了从脚本内部(例如,使用一个新的llRequestPermissions调用)或脚本被重置或删除之外,就无法撤消它。 此功能只能传送对象的所有者(除非是经验的一部分)。 传送被限制了 此函数不能在使用llAttachToAvatarTemp附加的对象中的脚本中使用。 坐着的化身不能用这个功能传送。你必须先解开它们。 此功能不会覆盖包裹的传送设置,也就是说,如果包裹启用了着陆区域,则代理将被传送到那里。 如果脚本是虚拟人物授予许可的体验的一部分,那么这个功能可以在不作为所有者的情况下传送它们,并且它将覆盖包裹传送路由。请参阅下面的示例。

示例
在物品清单上没有地标
key  teleportee;
 
default
{
    state_entry()
    {
        llSay(0, "Touch to teleport");
    }
 
    touch_start(integer total_num)
    {
        teleportee = llDetectedKey(0);
        llRequestPermissions(teleportee, PERMISSION_TELEPORT);
    }
 
    run_time_permissions(integer perm)
    {
        if(PERMISSION_TELEPORT & perm)
        {
            llTeleportAgent(teleportee, "", <13.0, 38.0, 23.5>, <13.0, 12.0, 23.5>);
        }
    }
}

物品清单上有个地标

key  teleportee;
 
default
{
    state_entry()
    {
        llSay(0, "Touch to teleport");
    }
 
    touch_start(integer total_num)
    {
        teleportee = llDetectedKey(0);
        llRequestPermissions(teleportee, PERMISSION_TELEPORT);
    }
 
    run_time_permissions(integer perm)
    {
        if(PERMISSION_TELEPORT & perm)
        {
            llTeleportAgent(teleportee, "Experience Tools 1", <0.0, 0.0, 0.0>, <0.0, 0.0, 0.0>);
        }
    }
}

如何在体验中使用此功能

// A SIMPLE SCRIPT that implements an Experience based teleport.
// Compile with the "Use Experience" box cnecked and an experience key you own selected.
// The prim containing this script must contain a landmark named "Landmark" in its contents
//
// If the person touching this box has not previously accepted an invitation to your experience,
// that person will be offered that opportunity when this prim is touched, and if the invitations
// is accepted, will be immediately teleported to the target of the landmark.
//
// If the toucher has previously accepted an invitation, the person will be immediately teleported
// with no interruption.
//
// The script has no safety features, e.g., will simply fail if the prim contains no landmark.
//
// Thanks to Rolig Loon for her help in figuring out how to do this
// See https://community.secondlife.com/t5/English-Knowledge-Base/Experiences-in-Second-Life/ta-p/2744686
// to read what the Lindens think is an adequate explanation of all this.
 
 
default
{
    touch_start(integer n)
    {
        llRequestExperiencePermissions(llDetectedKey(0), "");
    }
 
    experience_permissions(key av)
    {
        llTeleportAgent(av, "Landmark", ZERO_VECTOR, ZERO_VECTOR);
    }
 
}
相关函数
llGetPermissions–获得授权

llGetPermissionsKey –找到授予权限的代理

llRequestPermissions–请求权限

llTeleportAgentGlobalCoords –将代理传送到全球位置。

相关事件
run_time_permissions–权限接收事件