예제 #1
0
        public void get_Combate_Celdas_Posicion(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;
            Mapa   mapa   = cuenta.juego.mapa;

            string[] _loc3 = paquete.Substring(2).Split('|');

            for (int a = 0; a < _loc3[0].Length; a += 2)
            {
                cuenta.juego.pelea.celdas_preparacion.Add(mapa.get_Celda_Id((short)((Hash.get_Hash(_loc3[0][a]) << 6) + Hash.get_Hash(_loc3[0][a + 1]))));
            }

            if (cuenta.pelea_extension.configuracion.desactivar_espectador)
            {
                cliente.enviar_Paquete("fS");
            }

            if (cuenta.puede_utilizar_dragopavo)
            {
                if (cuenta.pelea_extension.configuracion.utilizar_dragopavo && !cuenta.juego.personaje.esta_utilizando_dragopavo)
                {
                    cliente.enviar_Paquete("Rr");
                    cuenta.juego.personaje.esta_utilizando_dragopavo = true;
                }
            }
        }
예제 #2
0
        public void get_Combate_Celdas_Posicion(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;
            Mapa   mapa   = cuenta.juego.mapa;

            string[] array = paquete.Substring(2).Split(new char[]
            {
                '|'
            });
            for (int i = 0; i < array[0].Length; i += 2)
            {
                cuenta.juego.pelea.celdas_preparacion.Add(mapa.get_Celda_Id((short)(((int)Hash.get_Hash(array[0][i]) << 6) + (int)Hash.get_Hash(array[0][i + 1]))));
            }
            bool desactivar_espectador = cuenta.pelea_extension.configuracion.desactivar_espectador;

            if (desactivar_espectador)
            {
                cliente.enviar_Paquete("fS", false);
            }
            bool puede_utilizar_dragopavo = cuenta.puede_utilizar_dragopavo;

            if (puede_utilizar_dragopavo)
            {
                bool flag = cuenta.pelea_extension.configuracion.utilizar_dragopavo && !cuenta.juego.personaje.esta_utilizando_dragopavo;
                if (flag)
                {
                    cliente.enviar_Paquete("Rr", false);
                    cuenta.juego.personaje.esta_utilizando_dragopavo = true;
                }
            }
        }
예제 #3
0
        public void get_Key_BienvenidaAsync(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            cuenta.Estado_Cuenta  = EstadoCuenta.CONECTANDO;
            cuenta.key_bienvenida = paquete.Substring(2);
            cliente.enviar_Paquete("1.30.0", false);
            cliente.enviar_Paquete(cliente.cuenta.configuracion.nombre_cuenta + "\n" + Hash.encriptar_Password(cliente.cuenta.configuracion.password, cliente.cuenta.key_bienvenida), false);
            cliente.enviar_Paquete("Af", false);
        }
예제 #4
0
        public async Task get_Cambiar_Pos_Pelea(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] separador_posiciones = paquete.Substring(4).Split('|');
            int      id_entidad;
            short    celda;
            Mapa     mapa = cuenta.juego.mapa;

            foreach (string posicion in separador_posiciones)
            {
                id_entidad = int.Parse(posicion.Split(';')[0]);
                celda      = short.Parse(posicion.Split(';')[1]);

                if (id_entidad == cuenta.juego.personaje.id)
                {
                    await Task.Delay(150);

                    cliente.enviar_Paquete("GR1");//boton listo
                }

                Luchadores luchador = cuenta.juego.pelea.get_Luchador_Por_Id(id_entidad);
                if (luchador != null)
                {
                    luchador.celda = mapa.get_Celda_Id(celda);
                }
            }
        }
예제 #5
0
        public void get_Servidores_Lista(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] loc5         = paquete.Substring(3).Split('|');
            int      contador     = 1;
            bool     seleccionado = false;

            while (contador < loc5.Length && !seleccionado)
            {
                string[] _loc10_     = loc5[contador].Split(',');
                int      servidor_id = int.Parse(_loc10_[0]);

                if (servidor_id == cuenta.juego.servidor.id)
                {
                    if (cuenta.juego.servidor.estado == EstadosServidor.CONECTADO)
                    {
                        seleccionado = true;
                        cuenta.juego.personaje.evento_Servidor_Seleccionado();
                    }
                    else
                    {
                        cuenta.logger.log_Error("LOGIN", "Servidor no accesible cuando este accesible se re-conectara");
                    }
                }
                contador++;
            }

            if (seleccionado)
            {
                cliente.enviar_Paquete($"AX{cuenta.juego.servidor.id}", true);
            }
        }
예제 #6
0
        public void get_Servidor_Estado(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] _loc5_    = paquete.Substring(2).Split('|');
            int      _loc6_    = 0;
            bool     accesible = true;

            while (_loc6_ < _loc5_.Length && accesible)
            {
                string[] _loc7_    = _loc5_[_loc6_].ToString().Split(';');
                int      id        = int.Parse(_loc7_[0]);
                byte     estado    = byte.Parse(_loc7_[1]);
                byte     poblacion = byte.Parse(_loc7_[2]);
                bool     registro  = _loc7_[3] == "1";

                cliente.cuenta.logger.log_informacion("LOGIN", "El servidor " + (id == 601 ? "Eratz" : "Henual") + " esta " + (EstadosServidor)estado);

                if (id == cuenta.servidor_id && estado != 1)
                {
                    cliente.cuenta.logger.log_Error("LOGIN", "Servidor no accesible cuando este accesible se re-conectara");
                    accesible = false;
                }

                _loc6_++;
            }

            if (accesible)
            {
                cliente.enviar_Paquete("Ax");
            }
        }
예제 #7
0
        public void get_Servidor_Estado(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[]      separado_servidores = paquete.Substring(2).Split('|');
            ServidorJuego servidor            = cuenta.juego.servidor;
            bool          primera_vez         = true;

            foreach (string sv in separado_servidores)
            {
                string[] separador = sv.Split(';');

                int             id     = int.Parse(separador[0]);
                EstadosServidor estado = (EstadosServidor)byte.Parse(separador[1]);
                string          nombre = id == 601 ? "Eratz" : "Henual";

                if (id == cuenta.configuracion.get_Servidor_Id())
                {
                    servidor.actualizar_Datos(id, nombre, estado);
                    cuenta.logger.log_informacion("LOGIN", $"El servidor {nombre} esta {estado}");

                    if (estado != EstadosServidor.CONECTADO)
                    {
                        primera_vez = false;
                    }
                }
            }

            if (!primera_vez && servidor.estado == EstadosServidor.CONECTADO)
            {
                cliente.enviar_Paquete("Ax");
            }
        }
        public void seleccionar_Personaje(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] array = paquete.Substring(3).Split(new char[]
            {
                '|'
            });
            int  num  = 2;
            bool flag = false;

            while (num < array.Length && !flag)
            {
                string[] array2 = array[num].Split(new char[]
                {
                    ';'
                });
                int    num2  = int.Parse(array2[0]);
                string text  = array2[1];
                bool   flag2 = text.ToLower().Equals(cuenta.configuracion.nombre_personaje.ToLower()) || string.IsNullOrEmpty(cuenta.configuracion.nombre_personaje);
                if (flag2)
                {
                    cliente.enviar_Paquete("AS" + num2.ToString(), true);
                    flag = true;
                }
                num++;
            }
        }
예제 #9
0
 public void get_Pregunta_Secreta(ClienteTcp cliente, string paquete)
 {
     if (cliente.cuenta.juego.servidor.estado == EstadosServidor.CONECTADO)
     {
         cliente.enviar_Paquete("Ax", true);
     }
 }
예제 #10
0
        public void get_Combate_Finalizado(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            cuenta.juego.pelea.get_Combate_Acabado();
            cliente.enviar_Paquete("GC1");
        }
예제 #11
0
        public async Task get_Error_Cambiar_Pos_Pelea(ClienteTcp cliente, string paquete)
        {
            if (cliente.cuenta.esta_luchando())
            {
                await Task.Delay(150);

                cliente.enviar_Paquete("GR1");//boton listo
            }
        }
예제 #12
0
 public void get_Peticion_Grupo(ClienteTcp cliente, string paquete)
 {
     cliente.cuenta.logger.log_informacion("Grupo", "Nouvelle invitation de groupe de personnages: " + paquete.Substring(3).Split(new char[]
     {
         '|'
     })[0]);
     cliente.enviar_Paquete("PR", false);
     cliente.cuenta.logger.log_informacion("Grupo", "Invitation rejeté");
 }
예제 #13
0
        public async Task get_Error_Cambiar_Pos_Pelea(ClienteTcp cliente, string paquete)
        {
            bool flag = cliente.cuenta.esta_luchando();

            if (flag)
            {
                await Task.Delay(150);

                cliente.enviar_Paquete("GR1", false);
            }
        }
예제 #14
0
        public void personaje_Seleccionado(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] _loc4 = paquete.Substring(4).Split('|');

            int    id      = int.Parse(_loc4[0]);
            string nombre  = _loc4[1];
            byte   nivel   = byte.Parse(_loc4[2]);
            byte   raza_id = byte.Parse(_loc4[3]);
            byte   sexo    = byte.Parse(_loc4[4]);

            cuenta.juego.personaje.set_Datos_Personaje(id, nombre, nivel, sexo, raza_id);
            cuenta.juego.personaje.inventario.agregar_Objetos(_loc4[9]);

            cliente.enviar_Paquete("GC1");
            cliente.enviar_Paquete("BYA");

            cuenta.juego.personaje.evento_Personaje_Seleccionado();
            cuenta.juego.personaje.timer_afk.Change(1200000, 1200000);
            cliente.cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
        }
예제 #15
0
        public void get_Servidores_Lista(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] array = paquete.Substring(3).Split(new char[]
            {
                '|'
            });
            int  num  = 1;
            bool flag = false;

            while (num < array.Length && !flag)
            {
                string[] array2 = array[num].Split(new char[]
                {
                    ','
                });
                int  num2  = int.Parse(array2[0]);
                bool flag2 = num2 == cuenta.juego.servidor.id;
                if (flag2)
                {
                    bool flag3 = cuenta.juego.servidor.estado == EstadosServidor.CONNECTE;
                    if (flag3)
                    {
                        flag = true;
                        cuenta.juego.personaje.evento_Servidor_Seleccionado();
                    }
                    else
                    {
                        cuenta.logger.log_Error("LOGIN", "Serveur non accessible");
                    }
                }
                num++;
            }
            bool flag4 = flag;

            if (flag4)
            {
                cliente.enviar_Paquete(string.Format("AX{0}", cuenta.juego.servidor.id), true);
            }
        }
예제 #16
0
        public void seleccionar_Personaje(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] _loc6_     = paquete.Substring(3).Split('|');
            int      contador   = 2;
            bool     encontrado = false;

            while (contador < _loc6_.Length && !encontrado)
            {
                string[] _loc11_ = _loc6_[contador].Split(';');
                int      id      = int.Parse(_loc11_[0]);
                string   nombre  = _loc11_[1];

                if (nombre.ToLower().Equals(cuenta.configuracion.nombre_personaje.ToLower()) || string.IsNullOrEmpty(cuenta.configuracion.nombre_personaje))
                {
                    cliente.enviar_Paquete("AS" + id, true);
                    encontrado = true;
                }

                contador++;
            }
        }
예제 #17
0
        public void get_Servidores_Lista(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] loc5         = paquete.Substring(3).Split('|');
            int      contador     = 1;
            bool     seleccionado = false;

            while (contador < loc5.Length && !seleccionado)
            {
                string[] _loc10_  = loc5[contador].Split(',');
                int      servidor = int.Parse(_loc10_[0]);
                int      numero_total_personajes = int.Parse(_loc10_[1]);

                if (cuenta.servidor_id == servidor)
                {
                    cliente.enviar_Paquete("AX" + cuenta.servidor_id);
                    seleccionado = true;
                }

                contador++;
            }
        }
        public void seleccionar_Personaje(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] _loc6_     = paquete.Substring(3).Split('|');
            int      contador   = 2;
            bool     encontrado = false;

            while (contador < _loc6_.Length && !encontrado)
            {
                string[] _loc11_ = _loc6_[contador].Split(';');
                int      id      = int.Parse(_loc11_[0]);
                string   nombre  = _loc11_[1];

                if (string.Compare(nombre.ToUpper(), cuenta.cuenta_configuracion.nombre_personaje.ToUpper(), false) == 0)
                {
                    cliente.enviar_Paquete("AS" + id);
                    encontrado = true;
                }

                contador++;
            }
        }
예제 #19
0
        public async Task get_Cambiar_Pos_Pelea(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] separador_posiciones = paquete.Substring(4).Split(new char[]
            {
                '|'
            });
            Mapa mapa = cuenta.juego.mapa;

            foreach (string posicion in separador_posiciones)
            {
                int id_entidad = int.Parse(posicion.Split(new char[]
                {
                    ';'
                })[0]);
                short celda = short.Parse(posicion.Split(new char[]
                {
                    ';'
                })[1]);
                bool flag = id_entidad == cuenta.juego.personaje.id;
                if (flag)
                {
                    await Task.Delay(150);

                    cliente.enviar_Paquete("GR1", false);
                }
                Luchadores luchador = cuenta.juego.pelea.get_Luchador_Por_Id(id_entidad);
                if (luchador != null)
                {
                    luchador.celda = mapa.get_Celda_Id(celda);
                }
                luchador = null;
                posicion = null;
            }
            string[] array = null;
        }
예제 #20
0
 public void get_Peticion_Intercambio(ClienteTcp cliente, string paquete)
 {
     cliente.cuenta.logger.log_informacion("INFORMACIÓN", "Invitación de intercambio recibida, rechazando");
     cliente.enviar_Paquete("EV");
 }
예제 #21
0
 public void get_Tiempo_Servidor(ClienteTcp cliente, string paquete) => cliente.enviar_Paquete("GI");
예제 #22
0
 public void lista_Personajes(ClienteTcp cliente, string paquete)
 {
     cliente.enviar_Paquete("Ages");
     cliente.enviar_Paquete("AL");
     cliente.enviar_Paquete("Af");
 }
예제 #23
0
 public void resultado_Servidor_Seleccion(ClienteTcp cliente, string paquete)
 {
     cliente.enviar_Paquete("Ak0");
     cliente.enviar_Paquete("AV");
 }
예제 #24
0
 public Task get_Ping_Promedio(ClienteTcp cliente, string paquete) => Task.Run(() => cliente.enviar_Paquete($"Bp{cliente.get_Promedio_Pings()}|{cliente.get_Total_Pings()}|50"));
예제 #25
0
 public void get_Peticion_Grupo(ClienteTcp cliente, string paquete)
 {
     cliente.cuenta.logger.log_informacion("Grupo", "Nueva invitación de grupo del personaje: " + paquete.Substring(3).Split('|')[0]);
     cliente.enviar_Paquete("PR");
     cliente.cuenta.logger.log_informacion("Grupo", "Petición rechazada");
 }
예제 #26
0
        public void get_Servidor_Estado(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] array = paquete.Substring(2).Split(new char[]
            {
                '|'
            });
            ServidorJuego servidor = cuenta.juego.servidor;
            bool          flag     = true;

            foreach (string text in array)
            {
                string[] array3 = text.Split(new char[]
                {
                    ';'
                });
                int    num   = int.Parse(array3[0]);
                string text2 = "Issering";
                switch (num)
                {
                case 601:
                    text2 = "Eratz";
                    break;

                case 602:
                    text2 = "Henual";
                    break;

                case 603:
                    text2 = "Nabur";
                    break;

                case 604:
                    text2 = "Arty";
                    break;

                case 605:
                    text2 = "Algathe";
                    break;

                case 606:
                    text2 = "Hogmeiser";
                    break;

                case 607:
                    text2 = "Droupik";
                    break;

                case 608:
                    text2 = "Ayuto";
                    break;

                case 609:
                    text2 = "Bilby";
                    break;

                case 610:
                    text2 = "Clustus";
                    break;

                case 611:
                    text2 = "Issering";
                    break;
                }
                EstadosServidor estadosServidor = (EstadosServidor)byte.Parse(array3[1]);
                bool            flag2           = num == cuenta.configuracion.get_Servidor_Id();
                if (flag2)
                {
                    servidor.actualizar_Datos(num, text2, estadosServidor);
                    cuenta.logger.log_informacion("LOGIN", string.Format("Le serveur {0} est {1}", text2, estadosServidor));
                    bool flag3 = estadosServidor != EstadosServidor.CONNECTE;
                    if (flag3)
                    {
                        flag = false;
                    }
                }
            }
            Console.WriteLine("servidor.estado");
            Console.WriteLine(flag);
            bool flag4 = !flag && servidor.estado == EstadosServidor.CONNECTE;

            if (flag4)
            {
                cliente.enviar_Paquete("Ax", false);
            }
        }
예제 #27
0
 public void get_Peticion_Grupo(ClienteTcp cliente, string paquete)
 {
     cliente.cuenta.logger.log_informacion("Groupe", $"Nouvelle invitation de groupe du personnage: {paquete.Substring(3).Split('|')[0]}");
     cliente.enviar_Paquete("PR");
     cliente.cuenta.logger.log_informacion("Groupe", "Rejêt de l'invitation");
 }
예제 #28
0
 public void get_Ping_Promedio(ClienteTcp cliente, string paquete) => cliente.enviar_Paquete($"Bp{cliente.get_Promedio_Pings()}|{cliente.get_Total_Pings()}|50");
예제 #29
0
 public void get_Peticion_Intercambio(ClienteTcp cliente, string paquete)
 {
     cliente.cuenta.logger.log_informacion("INFORMATION", "L'invitation à l'échange est rejetée");
     cliente.enviar_Paquete("EV", true);
 }
예제 #30
0
 public void bienvenida_Juego(ClienteTcp cliente, string paquete) => cliente.enviar_Paquete("AT" + cliente.cuenta.tiquet_game);