Opublikowano 25 Września 20241 r 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: 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 ➡️ 2. W game/char.cpp w funkcji void CHARACTER::Destroy() po: ➕ Dodajemy: ➡️ 3. W game/regen.cpp szukamy linijki: ♻️ Zmieniamy na: ♻️ W tym samym pliku szukamy funkcji EVENTFUNC(regen_event) i zmieniamy całość! na: ➡️ 4. Przechodzimy do game/regen.h i w strukturze typedef struct regen szukamy: ➕ Niżej dodajemy: W tej samej strukturze szukamy: ➕ I dodajemy poniżej:
Opublikowano 8 Marca 20251 r 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?
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto