Erster Start des Spiels nach Installation

  • Erster Start des Spiels nach Installation

    Hallo zusammen,

    ich bin auf der Suche, nach einer Funktion, welche beim ersten Start des Spiel (nach Installation) z.b. einen Raum aufruft in der Sound und Sprache (global.sound; global.language) gewählt werden kann. Danach soll diese Werte gespeichert werden. Dann beim nächsten Start des Spiels soll dieser Raum / Funktion dann nicht mehr aufgerufen wernde. Im Nachhinein werden die Sprachen/ Sounds und co dann im

    Lässt sich so etwas eventuell schon bei der Installation festlegen? sowas wie: Starten in Englisch oder Deutsch... mit nem kleinem Kästchen :rolleyes: ???

    Grüße!
  • Du kannst doch einfach abfragen ob du das abgespeichert hast

    GML-Quellcode

    1. ​if file_exists("Sprache.txt")
    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 :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ich bin zwar auch noch nicht so gut in GMS, aber ja.
    Sowas meint husi012.

    Nach dem ersten start, wenn die einstellungen gemacht sind, erstellst Du z.B. mit

    GML-Quellcode

    1. file_text_open_write(fname);

    eine Datei.
    In diese schreibst Du die einstellungen hinein.
    Beim nächsten Start wird einfach mit

    GML-Quellcode

    1. if file_exists("Sprache.txt")

    überprüft ob die Datei schon vorhanden ist, wenn ja, diese einstellungen laden,
    wenn nicht, das Spiel/Programm wieder "normal" starten und dann halt die Einstellungen vornehmen und speichern.
  • Ich würde dir eher Ini vorschlagen. Ist auch mit nem Textdokument aber einfacher:
    Mist ich finde grad keinen. Ich hatte zwar mal selber davon gelernt, finde den aber nicht blöd. Ok kurz Tutorial:

    mit ini_open(file); öffnest du eine Datei(egal welche Dateiendung) mit ini_close(); schließt du sie wieder(wichtig). Da zwischen dann um etwas hereinzuschreiben musst du
    - für string ini_write_string(section,key,str); benutzen
    - für real also Zahlen ini_write_real(section,key,real); benutzen

    Fürs lesen
    ini_read_string(section,key,default);
    ini_read_real(section,key,default);

    section ist so eine Art ober Kategorie also z.B. "Sprachen"
    key ist dann der Wert "Ausgewählte_Sprache = "
    default ist der Wert, der zurückgegeben soll, wenn es den Key nicht gibt
    str ist der Wert der in die Ini rein geschrieben werden soll:

    GML-Quellcode

    1. if file_exists("Sprachen.lang"){
    2. ini_open("Sprachen.lang");
    3. global.sprache = ini_read_string("Sprache","Sprache1","");
    4. ini_close();
    5. if global.sprache == ""{
    6. file_delete("Sprachen.lang");
    7. //Ist nicht abgespeichert gewesen
    8. }
    9. }
    10. ​ini_open("Sprachen.lang");
    11. ini_write_string("Sprache","Sprache1",global.sprache);
    12. ini_close();
    Alles anzeigen
    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 :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ich hoffe es bringt dir etwas.

    Scripte, die man haben sollte (mit Beispielinhalten):

    scr_ini_create

    GML-Quellcode

    1. // Prüft, ob der Ordner Settings existiert. Wenn nicht, wird er erstellt.
    2. if directory_exists("Settings"){
    3. }else{
    4. directory_create(working_directory + "\Settings")
    5. }
    6. // INI wird eingelesen. Wenn sie nicht existiert, wird sie erstellt und beschrieben.
    7. if not file_exists("Settings\" + global.datei2){
    8. file = file_text_open_write("Settings\" + string(global.datei2)); // Datei wird erstellt
    9. file_text_write_string(file,"[Data]"); // Section wird angelegt
    10. file_text_writeln(file); // Leere Zeile
    11. file_text_write_string(file,"Snd="+string(global.snd)); // Ist Musik erlaubt?
    12. file_text_writeln(file); // Leere Zeile
    13. file_text_write_string(file,"SndVol="+string(global.sndvolume)); // Lautstärke Musik
    14. file_text_writeln(file); // Leere Zeile
    15. file_text_write_string(file,"Sfx="+string(global.sfx)); // Sind Soundeffekte erlaubt?
    16. file_text_writeln(file); // Leere Zeile
    17. file_text_write_string(file,"SfxVol="+string(global.sfxvolume)); // Lautstärke Soundeffekte
    18. file_text_writeln(file); // Leere Zeile
    19. file_text_write_string(file,"Particle="+string(global.particle)); // Sind Partikel erlaubt?
    20. file_text_writeln(file); // Leere Zeile
    21. file_text_write_string(file,"Fullscreen="+string(global.fullscreen)); // Vollbild?
    22. file_text_writeln(file); // Leere Zeile
    23. file_text_writeln(file); // Leere Zeile
    24. file_text_close(file);
    25. }
    Alles anzeigen


    scr_ini_load

    GML-Quellcode

    1. file_copy("Settings\" + string(global.datei2), string(global.datei2)); // Kopiert die INI in den Hauptordner, da der GM zu doof ist INIs aus Unterordnern zu lesen.
    2. ini_open(global.datei2); // INI Datei wird geöffnet
    3. global.sndvolume = ini_read_real("Data","SndVol",100); // Lautstärke Musik
    4. global.sfxvolume = ini_read_real("Data","SfxVol",100); // Lautstärke Soundeffekte
    5. global.snd = ini_read_real("Data","Snd",true); // Musik
    6. global.sfx = ini_read_real("Data","Sfx",true); // Soundeffekte
    7. global.particle = ini_read_real("Data","Particle",true); // Partikeleffekte
    8. global.fullscreen = ini_read_real("Data","Fullscreen",true);
    9. ini_close() // INI Schließen
    10. file_delete(string(global.datei2)); // INI löschen, ist ja eh im "falschen" Ordner
    Alles anzeigen


    scr_ini_write

    GML-Quellcode

    1. file_copy("Settings\" + string(global.datei2), string(global.datei2));
    2. ini_open(global.datei2); // INI Datei wird geöffnet
    3. ini_write_string("Data","Snd",string(global.snd)); // Musik
    4. ini_write_string("Data","SndVol",string(global.sndvolume)); // Lautstärke Musik
    5. ini_write_string("Data","Sfx",string(global.sfx)); // Soundeffekte
    6. ini_write_string("Data","SfxVol",string(global.sfxvolume)); // Lautstärke Soundeffekte
    7. ini_write_string("Data","Particle",string(global.particle)); // Partikeleffekte
    8. ini_write_string("Data","Fullscreen",string(global.fullscreen)); // Fullscreen oder Fenster?
    9. ini_close() // INI Schließen
    10. file_copy(string(global.datei2), "Settings\" + string(global.datei2));
    11. file_delete(string(global.datei2))
    Alles anzeigen


    die global. - Variablen habe ich in einem extra Script vereint.
    Byte GameMaker Magazin - Online Zeitschrift für Spieleentwickler