Skocz do zawartości

Naprawa krytycznego błędu - kopiowanie przedmiotów poprzez funkcję do zmiany nazwy gracza (pc_change_name)

Opublikowano

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:

  • 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

 

Wdrożenie libfmt

 

 

Implementacja:

📁 Lokalizacja pliku: 'game -> questlua_pc.cpp'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień:

🔐 Ukryta Treść 🔐

 

 🗒️Podgląd implementacji:

Spoiler

image.thumb.png.37116469279d18fe365d9d728977f938.png

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

 

📁 Lokalizacja pliku: 'share -> locale -> poland -> locale_string.txt'

 

 Dodaj:

🔐 Ukryta Treść 🔐

 

Featured Replies

Opublikowano

Dzięki za fixa !

Opublikowano

thanks

  • 2 tygodnie później...
Opublikowano

Dzięki wielkie! 🙂

  • 4 tygodnie później...
Opublikowano

Dzięki

  • 10 miesięcy temu...
Opublikowano

popraw w tym 

 

"PC_CHANGE_CHARACTER_NAME_SUCCES_INFO";
"Sukces zmiany nazwy. Za chwilę zostaniesz wylogowany w celu zastosowania zmian.".

na to :

 

"PC_CHANGE_CHARACTER_NAME_SUCCES_INFO";
"Sukces zmiany nazwy. Za chwilę zostaniesz wylogowany w celu zastosowania zmian."

 

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

Gość
Dodaj odpowiedź do tematu...