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:
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.
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:
Użyjemy 'TitemPriceListTable', ta struktura zawiera ceny przedmiotów:
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:
Przedstawienie błędu:
Rozwiązanie błędu:
Implementacja:
📂 Lokalizacja pliku: 'game -> char.cpp'
🔍 Szukaj
♻️ Zamień
📂 Lokalizacja pliku: 'db -> ClientManager.cpp'
🔍 Szukaj
♻️ Zamień całą funkcję:
🔍 Szukaj
♻️ Zamień
📂 Lokalizacja pliku: 'db -> ClientManager.h'
🔍 Szukaj
♻️ Zamień
Poprawna wersja klienta:
📂 Lokalizacja pliku: 'root -> uiprivateshopbuilder.py'
📂 Lokalizacja pliku: 'uiscript-> privateshopbuilder.py'