Ergebnis 1 bis 7 von 7

Thema: DynamicQuickPatch Plugin für RPG Maker 2003 (DynRPG)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    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

    1. Platziere die Datei 'DynamicQuickPatch.dll' im DynPlugins-Ordner deines Spiels
    2. Konfiguriere das Plugin in deiner DynRPG.ini Datei (siehe unten)


    Konfiguration

    Die gesamte Konfiguration erfolgt in der DynRPG.ini Datei. Hier ist ein Beispiel:

    Code:
    [dynamic_quickpatch]
    ; Debug-Meldungen aktivieren oder deaktivieren
    ShowDebugMessages=true
    
    ; Maximale Variablen-ID (Standard: 1000)
    ; Stelle dies auf die maximale Variablen-ID in deiner Spieldatenbank ein
    MaxVariableId=2000
    
    ; QuickPatch-Zuordnung #1 - Beispiel für 8-Bit-Wertzuordnung
    QuickPatch1_VariableId=1
    QuickPatch1_Address=0x401234
    QuickPatch1_Type=8bit
    QuickPatch1_OnLoadGame=true
    
    ; QuickPatch-Zuordnung #2 - Beispiel für 32-Bit-Wertzuordnung
    ; Dieser Patch wird beim Laden eines Spielstands NICHT angewendet
    QuickPatch2_VariableId=2
    QuickPatch2_Address=0x40ABCD
    QuickPatch2_Type=32bit
    QuickPatch2_OnLoadGame=false
    
    ; QuickPatch-Zuordnung #3 - Beispiel für Hex-Wertzuordnung
    QuickPatch3_VariableId=3
    QuickPatch3_Address=0x410000
    QuickPatch3_Type=hex
    QuickPatch3_HexValue=90ABCD
    ; OnLoadGame ist standardmäßig true, wenn nicht angegeben
    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:

    Code:
    [QuickPatches]
    ; Versteckt EXP im Hauptmenü und Speicherbildschirm
    HideEXP=49E148,EB71,49F1CA,EB67,49F095,EB21
    ; Verschiebt das Fenster auf dem Titelbildschirm zu den Koordinaten 144/56
    MoveTitleWindow=490821,#144,490828,#56
    Dieses Plugin erweitert das Konzept, indem es:
    • Speichermodifikationen während des Spiels dynamisch ändern lässt
    • RPG Maker-Variablen bestimmten Speicheradressen zuordnet
    • 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:

    Code:
    ; Variable 5 steuert die EXP-Anzeige in Menüs:
    ; Wert 0 = EXP anzeigen (ursprüngliches Verhalten, Patch inaktiv)
    ; Wert 1+ = EXP ausblenden (Patch aktiv, verwendet die HideEXP-Quickpatch-Werte)
    
    ; Erste Komponente: Modifiziert Code bei 0x49E148
    QuickPatch1_VariableId=5
    QuickPatch1_Address=0x49E148
    QuickPatch1_Type=hex
    QuickPatch1_HexValue=EB71
    
    ; Zweite Komponente: Modifiziert Code bei 0x49F1CA
    QuickPatch2_VariableId=5
    QuickPatch2_Address=0x49F1CA
    QuickPatch2_Type=hex
    QuickPatch2_HexValue=EB67
    
    ; Dritte Komponente: Modifiziert Code bei 0x49F095
    QuickPatch3_VariableId=5
    QuickPatch3_Address=0x49F095
    QuickPatch3_Type=hex
    QuickPatch3_HexValue=EB21
    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:

    Code:
    ; Variable 6 steuert ein einzelnes Byte bei 0x49E148
    ; Wenn du es auf 235 (0xEB in Hex) setzt, würde die Sprunganweisung
    ; aus dem HideEXP-Quickpatch angewendet werden
    QuickPatch4_VariableId=6
    QuickPatch4_Address=0x49E148
    QuickPatch4_Type=8bit
    
    ; Variable 7 steuert die Fenster-X-Position (Beispiel mit 32-Bit-Wert)
    QuickPatch5_VariableId=7
    QuickPatch5_Address=0x490821
    QuickPatch5_Type=32bit
    Für die 8-Bit- und 32-Bit-Typen wird der tatsächliche Wert der Variable verwendet, um den Speicher zu modifizieren.

    Anforderungen

    • RPG Maker 2003 v1.08
    • DynRPG 0.32


    Download

    Das Plugin ist auf GitHub verfügbar: DynamicQuickPatch Plugin für RPG Maker 2003

    Bei Fragen oder Feedback stehe ich gerne zur Verfügung!

  2. #2

  3. #3
    Zitat Zitat von Cherry Beitrag anzeigen
    Sehr cool!
    Danke!

  4. #4
    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?

  5. #5
    Zitat Zitat von Mike Beitrag anzeigen
    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!

  6. #6
    Zitat Zitat von budbud Beitrag anzeigen
    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 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 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 😅

  7. #7
    Zitat Zitat von Mike Beitrag anzeigen
    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. 😄

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •