Jump to content

[Consejos] Notas para Nuevos Clientes


Ragno

Recommended Posts


  • Group:  Members
  • Topic Count:  12
  • Topics Per Day:  0.00
  • Content Count:  82
  • Reputation:   40
  • Joined:  01/03/12
  • Last Seen:  

Esta es una guía que hice para el servidor del cual provengo y al que pertenezco. Todavía tengo que investigar muchas cosas sobre el funcionamiento de todo el cliente, pero creo que cubre lo básico. Espero sirva de ayuda para toda la comunidad de servidores privados y me ayuden a corregir las partes que estén equivocadas o que necesiten mayor detalle.

 
Quote
Estas son algunas de las cosas que he aprendido investigando sobre el tema y que van en relación al funcionamiento del Client Side.

El cliente se compone de 4 elementos importantes:

  • El ejecutable o exe del cliente y su correspondiente diff patch
  • Los Packets del Cliente
  • Los archivos Lua
  • La carpeta data del juego

No estoy muy versado en el tema, y estas son apenas notas de lo que he aprendido. Ojalá y sean de utilidad y puedan aprovecharse.

El ejecutable del juego


El ejecutable del juego se actualiza constantemente según las actualizaciones de kRO, añadiéndose o retirándose funciones en cada revisión. El sitio que actualmente recopila y lleva el archivo de Clientes por cada revisión es supportmii dirigido por Judas:

http://supportmii.com/ro1/Clients/

El sitio se limita únicamente a recopilar las versiones que se van liberando por kRO, pero se mantiene actualizada al día. Hasta el momento no he encontrado un sitio que publique el Changelog para cada revisión, así que se debe buscar en todas las comunidades de servidores privados diferentes opiniones para cada revisión o hacer propiamente las pruebas para testearlo.

Parchar el cliente


Al igual que los clientes sakray, los clientes renewall también necesitan ser parchados para que funcionen con los emuladores de RO.

Antiguamente se usaba Maldiablo's DiffPatcher como herramienta para parchar el cliente, el cual requería de un archivo Diff que sirviera para cada versión. En la actualidad la herramienta que se usa es Shin's DiffPatcher para parchar el cliente, ya que este incluye el Plugin WeeDiffGenerator el cual genera automáticamente los parches que pueden aplicarse al cliente, sin necesidad de usar un archivo Diff adicional.

Proyecto Shin's Diff Patcher: https://subversion.a...insDiffPatcher/

Descarga directa (ya contiene el SkipPacketHeaderObsfucation): http://www.mediafire...1jab6jy4nrzwbc3

Más información: http://rathena.org/b...s-diff-patcher/

Skip Packet Header Obsfucation

El Skip Packet Header Obsfucation es uno de los Patches que se pueden aplicar con el Plugin WeeDiffGenerator de Shin's Diff Patcher. Previene que la "ofuscación" de los packets del cliente ocasione que no conecte. El complemento está a disposición en la página de Supportmii y se instala sobreescribiéndolo al del archivo que viene dentro de la carpeta de Plugins de WeeDiffGenerator. [importante].

WDGSkipPacketHeaderObfuscation.dll: http://supportmii.co...Clients/Waeyan/

Packets


Esta es otra parte importante del cliente y consiste en enseñar al emulador cómo comunicarse con el cliente agregando a su Packet_DB los packets necesarios para cada versión de cada cliente.

Los packets se deben agregar al listado de db>packets_db.txt que se incluyen en el emulador. Así mismo, también debe actualizarse al principio del archivo la versión de Packet con la que se está trabajando:

packet_db_ver: 25
//packet_db_ver: default
 

El db/packet_db.txt de eAthena estaría bug, porque está configurado para que trabaje hasta la versión 25, cuando incluye al final la versión 26 y al agregar una nueva tendría que cambiarse a la versión 27 en el packet_db_ver.

También se debe actualizar en el emulador la nueva versión del cliente y esos cambios se aplican a los archivos src>common>mmo.h y src>map>clif.h

En el mmo.h se define la versión tomando la fecha del cliente. Por ejemplo, el packetver 20100728 corresponde al cliente 2010-07-28.

src>common>mmo.h

#ifndef PACKETVER
	#define PACKETVER 20120410
#endif
 

src>map>clif.h

{// packet DB
	MAX_PACKET_DB  = 0xA00,
	MAX_PACKET_VER = 30,
	MAX_PACKET_POS = 20,
};
 

Luego de eso se recompila el emulador.

Agregando nuevos Packets


El sitio que recopila los Packets es Earthlingz's Client Project, al igual que los archivos lua y la traducción de carpeta data.

Lista de Packets: http://subversion.as...ntSide/Packets/

Sin embargo, no se copia y pega el archivo de Packets de la versión correspondiente al cliente que se quiere agregar. Cada vez que se libera un nuevo cliente se agregan y se modifican packets del ejecutable y debe procurarse que sean esos packets los que se agreguen al packet_db.txt para que no se repitan, pero si se repite se usará la de la versión más alta.

Si tomamos como referencia el packet_db.txt de eAthena, está actualizado hasta 2010-11-24aRagexeRE y se deben incluir manualmente los nuevos packets que hayan salido hasta la versión del cliente que se desee implementar. Esto para que pueda ejecutarse el cliente correctamente.

Me tomaré el tiempo para hacer el changelog de packets hasta la versión actual, eso queda pendiente.

Archivos Lua


El cliente oficial de kRO incluye en su data.grf una serie de archivos con extensión ".lub". Estos archivos son los que controlan y definen todo lo que pueda relacionarse al cliente (siempre y cuando no sea material hardcoded del exe). Si se desea agregar un nuevo item, si se desea agregar (o corregir) un pet, los botoncitos que aparecen debajo de la Basic Window, los destinos del party booking, etcétera. Todo lo relacionado al cliente lo controla y manejan los Lubs.

Sin embargo, los archivos Lub como tal no pueden editarse con un simple editor de textos. Primero deben decompilarse y su resultado son los archivos ".Lua". Esas son versiones del mismo fichero pero decompiladas y editables por cada usuario.

Para que el cliente lea primero los archivos Lua antes que los Lubs, debe aplicarse el Parche "Load Lua berofe Lub" al momento de diffear el exe.

Descargando los Archivos Lua


Los archivos lua, al igual que los packets, se descargan del mismo Earthlingz Client Project, en la siguiente dirección:

http://subversion.as...de/Lua_Project/

Lo único que se debe observar es descargar la revisión correspondiente al cliente que se planea usar. Para conocer cuál es la revisión que le corresponde a nuestro cliente se consulta el changelog del proyecto: Changelog.txt

Conociendo cuál es la revisión que le corresponde, se descarga fácilmente usando el Tortoise SVN.

Tortoise SVN:

 

http://img708.imageshack.us/img708/5250/tortoisesvn1.png

http://img542.imageshack.us/img542/9197/tortoisesvn2.png

Carpeta Data


El último elemento que compone el cliente de juego, es la carpeta data. Aquí se incluyen las características de varios elementos del juego, principalmente del entorno gráfico.

El juego está en constante actualización y el Earthlingz Client Project es el que actualmente lleva el proyecto de traducción del cliente.

Las actualizaciones igualmente se pueden aplicar vía Tortoise SVN: Changelog.txt

Lo único en lo que se debe tener cuidado es con la tabla de descripciones y slots, y demás archivos modificados, ya que estas modificaciones corrigen errores de la data y lo mejor es agregar manualmente los cambios que deban incluirse a la data del servidor.


Esto es todo lo que se hasta el momento en el tema de los clientes. Aún tengo algunas dudas y me faltan por parchar algunos huecos. Espero haya sido de ayuda.

Ragno

Edited by Mael
Actualización de Información
  • Upvote 1
Link to comment
Share on other sites

  • 4 weeks later...

  • Group:  Members
  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  8
  • Reputation:   0
  • Joined:  08/15/12
  • Last Seen:  

Muchas gracias por tu guía me sacaste de muchas dudas XD

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...