Jump to content

ninjapal

Miembro
  • Contador contenido

    9
  • Ingreso

  • Última visita

Actividad de reputación

  1. Gracias
    ninjapal reacted to ALEXANDER2020 in Actualización oficial del partido   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    Debes iniciar sesión para ver el contenido del archivo adjunto en esta publicación.
  2. Me Gusta
    ninjapal reacted to 【ℛ-𝓝】ℛ𝔂𝓼𝒆 in [SISTEMA] Almacèn especial   
    Con esta modificacion, se puede poner 3 tiendas en una, sin usar la quest de seleccion.
     
    Creditos: Law
     
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  3. Me Gusta
    ninjapal reacted to carlos21 in Gratis" Sistema de stolas+selet+charact+create c++ .De   
    Todo con guía de instalación 
    Trae todo icono parte src server cliente casi todo!! disfruten zone
    lo unico creo que le falta es el item_scale despues creo que esta todo

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    creditos:max j4mt
     
    Testeado y Probado 



     
     
    Aca dejo el sistema instalado para que compares de stolas..
     con el notepad++ o con WinMerge
    Source Cliente
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  4. Me Gusta
    ninjapal reacted to Rakancito in Anti Fake nombres en procesos como M2bob o Lalaker   
    Simplemente verifique si el nombre es probablemente falso y cierre el cliente.
    También agregué un anti depuración para evitar Cheat Engine u otros con Memory Viewer y su depurador.    
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  5. Me Gusta
    ninjapal reacted to Dilong in Serverfile 34083 español   
    Es un SF 34k español que lo prepare para que los nuevos puedan usarlo, tiene las dungeons normales: Catacumbas, Beran-setaou y Torre deminiaca, el unico que falta es el de la baronesa araña
    Sistemas basicos: Atuendo, mascota (el normal del oficial), energia, evolucion de monturas (No llamaria sistema como tal a una quest, pero bueno), y bueno solo eso lo basico, no tiene cosas raras, lo que no esta en español son las preguntas del OX, por que en eso cada uno pone lo que quiere
    El cliente pueden usar cualquier cliente 34k junto con el launch sura para 34k si quieren que los demas entren a su server via hamachi
    Foto:

    Link:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Navicat: root daroo
    Cuenta GM: admin 123
    Para encender el sf deben poner:
    cd /usr/home/game
    ./panel
     
     
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  6. Me Gusta
    ninjapal reacted to TTV_RANDARON in CLEAN 40K FILES   
    Estos son 40k Servidores + Servidor + Fuente + Cliente limpios para que pueda comenzar a trabajar en su Servidor sin tener que preocuparse por los nuevos sistemas agregados, etc. Su juego de 40K completamente limpio, puro y básico.
     
    No hay:
    -lycan
    sistema de atuendo
    tienda fuera de línea
    -faja
    etc ...
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
  7. Me Gusta
    ninjapal reacted to Wolf in [Tutorial+FilesMetin2Rain, Son 100% Virgenes] 27/03/2015 para empezar...   
    Hola,
    Bueno me pidio un usario que hiciera 1 video sobre como crear 1 servidor metin2 y aqui
    esta todo lo necesario con el video nos entendemos.
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Link's de MEGA:
    Datos Principales de todo "GUIA":
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Cliente Omega ESP con windows.dds: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Cliente Omega Virgen: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    SF Rain 2007+ Cliente (Nuevo link @Dilong): Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    No-IP(DUC): Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    EterNexus: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Navicat Premium Full: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Port Map: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Traduccion Omega para el cliente sin traducir: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    VirtualBox: Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    Windows.dds para el Cliente Omega Virgen sin traducir en Español[ESP]: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    VIA HAMACHI: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. VIA HAMACHI Lauling.V3:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. 1 LINK DE MEGA TODO LO NECESARIO.

    Para criticas mejor ni comenteis las ignorare solo lo e posteado para los que no saben,
    que comienzen aprender...
     
    Saludos, Wolf solo hice la guia de YouTube.
     
    Alguna foto

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Fecha del Video: 27/03/2015
  8. Me Gusta
    ninjapal reacted to ChuchoGamer in serverfiles Daroo Link Resubidos   
    Hola muy buenas tardes hoy les Traigo estos files Daroo 1678  son files virgenes Tambien les dejare un cliente para que puedan usarlo
    el cliente es total mente virgen les pueden implementar lo que quieras ha sus gustos Claro Repito si estos files Ya estan postiado con link resubido Porfavor Borren este post Claros simpre y cuando si el otro Post original los tenga activo los links bueno en fin aqui se los dejo
    Link del Files 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. La contraseña para Descomprimir los files es germany
    Link Files 2089 (daroo 8.2) .tar y Cliente omega (2011) instalable por @Dilong:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Link del cliente 

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Datos para Encender la maquina virtual  y Navicat 
    root
    daroo
    Para prender los files solo configuren la maquina cuando ya esta listo ponen
    m2 start 
    les pedira que canal quieres encender  les pones 1 y enter y listo
     
     
    Cliente omega Español full esta por partes el cliente

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Espero que os guste 
    Credito para el Creador del los files daroo 8.2 Saludos
  9. Me Gusta
    ninjapal reacted to Brian.- in [Armas]Pack de armas   
    No se ven las imagenes
  10. Me Gusta
    ninjapal reacted to MiGueLiT0 in [Armas]Pack de +350   
    porque quizas se tiene que reaccionar? :v
    LINK

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  11. Me Gusta
    ninjapal reacted to EzekielitohMercury in [SERVERFILES]Metin2Rage VDI!   
    Bueno amigos como vi que mucho no pudieron montar los .tar.gz asi que los monte & los subi espero que les sirva & no olviden dejar El "Me Gusta" & Decir Gracias :33 XD
    DESCARGA
    SERVERFILES

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. CLIENTE
    MEGA: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    MEDIAFIRE: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
    PARCHE DE TORRE NEMERE CLIENTE

    Debes iniciar sesión para ver el contenido del enlace en esta publicación. CREDITOS
    asusta99
    EzekielitohMercury (Ezekielitoh) por subirlos & montarlos en VDI
    DATOS DE LA MAQUINA
    Usuario:root
    Contraseña:dar enter no poner nada
    COMANDOS PARA ENCENDER EL SERVIDOR
    DATOS DE NAVICAT
    ID: ragemt2 pass: susta CUENTA DEL JUEGO
    ID:ragemt2 CONTRASEÑA:123
  12. Me Gusta
    ninjapal reacted to MarcioCraker in Serverfiles Maxmi - Lycan en vdi FreeBSD 9.3 xd mais client 100% es   
    Serverfiles Maxmi - Lycan: vdi
     
    Versões   Binário: 28249 Game: 43360 Db: 43370   Idioma: Turco   Características Alquimia do Dragão a funcionar perfeitamente sem bugs Sistema de Costumes a funcionar perfeitamente, actualizado Sistema de Cintos a funcionar perfeitamente Torre de Nemere funcional e estável Tabela Skill Proto actualizada Tabela Player_Index actualizada Locale.lua actualizado Skill Power actualizado Locale_strig.txt actualizado Nova Personagem Lycan adicionada Defesas contra Lycan adicionadas Aumento dos Slots das Lojas dos NPC's para 80 Mysql log eliminado Guild pode ter até 112 Personagens Grupo pode ter até 14 Personagens Capa da Bravura permanente Vouchers (50, 100, 500 e 1000 Md's) funcionais Todos os Itens do Lycan adicionados Efeito das Poções Verde e Roxa (quando usadas) adicionado Janela de Negócio de 12 passa para 24 Slots Entre outras...  
    Virtualbox:-root
    pass-tyler
     
    navicat:-tyler
     
    Ingame:  tyler 123456
     
    Serverfiles vdi:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Client:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    pack:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Client: 100% es

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
     
    Ai Teneis:

     
     
     
     
  13. Me Gusta
    ninjapal reacted to Kryzz in [SCRIPT] Borrar quest individualmente.   
    Bueno chicos un colego mio de nuestro servidor, hizo un script de borrar quest individualmente. Lo vengo a postear con su autoria.
     
    Instalación
    1° Vamos al winscp o filezilla y nos logueamos.
    2° Luego vamos a la ruta de la imagen.
     

     
    3° Procedemos a meter el script que dejare en descarga como adjunto, debe quedar asi:

     
    4° Luego procedemos a darle estos permisos:
     

     
    5° Nos logueamos y vamos nuestra consola de comandos, o para algunos VirtualBox
     
    Escribimos esto:
     

     
    Y luego esto:
     

     
    Nos preguntara el nombre de la quest como en esta imagen:
     

     
    Aqui escriben el nombre de la quest, por ejemplo: comenzarbio
     

     
    Luego nos dira estas seguro S/N:
    y colocamos "s" si es positivo y "n" si es negativo.
     

     
    Luego la quest quedara borrada de nuestro servidor!
     
    Creditos: Axioma, creador del script y colega mio.
    Todos los derechos reservados, no copy-paste o posteo en otro foro, si la autoria del creador.

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  14. Me Gusta
    ninjapal reacted to Dilong in [Nuevo link]SF Akron2   
    Descripcion:
    Link:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. El cliente no está encriptado, pero si compilan el source del cliente, tendrán que cambiar las Keys para dejarlo sin encriptar
  15. Me Gusta
    ninjapal reacted to Rakancito in KNOCKBACK Patch Skill 17.5 Official Servers   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Simplemente es el retroceso de los ninjas arqueros que usa el servidor oficial.
  16. Me Gusta
    ninjapal reacted to LovePlay in [REDISEÑO] METIN2CMS   
    No estoy seguro de si esta web se llama METIN2CMS, pero vosotros sabéis de cual hablo; esta web que utilizan la mayoría de servidores. Os he hecho un re diseño simple, para que haya un poco de variedad, que casi todos los servidores están usando la misma sin cambiar ni los colores ni nada. Es muy fácil de editar la web sabiendo un poco de css, un poco de html y reemplazar algunas imágenes.

     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Si falta algo en el PSD o necesitáis algún tipo de ayuda con el PSD para montarlo y tal, escribidme al Discord. (LovePlay#4817)
  17. Me Gusta
    ninjapal reacted to Jfirewall in [GUÍA]Poner el calendario de eventos   
    Tienes que jugar con las tabulaciones, alguna duda de uso mp
  18. Me Gusta
    ninjapal reacted to -YC- in [GUÍA]Poner el calendario de eventos   
    ps aja así les debe quedar xD
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.Debes iniciar sesión para ver el contenido del enlace en esta publicación." />
  19. Me Gusta
    ninjapal reacted to -YC- in [GUÍA]Poner el calendario de eventos   
    Hola chicos vi que muchos tenían problemas a la hora de poner el sistema de calendario de Jfirewall es muy fácil pero les da error en el syserr o se queda cargando el juego aquí les vengo a dar los pasos 
     
    Primero les dejo el sistema adjunto:
     
    1.-Descomprimen el .rar dentro hay una carpeta llamada pack adentro están los archivos calendar.eix y calendar.epk después los pasan a su cliente abren el archivo INDEX y debajo agregar
    *calendar Ejemplo este es mi INDEX:
    PACK*iconos*metin2_patch_dragon_rock_texcache*patch2*patch3*metin2_patch_pets*metin2_patch_pet2*patch1*pacificador_pet_system*calendar <------ Así debe quedar*metin2_patch_login*metin2_patch_power*metin2_patch_honor*login*age_of_zaria*metin2_patch_snow*metin2_patch_eu3pack/metin2_patch_etc_costume1pack/metin2_patch_pet1pack/metin2_patch_ramadan_costumepack/metin2_patch_flame 2.-Después, descompilas el root de tu cliente, cojes el archivo calendar.py que está en pack/root de la descarga y lo copias al root de tu cliente descompilado.
      3.- Después buscas el archivo game.py de los roots lo abres y vas a lo ultimo del archivo das enter que quede un espacio y pegas esto: def Calendar(self): import calendar self.calendar = calendar.Calendar() self.calendar.Show() 4.- De ahí buscas:
    onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) y das un enter y pegas esto:
    onPressKeyDict[app.DIK_F6] = lambda : self.Calendar()  eso tiene que quedar así:
    onPressKeyDict[app.DIK_F4] = lambda : self.__PressQuickSlot(7) onPressKeyDict[app.DIK_F6] = lambda : self.Calendar()   antes de todo te fijas en los que están ahí si no hay algun comando que abra algo con F6 si es así lo cambias a F7 o al correspondiente que quieras
     
     
    5.-Esto sería todo cualquier error puedes comentar y en la brevedad posible te estaré ayudando
     
    Créditos:
    Jfirewall Creador del sistema
    Yo- Por la guía xD

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  20. Me Gusta
    ninjapal reacted to PACI in [Guia] Crear diffs   
    Hola.
    Como sabéis, ahora que el source es publico, ya nadie, o casi nadie, hará, ni posteará, más diffs para editar vuestros cores.
    Este es uno de los motivos por los cuales hago escribo esta guia, el otro es para dar a la comunidad hispana un poco más de conocimiento, aunque no sea mucho.
     
    Que se necesita para hacer diffs?
    Hay quién diga que necesitas saber ASM (assembly), C, y esas cosas. Aunque, yo no sé ninguno de los 2, y creaba diffs.
    Lo que más necesitamos es un brain.exe, como se suele decir, paciencia, y el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. y un Debes iniciar sesión para ver el contenido del enlace en esta publicación..  
    Antes de ponernos a toquetear en el IDA, debemos, antes de nada, saber una cosa.
     
    Qué es un diff?
    Un diff (difference file) es un archivo que contiene, de una manera simplificada, una (o varias) linea(s) que altera(n) un (o más) bytes de un archivo.
    La sintaxis es: offset: byte antiguo byte nuevo.
    La creación de un diff no es propriamente un problema, ya que el IDA, dependiendo de lo que hayamos modificado, lo crea solo.
    Y a través de un diff no puedes saber lo que cambia.
     
    Después de saber que és un diff, y para que sirve, tenemos que saber qué es lo que queremos cambiar, y donde se localiza, yo, para eso, usaba el Pseudocode de un game core o db core para buscar lo que queria cambiar, obviamente para esto necesitamos el brain.exe, porque tenemos que entender la sintaxis del codigo que hay por ahí. Os dejaré en adjuntos, todos los pseudocodes de todos los game core y db core que tengo
     
    Vale, ahora qué hago?
    Yo, para empezar, cogeré el pseudocode del game r40250 y cambiaré... por ejemplo, el nível de diferencia que se necesita para invitar a alguién en un grupo.
     
    Como empezamos?
    Hay que saber un poquito de inglés, porque las variables no están escritas en español. Lo que sabemos es que grupo se puede decir party en inglés. Una vez sepamos eso, empezaremos buscando party en nuestro editor de texto (yo uso Notepad++ para esto, vosotros podéis usar algun otro), lo segundo es saber, cuando sucede la acción, o sea, cuando sale el mensajito ese en el chat diciendo que la diferencia de nível es X. Sabemos también que eso pasa cuando invitamos a alguién, invitar en inglés es invite. Entonces ya sabemos que tenemos que buscar algo como PartyInvite.
     
    Cuando encontremos algo de este tipo:
    extern char CHARACTER__PartyInvite_CHARACTER______FUNCTION__[12]; // weak Entonces lo que hacemos es buscar esa función. Ojo, apenas buscamos por CHARACTER__PartyInvite.
     
    Y por fin, encontraremos la función CHARACTER__PartyInvite:
    int __fastcall CHARACTER__PartyInvite(int a1, int a2, int a3, int a4){  int v4; // eax@4  int v5; // edx@4  int v6; // ecx@4  int v7; // ebx@6  int v8; // eax@6  int v9; // eax@7  int result; // eax@8  int v11; // eax@10  int v12; // eax@15  int v13; // eax@22  int v14; // eax@23  int v15; // edx@23  int v16; // ecx@23  int v17; // edi@23  int v18; // eax@23  int v19; // edx@25  int v20; // ecx@25  int v21; // [sp+0h] [bp-48h]@3  int v22; // [sp+0h] [bp-48h]@6  int v23; // [sp+20h] [bp-28h]@23  int v24; // [sp+24h] [bp-24h]@23  _BYTE v25[5]; // [sp+2Bh] [bp-1Dh]@29  int v26; // [sp+30h] [bp-18h]@23  int v27; // [sp+34h] [bp-14h]@22  int v28; // [sp+38h] [bp-10h]@1  v28 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_DWORD *)(a3 + 9328) && CParty__GetLeaderPID(a1, a2, *(_DWORD *)(a3 + 9328)) != *(_DWORD *)(a3 + 256) )  {   v21 = (int)&unk_848D8B8;LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4);  }  else  {   if ( *(_BYTE *)(a4 + 9104) & 2 )   {   v8 = CHARACTER__GetName(a4);   v22 = (int)&unk_848D8E8;   v7 = v8;LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7);   }   else   {   v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   }   }  }  result = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v28;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v28 )   __stack_chk_fail(v6, v5);  return result;} Ahora a partir de aquí, hay que saber leer. Vayamos por partes:
    LABEL_4:   v4 = locale_find(v21);   CHARACTER__ChatPacket(a3, 1, (const char *)v4); LABEL_7:   v9 = locale_find(v22);   CHARACTER__ChatPacket(a3, 1, (const char *)v9, v7); LABEL_4 y LABEL_7 tienen un locale_find y un ChatPacket, lo que significa que buscará en el locale_string.txt un texto que estará dentro del locale_find y luego lo mostrará en el Chat.
     
    Pasemos directamente al switch:
      v11 = CHARACTER__IsPartyJoinableCondition(a3, a4);   if ( (unsigned int)v11 <= 0xA )   {   switch ( v11 )   {   default:   goto LABEL_11;   case 10:   v21 = (int)&unk_848D868;   goto LABEL_4;   case 8:   v21 = (int)&unk_848D4C0;   goto LABEL_4;   case 7:   v12 = CHARACTER__GetName(a4);   v22 = (int)"<ÆÄƼ> ÀÌ¹Ì %s´ÔÀº ÆÄƼ¿¡ ¼ÓÇØ ÀÖ½À´Ï´Ù.";   v7 = v12;   goto LABEL_7;   case 6:   v21 = (int)&unk_848D480;   goto LABEL_4;   case 5:   v21 = (int)&unk_848D440;   goto LABEL_4;   case 4:   v21 = (int)&unk_848D404;   goto LABEL_4;   case 3:   v21 = (int)&unk_848D3D0;   goto LABEL_4;   case 2:   v21 = (int)&unk_848D39C;   goto LABEL_4;   case 1:   v21 = (int)&unk_848D368;   goto LABEL_4;   case 0:   v27 = *(_DWORD *)(a4 + 256);   v13 = std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event______find(   a3 + 9340,   (int)&v27);   v5 = a3 + 9344;   if ( a3 + 9344 == v13 )   {   v14 = AllocEventInfo_TPartyJoinEventInfo_();   *(_DWORD *)(v14 + 4) = *(_DWORD *)(a4 + 256);   *(_DWORD *)(v14 + 8) = *(_DWORD *)(a3 + 256);   event_create_ex(&v26, (int)party_invite_event, v14, 10 * passes_per_sec);   v17 = v26;   v18 = *(_DWORD *)(a4 + 256);   v24 = v26;   v23 = v18;   if ( v26 )   intrusive_ptr_add_ref(v16, v15, v26);   std___Rb_tree_unsigned_int_std__pair_unsigned_int__const_boost__intrusive_ptr_event___std___Select1st_std__pair_unsigned_int__const_boost__intrusive_ptr_event____std__less_unsigned_int__std__allocator_std__pair_unsigned_int__const_boost__intrusive_ptr_event_______M_insert_unique(   a3 + 9340,   (int)&v23);   if ( v24 )   intrusive_ptr_release(v20, v19, v24);   if ( v17 )   intrusive_ptr_release(v20, v19, v17);   v25[0] = 77;   *(_DWORD *)&v25[1] = *(_DWORD *)(a3 + 260);   DESC__Packet(*(_DWORD *)(a4 + 44), (int)v25, 5);   }   break;   }   }   else   {LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11);   } Como veremos, la variable v11 está obteniendo el valor de una otra función, llamada CHARACTER__IsPartyJoinableCondition.
    Entonces, lo que el servidor hará es testear ese valor desde la función switch.
      switch ( v11 )   {   default:   goto LABEL_11; Si esa variable es false dependiendo de los valores encontrados en los case, entonces irá hasta el LABEL_11, que es un error en syserr:
    LABEL_11:   sys_err((int)"PartyInvite", 4558, "Do not process party join error(%d)", v11); Si esa condición es verdadera, hará una serie de cosas.
     
    Entonces ya sabemos que, lo que sale en el chat dependerá:
    - Del valor de la variable v11, o sea, el valor que la función CHARACTER__IsPartyJoinableCondition obtiene. Ahora que sabemos esto, vayamos directos a esa función.
    int __cdecl CHARACTER__IsPartyJoinableCondition(int a1, int a2){  int v2; // edx@1  int result; // eax@2  v2 = a2;  if ( *(_BYTE *)(a1 + 9797) == *(_BYTE *)(a2 + 9797) )  {   if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2);LABEL_6:   __stack_chk_fail(a1, v2);  }  v2 = *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ *(_DWORD *)_stack_chk_guard__FBSD_1_0;  result = 10;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   goto LABEL_6;  return result;} De aqui no podemos sacar grandes conclusiones, pero, sabemos una cosa:
      if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 == *(_DWORD *)_stack_chk_guard__FBSD_1_0 )   return CHARACTER__IsPartyJoinableMutableCondition(a1, a2, a1, a2); Esta funcion hará return al valor de una otra función. Debemos entonces, movermos hasta esa función, CHARACTER__IsPartyJoinableMutableCondition.
    int __fastcall CHARACTER__IsPartyJoinableMutableCondition(int a1, int a2, int a3, int a4){  int v4; // edx@1  char v5; // al@4  __int64 v6; // qax@5  int result; // eax@7  int v8; // eax@10  int v9; // [sp+1Ch] [bp-Ch]@1  v4 = 1;  v9 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;  if ( *(_BYTE *)(singleton_CPartyManager___ms_singleton + 76) )  {   LOBYTE(v4) = 2;   if ( !*(_DWORD *)(a3 + 9364) )   {   LOBYTE(v4) = 3;   if ( !*(_BYTE *)(a4 + 4) )   {   v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10;   v6 = *(_BYTE *)(a3 + 1298) - *(_BYTE *)(a4 + 1298);   LODWORD(v6) = (HIDWORD(v6) ^ v6) - HIDWORD(v6);   v4 = 4;   if ( a1 >= (_DWORD)v6 )   {   LOBYTE(v4) = 7;   if ( !*(_DWORD *)(a4 + 9328) )   {   if ( !*(_DWORD *)(a3 + 9328)   || (v8 = CParty__GetMemberCount(a1, v4, *(_DWORD *)(a3 + 9328)), v4 = 8, v8 != 8) )   v4 = 0;   }   }   }   }  }  result = v4;  if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v9 )   __stack_chk_fail(a1, *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v9);  return result;} La primera cosa en lo que nos fijaremos es en esto:
      v5 = LC_IsCanada(a1);   a1 = 15;   if ( !v5 )   a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; La variable v5 será igual a un boolean (true o false), a1 es un integer (un valor entre 0 a 2 millones). Lo que la función hace, es verificar si la variable v5 es false, si así es, el valor de la variable a1 cambia, dependiendo del locale, ya que si este es un locale/brazil el a1 será 10.
    a1 = (unsigned __int8)LC_IsBrazil(15) < 1u ? 30 : 10; Esto es lo que se llama, un short if-statement:
    a1 = boolean ? valor si es true : valor si es false;
     
    Como el nivel de diferencia en los servidores de europa es 15, podemos concluir que la variable a1 define el nivel de diferencia y es el valor que queremos cambiar.
     
     
    Toqueteando en el IDA
     
    Después de saber que valor tenemos que cambiar, y donde está, abrimos el IDA:

     
    Y le damos al primer botón (New - Disassemble a new file), seleccionamos nuestro archivo, en mi caso el game r40250, y nos aparecerá algo de este tipo:

     
    Nosotros, sin tocar en nada, le damos al OK. Y esperamos hasta que cargue las funciones.
     
    Cuando nos salga algo así:

     
    Significa que las funciones ya están cargadas.
    Ahora le hacemos click en la ventana Function name y escribimos: CHARACTER::IsPartyJoinableMutableCondition y le damos un doble click.
     

     
     
    Nosotros simplemente bajamos hasta aqui:

     
    Si le damos al botón de tabulación, nos llevará al pseudocode de esa función y, además, nos dejará en la localización actual, por ejemplo:
    call   _Z11LC_IsCanadav ; LC_IsCanada(void)mov ecx, 0Fhtest   al, aljz   short loc_806E8B0 Si hacemos click en el mov y hacemos un jump to pseudocode nos llevará hasta:
    a1 = 15; Yo, como no sé cambiar los valores de los short if-statements, haré NOP (No Operation, que simplemente hace que en esa parte no haga nada).
     
    Entonces, nos moveremos al Hex View y podremos ver que la parte que está seleccionada, es la parte que hemos seleccionado en el IDA View.
    Nos vamos a la ventana donde está el LC_IsCanada:
    .text:0806E83A jnz short loc_806E878.text:0806E83C call   _Z11LC_IsCanadav ; LC_IsCanada(void).text:0806E841 mov ecx, 0Fh.text:0806E846 test   al, al.text:0806E848 jz   short loc_806E8B0 El short jump if not zero (jnz) si le damos click y vamos al pseudo, veremos que está demasiado arriba del if-statement.
    El call al LC sabemos que es una variable
    El mov es la variable que queremos cambiar.
    El test es el if-statement.
    El jump if zero (jz) basicamente es lo que va después de la condición.
     
    Entonces lo que tenemos que hacer, es NOP al jz y al test.
     
    Como?
    Facil, seleccionamos lo que queremos cambiar:

     
    Nos vamos al Hex View le damos al F2, y cambiamos los 2 valores que salen seleccionados por 90. Ya que el No Operation (NOP) equivale a 90. Volvemos a darle al F2 para guardar los cambios.
    Y luego, hacemos lo mismo con el jz.
     
    Que hemos echo entonces?
    Basicamente, lo que hicimos hasta ahora, es dejar el nivel de diferencia entre jugadores para que se inviten sea de 15, ya que el if define todo lo demás, dependiendo del locale.
    Si queremos cambiar el 15 por otro, facil. Vamos hasta:
    mov ecx, 0Fh
     
    Luego al Hex View, entonces abrimos el
    Debes iniciar sesión para ver el contenido del enlace en esta publicación., ponemos 15 donde el 1, y le damos click a to hexadecimal, que nos saldra un f, o sea 15 en hexadecimal equivale a 0F. Buscaremos eso en el Hex View, le damos al F2. Volvemos al conversor, y convertimos el valor que queremos poner a cambio de 15. Yo por ejemplo, pondré 5 que es 05. Le daré al F2 otra vez para guardar los cambios.
     
    Entonces si vuelvo al pseudo me saldrá:
      v5 = LC_IsCanada(a1, v4);   a1 = 5; En vez de:
      v5 = LC_IsCanada(a1, v4);   a1 = 15; Eso es porque hemos cambiado el 15 por 5 en el Hex View.
     
     
    Por fin, como creamos la diff después de cambiar lo que queramos?

     
     
    Y mi diff me saldrá así:
    This difference file has been created by IDA Progame_r4025000026842: 0F 05 // Esto es el cambio de la variable a1, de 15 a 5// Estos NOP es de la condición que hemos "eliminado"00026846: 84 9000026847: C0 9000026848: 74 9000026849: 66 90 Y por último os dejo aqui los pseudocode que tengo:
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  21. Me Gusta
    ninjapal reacted to Akil in [TIP]Reparar tablas corruptas   
    Me pide que introduzca una pass, cual pongo?
     
    Pongo la de la db y me aparece esto 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Con la pass del dedicado tambien me sale lo mismo
  22. Me Gusta
    ninjapal reacted to Akil in [TIP]Reparar tablas corruptas   
    No me funciona,
     
    tengo este error, cuando le doy a desing table 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    me pasa en cualquier tabla
  23. Me Gusta
    ninjapal reacted to Shiindrex in Quest:Informacion sobre caballos traducida   
    Hola amigos de mt2zone
     
    Les traigo la quest de informacion sobre caballos traducida tal cual como esta en el .es
     
    La quest se trata de que cuando das click en el chico del establo te pone Informacion sobre el caballo, muy util para el que quiera tener el server oldschool.
     
    Aca les dejo el pastebin:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.

    quest horse_guard beginstate start beginwhen 20349.chat."Información sobre caballos" beginlocal s=number(1, 7)if 1>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Hay diferentes habilidades de monta. Además,")say("puedes aumentar el nivel de tu caballo para que")say("se vuelva más fuerte. Pero sólo personas con una")say("medalla de caballo pueden aumentar el nivel de")say("sus caballos.")elseif 2>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Los caballos necesitan un tipo distinto de comida")say("dependiendo de su nivel. Los caballos")say("principiantes comen heno, los intermedios comen")say("zanahorias y los expertos ginseng rojo.")say("Puedes dar por seguro que son más exigentes que")say("los humanos...")say("")elseif 3>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Hay caballos para tres niveles de jinetes:")say("principiante, intermedio y experto. Si entrenas")say("lo suficiente y quieres alcanzar el siguiente")say("nivel, tienes que pasar una prueba.")say("")elseif 4>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Si el caballo está sano, se muestra con un")say("indicador verde. Si se vuelve amarillo, significa")say("que tu caballo está hambriento. Si está rojo, tu")say("caballo se está muriendo de hambre. Tienes que")say("darle de comer para que vuelva de amarillo o rojo")say("a verde. Un caballo muerto es algo muy serio.")say("")elseif 5>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Para comenzar una misión de caballo, necesitas")say("una medalla de caballo. Puedes conseguir una en")say("la mazmorra de los monos.")say("")elseif 6>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Hay rumores de que un caballo muerto puede ser")say("resucitado con hierbas solares. Pero esas hierbas")say("están custodiadas por los monos y parece que es")say("difícil conseguirlas. Se dice que si te atrapan")say("los monos, te maldicen y te transformas en uno de")say("ellos.")say("")elseif 7>=s then -- 14.29% (1/7)say_title("Chico del Establo:")say("Cuando montas tu caballo, su salud se acaba")say("lentamente y se queda exhausto. No puedes montar")say("un caballo sin salud. Por consiguiente, tienes")say("que dejarle descansar ocasionalmente.")say("")endendendstate __COMPLETE__ beginwhen enter beginq.done()endendend    Dejen un gracias si les sirvio, seguire aportando quest traducidas, espero que les sirvan   Saludos!  
     
  24. Me Gusta
    ninjapal reacted to NazoX in [AYUDA]Quest Caballo   
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. Son todas las misiones del oficial, 1 medalla los 45 arqueros salvajes + 100k,  subirlo hasta el nivel 10 (más el lv1 que tienes al conseguir el pony) te da la misión del armado, matar los bandidos-arqueros salvajes, serpientes arqueros esos , y su cantidad que no me acuerdo + 500k, y subirlo hasta el 21, y misión del militar, matar en torre los x demonios + 1kk , también trae revivir al caballo, menu del caballo, usar tiquet de monta, (los que canjeas x 25 min), revivirlo con las plantas, y todo.
    gracias a
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. por ayudarme con estas quest en sus tiempos.
  25. Me Gusta
    ninjapal reacted to SoyUnForero in [AYUDA]Quest Caballo   
    Gracias por el aporte 👌
×
×
  • Crear nuevo...