Liebe RPG-Maker-Freunde,
ich habe mich nun nochmals mit dem "Problem" der Item-Kombination herumgeschlagen und ich denke, ich bin zu einer weitaus besseren Lösung gelangt. Die neue Lösung hat, gegenüber der alten Methode, folgende Vorteile:
- Beide Gegenstände, welche zur Kombination genutzt werden, können auch weiterhin Beide ganz normal im Gegenstands-Menu zur regulären Verwendung benutzt werden (im Gegensatz zur alten Methode wo der erste zur Komination zu verwendende Gegenstand nicht mehr im regulären Gegenstands-Menu benutzt werden konnte).
- Benötigt nur noch ein einziges "Gewöhnliches Ereignis" für alle Gegenstands-Kombinationen (im Gegensatz zur alten Methode, wo man für jeden kombinierbaren (ersten) Gegenstand ein eigenes "Gewöhnliches Ereignis" benötigte).
- Das Problem mit der Kombination von zwei identischen Gegenständen auch wenn man nur Menge 1 davon im Inventar hatte ist nun, dank eines inspirierenden Inputs von Quajutsi, behoben. Mit der erweiterten Abfrage im "Gewöhnlichen Ereignis" ist es nun nur noch möglich zwei identische Gegenstände zu kombinieren sofern man eine Menge von grösser/gleich 2 im Inventar hat. Ihr findet die erweiterte Abfrage im Addendum ganz am Ende dieses Tutorials.
Kleiner Nachteile:
- Braucht etwas mehr Mathematik als die alte Methode
Doch bevor ich die Methode genau erläutere noch ein paar Vorbemerkungen:
Für diese Lösung benötigt Ihr ein (kostenloses) Plugin, welches es Euch erlaubt im Spiel-Menu einen neuen Befehl (z.B. "Kombinieren") einzufügen sowie durch diesen Befehl ein "Gewöhnliches Ereignis" auslösen zu können.
Yanflys MainMenuManager-Plugin (inklusive Core-Engine-Plugin) ermöglicht Euch genau dieses zu tun. Beide Plugins sind komplett kostenlos und finden sich in Yanflys Free Plugins Pack welches Ihr mit folgenden Links, natürlich wie erwähnt, kostenlos downloaden könnt.
Link1: Yanfly Free Plugins Pack
Link2: Yanfly Free Plugins Pack
Die Methode die ich nun herausgefunden habe basiert auf der "Primzahl-Multiplikation". Wenn man zwei Primzahlen miteinander multiplizert, dann erhält man als Ergebnis eine Zahl welche auch wieder nur durch diese zwei Primzahlen dividiert werden kann.
Dies ist unglaublich nützlich um zwei (Primzahl-)Variablen in eine "einzigartige" Variable zu transformieren. Wenn wir nun eine soche "einzigartige" Variable anschauen z.B. 143, dann wissen wir das diese Zahl nur aus der Multplikation von 11 und 13 entstanden sein kann denn diese Zahl ist nur durch 11 und 13 ohne Rest teilbar. Weitere Details dazu später bei der ausführlichen Beschreibung der Methode.
Ausserdem braucht Ihr für die Methode noch zwei Variablen, die ständig für diese Funktion reserviert bleiben müssen sowie 1 "Gewöhnliches Event" welches alle Gegenstands-Kombinationen durchführen kann.
Und nun zur Methode selber:
Kreiert mit Yanflys MainMenuManager einen neuen Menu-(Befehls)-Eintrag namens "Kombinieren" (Ihr könnt auch jede andere Bezeichnung verwenden) und lasst diesen Befehl ein "Gewöhnliches Ereignis" ausführen. Das "Gewöhnliche Ereignis", das durch den neuen Menueintrag (Kombinieren) ausgeführt werden soll, könnt Ihr ebenfalls in Yanflys MainMenuManager definieren.
Kreiert nun Eure Gegenstände in der Datenbank. ACHTUNG: Hier ist es nun ganz wichtig das Ihr die Gegenstände, die kombinierbar sein sollen, nur mit "Primzahl"-IDs erstellt. Das bedeutet: 2,3,5,7,11,13,17, usw. Die Gegenstands-IDs, die keine Primzahlen sind könnt Ihr mit Gegenständen "füllen", die nicht kombinierbar sein sollen.
Nun gehts ans Erstellen des "Gewöhnlichen Ereignisses", welches ausgeführt wird wenn wir im Spiel-Menu den Menupunkt "Kombinieren" auswählen. Hier kommt dann auch die Mathematik ins Spiel. Doch zuerst fügen wir die Funktion ein um zwei Gegenstände zum Kombinieren auszuwählen.
Dazu zuerst den Befehl "Gegenstand auswählen" einfügen und die Gegenstands-ID in einer Variable (im Beispiel genannt: "Item1Var") speichern. Dann ein simples Textfenster mit dem Text: "kombinieren mit..." und dann nochmals ein "Gegenstand auswählen"-Befehl einfügen wobei hier die Gegenstands-ID in der Variable (hier im Beispiel genannt: "Item2VarFinalVar") gespeichert wird.
Danach direkt ein "Variablen steuern-Befehl ausführen in dem wir die "Item2VarFinalVar" auswählen und mit "Item1Var" multiplizieren. Das speichert dann die multiplizierte Zahl in der Variable: "Item2VarFinalVar".
Nun können wir mit Hilfe eines "Bedingte Verzweigung"-Befehls ganz einfach abfragen welche "Primzahl-Multiplikation" welchen Gegenstand erzeugt.
Der folgende Screenshot zeigt ein fertig erstelltes Event zur Kominabtion von Gegenständen. Falls Ihr natürlich mehr Gegenstände zur Kombination habt, dann habt Ihr schlussendlich auch mehr "Bedingte Verzweigungs"-Abfragen in Eurem Event.
ACHTUNG: Die Variable, die aus einer Primzahl-Multikplikation entsteht entspricht nicht einer Gegenstands-ID-Variable sondern ist eine "eindeutige" Zahl welche nur aus der Kombination dieser zwei spezifischen Gegenstands-IDs ensteht. (Primzahl-Multiplikation). Deshalb ist es wichtig, zuerst eine Liste zu erstellen bei der wir alle möglichen Kombinationen zuerst mathematisch berechnen um dann herauszufinden welche Primzahl-Multiplikation welchem, zu erhaltenden, Gegenstand entspricht.
Ein Beispiel zur Liste:
Der, im Beispiel, zweite Eintrag in der Liste bedeutet, das ein Starker Heiltrank (Item-ID: 3) und ein starkes Heilkraut (Item-ID: 7) kombiniert einen Meister-Trank (PZK: 21) ergibt (PZK = Primzahl-Kombination).
Die Multiplikation der Item-IDs (3 und 7) erzeugt die PZK (Primzahl-Kombination) 21. Dieser Primzahl-Kombinations-Wert von 21 kann ausschliesslich nur durch die Kombination dieser zwei Gegenstände entstehen.
Wir können nun im "Gewöhnlichen Event", mit Hilfe einer "Bedingten Verzweigung" abfragen welche Zahl aus der Kombination der Gegenstands-IDs entstanden ist und dadurch dem Spieler den erzeugten Gegenstand im Inventar hinzufügen und die zwei (zur Kombination) eingesetzten Gegenstände aus dem Inventar entfernen.
PS: Bei der Abfrage der PZK durch "Bedingte Verzweigungen" ist es sehr empfehlenswert mit der grössten PZK anzufangen (im Beispiel mit der Zahl 143) und dann beständig runterzugehen (dann folgt 21 und dann 10).
Prinzipiell müsst Ihr nur bei den Kombinationsmöglichkeiten, wo zwei identische Gegenstände kombiniert werden sollen, noch eine If-Else-Bedingte Verzweigung einbauen welche prüft ob die Anzahl an identischen Gegenständen grösser/gleich zwei ist. Dazu benötigen wir noch eine zusätzliche Variable (im Beispiel "Itemcount" genannt) wo wir zu Beginn der Abfrage die Menge des ausgewählten Gegenstands speichern um gleich danach die bereits erwähnte grösser/gleich-Abfrage durchführen zu können. Ein Bild sagt manchmal mehr als tausend Worte, deshalb hier noch ein Screenshot des "Gewöhnlichen Ereignis" mit der erweiterten Abfrage:
Ich hoffe dieses Tutorial ist genauso nützlich wie das erste Tutorial zur Gegenstands-Kombination. Ich denke die Idee mit der "Primzahl-Multiplikation" kann auch für andere Dinge sehr nützlich sein.
Liebe Grüsse
Selina Luna