Opublikowano 4 Grudnia 20232 l 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: Tylko zalogowani Zaloguj się, aby wyświetlić chronioną treść Ten post zawiera treści dostępne tylko dla członków. Zaloguj się lub utwórz konto, aby odblokować całą zawartość tego posta. Zaloguj się Utwórz konto 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: 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 ♻️ 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' Spoiler 📂 Lokalizacja pliku: 'uiscript-> privateshopbuilder.py' Spoiler
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto