wait or alarm probleme

  • GM 8

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

  • wait or alarm probleme

    Hallo liebe community ;)

    bei der erstellung meines spieles kommen hin und wieder fehler die ich net beheben kann so einfach alleine ^^ und so ein fehler ist nun gekommen.

    unzwar möchte ich wenn mein spieler über ein sprite läuft nennen wir es mal lava das er 10 leben in eine sekunde verliert.
    das mit dem leben und alles ist schon geregelt nur ich weiß einfach nicht wie ich das machen muss das er erstmal 1 leben abgezogen wird und dann eine sekunde gewartet und dann noch einmal leben.

    erst hatte ich mir es so gedacht

    GML-Quellcode

    1. alarm[0] = 30
    2. if alarm[0] = 0
    3. {
    4. global.leben -=10
    5. alarm[0] = 30
    6. }


    doch das tut ürgendwie nicht weil ich es ja im collision event habe und ich müsste es ja im step event haben eigl oder nicht xD? ich bin bissel verwirrt



    ps. room speed is bei 30 wobei 30 dann eine sekunde ist ;)

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

  • 1. musst du wenn du das machst:

    GML-Quellcode

    1. alarm[0]=30

    das event alarm0 nehmen und da deinen code hinein setzen
    2. im step solltest du den code nicht verwenden weil der alarm jedes mal neu zählt wenn du das ausführst
    und daher nicht auf null kommt
    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
  • vielen lieben dank ;)
    doch ich habe nun gemerkt das alarm für die absichten nicht geeignet ist ich will ja nur das er jede sekunde leben verliert solange er darauf steht. mein code sieht nun so aus muss nur nen ersatz für alarm finden ^^

    GML-Quellcode

    1. Information about object: obj_stachel
    2. Sprite: spr_stachel
    3. Solid: false
    4. Visible: true
    5. Depth: 0
    6. Persistent: false
    7. Parent:
    8. Mask:
    9. Create Event:
    10. execute code:
    11. betreten = false
    12. Alarm Event for alarm 0:
    13. execute code:
    14. if alarm[0] = 0 and betreten=true
    15. {
    16. global.leben -=10
    17. alarm[0] = 30
    18. }
    19. Collision Event with object Samuel:
    20. execute code:
    21. betreten = true
    22. alarm[0] = 30
    Alles anzeigen
  • Ne Alternative um es ohne Alarmevents zu machen wäre folgende

    Collisions Event mit Lava

    GML-Quellcode

    1. betreten = true

    Step Event

    GML-Quellcode

    1. if betreten = true
    2. Lavacounter+=1 // zählt jeden Step um 1 hoch
    3. if Lavacounter = 30 // 30 Steps sind 1 Sekunde, abhängig von room_speed
    4. {
    5. global.leben -=10
    6. Lavacounter =0
    7. }
    8. betreten = false // Setzt betreten wieder auf false, damit er nur dann weiterzählt wenn er sich noch in der Lava befindet


    So in etwa sollte es auch gehen und du brauchst dafür keine alarm events....

    Korrigiert mich wenn ich falsch liege ^^

    Grüßle Blayde
  • ja so in etwa war der code richtig musste den nur noch bissel umändern ^^
    is zwar immernoch net die gewünschte wirkung wie ich das haben wollte aber fürs erste reicht es kommt schon nahe dran vielen lieben dank ;)


    GML-Quellcode

    1. Information about object: obj_stachel
    2. Sprite: spr_stachel
    3. Solid: false
    4. Visible: true
    5. Depth: 0
    6. Persistent: false
    7. Parent:
    8. Mask:
    9. Create Event:
    10. execute code:
    11. enter = false
    12. lavacounter = 0
    13. Step Event:
    14. execute code:
    15. if enter=true
    16. lavacounter +=1
    17. if lavacounter = 30
    18. {
    19. global.leben -= 4
    20. lavacounter = 0
    21. enter = false
    22. }
    23. Collision Event with object Samuel:
    24. execute code:
    25. enter = true
    Alles anzeigen
  • husi012 schrieb:

    2. im step solltest du den code nicht verwenden weil der alarm jedes mal neu zählt wenn du das ausführst
    und daher nicht auf null kommt


    Ich fürchte, dass ist nicht ganz korrekt. Man kann nämlich abfragen, ob der Alarm bereits gesetzt ist oder ob er pausiert/gestoppt ist/wurde.
    Ist der Alarm nicht gesetzt, ist er im Zustand -1.

    Sinsokra schrieb:

    ps. room speed is bei 30 wobei 30 dann eine sekunde ist

    Das ist korrekt. Um dein Script aber universeller zu machen, würde ich vorschlagen, room_speed bzw. room_speed*Sekunden zu verwenden. So kannst du den Room-Speed ändern und musst nicht noch alle Scripts anpassen.

    Das könnte im Step-Event dann so aussehen;

    GML-Quellcode

    1. if alarm[0] < 0
    2. {
    3. global.leben -=10
    4. alarm[0] = room_speed
    5. }


    oder aber etwas komplexer;
    Spoiler anzeigen

    :event_create:

    GML-Quellcode

    1. alarm[0] = room_speed;


    :event_timer: 0

    GML-Quellcode

    1. global.leven -= 10
    2. alarm[0] = room_speed



    Es gibt natürlich nichts gegen andere Methoden wie z.B. Blayde's einzuwenden. Was funktioniert das funktioniert und gut ist's.
    :thumbsup: