Opublikowano 25 Września 202425 Wrz Cześć, udostępniam poprawioną regenerację potworów, sposób w jaki zrobił to Ymir wymaga kilku zmian. Co zyskamy po dodaniu tego fixa? Zwiększenie wydajności - aktualna nowa metoda regeneracji działa tylko wtedy, gdy jest to potrzebne. Dokładość czasu w regenie - w metodzie Ymira, gdy czas respawnu był ustawiony na 10s potwór potrafił się zrespić raz po 6s, a raz po 14s. Od teraz czas respawnu będzie dokładny co do sekundy. Nie jestem autorem poprawki. ➡️ 1. W common/service.h lub CommonDefines.h dodajemy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➡️ 2. W game/char.cpp w funkcji void CHARACTER::Destroy() po: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Dodajemy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➡️ 3. W game/regen.cpp szukamy linijki: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ Zmieniamy na: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ♻️ W tym samym pliku szukamy funkcji EVENTFUNC(regen_event) i zmieniamy całość! na: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➡️ 4. Przechodzimy do game/regen.h i w strukturze typedef struct regen szukamy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ Niżej dodajemy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się W tej samej strukturze szukamy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się ➕ I dodajemy poniżej: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się
Opublikowano 8 Marca8 Mar Tak patrzę na to i czegoś nie rozumiem być może ktoś mi to wytłumaczy. "Zwiększenie wydajności - aktualna nowa metoda regeneracji działa tylko wtedy, gdy jest to potrzebne."Z tego co wiem jak działa regen to przy starcie czyta ci wszystkie liniki z regen.txt i dla każdej tworzy event regen->event = event_create(regen_event, info, PASSES_PER_SEC(number(0, 16)) + PASSES_PER_SEC(regen->time));i na podstawie określonego czasu załóżmy 20s będzie trigerować event i sprawdzać czy moby żyją czy nie jak nie to zrespawnuje brakujące jak żyją to sprawdzi za kolejne PASSES_PER_SEC(regen->time); czyli te np 20s i tak ciągle.I faktycznie jak serwer wystartuje o 6:00:00 i zabijesz moba 6:00:18 to zespawnuje 6:00:20 bo taki jest schedule eventu a nie 6:00:30 więc dodanie nextRespawn spowoduje to, że będzie liczone od momentu usunięcia ciała moba i będzie działać.Ale w jaki sposób polepsza wydajnosć callowanie eventu co 1s dla każdego wpisu w regenach? Nie będzie to wręcz przeciwnie powodować dodatkowego overheada?regen->event = event_create(regen_event, info, PASSES_PER_SEC(1)); Zrobienie tworzenia eventu po destroy każdego moba też pewnie by brało więcej zasobów niż niż to, że jest już alokowany w tle ale wydaje mi się, że nie poprawia to wydajności i nie jest wykonywane tylko wtedy, gdy jest to potrzebne?
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ą.