GS-Zone

¿Alguien que me pueda explicar la v0.11.2? Ir al Indice

Moderadores: Moderadores de Argentum, Especialistas de Argentum, Especialistas de Programación

7

Nota » 15 Ago 2010 23:15

Un saludo cortez a todos, :D

Necesito que alguien me pueda explicar como como funciona la v0.11.2, que me pueda decir cuales son las variables que cambian en comparaciòn con la versiòn 0.12.x, si alguien que este bien a tanto de esta veriòn, le agradeceria mucho que me explicaran. ¡Gracias! :?:

OFF: Necesito saber porque me gustaria adaptar un còdigo de v0.11.2 para 0.12.x... tengo un buen desenvuelvimiento en la 0.12.x, pero no tengo ni la màs minima idea de la v0.11.2. ^^

Saludos. :)
Usuario Registrado
Newbie [3]
Registrado: Años de membresíaAños de membresía
Mensajes: 91

Nota » 15 Ago 2010 23:22

Los principales cambios, que abarcan gran parte de el ao son el protocolo BInario y el nuevo Engine grafico.

Es bastante complicado explicarte como se manejaria alguien para pasar un codigo ya que varia por el mismo.

Si tenes alguna duda te recomiendo que vallas a la seccion de 12.x o la mas actual que no presenta cambios drasticos, la 13.x

Alli te ayudaremos a adaptar tus codigos.
Aguante River Plate ! ! !
872
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14409
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)

Nota » 16 Ago 2010 02:54

Franeg95 escribió:Los principales cambios, que abarcan gran parte de el ao son el protocolo BInario y el nuevo Engine grafico.

Es bastante complicado explicarte como se manejaria alguien para pasar un codigo ya que varia por el mismo.

Si tenes alguna duda te recomiendo que vallas a la seccion de 12.x o la mas actual que no presenta cambios drasticos, la 13.x

Alli te ayudaremos a adaptar tus codigos.


Saludos Franeg95, :)

Si, entiendo todo lo que me dices, el problemas es que tengo el còdigo, y entonces lo tengo para v0.11.2, y no tengo idea de como pasarlo a la v0.12.x, ya que no tengo los conocimientos necesarios de la v0.11.2, segùn lo que tengo entendido, es que està versiòn cambia muchisimo su protocolo binario, su engine, un sin numero de variables que en el caso de la v0.12.x son diferentes, y eso es precisamente lo que necesito saber, porque por lo menos me desenvuelvo bien en la v0.12.x, pero en esta no tengo ni p.t de como empezar.

En cuanto al còdigo que te hablo de la v0.11.2, es el de NPC Inteligente del AOF de Salvito, que lo extrajè todo del còdigo fuente que libero del mismo, por eso posteo acà, porque pienso que es el mejor lugar para entender la propia versiòn, ¿Què me recomiendas que haga?, gracias capo. ^^

Saludos, Kcire22.- =$
Usuario Registrado
Newbie [3]
Registrado: Años de membresíaAños de membresía
Mensajes: 91

Nota » 16 Ago 2010 04:16

Kcire22 escribió:
Franeg95 escribió:Los principales cambios, que abarcan gran parte de el ao son el protocolo BInario y el nuevo Engine grafico.

Es bastante complicado explicarte como se manejaria alguien para pasar un codigo ya que varia por el mismo.

Si tenes alguna duda te recomiendo que vallas a la seccion de 12.x o la mas actual que no presenta cambios drasticos, la 13.x

Alli te ayudaremos a adaptar tus codigos.


Saludos Franeg95, :)

Si, entiendo todo lo que me dices, el problemas es que tengo el còdigo, y entonces lo tengo para v0.11.2, y no tengo idea de como pasarlo a la v0.12.x, ya que no tengo los conocimientos necesarios de la v0.11.2, segùn lo que tengo entendido, es que està versiòn cambia muchisimo su protocolo binario, su engine, un sin numero de variables que en el caso de la v0.12.x son diferentes, y eso es precisamente lo que necesito saber, porque por lo menos me desenvuelvo bien en la v0.12.x, pero en esta no tengo ni p.t de como empezar.

En cuanto al còdigo que te hablo de la v0.11.2, es el de NPC Inteligente del AOF de Salvito, que lo extrajè todo del còdigo fuente que libero del mismo, por eso posteo acà, porque pienso que es el mejor lugar para entender la propia versiòn, ¿Què me recomiendas que haga?, gracias capo. ^^

Saludos, Kcire22.- =$


Pasar un código no es tan dificil mas si ya lo tenés hecho, las variables no son ningún impedimento, las declarás y listo o te fijás cuales vendrían hacer en el nuevo código, si lo tenés postea el extraido y te lo traduzco

Ahí te ves.

Imagen

Imagen

Imagen

Imagen
Software Developer
192
Legendario Inmortal [1]
Registrado: 5 Años de membresía!
Ubicación: Caseros
Mensajes: 5071
Aportes: 30

Nota » 16 Ago 2010 04:27

A decir verdad no tengo ese codigo de fuente, ni sabia que estaba disponible.

Pero si te fijas en la 12.x se implemento un nuevo Pathfinding mas inteligente..

Fijate las diferencias que tiene entre uno y otro ( en cuanto a funcionamiento)... Notaras grandes diferencias.
Aguante River Plate ! ! !
872
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14409
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)

Nota » 23 Ago 2010 12:54

Coincido con mi compañero Franeg85. El codigo de 12.x con respecto al de 11.2 son muy distintos, como ya te dijeron anteriormente el protocolo de identificacion de paquetes cambio por completo, algunas rutinas se generalizadon y mejoraron su peformance.
Mira yo con DAO 1.8(basado en AoReady) estoy pasando por el mismo proceso que vos ya que DAO en su version 2.0 va a estar montado sobre 12.1 por lo tanto estoy pasando muchisimo codigo de 11.2 a 12.1. Realmente no es muy dificil, tendrias que tener en cuenta pocas cosas:
1)Variables nuevas declaradas en el codigo de 11.2 que deberias meter en 12.1(Esto no tendria que traerte problemas)
2)Ver que las enumeraciones, vectores, tipos, etc coincida o de lo contrario buscar el equivalente o declararlo para tus necesidades
3)Las llamadas a las funciones tiene varios parametros cambiados y son llamadas de otra forma, es importante que controles esto porque si no te va a tirar errores de Overflow por todos lados.

Si queres una solucion medio "tosca" te diria que copies el codigo de 11.2 en el modulo que creas que corresponde y lo trates de compilar o de ejecutar y ver que errores y mensajes te tira el Visual Basic para poder solucionarlos vos por tu cuenta.

Si te puedo dar una mano avisame! :D

Silver

Imagen
Director y Programador
<Destruction-Ao>
Director y Programador Destruction-Ao
19
Destructor de Mentes [4]
Registrado: 5 Años de membresía!
Mensajes: 659
Aportes: 6

Nota » 23 Ago 2010 14:58

Te voy a explicar masomenos como se envia un paquete desde el servidor al cliente( Para enviar del cliente al servidor es practicamente lo mismo, tan solo que en vez de escribir un Server_Packet_ID escribis el Client_Packet_ID

Empesamos:

Es un poco mas largo pero no es mas complicado.

Primero:

Server

Declaras el ServerPacketID

Vas a ver que hay un Enum llamado ServerPacketId

Al Final de dicho enum tenes que agregar tu Paquete. Ahora usaremos el paquete "Ejemplo"

Entonces:

Vamos al ServerPacketId y le Agregamos en una nueva linea:

Ejemplo 'Identificador del Paquete


Luego vas a tener que "enviar" lo que queres al cliente.

Para esto se crea un Write (Podes usar write como no, es solo el nombre del sub) + Nombre del Indetificador

Entonces seria:

WriteEjemplo

En el write lo que tenes que hacer no es mucho, veras que es bastante sensillo:



  1. On Error GoTo Errhandler
  2.      
  3.         Call UserList(UserIndex).outgoingData.WriteByte(ServerPacketID.Ejemplo)
  4. Call UserList(UserIndex).outgoingData.WriteLong(123123123)
  5. Call UserList(UserIndex).outgoingData.WriteInteger(32000)
  6. Call UserList(UserIndex).outgoingData.WriteASCIIString("Yo tengo un sapo que se llama pepe")
  7. Exit Sub
  8.  
  9. Errhandler:
  10.     If Err.Number = UserList(UserIndex).outgoingData.NotEnoughSpaceErrCode Then
  11.         Call FlushBuffer(UserIndex)
  12.         Resume
  13.     End If



Calma! No te apresures aca te lo explico:

On Error GoTo Errhandler

Aca le estamos diciendo que si hay algun error valla al manejador de errores.

Call UserList(UserIndex).outgoingData.WriteByte(ServerPacketID.Ejemplo)

Aca estamos enviandole al cliente el serverpacketid. Con esto el cliente sabra donde posicionarse para hacer la accion.

Call UserList(UserIndex).outgoingData.WriteLong(123123123)
Call UserList(UserIndex).outgoingData.WriteInteger(32000)
Call UserList(UserIndex).outgoingData.WriteASCIIString("Yo tengo un sapo que se llama pepe")

Aca le estamos enviando los datos al cliente.

Es sumamente sensillo.

Tenes que saber que es lo que estas enviando porque va a emplear un metodo para numero y otro para texto. A la vez tenes que saber si enviar numero, que valores envias, no podes poner WriteByte(123123123123) por que daria error, ya que la variable Byte abarca desde el 0 al 255

Pegate una mirada al ClsByteQueue, ahi vas a ver que para X dato vas a hacer un WRiteX, y tambien cuando lees, en vez de WRite usas ReadX

Sigamos:

Ya con esto armamos el "ENVIO" del paquete, pero ahora nos falta que el cliente haga algo con eso, porque sino no sirve.

Entonces ahora vamos al cliente:

Del mismo modo que en el servidor declaramos el ServerPacketID justo en la misma posicion que lo pusiste en el servidor.


Luego de esto tenes que agregar al select Case ServerPacketId que en todos los casos puede aparecer el tuyo, entonces hacemos esto:

Al select case le agregamos:

Case serverpacketi.Ejemplo

A continuacion en una nueva linea le agregas:

call HandleEjemplo (Repito es handle como pepito, solo se pone para encontrar todas las lecturas y escrituras juntas )

Que es lo que tiene el Handle?

No es mas ni menos que la lectura de los valores que le envio el servidor:

  1. Public Sub HandleEjemplo()
  2.  
  3.     Call incomingData.ReadByte
  4.  
  5. Oro= incomingData.ReadLong()
  6. Vida=incomingData.ReadInteger()
  7. Nombre=incomingData.ReadASCIIString()
  8.  
  9.  
  10. End sub
  11.  



Bien.

Lo que estamos haciendo aca es lo siguiente:


Call incomingData.ReadByte

Ahi removemos el ServerPacketID que le enviamos para identificar al paquete.

Oro= incomingData.ReadLong()

Aca estamos leyendo el primer valor que mandamos. Como mandamos un Long leemos un Long

Vida=incomingData.ReadInteger()

Aca estamos leyendo el segundo valor que le enviamos. Como era un Integer, leemos un integer.

Nombre=incomingData.ReadASCIIString()

Aqui Leemos el ultimo valor enviado, y como era Texto lo leemos como tal.

Ahi ya tenes leidos los valores enviados.

Con eso ya podes hacer lo que queres.

Ejemplo

Despues de esas lineas agregas:

Call RobarYMatar(Nombre,Oro,Vida)

(Cualquier cosa puse ahi jaja)

Pero es un ejemplo.


Para hacer un envio del cliente al servidor es lo mismo nomas que partis desde el cliente y que en vez de ser ServerPacketid es ClientPacketId.

Ademas en el servidor tenes que modificar la constante Client_Packet_ID, a esa le incrementas en 1 el valor(dependiendo de la cantidad de paquetes)

Bueno, creo que quedo bien explicado. Espero que entiendas :
Aguante River Plate ! ! !
872
Moderador
Registrado: Años de membresíaAños de membresíaAños de membresía
Ubicación: Villa adelina, Vicente Lopez.
Mensajes: 14409
Aportes: 304
Premios: 10
Señor Moderador (3) Señor Reglamento (1) Aportes (2) Embajador (3) Detector de Bugs (1)


Volver a AO 0.11.2 / AOReady

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados