Spiel besser pausieren (empfohlen)

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

    • Spiel besser pausieren (empfohlen)

      So, mein erstes Tut.
      Ich habe ihr eine gute Lösung zum Spiel pausieren. Inkl. Zoomeffekt.:
      - Spiel pausieren ...
      - Zoom-Effekt
      - Speicher wird nicht überlastet.

      Es ist echt einfach! Und so funktionierts:
      Eigentlich werden nur alle Instancen deaktiviert. Das ist eine Funktion die es zumindest ab V6.1 gibt.
      Der Befehl lautet "instance_deactivate_all(1)". Die "1" in der Klammer bedeutet das alle Instancen deaktiviert werden sollen, außer die, die den Befehl ausführt. In der Hilfedatei kann man das nachlesen. Merken: 1=true; 0=false.
      - Wenn die P-Taste gedrückt wird, werden alle außer die, die es ausführt, deaktiviert. Denn wenn diese auch noch deaktiviert wird, könnte man die Pause nicht mehr unterbrechen.
      - Da alle deakt. Instancen auch nicht mehr gezeichnet werden, müssen wir vorher ein Screenshot machen.
      - Die Zoomfuntion ist einfach nur zum verschönern da. Falls das unerwüscht ist, kann man diese löschen. Indem man die Zeilen wo ZOOM steh löscht. Einfach mal mit dem Code "spielen". Nur so versteht man alles.
      Eins darf man nicht vergessen:
      - Die Pausefunktion stoppt nicht nur alle Instancen, sondern werden deaktiviert. Zur Pausefunktion würde nur die "instance_deactivate_all(1)" reichen. Da es ein bisschen "blöd" aussieht ;), wenn alle plötzlich weg sind, machen wir einfach ein Screenshot. Das wir nacher zeichnen.
      - Es gibt auch Spiele die bei der Pause nicht immer alle Instancen anzeigen. Sonst könnte man ja schummeln.
      Das kann man erreichen, wenn man die Reihenfolge von "instance_deactivate_all(1)" und "sprite_create_from_screen" geschickt ändert.
      Denn wisse: Die Codes die geschrieben werden, in einem Script, werden nicht auf einmal ausgeführt. Sondern von oben nach unten. Nur geht das so schnell (standard 1sek/30), dass man das evtl. denken kann.
      Das ist wichtig für alle künftige Programmierungen. Man muss überlegen welche Zeile oder Code jetzt zuerst ausgeführt werden soll.
      Deshalb habe ich hier in diesem Tut auch die Befehle "exit" eingefügt.
      Da sieht ganz gut dass der Code wie eine Liste abgerufen wird.
      Wenn ich folgedes schreibe:
      if pause=0 {pause=1};
      if pause=1 {pause=0};
      ist das ja für den Ar.... ;). Sorry für das gute deutsch.
      Denn erst wird die Variable "Pause" in 1 geändert. Und dann wieder in 0.
      Also schreiben wir:
      if pause=0 {pause=1; exit};
      if pause=1 {pause=0; exit};
      So wird, falls Pause=1 ist, Pause in 0 umgewandelt und das weitere verarbeiten des Scriptes beendet (abb.).
      Und bei Pause=1 in 0 und wieder abgebrochen. Wobei hier jetzt das untere Exit überflüssig ist.

      PS: Ich hatte mal ein noch viel besseres Pause-File. Wegen extremen Datenverlust nicht mehr vorhanden :(.
      Falls noch Fragen auftauchen, bin ich für euch da.

      Viel Spass

      Pause.zip wurde 8 mal heruntergeladen. Und Pause2.zip siehe unten.
      Dateien
      • Pausee2.zip

        (418,89 kB, 519 mal heruntergeladen, zuletzt: )
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DanielGM61 ()

    • Naja, das Beispiel sieht gut aus, aber ich hab 3 kleine Dinge zu sagen:
      1) Im Post steht nur wenig Information - das ist ein Tutorial, sag was du benutzt, zeig ein paar Screenshots (in dem Fall reichen ja 2), und schon sieht es sehr viel besser aus =)
      2) Die Codes sind zum Teil etwas unübersichtlich und (meiner meinung nach) zu wenig kommentiert (Was wird gemacht aber nicht WIE wirds gemacht).
      3) Angenommen... jemand möchte den Zoom Effekt nicht?

      Sonst alles gut ^^ :thumbup:
      Gruß, dein kopierjunge
    • Ich mag freundliche Kritik, daher ' werde / oder habe ich ' das ein wenig verbessert.
      Ich habe das alles in 5-10 Min. programmiert. Ich wollte ursprünglich mein anderes Pause Tut hier reinstellen. Aber das habe ich leider gelöscht.
      Hier im Forum gibt es ja auch ein ähnliches Tut von "Gamer". - Ich habe es nur verbessert. Gamer vergas den Speicher immer wieder zu löschen. So würde der Ram nach ein paarmal pausieren überlasten.
      Und ich dachte ich baue eine nette Zoomfunkion ein. Wobei ich sagen muss, dass die ZF im gelöschten Tut viel besser war. Schade, schade.

      Ich hatte auch mal ein Example das Bin-Codes in Hex-Codes und umgekehrt umwandeln kann. Das brauchte ich für ein Designerprogramm. Ich hoffe ich finde das wieder (Hoffentlich nicht gelöscht). Dann kann ich es auch hier reinstellen.

      PS: Mein "Problem" ist, dass ich wild durcheinander Programmiere. So kann der Code schnell unübersichtlich werden.
      57 6F 77 2C 20 64 61 73 20 68 61 73 74 20 64 75 20 67 61 6E 7A 20 61 6C 6C 65 69 6E 20 67 65 73 63 68 61 66 66 74 2E 20
    • Jetzt muss ich auch mal etwas posten

      Man kann doch statt

      GML-Quellcode

      1. if pause=0 {pause=1; exit};
      2. if pause=1 {pause=0; exit};


      das hier schreiben

      GML-Quellcode

      1. pause = !pause;


      Man muss bei der initialisierung bloß pause=false oder pause=true nehmen
    • Benutzer online 1

      1 Besucher