Junio 22, 2014, 12:48:41 AM Ultima modificación: Junio 22, 2014, 10:46:02 PM por gabyT

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.  :)

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...


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

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.

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)

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.

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

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