Problem dotyczy funkcji 'pc_change_name', która zawiera błąd, pozwalający na duplikację przedmiotów. Oznacza to, że gracze mogą wykorzystać ten błąd do nielegalnego kopiowania przedmiotów w grze, co może zaburzyć równowagę gry i spowodować różne inne problemy. Dodatkowo, funkcja ta miała wiele błędów związanych z bezpieczeństwem. Poniżej przedstawiam poprawioną wersję funkcji.
Informacje:
Zaktualizowałem nazwy zmiennych na bardziej opisowe dla lepszej czytelności kodu.
Zamieniłem przestarzałą funkcję sprintf na nowoczesną i dużo wydajniejszą fmt::format do formatowania zapytań SQL.
Dodałem więcej obsługi błędów poprzez sys_err, aby łatwiej diagnozować problemy w przypadku błędów.
Usunąłem operację flush cache zamiast tego zapisujemy stan obiektu currentCharacter używając metody Save.
Ustawiłem SetExchangeTime na obiekcie currentCharacter po wywołaniu Save.
Użyłem std::stoi do konwersji łańcucha znaków na liczbę zamiast używania str_to_number.
Dodałem sprawdzanie, czy currentCharacter nie jest null pointerem, aby unikać błędów czasu wykonania.
Uwaga:
Wymagana biblioteka libfmt oraz standardu C++20
Cześć,
Problem dotyczy funkcji 'pc_change_name', która zawiera błąd, pozwalający na duplikację przedmiotów. Oznacza to, że gracze mogą wykorzystać ten błąd do nielegalnego kopiowania przedmiotów w grze, co może zaburzyć równowagę gry i spowodować różne inne problemy. Dodatkowo, funkcja ta miała wiele błędów związanych z bezpieczeństwem. Poniżej przedstawiam poprawioną wersję funkcji.
Informacje:
Uwaga:
Wymagana biblioteka libfmt oraz standardu C++20
Wdrożenie libfmt
Implementacja:
📁 Lokalizacja pliku: 'game -> questlua_pc.cpp'
🔍 Szukaj
♻️ Zamień:
🗒️Podgląd implementacji:
🔍 Szukaj
➕ Dodaj:
📁 Lokalizacja pliku: 'share -> locale -> poland -> locale_string.txt'
➕ Dodaj: