Speichermöglichkeiten/Spielstände/Fortschritt/Checkpoints

  • Speichermöglichkeiten/Spielstände/Fortschritt/Checkpoints

    Hallo,

    bin sehr neu hier im Forum, obwohl ich schon seit längerem hier im Forum tätig war, aber mich nicht angemeldet habe, weil da eh so viel steht.

    Meine Frage: Wie erstelle ich CHECKPOINTS?

    Ich habe mir schon ein anderes Tutorial durchgelesen, jedoch wird dort nie ein Codestück oder ähnliches angegeben.
    Also, bei meinem Spiel gibt es 5 Level, Im 2. Level gibt es 2 Checkpoints, wenn man die berührt wird das Spiel abgespeichert und wenn man dann im selben Level stirbt, soll man zum letzten Checkpoint geworfen werden. Bei Levelende soll natürlich auch abgespeichert werden.
    Also das mit dem Speichern und Laden per Drag & Drop kann ich ja, nur werden ja auch die Leben abgespeichert.
    Ich will aber nur einen "Spielstand-Save", wo die genommen Bällchen (Punkten bei mir), Punkteanzahl und der Standort gespeichert wird.
    Ist das irgendwie möglich?

    P.S.: Wenn ihr eine Lösung habt, schreibt bitte, wie man diese anwendet (Code & Step-by-Step-Anleitung)!

    Vielen Dank im Voraus!
  • Schreib in deinen Spielecharakter folgendes:


    Create Event und ins Kollsisionsevent mit Checkpoint:

    GML-Quellcode

    1. cp_punkte=punkte; // oder =score oder wie auch immer du deine Punktzahl speicherst...
    2. cp_x=x;
    3. cp_y=y;


    und beim sterben dann einfach umdrehen:

    GML-Quellcode

    1. punkte=cp_punkte;
    2. x=cp_x;
    3. y=cp_y;
    Einige meiner Spiele:
  • hmm... das ist ja garnicht mal so leicht...
    wie ist das denn? was genau willst du abgespeichert haben?
    also ich denke mal:
    - Leben
    - Punkte
    - Level
    - Checkpoint
    wenn das so ist, kannst du das ganze mit
    gm-d.de/help/410_03_ini.html (einfach)
    oder
    gm-d.de/help/410_01_files.html (schwerer)
    machen

    hier ein beispiel:

    GML-Quellcode

    1. leben = 5;
    2. punkte = 100;
    3. level = 1;
    4. checkpoint = 2;

    so, das ist jetzt nur ein bespiel, wie gerade deine variablen stehen
    als nächstes kommt das abspeichern:

    GML-Quellcode

    1. ini_open('save.ini'); // öffnet eine vorhandene datei oder erstellt sie, falls sie nicht existiert.
    2. ini_write_string('Save','Leben',string(leben)); // schreibt einen string in die geöffnete datei
    3. ini_write_string('Save','Punkte',string(punkte));
    4. ini_write_string('Save','Level',string(level));
    5. ini_write_string('Save','Checkpoint',string(checkpoint));
    6. ini_close(); // schließt die datei

    so, warum hab ich jetzt ini_write_string() genommen? naja, der GM hat Probleme mit dem abspeichern von Zahlen, weil das englische "." nicht mit dem deutschen "," Trennzeichen übereinstmmt. Also speichern wir das als string.
    zum laden:

    GML-Quellcode

    1. ini_open('save.ini'); // öffnet eine vorhandene datei oder erstellt sie, falls sie nicht existiert.
    2. leben = real(ini_read_string('Save','Leben','5')); // gibt etweder den in einer datei existierenden string wieder, oder default (die 5)
    3. punkte = real(ini_read_string('Save','Punkte','0'));
    4. level = real(ini_read_string('Save','Level','1'));
    5. checkpoint = real(ini_read_string('Save','Checkpoint','0'));
    6. ini_close(); // schließt die datei

    dann musst du nur noch abfragen, wenn level = blabla, goto room blabla (mir fällt gerade ein, du solltest dann var die variablen "global." schreiben, sonst werden sie nicht in den nächsten room "transortiert") wenn checkpoint = blabla, x = checkpoint.x, y = ... den rest solltest du selber wissen

    Viel Glück, und ich hoffe ich hab dir geholfen ;)
    EDIT: Verdammt, war jemand wieder schneller :D
    Also, ich hoffe ich hab das richtig verstanden...

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

  • Danke, Danke, Danke für diese schnellen und hilfreichen Antworten.

    Lese es mir gleich durch, aber ich hab mal so "drübergelesen", ich glaub jetzt schaff ichs.

    Danke nochmals!

    EDIT: Irgendwie geht bei mir überhautp keine Variablen-Festlegung, er schreibt dann irgendwas mit "compile error, variable cannot found, ..."! Hat jemand ne Lösung darauf?

    P.S.: Wenn eine Möglichkeit funktioniert hat, schreib ichs rein! (+ Lösung, Code)!

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

  • du musst im create event von deinem objekt erstmal alle variablen auf 0 stellen oder so
    denn eine variable die nicht existiert kann nicht verändert werden
    "Leben. Erzähl' mir bloß nichts vom Leben."
  • Jetzt geht das mit den Variablen, Problem jedoch:

    Wenn ichs dann probiere geht alles, jedoch wenn ich sterbe steht:
    Unknown variable cp_punkte und wenn ich die dann mit ".global" mache, dann steht gleich am Anfang 4 Fehlermeldungen!

    EDIT:

    Juhu, habe es geschafft!
    Speichere die Leben alle in Variablen beim Checkpoint und speichere diese gleich in eine INI-Datei, nachdem man gestorben ist, werden die Daten aus der Datei gelesen und mit den "echten" Lebens, ...-Variablen abgeglichen!

    Danke an alle!

    P.S.: Wer das gleiche Problem hat und eine genaue Lösung haben will, der soll sich bitte per PN bei mir melden. Ich helfe gerne!

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