Skocz do zawartości
Opublikowano

image.png.a144663d4007d16872d3413c4a1a8bf3.png

 

Cześć,

 

Gdy masz utworzoną drużynę i zdobędziesz przedmiot w momencie gdy inny gracz z grupy podniesie go dla ciebie przedmiot ten no zostanie połączony z innym jeśli już posiadasz taki w ekwipunku. Zamiast tego zostanie utworzony nowy stack z tymi przedmiotami i tak dla każdego przedmiotu, który mógłby zostać połączony. Postaram się rozwiązać ten problem raz na zawsze.

 

W celu rozwiązanie tego problemu, wprowadziłem dwie nowe funkcje pomocnicze 'TryStackItemInInventory' i AddItemToInventory'. Pierwsze z nich odpowiada za sprawdzanie, czy podnoszony przedmiot może być połączony z przedmiotem tego samego typu, które już znajdują się w ekwipunku gracza. Funkcja ta bierze pod uwagę typ przedmiotu jak i inne czynniki np. flagę antistack, czy maksymalną ilość przedmiotów w stacku. Dodatkowo sprawdzamy, czy gracza dla którego podnosimy ma wystarczająco dużo miejsca. W momencie spełnienia wszystkich warunków funkcja połączy przedmioty poprawnie. Druga funkcja obsługuję przypadek gdy nie można połączyć przedmiotów. 

 

Uwaga:

Jeśli masz wprowadzone zmiany w funkcji 'PickupItem' zrób analizę i wprowadź zmiany ręcznie nie podmieniając całej funkcji !!!

Komunikaty locale stringa są zrobione pod klienta wersję musisz sobie przerobić. 

 

Prezentacja błędu: 

 

Prezentacja rozwiązania:

 

Implementacja:

📂 Lokalizacja pliku: 'game -> src -> char_item.cpp'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

♻️ Zamień

🔐 Ukryta Treść 🔐

 

Dodaj

🔐 Ukryta Treść 🔐

 

 

 

📂 Lokalizacja pliku: 'game -> src -> char.h'

 

🔍 Szukaj

🔐 Ukryta Treść 🔐

 

 Dodaj

🔐 Ukryta Treść 🔐

 

 

📂 Lokalizacja pliku: 'locale -> pl -> locale_string.txt'

 

  Dodaj

🔐 Ukryta Treść 🔐

Featured Replies

Opublikowano

Dzięki Twojej pomocy gra stała się bardziej grywalna i przyjemna. Jestem Ci bardzo wdzięczny.

 

Opublikowano

Bardzo Ci dziękuję za pomoc!

 

Opublikowano

Poka

 

Jeśli ktoś ma powiększone stacki musi uważać 

Edytowane przez Marchewa

Opublikowano

dziekuje

//Edit

 

Jeśli ktoś będzie miał problem z takim errorem podczas kompilacji:

image.png.cb81a2c35bb47e796c9bdd43feede8ea.png

 

Dodaj na początku pliku:

 

#include <fmt/format.h>

 

 

Ewentualnie zmienic ten log tak aby nie korzystac z fmt

 

LogManager::instance().ItemLog(owner, item, "GET", item->GetName() + " " + std::to_string(item->GetCount()) + " " + std::to_string(item->GetOriginalVnum()));

 

@Sevence możesz to dodać do tematu, jesli zapomniałeś

Edytowane przez atk

Opublikowano
  • Autor

Tak, dodam po pracy zaponiałem. Jak ktoś nie ma biblioteki fmt to jest temat na forum.

Opublikowano

Danke

  • 1 miesiąc temu...
Opublikowano
  • Premium

dzięki

  • 1 miesiąc temu...
Opublikowano

thx

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