Bank

Swego czasu dosyć popularnym skryptem było wykonanie banku w RPG Makerze. Nie pamiętam, czy takie rozwiązanie na stałe weszło do jakiejś większej gry, ale zawsze może być ten pierwszy raz. Skrypt banku, choć nieco czasochłonny, jest dość prosty i może urozmaicić różne projekty, niekoniecznie tylko RPG.

Przygotowania

Nasze założenie będzie takie, by gracz mógł w banku wykonać dwie rzeczy – wypłacić lub wpłacić posiadane pieniądze. Dodatkowo co minutę będą na naszym koncie rosły odsetki.

Do wykonania naszej pracy potrzebujemy zatem następujących zmiennych:

  • 0004 Złoto plecak – do tej zmiennej będziemy przypisywać wartość złota posiadanego przez gracza;
  • 0005 Złoto bank – tutaj będzie ilość złota przechowywana w banku;
  • 0006 Złoto obliczenia – zmienna służąca o różnych obliczeń;
  • 0007 Wpisz numer – do tej zmiennej gracz będzie wpisywać ręcznie ilość złota, która będzie wpłacana/wypłacana;
  • 0008 Odsetki – tutaj będziemy umieszczać naliczone odsetki.

Kodujemy

Operacje będziemy wykonywać poprzez wybory dialogowe, ale nic nie stoi na przeszkodzie, by zrobić to na obrazkach.

W pierwszej kolejności do zmiennej 0004 zapisujemy wartość naszego złota. Następnie, dla wygody, przy pomocy kombinacji \V[x] w wiadomości tekstowej wyświetlamy aktualny stan portfela i konta gracza. Dalej mamy trzy wybory – Zdeponuj, Wypłać i Nic.

Zdeponowanie pieniędzy

Części dla zdeponowania pieniędzy i wypłaty będą podobne. Najpierw skupmy się na tej pierwszej:

Może się to wydawać nieco skomplikowane, ale w gruncie rzeczy jest bardzo proste. Po wybraniu opcji deponowania, pierwsze co musimy zrobić to sprawdzić warunkiem, czy gracz ma w ogóle jakieś złoto w plecaku. Jeśli nie, wyświetlamy stosowny komunikat.

Wewnątrz tego warunku pytamy gracza ile chce zdeponować i dajemy mu trzy wybory 100%, 50% i inną kwotę. Dlaczego właśnie tak? Bo graczom należy tego typu czynności ułatwiać. Przeważnie użytkownik banku wybierze pierwszą lub drugą opcję, co będzie o wiele szybsze niż za każdym razem wpisywanie określonej kwoty.

Przy wyborze 100% do zmiennej odpowiadającej za złoto w banku dodajemy zmienną z ilością złota w plecaku, a następnie przy pomocy komendy Change Gold zabieramy graczowi tyle złota, ile miał. Kończymy wszystko odpowiednim komunikatem.

Przy wyborze 50% skrypt jest nieco modyfikowany. Najpierw do zmiennej 0006 stanowiącej pomoc w obliczeniach przypisujemy wartość złota w plecaku, a następnie dzielimy ją przez 2 i tę właśnie zmienną dodajemy do złota w banku. Graczowi zabieramy taką samą ilość z plecaka i wywołujemy komunikat.

Jeśli gracz zdecyduje się wybrać kwotę ręcznie, najpierw dajemy wstępny tekst, a następnie przy pomocy komendy Input Number do zmiennej 0007 pozwalamy graczowi zapisać dowolny numer. Teraz warunkiem musimy sprawdzić, czy gracz nie chce przypadkiem zdeponować więcej, niż faktycznie ma. Jeśli wpisany numer jest większy niż złoto w plecaku, dajemy o tym znać. Jeśli nie, dodajemy go do złota w banku, odejmujemy tyle samo złota graczowi i wyświetlamy komunikat.

Jeśli się nad tym głębiej zastanowić, to mamy tutaj trzy bardzo podobne skrypty bazujące na tych samych podstawach, które są jedynie lekko modyfikowane. Warto w ten sposób tworzyć swoje systemy, dzięki czemu łatwo będzie się można w nich połapać i je później zmieniać.

Wypłata pieniędzy

Wypłata pieniędzy działa podobnie jak ich deponowanie.

Najpierw sprawdzamy warunkiem, czy w ogóle mamy jakieś złoto w banku. Jeśli nie, gra nas o tym poinformuje. Później pytamy gracza o zakres wypłaty i, podobnie jak wcześniej, dajemy mu trzy opcje – 100%, 50% i inną kwotę.

Przy wyborze 100% używamy zmiennej do obliczeń, by przypisać do niej całą wartość złota w banku, a następnie zwiększamy o taką wartość złoto bohatera w plecaku, zerujemy złoto w banku i wyświetlamy komunikat. Co bardziej uważni czytelnicy mogą zauważyć, że pierwsza komenda jest zbędna, bo wystarczy od razy zwiększyć złoto o zmienną 0005. I macie rację, wtedy skrypt też będzie działał. Ja robię to jednak w ten sposób, by wszystko było bardziej czytelne. Nie zawsze drobne przyspieszenia w ostatecznym rozrachunku się przydają.

Wybranie 50% to modyfikacja poprzedniego rozwiązania. Wartość złota w banku przypisujemy do zmiennej z obliczeniami, a następnie dzielimy ją przez dwa. O tę zmienną zwiększamy złoto i obniżamy wartość złota w banku. Tutaj także można te działania skrócić.

Przy innej kwocie także na początku dajemy komunikat i możliwość wpisania liczby do zmiennej 0007. Następnie sprawdzamy, czy wybrana kwota jest większa niż złoto w banku. Jeśli tak – upominamy gracza. Jeśli nie, o taką kwotę zmniejszamy złoto w banku i zwiększamy złoto w plecaku. Uff, gotowe!

Odsetki

No dobra, samo wsadzanie złota do banku nam nic nie daje. Nie ma z tego żadnej korzyści, chyba że projekt zawiera jakiś mechanizm utraty złota przez gracza. Inną motywacją korzystania z banku są odsetki.

Załóżmy, że chcemy zwiększać wartość złota w banku o 10% co minutę. Korzystając z poprzedniej lekcji dotyczącej liczenia czasu gry wprowadzamy zatem prosty mechanizm liczenia upływających minut.

Tak wygląda to w stanie surowym. Po modyfikacji natomiast całość będzie prezentować się następująco:

Co się tutaj wydarzyło? Po ustaleniu, czy minęły w grze kolejna minuta, zmienna odsetki przejęła wartość złota w banku. Następnie pomnożyłem ją przez 10 i podzieliłem przez 100, dzięki czemu uzyskałem 10% pierwotnej kwoty. Warunkiem sprawdzamy, czy w ogóle otrzymaliśmy jakieś odsetki, a jeśli tak – wyświetlamy stosowny komunikat i do złota w banku dodajemy wartość odsetek.

Modyfikacje skryptu

Opisane w tym poradniku rozwiązanie można modyfikować i ulepszać na wiele sposobów. Odsetki mogą mieć różne wartości, np. zależne od tego, czy mamy w drużynie bankiera. Nie muszą zresztą naliczać się co minutę. Jeśli skrypt miałby bardziej odpowiadać rzeczywistości, możemy przy pomocy zmiennych/przełączników sprawić, że minuta na odsetki będzie liczona od ostatniej wpłaty do banku, a nie – jak teraz – niezależnie od niej. Wreszcie można pomyśleć o rozwinięciu usług samego banku i np. wprowadzeniu lokat czasowych.

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.