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

Nieaktywny

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:

🔐 Ukryta Treść 🔐


➡️ 2. W game/char.cpp w funkcji void CHARACTER::Destroy() po:

🔐 Ukryta Treść 🔐


 Dodajemy:

🔐 Ukryta Treść 🔐


➡️ 3. W game/regen.cpp szukamy linijki:

🔐 Ukryta Treść 🔐


♻️ Zmieniamy na:

🔐 Ukryta Treść 🔐


♻️ W tym samym pliku szukamy funkcji EVENTFUNC(regen_event) i zmieniamy całość! na:

🔐 Ukryta Treść 🔐


➡️ 4. Przechodzimy do game/regen.h i w strukturze typedef struct regen szukamy:

🔐 Ukryta Treść 🔐


 Niżej dodajemy:

🔐 Ukryta Treść 🔐


W tej samej strukturze szukamy:

🔐 Ukryta Treść 🔐

 

 I dodajemy poniżej:

🔐 Ukryta Treść 🔐

 

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