ALT Opublikowano 31 Marca 2013 Opublikowano 31 Marca 2013 Więc mam taki kod: GML (client) var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p; global.t_size=receivemessage(global.t_sock) if global.t_size<0 exit; if global.t_size==0 game_end(); a=readbyte(); switch(a) { //////////////////////////////////////// case 3: tc_setid(readshort()) break; //////////////////////////////////////// case 4: b=readshort(); c=tc_find("myidd",b); if c!=-4 { c.x=readshort(); c.y=readshort(); } continue //////////////////////////////////////// case 1: b=readshort(); if b!=global.t_idd { c=instance_create(x,y,oOther) c.myidd=b } continue //////////////////////////////////////// case 2: b=readshort(); c=tc_find("myidd",b); if c!=-4 { with(c){instance_destroy();} } continue //////////////////////////////////////// } GML (server) var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,r,s,t,w,u; ts_listen(); if global.t_sock{ts_accept();} for( i=1; i<=global.t_maxpl; i+=1) { clearbuffer(); global.t_size=receivemessage(global.t_A) if global.t_size<0 continue if global.t_size==0 { global.t_players-=1 for (a2=1; a2<=global.t_maxpl; a2+=1) { ts_removeplayer(i); clearbuffer(); writebyte(2); writeshort(i); sendmessage(global.t_A[a2]); } continue; } q=readbyte(); switch(q) { case 2: global.t_players-=1 ts_removeplayer(i); for (z=1; z<=global.t_maxpl; z+=1) { clearbuffer(); writebyte(2); writeshort(i); sendmessage(global.t_A[z]); } continue; case 4: a=readshort(); c=readshort(); for (z=1; z<=global.t_maxpl; z+=1) { clearbuffer(); writebyte(4); writeshort(i); writeshort(a); writeshort(c); sendmessage(global.t_A[z]); } continue; } } I nie wiem czemu, pakiety do gracza o pozycji przychodzą dopiero po tym jak gracz który wysyła znów się ruszy, czyli jak gracz ruszy się na pozycje x=2 z pozycji x=1, to dopiero po ruchu na x=3 drugi gracz ustawi go na x=2
Utermiko Opublikowano 31 Marca 2013 Opublikowano 31 Marca 2013 Może ustaw algorytm nagle na true. /* Turns on/off the naggle (TCP_NODELAY) algorithm. argument0 = socket id to affect argument1 = true/false (true means NODELAY, false means DELAY) */ GML setnagle(global.t_sock, true); Daj to tam gdzie przyjmujesz klienta.
ALT Opublikowano 1 Kwietnia 2013 Autor Opublikowano 1 Kwietnia 2013 GML ( jezeli ktos cos kliknie) clearbuffer(); writebyte(4); writeshort(x); writeshort(y); sendmessage(global.t_sock)
TheLukLook Opublikowano 10 Maja 2013 Opublikowano 10 Maja 2013 To może napisz kod, który gracz wysyła do serwera o poprawność pozycji?
Utermiko Opublikowano 10 Maja 2013 Opublikowano 10 Maja 2013 Po 1 popatrz na datę postu. Po 2 co to by miało dać?
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się