Пример #1
0
        public void get_Combate_Info_Stats(ClienteTcp cliente, string paquete)
        {
            string[] array = paquete.Substring(4).Split(new char[]
            {
                '|'
            });
            Mapa mapa = cliente.cuenta.juego.mapa;

            for (int i = 0; i < array.Length; i++)
            {
                string[] array2 = array[i].Split(new char[]
                {
                    ';'
                });
                int        num        = int.Parse(array2[0]);
                Luchadores luchadores = cliente.cuenta.juego.pelea.get_Luchador_Por_Id(num);
                bool       flag       = array2.Length != 0;
                if (flag)
                {
                    bool flag2 = array2[1].Equals("0");
                    bool flag3 = flag2;
                    if (flag3)
                    {
                        int   vida_actual = int.Parse(array2[2]);
                        byte  pa          = byte.Parse(array2[3]);
                        byte  pm          = byte.Parse(array2[4]);
                        short num2        = short.Parse(array2[5]);
                        int   vida_maxima = int.Parse(array2[7]);
                        bool  flag4       = num2 > 0;
                        if (flag4)
                        {
                            byte equipo = Convert.ToByte((num > 0) ? 1 : 0);
                            if (luchadores != null)
                            {
                                luchadores.get_Actualizar_Luchador(num, flag2, vida_actual, pa, pm, mapa.get_Celda_Id(num2), vida_maxima, equipo);
                            }
                        }
                    }
                    else if (luchadores != null)
                    {
                        luchadores.get_Actualizar_Luchador(num, flag2, 0, 0, 0, null, 0, 0);
                    }
                }
            }
        }
Пример #2
0
        public Task get_Verificar_Archivo(ClienteTcp cliente, string paquete) => Task.Run(async() =>
        {
            string[] separador = paquete.Substring(2).Split(';');
            int id             = int.Parse(separador[0]), bytes = -1;
            string archivo     = separador[1];

            if (archivo.Contains("core.swf"))
            {
                bytes = GlobalConf.peso_core;
            }
            else if (archivo.Contains("loader.swf"))
            {
                bytes = GlobalConf.peso_loader;
            }

            await cliente.enviar_Paquete_Async($"BC{id};{bytes}", false);
            cliente.cuenta.logger.log_Error("ANTI-BOT", $"Se ha revisado el archivo: {archivo}");
        });
Пример #3
0
        public void get_Combate_Unirse_Pelea(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            //GJK - estado|boton_cancelar|mostrat_botones|espectador|tiempo|tipo_pelea
            string[] separador    = paquete.Substring(3).Split('|');
            byte     estado_pelea = byte.Parse(separador[0]);

            switch (estado_pelea)
            {
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
                cuenta.juego.pelea.get_Combate_Creado();
                break;
            }
        }
Пример #4
0
        public void get_Skills_Oficio(ClienteTcp cliente, string paquete)
        {
            string[]       separador_skill;
            PersonajeJuego personaje = cliente.cuenta.juego.personaje;
            Oficio         oficio;
            SkillsOficio   skill = null;
            short          id_oficio, id_skill;
            byte           cantidad_minima, cantidad_maxima;
            float          tiempo;

            foreach (string datos_oficio in paquete.Substring(3).Split('|'))
            {
                id_oficio = short.Parse(datos_oficio.Split(';')[0]);
                oficio    = personaje.oficios.Find(x => x.id == id_oficio);

                if (oficio == null)
                {
                    oficio = new Oficio(id_oficio);
                    personaje.oficios.Add(oficio);
                }

                foreach (string datos_skill in datos_oficio.Split(';')[1].Split(','))
                {
                    separador_skill = datos_skill.Split('~');
                    id_skill        = short.Parse(separador_skill[0]);
                    cantidad_minima = byte.Parse(separador_skill[1]);
                    cantidad_maxima = byte.Parse(separador_skill[2]);
                    tiempo          = float.Parse(separador_skill[4]);
                    skill           = oficio.skills.Find(actividad => actividad.id == id_skill);

                    if (skill != null)
                    {
                        skill.set_Actualizar(id_skill, cantidad_minima, cantidad_maxima, tiempo);
                    }
                    else
                    {
                        oficio.skills.Add(new SkillsOficio(id_skill, cantidad_minima, cantidad_maxima, tiempo));
                    }
                }
            }

            personaje.evento_Oficios_Actualizados();
        }
Пример #5
0
        // Token: 0x060000AF RID: 175 RVA: 0x00003EEC File Offset: 0x000022EC
        public void desconectar()
        {
            ClienteTcp conexion = this.conexion;

            if (conexion != null)
            {
                conexion.Dispose();
            }
            this.conexion = null;
            this.script.detener_Script("script");
            this.juego.limpiar();
            this.Estado_Cuenta = EstadoCuenta.DESCONECTADO;
            Action action = this.cuenta_desconectada;

            if (action != null)
            {
                action();
            }
        }
Пример #6
0
        public Task get_Emote_Recibido(ClienteTcp cliente, string paquete) => Task.Run(() =>
        {
            string[] separador = paquete.Substring(3).Split('|');
            int id             = int.Parse(separador[0]), emote_id = int.Parse(separador[1]);
            Cuenta cuenta      = cliente.cuenta;

            if (cuenta.juego.personaje.id != id)
            {
                return;
            }

            if (emote_id == 1 && cuenta.Estado_Cuenta != EstadoCuenta.REGENERANDO)
            {
                cuenta.Estado_Cuenta = EstadoCuenta.REGENERANDO;
            }
            else if (emote_id == 0 && cuenta.Estado_Cuenta == EstadoCuenta.REGENERANDO)
            {
                cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
            }
        });
Пример #7
0
        public Task get_Combate_Info_Stats(ClienteTcp cliente, string paquete) => Task.Factory.StartNew(() =>
        {
            Cuenta cuenta = cliente.cuenta;
            if (!cuenta.esta_Luchando())
            {
                return;
            }

            string[] monstruos = paquete.Substring(4).Split('|');
            Mapa mapa          = cliente.cuenta.juego.mapa;

            foreach (string monstruo in monstruos)
            {
                string[] _loc6_     = monstruo.Split(';');
                int id              = int.Parse(_loc6_[0]);
                Luchadores luchador = cuenta.juego.pelea.get_Luchador_Por_Id(id);

                if (_loc6_.Length > 0 && luchador != null)
                {
                    bool esta_vivo = _loc6_[1].Equals("0");
                    if (esta_vivo)
                    {
                        int vida_actual = int.Parse(_loc6_[2]);
                        byte pa         = byte.Parse(_loc6_[3]);
                        byte pm         = byte.Parse(_loc6_[4]);
                        short celda     = short.Parse(_loc6_[5]);
                        int vida_maxima = int.Parse(_loc6_[7]);

                        if (celda > 0)//son espectadores
                        {
                            luchador.vida_actual = vida_actual;
                            luchador.vida_maxima = vida_maxima;
                            luchador.pa          = pa;
                            luchador.pm          = pm;
                            luchador.celda       = mapa.get_Celda_Id(celda);
                        }
                    }
                    luchador.esta_vivo = esta_vivo;
                }
            }
        }, TaskCreationOptions.LongRunning);
Пример #8
0
        public void get_Mensaje_Ultima_Conexion_IP(ClienteTcp cliente, string paquete)
        {
            string text = paquete.Substring(3).Split(new char[]
            {
                ';'
            })[1];

            cliente.cuenta.logger.log_informacion("DOFUS", string.Concat(new string[]
            {
                "Dernière connexion à votre compte effectuée le ",
                text.Split(new char[]
                {
                    '~'
                })[0],
                "/",
                text.Split(new char[]
                {
                    '~'
                })[1],
                "/",
                text.Split(new char[]
                {
                    '~'
                })[2],
                " à ",
                text.Split(new char[]
                {
                    '~'
                })[3],
                ":",
                text.Split(new char[]
                {
                    '~'
                })[4],
                " avec l'ip ",
                text.Split(new char[]
                {
                    '~'
                })[5]
            }));
        }
Пример #9
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);
            }
        }
Пример #10
0
        public void get_Cerrar_Dialogo(ClienteTcp cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            switch (cuenta.Estado_Cuenta)
            {
            case EstadoCuenta.ALMACENAMIENTO:
                cuenta.juego.personaje.inventario.evento_Almacenamiento_Abierto();
                break;

            case EstadoCuenta.DIALOGANDO:
                IEnumerable <Npcs> npcs = cuenta.juego.mapa.lista_npcs();
                Npcs npc = npcs.ElementAt((cuenta.juego.personaje.hablando_npc_id * -1) - 1);
                npc.respuestas.Clear();
                npc.respuestas = null;

                cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
                cuenta.juego.personaje.evento_Dialogo_Acabado();
                break;
            }
        }
Пример #11
0
        public Task get_Error_Baneado_Tiempo(ClienteTcp cliente, string paquete) => Task.Run(() =>
        {
            string[] informacion_ban = paquete.Substring(3).Split('|');
            int dias = int.Parse(informacion_ban[0].Substring(1)), horas = int.Parse(informacion_ban[1]), minutos = int.Parse(informacion_ban[2]);
            StringBuilder mensaje = new StringBuilder().Append("Tu cuenta estará inválida durante ");

            if (dias > 0)
            {
                mensaje.Append(dias + " días");
            }
            if (horas > 0)
            {
                mensaje.Append(horas + " con horas");
            }
            if (minutos > 0)
            {
                mensaje.Append(minutos + " y minutos");
            }

            cliente.cuenta.logger.log_Error("LOGIN", mensaje.ToString());
        });
Пример #12
0
        public Task get_Lista_Respuestas(ClienteTcp cliente, string paquete) => Task.Run(() =>
        {
            Cuenta cuenta = cliente.cuenta;

            string[] pregunta_separada = paquete.Substring(2).Split('|');
            List <short> respuestas    = new List <short>(0);

            if (pregunta_separada.Count() > 1)
            {
                string[] respuestas_disponibles = pregunta_separada[1].Split(';');
                respuestas = new List <short>(respuestas_disponibles.Count());

                foreach (string respuesta in respuestas_disponibles)
                {
                    respuestas.Add(short.Parse(respuesta));
                }
            }

            short pregunta = short.Parse(pregunta_separada[0]);
            cuenta.juego.npcs.get_Respuestas_Recibidas(pregunta, respuestas);
        });
Пример #13
0
        public void get_Estado_Interactivo(ClienteTcp cliente, string paquete)
        {
            foreach (string text in paquete.Substring(4).Split(new char[]
            {
                '|'
            }))
            {
                string[] array2 = text.Split(new char[]
                {
                    ';'
                });
                Cuenta cuenta = cliente.cuenta;
                short  num    = short.Parse(array2[0]);
                switch (byte.Parse(array2[1]))
                {
                case 2:
                    cuenta.juego.mapa.interactivos[(int)num].es_utilizable = false;
                    break;

                case 3:
                {
                    cuenta.juego.mapa.interactivos[(int)num].es_utilizable = false;
                    bool flag = cuenta.esta_recolectando();
                    if (flag)
                    {
                        cuenta.juego.manejador.recoleccion.evento_Recoleccion_Acabada(RecoleccionResultado.RECOLECTADO, num);
                    }
                    else
                    {
                        cuenta.juego.manejador.recoleccion.evento_Recoleccion_Acabada(RecoleccionResultado.ROBADO, num);
                    }
                    break;
                }

                case 4:
                    cuenta.juego.mapa.interactivos[(int)num].es_utilizable = false;
                    break;
                }
            }
        }
Пример #14
0
        private void cargar_Eventos_Debugger(ClienteTcp socket)
        {
            switch (socket.Estado_Socket)
            {
            case EstadoSocket.CAMBIANDO_A_JUEGO:
                agregar_Tab_Pagina("Personaje", new UI_Personaje(cuenta), 2);
                agregar_Tab_Pagina("Inventario", new UI_Inventario(cuenta), 3);

                cuenta.juego.personaje.caracteristicas_actualizadas += personaje_Caracteristicas_Actualizadas;
                cuenta.juego.personaje.pods_actualizados            += personaje_Pods_Actualizados;
                break;

            case EstadoSocket.CONECTADO:
                cuenta.pelea_extension.configuracion.cargar();
                agregar_Tab_Pagina("Mapa", new UI_Mapa(cuenta), 4);
                agregar_Tab_Pagina("Combates", new UI_Pelea(cuenta), 5);

                cambiar_Todos_Controles_Chat(true);
                cargar_Canales_Chat();
                break;
            }
        }
Пример #15
0
        public Task get_Peticion_Grupo(ClienteTcp cliente, string paquete) => Task.Run(async() =>
        {
            Cuenta cuenta           = cliente.cuenta;
            string nombre_invitador = paquete.Substring(3).Split('|')[0];

            if (nombre_invitador.Equals(cuenta.juego.personaje.nombre))
            {
                return;
            }

            if (cuenta.tiene_grupo)
            {
                cuenta.grupo.get_Esta_En_Grupo(nombre_invitador);
                await cliente.enviar_Paquete_Async("PA");
            }
            else
            {
                await cliente.enviar_Paquete_Async("PR");
            }

            cliente.cuenta.logger.log_informacion("Grupo", $"Nueva invitación de grupo del personaje: {nombre_invitador}");
        });
Пример #16
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;
        }
Пример #17
0
        public void get_Error_Baneado_Tiempo(ClienteTcp cliente, string paquete)
        {
            string[]      informacion_ban = paquete.Substring(3).Split('|');
            int           dias = int.Parse(informacion_ban[0].Substring(1)), horas = int.Parse(informacion_ban[1]), minutos = int.Parse(informacion_ban[2]);
            StringBuilder mensaje = new StringBuilder().Append("Votre compte sera invalide pendant ");

            if (dias > 0)
            {
                mensaje.Append(dias + " jour(s)");
            }
            if (horas > 0)
            {
                mensaje.Append(horas + " heures");
            }
            if (minutos > 0)
            {
                mensaje.Append(minutos + " minutes");
            }

            cliente.cuenta.logger.log_Error("LOGIN", mensaje.ToString());
            cliente.cuenta.desconectar();
        }
        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 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++;
            }
        }
Пример #20
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++;
            }
        }
Пример #21
0
        public void get_Cerrar_Dialogo(ClienteTcp cliente, string paquete)
        {
            Cuenta       cuenta        = cliente.cuenta;
            EstadoCuenta estado_Cuenta = cuenta.Estado_Cuenta;
            EstadoCuenta estadoCuenta  = estado_Cuenta;

            if (estadoCuenta != EstadoCuenta.DIALOGANDO)
            {
                if (estadoCuenta == EstadoCuenta.ALMACENAMIENTO)
                {
                    cuenta.juego.personaje.inventario.evento_Almacenamiento_Abierto();
                }
            }
            else
            {
                IEnumerable <Npcs> source = cuenta.juego.mapa.lista_npcs();
                Npcs npcs = source.ElementAt((int)(cuenta.juego.personaje.hablando_npc_id * -1 - 1));
                npcs.respuestas.Clear();
                npcs.respuestas      = null;
                cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
                cuenta.juego.personaje.evento_Dialogo_Acabado();
            }
        }
Пример #22
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;
        }
Пример #23
0
        public void get_Estado_Interactivo(ClienteTcp cliente, string paquete)
        {
            foreach (string interactivo in paquete.Substring(4).Split('|'))
            {
                string[] separador = interactivo.Split(';');
                Cuenta   cuenta    = cliente.cuenta;
                short    celda_id  = short.Parse(separador[0]);
                byte     estado    = byte.Parse(separador[1]);

                switch (estado)
                {
                case 2:
                    cuenta.juego.mapa.interactivos[celda_id].es_utilizable = false;
                    break;

                case 3:
                    if (cuenta.juego.mapa.interactivos.TryGetValue(celda_id, out var value))
                    {
                        value.es_utilizable = false;
                    }

                    if (cuenta.esta_recolectando())
                    {
                        cuenta.juego.manejador.recoleccion.evento_Recoleccion_Acabada(RecoleccionResultado.RECOLECTADO, celda_id);
                    }
                    else
                    {
                        cuenta.juego.manejador.recoleccion.evento_Recoleccion_Acabada(RecoleccionResultado.ROBADO, celda_id);
                    }
                    break;

                case 4:    // reaparece asi se fuerza el cambio de mapa
                    cuenta.juego.mapa.interactivos[celda_id].es_utilizable = false;
                    break;
                }
            }
        }
Пример #24
0
 public void get_Mensaje_Pods_Llenos(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_Error("DOFUS", "Tu es trop chargé. Jetez quelques objets pour pouvoir bouger.");
Пример #25
0
 public void get_Mensaje_Modo_Away_Dofus(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_informacion("DOFUS", "Désormais, tu seras considéré comme absent.");
Пример #26
0
 public void get_Mensaje_Error_Chat_Difusion(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_informacion("DOFUS", "Ce canal est seulement disponible aux abonnés de niveau " + paquete.Split(';')[1]);
Пример #27
0
 public void get_Mensaje_Mascota_Feliz(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_informacion("DOFUS", "Votre animal est si heureux de vous revoir !");
Пример #28
0
 public void get_Mensaje_Abrir_Cofre_Perder_Kamas(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_informacion("DOFUS", "Vous avez dû donner " + paquete.Split(';')[1] + " kamas pour accéder à ce coffre.");
Пример #29
0
 public void get_Mensaje_Nueva_Conexion_IP(ClienteTcp cliente, string paquete) => cliente.cuenta.logger.log_informacion("DOFUS", "Votre adresse IP actuelle est " + paquete.Substring(3).Split(';')[1]);
Пример #30
0
        public void get_Mensaje_Ultima_Conexion_IP(ClienteTcp cliente, string paquete)
        {
            string mensaje = paquete.Substring(3).Split(';')[1];

            cliente.cuenta.logger.log_informacion("DOFUS", "Dernière connexion à votre compte effectuée le " + mensaje.Split('~')[0] + "/" + mensaje.Split('~')[1] + "/" + mensaje.Split('~')[2] + " à " + mensaje.Split('~')[3] + ":" + mensaje.Split('~')[4] + " adresse IP " + mensaje.Split('~')[5]);
        }