Junio 22, 2013, 10:21:56 PM Ultima modificación: Junio 24, 2013, 06:46:20 PM por superankes
hola game makeros

hola chicos estoy aprendiendo mas de la 39dll pero tengo un problema me pregunto cual es el code para cuando se crea un nuevo objeto lo vean todos los jugadores :GM8:
incluyendo el movimiento del objeto
The world is a variable

Hola superankes! Antes que nada revisa el reglamento de la sección y repara el post. Fuera de eso, no existe una función mágica que haga lo que pedís, se hace manualmente. Saludos!




No existe... tenes que enviar un mensaje a todos los clientes con las coordenadas y el tipo de objeto a crear.

Bueno vamos por partes, sabés realizar una conexión y enviar un dato?




si se hacer la conexion y crear lo objetos de cliente y servidor y tambien los hice mover junto con el writebyte
y writeuint(x,y,y) de cada uno pero cuando trato de crear otro objeto en la conexion no me sale o se muestra solo en uno sea cliente si lo hizo el cliente o el servidor si lo hizo el servidor
The world is a variable

Bien, cuando creas un objeto con la 39dll en tiempo de ejecución tenés que enviar un dato al otro jugador para que haga lo mismo (si es en tiempo de compilación no). Obviamente vas a usar otro número en el writebyte y crear un nuevo caso en la parte de recepción (donde está el switch con los cases, le agregás el nuevo case). Si es un objeto con dirección fija o comportamientos fijos (no es manipulado por el usuario ni realiza movimientos aleatorios) simplemente lo creas de la misma manera en ambos juegos (le das la misma velocidad y dirección, o sprite, o lo que sea). Si el comportamiento del objeto varía tenés que enviar los datos relevantes cada step, como su posición, sprite, subimagen y esas cosas




y en el objeto creado no ahy q poner evento sobre la 39dll o si? :-[
The world is a variable

No, a menos que tenga que enviar datos, en cuyo caso simplemente enviaría datos en el step
Nunca tengas más de un código de recepción de datos (el switch grandote), el buffer se vacía cada vez q recibís paquetes, sean los que esperas en el switch o no




mira lo que estoy haciendo es esto

obj_server
evento global mouse left

if (instance_create(x,y,bola_creada)){
writebyte(2)
writeuint(x);
writeuint(y);
}


obj_client
begin step

case 2:
      bola_creada.x = readuint();
      bola_creada.y = readuint();
      break;


esta bien hecho asi
The world is a variable

Casi, pero está un poco mal la creación de la bola
[gml]a=instance_create(x,y,bola_creada)
clearbuffer();
writebyte(2)
writeuint(a.x);
writeuint(a.y);
sendmessage(global.jugadores) //O lo que uses para almacenar el socket[/gml]
Y en la recepción sería más algo como
[gml]case 2:
xt=readuint()
yt=readuint()
instance_create(xt,yt,bola_creada)
break;[/gml]
Esto para el caso de que la bola sea inmovil o tenga una dirección y velocidad fija en su creación, ya si la bola hace cosas más locas hay que enviar a cada step las coordenadas (lo que serviría si es una sola bola, si son muchas ya habría que hacer cosas más complicadas)




oye gracias haz resuelto mis dudas eres super ya veras pronto mi juego
GRACIAS
:D :D :D :D :D :D :D :D :D
The world is a variable