EXP do następnego poziomu

W dzisiejszej lekcji zaprezentuję, jak wyliczyć EXP brakujący danemu bohaterowi do zdobycia kolejnego poziomu.

Krzywa doświadczenia

W zakładce Actors bazy danych dla każdej postaci można ustawić tzw. krzywą doświadczenia, która wygląda następująco:

Wykres po prawej generowany jest na podstawie następującego wzoru:

Base Value + (Poziom postaci x Extra Value) + Acceleration = Doświadczenie potrzebne do zdobycia kolejnego levelu

Starzy wyjadacze na pewno wiedzą, że generalnie powyższy wzór jest skopany i na dłuższą metę lepiej tworzyć własne systemy zdobywania i liczenia doświadczenia. Na potrzeby tej lekcji stworzymy jednak system liczący doświadczenie właśnie przy wykorzystaniu powyższego wzoru.

Obliczanie doświadczenia na poziom

Nasz skrypt należy zacząć od tego, że musimy znać wartości Base Value, Extra Value i Acceleration. Nie da się tego zrobić inaczej, niż poprzez ręczne wpisanie tych wartości, dlatego tworzymy trzy zmienne i przypisujemy wartości takie, jak w bazie danych (na potrzeby tego tutoriala są to 100, 400 i 100). Pamiętajcie, że jeśli różne postacie mają różne wartości, dla każdej z nich trzeba będzie zrobić odrębne wywołanie z innymi liczbami.

Teraz tworzymy kolejne zmienne pełniące następujące funkcje:

  • 0004 – Lv postaci – sprawdzamy level postaci, której EXP chcemy obliczać;
  • 0005 – Lv do obliczen – pomocnicza zmienna do skryptu;
  • 0006 – Max exp – maksymalne doświadczenie potrzebne do osiągnięcia danego poziomu;
  • 0007 – Temp exp – pomocnicza zmienna do skryptu.

Uzbrojeni w nowe zmienne przechodzimy do zakładki common events, tworzymy jeden o nazwie Liczenie expa i Trigger zostawiamy na None.

W pierwszej kolejności zerujemy zmienną Max exp, żeby skrypt nie miał bugów, gdy wywołamy go ponownie. Następnie zmienną Lv do obliczen ustawiamy na 1 (będziemy ją zwiększać o 1 i w ten sposób liczyć maksymalne doświadczenie). Teraz ustawiamy Label z numerem 1. Wszystko, co jest po tym znaczniku, będzie się powtarzało tyle razy, ile poziomów doświadczenia będziemy liczyć.

Teraz zaczynają się obliczenia. Zmiennej Temp exp przypisujemy wartość zmiennej Extra Value i następnie mnożymy ją przez zmienną Lv do obliczen (która teraz wynosi 1). Później dodajemy wartości zmiennych Base Value i Acceleration. Na koniec tak otrzymaną wartość dodajemy do zmiennej Max exp. W tej ostatniej mamy zatem maksymalne doświadczenie, które jest potrzebne, by móc wejść na drugi poziom.

Następnie wstawiamy warunek (bez ELSE) i sprawdzamy, czy zmienna Lv do obliczen NIE JEST równa zmiennej Lv postaci. Jeśli warunek został spełniony, zwiększamy o 1 Lv do obliczen i przeskakujemy z powrotem na początek Label 1. Dzięki temu fragment z obliczeniami wykona się tyle razy, ile dana postać ma poziomów doświadczenia.

Sprawdzamy, czy działa

Żeby sprawdzić, czy wszystko do tej pory działa, tworzymy na mapie dwa eventy – jeden będzie nam dodawał losową ilość expa, a drugi – wyświetlał wartość zmiennej Max exp. Włączając menu jesteśmy w stanie porównać wyniki. Żeby jednak mogło do tego dojść, przed wyświetleniem wiadomości do zmiennej Lv postaci trzeba przypisać poziom naszego bohatera, a następnie wywołać nasz event komendą Call event.

Potrzebny exp na dany poziom

Sama informacja, ile ogólnie na dany poziom potrzeba doświadczenia, to jeszcze trochę mało. Chcielibyśmy, żeby program uwzględniał już posiadane doświadczenie. Dlatego W evencie, gdzie przypisujemy level postaci robimy jeszcze jedno przypisanie – z aktualnym expem danej postaci do nowej zmiennej.

Z kolei w naszym common evencie, na samym końcu, tworzymy nową zmienną, do której przypisujemy wartość Max Exp, a następnie odejmujemy od niej zmienną z doświadczeniem postaci. Gotowe – teraz możemy pokazać, ile konkretnie brakuje graczowi doświadczenia do zdobycia następnego poziomu!

Jak to wykorzystać?

Ten, w sumie nie aż tak skomplikowany skrypt, będzie przydatny przede wszystkim we wszelkiej maści CMS-ach. Ale to nie wszystko – może także być wykorzystany, by uzależniać np. wielkość nagrody od aktualnego postępu gracza w grze. Przykładowo, wiedząc ile zostało postaci doświadczenia do następnego poziomu, można dać jej połowę tej wartości albo całość minus 1.

Michał „Michu” Wysocki

– Download przykładowego projektu –

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.