RPG Maker MV dla zaawansowanych: Lekcja 1 – Podstawy

Oto pierwsza część kursu poruszającego trudniejsze zagadnienia RPG Makera MV (i większość tej wiedzy będzie miała zastosowanie również w MZ). Nie będziemy tutaj zgłębiać obsługi programu (do tego kursów jest mnóstwo, a ludzie doświadczeni ze starszymi wersjami nawet ich nie potrzebują), ani dostępnych pluginów (za dużo tego jest).  Nauczymy się tutaj jak pisać script calle i proste pluginy, a także jak sprawnie i szybko rozwiązywać pojawiające się problemy. Kurs zakłada dobrą znajomość RPG Makera MV (MZ też styknie) i bardzo podstawową znajomość języka JavaScript (lub sporo chęci i cierpliwości). Będę tutaj używał programu Visual Studio Code. Wszystkie ćwiczenia będą tłumaczone z jego użyciem, ale bez problemu można używać innego edytora kodu.

W pierwszej części zajmiemy się dość częstym problemem. Co zrobić, gdy dostępne komendy robią prawie to co chcemy, ale czegoś im brakuje?

Ustawienie edytora

Ale najpierw ustawmy Visual Studio Code. Uruchamiamy program i otwieramy folder z projektem. Żeby to zrobić klikamy na górze opcję File i wybieramy z rozwijanego menu Open Folder. Program pewnie się za pierwszym razem zapyta, czy ufamy kodowi w nim zawartemu, ale jako że wszyscy ufamy Kadokawie, to klikamy Yes.

Jeśli wszystko poszło dobrze, to boczny pasek powinien wyglądać mniej więcej tak.

Anatomia script calli

Na pisanie skryptów w plikach przyjdzie czas, na razie ograniczymy się do prostych script calli. Wstępniak dla osób, które nie widzą, co to jest: Script Call to specjalna komenda w RPG Makerze MV/MZ, w której możemy umieścić dowolny kod JavaScript (ze śmiesznie niskim limitem linijek kodu, więc do bardziej skomplikowanych rzeczy będziemy pisać własne pluginy). Nie ma tutaj większej filozofii, gdy RPG Maker natknie się na taką komendę, po prostu wykonuje kod w niej zawarty, a gdy wykonanie się skończy, przechodzi do kolejnej komendy. Na początek, żeby sprawdzić czy działa, dodajmy testowy console.log. To jest wbudowana funkcja JS, która wypisuje podany element w konsoli. Przydatne do szukania błędów w script callach.

A gdzie ta konsola? No, cóż, RPG Maker jest oparty na silniku z przeglądarki Chrome, a ta zawiera DevToolsy. Żeby się do nich dostać, musimy odpalić swój projekt w trybie playtest i wcisnąć F12. Konsola jest w zakładce Console. Resztę pewnie omówimy innym razem, bo całe DevToolsy są potężnym i przydatnym narzędziem. Na razie sama konsola nam wystarczy. A teraz wchodzimy w interakcję z eventem i obserwujemy efekt.

Rozgrzewka, czyli Erase Event

Na początek zaczniemy od jednej z najprostszych komend. Normalnie Erase Event usuwa event, który aktualnie wykonuje tę komendę. Tutaj zakładamy sytuację, kiedy chcemy usunąć dowolny wybrany przez nas event na mapie. Ten przykład nie jest szczególnie przydatny, ale musiałem wybrać coś prostego na start.

W VSCode wciskamy CTRL+SHIFT+F (CMD+SHIFT+F na Macu) i wpisujemy nazwę komendy czyli „Erase Event”.

Mamy jedno trafienie w pliku rpg_objects.js (tam jest kod obsługujący wszystkie komendy). Klikamy na niego i przechodzimy do kodu.

Interesuje nas kod wewnątrz tej metody, ale bez „return true”. Wystarczy go skopiować do script calla i mamy dokładnie ten sam efekt, co wołając komendę Erase Event.

if (this.isOnCurrentMap() && this._eventId > 0) {
$gameMap.eraseEvent(this._eventId);
}

Testujemy.

No, dobrze, ale na początku napisałem, że nie chcemy usuwać eventu, z którym wchodzimy w interakcję. Dlatego musimy trochę ten kod przerobić. Przede wszystkim możemy pozbyć się warunków. Pierwszy sprawdza czy w trakcie wykonywania komend nie zmieniła się mapa, a drugi czy id eventu jest większe od zera. Obu rzeczy jesteśmy pewni, więc są nam niepotrzebne. Na koniec zastępujemy this._eventId numerem eventu (w moim projekcie jest to 6).

Tak wygląda docelowy script call:

$gameMap.eraseEvent(6);

Na koniec sprawdzamy, czy działa.

Zniknął ziomeczek po prawej. Pełen sukces.

Wait powyżej 999 klatek

Edytor RPG Makera nie pozwala ustawić parametru komendy Wait powyżej 999 klatek. To zaledwie kilkanaście sekund, więc jeśli chcemy np. dodać obiekty odnawiające się co kilka minut, to musimy komendę skopiować wielokrotnie. To jest wyłącznie ograniczenie edytora, w silniku możemy zrobić waita nawet na rok :).

Znowu przechodzimy do wyszukiwarki w edytorze. Tym razem wpisujemy „// Wait”, bo samo słowo „Wait” występuje w zbyt wielu miejscach.

Tak jak poprzednio, klikamy na trafienie w pliku rpg_objects.js.

Tym razem do skopiowania jest jedna linijka. Musimy tylko pozbyć się parametru, ponieważ o ile w przypadku użycia komendy Wait w tej tablicy siedzi wartość liczbowa wpisana w edytorze to w script callu jedynym parametrem jest kod komendy. Co można łatwo sprawdzić wypisując this._params do konsoli.

Script call wypisujący swój własny kod.

W takim razie parametr musimy zastąpić wartością, która nas interesuje (pamiętaj, że jednostką tutaj są klatki, a nie sekundy). Czyli nasz script call będzie wyglądał tak:

this.wait(18000);

Dla czytelności możemy też rozpisać to na czynniki (minuty, sekundy, klatki).

this.wait(5 * 60 * 60);

Jeśli masz wolne 5 minut to możesz sprawdzić czy działa poprawnie :).

Podsumowanie

Przeszliśmy przez podstawy narzędzi wykorzystywanych do nieco bardziej zaawansowanych rzeczy w RPG Makerze MV/MZ. Przerobiliśmy też dwa proste ćwiczenia, w kolejnej części zajmiemy się kilkoma trochę bardziej skomplikowanymi komendami. A w przyszłości przyjrzymy się dogłębniej pozostałym elementom silnika.

Szatkus

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.