Erstellung eines Banksystems

Inhalt

Prinzip des Banksystems

Das Banksystem erlaubt es einen, an jedem Ort des Spiels Geld einzuzahlen, Geld abzugeben, sowie den aktuellen Kontostand abzurufen. Zudem erhält der Spieler täglich Zinsen für das eingelagerte Geld.

Theoretischer Ablauf

Bevor wir an’s Eingemachte gehen, müssen wir uns noch vor Augen führen, wie das ganze funktionieren soll. So ein Plan ist für das spätere Scripten recht nützlich, um nicht den Überblick zu verlieren.


 

Text: Ich bin das Banksystem Version 0.1 Alpha!

Text: Der momentane Geldbetrag auf deinem Konto beträgt {variable1}$!

Erstelle Label: Auswahl

Text: Was kann ich für dich tun?

Auswahl: Einzahlen, Abheben, Kontostand, Tschüss

 

Wenn Einzahlen ausgewählt:

 

Hat man kein Geld auf den Konto:

Text: Du hast aber kein Geld auf den Konto!

Springe zu Label: Auswahl

Ende

Text: Wie viel möchtest du einzahlen?

Zeige den momentanen Kontostand des Spielers

Zeige ein Fenster wo man den Betrag auswählen kann

Hat man B gedrückt:

Springe zu Label: Auswahl

Ende

Hat man genug Geld bei sich? Wenn Ja:

Verringere {trainermoney} um den Betrag von {variable2} und erhöhe {variable1} um den Betrag von {variable2}

{trainermoney} – {variable2}

{variable1} + {variable2}

Text: So das hätten wir! Dein Kontostand beträgt nun {variable1}$!

Springe zu Label: Auswahl

Wenn Nein:

Text: Du hast nicht genug Geld bei dir.

Text: Du kannst stattdessen {trainermoney}$ einzahlen, wäre das okay für dich?

Wenn Ja:

Übertrage {trainermoney} auf {variable2} und erhöhe {variable1} um den Betrag von {variable2}, verringere gleichzeitig {trainermoney} um den Betrag von {variable2}

{variable2} = {trainermoney}

{variable2} + {variable1}

{trainermoney} – {variable2}

Text: Fertig!

Text: Dein Kontostand beträgt nun {variable1}$.

Springe zu Label: Auswahl

Wenn Nein:

Springe zu Label: Einzahlung

Wenn Abheben ausgewählt:

Wenn sich kein Geld auf den Konto befindet:

Text: Es befindet sich kein Geld auf den Konto.

Springe zu Label: Auswahl

Ende

Wenn der Geldbeutel des Spielers bereits so voll wie möglich ist:

Text: Du hast kein Platz mehr.

Springe zu Label: Auswahl

Ende

Text: Wie viel möchtest du abheben?

Zeige den momentanen Kontostand

Zeige das Geld des Spielers

Wenn B gedrückt wird:

Springe zu Label: Auswahl

Ende

Wenn man 0 auswählt:

Beende Event

Ende

Wählt man mehr Geld aus, als sich auf den Konto befindet:

Es befindet sich nicht genug Geld auf den Konto.

Springe zu Label: Auswahl

Ende

Will man mehr abheben, als man insgesamt noch tragen könnte:

Text: Du hättest nicht genug Platz dafür.

Gleiche {variable2} auf den Wert von {maxmoney} an und lass es durch {trainermoney} subtrahieren

{variable2} = {maxmoney}

{variable2} – {trainermoney}

Text: Du kannst stattdessen {variable2}$ abheben, wäre das okay für dich?

Wenn Ja:

Erhöhe {trainermoney} um den Wert von {variable2} und verringere {variable1} um den Wert von {variable2}

{trainermoey} + {variable2}

{variable1} – {variable2}

Text: Hier bitte schön!

Setze {variable2} auf 0

{variable2} = 0

Springe zu Label: Auswahl

Wenn Nein:

Setze {variable2} auf 0

{variable2} = 0

Text: Okay, dann nicht…

Springe zu Label: Auswahl

Ende

Text: Du möchtest also {variable2}$ abheben?

Wenn Ja:

Erhöhe {trainermoney} um den Wert von {variable2} und verringere {variable1} um den Wert von {variable2}

{trainermoney} + {variable2}

{variable1} – {variable2}

Text: Fertig. Hier, bitte schön!

Springe zu Label: Auswahl

Wenn Nein:

Springe zu Label: Auswahl

Ende

Wenn Kontostand ausgewählt:

Text: Dein Kontostand beträgt momentan {variable1}$!

Springe zu Label: Auswahl

Wenn Tschüss!

Ende

Ende

Text: Einen schönen Tag noch!


 

So viel zum theoretischen Ablauf. Einige haben es sicherlich schon gemerkt, wir arbeiten mit einigen Variablen. Wer wissen will, was genau Variablen sind, sollte dafür ein Ruby-Tutorial aufsuchen. Für’s erste reicht es, wenn ich euch sage: Variablen stehen für einen x-beiebigen Wert, z.B für eine Zahl. In der Mathematik sind x und y auch Variablen.

Das Starterkit selber hat einige Variablen, die wir benötigen, z.B $trainer.money oder MAXMONEY. Wir müssen aber auch selber zwei Variablen erstellen, eine temporäre Variable und eine Variable, die den Kontostand beinhaltet.

 

Vorbereitungen

Bevor wir beginnen, sollten wir einiges vorbereiten: Zum Beispiel solten wir festlegen, welche zwei Variablen wir nehmen, um den Abbuchungs- oder Einzahlungsbetrag temporär zu speichern und den Kontostand zu speichern. Außerdem sollten wir uns überlegen, ob wir das Banksystem an verschiedene Orten verfügbar machen oder nicht.

In unseren Fall werden wir das Banksystem in jedes Pokémon-Center als Event intregieren (Man kann aber auch ein Extragebäude erstellen). Wenn wir jetzt aber in unseren Spiel 20 Pokémon Center hätten, müssten wir dann 20 Events machen? Und wenn wir etwas korrigieren wollen, müssen wir dann alle 20 Events korrigieren? Für Events die mehrmals aufgerufen werden sollen, gibt es die sogenannte „Common Events„. Dies sind globale Events, die entweder im ganzen Spiel wirken oder jederzeit aufgerufen werden können. Für Events, die man mehrmals aufrufen muss, die dazu noch jedes Mal 1:1 gleich sind, für die sind solche globalen Events sinnvoll.

Common Events

Fangen wir mit den Vorbereitungen an. Zuerst ruft ihr ein beliebiges Event auf, klickt auf eine freie Fläche um ein neuen Befehl einzufügen und geht unter „Control Variables„. Sucht euch dort zwei freie Variablen aus und benennt sie, z.B die eine „Temporär“ und die andere „Kontostand“. Achtet unbedingt darauf, dass die Variablen wirklich frei und nicht bereits reserviert sind (Alle Variablen, die bereits einen Namen haben, sind schon reserviert). Habt ihr dies erledigt, klickt auf „Cancel„. Dieser Schritt war nur dazu da, uns selber schon mal zwei Variablen zu reservieren, mit denen wir arbeiten werden.

Variablen

Event-Erstellung

Genug des theoretischen Geschwafels, Zeit für das Eingemachte! Geht zu Nächst zur „Database“ im RPG Maker und von dort aus zu den „Common Events„. Nimmt ein freies „Common Event“ und benennt es nach eurer Wahl um, in dem Fall „Banksystem“.

Banksystem

Jetzt wo wir das Event haben, wird es Zeit ihn zu befüllen. Dazu müssen wir nur den theoretischen Ablauf in das Event übernehmen. Um das ganze nicht all zu groß zu machen, hier mal die Befehle, die wir verwenden werden:

  • Text-Befehl („Show Text…„)
  • Ja/Nein-Abfrage („Show Choices…„)
  • Variablen manipulieren („Control Variables„)
  • Label erstellen („Label…„)
  • Zu Label springen („Jump to Label…„)
  • Event abbrechen („Exit Event Processing„)
  • Bedingung („Conditional Branch…„)
  • Scripts („Script…„)
  • Geldbetrag ändern („Change Gold…„)

Dazu gibt es noch einige Variablen, die wir benötigen:

  • $game_variables[XX] = Die spielinterne Variable für den temporären Betrag. Die XX steht hierbei für die Nummer der Variable.
  • $Trainer.money = Der Geldbetrag des Helden.
  • MAXMONEY = Die Maximalsumme an Geld, die der Spieler besitzen kann.

Nun müssen wir die ganze Liste nur noch abarbeiten. Das fertige Script dürfte dann ungefähr so aussehen:

Banksystem 1

Banksystem 2

Banksystem 3

Banksystem 4

Banksystem 5

Zinssystem

Ein Banksystem wird vorallem dann für den Spieler attraktiv, wenn dieser für das eingelagerte Geld Zinsen erhält. Bliebe nur noch zu klären, wie oft man Zinsen erhält. Die einfachste Lösung ist es, dass man täglich Zinsen erhält. Als Betrag habe ich 5% genommen, was schon mehr als genug sein sollte. Doch wie baut man das ein? Dazu müssen wir kurz in den Script-Editor.

Code

Geht dort zu „PokemonField“ und dort zu Zeile 1977. Die Zeile sollte (Wie im Bild) folgendermaßen lauten:

$PokemonGlobal.pokerusTime=now

Fügt NACH dieser Zeile folgenden Code ein:

$game_variables[XX] = ($game_variables[XX]* 1.05).to_i

Wobei XX ist die Nummer der Variable für den Kontostand ist. Was macht der Code genau? Er multipliziert jeden Tag die Variable mit 1,05%. Wichtig ist hierbei das .to_i am Ende. Denn es gibt beim Pokédollar keine Kommabeträge. Das .to_i wandelt die Zahl in eine ganzstellige Zahl (Auch Integer genannt) um, wobei stets abgerundet wird. Das ist wichtig, da man ansonsten Kommabeträge heruasbekäme. Wer mag, kann das Zinsystem etwas erweitern, z.B dass man ab einem bestimmten Betrag in der Bank höhere Zinsen bekommt. Beispiel:

case $game_variables[XX] when 0..100000
$game_variables[XX] = ($game_variables[XX]* 1.05).to_i #5% Zinssatz
when 100001..1000000
$game_variables[XX] = ($game_variables[XX]* 1.1).to_i #10% Zinssatz
when 1000001..5000000
$game_variables[XX] = ($game_variables[XX]* 1.15).to_i #15% Zinssatz
else
$game_variables[XX] = ($game_variables[XX]* 1.2).to_i #20% Zinssatz
end

Beträgt der Kontostand mehr als 100.000 Pokédollar, erhält man 10% Zinsen. Ab 1.000.000 sind es 15%, ab 5.000.000 sind es 20%. Beachtet dabei, dass der Spieler standardmäßig nur bis zu 999.999 Pokédollar besitzen kann. Wenn ihr also mit Werten jenseits der 999.999 hantiert, dann müsst ihr den Wert MAXMONEY erhöhen (Script-Editor -> Settings).

Ihr könnt das ganze auch anders gestalten, z.B dass man je nach Anzahl der Orden mehr Zinsen erhält. Zu beachten sei:

  1. Der Kontostand wird immer um Mitternacht erhöht.
  2. Die Tage, die man nicht spielt, zählen nicht.