GML: Raumwechsel per Cheat (über Raumnamen)

  • GML: Raumwechsel per Cheat (über Raumnamen)

    Ich arbeite gerade an einem kleinen Spiel, dass eine Vielzahl an Levels haben soll. Damit ich während der Entwicklung jederzeit zwischen den Räumen herumspringen kann, möchte ich nun einen "Cheat" einbinden, über den ich durch das einfache Eingeben des Strings "level" gefolgt von drei Ziffern jeden Raum ansteuern kann.

    Die Räume haben Namen nach dem Schema "level001", "level002", usw.
    Wenn ich nun also "level002" eintippe, möchte ich in den Raum "level002" kommen.

    Jetzt scheitere ich aber an folgendem Part:

    GML-Quellcode

    1. {
    2. room_goto("level"+string_copy(keyboard_string,string_length(keyboard_string)-2,3));
    3. }
    So wird das offensichtlich nicht akzeptiert.
    Ich habe auch schon die Hilfe durchgeblättert in der Hoffnung, dort eine Anweisung zu finden, die diesen String ähnlich wie z.B. "real()" in das richtige Format umwandelt, bin aber nicht fündig geworden.

    Es wäre nett, wenn mir da jemand einen Tipp könnte.

    PS: Es ist mir klar, dass es mit den room-Zahlen leichter als mit den Namen wäre, aber da ich schon einen Raum gelöscht habe und es nicht auszuschließen ist, dass das noch weitere Male geschehen wird(, und die gelöschten Räume ja mitgezählt werden,) oder ich nachträglich die Reihenfolge ändere, würde es dadurch wahrscheinlich noch umständlicher werden.

    Ich verwende übrigens GameMaker 5.0
    GameMaker-Version: 5.0 (die letzte kostenlose ohne Einschränkungen)
    meine Website | mein Diskussionsforum
  • ich bin mir jetzt nicht sicher, ob das in gm5 vorhanden ist, da ich den gm erst kennen gelernt habe, als schon version 6 draußen war, aber du könntest das spiel auch im debug-mode starten, dort unter tools -> execute a piece of code machen und dann einfach reinschreiben:

    GML-Quellcode

    1. room_goto(/*raumname*/)


    bitte berichtigt mich, falls das in gm5 nich geht...
  • hir habe ich ein example gemacht
    ich hoffe das du es so gemeint hast

    erstmal enter drücken und dann raum001,raum002 oder raum003
    Dateien
    • cheat.zip

      (2,84 kB, 136 mal heruntergeladen, zuletzt: )
    Die Schönheit liegt im Auge des Betrachters :D
  • Danke für eure Antworten :)

    @ Windapple: Das funktioniert leider auch nicht :(

    @ - Kev -: Das wäre natürlich auch eine Möglichkeit gewesen... Aber irgendwie habe ich mich darauf fixiert, die Räume unbedingt direkt ansteuern zu wollen. (Wahrscheinlich bin ich zu faul, mich durch die einzelnen Räume zu klicken, bis ich dort bin, wo ich hin will :P )

    @ CAS: Tatsächlich! Ich hatte schon ganz vergessen, dass es diese Funktion gibt. :)
    Damit läuft´s ja dann eingentlich.

    Aber ich bin ein Sturkopf - Irgendwie muss das ja trotzdem funktionieren. Und wenn ich es nur als geheimes Extra im Spiel belasse...

    @ Andyworld: Danke für Deinen Vorschlag. Dieses Script funktioniert ausgezeichnet, nur hatte ich gehofft, dass es auch eine flexiblere Variante gibt. Mein Spiel wird voraussichtlich sehr viele kleine Level haben und da wäre es vielleicht doch etwas ungünstig, wenn man für jedes einzelne Level das Script ergänzen muss...
    Aber funktionieren tut das mal auf alle Fälle :)

    PS:
    Ich habe mich jetzt noch einmal ausführlich damit beschäftigt und habe eine Lösung gefunden, die zwar die room-Zahlen verwendet, aber mit gelöschten und verschobenen Räumen richtig umgeht:

    GML-Quellcode

    1. {
    2. welcheslevel=real(string_copy(keyboard_string,string_length(keyboard_string)-2,3));
    3. if (global.levelnummer<=welcheslevel) levelabstand=welcheslevel-global.levelnummer;
    4. else levelabstand=global.levelnummer-welcheslevel;
    5. neueslevel=room;
    6. if (global.levelnummer<welcheslevel) repeat (levelabstand) neueslevel=room_next(neueslevel);
    7. else repeat (levelabstand) neueslevel=room_previous(neueslevel);
    8. global.levelnummer=welcheslevel;
    9. if room_exists(neueslevel) room_goto(neueslevel);
    10. }
    Alles anzeigen


    Danke für eure Bemühungen!
    GameMaker-Version: 5.0 (die letzte kostenlose ohne Einschränkungen)
    meine Website | mein Diskussionsforum