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

Poprawa mechaniki bonusów: (% obrażeń będzie dodawanych do PŻ/PE)

Featured Replies

Opublikowano

🚀 Witaj w poradniku dotyczącym ulepszeń w mechanice dwóch bonusów w grze:

  • Teraz % obrażeń zostanie dodane do PŻ.
  • % obrażeń zostanie dodane do PE.

 

Podczas korekty napotkaliśmy następujące wyzwania w kodzie:

  • W oryginalnym kodzie prawdopodobieństwo aktywacji bonusu regeneracji PŻ było stałe, wynosząc od 1 do 10, bez uwzględnienia innych atrybutów gry.
  • Brakowało funkcji kontrolującej limit PŻ.
  • Nazewnictwo zmiennych było nieintuicyjne.

 

Wersja minimalna wymagana: C++17 🛠️📜

 

📢 Informacja:

W filmiku prezentującym zauważyłem drobny błąd w funkcji do debugowania. Zamiast wyświetlać poziom HP po odzyskaniu, wyświetliłem SP. 📺🛠️

Wartość funkcji działa poprawnie, to tylko błąd w komunikacie.

 

Prezentacja zmian:

 

Rozwiązanie:

📁 Lokalizacja pliku: 'game -> char_battle.cpp'

 

🔍 Szukamy:

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

 

🔍 Następnie:

 

🔄 Zmieniamy:

 

Zmiany, które wprowadziłem w powyższym kodzie:

  • Stałe sprawdzenie prawdopodobieństwa zostało zastąpione dynamicznym sprawdzeniem opartym na atrybucie POINT_STEAL_HP.
  • Wprowadziłem mechanizm zapobiegający przekroczeniu przez HP atakującego jego maksymalnego limitu.
  • Użyłem funkcji std::clamp do ograniczenia wartości obrażeń używanej w obliczeniach HP.
  • Efekt przywracania HP został zmieniony na FLY_HP_MEDIUM, ponieważ FLY_HP_SMALL jest używane w bonusie od kradzieży życia.
  • Aktualizacja standardu kodowania.

 

 

Następnie skupmy się na drugim bonusie, czyli % obrażeń odzyskiwanych jako PE.

🔍 W funkcji ::DAMAGE szukamy mechaniki odpowiadającej za odzyskiwanie PE:

 

🔄 Zmieniamy:

 

Zmiany w mechanice które wprowadziłem w powyższym kodzie:

  • Zastąpiłem stałe sprawdzenie prawdopodobieństwa dynamicznym sprawdzeniem opartym na atrybucie POINT_STEAL_SP.
  • Dodałem kontrolę, aby zapewnić, że SP atakującego nie przekroczy maksymalnego limitu SP.

  • Użyłem funkcji std::clamp do ograniczenia wartości obrażeń używanej w obliczeniach SP.

  • Efekt przywracania SP został zmieniony na FLY_HP_MEDIUM, ponieważ FLY_HP_SMALL jest używane w innym bonusie od kradzieży energii.

  • Naprawiłem problem z przekraczaniem maksymalnego limitu SP.

  • Aktualizacja standardu kodowania.

 

 

 

  • 2 miesiące temu...
Opublikowano
W dniu 3.11.2023 o 20:21, Sevence napisał(a):

@ExoCarossa Tak, funkcja std::clamp jest dostępna od wersji C++17. 

 

std::clamp - cppreference.com

a wczesniej co zamiast tego było używane? *cholera przyda sie poradnik do c++*

bo fajnie byłoby to mieć ale mam niższy "poziom" kodu 

Edytowane przez ExoCarossa

Opublikowano
  • Autor

@ExoCarossa 

W dniu 3.11.2023 o 20:57, ExoCarossa napisał(a):

a wczesniej co zamiast tego było używane? *cholera przyda sie poradnik do c++*

Nie rozumiem? Moje rozwiązanie wykorzystuję tą funkcję, aby uprościć kod.  

 

W dniu 3.11.2023 o 20:57, ExoCarossa napisał(a):

bo fajnie byłoby to mieć ale mam niższy "poziom" kodu 

Możesz zastąpić funkcję clamp ograniczając zakres np. w ten sposób:

 

CKod został skopiowany
auto stealSPAttribute = pAttacker->GetPoint(POINT_STEAL_SP); if (stealSPAttribute){    if (number(1, MAX_PROBABILITY) <= stealSPAttribute)    {        int32_t iCur;         if (IsPC())        {            iCur = iCurSP;        }        else        {            iCur = iCurHP;        }         int32_t boundedDam = (dam < 0) ? 0 : (dam > iCur) ? iCur : dam;         int32_t iSP = boundedDam * stealSPAttribute / 100;         if (iSP > 0 && iCur >= iSP && (pAttacker->GetSP() + iSP) < pAttacker->GetMaxSP())        {            CreateFly(FLY_SP_MEDIUM, pAttacker);            pAttacker->PointChange(POINT_SP, iSP);             if (IsPC())            {                PointChange(POINT_SP, -iSP);            }        }    }}

 

Opublikowano

Bardzo dobry temat, przyda się ❤️ 

  • 2 miesiące temu...
  • 4 tygodnie później...
  • 2 tygodnie 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.