Advertisement
Luciano_fuentes

Untitled

Jan 5th, 2017
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.32 KB | None | 0 0
  1. Bueno tuve que hacer algunos trabajos para esta versión y me tuve que poner a ver cómo funciona el protocolo de esta versión. Se que más de uno lo sabe pero para los que son nuevos y empiezan en esta versión o los que se pasan de 12.x/13.x para estas versiones les va a venir más que bien :p
  2.  
  3. Como enviar datos desde el cliente al servidor:
  4.  
  5. Varias veces se envía datos desde el cliente al servidor, como por ejemplo cuando se ejecuta un comando, cuando se mueve el personaje, cuando tirás un hechizo, etc.
  6.  
  7. ¿Cómo se logra esto?
  8.  
  9. En el cliente cada vez que hacemos una acción tenemos que mandar una cadena de caracteres al servidor.
  10.  
  11. ¿Cómo envío en una cadena de caracteres al servidor? ¿Qué mando en esa cadena?
  12.  
  13. En el cliente tenemos un método que se llama SendData el mismo tiene un parámetro en donde tenemos que pasar la cadena que va a ir al servidor. En esa cadena tenemos que enviar un identificador como un "CADENA1" más toda la información que queramos que el servidor reciba la información que vos querés enviar al servidor debe estar separada por "-" menos el identificador.
  14.  
  15. Un ejemplo para ser más claros.
  16. Ponele que yo quiero enviar un reto a otro usuario, lo que debo hacer es:
  17.  
  18. Dim Cadena as String
  19.  
  20. Cadena = "RETO1VS1PEPITO-10000-0"
  21.  
  22. Que se traduce a:
  23.  
  24. "Reto 1vs1, nick al que envío, cantidad de oro, caen o no objetos"
  25.  
  26. Y esto lo podemos aplicar a un formulario por ejemplo:
  27.  
  28. Un text en donde tengamos que poner el nombre del oponente llamado "oponente_txt"
  29. Un text en donde tengamos que poner la cantidad de oro a retar "oro_txt"
  30. Un check en donde tengamos que poner si caen o no objetos "objetos_check"
  31. Un botón en donde tengamos que apretar para enviar el reto "EnviarReto_cmd"
  32.  
  33. Entonces al apretar en el botón ponemos:
  34.  
  35. Private Sub EnviarReto_cmd_Click()
  36. Dim strData as String '<- Para almacenar lo que vamos a enviar y que sea un poquito más ordenado.
  37.  
  38. 'Acá llenamos la variable.
  39. StrData = "RETO1VS1" & oponente_txt.text & "-" & oro_txt.text & "-" & objetos_check.value
  40. Call SendData(strData) '<- Enviamos la variable que almacena toda la data.
  41. End Sub
  42.  
  43. Ahora tenemos que ir a la parte del servidor.
  44.  
  45. En el servidor tenemos un método que recibe la data que acabamos de enviar en el cliente:
  46.  
  47. Que es este: Sub HandleData(UserIndex As Integer, ByVal rdata As String)
  48.  
  49. Userindex es el usuario que lo mandó y rdata la información que mandaste.
  50.  
  51. En el mismo método abajo de todo esto:
  52.  
  53. [code=vb]
  54. Dim Procesado As Boolean
  55.  
  56. If UserList(UserIndex).Counters.Saliendo Then
  57. UserList(UserIndex).Counters.Saliendo = False
  58. UserList(UserIndex).Counters.Salir = 0
  59. Call SendData(ToIndex, UserIndex, 0, "{A")
  60. End If
  61.  
  62. If Left$(rdata, 1) <> "#" Then
  63. Call HandleData1(UserIndex, rdata, Procesado)
  64. If Procesado Then Exit Sub
  65. Else
  66. Call HandleData2(UserIndex, rdata, Procesado)
  67. If Procesado Then Exit Sub
  68. End If
  69. [/code]
  70.  
  71. Tenemos que identificar qué mandamos en la rdata (que es la data que enviamos en el cliente) en el cliente, si no se acuerdan lean de vuelta, tenían que enviar un identificador en la data, bueno, ese identificador sirve para, valga la redundancia, identificar lo que vamos hacer con esa data.
  72.  
  73. Ahora... ¿Cómo identificamos?
  74.  
  75. Tenemos que cortarle a rdata (que, repito, es la información que mandamos desde el cliente) la cantidad de caracteres que tiene nuestro identificador y pasar toda esa cadena cortada a mayúscula. Una vez hecho esto tenemos que comparar la cadena que nos quedó con nuestro identificador.
  76.  
  77. Ejemplo:
  78.  
  79. If UCase$(Left$(rdata, 8)) = "RETO1VS1" Then
  80.  
  81. End If
  82.  
  83. ¿Qué hace ese código?
  84.  
  85. Lo siguiente:
  86.  
  87. Corta, con la función left, la cadena rdata desde izquierda a derecha la cantidad de caracteres que tiene nuestro identificador. Después con UCase$ lo pasamos a mayúscula, toda esa cadena que nos queda la comparamos con RETO1VS1.
  88.  
  89. Entonces ahora... si concuerda ¿Qué hacemos?
  90.  
  91. Si la data que tenemos tiene datos adicionales tenemos que sacar el "retos1vs1" de la cadena e ir separando la cadena con readfield e ir poniendo toda la información en variables.
  92.  
  93. Sigamos con el ejemplo de retos1vs1:
  94.  
  95. [code=vb]
  96. If UCase$(Left$(rdata, 8)) = "RETO1VS1" Then
  97. Dim Oponente as String
  98. Dim Oro as Long
  99. Dim CaenObjetos as Boolean
  100.  
  101. rdata = Right$(rdata, Len(rdata) - 8)
  102. Oponente = Readfield(1, rData, Asc("-"))
  103. Oro = CLng(2, rData, Asc("-"))
  104. CaenObjetos = CBool(3, rData, Asc("-"))
  105. End If[/code]
  106.  
  107. ¿Qué hicimos con esto?
  108.  
  109. rdata = Right$(rdata, Len(rdata) - 8)
  110.  
  111. Cortamos el "RETO1VS1" de la cadena. Ahora la cadena queda así: "OPONENTE-ORO-CAENOBJETOS"
  112.  
  113. Oponente = Readfield(1, rData, Asc("-"))
  114.  
  115. Con esto cortamos la cadena hasta el primer "-" y lo guardamos en la variable oponente.
  116.  
  117. Oro = CLng(2, rData, Asc("-"))
  118.  
  119. Con esto cortamos la cadena desde el primer "-" hasta el segundo "-" y convertimos esa cadena en Long y lo guardamos en la variable.
  120.  
  121. CaenObjetos = CBool(3, rData, Asc("-"))
  122.  
  123. Con estos cortamos la cadena desde el segundo "-" hasta el tercer "-" y convertimos esa cadena en Boolean.
  124.  
  125. Con esto ya enviamos la data que necesitábamos desde el cliente al servidor. Esto ya es todo, después ustedes manejan esa información como quieren.
  126.  
  127. Ahora como enviar datos del servidor al cliente, esto va a ser más fácil ya que tenemos varios conceptos aclarados.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement