Opublikowano 26 Sierpnia 20231 r 🚀 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: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔍 Następnie: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔄 Zmieniamy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 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: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 🔄 Zmieniamy: 🔐 Ukryta Treść 🔐 Zaloguj się lub Zarejestruj się 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.
Opublikowano 26 Sierpnia 20231 r Autor Właśnie zauważyłem, że w filmiku prezentującym popełniłem mały błąd w funkcji do debugowania. Zamiast wyświetlać poziom HP po odzyskaniu, wyświetliłem SP. Funkcja działa poprawnie to tylko błąd w komunikacie użyłem niepoprawnego argumentu do wyświetlenia wartości.
Opublikowano 3 Listopada 20231 r Co trzeba pozmieniać na wersje niższą niż? Cytat Wersja minimalna wymagana: C++17 🛠️📜
Opublikowano 3 Listopada 20231 r Autor @ExoCarossa Tak, funkcja std::clamp jest dostępna od wersji C++17. std::clamp - cppreference.com
Opublikowano 3 Listopada 20231 r 35 minut temu, 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 3 Listopada 20231 r przez ExoCarossa
Opublikowano 3 Listopada 20231 r Autor @ExoCarossa 8 minut temu, 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. 9 minut temu, 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: 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); } } } }
🚀 Witaj w poradniku dotyczącym ulepszeń w mechanice dwóch bonusów w grze:
Podczas korekty napotkaliśmy następujące wyzwania w kodzie:
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:
🔍 Następnie:
🔄 Zmieniamy:
Zmiany, które wprowadziłem w powyższym kodzie:
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:
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.