Exemplo n.º 1
0
 public void get_Stats_Actualizados(ClienteAbstracto cliente, string paquete)
 {
     if (cliente.cuenta.personaje != null)
     {
         cliente.cuenta.personaje.actualizar_Caracteristicas(paquete);
     }
 }
Exemplo n.º 2
0
 public void get_Lista_Hechizos(ClienteAbstracto cliente, string paquete)
 {
     if (!paquete[2].Equals('o'))
     {
         cliente.cuenta.personaje.actualizar_Hechizos(paquete.Substring(2));
     }
 }
Exemplo n.º 3
0
        public void get_Experiencia_Oficio(ClienteAbstracto cliente, string paquete)
        {
            string[]  separador_oficio_experiencia = paquete.Substring(3).Split('|');
            Personaje personaje = cliente.cuenta.personaje;
            uint      experiencia_actual, experiencia_base, experiencia_siguiente_nivel;
            short     id;
            byte      nivel;

            foreach (string oficio in separador_oficio_experiencia)
            {
                id                 = short.Parse(oficio.Split(';')[0]);
                nivel              = byte.Parse(oficio.Split(';')[1]);
                experiencia_base   = uint.Parse(oficio.Split(';')[2]);
                experiencia_actual = uint.Parse(oficio.Split(';')[3]);

                if (nivel < 100)
                {
                    experiencia_siguiente_nivel = uint.Parse(oficio.Split(';')[4]);
                }
                else
                {
                    experiencia_siguiente_nivel = 0;
                }

                personaje.oficios.Find(x => x.id == id).set_Actualizar_Oficio(nivel, experiencia_base, experiencia_actual, experiencia_siguiente_nivel);
            }
            personaje.evento_Oficios_Actualizados();
        }
Exemplo n.º 4
0
        public void get_Combate_Celdas_Posicion(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

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

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

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

            if (cuenta.puede_utilizar_dragopavo)
            {
                if (cuenta.pelea_extension.configuracion.utilizar_dragopavo && !cuenta.personaje.esta_utilizando_dragopavo)
                {
                    cuenta.conexion.enviar_Paquete("Rr");
                    cuenta.personaje.esta_utilizando_dragopavo = true;
                }
            }
            cuenta.pelea.get_Combate_Creado();
        }
Exemplo n.º 5
0
        private void cargar_Eventos_Debugger(ClienteAbstracto socket)
        {
            switch (cuenta.Estado_Socket)
            {
            case EstadoSocket.CAMBIANDO_A_JUEGO:
                socket.paquete_recibido   += debugger.paquete_Recibido;
                socket.paquete_enviado    += debugger.paquete_Enviado;
                socket.socket_informacion += get_Mensajes_Socket_Informacion;
                break;

            case EstadoSocket.PERSONAJE_SELECCIONADO:
                cuenta.pelea_extension.configuracion.cargar();
                agregar_Tab_Pagina("Personaje", new UI_Personaje(cuenta), 2);
                agregar_Tab_Pagina("Inventario", new UI_Inventario(cuenta), 3);
                agregar_Tab_Pagina("Mapa", new UI_Mapa(cuenta), 4);
                agregar_Tab_Pagina("Combates", new UI_Pelea(cuenta), 5);
                cambiar_Todos_Controles_Chat(true);
                cuenta.personaje.socket_canal_personaje       += socket_Evento_Chat;
                cuenta.personaje.caracteristicas_actualizadas += personaje_Caracteristicas_Actualizadas;
                cuenta.personaje.pods_actualizados            += personaje_Pods_Actualizados;

                cuenta.script = new ManejadorScript(cuenta);
                cuenta.script.evento_script_cargado  += evento_Scripts_Cargado;
                cuenta.script.evento_script_iniciado += evento_Scripts_Iniciado;
                cuenta.script.evento_script_detenido += evento_Scripts_Detenido;
                break;
            }
        }
Exemplo n.º 6
0
        public void get_Combate_Finalizado(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            cuenta.pelea.get_Combate_Finalizado();
            cuenta.conexion.enviar_Paquete("BD");
        }
Exemplo n.º 7
0
 public void get_Cerrar_Dialogo(ClienteAbstracto cliente, string paquete)
 {
     if (cliente.cuenta.Estado_Cuenta == EstadoCuenta.ALMACENAMIENTO)//Banco
     {
         cliente.cuenta.personaje.inventario.evento_Almacenamiento_Abierto();
     }
 }
 public void get_Fecha_Servidor(ClienteAbstracto cliente, string paquete)
 {
     if (cliente.cuenta.Estado_Cuenta == EstadoCuenta.LUCHANDO)
     {
         cliente.enviar_Paquete("GC1");
     }
 }
Exemplo n.º 9
0
        public void get_Estado_Interactivo(ClienteAbstracto cliente, string paquete)
        {
            foreach (string interactivo in paquete.Substring(4).Split('|'))
            {
                string[]  separador = interactivo.Split(';');
                Cuenta    cuenta    = cliente.cuenta;
                Personaje personaje = cuenta.personaje;
                short     celda_id  = short.Parse(separador[0]);
                byte      estado    = byte.Parse(separador[1]);

                switch (estado)
                {
                case 2:
                    personaje.mapa.celdas[celda_id].objeto_interactivo.es_utilizable = false;
                    break;

                case 3:
                    personaje.mapa.celdas[celda_id].objeto_interactivo.es_utilizable = false;

                    //pescador no envia IQ porque aveces no pesca pero si manda GDF;3
                    if (cuenta.esta_recolectando())
                    {
                        personaje.manejador.recoleccion.evento_Recoleccion_Acabada(RecoleccionResultado.RECOLECTADO);
                    }
                    break;

                case 4:    // reaparece asi se fuerza el cambio de mapa
                    personaje.mapa.celdas[celda_id].objeto_interactivo.es_utilizable = false;
                    break;
                }
            }
        }
Exemplo n.º 10
0
        public void get_Seleccion_Servidor(ClienteAbstracto cliente, string paquete)
        {
            cliente.cuenta.tiquet_game = paquete.Substring(14);
            cliente.cuenta.cambiando_Al_Servidor_Juego(Hash.desencriptar_Ip(paquete.Substring(3, 8)), Hash.desencriptar_Puerto(paquete.Substring(11, 3).ToCharArray()));

            cliente.cuenta.Estado_Socket = EstadoSocket.CAMBIANDO_A_JUEGO;
        }
Exemplo n.º 11
0
        public async Task get_Cambiar_Pos_Pelea(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[]   separador_posiciones = paquete.Substring(4).Split('|');
            int        id_entidad;
            short      celda;
            Luchadores luchador = null;

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

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

                    cuenta.conexion.enviar_Paquete("GR1");//boton listo
                }

                luchador = cuenta.pelea.get_Luchador_Por_Id(id_entidad);

                if (luchador != null)
                {
                    luchador.celda_id = celda;
                }
            }
        }
Exemplo n.º 12
0
        public void get_Combate_Info_Stats(ClienteAbstracto cliente, string paquete)
        {
            string[] separador = paquete.Substring(4).Split('|');
            Mapa     mapa      = cliente.cuenta.personaje.mapa;

            for (int i = 0; i < separador.Length; ++i)
            {
                string[]   _loc6_   = separador[i].Split(';');
                int        id       = int.Parse(_loc6_[0]);
                Luchadores luchador = cliente.cuenta.pelea.get_Luchador_Por_Id(id);

                if (_loc6_.Length != 0)
                {
                    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
                        {
                            byte equipo = Convert.ToByte(id > 0 ? 1 : 0);
                            luchador?.get_Actualizar_Luchador(id, esta_vivo, vida_actual, pa, pm, celda, vida_maxima, equipo);
                        }
                    }
                    else
                    {
                        luchador?.get_Actualizar_Luchador(id, esta_vivo, 0, 0, 0, -1, 0, 0);
                    }
                }
            }
        }
Exemplo n.º 13
0
        public void get_Combate_Inicio_Turno(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            if (int.Parse(paquete.Substring(3).Split('|')[0]) == cuenta.personaje.id && cliente.cuenta.pelea.total_enemigos_vivos > 0)
            {
                cuenta.pelea.get_Turno_Iniciado();
            }
        }
Exemplo n.º 14
0
        public void get_Lista_Respuestas(ClienteAbstracto cliente, string paquete)
        {
            if (cliente.cuenta.Estado_Cuenta != EstadoCuenta.HABLANDO)
            {
                return;
            }

            cliente.cuenta.personaje.evento_Pregunta_Npc(paquete.Substring(2));
        }
Exemplo n.º 15
0
        public void get_Key_BienvenidaAsync(ClienteAbstracto cliente, string paquete)
        {
            cliente.cuenta.Estado_Cuenta  = EstadoCuenta.CONECTANDO;
            cliente.cuenta.Estado_Socket  = EstadoSocket.LOGIN;
            cliente.cuenta.key_bienvenida = paquete.Substring(2);

            cliente.enviar_Paquete(Constantes.VERSION + "." + Constantes.SUBVERSION + "." + Constantes.SUBSUBVERSION);
            cliente.enviar_Paquete(cliente.cuenta.cuenta_configuracion.nombre_cuenta + "\n" + Hash.encriptar_Password(cliente.cuenta.cuenta_configuracion.password, cliente.cuenta.key_bienvenida));
            cliente.enviar_Paquete("Af");
        }
Exemplo n.º 16
0
        public void get_Ventana_Cerrada(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            if (cuenta.Estado_Cuenta == EstadoCuenta.ALMACENAMIENTO)
            {
                cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
                cuenta.personaje.inventario.evento_Almacenamiento_Cerrado();
            }
        }
Exemplo n.º 17
0
        public void get_Actualizacion_Pods(ClienteAbstracto cliente, string paquete)
        {
            string[]  pods          = paquete.Substring(2).Split('|');
            short     pods_actuales = short.Parse(pods[0]);
            short     pods_maximos  = short.Parse(pods[1]);
            Personaje personaje     = cliente.cuenta.personaje;

            personaje.inventario.pods_actuales = pods_actuales;
            personaje.inventario.pods_maximos  = pods_maximos;
            cliente.cuenta.personaje.evento_Pods_Actualizados();
        }
        public void personaje_Seleccionado(ClienteAbstracto cliente, string paquete)
        {
            string[] _loc4 = paquete.Substring(4).Split('|');
            if (cliente.cuenta.personaje == null)
            {
                cliente.cuenta.personaje = new Personaje(int.Parse(_loc4[0]), _loc4[1], byte.Parse(_loc4[2]), byte.Parse(_loc4[4]), int.Parse(_loc4[5]), cliente.cuenta);
            }

            cliente.cuenta.Estado_Socket = EstadoSocket.PERSONAJE_SELECCIONADO;
            cliente.cuenta.personaje.inventario.agregar_Objetos(_loc4[9]);

            cliente.enviar_Paquete("BYA");
        }
Exemplo n.º 19
0
        public void Recibir(ClienteAbstracto cliente, string paquete)
        {
            if (!esta_iniciado)
            {
                Inicializar();
            }

            PaqueteDatos metodo = metodos.Find(m => paquete.StartsWith(m.nombre_paquete));

            if (metodo != null)
            {
                metodo.informacion.Invoke(metodo.instancia, new object[] { cliente, paquete });
            }
        }
Exemplo n.º 20
0
        public void get_Servidor_Estado(ClienteAbstracto cliente, string paquete)
        {
            HostsMensaje servidor = new HostsMensaje(paquete.Substring(3), cliente.cuenta.servidor_id);

            cliente.cuenta.logger.log_informacion("Login", "El servidor " + cliente.cuenta.get_Nombre_Servidor() + " esta " + (HostsMensaje.EstadosServidor)servidor.estado);

            if ((HostsMensaje.EstadosServidor)servidor.estado == HostsMensaje.EstadosServidor.CONECTADO)
            {
                cliente.enviar_Paquete("Ax");
            }
            else
            {
                cliente.cuenta.logger.log_Error("Login", "Desconectando del servidor, para evitar anti-bot");
                cliente.get_Desconectar_Socket();
            }
        }
Exemplo n.º 21
0
        public void get_Mensajes_Chat(ClienteAbstracto cliente, string paquete)
        {
            string[] separador = paquete.Substring(3).Split('|');
            string   canal     = string.Empty;

            switch (separador[0])
            {
            case "?":
                canal = "RECLUTAMIENTO";
                break;

            case ":":
                canal = "COMERCIO";
                break;

            case "^":
                canal = "INCARNAM";
                break;

            case "i":
                canal = "INFORMACIÓN";
                break;

            case "#":
                canal = "EQUIPO";
                break;

            case "$":
                canal = "GRUPO";
                break;

            case "F":
                cliente.cuenta.logger.log_privado("PRIVADO", separador[2] + ": " + separador[3]);
                break;

            default:
                canal = "General";
                break;
            }

            if (!canal.Equals(string.Empty))
            {
                cliente.cuenta.logger.log_normal(canal, separador[2] + ": " + separador[3]);
            }
        }
Exemplo n.º 22
0
        public void get_Skills_Oficio(ClienteAbstracto cliente, string paquete)
        {
            string[]     separador_skill;
            Personaje    personaje = cliente.cuenta.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();
        }
Exemplo n.º 23
0
        public void get_Error_Baneado_Tiempo(ClienteAbstracto 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("Tu cuenta estará inválida durante ");

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

            cliente.cuenta.logger.log_Error("Login", mensaje.ToString());
            cliente.get_Desconectar_Socket();
        }
Exemplo n.º 24
0
 public void get_Servidores_Lista(ClienteAbstracto cliente, string paquete) => cliente.enviar_Paquete(new ListaServidoresMensaje(paquete.Substring(3), cliente.cuenta.servidor_id).get_Mensaje());
Exemplo n.º 25
0
 public void get_Fila_Espera_Login(ClienteAbstracto cliente, string paquete) => cliente.cuenta.logger.log_informacion("FILA DE ESPERA", "Posición " + paquete[2] + "/" + paquete[4]);
Exemplo n.º 26
0
 public void get_Apodo(ClienteAbstracto cliente, string paquete) => cliente.cuenta.apodo = paquete.Substring(2);
Exemplo n.º 27
0
 public void get_Nuevo_Mapa(ClienteAbstracto cliente, string paquete)
 {
     cliente.cuenta.personaje.mapa.get_Actualizar_Mapa(paquete.Substring(4));
     cliente.cuenta.Estado_Cuenta = EstadoCuenta.CONECTADO_INACTIVO;
 }
Exemplo n.º 28
0
 public void get_Antibot_1(ClienteAbstracto cliente, string paquete) => cliente.cuenta.conexion.enviar_Paquete(paquete.Substring(0, 2) + new Random().Next(120000, 140000));
Exemplo n.º 29
0
        public async Task get_Movimientos_Personajes(ClienteAbstracto cliente, string paquete)
        {
            Cuenta cuenta = cliente.cuenta;

            string[] separador_jugadores = paquete.Substring(3).Split('|'), informaciones;
            string   _loc6, nombre_template, tipo;

            for (int i = 0; i < separador_jugadores.Length; ++i)
            {
                _loc6 = separador_jugadores[i];
                if (_loc6.Length != 0)
                {
                    informaciones = _loc6.Substring(1).Split(';');
                    if (_loc6[0].Equals('+'))
                    {
                        Celda celda = cuenta.personaje.mapa.celdas[short.Parse(informaciones[0])];
                        int   id    = int.Parse(informaciones[3]);
                        nombre_template = informaciones[4];
                        tipo            = informaciones[5];
                        if (tipo.Contains(","))
                        {
                            tipo = tipo.Split(',')[0];
                        }

                        switch (int.Parse(tipo))
                        {
                        case -1:
                        case -2:
                            if (cuenta.Estado_Cuenta == EstadoCuenta.LUCHANDO)
                            {
                                int  vida   = int.Parse(informaciones[12]);
                                byte pa     = byte.Parse(informaciones[13]);
                                byte pm     = byte.Parse(informaciones[14]);
                                byte equipo = byte.Parse(informaciones[15]);

                                cuenta.pelea.get_Agregar_Luchador(new Luchadores(id, true, vida, pa, pm, celda.id, vida, equipo));
                            }
                            break;

                        case -3:    //monstruos
                            string[] templates = nombre_template.Split(',');
                            string[] niveles   = informaciones[7].Split(',');


                            Monstruo monstruo = new Monstruo(id, int.Parse(templates[0]), celda, int.Parse(niveles[0]));
                            monstruo.lider_grupo = monstruo;

                            for (int m = 1; m < templates.Length; ++m)
                            {
                                monstruo.moobs_dentro_grupo.Add(new Monstruo(id, int.Parse(templates[m]), celda, int.Parse(niveles[m])));
                            }

                            cuenta.personaje.mapa.agregar_Monstruo(monstruo);
                            break;

                        case -4:    //NPC
                            cuenta.personaje.mapa.agregar_Npc(new Npcs(id, int.Parse(nombre_template), celda));
                            break;

                        case -5:
                            break;

                        case -6:
                            break;

                        case -7:
                        case -8:
                            break;

                        case -9:
                            break;

                        case -10:
                            break;

                        default:
                            if (cuenta.Estado_Cuenta != EstadoCuenta.LUCHANDO)
                            {
                                if (cuenta.personaje.id != id)
                                {
                                    if (nombre_template.StartsWith("[") || Extensiones.lista_mods.Contains(nombre_template))
                                    {
                                        cuenta.conexion.get_Desconectar_Socket();
                                    }

                                    cuenta.personaje.mapa.agregar_Personaje(new Personaje(id, nombre_template, byte.Parse(informaciones[7].ToString()), celda));
                                }
                                else
                                {
                                    cuenta.personaje.celda = celda;
                                }
                            }
                            else
                            {
                                int  vida   = int.Parse(informaciones[14]);
                                byte pa     = byte.Parse(informaciones[15]);
                                byte pm     = byte.Parse(informaciones[16]);
                                byte equipo = byte.Parse(informaciones[24]);

                                cuenta.pelea.get_Agregar_Luchador(new Luchadores(id, true, vida, pa, pm, celda.id, vida, equipo));

                                if (cuenta.personaje.id == id && cuenta.pelea_extension.configuracion.posicionamiento != PosicionamientoInicioPelea.INMOVIL)
                                {
                                    await Task.Delay(300);

                                    /** la posicion es aleatoria pero el paquete GP siempre aparecera primero el team donde esta el pj **/
                                    short celda_posicion = cuenta.pelea.get_Celda_Mas_Cercana_O_Lejana(cuenta.pelea_extension.configuracion.posicionamiento == PosicionamientoInicioPelea.CERCA_DE_ENEMIGOS, cuenta.pelea.celdas_preparacion, cuenta.personaje.mapa);

                                    if (celda_posicion != celda.id)
                                    {
                                        cuenta.conexion.enviar_Paquete("Gp" + celda_posicion);
                                    }
                                    else
                                    {
                                        cuenta.conexion.enviar_Paquete("GR1");
                                    }
                                }
                                else if (cuenta.personaje.id == id)
                                {
                                    await Task.Delay(300);

                                    cuenta.conexion.enviar_Paquete("GR1");    //boton listo
                                }
                            }
                            break;
                        }
                    }
                    else if (_loc6[0].Equals('-'))
                    {
                        if (cuenta.Estado_Cuenta != EstadoCuenta.LUCHANDO)
                        {
                            int id = int.Parse(_loc6.Substring(1));
                            cuenta.personaje.mapa.eliminar_Personaje(id);
                            cuenta.personaje.mapa.eliminar_Monstruo(id);
                        }
                    }
                }
            }
        }
Exemplo n.º 30
0
 public void get_Lista_SubAreas_Alineamiento(ClienteAbstracto cliente, string paquete) => cliente.enviar_Paquete("GC1");