Ergebnis 1 bis 3 von 3

Thema: *.rvdata editieren?

  1. #1

    *.rvdata editieren?

    Einen guten Morgen erstmal.

    Ich suche nach einer Möglichkeit, eine bestehende *.rvdata Datei extern zu öffnen und zu editieren. Ich weiss, daß die mit Marshal.load in
    Ruby eingelesen werden können, jedoch bin ich mir über die Syntax, die ich dafür benötige nicht im Klaren. Ich habe bereits den ganzen
    gestrigen Tag mit der Suche nach Informationen zugebracht, doch die Informationen sind speziell im Bezug auf RGSS2 und den RPG Maker VX
    doch sehr dürftig.
    Wie muss ich die Methode umgestalten um eine editierte *.rvdata, bzw. eine neue wieder zu dumpen?
    Da die Frage schon woanders kam: Ich bin mir sicher, daß es legal ist, das zu tun. Verboten ist nur das Auslesen der inneren Datenstruktur der verschlüsselten Archive (Game.rgss2a; siehe RGSS Specifications/Encrypted Archieves)

    Ach ja: Gibt es eine Möglichkeit den Namen von Variablen/Schaltern über Show Message anzuzeigen, ohne den Umweg über den Scripteditor?


    Gruß,
    WangXu

  2. #2
    Wenn in einer Datei nur ein Objekt gespeichert ist, kannst du es so herauslesen:
    Code:
    objekt = File.open("./data/bla.vxdata") {|io| Marshal.load(io)}
    Bei mehreren Objekten in einer Datei (z.B. Savedateien) holst du die Objekte so heraus
    Code:
    objekte = File.open("./data/bla.vxdata") {|io|
      objs = []
      objs << Marshal.load(io) until io.eof?
      objs
    }
    Das Abspeichern funktioniert eigentlich ähnlich:
    Code:
    File.open("./data/bla.vxdata") {|io|
      Marshal.dump(mein_objekt, io)
    }
    Zum Bearbeiten brauchst du dir eigentlich nur die Helpfile anschauen. Dort sind die Datentypen und ihre Attribute erklärt.

    Die Messagebefehle kannst du natürlich erweitern. In deinem Fall würde das so aussehen:

    Code:
    class Window_Message < Window_Selectable
      alias convert_special_characters_without_varname convert_special_characters
      def convert_special_characters
        @text.gsub!(/\\VN\[(\d+)\]/i) {$data_system.variables[Integer($1)]}
        @text.gsub!(/\\SN\[(\d+)\]/i) {$data_system.switches[Integer($1)]}
        convert_special_characters_without_varname
      end
    end
    Danach kannst du in der Message die Befehle \vn[4] den Namen der Variable 4, und mit \sn[7] den Namen des Switchs 7 ausgeben.

  3. #3
    Vielen Dank! Funktioniert wunderbar.

    Gruß,
    WangXu

    Edit:
    Tausend Dank noch einmal. Ich habe eben geschafft, wofür ich die *.rvdata editieren wollte! Ich habe eine eigene rvdata für Munition geschrieben.







    Gruß,
    WangXu

    Geändert von WangXu (17.03.2009 um 21:45 Uhr)

Berechtigungen

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