private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey, bool kick) { if (prey == UUID.Zero) { return; } if (!(client.Scene is Scene)) { return; } Scene scene = (Scene)client.Scene; uint estateID = scene.RegionInfo.EstateSettings.EstateID; if (!scene.Permissions.CanIssueEstateCommand(client.AgentId, false)) { return; } foreach (Scene s in Scenes) { if (s.RegionInfo.EstateSettings.EstateID != estateID) { continue; } ScenePresence p = scene.GetScenePresence(prey); if (p != null && !p.IsChildAgent && !p.IsDeleted && !p.IsInTransit) { if (kick) { p.ControllingClient.Kick("You have been kicked out"); s.CloseAgent(p.UUID, false); } else { p.ControllingClient.SendTeleportStart(16); if (!s.TeleportClientHome(prey, client)) { p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed"); s.CloseAgent(p.UUID, false); } } return; } } m_EstateConnector.SendTeleportHomeOneUser(estateID, prey); }
private void OnEstateTeleportOneUserHomeRequest(IClientAPI client, UUID invoice, UUID senderID, UUID prey) { if (prey == UUID.Zero) { return; } if (!(client.Scene is Scene)) { return; } Scene scene = (Scene)client.Scene; uint estateID = scene.RegionInfo.EstateSettings.EstateID; if (!scene.Permissions.CanIssueEstateCommand(client.AgentId, false)) { return; } foreach (Scene s in Scenes) { if (s == scene) { continue; // Already handles by estate module } if (s.RegionInfo.EstateSettings.EstateID != estateID) { continue; } ScenePresence p = scene.GetScenePresence(prey); if (p != null && !p.IsChildAgent) { p.ControllingClient.SendTeleportStart(16); scene.TeleportClientHome(prey, p.ControllingClient); } } m_EstateConnector.SendTeleportHomeOneUser(estateID, prey); }