Räume extern Speichern mit Object-Koordinaten

  • GM 8

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

  • Räume extern Speichern mit Object-Koordinaten

    Hallo,

    Da ich in meinem Spiel Levels aus Dateien einlesen lassen will,habe ich folgenden Code zum speichern:

    GML-Quellcode

    1. global.levelfile = file_text_open_write("meinlevel.txt"); // Nur als Beispiel
    2. with (all) {
    3. file_text_write_string(global.levelfile,string(object_index) + "|" + string(x) + "|" + string(y)); // Hier wird der Objektindex in eine Datei gespeichert.
    4. file_text_writeln(global.levelfile);// Nächste Zeile
    5. file_text_write_string(global.levelfile,string(x)); // Hier wird der x-Koordinate in eine Datei gespeichert.
    6. file_text_writeln(global.levelfile);// Nächste Zeile
    7. file_text_write_string(global.levelfile,string(y)); // Hier wird der y-Koordinate in eine Datei gespeichert.
    8. }
    9. file_text_close(global.levelfile);

    und folgenden zum laden:

    GML-Quellcode

    1. levelfile = file_text_open_read("meinlevel.txt"); // Nur als Beispiel
    2. while(!file_text_eof(levelfile)) { // Solange
    3. nid = file_text_read_real(levelfile); // Objekt ID auslesen
    4. file_text_readln(levelfile);
    5. nx = file_text_read_real(levelfile); // X-Koordinate auslesen
    6. file_text_readln(levelfile);
    7. ny = file_text_read_real(levelfile); // Y-Koordinate auslesen
    8. file_text_readln(levelfile);
    9. instance_create(nx,ny,nid); // Objekt erzeugen
    10. }
    11. file_text_close(global.levelfile);
    Alles anzeigen


    Problem:
    ___________________________________________
    ERROR in
    action number 1
    of Trigger Event: <Deleted>
    for object controller:

    Creating instance for non-existing object: 128

    Dieser Fehler tritt in dem moment auf,in dem man den Raum laden will

    Wenn mir jemand weiterhelfen würde,wäre ich dankbar :)

    mfg,domi
  • Zeig mal den Inhalt aus der Datei. Vllt. liegt es aber auch am speichern:

    GML-Quellcode

    1. global.levelfile = file_text_open_write("meinlevel.txt"); // Nur als Beispiel
    2. with (all) {
    3. file_text_write_string(global.levelfile,string(object_index);/* + "|" + string(x) + "|" + string(y));*/ // Hier wird der Objektindex in eine Datei gespeichert.
    4. //du speicherst hier nochmal die x bzw. y coords
    5. file_text_writeln(global.levelfile);// Nächste Zeile
    6. file_text_write_string(global.levelfile,string(x)); // Hier wird der x-Koordinate in eine Datei gespeichert.
    7. file_text_writeln(global.levelfile);// Nächste Zeile
    8. file_text_write_string(global.levelfile,string(y)); // Hier wird der y-Koordinate in eine Datei gespeichert.
    9. }
    10. file_text_close(global.levelfile);


    oder am laden. mich stört das hier:
    levelfile = file_text_open_read("meinlevel.txt"); // Nur als Beispiel

    GML-Quellcode

    1. while(!file_text_eof(levelfile)) { // Solange
    2. nid = file_text_read_string(levelfile); // Objekt ID auslesen
    3. //das ist theoretisch ein string oder? Ich bin mir nicht sicher aber okej..
    4. file_text_readln(levelfile);
    5. nx = file_text_read_real(levelfile); // X-Koordinate auslesen
    6. file_text_readln(levelfile);
    7. ny = file_text_read_real(levelfile); // Y-Koordinate auslesen
    8. file_text_readln(levelfile);
    9. instance_create(nx,ny,nid); // Objekt erzeugen
    10. }
    11. file_text_close(global.levelfile);
    Alles anzeigen


    überall hast du global.levelfile bis auf in der while schleife. Änder mal das und meld dich dann wieder. Mehr fällt mir dazu gerade nicht ein.

    MfG Rodrog
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Ok,schonmal danke,habe die Scripts nun so:

    Speichern:

    GML-Quellcode

    1. global.levelfile = file_text_open_write("meinlevel.txt");
    2. with (all) {
    3. file_text_write_string(global.levelfile,string(object_index)) // + "|" + string(x) + "|" + string(y)); // Hier wird der Objektindex in eine Datei gespeichert.
    4. file_text_writeln(global.levelfile);// Nächste Zeile
    5. file_text_write_string(global.levelfile,string(x)); // Hier wird der x-Koordinate in eine Datei gespeichert.
    6. file_text_writeln(global.levelfile);// Nächste Zeile
    7. file_text_write_string(global.levelfile,string(y)); // Hier wird der y-Koordinate in eine Datei gespeichert.
    8. }
    9. file_text_close(global.levelfile);


    Laden:

    GML-Quellcode

    1. global.levelfile = file_text_open_read("meinlevel.txt");
    2. while(!file_text_eof(global.levelfile)) { // Solange
    3. nid = file_text_read_real(global.levelfile); // Objekt ID auslesen
    4. file_text_readln(global.levelfile);
    5. nx = file_text_read_real(global.levelfile); // X-Koordinate auslesen
    6. file_text_readln(global.levelfile);
    7. ny = file_text_read_real(global.levelfile); // Y-Koordinate auslesen
    8. file_text_readln(global.levelfile);
    9. instance_create(nx,ny,nid); // Objekt erzeugen
    10. }
    11. file_text_close(global.levelfile);
    Alles anzeigen

    Inhalt der Textdatei:
    0
    224
    2082
    16
    16

    Fehler:
    ___________________________________________
    ERROR in
    action number 1
    of Trigger Event: <Deleted>
    for object controller:

    Creating instance for non-existing object: 16


    Was mir etz auffällt,ist das es 5 Einträge sind,aber 2 Objecte,müssten also 6 sein.Weiß aber ned woran es liegt :(
    Was mich auch wundert ist,dass y angeblich 2082 sein soll,wobei der Raum nur 640x480 ist...

    mfg,domi

    EDIT: Ich glaube ich weiß den Fehler xD,erklärt auch die 2082 :
    Die 2 hinten bei 2082 ist die Object ID meines Objects,wurde aber noch hinter y geschrieben,script müsste also so sein:

    GML-Quellcode

    1. global.levelfile = file_text_open_write("meinlevel.txt");
    2. with (all) {
    3. file_text_write_string(global.levelfile,string(object_index)) // + "|" + string(x) + "|" + string(y)); // Hier wird der Objektindex in eine Datei gespeichert.
    4. file_text_writeln(global.levelfile);// Nächste Zeile
    5. file_text_write_string(global.levelfile,string(x)); // Hier wird der x-Koordinate in eine Datei gespeichert.
    6. file_text_writeln(global.levelfile);// Nächste Zeile
    7. file_text_write_string(global.levelfile,string(y)); // Hier wird der y-Koordinate in eine Datei gespeichert.
    8. file_text_writeln(global.levelfile);// HIER DIE ÄNDERUNG
    9. }
    10. file_text_close(global.levelfile);


    EDIT 2: Ich bin ein Genie,es klappt 8o

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