Jump to content

ArkaNo96

Miembro
  • Contador contenido

    103
  • Ingreso

  • Última visita

  • Días ganados

    6

Actividad de reputación

  1. Me Gusta
    ArkaNo96 reacted to LovePlay in [PSD Ná' más] Create & Select   
    Aqui os dejo los PSD de unas select & create que hice hace un tiempo, la parte py, no me gusto como quedo asi que os dejo solo los psd.
     
    Hice varias versiones para cada uno.
     
    -------------------------------------------- Create --------------------------------------------
     
     

     
     


     
    -------------------------------------------- Select --------------------------------------------
       

     

     
     
     
    ~ Material usado by Zielsko ~ 
    ~ Diseñado & Adaptado by LovePlay ~
     
    Ya me arte de usar el material de Zielsko, asi que el proximo diseño que postee, que sera una web en PSD, sera 100% mio
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Como hacer que esto este en un cliente (?)
    Agregad a sema, a Jfirewall o a FelipeArd y spamead como su no hubiera un mañana pequeños mochuelos. #Titulo ~ Descriptivo
  2. Me Gusta
    ArkaNo96 got a reaction from PromeTheuS in Ofresco mis servicios en php y html.   
    Buena persona
  3. Me Gusta
    ArkaNo96 reacted to Warlock in Ofresco mis servicios en php y html.   
    Bueno lo que dice el titulo si alguien tiene problemas con su web o necesita ayuda ya sea de conexion, falta de archivos, agregar script, agregar imágenes, agregar tablas, categorías, nuevos botones, traducción, paneles administrativos, o lo que sea  enviame mensaje y con gusto te ayudare siempre y cuando sea en mis ratos libres, "ojo" solo ayuda, eso lo hago gratuitamente, ya si quieren algo personalizado como un diseño nuevo o alguna herramienta ( como un script de referidos completo parte db y web) sera con una pequeña comisión ya que tendría que emplear mas tiempo, poco a poco iré subiendo algunas creaciones mías y algunos trabajos que les pueden servir como paneles de gm ( con restricción ), script de itemshop, y algunas web que tengo traducidas 100% al español pero eso cuando tenga mas tiempo. 
     
    PD: No se donde va este tema pero algún mod lo podrá mover.
  4. Me Gusta
    ArkaNo96 reacted to WeedCalifa in [TIP] Edición permanente y facil del drop de yang y exp del servidor   
    Muy buenas a todos, bienvenido a otro de mis aportes, hoy os traigo unas querys con las que podréis multiplicar o dividir el yang y la exp que dan los mobs de vuestro servidor, este metodo es más fiable que los famosos Rates, porque estos nunca varían y tampoco se caen. Sé que algunos ya los conocerán pero bueno aquí estamos para ayudar a los que no saben, y por ello lo posteo puesto que no lo he visto por ninguna parte.
     
     
    -QUERY PARA MULTIPLICAR EL YANG QUE DA CADA MOB:
    UPDATE player.mob_proto SET gold_min=gold_min*2 , gold_max=gold_max*Nº -QUERY PARA DIVIDIR EL YANG QUE DA CADA MOB:
    UPDATE player.mob_proto SET gold_min=gold_min/2 , gold_max=gold_max/Nº -QUERY PARA MULTIPLICAR LA EXP QUE DA CADA MOB:
    UPDATE player.mob_proto SET exp=exp*Nº -QUERY PARA DIVIDIR LA EXP QUE DA CADA MOB:
    UPDATE player.mob_proto SET exp=exp/Nº ESPLICACIÓN DE LAS QUERYS:
     
    Como ven, el " * " (asterisco) significa multiplicar, seguido pone Nº, esto lo editan por el número que quieran que se multiplique, ejemplo, 2, se multiplicará por 2.
     
    En la otra query, el " / " (guión) significa la división, seguido, como he esplicado antes, cambian Nº por el número por el que se dividirá la exp o yang de cada mob.
     
     
    ¿COMO LAS INSTALO?
     
    Fácil, primero abrimos el navicat y vamos a la tabla Player, allí escogemos la opción de Query, Nueva Query, y pegamos la que corresponda. 
    Finalmente reiniciamos el servidor, y ya está.
  5. Me Gusta
    ArkaNo96 reacted to WeedCalifa in Página web completa y guapisima!   
    Hola amigos de MZ en esta ocasión os traigo una pagina Web completísima que pensaba traducir para mi servidor pero al final como no la utilizaré preferí postearla. La web lo cierto es que es muy chula y os dejo también una Demo para que la veáis en acción.
     
       ¿Qué contiene?
     
    - Panel de administración
    - Panel de usuario
    - Protección contra Floods
    - Desbuguear personaje
    - Registro funcional
    - Ranking de PJ funcional
    - Loging funcional
    Y MUCHO MÁS
     
       ¿Idioma?
     
    Está en rumano, pero es facil de traducir
     
     FOTOOOO!  

     

    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.  
     
    Regalame un Like si te gustooo! Laralalalaa!
     
  6. Me Gusta
    ArkaNo96 reacted to WeedCalifa in [Recopilación] Utilidades "Bugs y Traducciones" Para Files By Maxmi   
    MUY BUENAS A TODOS LOS AMIGOS DE METIN2 ZONE, EN ESTE SEGUNDO POST PARA LA COMUNIDAD HISPANA, HAGO UNA PEQUEÑA RECOPILACIÓN DE LOS ARREGLOS DE BUGS Y LAS TRADUCCIONES DE LOS SERVER FILES BY MAXMI, PARA LOS QUE LOS UTILICEN (ME INCLUYO).

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
     
      TRADUCCIONES:
     
    Por Arkano96
    - CLIENTE: Locales (item_proto + mob_proto) tambien los .sql
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Por Alejando&Alicia21
    -SERVIDOR: Nombres de las NPCS en español
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Por WeedCalifa
    - SERVIDOR: Carpeta quest+object 70-80% traducido
    Descarga: 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.  
     
    BUGS:
     
    Por Desmint
    - Catatumbas del diablo, sala 1 (quest arreglada)
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Por Serex
    - Solucionar borrar pj
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    EN PROCESO...
    Bug en evento arena
     
     
    SI ENCONTRAIS MAS BUGS, O TENEIS LA SOLUCIÓN, ESCRIBIR UN COMENTARIO O MP Y LO PONDRÉ.
     
    ERRORES:
     
    [sOLUCIÓN] Error, Mis amigos no se pueden conectar al servidor.

    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.  
      ¡Si te sirvió el post dame un Like!
  7. Me Gusta
  8. Me Gusta
    ArkaNo96 reacted to PACI in [Guia] Actualiza tu cliente   
    Hola.
    Hay gente que aún usa (tanto en cliente, como en servidor) cosas viejas, os traigo esta guia para que podáis "actualizar" vuestro cliente, y ya de paso vuestros cores para una versión más estable, y menos.. digamos peligrosa, aunque no es la palabra correcta.
     
    Desde hace ya mucho tiempo, tenemos disponible los binarios cuya revisión es la 34xxx o superior, aunque, desde que han salido, veo aún mucha gente de la comunidad hispana de metin2 usando los binarios viejos, o porque no saben hacerlo, o porque no quieren arriesgarse.
     
    Yo personalmente os recomiendo, ante todo, que actualicéis todo lo vuestro.
     
     
    Qué hay que cambiar para usar un binário >= 34k y <= 36k ?
    Los cambios para usar un binario entre 34k y 36k son muy simples, y no muy dificiles de hacer.
    Lo primero es cambiar vuestro game y db, os recomiendo la revisión 34083 y 33820 (game y db, respectivamente) para evitar errores de packets, y también para usar un game mucho mejor que del 2089M para abajo.
     
    Al cambiar la versión de la db para la 33820, las tablas item_proto y mob_proto dejan de ser utilizadas, aunque podeis usar esta librería de
    Debes iniciar sesión para ver el contenido del enlace en esta publicación. para volver a utilizar las tablas en vez de archivos *.txt: Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    La parte del cliente es muy sencilla, solo tenéis que extraer vuestro cliente entero, y, donde el *.xml buscamos todos los type="2" y los reemplazamos por type="1". Si usais EterNexus, que es un extractor que no crea el *.xml, solo tenéis que extraer todo el cliente, y volver a compilarlo.
     
    En el uitooltip.py del root, deberéis cambiar esto:
     
    item.APPLY_DEF_GRADEitem.APPLY_ATT_GRADE  
    Por:
     
     
    item.APPLY_DEF_GRADE_BONUSitem.APPLY_ATT_GRADE_BONUS  
     
     
    Con la salida de las revisiones 40k y con la salida del source, la mayoría de la gente dejó ya de usar las versiones anteriores a esta para compilar una propria modificandolo a nuestro gusto, como yo y muchos otros, o usar el famoso bin 28k con el game 40250.
     
     
    Qué hay que cambiar para usar un game r40k ?
    Además de la db, game, y la adición de los *.txt (item_proto.txt, item_names.txt, mob_proto.txt, mob_names.txt), debereís hacer bastantes cambios a nível de cliente.
     
    Lo primero es cambiar el nombre de vuestro locale.py para localeinfo.py. En los demás archivos de root, debereis cambiar todos los import que se hagan al locale y todas las cosas que llamen ese archivo.
     
    Ejemplo:
     
    import locale -> import localeInfolocale. -> localeInfo. NO CONFUNDIR CON uiScriptLocale!!  
    Después de esto hay que cambiar todos los archivos de la carpeta lib y la python22.dll/python27.dll (depende del tipo de binario que tengáis)
     
     
    Y eso es todo, por lo menos lo que yo hice para usar las cosas del source.
     
    Saludos y suerte.
  9. Me Gusta
    ArkaNo96 reacted to LovePlay in Saben a causa de que puede ocurrir esto?   
    En la tabla quest en logs/quest en la columna szName hay algun problema haz lo mismo que te dije con la otra, o haces un truncate
  10. Me Gusta
    ArkaNo96 got a reaction from MentaL in item_proto y mob_protos cliente y db item_proto.sql y mob_proto.sql de los Files maxmi traduccidos   
    Bueno estoy haciendo limpieza en ,y mi pc, y me encontre los files de maxmi que yo traducci hace mucho como cliente y db y antes de borrarlos, decidi  postear, los locales y los y item_proto y mob_proto como cliente y db 100% español para que tengais los files un pokito en español...mejor español que turco o alemán espero que les sirva de ayuda
     
    Asi en la parte del cliente, trae 4 locales pegar los 4 en  el cliente, pero solo leera 1 y creo que es locale_de pero colocar los 4
     
    Link descarga

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    UN Saludito a todos skype cartepo17
     
  11. Me Gusta
    ArkaNo96 got a reaction from caanmasu in item_proto y mob_protos cliente y db item_proto.sql y mob_proto.sql de los Files maxmi traduccidos   
    Bueno estoy haciendo limpieza en ,y mi pc, y me encontre los files de maxmi que yo traducci hace mucho como cliente y db y antes de borrarlos, decidi  postear, los locales y los y item_proto y mob_proto como cliente y db 100% español para que tengais los files un pokito en español...mejor español que turco o alemán espero que les sirva de ayuda
     
    Asi en la parte del cliente, trae 4 locales pegar los 4 en  el cliente, pero solo leera 1 y creo que es locale_de pero colocar los 4
     
    Link descarga

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    UN Saludito a todos skype cartepo17
     
  12. Me Gusta
    ArkaNo96 got a reaction from dracux in item_proto y mob_protos cliente y db item_proto.sql y mob_proto.sql de los Files maxmi traduccidos   
    Bueno estoy haciendo limpieza en ,y mi pc, y me encontre los files de maxmi que yo traducci hace mucho como cliente y db y antes de borrarlos, decidi  postear, los locales y los y item_proto y mob_proto como cliente y db 100% español para que tengais los files un pokito en español...mejor español que turco o alemán espero que les sirva de ayuda
     
    Asi en la parte del cliente, trae 4 locales pegar los 4 en  el cliente, pero solo leera 1 y creo que es locale_de pero colocar los 4
     
    Link descarga

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    UN Saludito a todos skype cartepo17
     
  13. Me Gusta
    ArkaNo96 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.
  14. Me Gusta
    ArkaNo96 got a reaction from Raziel in [AYUDA] Compilador/Descompilador Item_proto 40k   
    Pasamelos, yo te los compilo
  15. Me Gusta
    ArkaNo96 reacted to pepineitor in Alguien, Me podria crear una quest ,para comprar los bonus?   
    quest bonus beginstate start beginwhen idcofre.use beginif pc.count_item(71094) < 1 thenpc.remove_item(item.get_vnum(),1)pc.give_item2(71094,10)endendendend
  16. Me Gusta
    ArkaNo96 got a reaction from PACI in Sistema de Banco - Como diós manda   
    LoL muy buena Paci te sales te dejo mis gracias =)
  17. Me Gusta
    ArkaNo96 reacted to Riochu™ no es in Armaduras Feliz Navidad.   
    Feliz navidad chicos aqui os dejo estas armaduras espero que os gusten
     
    Y que lo paseisi bien estos dias xd
     
    Mas tarde pondre una guia de poner brillos diferentes
     




     
    Descarga
     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  18. Me Gusta
    ArkaNo96 reacted to Hawk Server's in Inventory Window   
    Una ventana de inventario modificada por mi horizontal con los bonus en la parte de abajo
     

    PD: Para poderlo usar tienen que tener instalada la tabla de bonus en invantario en su cliente, se vale dar las gracias si les gusta y si lo usan
     
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.!RRZQyKgJ!HTV2N0mVjgreeYhTQ8q6qByM3LFdN48-hvZtUSkcr9Q  
  19. Me Gusta
    ArkaNo96 reacted to EzekielitohMercury in KillGUI-Design   
    Hola amigos les traigo un KillGUI-Design que ami me gusto mucho espero que a ustedes tambien
     
    Les dejo una foto
     

     
    Descarga: Debes iniciar sesión para ver el contenido del enlace en esta publicación.
     
    Fuente:epvp
  20. Me Gusta
    ArkaNo96 reacted to JosanG in Krewella - Play Hard (2012)   
    Krewella es un grupo Norteamericano, de Chicago, formado por tres integrantes.
     
    Su música es Drum'n Bass, Dubstep, progressive y electro house, dance...
     
    Este es el CD completo, para quien quiera descargarlo: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.  
    Y el tracklist por si queréis echarle un vistazo antes. Yo lo descargaría xD
     
    01 – Play Hard 02 – Killin` It 03 – Can`t Control Myself 04 – Alive 05 – One Minute 06 – Feel Me   Es un album debut, es por eso que solo tiene 6 canciones. El día 24 sale el segundo álbum.   Saludos!
  21. Me Gusta
    ArkaNo96 reacted to izaviona in Daft Punk - Random Access Memories   
    Daft Punk - Random Access Memories[FLAC - CALIDAD STUDIO] 1400 Kbps

     
     
    Información

    Artista: Daft Punk
    Titulo: Random Access Memories
    Fecha: 17 Mayo 2013
    Productora: Columbia Records
    Genero: French house, disco, funk
    Tamaño: 1,40 gb
    Codec: FLAC, Calidad de Stuido sin comprimir.

    Tracklist
    1.- Give Life Back to Music
    2.- The Game of Love
    3.- Giorgio by Moroder
    4.- Within
    5.- Instant Crush
    6.- Lose Yourself to Dance
    7.- Touch
    8.- Get Lucky
    9.- Beyond
    10.- Motherboard
    11.- Fragments of Time
    12.- Doin' It Right
    13.- Contact



    Descarga


    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  22. Me Gusta
    ArkaNo96 reacted to Serex in Caribe 2004   
    Bueno, para estrena la sección de música os dejo uno de los CDs de mi disquetera, es buenísimo caribe 2004, oir estas canciones te hacen volver atrás.
     
    Buenísimo, no lo encontré en todo internet, así que lo subí yo aquí os lo dejo.
     

     

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
  23. Me Gusta
    ArkaNo96 reacted to Tiico™ in [QUEST]Quest de Cofres   
    Holaaa , hace unas horas estaba mirando unas quest , etc y vi el  "math.random" donde puse a prueba mi conocimiento :c y les hice esta quest que va de lujo , Se trata de que cada cofre te da un item tiene 1 % de 6 % de prob.
    quest sistema_de_cofres begin state start begin when 50137.use begin say_title("Cofre Amarillo:") say("Hola "..pc.get_name().."") say("Este es un cofre muy maravilloso,") say("El cual si lo abres te dara items realmente") say("Buenisimos .") say("Para Abrir el cofre , es necesario tener") say("La llave amarilla:") say_item_vnum(50155) wait() say("Bueno como ves , tienes que tener") say("Esa llave.") say_reward("Deseas abrir el cofre?") local s = select ("Si","No") if s == 2 then return end if s == 1 then if pc.count_item(50155) == 0 then say_title("Cofre Amarillo:") say("No tienes ninguna llave para") say("abrir el Cofre Amarillo.") end say_title("Cofre Amarillo:") say("Bien , por haber abrido el cofre") say("Se te ha dado una recompensa , fijate.") local premio = {12345,12341,12345,12346,12575,12396} pc.give_item2(premio[math.random(1,6)]) end end endend Espero mis +1 porfis ..
  24. Me Gusta
    ArkaNo96 reacted to Alakazam in 9 colas con textura editada   
    Hola amigos de MZ, les traigo una textura editada por mi del MOB 9 colas. Espero que les sea de utilidad y si les gusta pues mejor.
    Aquí la muestra:

    Para aquellos que no sepan instalarla o no saben donde va es muy fácil (en casos normales):
    -Descompilamos monster.eix y epk.
    -vamos a la ruta ymir work/monster/fox_ninetail
    -una vez ahí, debemos sustituir el archivo .dds por el que dejo en el .rar
     
    Descarga: 
    Debes iniciar sesión para ver el contenido del enlace en esta publicación.!fFVjxIAS!PSa0dEE5xLaVgWxq6muL_n5jyNINOUyc5tmhyPNg6Eg  
    Saludos y que les vaya bien.
     
  25. Me Gusta
    ArkaNo96 reacted to Anthony's in [Guía]Como reparar las Vetas   
    ¡Hey buenas usuarios de Metin2 Zone!

    Hoy os vengo a enseñar como modificar las Vetas de los Mapas Betas del Metin2 Oficial.

    Esta guía es más practica para los files Invoice.


    ¡Empecemos!

    Primero tendremos que ir a la siguiente ruta:

    Navicat -> Player -> Mob_Proto Dentro de la ruta tendremos que buscar el siguiente id:

    30301 - 30302 - 30303 - 30304 - 30305 Sustituimos esos 5 codigos por los siguientes:

    50614 - 50615 - 50616 - 50617 - 50618 Y tendrá que quedar de la siguiente manera:

    Ahora iremos a desencriptar el cliente. Tenemos que desencriptar el archivo llamado ROOT.
    En root tendremos que buscar el siguiente archivo:

    npclist.txt Lo abrimos con Notepad ++ y buscamos los siguientes números:

    30301 - 30302 - 30303 - 30304 - 30305 Y lo sustituimos de esta forma:

    50614 - 50615 - 50616 - 50617 - 50618 Quedara así:

    Guardamos el archivo y lo compilamos. Haremos lo mismo con mob_proto del cliente.
    Ahora vamos al filezilla y buscamos la siguiente ruta:

    /usr/home/game/share/locale/germany/quest[ Y buscamos la siguiente quest:

    [/i][/b]quest mining begin[/center] state start begin when 20015.chat."Minería" begin setskin(NOWINDOW) npc.open_shop() end when 20015.take with item.vnum >= 29101 and item.vnum < 29200 and item.get_socket(0) != item.get_value(2) begin say("²{¦bªº¾SÀY­×½m«×¤£¨¬, µLªk§ï¨}.") end when 20015.take with item.vnum >= 29101 and item.vnum < 29200 and item.get_socket(0) == item.get_value(2) begin say("§A·Q§ï¨}¾SÀY¶Ü?[ENTER]Åý§ú¬ý¬ý...[ENTER]§Aªº¾SÀYµ¥¯Å¬O".. item.get_level().."") if item.get_value(3) == 100 then say("§A·Q§ï¨}¶Ü?") else say("²{¦b§úªº¯À¤O¤£¨¬, §ú§ï¨}¾SÀYªº¸Ü") say("100­Ó¤¤" .. 100-item.get_value(3).. "­Óªºµ¥¯Å·|¤U­°. ") say("§AáÙ¬O­n§ï¨}¶Ü?") end local s = select("¬Oªº","¤£¬O") if s == 1 then local f = __refine_pick(item.get_cell()) if f == 2 then say("§ï¨}¤¤µo²{¿Ù»~, ©Ò¥H³o¦¸§ï¨}¥¢±ñ¤F.[ENTER]²{¦b§ú§â¾SÀYáÙµ¹§A[ENTER]¤U¦¸¦A¸Õ¸Õ§a.") elseif f == 1 then say("²{¦bµ¹§Aµ¥¯Å¤W¤Éªº¾SÀY! ") else say("«u§r~ §ï¨}¥¢±ñ¤F. ¤£¦n·N«ä[ENTER]µ¥¯Å¤U­°¤F. ") end else say("¨º¦n§a, ¤U¦¸¦A¨£¤F~") end end when 20047.click or 20048.click or 20049.click or 20050.click or 20051.click or 20052.click or 20053.click or 20054.click or 20055.click or 20056.click or 20057.click or 20058.click or 20059.click or 50614.click or 50615.click or 50616.click or 50617.click or 50618.click begin if pc.is_mount() != true then pc.mining() end end end end Hacemos en el Virtual Box un ./qc y luego un /reload q en el servidor.

    Y fin ya tendremos nuestras VETAS reparadas.
    Bug que teníamos antes:

    Bug Reparado:

    Quest en Mediafire:

    Debes iniciar sesión para ver el contenido del enlace en esta publicación.
×
×
  • Crear nuevo...