public void OnClosingClient(UUID clientID, Scene scene) { lock (m_authorizedSpeakers) { if (m_authorizedSpeakers.Contains(clientID)) m_authorizedSpeakers.Remove(clientID); } int AgentCount = 0; lock (RegionAgentCount) { RegionAgentCount.TryGetValue(scene.RegionInfo.RegionID, out AgentCount); AgentCount--; if (AgentCount < 0) AgentCount = 0; RegionAgentCount[scene.RegionInfo.RegionID] = AgentCount; } if (m_announceClosedAgents) { string leavingAvatar = scene.GetUserName(clientID); scene.ForEachScenePresence(delegate(ScenePresence SP) { if (SP.UUID != clientID && !SP.IsChildAgent) { SP.ControllingClient.SendChatMessage(leavingAvatar + " has left the region. Total Agents: " + AgentCount, 1, SP.AbsolutePosition, "System", UUID.Zero, (byte)ChatSourceType.System, (byte)ChatAudibleLevel.Fully); } } ); } }