public static void CerrarSesion(SessionInstance Session, string error) { if (Session.User != null) { UserManager.Ajustar_Remuneracion(Session.User); MiniGamesManager.CancelarInscripciones(Session.User); if (Session.User.Sala != null) { SalasManager.Salir_Sala(Session); } UsuariosOnline.Remove(Session.User.id); if (Program.ver_conexion_usuarios == true) { Output.WriteLine("[UserManager] -> Se ha desconectado " + Session.User.nombre + ". > " + error); } ActualizarUsuarios(); Program.UpdateTitle(); } }
public static void Salir_Sala(SessionInstance Session, bool ByKick = false) { if (Session.User.Sala != null) { if (Session.User.Sala.Usuarios.ContainsKey(Session.User.IDEspacial)) { if (Session.User.Sala.Usuarios.Remove(Session.User.IDEspacial)) { Session.User.Sala.Map[Session.User.Posicion.y, Session.User.Posicion.x].FijarSession(null); if (Session.Client.Connected) { ServerMessage cargar_flower_power = new ServerMessage(); cargar_flower_power.AddHead(128); cargar_flower_power.AddHead(124); Session.SendDataProtected(cargar_flower_power); if (ByKick) { ServerMessage expulsar_usuario = new ServerMessage(); expulsar_usuario.AddHead(153); Session.SendDataProtected(expulsar_usuario); } } ServerMessage eliminar_usuario = new ServerMessage(); eliminar_usuario.AddHead(128); eliminar_usuario.AddHead(123); eliminar_usuario.AppendParameter(Session.User.IDEspacial); Session.User.Sala.SendData(eliminar_usuario); Session.User.Sala.EliminarInteraccionesDeUsuario(Session.User.IDEspacial); MiniGamesManager.DescalificarParticipante(Session); if (Session.User.Intercambio != null) { Session.User.Intercambio.TerminarCanjeo(); } Session.User.Sala = null; } } } }
public static bool Entrar_Sala(SessionInstance Session, SalaInstance Sala, Posicion DoorPosicion) { int key = 1; if (Sala.Visitantes < Sala.Escenario.max_visitantes) { if (Session.User.Sala != null) { if (Session.User.Sala.Escenario.es_categoria == Sala.Escenario.es_categoria && Session.User.Sala.id == Sala.id) { return(false); } Salir_Sala(Session); } while (Sala.Usuarios.ContainsKey(key)) { key++; } Sala.Usuarios.Add(key, Session); if (Sala.Usuarios.ContainsKey(key)) { if (Sala.Escenario.es_categoria == 2) { Session.User.Posicion = MiniGamesManager.ObtenerPuerta(Sala.Escenario, key); if (Sala.Ring != null) { Sala.Ring.Participantes.Add(key, Session); Session.User.CocosRestantes = 3; } if (Sala.Cocos != null) { Sala.Cocos.Participantes.Add(key, Session); Session.User.CocosRestantes = 3; } if (Sala.Sendero != null) { Sala.Sendero.Participantes.Add(key, Session); Session.User.CocosRestantes = 3; } if (Sala.Camino != null) { Sala.Camino.Participantes.Add(key, Session); Session.User.CocosRestantes = 3; } } else { if (DoorPosicion != null) { Session.User.Posicion = DoorPosicion; } else { Session.User.Posicion = new Posicion(Sala.Puerta.x, Sala.Puerta.y); } } Session.User.Sala = Sala; Session.User.IDEspacial = key; Session.User.Trayectoria = new Trayectoria(Session); Session.User.Sala.Map[Session.User.Posicion.y, Session.User.Posicion.x].FijarSession(Session); if (Session.User.colores_old != "") { Session.User.colores = Session.User.colores_old; Session.User.colores_old = ""; Session.User.block_upper = false; } Session.User.Sala.EnviarRegistro(Session); return(true); } } return(false); }