Skocz do zawartości

Zablokowane Wymiana danych pomiędzy serverem, a klientem


Paqoo

Rekomendowane odpowiedzi

No coż pojmuje już jak to mniej więcej działa, ale mam problem żeby to, co z "gry" przechodzi do klienta trafiało na server.. <_<

 

Pomożecie? :unsure:

 

Mam coś takiego:

 

KLIENT:

obiekt pocisku:

<alarm 0>

clearbuffer();
writebyte(10);
writeshort(x);
writeshort(y);
writeshort(image_index);
writeshort(image_speed);
sendmessage(global.clienttcp);

obj_klient:

<step>

case 10:
        //pocisk 
        pocisk_x = readshort();
        pocisk_y = readshort();
        pocisk_image_speed = readshort();
        pocisk_image_index = readshort();
        break;

 

SERVER:

obj_klient

<step>

case 10:
    pocisk_x = readshort();
    pocisk_y = readshort();
    pocisk_image_speed = readshort();
    pocisk_image_index = readshort();
    
    clearbuffer();
    writebyte(10);
    writeshort(pocisk_x);
    writeshort(pocisk_y);
    writeshort(pocisk_image_speed);
    writeshort(pocisk_image_index);
    
    with(obj_client)
    {
    sendmessage(tcp);
    }
    break;

 

Co to ma ze sobą wspólnego i czemu nie działa?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Nie wiem w sumie co chcesz osiągnąć. Jaką strukturę sieciową ma twoja gra? Układ gwiaździsty czyli serwer, do którego podłączeni są klienci? Jeśli tak, to wszystkie dane z klienta muszą przechodzić przez serwer. Co KLIENT trzyma pod zmienną global.clienttcp? Daj większy kawałek kodu, to co jest przed case lub zdebuguj czy w ogóle case jest wywoływane. Umiesz korzystać z debuggera GM?

 

W SERVER step zamień:

case 10:
    pocisk_x = readshort();

na

case 10:
    show_debug_message( 'wykonywanie case 10' );
    pocisk_x = readshort();

 

Następnie odpal serwer w trybie debuggerskim (czerwony trójkąt) i wybierz z menu TOOLS -> SHOW MESSAGES.

 

Jeżeli nie pojawi się tam "wykonywanie case 10", to znaczy że coś jest nie tak z odczytem pakietu. Jeżeli się pojawi, to zaczniemy myśleć dalej. Pamiętaj by korzystać z debuggera GMa bo to strasznie ułatwia wychwytywanie błędów.

 

Btw. zapisywanie image_speed jako short jest fatalnym pomysłem, ponieważ image_speed to ułamek od 0 do 1, a short to liczba całkowita 0-65535. Zamień to na writedouble i readdouble.

Odnośnik do komentarza
Udostępnij na innych stronach

Nigdy nie korzystałem z tego debuggera.. Nie wiedziałem, że taka komenda istnieje. Dzięki :) Gra ma takš strukturę, że jest server i klienci sš do niego podłšczeni. Pod global.clienttcp jest co takiego:

global.clienttcp = tcpconnect(global.serverip,global.serverport,1);

Po odpaleniu debuggera nic się nie pojawiło. Mamy problem z odczytywaniem pakietu... Zmieniłem to image_speed na writedouble i odczyt z readdouble.

 

Co teraz?;/

 

EDIT: Już sobie z tym poradziłem. Wystarczyło dokładnie przeanalizować kod..

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