Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

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

Featured Replies

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:

 

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:

 

 

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

 

 

♻️ 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

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.