Opublikowano 4 Maja 20241 r Ta odpowiedź cieszy się zainteresowaniem. Zawartość tematu może kiedyś powróci. Edytowane 8 Maja8 Maj przez KoYGeR
Opublikowano 4 Maja 20241 r Autor 1 minutę temu, Delta napisał(a): @KoYGeR bardzo doceniam za taki poradnik, duży props 😄 To dopiero pierwsza część poradnika. Postaram się z każdym dniem wrzucać kolejne typy pakietów
Opublikowano 8 Czerwca 20241 r Świetna robota i prościej chyba nie da się tego wytłumaczyć. Dziękujemy 🙂
Opublikowano 8 Czerwca 20241 r @KoYGeR W Twoim poradniku znalazłem poważny problem dotyczący obsługi pakietów. W funkcji SendSharegonTestPacket używasz SendSequence() co oznacza, że klient wysyła pakiety sekwencyjne: bool CPythonNetworkStream::SendSharegonTestPacket(int value) { TSharegonTestPacketCG packet; // deklarowanie struktury naszego pakietu packet.header = HEADER_CG_SHAREGON_TEST_PACKET; // nadawanie nagłówka packet.value = value; // przypisywanie wartości wysyłanej do serwera if (!Send(sizeof(packet), &packet)) // wysyłanie pakietu, jako parametry funkcji podajemy rozmiar naszego pakietu oraz wskaźnik do pamięci, gdzie trzymane są dane naszego pakietu { TraceError("Z jakiegos powodu nie udalo sie wyslac pakietu!"); return false; } return SendSequence(); // to można zastąpić zwykłym 'return true;' lub nawet całą funkcję przerobić na void, ale zachowajmy styl developerów metina :D } Natomiast po stronie serwera ustawiłeś obsługę tego pakietu jako false: Set(HEADER_CG_SHAREGON_TEST_PACKET, sizeof(TSharegonTestPacketCG), "SharegonTestPacket", false); Gdy serwer nie oczekuje sekwencji, a klient ją wysyła, serwer może niepoprawnie przetworzyć pakiet, co prowadzi do błędów takich jak "unknown packet header". Dzieje się tak, ponieważ serwer nie wie, że w buforze jest jeszcze jeden bajt sekwencji, co powoduje niezgodności w przetwarzaniu danych. Jeśli chcesz poprawnie przetwarzać pakiet musisz zsynchronizować konfigurację pakietów po obu stronach. Jeśli klient wysyła sequence to serwer musi być przygotowany do odbioru, czyli ustawiasz na true. Set(HEADER_CG_SHAREGON_TEST_PACKET, sizeof(TSharegonTestPacketCG), "SharegonTestPacket", true);
Opublikowano 8 Czerwca 20241 r Autor 7 godzin temu, Sevence napisał(a): @KoYGeR W Twoim poradniku znalazłem poważny problem dotyczący obsługi pakietów. W funkcji SendSharegonTestPacket używasz SendSequence() co oznacza, że klient wysyła pakiety sekwencyjne: 🔐 Ukryta Treść 🔐 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍 💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸✨ Natomiast po stronie serwera ustawiłeś obsługę tego pakietu jako false: 🔐 Ukryta Treść 🔐 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍 💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸✨ Gdy serwer nie oczekuje sekwencji, a klient ją wysyła, serwer może niepoprawnie przetworzyć pakiet, co prowadzi do błędów takich jak "unknown packet header". Dzieje się tak, ponieważ serwer nie wie, że w buforze jest jeszcze jeden bajt sekwencji, co powoduje niezgodności w przetwarzaniu danych. Jeśli chcesz poprawnie przetwarzać pakiet musisz zsynchronizować konfigurację pakietów po obu stronach. Jeśli klient wysyła sequence to serwer musi być przygotowany do odbioru, czyli ustawiasz na true. 🔐 Ukryta Treść 🔐 🔑 Nie zapomnij zostawić reakcji, aby podziękować autorowi za jego pracę! 👍 💖 W ten sposób okazujemy wsparcie i doceniamy wkład każdego członka naszej społeczności. 🌸✨ To nie ma większego znaczenia, zwróć uwagę na metodę SendSequence (zwraca zawsze true, no chyba, że masz dyrektywę, która odpowiada za to). Zachowałem po prostu "styl" developerów tej pięknej gry o czym wspomniałem w komentarzu.
Opublikowano 20 Października 202420 Paź Spoko rozpiska, każdy kto zabiera się za dev-a metina powinien wiedzieć jak to wygląda. Ponad 10 lat temu bez source to do komunikacji używało się cmdchatów, wtedy było ciekawie xD Skoro już wiemy jak posługiwać się pakietami to może teraz coś w stylu jak radzić sobie w przypadku wystąpienia właśnie legendarnego już syserra "unknown packet header"