Skocz do zawartości

Zablokowane Wysłanie pozycji nie działa


Yoda

Rekomendowane odpowiedzi

Coś zrąbałem chyba przy odbieraniu pozycji czy wysyłaniu, sam nie wiem - po prostu nie działa odbieranie pozycji, i innych zmiennych od klienta :f podaję kod wysyłania zmiennych:

 

GML
//ALARM[0] - obj_player_self

clearbuffer();

writebyte(2);

writebyte(global.myid);

writeshort(x);

writeshort(y);

writeshort(direction);

writeshort(image_angle);

writeshort(armr_angle);

writeshort(arml_angle);

writeshort(handr_angle);

writeshort(handl_angle);

writeshort(head_angle);

writeshort(sword_angle);

writeshort(global.sprWeapon);

writeshort(global.sprShield);

writeshort(global.sprHead);

writeshort(global.sprArmLeft);

writeshort(global.sprArmRight);

writeshort(global.sprHandLeft);

writeshort(global.sprHandRight);

sendmessage(global.clienttcp);

 

alarm[0]=1;

 

Kod odbierania i wysyłania pozycji przez serwer:

GML
//STEP - obj_client

switch(messageid)

{

 

case 2:

var player, value;

value = readbyte();

player = global.players[value];

player.x = readshort();

player.y = readshort();

player.direction = readshort();

player.image_angle = readshort();

player.armr_angle = readshort();

player.arml_angle = readshort();

player.handr_angle = readshort();

player.handl_angle = readshort();

player.head_angle = readshort();

player.sword_angle = readshort();

player.sprWeapon = readshort();

player.sprShield = readshort();

player.sprHead = readshort();

player.sprArmLeft = readshort();

player.sprArmRight = readshort();

player.sprHandLeft = readshort();

player.sprHandRight = readshort();

clearbuffer();

writebyte(5);

writebyte(value);

writeshort(player.x);

writeshort(player.y);

writeshort(player.direction);

writeshort(player.image_angle);

writeshort(player.armr_angle);

writeshort(player.arml_angle);

writeshort(player.handr_angle);

writeshort(player.handl_angle);

writeshort(player.head_angle);

writeshort(player.sword_angle);

writeshort(player.sprWeapon);

writeshort(player.sprShield);

writeshort(player.sprHead);

writeshort(player.sprArmLeft);

writeshort(player.sprArmRight);

writeshort(player.sprHandLeft);

writeshort(player.sprHandRight);

with(obj_client)

{

sendmessage(tcp);

}

break;

 

...

}

 

i kod odbierania pozycji przez klienta:

 

GML
//STEP - obj_client

switch (messageid)

{

case 5:

value = readbyte();

player = players[value];

player.x = readshort();

player.y = readshort();

player.direction = readshort();

player.image_angle = readshort();

player.armr_angle = readshort();

player.arml_angle = readshort();

player.handr_angle = readshort();

player.handl_angle = readshort();

player.head_angle = readshort();

player.sword_angle = readshort();

player.sprWeapon = readshort();

player.sprShield = readshort();

player.sprHead = readshort();

player.sprArmLeft = readshort();

player.sprArmRight = readshort();

player.sprHandLeft = readshort();

player.sprHandRight = readshort();

break;

 

...

}

 

Jeżeli to nie wystarcza to mogęe komuś zaufanemu wysłać cały kod :)

Odnośnik do komentarza
Udostępnij na innych stronach

Klient:Kelner co to jest?? o.O

Kelner: A to jest o taki kod:

/Update pozycji, wysyłanie do obj_client.
clearbuffer();
writebyte(2);
writebyte(global.myid);
writeshort(x);
writeshort(y);
writeshort(sprite_index);
writeshort(image_speed);
writeshort(image_index);
writeshort(direction);
sendmessage(global.clienttcp);

//Powtórka
alarm[0] = 1;

Ustaw w Alarm 0... Jak coś będzie źle to powiedz :P

No wiesz... Lepiej odrazu niż po kolei bo ty masz tak:

writeshort(global.sprWeapon);
writeshort(global.sprShield);
writeshort(global.sprHead);
writeshort(global.sprArmLeft);
writeshort(global.sprArmRight);
writeshort(global.sprHandLeft);
writeshort(global.sprHandRight);

 

Wszystko można zrobic w :

writeshort(sprite_index);
writeshort(image_speed);
writeshort(image_index);

Odnośnik do komentarza
Udostępnij na innych stronach

Zrób coś takiego jak "Think Debug mode" ;P

Czyli w każdym miejscu w kodzie , gdzie ci się wydaje że może nie jest on wykonywany, dawaj

show_message("Odebrano")

albo

show_message("Wysłano")

w zależności kodu ;P

 

W odbieraniu danych od clienta, daj taki kodzik, i sprawdź czy w ogóle doszło coś od clienta , czy serwer nie umie wysyłać :P

Odnośnik do komentarza
Udostępnij na innych stronach

writeshort(global.sprWeapon);

writeshort(global.sprShield);

writeshort(global.sprHead);

writeshort(global.sprArmLeft);

writeshort(global.sprArmRight);

writeshort(global.sprHandLeft);

writeshort(global.sprHandRight);

@RPGMaker: Ej koleś nie che cię martwic ale ja te wszystkie sprity rysuję :| Nie mam jedngo sprite_indexa - postać składa się z kilku spritów.

 

@Cekol: patrzyłem tak już - nawet serwer mi nie odpowiadał... nie wiem czy do niego nie dochodzą te wiadomości... :(

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

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