Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: gabyT en Junio 22, 2014, 12:48:41 AM

Encuesta
Pregunta: ¿que game maker es mejor?
Opción 1: 8.1 votos: 2
Opción 2: studio votos: 1
Título: crear objetos en juego multijugador con 39dll (resuelto)
Publicado por: gabyT en Junio 22, 2014, 12:48:41 AM

hola. quería saber como se hace para que cuando yo creo un objeto, a los otros jugadores se le cree también y viceversa. estuve recorriendo las preguntas pero ninguna habla de esto. espero alguna respuesta. gracias.  :)
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: am3500 en Junio 22, 2014, 03:10:47 AM
hola amigo tengo ese mismo problema pero eso es mas conplicado para mi
yo en contre donde me ayudaban en un video pero no entendi nada ni se ve bien pero ahora te mando un video que me ayudo de la misma persona pero mucho mejor quisiera ayudarte creando un video pero es que esta pc esta muy lenta  :P espera...
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: gabyT en Junio 22, 2014, 05:25:41 AM
gracias por responder. y el video?
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: am3500 en Junio 22, 2014, 07:03:15 AM
hohhhhhhhh lo siento me ehhh quedadado creando mi juego online sorry  :-[  :'(
si el video es de jucarave

capitulo 1
https://www.youtube.com/watch?v=tWWbQHtsSp8
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: gabyT en Junio 22, 2014, 05:51:37 PM
ah muchas gracias por la ayuda pero esos vídeos son de donde aprendí a usar la 39dll pero en ningún momento explica como crear objetos (balas, el mismo jugador, etc) en todos los jugadores. lo que no puedo hacer es que se creen los objetos en todos los jugadores.
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: TLT96 en Junio 22, 2014, 06:43:43 PM
Cita de: gabyT en Junio 22, 2014, 05:51:37 PM
ah muchas gracias por la ayuda pero esos vídeos son de donde aprendí a usar la 39dll pero en ningún momento explica como crear objetos (balas, el mismo jugador, etc) en todos los jugadores. lo que no puedo hacer es que se creen los objetos en todos los jugadores.

Ok, yo si me profundize un poco en ese 39dll..... deje de hacerlo por que esta pc no agarra hamachi para jugar (Solo para chatear.....)

Por lo que entiendo, necesitas dos juegos (El cliente y el server), el server se ejecuta en una pc y el cliente en el resto....
El cliente envia bytes (:3) al server y dependiendo cuanto sean el server realizara una accion..... Fijate en estos 2 codigos:
clearbuffer();
writebyte(2);
writebyte(global.myid);
writeshort(x);
writeshort(y);
writeshort(sprite_index);
writeshort(image_speed);
writeshort(image_index);
writeshort(direction);
sendmessage(global.clienttcp);


Ese envia 2 bytes (+la informacion... solo que esa no sera contada ;P)

messageid = readbyte();
//...and then use it to check what message it was
switch(messageid)
{   
    case 2:
    //Update position
    var player, value;
    value = readbyte();
    //script_addline(string(global.players[value]),c_black);
    player = global.players[value];
    player.x = readshort();
    player.y = readshort();
    player.sprite_index = readshort();
    player.image_speed = readshort();
    player.image_index = readshort();
    player.image_xscale = readshort();
    clearbuffer();
    writebyte(5);
    writebyte(value);
    writeshort(player.x);
    writeshort(player.y);
    writeshort(player.sprite_index);
    writeshort(player.image_speed);
    writeshort(player.image_index);
    writeshort(player.image_xscale);
    with(obj_client)
    {
    sendmessage(tcp);
    }
    break;
....................................


Donde dice case 2 es el numero de bytes (Creo..... hace tiempo que no uso la 39dll......)

Bastaria que al crear un objeto envies un byte + variables (x,y,direccion), luego lo lees y ejecutas en los clientes ;P

Espero haberme explicado (Cualquier cosa vere que hago..... de momento solo me sirve local..... no me sirve ni terraria xDD)
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: gabyT en Junio 22, 2014, 07:45:43 PM
gracias TLT96 por tu respuesta. eso lo se hacer. mi problema es el siguiente:

yo tengo el objeto server, client, bala_server y bala_client. logre hacer que se muevan y muestren su image_index correctamente. el problema biene cuando creo las balas. si yo creo un objeto bala_server del lado del cliente, logro crearla del lado del servidor, pero inmediatamente se crean infinitas balas en la posición 0,0 aproximadamente del lado del servidor.

este es el script que resibe la informacion y crea la bala en el servidor

////////////////////////////////////////////////////////////////////////////////////////
if !global.servidor{exit;}

var message,ids;
while(1){
    message=receivemessage(global.otrojugador,"",0);
    if message<0{break;}
    if message==0{
        game_end();
        break;
    }
    ids=readbyte(0);
    switch(ids){
        case 1:
            obj_client.x=readuint(0);
            obj_client.y=readuint(0);
       
        case 2:
            obj_client.image_index=readbyte(0);
           
        case 3:
            xx=readuint(0)
            yy=readuint(0)
                instance_create(xx,yy,obj_bala_server);
        break;       
    }
}
//////////////////////////////////////////////////////////////////////////////////

y este es el que se encuentra en el evento create del objeto bala_server

/////////////////////////////////////////////////////////////////////////////////////
xx=x;
yy=y;
if global.servidor=true{
    move_towards_point(x+10,y,10);
}
if global.servidor=false{
    clearbuffer(0);
    writebyte(3,0);
    writeuint(xx,0);
    writeuint(yy,0);
    sendmessage(global.otrojugador,"","",0);
    move_towards_point(x+10,y,10);
}
/////////////////////////////////////////////////////////////////////////////////////

funciona, pero me sigue creando balas en otra posición y no se porque.
Título: Re:crear objetos en juego multijugador con 39dll
Publicado por: gabyT en Junio 22, 2014, 10:45:30 PM
luego de muchos intentos fallidos logre solucionar mi problema. solo me faltaba poner break luego de cada "case x:"(solo lo ponía en el ultimo case  :-[ ). a esto se debia mi error. muchas gracias a todos  ;D
Título: Re:crear objetos en juego multijugador con 39dll (resuelto)
Publicado por: am3500 en Julio 16, 2014, 07:37:56 PM
XD que bien amigo. amig@  con ese codigo puedo hacer tan bien  un enemigo ejemplo quiero que el servidor mande la informacion al cliente de la posicion del enemigo