Skocz do zawartości
Opublikowano

 

 

Cześć wszystkim! 🙌

 

Dzisiaj chcę podzielić się z Wami ważnym tematem dotyczącego błędu podczas zmiany pasów.

 

Problem 🤔

Gdy gracz w Metin2 ma założony pas z większą liczbą odblokowanych slotów (np. 12) i ma na nich przedmioty
pojawia się problem przy próbie przełączenia na pas z mniejszą liczbą slotów.
Przedmioty na slotach, które zostają zablokowane zostają tam, a powinny wrócić do ekwipunku. 

 

Sposób naprawy:

Podczas próby zmiany pasa, system sprawdzi, czy w ekwipunku jest wystarczająco dużo miejsca aby przenieść przedmioty ze slotów które zostaną zablokowane.
Jeśli tak przedmioty wrócą do ekwipunku. Jeśli nie zostanie wyświetlony komunikat żeby gracz zwolnił miejsce w ekwipunku przed zmianą pasa. 

 

Prezentacja:

 

Rozwiązanie:

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

 🔍 Znajdź funkcję:

🔐 Ukryta Treść 🔐

 

🔍 Następnie znajdź w tej funkcji:

🔐 Ukryta Treść 🔐


 Dodaj pod:

🔐 Ukryta Treść 🔐

 

 

 📂 Lokalizacja pliku: 'game lub common -> belt_inventory_helper.h'

 

 🔍 Znajdź

🔐 Ukryta Treść 🔐

 

 Dodaj

🔐 Ukryta Treść 🔐


 Dodaj na dole

🔐 Ukryta Treść 🔐

 

 

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

 

 🔍 Znajdź

🔐 Ukryta Treść 🔐

 

 Dodaj

🔐 Ukryta Treść 🔐

 

 

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

 

 🔍 Znajdź

🔐 Ukryta Treść 🔐

 

  Dodaj

🔐 Ukryta Treść 🔐

 

Featured Replies

Opublikowano

dzięki !

  • 1 miesiąc temu...
Opublikowano

Szukałem tego dwa dni.. a tu proszę.

Ale odrazu pytanie. Pliki martysama, zablokowana możliwość zmiany pasa nawet jeśli ma tą samą ilość slotów. Czy kod, który tutaj zamieściłeś wystarczy, czy trzeba edytować coś jeszcze, żeby móc tej zmiany dokonać?

Opublikowano
  • Autor

Jeśli masz klasę CBeltInventoryHelper to w niej powinna być funkcja ClearBelt. Zaktualizowałem temat o funkcję ClearBelt gdyby komuś brakowało. 

Opublikowano
Spoiler

belt_inventory_helper.h: In static member function 'static bool CBeltInventoryHe                                                                                                             lper::ClearBelt(LPCHARACTER)':
belt_inventory_helper.h:91:32: error: 'class CHARACTER' has no member named 'Get                                                                                                             EmptyInventoryCount'; did you mean 'GetEmptyInventory'?
   91 |   int32_t EmptySlotCount = pc->GetEmptyInventoryCount(1);
      |                                ^~~~~~~~~~~~~~~~~~~~~~
      |                                GetEmptyInventory
belt_inventory_helper.h:92:27: error: 'GetItemCount' was not declared in this sc                                                                                                             ope; did you mean 'BeltItemCount'?
   92 |   int32_t BeltItemCount = GetItemCount(pc);
      |                           ^~~~~~~~~~~~
      |                           BeltItemCount
char_item.cpp: In member function 'bool CHARACTER::SwapItem(BYTE, BYTE)':
char_item.cpp:6169:48: error: 'bInvenCell' was not declared in this scope
 6169 |  if (!CanUnequipNow(item2, TItemPos(INVENTORY, bInvenCell)) || !CanEquip                                                                                                             Now(item1))
      |                                                ^~~~~~~~~~
 

Takie sysery posypało. Pozmieniać według zaleceń?

Opublikowano

No to martysamka zaskoczyl.. Ma ktoś siłę na to, ewentualnie czas spojrzeć w pliki, jeśli wstawiłbym tutaj char_item i beltinventory? Mam wrazenie, ze ten kod rozni sie zupelnie od tego, na ktorym inni pracuja..
Chociazby dlatego, ze linijki, ktora jest tutaj w poradniku nie mam w ogole:
 

if (!CanUnequipNow(item2, TItemPos(INVENTORY, bInvenCell)) || !CanEquipNow(item1))
	return false;
Spoiler

image.png.7345c497a186787d597205ae359641e7.png

Opublikowano
  • Autor

Musisz zadeklarować nowo dodaną funkcję w pliku char.h. Możesz wrzucić plik char_item.cpp zobaczymy. 

Opublikowano
8 minut temu, Sevence napisał(a):

Musisz zadeklarować nowo dodaną funkcję w pliku char.h. Możesz wrzucić plik char_item.cpp zobaczymy. 

Się robi szefie.. Pousuwalem wszystkie funkcje, zeby zostawic go golego tak jak byl.

char_item.cpp

Edytowane przez Makaveli

Opublikowano

Żeby zobaczyć wasze odpowiedzi musze skomentować, peace

Opublikowano
  • Autor

Tak, niestety na razie tak to wygląda, że treści w code, załączniki są ukrywane. Na ten moment nie będzie aktualizacji bo ciągle pracujemy nad nową wersją Sharegon, która wejdzie na początku 2024 wszystkie te błedy będą rozwiązane. 

Opublikowano

Wszystko dziala jak nalezy. Sevence pan szef prezydent metinowej rp! 
Jednak po zmianie pasa usuwa wszystkie itemy z niego. Jest mozliwosc, aby usuniete zostaly tylko te, ktore sa na zablokowanych slotach? 

Opublikowano
  • Autor

Tak, ale trzeba tam sporo przepisywać, miałem to właśnie robić, ale będę przerabiał cały belt pod ten z oficjalnego i pewnie wtedy się tym zajmę. 

Opublikowano

Dziękować

 

  • 2 tygodnie później...

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