Beispiel #1
0
        private void OnEstateTeleportAllUsersHomeRequest(IClientAPI client, UUID invoice, UUID senderID)
        {
            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;
                }

                scene.ForEachScenePresence(delegate(ScenePresence p) {
                    if (p != null && !p.IsChildAgent)
                    {
                        p.ControllingClient.SendTeleportStart(16);
                        scene.TeleportClientHome(p.ControllingClient.AgentId, p.ControllingClient);
                    }
                });
            }

            m_EstateConnector.SendTeleportHomeAllUsers(estateID);
        }
Beispiel #2
0
        private void OnEstateTeleportAllUsersHomeRequest(IClientAPI client, UUID invoice, UUID senderID)
        {
            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;
                }

                scene.ForEachScenePresence(delegate(ScenePresence p)
                {
                    if (p != null && !p.IsChildAgent && !p.IsDeleted && !p.IsInTransit)
                    {
                        p.ControllingClient.SendTeleportStart(16);
                        scene.TeleportClientHome(p.ControllingClient.AgentId, client);
                        if (!s.TeleportClientHome(p.ControllingClient.AgentId, client))
                        {
                            p.ControllingClient.Kick("You were teleported home by the region owner, but the TP failed - you have been logged out.");
                            s.CloseAgent(p.UUID, false);
                        }
                    }
                });
            }

            m_EstateConnector.SendTeleportHomeAllUsers(estateID);
        }