bestehende Blöcke per ini speichern?

  • Win

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • bestehende Blöcke per ini speichern?

    Hallole,

    im Moment arbeite ich gerade an LevelEditor, und ich würde gerne eine Speicherfunktion einbauen. Zwar gibt es dieser "game_save()" oder "game_load()" schon, aber der funktioniert dann nicht mehr richtig, wenn man Speicherdatei selbständig Speicherort speichert. (Und es wurde bei bugs.yoyogames.com als Fehler eingestuft, der ist aber schon fast 1 Monat her)

    Nun, besteht es irgendwie eine Möglichkeit, einer LevelEditor besetzte Blöcke/Deko/Wasauchimmer in "ini-files" zu speichern? Ini braucht man ja Variabeln, und das haben Blöcke eig. auch durch Variable x und y, nur es geht irgendwie nicht, wenn ich jetzt einfach so "ini_write_string("schreibt Variable "x" hin)" hinsetzte, den jeder Objekt hat gleiche Variable "x" und "y" und dann könnte es Probleme auftreten...

    Kurzgefasst: Ich will Blöcke, die von LevelEditor bearbeitet wurde, in ini-files speichern. Wenn man Ini-Files wieder öffnet, dann sollte der Blöcke wieder hin gehören, wo der war.

    Vielleicht hat jemand ein gute Idee? :/
    Ihr stinkt.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von yan.h ()

  • informier dich mal über ds_grid oder benutz doch ein array dafür...

    Du speicherst einfach ein Feld/2 dimensionales-array das Werte hat für jede Blockart einen anderen Wert zb.: ( 0 = Nichts; 1 = Steinblock; 2 = Holzblock; usw. )
    Dann schreibst und liest du diese durch zwei for schleifen ( 1x ne schleife für die höhe und 1x eine schleife für die breite )
    je nachdem was du vorhast. kannst du an diesen punkten deine instazne wieder erstellen und löschen lassen bzw. zeichnen was auch immer du vorhast.
    Wenn du das noch nicht verstehst eigne dir unbedingt die ds_grid struktur an, die hilft dir bestimmt weiter.
  • Abgesehen davon, dass ich nur die Hälfte deines Textes aufgrund deiner Grammatik verstanden habe, solltest du keine INIs verwenden.

    Die benutzt man eigentlich nur (wenn überhaupt) für Programmeinstellungen. Du könntest ein eigenes Format für die Maps benutzen, z.B. sowas:

    Quellcode

    1. player 0 0
    2. wall 128 0
    3. wall 128 32
    4. wall 128 64

    Zum Schreiben bzw Auslesen der Datei, schau dir bitte mal diese Sektion in der Hilfe an.

    - Joex3
  • Joex3 schrieb:

    Abgesehen davon, dass ich nur die Hälfte deines Textes aufgrund deiner Grammatik verstanden habe, solltest du keine INIs verwenden.

    Die benutzt man eigentlich nur (wenn überhaupt) für Programmeinstellungen. Du könntest ein eigenes Format für die Maps benutzen, z.B. sowas:

    Quellcode

    1. player 0 0
    2. wall 128 0
    3. wall 128 32
    4. wall 128 64

    Zum Schreiben bzw Auslesen der Datei, schau dir bitte mal diese Sektion in der Hilfe an.

    - Joex3


    Ja, du hast richtig verstanden.
    Das mit dem Schreiben/Auslesen ist mir schon klar, wie das funktioniert. Aber die Frage ist es: Wie kann ich das aus dem Spiel nach eigene Format für die Maps exportieren/speichern, wenn es kein ini-Datei sein sollte?
    Ihr stinkt.
  • Wie kann ich das aus dem Spiel nach eigene Format für die Maps exportieren/speichern, wenn es kein ini-Datei sein sollte?

    Der GM hat ja nicht nur die Möglichkeit Informationen in ini dateien zu speichern und auszulesen.

    Es werden ja auch z.B: die "file_" funktionen als auch die buffers (für byte speicherung) unterstützt.
    Du könntest also informationen in ein Textfile speichern. (z.B: jede einzelne information ist durch ein spezielles trennzeichen getrennt.)
    Beim auslesen wirst du dann die Strings (also die Zeilen) nach diesem Zeichen durschuchen müssen um die einzelnen Elemente die in einer Zeile gespeichert wurden
    unterscheiden zu können.

    Ich verwende für meine Map-dateien die Buffer. (Nutze die HTTP DLL mit dem GM 8.1, aber Studio bietet das praktisch schon nativ an.)
    > Die Buffer können in dateien geladen und gespeichert werden.
    Dabei speicherst du wirklich geordnet byte für byte die informationen in eine Datei. Wenn du also die Informationen wieder auslsesen möchtest,
    musst du wissen nach welcher Struktur die Daten gespeichert wurden.
    z.B: wäre eine mögliche struktur:

    x Koordinate|y Koordinate| Blocktyp|x Koordinate|y Koordinate| Blocktyp
    Also:
    12|13|1|45|22|1,etc...

    erstes byte ist die x koordinate, 2tes byte die y koordinate und die 3te Koordinate der Blocktyp. (1= Wand,2= Wasser,etc...) > Diese 3 Informationen bilden einen Block.
    Dann fängt das Spiel von vorne los.

    Du speicherst einfach nach einem bestimmten Muster ab. Anhand des Musters kann man erkennen, welches byte für welche Information steht.

    Der vorteil davon ist dass solche Dateien in die du reine bytes speicherst, wesentlich kleiner sein können als Textfiles.
    Ebenso ist für fremde augen weniger erkennbar wie die Informationen abgespeichert sind. > Macht es den "cheatern" etwas schwerer die sachen zu editieren.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von LEWA ()

  • Larsi schrieb:

    Wenn du aber weiterhin mit ini-Dateien statt mit textdateien arbeiten möchtest, schau mal hier


    Es sieht gut aus, jedoch wie ich sehe, geht das nur mit eine Block/Wand (Mag sein, das es mehrere geht. Aber das wäre aufwändig und man bräuchte dann mehrere Variabeln, oder?)
    Und wie ich gesehen habe, ist "ini" für LevelEditor doch ganz sehr empfindlich. Daher werde ich mal "bytes" oder "textdateien" anschauen.
    Ihr stinkt.