Crear un Emulador Dofus 1.29

Hola a todos desde que soy adolescente me ha gustado mucho la programacion y he logrado tener ciertos conocimientos en un lenguaje de programacion llamado java en el cual se hacen los emuladores privados de dofus

Para empezar necesitaremos de un IDE un entorno de desarrollo para poder empezar a escribir nuestro codigo que sera el emulador


Antes de empezar, este tutorial es muy largo, lo ire actualizando poco a poco la gracia es enseñarles como funciona 


Empezemos....


Vamos a abrir nuestro entorno de desarrollo eclipse y le damos FILE y  crear un nuevo proyecto le pondremos 
el nombre que nosotros queramos en mi caso le pondre 

Jonemux

En java los nombres de los proyectos empiezan con mayuscula, los paquetes con minuscula y las clases con mayuscula.






Le damos a next y donde dice libraries



Le damos en ADD EXTERNAL JAR



Y seleccionamos todo lo que vamos a descargar en este LINK le damos abrir y finish

http://raboninco.com/1UnNE




Se nos creara algo como esto




Le damos click derecho a src > new > package

Le ponemos sesion

le damos click derecho al paquete que creamos y nueva clase



Le vamos a poner en Name lo siguien "ServidorLogin", recuerden que en java las clases empiezan en mayuscula y no se hacen espacion sinoque se empieza con otra mayuscula

Primero creamos una variable de tipo NioSocketAcceptor llamada aceptador

private static NioSocketAcceptor aceptador;


Ahora creamos un constructor de la clase ServidorLogin

public ServidorLogin(){

          }

    
Nos quedara asi, al copiar el codigo automaticamente eclipse nos importa la libreria necesaria



Dentro de nuestro constructor inicializamos aceptador cono NioSocketAcceptor

aceptador = new NioSocketAcceptor();

y copiamos abajo el siguiente codigo que va a ser el decodificador de paquetes

aceptador.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF8"), LineDelimiter.NUL, new LineDelimiter("\n\0"))));


Abajo de esto hacemos lo mismo y llamamos el metodo setHandler que especifica cual es la clase manejadora de sesiones, mensajes y conexiones

en este caso le diremos que es esta con this,.

aceptador.setHandler(this);


Nos queda algo asi



Donde dice setHandler marca un error ya que la clase que pusimo ahi this no tiene una interfaz implementada que necesita la clase manejadora para eso le damos al bombillo amarillo y le damos a let "servidorlogin" implements "Iohandler" , automaticamente la clase ServidorLogin tendra implementado el IoHandler 



Sigue apareciendo un error ahi entonces hacemos lo mismo le damos al bombillito amarillo y a add unimplemented methods


nos aparecera algo como esto


Es una interfaz que nos brinda mina core para poder manejar las conexiones de nuestro emulador en este caso un servidor TCP, metodos como mensaje recibido, sesion cerrada y sesion creada

Por eso esta clase se le llama Handler o manejador porque maneja las conexiones


para ver si ha funcionado por el momento hacemos una pequeña prueba..

vamos a donde dice sessionCreated el metodo que es llamado cada vez que se crea una conexion osea cada vez que un usuario entra a nuestro servidor y se conecta en el login


Ponemos algo como

System.out.println("Se ha conectado un nuevo cliente");


Ahora para poder a escuchar el servidorTCP que este atento a las conexiones bajamos a lo ultimo y arriba de la ultima llave copiamos este codigo

public void start() {
if(aceptador.isActive()) return;
try { 
aceptador.bind(new InetSocketAddress(444));
System.out.println("SERVIDOR MINA ABIERTO");
} catch (IOException e) {
e.printStackTrace();
System.out.println("SERVIDOR CERRADO");
System.exit(0);
}
}
El codigo dice que si aceptador es activo,aceptador esta a la escucha en el puerto 444  , se pone un try ya que es una conexion o un proceso que si falla se puede caer el programa y lo hacemos para que si no se lleva acabo habra una excepcion y no se caiga el programa, como lo dice ahi tratar de escuchar y servidor mina abierto si no se puede entonces se cierra el sistema de forma correcta y se imprime servidor cerrado



    Ahora ya esta listo debemos de iniciarlo creamos un nuevo paquete llamado main y en el una clase llamada Main 


chuleamos la casilla marcada



El metodo main le indica a programa donde empezar

le damos a finish

y adentro del metodo main ponemos esto


new ServidorLogin().start();

esta llamando al constructor del ServidorLogin y al metodo start


Ahora si iniciemos el emulador.


le damos click derecho a Main.java


en run as y java aplicacion


Automaticamente en la parte de abajo nos abrira la pestaña console y nos debe salir lo siguiente



Vamos a nuestro cliente y configuramos la config.xml con localhost y puerto 444

lo abrimos y nos conectamos con usuario asd y contraseña asd


Le damos jugar !! y no pasara nada pero si vemos nuestro emulador 


Wualaaaa !!



Ahora debemos programar la conexion




    










Comentarios