Skocz do zawartości

Dodanie paru linijek kodu, psuje całość


Sutikku

Rekomendowane odpowiedzi

Witam. Chciałem zrobić wysyłanie danych konta, z serwera do klienta. Jest to dużo danych, więc nie wiem czy to nie w tym jest problem.

Daje wycinki kodu

GML
clearbuffer();

writebyte(1);

writebyte(i);

writeint(xx);

writeint(yy)

writeshort(zycie)

writeshort(pragnienie)

writeshort(glod)

for(i=0; i<6; i+=1)

{

writeshort(ekwipunek)

}

writeshort(blockWeapon[1])

writeshort(blockWeapon[2])

writeshort(blockWeapon[3])

writeshort(radarOn)

writeshort(noktowizor_un)

writeshort(latarka_un)

writeshort(clock)

writeshort(ammo)

sendmessage(clientsocket);

. Jest to wysyłane tylko raz, po dołączeniu na serwer. Wtedy zaczyna się problem z NPC. Najprawdopodobniej tu:

GML
case 5:

//zaatakowany zombie

var kol, playerid;

kol = readbyte();

playerid = readshort();

with(global.zombie[kol])

{

atak=playerid

}

Jeśli z pierwszego kodu, wytnę wysyłanie informacji i zostawię

GML
clearbuffer();

writebyte(1)

writebyte(i)

sendmessage(clientsocket)

To wtedy wszystko działa. Czy nie mogę wysyłać tak wielu informacji na raz?
Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze, tutaj odbieram informacje.

GML
case 1:

var obi;

obi=obj_player_self

global.myid = readbyte();

obj_player_self.alarm[0] = 1;

obi.x=readint();

obi.y=readint()

obi.zycie=readshort()

obi.pragnienie=readshort()

obi.glod=readshort()

for(i=0; i<6; i+=1)

{

global.ekwipunek=readshort()

}

obi.blockWeapon[1]=readshort()

obi.blockWeapon[2]=readshort()

obi.blockWeapon[3]=readshort()

obi.radarOn=readshort()

obi.noktowizor_un=readshort()

obi.latarka_un=readshort()

obi.clock=readshort()

obi.ammo=readshort()

break;

A tutaj wysyłam informacje, o zaatakowanym NPC.

GML
kzid=najzombie.zid

clearbuffer();

writebyte(5);

writebyte(kzid);

writeshort(global.myid);

sendmessage(global.clienttcp);

Zapomniałem dodać. Problem z NPC polega na tym, że powinien iść na postać. A on wariuje i idzie w prawo. Próbowałem rysować linię do miejsca w które próbuje dojść, ale nic nie rysowało. A chodzenie NPC wygląda tak.

GML
if (atak>-4)

{

if distance_to_point(global.players[atak].x, global.players[atak].y) > 16

move_towards_point(global.players[atak].x, global.players[atak].y, 2)

else

speed=0

if distance_to_point(global.players[atak].x, global.players[atak].y) > 256

atak=-4

}

Sprawdzałem czy dobrze wykrywa ID postaci i jeśli chodzi o ID, to bez problemu.

P.S

global.players[x] to obiekt postaci. A ten wysyłany kzid, to ID każdego NPC.

BARDZO WAŻNY DUŻY EDIT

Po włożeniu w komentarz wysyłania informacji (i oczywiście odbierania informacji u klienta) nadal nie działało. Sprawdziłem gdzie próbuje iść NPC. Widzi własne koordynaty. Wywaliłem miejsce w którym czytam informację (nie umieszczałem tego ponieważ uznałem to za zbędne) i zadziałało. Spróbuję wysyłać to innym sposobem.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...