Skocz do zawartości
Masz już aplikację Sharegon?

Odkryj wszystkie możliwości. Dowiedz się więcej

Sharegon.pl

Zainstaluj aplikację Sharegon i korzystaj z powiadomień push oraz licznika nowych aktywności bezpośrednio z ekranu głównego.

Aby zainstalować tę aplikację na iOS i iPadOS.
  1. Tap the Share icon in Safari
  2. Przewiń menu i stuknij Dodaj do ekranu początkowego.
  3. Stuknij Dodaj w prawym górnym rogu.
Zainstaluj aplikację Sharegon na Androidzie
  1. Otwórz Sklep Google Play na swoim smarfonie.
  2. Wyszukaj „Sharegon” w pasku wyszukiwania.
  3. Stuknij „Zainstaluj”, aby pobrać aplikację.

Poprawiona regeneracja potworów

Featured Replies

Opublikowano

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:

 

  • 5 miesięcy temu...
Opublikowano

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?

  • 5 tygodni później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Konto

Nawigacja

Skonfiguruj powiadomienia push w przeglądarce.

Chrome (Android)
  1. Stuknij ikonę kłódki obok paska adresu.
  2. Wybierz Uprawnienia → Powiadomienia.
  3. Dostosuj swoje preferencje.
Chrome (Desktop)
  1. Kliknij ikonę kłódki na pasku adresu.
  2. Wybierz Ustawienia witryny.
  3. Znajdź Powiadomienia i dostosuj swoje preferencje.