Buenas, hoy vengo con un peque?o problema y es que no se como enviar texto con 39dll. Me explico mejor, quiero hacer un sistema de chat, todo bien pero cuando tengo que leer la variable que env?o (lo que el usuario escribe) se me hace un l?o b?rbaro, lo que he usado hasta el momento es:
Enviar mensaje:
[gml]clearbuffer();
writebyte(msj_chat);
writestring(global.nick+": "+keyboard_string);
sendmessage(socket);[/gml]
Para leerlo en el servidor:
[gml]receivemessage(player);
msj_chat = readbyte;
????? = readstring;[/gml]
El problema es en donde sale ????? que no se como llamar a esa funci?n ya que es lo que el usuario pone en la caja de chat.
?C?mo deber?a de llamar a ?????, mejor dicho, c?mo tendr?a que hacer o poner para que lo lea con readstring?
Desde ya, muchas gracias.
... Hmmm...
?Cu?l es el valor de msj_chat en el cliente?
Es una constante definida, en este caso tengo cinco variables definidas, una es para el nombre, otra para la posici?n x, otra para y, otra para la id y la ?ltima es msj_chat.
OK. Supongo que todas esas constantes tienen un valor distinto, ?no?
Hmm... ?Es la primera vez que trabaj?s con la 39dll? Pregunto porque el c?digo que posteaste para recibir el mensaje me parece raro, y al menos cuando yo usaba la 39dll, la forma de manejar los paquetes recibidos era muy distinta.
Era algo as?:
[gml]// Comenzar a recibir mensajes.
while (true) {
// Recibir un mensaje.
size = recievemessage(player);
if (size <= 0) {
/*
* Si el tama?o del mensaje es menor o igual a 0, no quedan mensajes
* por leer en este step.
*/
break;
}
// Leer el id del mensaje.
msgid = readbyte();
switch (msgid) {
// Si el id es msj_chat...
case msj_chat:
// Leer el texto del mensaje.
text = readstring();
break;
}
// Al finalizar, volver a empezar.
}[/gml]
Por cierto te recomiendo que las constantes que definas las pongas en may?scula para diferenciarlas mejor de las variables normales.
Para hacerlo me bas? en la forma de enviar las coordenadas del personaje, pero tambi?n me bas? en la wiki de YoyoGames que tiene un apartado sobre 39dll. Al enviar datos utilizando ese c?digo (el que puse) env?a datos s?lidos, es decir datos que no se modifican, pero para el caso del mensaje del chat no se como hacer :S
El c?digo que pusiste para enviarlo est? bien (aunque yo enviar?a en nick anteriormente por separado), el problema es el c?digo que us?s para recibirlo:
[gml]receivemessage(player);[/gml]
Ah? recib?s un mensaje. OK. Pero por step se pueden mandar m?s de un mensaje. Si recib?s solo uno por step, el programa simplemente no funciona. Y si ten?s suerte y funciona, ser?a muy lento, y adem?s, si no me equivoco, se ir?an acumulando en la RAM los mensajes que llegan.
[gml]msj_chat = readbyte;[/gml]
Ac? asumo que quisiste poner readbyte(). En ese caso, est?s leyendo lo que ser?a la ID del mensaje. Pero la est?s asignando a msj_chat, que seg?n me dijiste es una constante. Primero que no se puede cambiar el valor de una constante, y segundo que no tendr?a sentido.
[gml]????? = readstring;[/gml]
Y ac? asumo que quisiste poner readstring(). Ahora estar?as leyendo el texto del mensaje. Pero no entiendo por qu? los interrogantes. Ah? simplemente ten?s que poner una variable donde vayas a guardar el mensaje para despu?s mostrarlo en pantalla.
EDIT: Mir?. ac? te dejo un ejemplo de chat muy simple y sencillo que hice hace tiempo.
Perd?n por no contestar pero no me he podido conectar.
Gracias Wadk, se agradece la ayuda ^^, ahora pruebo a ver que tal anda, a ver si puedo enviar aunque sea un "Hola Mundo" del cliente al servidor o viceversa xD.