Skocz do zawartości

Naprawa przechowywania cen w bazie danych 'myshop_pricelist' podczas dodawania przedmiotów przez Szpule Jedwabiu

Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

Cześć wam,

 

Przedstawię Ci dziś rozwiązanie dotyczące Szpuli Jedwabiu. Ten przedmiot umożliwia zapamiętywanie cen wystawianych przedmiotów w bazie danych w tabeli myshop_pricelist. Niestety, ta funkcjonalność oryginalnie nie działała. Dane były faktycznie umieszczane w tabeli, jednak tylko do kolumny owner_id. Dlaczego tak się dzieje? Chodzi o strukturę tabeli, która została użyta do obsługi aktualizacji cen wystawianych przedmiotów. Nie ma w tym pakiecie danych o pricelist, domyślnie była ta struktura:

 

🔐 Ukryta Treść 🔐

 

Użyjemy 'TitemPriceListTable', ta struktura zawiera ceny przedmiotów:

 

🔐 Ukryta Treść 🔐

 

image.png.455e7b18c98c1b88ab5d84ad8829b177.png image.png.455e7b18c98c1b88ab5d84ad8829b177.pngimage.png.455e7b18c98c1b88ab5d84ad8829b177.png

Szpula Jedwabiu - umożliwia otwieranie prywatnego sklepu gracza przez 10 dni za darmo. Ten przedmiot ma jeszcze jedną właściwość, zapamiętuje ceny wystawianych przedmiotów. 

 

Wprowadzone zmiany:

  • Dodałem na początku funkcji warunek sprawdzający, czy wskaźnik packet nie jest null pointerem.
  • Zaktualizowałem komunikaty błędów, aby bardziej określały, czego dotyczą i w jakiej funkcji wystąpiły.
  • W oryginalnej wersji użyto surowego wskaźnika new do alokacji pamięci. Użyłem smart pointerów, które automatycznie dbają o zwalnianie pamięci i zapobiegają wyciekom pamięci.
  • Usunąłem funkcję GetTablePostfix, zastępując zapytanie stałymi wartościami.
  • Zastąpiłem funkcję thecore_memcpy funkcją std::copy ze standardowej biblioteki. Ta funkcja jest bardziej odporna na błędy związane z rozmiarem kopii.

 

Przedstawienie błędu:

 

Rozwiązanie błędu:

 

Implementacja:

📂 Lokalizacja pliku: 'game -> char.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'db -> ClientManager.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień całą funkcję:

🔐 Ukryta Treść 🔐

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'db -> ClientManager.h'

 

 🔍 Szukaj

🔐 Ukryta Treść 🔐

 

  ♻️ Zamień

🔐 Ukryta Treść 🔐

 

 

Poprawna wersja klienta:

 📂 Lokalizacja pliku: 'root -> uiprivateshopbuilder.py'

Spoiler
🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'uiscript-> privateshopbuilder.py'

Spoiler
🔐 Ukryta Treść 🔐

 

Featured Replies

Opublikowano

Dziękuje prezesie, kolejna dobra poprawka ❤️ 

Opublikowano

Dziękuje

Opublikowano

Dziękuje!

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