Problem mit Queue speichern und laden

  • GM 8
  • Problem mit Queue speichern und laden

    Hallo

    ich bin dabei eine map-editor-engine zu machen.
    Die Objekte sollen in eine queue gespeichert werden die dann in eine datei gespeicher und später geladen wird.
    Hier die codes die ich angefertigt hab.
    Das problem ist das immer wenn ich die daqtei laden will kommt die Fehlermeldung, file not opened for reading obwohl ich eindeutig die Funktion dazu geschrieben hab.

    Event zum speichern:

    GML-Quellcode

    1. map_queue = ds_queue_create();
    2. ds_queue_enqueue(map_queue,120); // x coordinate
    3. ds_queue_enqueue(map_queue,80); // y coordinate
    4. ds_queue_enqueue(map_queue,2); // object index
    5. ds_queue_enqueue(map_queue,4); // changed variables (number)
    6. ds_queue_enqueue(map_queue,"var1"); // name of variable 1
    7. ds_queue_enqueue(map_queue,14); // value of variable 1
    8. ds_queue_enqueue(map_queue,"var2"); // name of variable 2
    9. ds_queue_enqueue(map_queue,400); // value of variable 2
    10. ds_queue_enqueue(map_queue,"var3"); // name of variable 3
    11. ds_queue_enqueue(map_queue,150); // value of variable 3
    12. ds_queue_enqueue(map_queue,"var4"); // name of variable 4
    13. ds_queue_enqueue(map_queue,150); // value of variable 4
    14. ds_queue_enqueue(map_queue,"ending"); // haves to stay at the end of the queue
    15. file = get_save_filename('Map files|*.mwm;',"");
    16. if file = "" then exit;
    17. save_file = file_text_open_write(file+".mwm");
    18. file_text_write_string(save_file,ds_queue_write(map_queue));
    19. file_text_writeln(save_file);
    20. file_text_close(save_file);
    Alles anzeigen



    und zum laden:

    GML-Quellcode

    1. file = get_open_filename('Map files|*.mwm;',"");
    2. if file = "" then exit;
    3. load_file = file_text_open_read(file);
    4. map_queue = ds_queue_read(map_queue,file_text_read_string(load_file));
    5. file_text_writeln(load_file);
    6. while(!compare(ds_queue_head(map_queue),"ending")) // compare ist eine eigene Funktion (ermöglich comparisions von strings mit reals)
    7. {
    8. with (instance_create(ds_queue_dequeue(map_queue),ds_queue_dequeue(map_queue),ds_queue_dequeue(map_queue)))
    9. {
    10. repeat(ds_queue_dequeue(map_queue))
    11. {
    12. variable_local_set(ds_queue_dequeue(map_queue),ds_queue_dequeue(map_queue));
    13. }}}
    14. file_text_close(load_file);
    Alles anzeigen



    Kann mir einer sagen was damit nicht stimmt?
    Für jede hilfe bin ich sehr dankbar :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • Oh, hab die Funktion mit file_text_readln verwechselt
    Es ist nicht ganz überflüssig, es ist provisorisch da um später noch andere Informationen aus der Datei zu lesen.

    Jetzt funktionierts perfekt. Danke sehr :)

    p.s. das Problem hätte man viel schneller behoben wenn die zeile auch bei nicht-syntax-problemen in der Fehlermeldung angegeben werden würde :/


    EDIT:
    Hab noch eine kurze frage:
    wie verwendet man die Funktion ds_queue_read(id,str)
    richtig verwendet?
    Hab ichs in meinem Code richtig gemacht?

    Was ist mit id gemeint?
    Soll man da die variable eingeben in die der Index des Queues sein soll.
    oder soll es die gleiche variable sein unter der die Queue in ein String umgewandelt wurde so das der neue index nur wiedergegeben wird von der funktion?

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

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

  • nein, ds_queue_read erstellt eine queue für dich und lädt die daten aus einem string.
    aber evtl solltest du die vorherige queue in der variable map_queue wieder löschen, bevor du die neue zuweist(sofern das überhaupt geht...)..
    "das war meine letzte flamewar PM an dich ."
  • Benutzer online 1

    1 Besucher