level editor

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

  • level editor

    hallo

    ich habe einen level editor gemacht, ind dem man objecte plazieren, drehen, und scalieren kann.
    jetzt möchte ich das per knopfdruck alle wichtigen variablen von jeder instace die ich in editor gemacht hab, d.h. x,y,scalex,scaley,rot,fix in einem textdokument oder einer ini gespeichert werden.

    dann soll man in einem leeren room das textdokument wieder auslesen können und alle objecte + deren variablen erstellen können.

    Hat irgend jemand ne ahnung wie das gehen könnte?

    mfg
  • Schau dir am besten mal die file Funktionen an und leg damit eine Datei mit folgender Struktur an:
    Objekt1_name::Objekt1_x::Objekt1_y::Objekt1_Winkel::Objekt1_Skalierung
    Objekt2_name::Objekt2_x::Objekt2_y::Objekt2_Winkel::Objekt2_Skalierung
    Objekt3_name::Objekt3_x::Objekt3_y::Objekt3_Winkel::Objekt3_Skalierung
    .
    .
    .

    Dann kannst du beim auslesen die Infos wieder aufspalten und die Objekte entsprechend erzeugen
    lassen.
    Gruß, Spellmaker
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • an so etwas in der art hab ich auch schon gedacht...
    funktioniert leider nicht ganz...ka wiso

    also beim drücken der enter taste wird global.save=1
    und
    file=file_text_open_write(string(obj_buttonmask.levelname) + ".txt");

    und dann hab ich im step event von jedem object das gespeichert werden soll, dass geschrieben:
    if global.save=1
    {
    file_text_write_string(obj_edit.file,string(obj));
    file_text_writeln(obj_edit.file);
    file_text_write_string(obj_edit.file,string(x));
    file_text_writeln(obj_edit.file);
    file_text_write_string(obj_edit.file,string(y));
    file_text_writeln(obj_edit.file);
    file_text_write_string(obj_edit.file,string(rot));
    file_text_writeln(obj_edit.file);
    file_text_write_string(obj_edit.file,string(scalex));
    file_text_writeln(obj_edit.file);
    file_text_write_string(obj_edit.file,string(scaley));
    file_text_writeln(obj_edit.file);
    }


    nur leider speichert es mir da manchmal zu viele sachen und manchmal gar keine...gibts da ne bessere lösung?
  • Übergib das Speichern am Besten einem einzigen Objekt, das alle anderen durchgeht.
    Sonst pfuschen zuviele Objekte gleichzeitig an der Datei herum.
    Außerdem würde ich dir raten, pro Zeile ein Objekt zu speichern, indem du die einzelnen
    Informationen durch ein Trennzeichen trennst.
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____
  • Spellmaker hat recht! Wenn es nicht alles von einen Objekt gespeichert wird, hast du hinterher keine Kontrolle mehr, und die Datei zuschließen!

    Hier meine Lösung:

    GML-Quellcode

    1. file = file_text_open(...);
    2. with (obj_tosave) //Führt folgenden Code für jeden obj_tosave.
    3. {
    4. file_text_write_string(obj_edit.file,string(obj));
    5. file_text_writeln(obj_edit.file);
    6. [...]
    7. file_text_write_string(obj_edit.file,string(scaley));
    8. file_text_writeln(obj_edit.file);
    9. }
    10. file_text_close(file);
    Alles anzeigen


    Solltest du mehrere Objekte zum speichern haben (z.B. obj_wall, obj_item...) erstell einfach ein leeres Objekt obj_tosave.
    Setzt bei jeden zu speichernden Objekt Parent (Objekt Eigenschaften, linke Leiste) auf obj_tosave.
    Damit sprichst du mit with obj_tosave auch obj_wall, obj_item usw. an.

    Natürlich kann man es noch Binär speichern, also Pro Info nur ein oder zwei Bytes, dadruch wäre es auch etwas sicherer gegenüber fremden Eingriffen, aber das is ja jetzt net wichtig^^
    „Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher.“
    Albert Einstein
  • ich hab jetzt im obj das im editor ist das:

    sepp = file_text_open_write("test.txt");

    with (parent)
    {
    file_text_write_string(controller.sepp,string(obj));
    file_text_writeln(controller.sepp);
    file_text_write_string(controller.sepp,string(x));
    file_text_writeln(controller.sepp);
    file_text_write_string(controller.sepp,string(y));
    file_text_writeln(controller.sepp);
    file_text_write_string(controller.sepp,string(rot));
    file_text_writeln(controller.sepp);
    file_text_write_string(controller.sepp,string(scalex));
    file_text_writeln(controller.sepp);
    file_text_write_string(controller.sepp,string(scaley));
    file_text_writeln(controller.sepp);
    }
    file_text_close(controller.sepp);



    und im object das das ganze wieder ausliest das:

    sepp = file_text_open_read("test.txt")
    gehtdahi=1
    while(gehtdahi=1)
    {
    obj=file_text_read_string(sepp);
    file_text_readln(sepp);
    x1=file_text_read_string(sepp);
    file_text_readln(sepp);
    y1=file_text_read_string(sepp);
    file_text_readln(sepp);
    rot=file_text_read_string(sepp);
    file_text_readln(sepp);
    scalex=file_text_read_string(sepp);
    file_text_readln(sepp);
    scaley=file_text_read_string(sepp);
    file_text_readln(sepp);
    if obj=1 {homo=instance_create(x1,y1,box)};
    homo.rot=rot;homo.scalex=scalex;homo.scaley=scaley;
    if file_text_eof(sepp) {gehtdahi=0};
    }

    in die txt datei schreibt er schon dir richtigen sachen rein aber beim auslesen kommt ne fehlermeldung:

    ERROR in
    action number 1
    of Create Event
    for object ausleser:

    Error in code at line 17:
    if obj=1 {homo=instance_create(x1,y1,box)};

    at position 9: Cannot compare arguments.


    hat jemand ne lösung parat?