Wie man in einer Variable mehrere Werte speichern kann [Arrays im RPG Maker MV]

  • Willkommen zum ersten Tutorial meiner Reihe "RPG Maker MV for Runaways, RPG Maker MV für Fortgelaufene".


    Wer kennt es nicht? Da will man mit einer Variable im Maker arbeiten und zack, hat man schon alle 5000 verbraucht. Was das kennt keiner? Nun ähm, trotzdem könnt ihr das Problem nach diesem Tutorial umgehen!


    :s_warning!:Für dieses Tutorial werden Script Befehle benötigt. Dieses Tutorial ist also nicht für Anfänger geeignet.


    Was euch erwartet:

    1. Wir lernen Arrays kennen
    2. Wir lernen, wie man Arrays im Maker deklariert
    3. Wir lernen mit den Arrays zu arbeiten


    Was ist eigentlich ein Array

    Arrays sind im Grunde ganz normale Variablen, die Zahlen oder Buchstaben speichern können. Dabei ist der entscheidende Unterschied der, dass sich ein Array nicht nur eine Zahl bzw. nur einen Buchstaben merken kann.

    Ein Array hat nämlich die Fähigkeit mehrere Gruppen von Werten in einem Datenfeld zu speichern.

    Das wird praktisch, wenn man zum Beispiel mit mehreren Werten arbeiten möchte, die aber eine übergeordnete Gruppe haben.

    So muss man für zum Beispiel ein Blumenfeld, auf dem man die Farben der Blumen anpassen kann, für jede Blume eine Variable erstellen, dessen Wert dann die Farbe der Blume angibt.


    Qh5rlfN.png


    Das verbraucht Unmengen an Variablen, die man für andere Sachen nutzen könnte. Und hier helfen die Arrays. Mit diesen kann man nämlich in einer Variable die Farbe aller Blumen speichern.


    Wie deklariere ich ein Array

    Anders als die normalen Variablen muss ein Array erst deklariert (erstellt) werden, bevor es beschrieben werden kann. Macht man das nicht werden Werte weder umgeschrieben noch gespeichert.

    Bei der Deklaration muss außerdem angegeben werden wie viele Werte ein Array speichern soll.

    So kann Array „A“ zum Beispiel für 5 Werte deklariert werden und Array „B“ für nur 2. Also im Beispiel von unserem Blumenfeld, wie viele Blumen sich auf dem Feld befinden.


    Deklarieren kann man ein Array mit folgendem Script call: $gameVariables.setValue(ID, [a, b, c]);

    ID = Die Nummer der Variable, die zu einem Array werden soll.

    a b c = Beliebige Zahlen, Buchstaben und oder Wörter.


    Beispiel:

    Unser Blumenfeld soll 5 Blumen besitzen und diese Information über dessen Farbe in Variable 12 speichern, so deklarieren wir das Array wie folgt:

    $gameVariables.setValue(12, [0, 0, 0, 0, 0]);



    Dabei wird die Farbe aller 5 der Blumen zunächst auf den Wert 0 gesetzt. Allerdings kann man bei einer Deklaration auch schon Werte in das Array eintragen. So gehen zum Beispiel:

    $gameVariables.setValue(12, [4, 6, 2, 4, 5]);

    $gameVariables.setValue(12, [“Blau”, ”Rot”, “Grün”, “Blau”, “Weiß”]); :s_warning!:Achtung! Wenn Zeichen in einem Array gespeichert werden sollen, müssen die Zeichen in Anführungsstrichen angegeben werden.


    Wie arbeite ich mit Arrays

    Da unser Array nun deklariert ist, können wir beliebig oft Änderungen an ihm vornehmen (Sofern wir nicht über die Größe des Array hinausgehen).

    Wollen wir zum Beispiel einen Wert innerhalb des Arrays ändern, geht das mit folgendem Script call:

    $gameVariables.value(ID)[x] = y;

    ID = Nummer des Array.

    x = Index des Array :s_warning!:(Achtung! Ein Index beginnt immer bei 0! So hat die erste Stelle im Array den Index 0 und nicht 1!)

    y= Wert

    Solltet ihr ein Array nach der Deklaration trotzdem noch erweitern oder kürzen wollen, dann geht das mit folgendem Code

    X als hintersten Wert hinzufügen: $gameVariables.value(variableId).push(x)

    Den hintersten Wert abziehen: $gameVariables.value(variableId).pop()



    Außerdem können wir nun abfragen, ob ein bestimmter Index in einem Array einen bestimmten Wert hat. Das geht wie folgt:


    Des Weiteren ist es nun möglich alle Werte im Array auf verschiedene Arten und weisen miteinander zu vergleichen:


    Operator Bedeutung Ergebnis der Opertaion
    ==
    ist gleich
    Prüft, ob beide Werte gleich sind.
    != ungleich Prüft, ob beide Werte ungleich sind.
    > größer Prüft, ob der linke Wert größer als der rechte ist.
    < kleiner Prüft, ob der linke Wert kleiner als der rechte ist.
    >= größergleich Prüft, ob der linke Wert größer oder gleich dem rechten ist.
    <= kleinergleich Prüft, ob der linke Wert kleiner oder gleich dem rechten ist.


    So, das wars auch schon für heute. Falls sich wärend des lesens noch Fragen aufgetan haben, könnt ihr die gerne stellen.


    MfG

    Mashiro Jin

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von Nico ()

  • Sehr cool, mal wieder in JS-Tutorial zu sehen hier. ^^:thumbup:


    Eine Sache würde ich nur anmerken und zwar sagst du

    Zitat


    Wichtig ist, dass man sich vor der Deklaration darüber im Klaren sein muss, wie viele Werte man nun eigentlich speichern möchte.


    Stimmt so nicht 100%, denn man kann auch nach dem Erstellen des Arrays Elemente hinzufügen bzw. sogar entfernen. Dafür verwendet man:

    Code
    1. $gameVariables.value(variableId).push(x) // fügt x in das Array ein, welches in der Variable "variableId" gespeichert ist
    2. $gameVarialbes.value(variableId).pop() // würde das hinterste Element im Array entfernen
  • Hallo,


    wie kann man eine bestehende Zahl dann erhöhen oder senken?


    Beispiel:

    Code
    1. $gameVariables.setValue(89, [4, 6, 2, 4, 5]);


    und später dann die Zahl 4 erhöhen.


    Mit

    Code
    1. $gameVariables.Value(89)[0] += 1;


    klappt es leider nicht!


    Mfg

    Sajiki

  • Code
    1. $gameVariables.value(variableId).push(x) // fügt x in das Array ein, welches in der Variable "variableId" gespeichert ist
    2. $gameVarialbes.value(variableId).pop() // würde das hinterste Element im Array entfernen

    Huch, wusste gar nicht, dass das so geht. Danke, habe ich angepasst!

    Code
    1. $gameVariables.Value(89)[0] += 1;


    klappt es leider nicht!


    Dein Code an sich stimmt. Nur musst du das "Value" bei "$gameVariables.value(varID)[Index] += 1;" klein schreiben. JavaScript achtet leider sehr genau darauf.

  • Sehr coole Anleitung, vielen Dank :)


    Hab mich auch mal ein bisschen informiert und zufällig noch etwas gefunden.

    man kann auch nach dem Erstellen des Arrays Elemente hinzufügen bzw. sogar entfernen. Dafür verwendet man:

    Code
    1. $gameVariables.value(variableId).push(x) // fügt x in das Array ein, welches in der Variable "variableId" gespeichert ist
    2. $gameVarialbes.value(variableId).pop() // würde das hinterste Element im Array entfernen


    Es geht noch mehr:


    Code
    1. $gameVariables.value(ID).unshift(x); // fügt X am Anfang des Arrays ein, anstelle am Ende
    2. $gameVariables.value(ID).splice(newIndex, 0, X); // fügt X irgendwo mittig im Array ein, wobei "newIndex" der neue Index ist.