static void Validar_Clave_Acceso(SessionInstance Session, string[,] Parameters) { if (Session.User != null) { if (Session.User.PreLock__Proteccion_SQL == true) { return; } if (Session.User.Sala != null) { return; } mysql client = new mysql(); DataRow row = client.ExecuteQueryRow("SELECT * FROM escenarios_privados WHERE id = '" + int.Parse(Parameters[0, 0]) + "'"); if (row != null) { EscenarioInstance Escenario = new EscenarioInstance(row); if (Escenario.categoria != 2) { return; } if (!string.IsNullOrEmpty(Escenario.Clave)) { if (Escenario.Clave != Parameters[1, 0]) { Packet_189_123(Session); return; } } SalasManager.IrAlli(Session, Escenario.es_categoria, Escenario.id, null, true); } Session.User.PreLock__Proteccion_SQL = true; } }
static void GoRoom(SessionInstance Session, string[,] Parameters) { Thread.Sleep(new TimeSpan(0, 0, 0, 0, 500)); if (Session.User != null) { if (Session.User.Sala != null) { return; } int id_sala = int.Parse(Parameters[1, 0]); if (int.Parse(Parameters[1, 0]) == 30 && int.Parse(Parameters[0, 0]) == 1)//Cementerio Entradas { Random rd = new Random(); int[] areas = { 50, 46, 26, 30 }; id_sala = areas[rd.Next(0, 4)]; //0+1+2+3 } else if (int.Parse(Parameters[1, 0]) == 78 && int.Parse(Parameters[0, 0]) == 1) //Madriguera Entradas { Random rd = new Random(); int[] areas = { 83, 82, 90, 84 }; id_sala = areas[rd.Next(0, 4)]; //0+1+2+3 } else if (int.Parse(Parameters[1, 0]) == 57 && int.Parse(Parameters[0, 0]) == 1) //Bosque Nevado Entradas { Random rd = new Random(); int[] areas = { 60, 64, 72, 63 }; id_sala = areas[rd.Next(0, 4)]; //0+1+2+3 } if (!SalasManager.IrAlli(Session, int.Parse(Parameters[0, 0]), id_sala)) { Packet_128_120(Session); Session.User.PreLock__Spamm_Areas = true; } } }
static void Main(string[] args) { try { UpdateTitle(); Output.WriteLine($"Emulador Enterprise Edition {vercion}"); SessionManager.Initialize(server); HandlerManager.Initialize(); SalasManager.Initialize(); Output.WriteLine("Visualizar la conexión de usuarios: " + (ver_conexion_usuarios == true ? "true" : "false")); Output.WriteLine("Servidor iniciado correctamente!"); Output.WriteLine("_________________________________________________"); ServerThreads.Initialize(); Console.Beep(); if (control_panel == true) { panel_control form = new panel_control(); form.ShowDialog(); } } catch (Exception ex) { Output.WriteLine(ex.ToString()); Program.EditorialResponse(ex); Console.ReadKey(); } }
static void SalirSala(SessionInstance Session, string[,] Parameters) { if (Session.User != null) { if (Session.User.Sala != null) { if (Session.User.block_upper == true) { Session.User.block_upper = false; Session.User.colores = Session.User.colores_old; Session.User.colores_old = ""; } if (SalaInstance.UsuariosEnObjetos.ContainsKey(Session.User.id)) { SalaInstance.UsuariosEnObjetos.Remove(Session.User.id); } SalasManager.Salir_Sala(Session); } } }
public void ExpusarUsuarios() { try { while (Usuarios.Count >= 1) { List <SessionInstance> SessionToRemove = new List <SessionInstance>(); foreach (var Session in Usuarios.Values) { SessionToRemove.Add(Session); } foreach (var Session in SessionToRemove) { SalasManager.Salir_Sala(Session, true); } } } catch { } }
static void GoRoom_Subareas(SessionInstance Session, string[,] Parameters) { Thread.Sleep(new TimeSpan(0, 0, 0, 0, 500)); if (Session.User != null) { int Categoria = int.Parse(Parameters[0, 0]); if (Categoria == -1) { Categoria = 1; } if (Session.User.PreLock__Spamm_Areas == true) { return; } if (!SalasManager.IrAlli(Session, int.Parse(Parameters[0, 0]), int.Parse(Parameters[1, 0]), null, false)) { Packet_128_120(Session); Session.User.PreLock__Spamm_Areas = true; } } }
static void Pocion_Tiempo_Manager() { foreach (SessionInstance Session in UserManager.UsuariosOnline.Values) { if (Session.User.comprobar_conexion > 0) { Session.User.comprobar_conexion--; } if (Session.User.comprobar_conexion == 0) { Session.User.comprobar_conexion = 10; } if (Session.User.TiempoPocion > 0 && Session.User.Efecto != 0) { Session.User.TiempoPocion -= 1; } else if (Session.User.TiempoPocion == 0 && Session.User.Efecto != 0) { if (Session.User.PreLock_Interactuando == true) { return; } if (PocionesHandler.Pociones_FlowerPower.Contains(Session.User.Efecto)) { SalasManager.Salir_Sala(Session, true); } else if (Session.User.Efecto == 11 || Session.User.Efecto == 12) { PocionesHandler.QuitarPocion_FE(Session); } else { PocionesHandler.QuitarPocion_FE(Session); } Session.User.Efecto = 0; } } }
private static void Packet_154_32(SessionInstance Session) { mysql client = new mysql(); Dictionary <int, int> areas = new Dictionary <int, int>(); ServerMessage server = new ServerMessage(); server.AddHead(154); server.AddHead(32); foreach (DataRow row in client.ExecuteQueryTable("SELECT * FROM escenarios_publicos WHERE visible = '1' ORDER BY prioridad ASC").Rows) { areas.Add((int)row["id"], SalasManager.UsuariosEnSala(new EscenarioInstance(row))); } foreach (var escenario in areas.OrderByDescending(x => x.Value)) { client.SetParameter("id", escenario.Key); DataRow row = client.ExecuteQueryRow("SELECT * FROM escenarios_publicos WHERE id = @id"); server.AppendParameter(row["categoria"]); server.AppendParameter(row["es_categoria"]); server.AppendParameter(row["id"]); server.AppendParameter(row["nombre"]); server.AppendParameter(SalasManager.UsuariosEnSala(new EscenarioInstance(row))); } Session.SendDataProtected(server); }
static void ExpulsarUsuario(SessionInstance Session, string[,] Parameters) { if (Session.User != null) { if (Session.User.Sala != null) { if (EscenariosManager.ControlDeSeguridad(Session.User, Session.User.Sala.Escenario)) { SessionInstance SessionToKick = UserManager.ObtenerSession(int.Parse(Parameters[1, 0])); if (SessionToKick != null) { SessionInstance SessionToKick_2 = Session.User.Sala.ObtenerSession(SessionToKick.User.IDEspacial); if (SessionToKick_2 != null) { if (SessionToKick_2.User.id == SessionToKick.User.id) { SalasManager.Salir_Sala(SessionToKick, true); } } } } } } }
public static void Banear_Usuario_Autoclick_Manager(int Usuario_ID, bool Auto) { string mensaje = ""; if (Auto == true) { mensaje = "El uso de Autoclick esta prohibido en BoomBang. Podras volver a conectarte en 1 hora. Créditos: -100 de oro"; } if (Auto == false) { mensaje = "El uso de Programas esta prohibido en BoomBang. Podras volver a conectarte en 1 hora. Créditos: -100 de oro"; } foreach (SessionInstance Session in UserManager.UsuariosOnline.Values) { SessionInstance OtherSession = UserManager.ObtenerSession(Usuario_ID); if (OtherSession.User.Sala != null) { OtherSession.User.baneo = Time.GetCurrentAndAdd(AddType.Horas, 1); using (mysql client = new mysql()) { client.ExecuteNonQuery("UPDATE usuarios SET baneo = '" + OtherSession.User.baneo + "' WHERE id = '" + OtherSession.User.id + "'"); } ServerMessage ban = new ServerMessage(); ban.AddHead(185); ban.AddHead(0); ban.AppendParameter(mensaje); OtherSession.SendData(ban); OtherSession.User.Contar_Auto = 0; UserManager.Creditos(OtherSession.User, true, false, 100); OtherSession.User.contador_baneo++; UserManager.ActualizarEstadisticas(OtherSession.User); SalasManager.Salir_Sala(OtherSession); UserManager.Desactivar_Usuario(OtherSession); } } }
public void LoadObjects(SessionInstance Session) { ServerMessage server = new ServerMessage(); Random rd = new Random(); if (Escenario.es_categoria == 2) { server.AddHead(128); server.AddHead(121); server.AddHead(122); server.AppendParameter(1); if (Escenario.modelo == 2 || Escenario.modelo == 3) { server.AppendParameter(1); } if (Escenario.modelo == 6 || Escenario.modelo == 7) { server.AppendParameter(1); } if (Escenario.modelo == 8) { server.AppendParameter(1); } if (Escenario.modelo == 9) { server.AppendParameter(1); } if (Escenario.modelo == 12 || Escenario.modelo == 13) { server.AppendParameter(1); } server.AppendParameter(0); } if (Escenario.es_categoria == 1) { server.AddHead(128); server.AddHead(121); server.AddHead(120); npcManager.ObtenerNPC(server, Session.User.Sala.Escenario.id); } if (Escenario.es_categoria == 0) { server.AddHead(128); server.AddHead(121); server.AddHead(121); if (Escenario.categoria == 2) { server.AppendParameter(1); } if (Escenario.categoria == 4) { server.AppendParameter(3); } server.AppendParameter(0); server.AppendParameter(Escenario.IslaID); server.AppendParameter(Escenario.id); server.AppendParameter(Escenario.id); server.AppendParameter(Escenario.color_1); server.AppendParameter(Escenario.color_2); server.AppendParameter(0); server.AppendParameter(Escenario.Creador.id); server.AppendParameter(new object[] { 1, -1, -1, 4, 5, 6, 7, 8, 9, 10, 0, -1, 13, 14, -1, 16 }); server.AppendParameter(new object[] { 4, -1, -1, 4, 4, 4, 4, 4, 4, 4, 0, -1, 4, 4, -1, 4 }); server.AppendParameter(new object[] { 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0 });//Puerta Categoría server.AppendParameter(CasasManager.Get_Door_Location_Model(Escenario, Escenario.Creador.id)); server.AppendParameter(new object[] { "puerta_1", "puerta_2", "puerta_3", "puerta_4", "puerta_5", "puerta_6", "puerta_7", "puerta_8", "puerta_9", "puerta_10", "puerta_11", "puerta_12", "puerta_13", "puerta_14", "puerta_15", "puerta_16" }); server.AppendParameter(CasasManager.Get_Key(Escenario.modelo)); server.AppendParameter(new object[] { 0, 0, 0, 578, 631, 149, 210, 319, 0, 445, 1120, 0, 0 });//Aqui van las llaves de las casas server.AppendParameter(new object[] { Escenario.terreno_something_1, Escenario.object_something_1 }); server.AppendParameter(new object[] { Escenario.terreno_something_2, Escenario.object_something_2 }); server.AppendParameter(new object[] { Escenario.terreno_something_3, Escenario.object_something_3 }); server.AppendParameter(new object[] { Escenario.terreno_config, Escenario.object_config }); server.AppendParameter(new object[] { Escenario.terreno_colores, Escenario.object_colores }); server.AppendParameter(new object[] { Escenario.terreno_rgb, Escenario.object_rgb }); LoadObjects(); server.AppendParameter(ObjetosEnSala.Count); foreach (BuyObjectInstance Item in ObjetosEnSala.Values) { if (listas.Plantas.Contains(Item.objeto_id)) { PlantasManager.cargar_planta(Session, Item); } server.AppendParameter(Item.id); server.AppendParameter(Item.objeto_id); server.AppendParameter(Item.posX); server.AppendParameter(Item.posY); server.AppendParameter(Item.rotation);//rotation server.AppendParameter(Item.tam); server.AppendParameter(0); if (CatalogoManager.lianas_cocos.Contains(Item.objeto_id)) { server.AppendParameter(""); //Espacio Ocupado } else { server.AppendParameter(Item.espacio_ocupado); //Espacio Ocupado } server.AppendParameter(Item.colores_hex); //color_1 server.AppendParameter(Item.colores_rgb); //color_2 server.AppendParameter("0"); //Data server.AppendParameter("0"); //Other if (Item.objeto_id == 370) //Contador de visitas de islas { mysql client = new mysql(); int contador_islas = Convert.ToInt32(Item.data) + 1; Item.data = Convert.ToString(contador_islas); client.SetParameter("id", Item.id); client.SetParameter("data", Item.data); client.ExecuteNonQuery("UPDATE objetos_comprados SET data = @data WHERE id = @id"); server.AppendParameter(Item.data); } else if (listas.Objetos_Area.Contains(Item.objeto_id)) { mysql client = new mysql(); client.SetParameter("id", Item.id); DataRow objeto = client.ExecuteQueryRow("SELECT * FROM objetos_comprados WHERE id = @id"); if (objeto != null) { client.SetParameter("id", Item.id); DataRow row = client.ExecuteQueryRow("SELECT * FROM escenarios_privados WHERE objeto_id = @id"); if (row != null) { Item.open = (int)objeto["open"]; server.AppendParameter(new object[] { Item.id, 0, Item.data, Item.open == 0 ? "": "1", Item.data, 12, SalasManager.UsuariosEnSala(new EscenarioInstance(row)) }); } } } else { server.AppendParameter(Item.data); } } server.AppendParameter(0); server.AppendParameter(Usuarios.Count); } foreach (SessionInstance OtherSession in Usuarios.Values) { server.AppendParameter(OtherSession.User.IDEspacial); server.AppendParameter(OtherSession.User.nombre); server.AppendParameter((OtherSession.User.ModoNinja ? 12 : OtherSession.User.avatar)); if (Escenario.tipo_evento == 2 && OtherSession.User.nivel_ninja == 0 && OtherSession.User.NinjaColores_Sala == "" || Escenario.tipo_evento_isla == 2 && OtherSession.User.nivel_ninja == 0 && OtherSession.User.NinjaColores_Sala == "") { server.AppendParameter((OtherSession.User.ModoNinja ? OtherSession.User.Colores_traje_blanco(Session) : OtherSession.User.colores)); } else if (OtherSession.User.NinjaColores_Sala != "") { server.AppendParameter((OtherSession.User.ModoNinja ? OtherSession.User.NinjaColores_Sala : OtherSession.User.colores)); } else { server.AppendParameter((OtherSession.User.ModoNinja ? OtherSession.User.Colores_traje(Session) : OtherSession.User.colores)); } server.AppendParameter(OtherSession.User.Posicion.x); server.AppendParameter(OtherSession.User.Posicion.y); server.AppendParameter(OtherSession.User.Posicion.z); server.AppendParameter("BoomBang"); server.AppendParameter(OtherSession.User.edad); server.AppendParameter(MonthDifference(Convert.ToDateTime(OtherSession.User.fecha_registro), DateTime.Now));//Tiempo registrado MonthDifference(DateTime.Now, Convert.ToDateTime(Session.User.fecha_registro)) server.AppendParameter((OtherSession.User.ModoNinja == true ? 1 : 0)); if (Session.User.Sala.Escenario.tipo_evento == 2 && OtherSession.User.puntos_ninja < 400 || Escenario.tipo_evento_isla == 2 && OtherSession.User.puntos_ninja < 400) { server.AppendParameter(12);//traje ninja } else { server.AppendParameter((OtherSession.User.puntos_ninja >= 400 || OtherSession.User.Traje_Ninja_Principal != 0 ? 12 : 0));//traje ninja } server.AppendParameter(OtherSession.User.UppertSelect); server.AppendParameter(OtherSession.User.UppertLevel()); server.AppendParameter(OtherSession.User.CocoSelect); server.AppendParameter(OtherSession.User.nivel_coco); server.AppendParameter(new object[] { OtherSession.User.hobby_1, OtherSession.User.hobby_2, OtherSession.User.hobby_3 }); server.AppendParameter(new object[] { OtherSession.User.deseo_1, OtherSession.User.deseo_2, OtherSession.User.deseo_3 }); server.AppendParameter(new object[] { OtherSession.User.Votos_Legal, OtherSession.User.Votos_Sexy, OtherSession.User.Votos_Simpatico }); server.AppendParameter(OtherSession.User.bocadillo); server.AppendParameter(new object[] { OtherSession.User.besos_enviados, OtherSession.User.besos_recibidos, OtherSession.User.jugos_enviados, OtherSession.User.jugos_recibidos, OtherSession.User.flores_enviadas, OtherSession.User.flores_recibidas, OtherSession.User.uppers_enviados, OtherSession.User.uppers_recibidos, OtherSession.User.cocos_enviados, OtherSession.User.cocos_recibidos, "0³" + OtherSession.User.rings_ganados + "³1³1³1³" + Session.User.senderos_ganados + "³1³1³" + (OtherSession.User.nivel_coco + 1) + "³" + OtherSession.User.puntos_cocos + "³1³" + OtherSession.User.puntos_coco_limite + "³" + OtherSession.User.nivel_ninja + "³" + OtherSession.User.puntos_ninja + "³1³" + OtherSession.User.puntos_ninja_limite }); server.AppendParameter((OtherSession.User.toneos_ring >= 2000 && OtherSession.User.vip <= 0 ? 1: OtherSession.User.admin)); //Ficha dorada para las personas con mas de 2k torneos server.AppendParameter(OtherSession.User.vip); //vip server.AppendParameter(OtherSession.User.Cambios); //cambios server.AppendParameter(Escenario.id == 2 || OtherSession.User.Sala.Ring != null || OtherSession.User.Sala.Cocos != null || OtherSession.User.Sala.Sendero != null || OtherSession.User.Sala.Camino != null ? 0 : OtherSession.User.Efecto); server.AppendParameter(OtherSession.User.id); } if (Escenario.es_categoria == 0) { server.AppendParameter(0); server.AppendParameter(0); server.AppendParameter(0); server.AppendParameter(0); server.AppendParameter(0); } Session.SendData(server); if (Escenario.Clave != "") { new Thread(() => Cerar_Ceradura(Session, Escenario)).Start(); } }
private static void Packet_189_124(SessionInstance Session, int IslaID) { ServerMessage server = new ServerMessage(); server.AddHead(189); server.AddHead(124); IslaInstance Isla = IslasManager.ObtenerIsla(IslaID); if (Isla != null) { IslasManager.Diccionario_AñadirIsla(Isla); List <EscenarioInstance> Escenarios = IslasManager.ZonasIsla(Isla); server.AppendParameter(Isla.id); server.AppendParameter(Isla.nombre); server.AppendParameter(Isla.descripcion); server.AppendParameter(Isla.modelo); server.AppendParameter(Isla.uppert); server.AppendParameter(Isla.Creador.id); server.AppendParameter(Isla.Creador.nombre); server.AppendParameter(Isla.Creador.avatar); server.AppendParameter(Isla.Creador.colores); server.AppendParameter(Isla.mamigos_1); server.AppendParameter(Isla.mamigos_2); server.AppendParameter(Isla.mamigos_3); server.AppendParameter(Isla.mamigos_4); server.AppendParameter(Isla.mamigos_5); server.AppendParameter(Isla.mamigos_6); server.AppendParameter(Isla.mamigos_7); server.AppendParameter(Isla.mamigos_8); server.AppendParameter(Isla.noverlo_1); server.AppendParameter(Isla.noverlo_2); server.AppendParameter(Isla.noverlo_3); server.AppendParameter(Isla.noverlo_4); server.AppendParameter(Isla.noverlo_5); server.AppendParameter(Isla.noverlo_6); server.AppendParameter(Isla.noverlo_7); server.AppendParameter(Isla.noverlo_8); server.AppendParameter(Escenarios.Count); foreach (EscenarioInstance Escenario in Escenarios) { server.AppendParameter(0); server.AppendParameter(Escenario.es_categoria); server.AppendParameter(Escenario.id); server.AppendParameter(Escenario.id); server.AppendParameter(Escenario.nombre); server.AppendParameter(Escenario.modelo); server.AppendParameter(0); server.AppendParameter(0); server.AppendParameter(0); server.AppendParameter(SalasManager.UsuariosEnSala(Escenario));//Visitantes server.AppendParameter(0); if (Isla.noverlo_1.Contains(Session.User.nombre) || Isla.noverlo_2.Contains(Session.User.nombre) || Isla.noverlo_3.Contains(Session.User.nombre) || Isla.noverlo_4.Contains(Session.User.nombre) || Isla.noverlo_5.Contains(Session.User.nombre) || Isla.noverlo_6.Contains(Session.User.nombre) || Isla.noverlo_7.Contains(Session.User.nombre) || Isla.noverlo_8.Contains(Session.User.nombre)) { server.AppendParameter(1);//Usuario no puede acceder a la isla server.AppendParameter(1); } else { if (Isla.mamigos_1.Contains(Session.User.nombre) || Isla.mamigos_2.Contains(Session.User.nombre) || Isla.mamigos_3.Contains(Session.User.nombre) || Isla.mamigos_4.Contains(Session.User.nombre) || Isla.mamigos_5.Contains(Session.User.nombre) || Isla.mamigos_6.Contains(Session.User.nombre) || Isla.mamigos_7.Contains(Session.User.nombre) || Isla.mamigos_8.Contains(Session.User.nombre)) { server.AppendParameter(0); } else { server.AppendParameter((string.IsNullOrEmpty(Escenario.Clave) ? 0 : 1)); } } } } else { server.AppendParameter(0); } Session.SendData(server); }
static void Pathfinder() { while (true) { try { foreach (SessionInstance Session in UserManager.UsuariosOnline.Values.ToList()) { if (Session.User.Sala == null) { continue; } if (Session.User.Trayectoria == null) { continue; } if (Session.User.Trayectoria.Movimientos.Count == 0) { continue; } if (Session.User.PreLock_Interactuando == true) { continue; } if (Session.User.PreLock_Caminando == true) { continue; } if (Session.User.Sala.PathFinder == false) { continue; } if (Session.User.contar_pasos > 0) { Session.User.contar_pasos--; } Posicion SiguienteMovimiento = Session.User.Trayectoria.SiguienteMovimiento(); if (!Session.User.Trayectoria.MovementIsVerifield(SiguienteMovimiento)) { continue; } if (SiguienteMovimiento.y < Session.User.Sala.MapSizeY && SiguienteMovimiento.x < Session.User.Sala.MapSizeX) { if (Session.User.Sala.Caminable(SiguienteMovimiento)) { Session.User.Sala.Map[Session.User.Posicion.y, Session.User.Posicion.x].FijarSession(null); Session.User.PreLock_Caminando = true; Session.User.Posicion = SiguienteMovimiento; Session.User.Sala.Map[Session.User.Posicion.y, Session.User.Posicion.x].FijarSession(Session); ServerMessage server = new ServerMessage(); server.AddHead(182); server.AppendParameter(1); server.AppendParameter(Session.User.IDEspacial); server.AppendParameter(SiguienteMovimiento.x); server.AppendParameter(SiguienteMovimiento.y); server.AppendParameter(SiguienteMovimiento.z); server.AppendParameter(750); server.AppendParameter((Session.User.Trayectoria.Movimientos.Count >= 1 ? 1 : 0)); Session.User.Sala.SendData(server, Session); new Thread(() => ConcursosManager.BuscarObjetoCaido(Session, Session.User.Sala)).Start(); new Thread(() => TrampasManager.BuscarTrampa(Session)).Start(); new Thread(() => SalasManager.bosque_oso(Session)).Start(); if (Session.User.Sala.Sendero != null) { new Thread(() => Session.User.Sala.Sendero.VerificarMovimiento(Session)).Start(); } } else { Session.User.Trayectoria.Movimientos.Clear(); Session.User.Trayectoria.BuscarOtroSendero(); } } else { Session.User.Trayectoria.Movimientos.Clear(); Session.User.Trayectoria.BuscarOtroSendero(); } } } catch { continue; } Thread.Sleep(1); } }