Opublikowano 8 Października 20231 r Witajcie! Dziś podzielę się z Wami pewnym innowacyjnym rozwiązaniem, które z pewnością zainteresuje wielu z Was, zwłaszcza tych, którzy pracują nad własnym serwerem. To nowy typ przedmiotu dla zwierzaków, który wprowadziłem w entry-core. Ten typ przedmiotu jest również obecny na oficjalnym serwerze i przynosi pewne udogodnienia, które warto uwzględnić w Waszych projektach. Główną zaletą jest możliwość ładowania modelu zwierzaka bezpośrednio z kolumny 'value0' w pieczęci. Co to oznacza w praktyce? Żegnajcie z uciążliwymi questami służącymi do tego samego celu! Teraz zarządzanie systemem petów staje się znacznie łatwiejsze i bardziej intuicyjne. Jeżeli macie pytania, sugestie czy chcielibyście podzielić się własnymi doświadczeniami z implementacją tego rozwiązania, śmiało! Czekam z niecierpliwością na Wasze komentarze i opinie. Prezentacja: Implementacja: 📁 Lokalizacja pliku: 'common -> item_length.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu swojej listy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler ➕ Dodaj na końcu pliku 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'game -> char_item.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj przed powyższym case 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler 📁 Lokalizacja pliku: 'game -> PetSystem.cpp' ➕ Dodaj na końcu pliku 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zamień: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'game -> PetSystem.h' Wszystko w klasie 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'game -> mob_manager.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'db -> ProtoReader.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler Numery typów muszą być zgodne z Twoim src u Ciebie mogą się one różnić! To samą czynność musisz wykonać w swoim packerze proto aby obsługiwał nowy typ przedmiotu. 📁 Lokalizacja pliku: 'GameLib-> ItemData.h' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🗒️Podgląd implementacji: Spoiler 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 📁 Lokalizacja pliku: 'UserInterface-> PythonItemModule.cpp' 🔍 Szukaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodaj na końcu pliku 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Pobierz efekt przywołania: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się Skan pliku: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 22 Października 20231 r Piękna rzecz 😄 lecz mam mały problem z kompilacją a robie według poradnika. char_item: pet_system:
Opublikowano 3 Listopada 20231 r Autor Cieszę się, że ktoś w końcu implementuje to rozwiązanie. Przeanalizujmy napotkane problemy: Błąd nr. 1: PetSystem.cpp:666:59: error: no member named 'GetLocaleName' in 'CMob' const std::string_view petName = (pkMob) ? pkMob->GetLocaleName() : ""; Komunikat ten wskazuje, że w klasie CMob brakuje definicji metody GetLocaleName. Tak, to mój błąd - nie dodałem jej wcześniej. Znajdziesz potrzebną deklarację w zaktualizowanej sekcji mob_manager.h w poradniku. Błąd nr. 2: char_item.cpp:5352:13: error: member access into incomplete type 'CPetSystem'petSystem->HandlePetItem(item); ./char.h:18:7: note: forward declaration of 'CPetSystem' class CPetSystem; W pliku char_item.cpp jest próba wywołania metody HandlePetItem z niekompletnie zdefiniowanej klasy CPetSystem, co mówi, że w char.h znajduje się tylko deklaracja tej klasy. Rozwiązaniem jest dołączenie pełnej definicji CPetSystem. Zaktualizowałem sekcję w char_item.cpp w poradniku. W razie dalszych problemów, śmiało pisz – chętnie pomogę.
Opublikowano 3 Listopada 20231 r 15 minut temu, Sevence napisał(a): Cieszę się, że ktoś w końcu implementuje to rozwiązanie. Przeanalizujmy napotkane problemy: Błąd nr. 1: PetSystem.cpp:666:59: error: no member named 'GetLocaleName' in 'CMob' const std::string_view petName = (pkMob) ? pkMob->GetLocaleName() : ""; Komunikat ten wskazuje, że w klasie CMob brakuje definicji metody GetLocaleName. Tak, to mój błąd - nie dodałem jej wcześniej. Znajdziesz potrzebną deklarację w zaktualizowanej sekcji mob_manager.h w poradniku. Błąd nr. 2: char_item.cpp:5352:13: error: member access into incomplete type 'CPetSystem'petSystem->HandlePetItem(item); ./char.h:18:7: note: forward declaration of 'CPetSystem' class CPetSystem; W pliku char_item.cpp jest próba wywołania metody HandlePetItem z niekompletnie zdefiniowanej klasy CPetSystem, co mówi, że w char.h znajduje się tylko deklaracja tej klasy. Rozwiązaniem jest dołączenie pełnej definicji CPetSystem. Zaktualizowałem sekcję w char_item.cpp w poradniku. W razie dalszych problemów, śmiało pisz – chętnie pomogę. Teraz taki błąd występuje po dodaniu. A tu questlua_pet: // syntax: pet.unsummon(mob_vnum) int pet_unsummon(lua_State* L) { LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr(); CPetSystem* petSystem = ch->GetPetSystem(); if (0 == petSystem) return 0; // ĽŇČŻĽöŔÇ vnum DWORD mobVnum= lua_isnumber(L, 1) ? lua_tonumber(L, 1) : 0; petSystem->Unsummon(mobVnum); return 1; }
Opublikowano 3 Listopada 20231 r Autor Ten błąd wskazuje na to, że w klasie CPetSystem brakuje definicji metody UnSummon, podczas gdy w pliku questlua_pet.cpp jest do niej odwołanie. Sprawdź, czy nie usunąłeś przypadkiem metody UnSummon z klasy CPetSystem. W dostarczonym poradniku nie było mowy o usuwaniu. 😁
Opublikowano 3 Listopada 20231 r 5 minut temu, Sevence napisał(a): Ten błąd wskazuje na to, że w klasie CPetSystem brakuje definicji metody UnSummon, podczas gdy w pliku questlua_pet.cpp jest do niej odwołanie. Sprawdź, czy nie usunąłeś przypadkiem metody UnSummon z klasy CPetSystem. W dostarczonym poradniku nie było mowy o usuwaniu. 😁 Problem rozwiązany, po prostu funkcje : void CPetSystem::Unsummon(DWORD vnum, bool bDeleteFromList) po niej miałem DODAĆ : void CPetSystem::UnsummonAllPets() A ja ją zamieniłem, moje niedopatrzenie.
Opublikowano 25 Stycznia 20241 r Dziekuje Jeśli ktoś to będzie w przyszłości implementował, pamiętajcie o edycji i dopisaniu nowego typu przedmiotu w dump proto i skompilować
Opublikowano 28 Marca28 Mar @Sevence Czyli jak przy standardowej wersji petów (quest) idzie zrobić nieodwoływanie peta po dedzie/teleportacji poprzez qf, w tym przypadku trzeba to zrobić wyłącznie w src, na własną rękę?
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ą.