public void llTeleportAgentGlobalCoords(LSL_Key agent, LSL_Vector global_coordinates,
LSL_Vector region_coordinates, LSL_Vector look_at)
{
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return;
UUID invItemID = InventorySelf();
if (invItemID == UUID.Zero)
return;
lock (m_host.TaskInventory)
{
if (m_host.TaskInventory[invItemID].PermsGranter == UUID.Zero)
{
ShoutError("No permissions to teleport the agent");
return;
}
if ((m_host.TaskInventory[invItemID].PermsMask & ScriptBaseClass.PERMISSION_TELEPORT) == 0)
{
ShoutError("No permissions to teleport the agent");
return;
}
}
IScenePresence presence = World.GetScenePresence(m_host.OwnerID);
if (presence != null)
{
IEntityTransferModule module = World.RequestModuleInterface<IEntityTransferModule>();
if (module != null)
{
module.Teleport(presence, Utils.UIntsToLong((uint)global_coordinates.x, (uint)global_coordinates.y),
region_coordinates.ToVector3(), look_at.ToVector3(), (uint)TeleportFlags.ViaLocation);
}
}
}