[GELÖST] Leben des Spielers verändern sich nicht.

  • GM 8

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

  • [GELÖST] Leben des Spielers verändern sich nicht.

    Hallo liebe Leute,

    Ich möchte vor meiner Frage kurz anmerken, dass ich schon viele Threads durchsucht habe, ich jedoch nicht zu einer richtigen Lösung gekommen bin.
    Es geht darum, dass ich die Leben im Create-Event meines Spielers als global.leben und die "Health" als global.hp definiert habe.

    GML-Quellcode

    1. global.leben = 3
    2. global.hp = 100


    Nun habe ich eingestellt, dass dem Spieler bei Berührung eines Gegners 5 HP abgezogen werden und wenn die HP auf 0 sind, soll dein Leben abgezogen werden und wenn diese ebenfalls auf 0 gesunken sind, dass man zum Game-Over-Screen weitergeleitet werden soll.

    GML-Quellcode

    1. if global.leben < 1
    2. {
    3. instance_destroy()
    4. room_goto(GAME_OVER)
    5. audio_stop_music()
    6. }
    7. if global.hp <= 0
    8. {
    9. instance_destroy();
    10. audio_stop_music()
    11. global.leben -= 1
    12. room_restart()
    13. }
    Alles anzeigen


    Nun habe ich allerdings das Problem, das sich die Anzahl der Leben nicht verringert. Das heisst das der Spieler so oft "sterben" kann wie er will und niemals zum Game-Over-Screen kommt.
    Gibt es vielleicht Fehler in meinem Code? Auf Antworten würde ich mich freuen.

    P.S.: Obwohl im Präfix "GM8" steht, arbeite ich mit dem Game Maker Studio. Ich hoffe, dass dies keine all zu große Rolle spielt.

    Viele Grüße,
    Max/ChinoDX

    ROBOT REVOLUTION - Jetzt in Entwicklung!

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

  • Simpel :
    Dein Code fragt, ob global.hp <= 0 ist, wenn dies der fall ist :
    1) du rufst instance_destroy() auf, dies kannst du weglassen
    2) du rufst room_restart() auf

    Dein Code setzt zwar richtig die leben -= 1, allerdings ist dies ohne Bedeutung, da durch room_restart() der Raum auf seine Anfangswerte resettet wird, also wird auch dein Spieler neu erstellt und dessen Create event ausgeführt, welches global.leben wieder auf 3 setzt (!), hier liegt der Fehler.

    Damit du trozdem beim Tot den Raum neustarten kannst, solltest du global.leben im Raum vor deinem aktuellen SpieleRaum deklarieren anstatt im create event des Spielers.
    Ausserdem kannst du wiegesagt instance_destroy(); weglassen.

    Mfg, Rhazul.
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • falls du nicht Studio hast, kannst du auch

    GML-Quellcode

    1. variable_global_exists

    benutzen. und wenn dann solltest du instance_destroy() immer ganz zuletzt benutzen, sonst wird der Code dahinter nicht mehr ausgeführt, weil es die instance nicht mehr gibt.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Deklarieren ist englisch und heißt Festlegen also im Raum davor einfach

    GML-Quellcode

    1. global.leben = 3

    schreiben und nicht im Raum wo du drinne bist.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ich muss mich glaube ich erstmal kurz entschuldigen, dass ich mich so dumm anstelle. :headtouch:
    Ich habe jetzt in den Creation Code von dem Raum davor

    GML-Quellcode

    1. global.leben = 3
    geschrieben, aber es funktioniert irgendwie immer noch nicht so richtig.

    Liebe Grüße,
    Max/ChinoDX

    ROBOT REVOLUTION - Jetzt in Entwicklung!
  • ich weis nicht ob das im Creation Code vom Raum geht (habs noch nie gemacht),
    auf jedenfall müsstest du den aus dem anderen Raum natürlich raus nehmen
    und global.hp musst du auch noch dort Festlegen
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Also hier mal kurz die Codes und wo sie verwendet werden:

    Im (End) Step-Event des Spielers:

    GML-Quellcode

    1. if global.leben = 0
    2. {
    3. room_goto(GAME_OVER)
    4. audio_stop_music()
    5. }
    6. if global.hp <= 0
    7. {
    8. audio_stop_music()
    9. global.leben -= 1
    10. room_restart()
    11. }
    Alles anzeigen



    Der Creation-Code des Raumes vor dem eigentlichen Raum:

    GML-Quellcode

    1. global.leben = 3



    Und noch die Codes aus dem Step -und dem Draw-Event, eines Objektes, welches zeigen soll wie viele Leben der Spieler noch hat:

    Step:

    GML-Quellcode

    1. if (global.hp <= 0)
    2. {
    3. global.leben -= 1
    4. }


    Draw:

    GML-Quellcode

    1. draw_text_color(view_xview[view_current],view_yview[view_current]+25,"Lives: "+string(global.leben), c_white, c_white, c_white, c_white, 1);


    Damit ihr euch mal einen Überblick verschaffen könnt, wo die Variable überall verwendet wird.

    ROBOT REVOLUTION - Jetzt in Entwicklung!
  • du solltest wenn du die leben minus 1 machst hp wieder auf 100 setzten, ansonsten kommt ein Error?
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • husi012 schrieb:


    du solltest wenn du die leben minus 1 machst hp wieder auf 100 setzten, ansonsten kommt ein Error?


    Nein, einen Error bekomme ich nicht. :thumbsup:
    Leider funkt die Sache mit den Leben immer noch nicht.

    EDIT:
    Danke Leute, es hat jetzt endlich funktioniert! Ich habe nämlich noch einen Raum erstellt, nach dem eigentlichen Raum vor dem Stage und direkt vor dem Raum, wo das Level beginnt (Ich weiß, superErklärung :D ) und dort die Leben deklariert und einfach noch die Funktion "room_goto_next" eingefügt und schon hat es geklappt. Also danke Rhazul und Husi! :thumbsup:

    ROBOT REVOLUTION - Jetzt in Entwicklung!

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