Własny CMS #9 – Umiejętności

Dziś stworzymy zakładkę w menu zawierającą umiejętności bohaterów. Ograniczymy się do maksymalnie sześciu umiejętności na bohatera (modyfikując skrypt spokojnie można stworzyć ich więcej), przy czym dwie będą aktywne na mapie. Najważniejsza sprawa – w przeciwieństwie do poprzednich lekcji, od dzisiaj nie będę już opisywał wszystkiego słowo w słowo, ponieważ w większości będziemy bazowali na już zastosowanych przez nas rozwiązaniach. Dlatego obowiązkowo musicie przerobić dokładnie poprzednie lekcje, zwłaszcza te poświęcone Statusowi i Przedmiotom.

Projekt okienka

Nietrudno się domyślić, ze musimy zacząć od zaprojektowania okienka dla listy umiejętności. Tym razem sprawimy, że opis skilla będzie się automatycznie pojawiał u góry ekranu, a nie po wciśnięciu przycisku. Dlatego oprócz okienka z listą umiejętności, stworzymy dla każdej z osobna okienko z opisem.

Teraz tworzymy w bazie danych sześć umiejętności, przy czym dwie pierwsze będą aktywne z poziomu menu, a reszta nie.

Następnie przy wykorzystaniu RM robimy sześć jednowierszowych opisów, które pakujemy do szablonu. Tworzymy także sześć nazw umiejętności o rozmiarach jak nazwy itemów. Opisy nazywamy opisX, a umiejętności skillX, wskazując odpowiedni numer z bazy danych.

Nawigacja

W pierwszym kroku po wciśnięciu w menu zakładki Umiejętności gracz powinien móc wybrać postać z listy z prawej strony tak samo, jak w przypadku opcji Status. Pamiętajcie tylko, by na końcu kodu wstawić nowy przełącznik MENU – SKILL odpalający nowy event z nawigacją.

Nowy event będzie prawie taki sam jak ten od statusu (działa nawet na tych samych zmiennych, które się nie pokrywają), jedyna znacząca różnica (prócz zmiany przełącznika przy ESC) znajduje się w warunku sprawdzającym wciśnięty ENTER.

Wyświetlenie menu

Po wciśnięciu ENTER musimy wyświetlić obrazki. Standardowo nasza lista:

  • 150 – czarne tło nakładane na menu;
  • 151 – szablon okienka;
  • 152 – kursor;
  • 153-158 – nazwy itemów;
  • 159-180 – koszt many;
  • 181-183 – posiadana mana;
  • 185 – opis umiejętności.

Używamy grafiki kursora od itemów, bo będzie pasowała tutaj idealnie. X kursora to 91, a Y 90. Teraz wstawiamy warunek i sprawdzamy, na jakiej pozycji jest kursor – w zależności od tego, przypisujemy do nowej zmiennej wartość określającą, jaka postać została wybrana. Następnie wywołujemy nowy common event, który będzie sprawdzał, czy dana postać zna konkretną umiejętność, a jeśli tak – przypisywał ją do zmiennych w nowej tablicy ze zmiennymi.

W nowym common evencie pokazujemy po kolei skille razem z kosztem many – te informacje przed chwilą przypisywaliśmy do tablicy.

Wracamy do naszego eventa z nawigacją i po ostatnim wywołaniu dodajemy nowe, z eventem odpowiedzialnym za pokazywanie obrazków. Tworzymy nowy common event, gdzie będzie pobierana i wyświetlana aktualna wartość MP wybranej postaci.

Jego także wywołujemy w nawigacji. W nawigacyjnym common evencie musimy jeszcze pokazać obrazek z opisem pierwszego skilla oraz zmienić przełącznik odpowiadający za przejście do nowego common eventa, z nawigacją po okienku skilli. Pamiętajcie, żeby obrazkowi ustawić numer 185, to ważne!

Nawigacja

Nowy common event z nawigacją po okienku umiejętności powinien być podobny do tego z itemami. Różnica polega na tym, że po wykonaniu każdego ruchu wywołujemy nowy common event pokazujący opis aktualnie wybranego skilla.

Nic specjalnie trudnego, dopóki nie przejdziemy ponownie do wciśnięcia ENTER.

Tutaj musimy sprawdzić, czy wybrany przez gracza skill może być użyty na mapie. W przypadku Leczenia ran sytuacja ma się tak samo, jak z przedmiotami leczniczymi. Nie będę opisywał jak to zrobić, podejrzyjcie sobie w programie. Chodzi generalnie o pokazanie JESZCZE JEDNEGO okienka. W związku z tym, że nowe czarne tło będzie o numerze 184, a opis jest o numerze 185, nie będzie zasłaniany przez tło. Trzeba będzie skopiować i zmodyfikować common eventy odpowiadające za wyświetlanie zmian w okienku i za nawigację w nim. Samo leczenie natomiast i strata many wyglądają tak:

Jeśli chcecie dopracować leczenie, tj. sprawić (podobnie jak w przedmiotach), by nie można było uleczyć postaci martwej lub całkowicie wyleczonej – zapraszam do samodzielnych prób!

Otwieranie zamków

Jako drugiego aktywnego skilla świadomie użyłem czegoś, co przyda się podczas podróży na mapie. Co prawda wykracza to poza zakres tematyczny niniejszego poradnika, ale co tam – raz się żyje!

W naszej nawigacji tworzymy kolejny warunek na nowego skilla – jego efektem będzie po prostu wywołanie nowego common eventa z otwieraniem zamków. Co jednak bardzo ważne, najpierw w tym nowym common evencie należy wyłączyć całe menu, tj. usunąć obrazki i wyłączyć aktywny przełącznik.

Teraz sprawdzamy ID Mapy bohatera, jego pozycję X i Y oraz kierunek, w którzy patrzy. Dla tego ostatniego zmienna może przybrać następujące wartości:

  • góra = 8;
  • prawo = 6;
  • lewo = 4;
  • dół = 2.

Teraz ustawiamy sobie na jakiejś mapce skrzynię ze skarbem i sprawdzamy na podstawie powyższych danych, czy bohater stoi dokładnie przy niej i patrzy się w jej kierunku. Jeśli skrzynia nie jest otwarta, udaje się ją otworzyć!

Skrypt nie jest wolny od wad i służy tylko za przykład, może zrobimy o nim osobną lekcję?

ŚCIĄGNIJ PROJEKT Z LEKCJI

Michał „Michu” Wysocki

Dodaj komentarz

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

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