Mensajes

El segundo mecanismo de comunicación que el Game Maker soporta es el envío y la recepción de mensajes. Un jugador puede enviar mensajes a un jugador o a todos los jugadores. Los jugadores pueden ver si han llegado mensajes y llevar a cabo las acciones adecuadas. Los mensajes pueden enviarse en modo garantizado en el que estás seguro de que llegarán (pero puede ser lento) o en modo no garantizado, el cual es más rápido.

 

Existen las siguientes rutinas de mensajes:

mplay_message_send(player,id,val) Envía un mensaje al jugador player (ya sea un identificador o un nombre; usa 0 para enviar el mensaje a todos los jugadores). id es un entero que funciona como identificador del mensaje y val es el valor (ya sea un número real o una cadena). El mensaje es enviado en modo no garantizado. Si val contiene un mensaje de texto la longitud máxima del mensaje es de 30000 caracteres.

 

mplay_message_send_guaranteed(player,id,val) Envía un mensaje al jugador player (ya sea un identificador o un nombre; usa 0 para enviar el mensaje a todos los jugadores). id es un entero que funciona como identificador del mensaje y val es el valor (ya sea un número real o una cadena). Este es un envío garantizado. Si val contiene un mensaje de texto la longitud máxima del mensaje es de 30000 caracteres.


mplay_message_receive(player) Recibe el siguiente mensaje de la cola de mensajes que llegó del jugador player (identificador o nombre). Usa 0 para indicar mensajes de cualquier jugador. La rutina indica si de hecho hubo un nuevo mensaje. Si es así, puedes emplear las siguientes rutinas para obtener su contenido:
mplay_message_id() Devuelve el identificador del último mensaje recibido.

mplay_message_value() Devuelve el valor del último mensaje recibido.

mplay_message_player() Devuelve el jugador que envió el último mensaje recibido.

mplay_message_name() Devuelve el nombre del jugador que envió el último mensaje recibido.

mplay_message_count(player) Devuelve el número de mensajes restantes en la cola de espera del jugador player (usa 0 para contar todos los mensajes).

mplay_message_clear(player) Elimina todos los mensajes en la cola de espera del jugador player (usa 0 para eliminar todos los mensajes).

Debemos hacer algunas observaciones. Primero, si quieres enviar un mensaje sólo a un usuario en particular, necesitarás conocer el id del jugador. Como se indicó antes puedes obtener este id con la función mplay_player_id(). Este identificador del jugador también es empleado al recibir mensajes de un jugador en particular. Alternativamente, puedes dar el nombre del jugador como cadena. Si varios jugadores tienen el mismo nombre, el mensaje sólo llegará al primero.

 

En segundo lugar, podrías preguntarte porqué cada mensaje tiene un entero identificador. La razón es que esto ayuda a tu aplicación a enviar diferentes tipos de mensajes. El receptor puede checar el tipo de mensaje usando el id y llevar a cabo las acciones apropiadas. (Como no está garantizado que los mensajes lleguen, el enviar el id y el valor en mensajes diferentes causaría serios problemas).