1

Mittwoch, 27. Januar 2016, 19:58

Wie speichere und verwalte ich mehrere Variablen in Arrays?

Ich habe gehört dass es möglich ist die Werte mehrerer Variablen in einer Variable zu speichern mithilfe von Arrays.
Ich habe mir nun viele Videos und Tutorials zu Arrays in RPG Maker MV angeschaut, aber diese beziehen sich alle auf sehr spezifische und fortgeschrittene Themen.
Ich wäre sehr glücklich, wenn mir jemand erklären könnte, wie ich nun zum Beispiel den Wert von mehreren Variablen definiere, diese in einen Array packe und wie ich diese einzelnen Werte abrufen oder erhöhen kann.

2

Donnerstag, 28. Januar 2016, 09:01

Vorweg: Ich hab den MV leider nicht und kann dir daher nur mit JavaScript helfen. Da der Maker aber mit JS arbeitet, solltest du das alles so anwenden können.
Mir scheint, dir ist der grundlegende Gebrauch von Arrays noch nicht ganz klar. Hier kannst du gut nachlesen: http://www.w3schools.com/js/js_arrays.asp

Eine kurze Erklärung, die dir hoffentlich hilft. Hast du noch weitere Fragen, sag Bescheid. Ich bin zwar kein js-Profi, aber mit Arrays kenn ich mich aus. :)

Du kannst dir ein Array direkt mit Werten anlegen:

Quellcode

1
var bspArray = ["a", "b", "c"] ;


...über den Index des Arrays kannst du auf die einzelnen Felder zugreifen:
(Der Index startet immer mit "0")
bspArray[0] beinhaltet a
bspArray[1] beinhaltet b
bspArray[2] beinhaltet c

...entsprechend kannst du nun die Werte auslesen:

Quellcode

1
2
var a;                   //Variable anlegen
a = bspArray[2];    //in der Variable a ist nun "c" gespeichert.


Du kannst den Wert zB an Stelle 0 mit "hey" ersetzen:

Quellcode

1
bspArray[0] = "hey";


... und das geht auch mit Variablen:

Quellcode

1
2
3
4
5
6
7
var a = 1
var b = 2
var c = 3
 
bspArray[0] = a;
bspArray[1] = b;
bspArray[2] = c;


im Array steht nun (1,2,3)

Du kannst dein Array auch erweitern mit "push"

Quellcode

1
bspArray.push(4);   //fügt neues Element ein: bspArray[3] = 4


... oder dir die Länge des Array ausgeben lassen mit "length"
(Nützlich wenn du for-Schleifen verwendest)

Quellcode

1
bspArray.length    //würde nun 4 zurückgeben.

3

Freitag, 29. Januar 2016, 21:21

Die Variablen, die Du in Events benutzt sind zum Beispiel als Array realisiert. Was genau hast Du denn vor? Vielleicht können wir dir eine alterntive Lösung an die Hand geben, weil sich einen Array anzulegen, um mehrere Variablen zu bündeln in vielen Fällen ein nicht so optimaler Lösungsweg für verschiedene Probleme ist.

Wenn Du erklärst, was Du vorhast haben wir vielleicht eine bessere Lösung. Ansonsten hat NuraRay ja schon einiges erklärt.

Spoiler: :information: JS Definition der Spielvariablen

JavaScript Quellcode

540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
//-----------------------------------------------------------------------------
// Game_Variables
//
// The game object class for variables.
 
function Game_Variables() {
    this.initialize.apply(this, arguments);
}
 
Game_Variables.prototype.initialize = function() {
    this.clear();
};
 
Game_Variables.prototype.clear = function() {
    this._data = [];
};
 
Game_Variables.prototype.value = function(variableId) {
    return this._data[variableId] || 0;
};
 
Game_Variables.prototype.setValue = function(variableId, value) {
    if (variableId > 0 && variableId < $dataSystem.variables.length) {
        if (typeof value === 'number') {
            value = Math.floor(value);
        }
        this._data[variableId] = value;
        this.onChange();
    }
};
 
Game_Variables.prototype.onChange = function() {
    $gameMap.requestRefresh();
};
zum Lesen den Text mit der Maus markieren

4

Samstag, 30. Januar 2016, 14:58

Vielen Dank, für die Beschreibung zu den Arrays und dass ihr mir helfen möchtet :) Das Problem ist die Begrenzung der Rpg_Maker MV internen Variablen auf 5000. Für ein RPG ist dies vermutlich mehr als ausreichend, benutzt man jedoch den RPG-Maker zum erstellen von einem Vokabel-lernspiel (Spezifisch für Japanische Sprache), und möchte für jede Vokabel eine eigene Variable haben um zu zählen wie of das Wort richtig gewusst wurde, benötigt man ein ganze Menge mehr Variablen. Zum Beispiel benötige ich schon für die Kanji (2200 Schriftzeichen) um die 2000 Variablen und dazu würde ich gerne noch um die 5000 Vokabeln hinzufügen und benötige auch noch etwas Spielraum für System-interne Variablen :S

5

Samstag, 6. Februar 2016, 02:42

Hallo. Mir ist noch eine Lösung eingefallen, die aber etwas tricky ist, aber theoretisch beliebig viele Spiel-Variablen erlaubt.

Zuersteinmal musst Du die Maximalgrenze der Variablen auf 5000 setzen. Dafür klickst Du einfach auf "Variablen steuern" dort auf die Variablenauswahl und im Dialog auf "Maximum ändern" - das kennst Du ja schon. Nenn die letzte Variable mal "5000!" - das werden wir gleich als Navigationspunkt verwenden. Wenn das gemacht ist speicherst Du dein Spiel und schließt den Maker.

Jetzt suchst Du den Ordner, wo dein Spiel gespeichert ist und dort den "/data/" Ordner - in diesem findest Du eine Datei "System.json". Dies ist eine normale Textdatei, Du kannst sie mit dem Editor oder Notepad++ öffnen (Vorsicht enthält sehr sehr viel Text).

Such dort nach der Stelle "variables":[ und folgend sind alle im Spiel vergebnenen Variablen aufgelistet, also eine kommagetrennte Liste von Namen (unbenannte Variablen heißen ""). Scroll da durch, bis Du am Ende der Liste bist. Es sollte so aussehen: ,"5000!"]
Und jetzt der Trick: Wir fügen selber ohne den Maker jetzt weitere Einträge ein (nicht die Kommata dazwischen vergessen und die Namen immer in Anführungszeichen setzen).
,"5000!", "Hihi noch eine Variable", "und noch eine", "und noch eine"]
Die Änderung speichern wir und starten wieder den Maker. In der Variablenauswahl sollten uns jetzt 5003 Variablen zur Verfügung stehen. Beliebig streckbar, aber irgendwann (>9999) zeigt die GUI nichtmehr alle Stellen an (klappt aber trotzdem).

Spoiler: ein paar Screenshots
Bild
Bild
Bild
Bild
Bild
Danke an Arni für das Bereitstellen dieser hübschen Screens und Vorabtesten meiner Idee.
zum Lesen den Text mit der Maus markieren


Bei der Auswahl des Programms mit dem Du die System.json bearbeitest musst Du etwas aufpassen. Es darf nicht automatisch Zeilenumbrüche oder ähnliches einfügen, weswegen ein Codeeditor oder plain text Editorprogramme am Besten geeeignet sind. Ich empfehle Notepad++ weil ich das selber benutze.

Ähnliche Themen

Social Bookmarks