Brauche Hilfe mit Level-Editor.

  • GM 8

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

  • Brauche Hilfe mit Level-Editor.

    Hey :D
    Ich brauche Hilfe bei meinem Level Editor. Projekte speichern und laden funktioniert alles, aber jetzt brauche ich hilfe, dass wen man Objekte einfügt, die in dem nächten Raum genauso eingesetzt sieht oder geht das nur im gleichen Raum? Glaube aber nicht, denn bei anderen Level-Editoren wird ein zweiter Raum gebraucht. Was gibt es dafür für möglichkeiten? VIelleicht eine schnelles Savegame erstellen, in den nächten Raum gehen und dort alle zur Show gestellten Objekte zu funktionierenden Spielern machen und dann kann man es eigentlich spielen... Naja... Hilfe?

    Danke im Vorraus!
  • copyboy schrieb:

    Das hab ich jetzt nicht ganz verstanden ... du benutzt also die eingebauten Savegames?
    Wird wohl eher nicht hinhauen. Benutz lieber die file_-Funktionen und bastel dir dein eigenes Format.

    Eine eigene Dateiendung, meinst du? Naja, das kann ich machen... Aber welche file funktion muss ich benutzen? Verstehst du/ Versteht ihr was ich meine? Ist voll schwer auszudrücken 8| .
  • Copy meinte wohl ein komplett eigenes system zu erstellen dass die position der Instanzen speichert. Aber wenn es nur innerhalb eines spiels sein soll reicht es wenn du die Objekte auf persistent stellst. Dies bewirkt nähmlich das Instanzen beim verlassen des raumes nicht zerstört werden.
    Also persistent = true oder ein kreizchen im Objekteditor machen.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • ich hatte das mal mit einem ganz einfachem script gemacht. ich hab einfach eine variable mit den objekt ids verglichen und mit object_index den namen des objekts gespeichert.

    GML-Quellcode

    1. var objid,obj,file;
    2. file=file_text_open_write('test.txt')
    3. obj=0
    4. objid=100000
    5. while(obj<=instance_number(all)){
    6. if(instance_exists(objid))
    7. {file_text_write_string(file,'instance_create'+'('+string(objid.x)+','+string(objid.y)+','+string(objid.object_index)+')')
    8. file_text_writeln(file)}
    9. objid+=1
    10. obj+=1}
    11. file_text_close(file)
    Alles anzeigen


    danach noch verschlüsselt und dann später wieder entschlüsselt und mit execute_file ausgeführt.
  • @-$Marvin$-: Igitt. Das ist ja lahm² und hässlich³.
    Ich hätte jetzt eher sowas vorgeschlagen:
    Spoiler anzeigen

    GML-Quellcode

    1. // scr_save();
    2. var file;
    3. file = file_text_open_write("save.dat");
    4. file_text_write_real(file,lives); file_text_writeln(file);
    5. file_text_write_real(file,score); file_text_writeln(file);
    6. with (obj_player) {
    7. file_text_write_real(file,0); file_text_writeln(file);
    8. file_text_write_real(file,x); file_text_writeln(file);
    9. file_text_write_real(file,y); file_text_writeln(file);
    10. file_text_write_string(file,name); file_text_writeln(file);
    11. file_text_write_real(file,hspeed); file_text_writeln(file);
    12. file_text_write_real(file,vspeed); file_text_writeln(file);
    13. }
    14. with (obj_block) {
    15. file_text_write_real(file,1); file_text_writeln(file);
    16. file_text_write_real(file,x); file_text_writeln(file);
    17. file_text_write_real(file,y); file_text_writeln(file);
    18. }
    19. file_text_close(file);
    Alles anzeigen

    GML-Quellcode

    1. // scr_load();
    2. var file,type,xx,yy,obj;
    3. file = file_text_open_read("save.dat");
    4. lives = file_text_read_real(file); file_text_readln(file);
    5. score = file_text_read_real(file); file_text_readln(file);
    6. while (!file_text_eof(file)) {
    7. type = file_text_read_real(file); file_text_readln(file);
    8. switch (type) {
    9. case 0:
    10. xx = file_text_read_real(file); file_text_readln(file);
    11. yy = file_text_read_real(file); file_text_readln(file);
    12. obj = instance_create(xx,yy,obj_player);
    13. obj.name = file_text_read_string(file); file_text_readln(file);
    14. obj.hspeed = file_text_read_real(file); file_text_readln(file);
    15. obj.vspeed = file_text_read_real(file); file_text_readln(file);
    16. break;
    17. case 1:
    18. xx = file_text_read_real(file); file_text_readln(file);
    19. yy = file_text_read_real(file); file_text_readln(file);
    20. obj = instance_create(xx,yy,obj_block);
    21. break;
    22. }
    23. }
    24. file_text_close(file);
    Alles anzeigen
    Natürlich nur ein Beispiel. Ich würde übrigens die 39dll dafür benutzen, mit der kann man alles Mögliche binär in eine Datei schreiben. Beim GM kann man nur einzelne Bytes schreiben, also müsste man sich seine eigenen Funktionen haben. So funktionert es natürlich, aber man hat halt ein leichtes Spiel als Skriptkiddie, da man die Dateien ohne Problem in einem Text-Editor öffnen und bearbeiten kann. Aber das ist wohl eher dein kleinstes Problem. Du musst erst mal ein Spiel auf die Beine bringen, dass andere zum Cheaten Motivieren könnte. Erst dann hat Save-Dateien sichern überhaupt einen Sinn.

    Übrigens, Weiße Weihnacht benutzt die 39dll um Level Dateien zu speichern, laden und zum Senden an die Mitspieler (ist ein Multiplayer Spiel). In der .zip ist auch die .gmk. Keine Sorge, du kannst damit machen, was du willst.

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

  • copyboy schrieb:

    @-$Marvin$-: Igitt. Das ist ja lahm² und hässlich³.
    Ich hätte jetzt eher sowas vorgeschlagen:
    Spoiler anzeigen

    GML-Quellcode

    1. // scr_save();
    2. var file;
    3. file = file_text_open_write("save.dat");
    4. file_text_write_real(file,lives); file_text_writeln(file);
    5. file_text_write_real(file,score); file_text_writeln(file);
    6. with (obj_player) {
    7. file_text_write_real(file,0); file_text_writeln(file);
    8. file_text_write_real(file,x); file_text_writeln(file);
    9. file_text_write_real(file,y); file_text_writeln(file);
    10. file_text_write_string(file,name); file_text_writeln(file);
    11. file_text_write_real(file,hspeed); file_text_writeln(file);
    12. file_text_write_real(file,vspeed); file_text_writeln(file);
    13. }
    14. with (obj_block) {
    15. file_text_write_real(file,1); file_text_writeln(file);
    16. file_text_write_real(file,x); file_text_writeln(file);
    17. file_text_write_real(file,y); file_text_writeln(file);
    18. }
    19. file_text_close(file);
    Alles anzeigen

    GML-Quellcode

    1. // scr_load();
    2. var file,type,xx,yy,obj;
    3. file = file_text_open_read("save.dat");
    4. lives = file_text_read_real(file); file_text_readln(file);
    5. score = file_text_read_real(file); file_text_readln(file);
    6. while (!file_text_eof(file)) {
    7. type = file_text_read_real(file); file_text_readln(file);
    8. switch (type) {
    9. case 0:
    10. xx = file_text_read_real(file); file_text_readln(file);
    11. yy = file_text_read_real(file); file_text_readln(file);
    12. obj = instance_create(xx,yy,obj_player);
    13. obj.name = file_text_read_string(file); file_text_readln(file);
    14. obj.hspeed = file_text_read_real(file); file_text_readln(file);
    15. obj.vspeed = file_text_read_real(file); file_text_readln(file);
    16. break;
    17. case 1:
    18. xx = file_text_read_real(file); file_text_readln(file);
    19. yy = file_text_read_real(file); file_text_readln(file);
    20. obj = instance_create(xx,yy,obj_block);
    21. break;
    22. }
    23. }
    24. file_text_close(file);
    Alles anzeigen
    Natürlich nur ein Beispiel. Ich würde übrigens die 39dll dafür benutzen, mit der kann man alles Mögliche binär in eine Datei schreiben. Beim GM kann man nur einzelne Bytes schreiben, also müsste man sich seine eigenen Funktionen haben. So funktionert es natürlich, aber man hat halt ein leichtes Spiel als Skriptkiddie, da man die Dateien ohne Problem in einem Text-Editor öffnen und bearbeiten kann. Aber das ist wohl eher dein kleinstes Problem. Du musst erst mal ein Spiel auf die Beine bringen, dass andere zum Cheaten Motivieren könnte. Erst dann hat Save-Dateien sichern überhaupt einen Sinn.

    Übrigens, Weiße Weihnacht benutzt die 39dll um Level Dateien zu speichern, laden und zum Senden an die Mitspieler (ist ein Multiplayer Spiel). In der .zip ist auch die .gmk. Keine Sorge, du kannst damit machen, was du willst.

    Muss man dann überall "obj_player", "obj_wall" etc. einfügen, damit er das mitkopiert? Außerdem, lädt er dann das Projekt was man erstellt hat oder das Spiel zum ausführen?
  • Ich glaube du verstehst nicht was das script macht es Speichert x,y usw. von dem angegebenen objekt also obj_player in einer Textdatei.
    Danach liest es Die werte aus und setzt die werte des Spielers entsprechent.
    Aber um deine Fragen zu beantworten:
    Muss man dann überall "obj_player", "obj_wall" etc. einfügen, damit er das mitkopiert?
    JA
    Außerdem, lädt er dann das Projekt was man erstellt hat oder das Spiel zum ausführen?
    Er lädt überhaupt kein Projekt sondern werte.
  • Benni1000 schrieb:

    Die werden doch schon im load script weiterverarbeitet..
    Bitte Lies dir mal in der Hilfe gm-d.de/help das Kapitel über gml und dateien durch!
    Dann solltest du nachvollziehen können was das Script macht und wie du es nutzen kannst.

    Uii :D
    Also werden die beim Laden in eine andere Instanz verwandelt? War das gerade im Code schon vorhanden? Welcher Absatz war das denn?
  • Hallo Pancake Games,
    versuche es damit:
    RoomEditor

    Die Autoren stammen (na ja jetzt nicht so) aus fernem Osten.
    Starten, danach am besten die S Taste drücken (original Room wird gespeichert.)
    Das Info habe ich dir (euch) übersetzt, und die wichtigsten Stellen im Code umbenannt.
    Das Room wird in der room.txt Datei gespeichert.(wie auch aus der Datei wieder geladen.)
    Die Datei ist „fest“ als script argument implementiert. Flexible wäre die Datei(en) „editierbar“ zu machen. (Dialogfenster öffnen, -> … als XXX??? Speichern -> laden -> hier Auswahlmöglichkeit.) In dem Beispiel wird sich auch Anfänger (gehe auch von mich selbst aus) leicht finden, deshalb spare ich mir weiteres blablabla.
    Gruß
    Georg
  • -$Marvin$- schrieb:

    @copyboy: was hast du gegen mein code??
    Die execute_file und -_string Funktionen sind bei den meisten fortgeschrittenen GML Benutzern ungern gesehen, weil sie sehr langsam, unsicher und in diesem Fall auch völlig unnötig und übertrieben sind. Allerdings eins muss man dir lassen: Kreativ ist es allemal.
  • Hallo,
    Code vom copyboy integriert mit sich schon (ich werde sagen – sog. wartungs- Aspekte …. der Programmierung) – …. Aber ich bin „zu klein“ um hier darüber zu „blabbern“.
    Dein Code ist mit dem aus meinem Link sehr Ähnlich. (das ist mir vor dem posten auch eingefallen – jedoch: (versuche kurz)
    - Das Beispiel aus meinem Link funzt 1A.
    - Verfügt über den Loader- Script.
    - Und ist für Lernen / Erweitern ein (finde ich) gutes Example.

    (Am Rande – der muss noch auch einen Loader- Script (auf Basis deines Save- Scriptes) schreiben. ….

    Ich wollte nur was Fertiges (& ohne „Lizenz“) hier als Beihilfe bei Room/Level Editor posten.
    Gruß
    Georg