Sprawdzanie nowego poziomu bohatera

Jakiś czas temu na naszym scenowym discordzie rozgorzała dyskusja na temat tego, jak sprawdzić zdobywanie przez gracza nowego poziomu w taki sposób, by móc dać mu do dyspozycji za to jakieś punkty umiejętności. Pojawiło się wiele pomysłów, ale nikt chyba nie opisał najprostszego z możliwych.

Założenia

Podstawowe założenie skryptu jest takie – ma on sprawdzać, czy dana postać osiągnęła nowy poziom (bez znaczenia, czy na mapie, czy w walce), a jeśli osiągnęła – informować o tym gracza i dodawać do puli nowe punkty umiejętności.

Cała idea mojego sposobu polega na sprawdzaniu dwóch zmiennych, dlatego tworzymy zmienne 0001:Aktualny poziom oraz 0002:Sprawdzanie poziomu.

Teraz najważniejsza część. W jakimś evencie lub innym miejscu, do którego gracz nie wróci, ustawiamy wartość zmiennej 0001 na aktualny poziom bohatera, którego będziemy sprawdzać. To ważne, by ta komenda nigdy nie została powtórzona drugi raz, bo inaczej skrypt się wykrzaczy.

W przykładowym projekcie mamy tylko jedną mapę, także w zdarzeniu ustawiam zmienną, następnie włączam przełącznik odpowiedzialny za uruchomienie common eventa i usuwam zdarzenie.

Skrypt

Skrypt w swojej istocie jest banalnie prosty. W common evencie ustawionym na Parallel Process i aktywowanym na wcześniej włączony przełącznik sprawdzam aktualny level postaci i jego wartość umieszczam w zmiennej 0002:Poziom do sprawdzenia. Następnie sprawdzam, czy ta zmienna jest większa od pierwotnie ustawionej zmiennej 0001. Jeśli tak, dodaję do tej zmiennej 1 i wyświetlam komunikat o wbiciu nowego poziomu.

Taki sposób zakodowania tematu rozwiązuje największą bolączkę innych metod – wyświetla komunikat tylko wtedy, gdy faktycznie wbijemy nowy poziom, i wyświetla tyle wiadomości, ile leveli zostało osiągniętych. Jeśli nie wierzycie, dodajcie postaci jakąś chorą liczbę EXP-a i sprawdźcie sami.

Kwestia wywołania

Do znudzenia będę powtarzał, że skrypty należy zawsze optymalizować. Zwłaszcza wtedy, gdy nieustannie działają w tle, a tak jest w naszym przypadku.

Common event, zamiast na Parallel Process, może działać na wywołanie. Wtedy jednak trzeba będzie stworzyć pętlę lub drugi common event, który będzie odsyłał do tego pierwszego – musimy pamiętać, że nie wiemy, ile za jednym zamachem gracz wbije leveli (chyba że przesądzimy o tym odpowiednio projektując grę).

Dodawanie punktów

Obok wiadomości o wbiciu poziomu, możemy także dodawać wspomniane na wstępie punkty. Jeśli z każdym poziomem gracz ma uzyskiwać taką samą ich liczbę, wystarczy dodać stosowną komendę zwiększającą zmienną z punktami pod wiadomością.

Jeśli natomiast chcemy przyznawać graczowi punkty tylko na konkretnych poziomach, pod tekstem musimy wstawić odpowiednie warunki sprawdzające poziom.

Zachęcam do własnych eksperymentów!

Michał „Michu” Wysocki

– Download przykładowego projektu –

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.