Werte aus Save vor dem Laden anzeigen

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

  • Werte aus Save vor dem Laden anzeigen

    Hallo zusammen ....

    Ich hab da ein Problem, bei dem ich auf eure Hilfe angewiesen bin :S .

    Bei meinem aktuellen Spiel kann man beim Start sein "Profil" auswählen .... Player 1, -2 , oder -3. Durch die Playerwahl setzt man eine glob. Variable, die anderen Funktionen wie Save, Load, sagt, ob sie "save1, -2, oder -3" laden bzw. speichern sollen.

    Dann landet man im Startraum, mit der Auswahl "New Game" oder "Load game". "New game" iss klar-allerdings wird man noch Aufgefordert seinen Namen einzutragen, der als Glob.Variable gesetzt wird ; bei "Load Game" läd man bisher dann einfach das "save ( mit dem zuvor gewählten Player Wert)"; ist kein Save für diesen player vorhanden, wird dieser Button wie "Load Game" behandelt.

    Toll ..... aber unübersichtlich.

    Ich speichere aktuell über die GM-Speicherfunktion ab .... ich weiß, da gibt es bessere Möglichkeiten, aber die hab ich bis dato noch nicht wirklich kapiert .... :pinch:

    ICH HÄTTE GERNE FOLGENDES:

    Gespeichert werden soll all der Standard wie Score, Health, Level, ..... aber auch der Spielername und evtl. ein Screenshot des aktuellen Levels.

    Den Spielernamen, Level und Punktestand würde ich allerdings gerne neben dem "Load" Button anzeigen lassen, damit man überhaupt weiss, was für einen Stand man damit lädt. Evtl. auch noch den (verkleinerten) screenshot.

    Viel Bla,Bla ...... aber hier meine Frage: Wie muss ich speichern? Und wie komm ich an die Werte in der Save datei ran?

    Bitte bedenkt bei eurer Antwort .... ich bin Anfänger ( vor allem was GML angeht) ?(

    265300 fachen Dank und viele Grüße - Waldi

    PS: GM7/Pro
    :fresse: .... oder zumindest an die Board-Regeln halten ...
  • Ohne Hack kommste nich an die Werte der Save-Datei ran.
    Musste ein eigenes Format erstellen.

    Wenn nicht soviel gespeichert werden muss, eignet sich eine ini ganz gut.

    GML-Quellcode

    1. //speichern
    2. var playerid;
    3. playerid = argument0;
    4. ini_open("save.ini");
    5. ini_write_real("Global","Players",global.playercount);//speichert anzahl der player
    6. ini_write_string("Global","Name"+string(playerid),global.player[playerid].name); //speichert den namen des Players
    7. screen_save("screens/save"+string(playerid)+".bmp");
    8. ini_write_string(global.player[playerid].name,"Screenshot","screens/save"+string(playerid)+".bmp"); //beispiel, speichert den Pfad zum gemachten Screen
    9. ini_write_real(global.player[playerid].name,"Score",global.player[playerid].score);
    10. ...
    11. ...
    12. ini_close();
    13. //laden
    14. ini_open("save.ini");
    15. var playerid.;
    16. playerid = argument0;
    17. global.player[playerid].name = ini_read_string("Global","Name"+string(playerid));
    18. global.player[playerid].screen = sprite_add(ini_read_string(name,"Screenshot"),....);
    19. global.player[playerid].score = ini_read_real(name,"Score");
    20. ...
    21. ...
    22. ...
    23. ini_close();
    Alles anzeigen
    "das war meine letzte flamewar PM an dich ."

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von blubberblub ()

  • ok... aus heute Abend wurde wohl nix - ich war die letzten Tage unterwegs.

    DANKE :thumbsup: für deinen Code. Ich hab das mal eingebaut, allerdings nicht um direkt zu speichern und auch ohne Screenshots.

    Aufgrund der massigen globalen Variablen, die ich speichern muss, arbeite ich noch immer mit der Standart Speicherfunktion.

    Sobald ein neuer room startet, wird automatisch gespeichert UND automatisch eine Ini angelegt mit dem Spielernamen, Level, Punkte und Leben.

    Beim Start habe ich die Spielerauswahl mit der möglichkeit eines der drei Profile auszuwählen. Wählt man Player 1, hat man die wahl zwischen "New Game" oder "Load Game". Ist für das gewählte Profil eine Ini Vorhanden werden Name, Level und Punkte angezeigt, sowie ein verleinertes Bildchen des Levels. (Das "Level-Sprite" hat Subimages mit Level1="1" usw. Die Levelvariable aus der INI schaltet dann den entsprechenden image_index.)

    Ist eine INI und somit auch ein Speicherstand vorhanden, kommt beim Klick auf New Game die Info, dass damit der Gespeicherte Stand überschrieben wird und bei einem weiteren Klick auf New Game,muss der neue Name eingegeben werden und man startet ein neues Spiel.

    Evtl. etwas umständlich und sicherlich nicht die feinste Art das zu lösen, aber es funktioniert! 8o

    Wenn man wie ich keine Ahnung von GML hat ( aber ich bin dran!!!), muss man halt etwas improvisieren.

    Vielen dank blubberblub für deine Hilfe!

    Bis zu meinem nächsten Problem ;)

    VLG Waldi
    :fresse: .... oder zumindest an die Board-Regeln halten ...