Ich wollte den User im Spiel eine DS-Liste bearbeiten lassen, auf die er dann beim nächsten Spielstart wieder zugreifen kann. Jedoch speichert game_save die DS-Liste nicht. Wie bekomme ich die DS-Liste gespeichert?
DS-Listen speichern?
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen
-
-
Es gibt für jede ds_* Struktur eine Funktion, mit der du die Struktur in einen String umwandeln kannst und eine Funktion, ums genau umgekehrt zu machen - diesen String kannst du dann also in eine Datei schreiben, beim Laden wieder auslesen und daraus dann die Datenstruktur wiederherstellen.
-
Es gibt für jede ds_* Struktur eine Funktion, mit der du die Struktur in einen String umwandeln kannst und eine Funktion, ums genau umgekehrt zu machen - diesen String kannst du dann also in eine Datei schreiben, beim Laden wieder auslesen und daraus dann die Datenstruktur wiederherstellen.
Danke, weißt du auch wie diese Funktion heißt?
Edit:
Ich kann ja nochmal genauer beschreiben was ich vorhabe:
Also ich möchte ein Programm machen, bei dem man einen Text eingeben muss und je nach Text bekommt man eine bestimmte Antwort. Ähnlich wie bei "Cortana" etc., also bestimmte Antworten die im Falle dazugehöriger "Fragen" genannt werden. Beispiel wäre
Nun soll man in dem Programm auch selber Texte und dazugehörige Fragen hinzufügen können, also habe ich zwei Button wo ich je einen Text und eine Antwort eingeben kann, einen weiteren Button zum Bestätigen.
Die neuen Einträge werden dann in ihre jeweiligen DS-Listen gespeichert und so einer großen Liste hinzugefügt. Das klappt alles prima, nur wenn ich das Spiel erneut starte hat zwar game_save() das Spiel gespeichert, nur die DS-Liste nicht, die ist leer. Alles was ich tun müsste wäre die DS-Liste irgendwie in einer ini zu speichern. Doch selbst wenn ich die DS-Liste in einen String umwandeln und diesen dann in einer ini speichern kann, wie soll ich den dann wieder in einer DS-Liste einfügen? Also mal angenommen ich habe drei Werte in meiner Liste "global.texte": Apfel, Banane, Mango - Wenn ich diese DS-Liste in einen String umwandle "Apfel, Banane, Mango" und diesen beim nächsten Start wieder zu einer DS-Liste hinzufüge dann habe ich doch nur eine DS-Liste von einem Wert, "Apfel, Banane, Mango". Oder erkennt GameMaker die Kommata, trennt die Werte wieder und fügt sie separat in die Liste ein? Weil wenn dies nicht der Fall ist, wovon ich ausgehe, dann müsste ich ja jeden Wert der Liste einzeln speichern, also könnte ich ja praktisch gleich auf DS-Listen verzichten und Ini-Dateien verwenden
GML-Quellcode
Da sitz ich ja Stunden am Schreiben, außerdem hab ich so ein Limit an möglichen Texten, was ich auch nicht will. Es muss doch eine andere Möglichkeit geben
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von cedisupersoccer ()
-
-
Danke
Edit:
Upsa, den String kann man ja gar nicht lesen
Kann man diesen "Code" der da zurückgesendet wird irgendwie in einen lesbaren String verwandeln?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von cedisupersoccer ()
-
Dafür kann man eigentlich noch besser ds_maps benutzen
Dort ist es ähnlich wie in einer Ini, da du einfach nur key=value hast.Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach
Willst du mit mir auf Discord Chatten/Quatschen?
Meine Husi's Tutorial Reihe -
mit der _read funktion kannst du das ganze wieder in eine ds_list reinladen und diese dann auslesen
132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... -
@Rhazul
du meinst mit der ds_*_read FunktionEin Bug ist mehr als nur ein Bug, es ist ein... Käfer!
Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach
Willst du mit mir auf Discord Chatten/Quatschen?
Meine Husi's Tutorial Reihe -
Rhazul schrieb:
mit der _read funktion kannst du das ganze wieder in eine ds_list reinladen und diese dann auslesen
So langsam gebe ich auf, ich sehe den Grund nicht warum es bei mir nicht klappt
Ich stelle das Programm mal zum Download vielleicht versteht man es dann besser.
Project1.project.gmx
Edit: Passt auf der Download-Seite auf, da sind falsche Download-Button.
Bei mir war der graue der richtige
Doppeledit: Hier nochmal auf Google Drive, oben mittig ist der Download-Button
drive.google.com/file/d/0BxfQ7_6-kybjbXU5Q3REM2haSUk/view
...Oh ich sollte vielleicht auch den ganzen Ordner hochladen
drive.google.com/open?id=0BxfQ7_6-kybjMGdKT3BFdnhka0U
Oben auf den Ordnernamen klicken und auf Herunterladen. Vielleicht findet ihr den Fehler, danke
Nein - halt. Das scheint auch nicht zu gehen. Wie zum Deibel lad ich denn mein Projekt hoch?Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von cedisupersoccer ()
-
Mit File > Export Project > *.gmz erstellst du eine gezippte Projektdatei in der alles enthalten ist.
was klappt denn nicht an der ds_list_read funktion? Hast du dir in der Doc angesehen wie du die Funktion nutzen musst?
GML-Quellcode
- list = ds_list_create();
- ini_open("save.ini"); //öffnet die ini oder erstellt eine gleichnamige falls sie noch nicht existiert
- var str = ini_read_string("Lists", "0", "");//statt Lists kann auch was anderes zB Save dastehen, das kannst du dir aussuchen wenn du mit ini_write_string den inhalt von ds_list_write abspeicherst
- if str != ""
- {
- ds_list_read(list, str);
- }
- ini_close();