DynamicQuickPatch Plugin für RPG Maker 2003 (DynRPG)
DynamicQuickPatch Plugin für RPG Maker 2003 (DynRPG)
Hallo zusammen!
Ich freue mich, mein neuestes Plugin für RPG Maker 2003 vorzustellen. Es handelt sich um ein dynamisches Speichermodifikations-System, das vollständig über die DynRPG.ini konfiguriert werden kann.
Funktionen
Komplett konfigurierbar über DynRPG.ini
Zuordnung von RPG Maker 2003 Variablen zu Speicheradressen
Unterstützung für drei Wertformate (8-bit, 32-bit und Hex)
Automatische Speicheraktualisierung bei Variablenänderungen
Konfigurierbare automatische Updates beim Laden von Spielständen
Automatische Wiederherstellung der ursprünglichen Speicherwerte beim Starten eines neuen Spiels
Konfigurierbare Variablen-ID-Bereiche passend zu deiner Spieldatenbank
Bereichsvalidierung zur Verhinderung ungültiger Speicherschreibvorgänge
Optionale Debug-Meldungen, die Speicheränderungen anzeigen
Installation
Platziere die Datei 'DynamicQuickPatch.dll' im DynPlugins-Ordner deines Spiels
Konfiguriere das Plugin in deiner DynRPG.ini Datei (siehe unten)
Konfiguration
Die gesamte Konfiguration erfolgt in der DynRPG.ini Datei. Hier ist ein Beispiel:
Unterschied zu normalen Quickpatches
DynRPG's Standard-Quickpatches sind statische Speichermodifikationen, die in der DynRPG.ini-Datei definiert und einmalig beim Laden des Spiels angewendet werden:
Dieses Plugin erweitert das Konzept, indem es:
Speichermodifikationen während des Spiels dynamisch ändern lässt
Den Speicher automatisch aktualisiert, wenn sich Variablen ändern
Sicherstellt, dass der Speicher beim Laden von Spielständen korrekt aktualisiert und beim Starten eines neuen Spiels zurückgesetzt wird
Arbeiten mit Hex-Werten
Bei Verwendung des Typs 'hex' ist der 'HexValue' statisch und kann den Wert der Variable nicht direkt verwenden. RPG Maker 2003-Variablen können nur Ganzzahlen speichern, keine Hex-Strings. So verwendest du Hex-Werte effektiv:
Variablen als Aktivierungsschalter verwenden
Für Hex-Werte fungiert die Variable als Ein/Aus-Schalter:
- Wenn Variable = 0: Der Patch ist AUS (ursprüngliche Speicherwerte bleiben erhalten)
- Wenn Variable > 0: Der Patch ist EIN (Hex-Wert wird angewendet)
Hier ist ein Beispiel mit den Komponenten des "HideEXP"-Quickpatches:
Alternative: 8-Bit- oder 32-Bit-Werte für dynamische Steuerung
Wenn du direkte numerische Kontrolle über Speicherwerte benötigst, verwende stattdessen die 8-Bit- oder 32-Bit-Typen:
Für die 8-Bit- und 32-Bit-Typen wird der tatsächliche Wert der Variable verwendet, um den Speicher zu modifizieren.
Ich muss mich vorab entschuldigen, dass ich da jetzt vielleicht eine dumme Frage stelle, weil ich mich nicht wirklich gut auskenne und bislang eigene Speicher- und Lademenüs mit den vorhandenen DynRPG-Patches gebastelt habe (das ist aber auch schon wieder einige Zeit her). Aber was konkret kann ich damit jetzt machen, was mir vorher nicht möglich war? Konkret würde mich interessieren: Könnte ich mit deinem Patch auf einem selbst gebastelten Titlescreen eine Sprachauswahl (zB für die Sprachen Deutsch und Englisch) einbauen und wenn ich dann einen bestehenden Speicherstand lade, wird, je nach Sprachauswahl am Titelbild, auch Einfluss auf einen entsprechenden Switch in einem bereits bestehenden Speicherstand genommen, sodass dann dort die Sprache, wenn sie zuvor Deutsch war, nun Englisch ist?
Ich muss mich vorab entschuldigen, dass ich da jetzt vielleicht eine dumme Frage stelle, weil ich mich nicht wirklich gut auskenne und bislang eigene Speicher- und Lademenüs mit den vorhandenen DynRPG-Patches gebastelt habe (das ist aber auch schon wieder einige Zeit her). Aber was konkret kann ich damit jetzt machen, was mir vorher nicht möglich war? Konkret würde mich interessieren: Könnte ich mit deinem Patch auf einem selbst gebastelten Titlescreen eine Sprachauswahl (zB für die Sprachen Deutsch und Englisch) einbauen und wenn ich dann einen bestehenden Speicherstand lade, wird, je nach Sprachauswahl am Titelbild, auch Einfluss auf einen entsprechenden Switch in einem bereits bestehenden Speicherstand genommen, sodass dann dort die Sprache, wenn sie zuvor Deutsch war, nun Englisch ist?
...
Hey Mike,
kein Problem, deine Frage ist absolut berechtigt!
Mit meinem Plugin kannst du bestimmte QuickPatches während des Spiels aktivieren, deaktivieren oder deren Werte ändern. Das eröffnet dir viele neue Möglichkeiten, die vorher so nicht oder nur sehr umständlich möglich waren.
Ein gutes Beispiel: Angenommen, du hast einen Patch, der die Position eines Fensters im Spiel bestimmt. Damit könntest du dem Spieler eine Option anbieten, selbst auszuwählen, wo das Fenster angezeigt werden soll. Ähnlich wie in Chrono Trigger, wo das Battle-HUD entweder oben oder unten am Bildschirm angezeigt werden kann.
Ein weiteres Beispiel wäre bugmenot's RowPhysSkills-Patch: Dort könntest du den Wert von ChargeDmg(%)=49B0BB während des Spiels ändern, obwohl dieser normalerweise fest eingestellt ist.
Zu deiner Frage mit der Sprachauswahl:
Das Umschalten der Sprache und das Speichern dieser Einstellung hat eigentlich nichts direkt mit den QuickPatches zu tun. Aber ich denke, das lässt sich relativ einfach umsetzen.
Wenn ich dich richtig verstanden habe, nutzt du einen eigenen Title Screen (also eine Map mit Events) und möchtest, dass nach dem Laden eines Spielstands die gewählte Sprache beibehalten wird. Also abhängig von einem Switch oder einer Variable.
Ich werde mir das Thema aber heute Abend genauer anschauen und ein Plugin schreiben, das diese Funktion ermöglicht.
Ich melde mich dann nochmal, sobald ich etwas Fertiges habe. Entweder heute Abend oder morgen im Laufe des Tages, je nachdem, wie ich Zeit finde!
Ein gutes Beispiel: Angenommen, du hast einen Patch, der die Position eines Fensters im Spiel bestimmt. Damit könntest du dem Spieler eine Option anbieten, selbst auszuwählen, wo das Fenster angezeigt werden soll. Ähnlich wie in Chrono Trigger, wo das Battle-HUD entweder oben oder unten am Bildschirm angezeigt werden kann.
Ein weiteres Beispiel wäre bugmenot's RowPhysSkills-Patch: Dort könntest du den Wert von ChargeDmg(%)=49B0BB während des Spiels ändern, obwohl dieser normalerweise fest eingestellt ist.
...
Jetzt hab' ich's verstanden, danke! 😊
Zitat
Wenn ich dich richtig verstanden habe, nutzt du einen eigenen Title Screen (also eine Map mit Events) und möchtest, dass nach dem Laden eines Spielstands die gewählte Sprache beibehalten wird. Also abhängig von einem Switch oder einer Variable.
...
Genau. Also ich stelle am Titelbildschirm (mit Events, etc) die Sprache auf Englisch. Dann lade ich einen Spielstand, bei dem ich mit der Spracheinstellung Deutsch begonnen habe. Die Sprache ist jetzt, nach dem Laden, jedoch vollständig Englisch.
Zitat
Ich werde mir das Thema aber heute Abend genauer anschauen und ein Plugin schreiben, das diese Funktion ermöglicht.
Ich melde mich dann nochmal, sobald ich etwas Fertiges habe. Entweder heute Abend oder morgen im Laufe des Tages, je nachdem, wie ich Zeit finde!
...
Bitte tu dir deswegen jetzt keinen Aufwand an! Das war rein theoretisch und ich habe das nur angeführt, weil mir kein besseres Beispiel eingefallen ist. Ein Projekt, wo so eine Funktion zur Anwendung kommen soll, ist derzeit nicht in Arbeit und ich wüsste auch nicht, wann ich sowas in nächster Zeit mal umsetzen könnte, weil ich dafür schlicht und einfach keine Zeit habe 😅
Jetzt hab' ich's verstanden, danke! 😊
Genau. Also ich stelle am Titelbildschirm (mit Events, etc) die Sprache auf Englisch. Dann lade ich einen Spielstand, bei dem ich mit der Spracheinstellung Deutsch begonnen habe. Die Sprache ist jetzt, nach dem Laden, jedoch vollständig Englisch.
Bitte tu dir deswegen jetzt keinen Aufwand an! Das war rein theoretisch und ich habe das nur angeführt, weil mir kein besseres Beispiel eingefallen ist. Ein Projekt, wo so eine Funktion zur Anwendung kommen soll, ist derzeit nicht in Arbeit und ich wüsste auch nicht, wann ich sowas in nächster Zeit mal umsetzen könnte, weil ich dafür schlicht und einfach keine Zeit habe 😅
...
Ah, alles klar. Danke für die Rückmeldung!
Ich hatte schon überlegt, ob man das eventuell mit Global Switches oder Variablen lösen könnte, war mir aber nicht sicher, ob das ohne Umwege bei einem Projekt ohne Titelscreen funktioniert.
Ich habe vorhin sogar kurz einen kleinen Entwurf geschrieben, bei dem ein Switch global gemacht wird. Dafür wird der Status des Switches in einer Settings.ini-Datei gespeichert und beim Start eines neuen Spiels oder beim Laden eines Spielstands wieder eingelesen.
Aber wenn das Ganze aktuell gar nicht wirklich gebraucht wird, lasse ich das erstmal ruhen. Vielleicht ergibt sich ja irgendwann mal ein Anwendungsfall. Dann kann ich das nochmal aufgreifen. 😄