Opublikowano 25 Maja 20241 r Cześć, Ten temat poświęcony jest wprowadzeniu ulepszenia w komunikacie zapraszania do gildii. Nowa wersja pakietu będzie przekazywać dodatkową informację - nazwę gracza wysyłającego zaproszenie. Umożliwi to wyświetlenie w komunikacie zarówno nazwy gildii, jak i nazwy gracza zapraszającego. Stara wersja komunikatu: Nowa wersja komunikatu: Implementacja 📂Lokalizacja pliku: 'game -> guild.cpp' 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂Lokalizacja pliku: 'UserInterface -> PythonNetworkStreamPhaseGame.cpp' 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂Lokalizacja pliku: 'root -> game.py' 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📂Lokalizacja pliku: 'locale -> locale_game.txt' 🔍Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️Zamień 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 18 Czerwca 202418 Cze @Sevence Nie wiem czy wiesz ale bufor się przepełnia i działa dopiero gdy złączysz dwa ciągi znaków w jeden. Chyba że ten poradnik nie jest pełny, albo masz coś pozmieniane w Source, bo standardowa martysama nie potrafi tego kodu odczytać. Wywala się na buf.write(GetName(), GUILD_NAME_MAX_LEN + 1); bufor buf.write(inviterName, CHARACTER_NAME_MAX_LEN + 1); a jak zrobisz buf.write("test", GUILD_NAME_MAX_LEN + 1); wtedy dopiero działa ale klient generuje randomowe znaki w nazwie gracza, pomimo że debug odbiera poprawnie. Zadziałało dopiero gdy zrobiłem TPacketGCGuild p; p.header = HEADER_GC_GUILD; p.size = sizeof(p) + sizeof(DWORD) + (GUILD_NAME_MAX_LEN + 1 + CHARACTER_NAME_MAX_LEN + 1); p.subheader = GUILD_SUBHEADER_GC_GUILD_INVITE; TEMP_BUFFER buf; buf.write(&p, sizeof(p)); buf.write(&gid, sizeof(DWORD)); char szCombined[GUILD_NAME_MAX_LEN + 1 + CHARACTER_NAME_MAX_LEN + 1]; snprintf(szCombined, sizeof(szCombined), "%s;%s", GetName(), inviterName); buf.write(szCombined, sizeof(szCombined)); pchInvitee->GetDesc()->Packet(buf.read_peek(), buf.size()); Edytowane 18 Czerwca 202418 Cze przez koka
Opublikowano 18 Czerwca 202418 Cze Autor @koka Masz rację, istnieje problem z przepełnieniem bufora i taki problem z losowymi znakami może wystąpić. W tym poradniku po prostu zapomniałem w warunku odbierającym dodać +1, aby tego przepełnienie nie było, oficjalnie tak zrobiłem i nie miałem takich problemów. Oczywiście zaktualizowałem poradnik. W tym warunku odbierającym if (!Recv(GUILD_NAME_MAX_LEN, &szGuildName)) Dodaj +1 i wtedy bufor będzie miał odpowiedni rozmiar: if (!Recv(GUILD_NAME_MAX_LEN + 1, &szGuildName))
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.