RPGMakerXP/Tutorials/Anwendung von Variabeln & Conditions

Aus Scientia
Wechseln zu: Navigation, Suche
Portal anfänger.png Diese Seite ist besonders für Neulinge geeignet. Hier gehts zum Neulingsportal!
Var Conditions Header.png

Vorwort

Immer wieder kommen neue hoffnungsvolle Spielemacher der Scene des Makers hinzu und sie alle fangen klein an. Zu den mehr oder minder schwierigen Anfängen gehört vor allem das Verstehen, der Umgang und das Einsetzten von Variabeln (variables) und Bedingungen (conditional branch) im Bereich Eventscripting. Dieses kleine Tutorial soll etwas Licht in die Sache bringen und wirklich nur die wichtigsten Grundlagen für den Umgang liefern.

Ich bediene mich dabei eines Beispiels aus einem rm2k-Tuts für Variabeln, dass ich vor Jahren mal gelesen habe und das so einfach war, dass es hängen geblieben ist.

Var Conditions Splitter.png

Inhalt

  • Zielsetzung
  • Vorbereiten des Settings
  • Erklärung:
    • Was ist eine Variable?
    • Was ist eine Bedingung?
  • Wie sehen die Eventbefehle aus?
  • Umsetzung eines Beispielquests über Eventcodes
Var Conditions Splitter.png

Ziel

Gemeinsam wollen wir eine kleinen Quest über Events scripten und in ihr Variabeln und Bedingungen verwenden. So lernt man den Umgang gleich an einem praktischen Beispiel.

Var Conditions Miniquest Apfelbaum.png

So soll die Quest aussehen: Du sollst dem Bauern helfen, in dem du für ihn Äpfel auf seinem Grundstück sammelst. Hast du die passende Anzahl aufgelesen, bedankt sich der Bauer für die Hilfe und überreicht dir eine Entlohnung.

Vorbereitungen

Öffnet ein Projekt in eurem Maker und sucht euch eine leere Map. Für dieses Beispiel-Event reicht eine einfache 20 x 15 große Map, die ihr so gestalten könnt, wie ihr möchtet. Wichtig hierbei ist nur, dass ihr beachtet, dass der Held hier Platz genug hat, um Äpfel aufzusammeln und das der Bauer passend platziert wird.

Var Conditions Miniquest Apfelbaum Screen.png

Nun müssen die wichtigsten Events ihre Grundlagen erhalten. In diesem Fall sind das der Bauer und die einzusammelnden Äpfel.

Var Conditions Bauer.pngDer Bauer soll, sobald er angesprochen wird (Auslöser: auf Knopfdruck/ Trigger: action button), dem Helden seine Quest mitteilen (Eventbefehl: Show text...). In unserem kleinen Beispiel sollen es 5 Äpfel sein, die der Held einsammeln muss, um die Quest zu bestehen. Als Vorbereitung für das Ziel des Spiels und dem Einsatz der Variabeln müsst ihr in dem Event eine 2.Seite aufmachen (New Event Page). Vergesst nicht, in der Grafik unten ebenfalls den Bauern einzugeben.

Noch belassen wir das Event so.

Wenn ihr nun ein Testspiel startet und den Bauern ansprecht, werden ihr jedoch keine Nachricht erhalten.

Tutorial 24.png Warum ist das so?
Das gehört zwar zu den vorausgesetzten Grundlagen dieses Tutorials, aber ich erwähne es dann doch noch mal, damit niemand verzweifelt. Im Event wird immer die oberste Seite, also die mit der höchsten Zahl, als aktive Befehlsliste akzeptiert. Also wird Seite 2 abgespielt, obwohl auf ihr bislang nichts ist, außer der Grafik des Bauern. Keine Bange, ist beabsichtigt. Klärt sich dann später.

Var Conditions Apfelquest.pngDie einzelnen Äpfel sind ebenfalls wichtig und sehr leicht zu erstellen. Ihr solltet anzeigen lassen, dass ein Apfel aufgehoben wurde (Eventbefehl: Show text...) und damit habt ihr schon alle wichtigen Vorbereitungen getroffen. Später werden wir dem Event noch etwas hinzufügen.

Lightbulb.png Weitere kleine Tipps: Bereitet in der Database unter Items einen Slot vor und macht einen Apfel daraus. So könnt ihr die Äpfel richtig als Items einsammeln und habt sie auch im Inventar im Gamemenü. So kann der Spieler jederzeit nachsehen, wie viele er schon eingesammelt hat. Dann müsst ihr den Apfel im Event nur noch eurem Inventar hinzufügen (Change Item: [Apfel] 1). Damit die Äpfel auch wirklich verschwinden, könnt ihr sie z.B. über den Eventbefehl Erase Event löschen.
Tipp zur Grafik der Äpfel: Die Grafik der Äpfel, die normalerweise im RTP nur in den Icons vorhanden ist, könnt ihr als Charakter umfunktioniert in eure Ressourcen aufnehmen und so auswählen. Oder wenn ihr z.B. eigene Apfelbäume in euer Tileset editiert/gepixelt habt, könnt ihr auch hier einzelne Äpfel mit rein nehmen und so als Eventgrafik auswählen.
Var Conditions Splitter.png

Variabeln und Bedingungen

Was ist eine Variable?

(variables) Wortverwandschaft: variabel = veränderbar; variieren = verändern

Praktisch immer, wenn du dir ein Event überlegst, in dem Zahlen vorkommen, von denen du weißt, ihr Wert verändert sich im Laufe des Spiels und du diese Zahlen unter einem Begriff zusammenfassen könntest, hast du eine Variable vor der Nase. Beispiel: Helden-HP, Rubine oder in unserem Beispiel-Game Anzahl der Äpfel.

Wie sieht das also im Spiel aus?

Bleiben wir mal bei der Anzahl der Äpfel, wie wir sie für unsere Beispielquest benötigen. Die Variable sähe so aus: [x] Äpfel

  • Der Spieler startet das Spiel und hat 0 Äpfel bei sich.
  • Er wird vom Bauern aufgefordert, ihm 5 Äpfel zu bringen. Die Quest kann also nur erfüllt werden, wenn sich die Anzahl der Äpfel im Besitz des Helden von 0 auf 5 erhöht.
  • Jedes mal, wenn der Spieler einen Apfel aufhebt, erhöht sich die Anzahl der Äpfel um 1. Also hat der Spieler erst 1 Apfel, dann 2, 3, 4...
  • Jedes mal, wenn der Spieler einen Apfel isst, verringert er sich wieder um 1.

Der Wert mit dem Namen "Äpfel" verändert sich also.

Ebenso kann man mit vielen anderen variierenden Werten rechnen und arbeiten. Ein weiteres Beispiel wäre die Helden-HP, die sich verringert, wenn man angegriffen wird, die sich erhöht, wenn man geheilt wird und von deren Höhe man z.B. Statuswerte wie "angeschlagen", "kampfunfähig" oder eben "fit" definieren könnte. Ihr seht, Variablen sind vor allem unerlässlich, wenn man ein eigenes Menü oder Kampfsystem im Maker über Events programmieren möchte.

Was ist eine Bedingung?

(conditional branch) Wortverwandschaft: bedingt = auf Grund von; Konditionen = Voraussetzungen

Eine Bedingung, ist eine Funktion, die man meist treffend mit wenn [...], dann [...] beschreibt. Wenn etwas erfüllt ist, dann soll dies und dies geschehen. Man kann sie in Verbindung mit Variabeln, Schaltern und vielem mehr verwenden und so komplexe Events aufbaun. Beispiel: Wenn ein bestimmter Held in der Gruppe ist, dann darf man eine sonst versperrte Tür passieren. Oder ganz einfach, wenn ein Schalter gedrückt wurde, öffnet sich ein Geheimgang. In unserem Beispiel-Game bekommt der Held, wenn er 5 Äpfel eingesammelt hat, eine Belohnung.

Wie sieht das also im Spiel aus?

In unserem Beispiel arbeiten wir mit einer Variable ([x]Äpfel), also einem sich veränderndem Zahlenwert, der ab einer bestimmten Höhe (5) etwas ausrichten soll.

Conditions/Bedinungen:
Variable [ID:Äpfel] is [5] or above/oder höher
: (Event)
END

Damit wird also nur der Rahmen festgelegt, welche Bedigungen erfüllt sein müssen, damit das sonst weiter normal programierte Event abgespielt wird. Mit Conditions und Conditional Branches könnt ihr also Events machen, die nicht jederzeit und überall ablaufen, sondern die erst bestimmte Vorraussetzungen, wie z.B. eine Variablenhöhe oder einen aktivierten Schalter, benötigen. Um hier wieder die Verbindungen zu den Variabeln zu zeigen, so könnte man in einem eigenen HUD (Hp/Mp-Anzeige) den Zustand eines Helden z.B. als "fit" anzeigen lassen, wenn erfüllt ist, dass die Helden-HP seinem Maximun (Held-MaxHP) entspricht.

Var Conditions Splitter.png

Fertigstellung der Quest

Nun widmen wir uns wieder unseren vorbereiteten Events und vervollständigen sie, damit unsere Miniquest funktioniert.

Var Conditions Apfelquest.pngUnser Held kann also bereits die Äpfel aufheben und eventuell werden sie sogar in seinem Inventar angezeigt. Bislang hat dies jedoch keine Auswirkung auf unsere Quest und diese wollen wir jetzt einbauen. Öffnet also ein weiteres mal den Event mit dem Apfel. Bevor der Apfel verschwindet (er wurde ja aufgehoben), soll sich unsere Variable [x] Äpfel um 1 erhöhen (Eventbefehl: Control Variables >> Single [0001: Äpfel] > Add > Constant 1).

Var Conditions Apfel Event.png

Damit ist das Event fertig und ihr könnt es oft genug kopieren und auf eurer Map verteilen, damit der Held mindestens 5 Äpfel aufheben kann.

Var Conditions Bauer.pngWir haben bereits eine Aufgabenstellung, die uns der Bauer mitteilt. Doch noch passiert nichts, wenn wir mit unserem Helden die Äpfel einsammeln und zu ihm bringen wollen. Zunächst müssen wir die vorbereiteten Seiten miteinander verknüpfen, dazu wird auf der ersten Seite hinter die Nachricht des Bauern ein Schalter eingebaut (Control Self Switch > A > Operation ON).

Var Conditions Bauer Event.png

Auf der zweiten Seite müssen wir nun in den Conditions eingeben, dass der eben ausgewählte Schalter aktiv sein soll, damit sich diese Seite nur abspielen lässt, wenn der Bauer uns vorher seine Aufgabe gestellt hat. Nun beginnen wir den Event-Code mit einem Condtional Branch, um gleich zwei Reaktionen des Bauern festzulegen. Zum einen, dass er den Helden entlohnt, wenn man 5 Äpfel aufgesammelt hat (Conditional Branch >> Variable [ID:Äpfel] is Greater than or equal to > Constant 5) und zum anderen, dass er einem mitteilt, dass man noch nicht genug hat (Show text... zwischen ELSE und END des Conditional Branch), wenn man ihn anspricht und noch keine 5 zusammen hat (im Conditional Branch aktivieren: Set handling when conditions do not apply).

Var Conditions Bauer Event2.png

Sollten die Bedingungen der Quest erfüllt sein, bedankt sich der Bauer (Show text...), ihr erleichtert den Helden um die Äpfel (Control Variables >> Single [0001: Äpfel] > Decrease > Constant 5 / Change Item >> Item: ID Apfel > Decrease > Constant 5) und schenkt ihm eventuell noch etwas für seine Mühen, z.B. etwas Gold (Change Gold >> Increase > Constant [x]).

Somit habt ihr erfolgreich eine kleine Quest mit Variabeln und Conditions erstellt. Glückwunsch!

Damit die Quest nicht nochmals gemacht werden kann, könnt ihr natürlich mit einem weiteren Schalter und einer 3. Seite, auf welcher der Bauer etwas anderes erzählt, die Quest völlig abschließen.

Var Conditions Splitter.png

Nachwort

Ich hoffe, ich konnte alles verständlich und in leichten Schritten erklären. Sollten dennoch Fragen auftauchen, könnt ihr sie hier gerne posten. Sind euch Fehler aufgefallen, oder etwas stimmt nicht so, wie es in diesem Tutorial beschrieben wurde, bitte ich euch, mir dies per PM mitzuteilen, damit ich es nachträglich ausbessern kann. Vielen Dank.