Wait (attack speed)

  • GM 8

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

  • Wait (attack speed)

    Hallo!

    Ich weiss, es gibt schon unzählige Wait-Fragen. Ich habe es mit Alarmen versucht, aber wie sollte man das bei einer Angriffsgeschwindigkeit benutzen können?
    Wenn ich das so lasse (ohne Wait Funktion bzw ohne Alarm Funktion) dann zieht es dem anderen so lange Lebenspunkte ab bis es tot ist - aber auf einmal!

    Quellcode

    1. //Collision Event
    2. do
    3. {
    4. other.lp_q_he -= a_q_me;
    5. }
    6. until (other.lp_q_he <= 0)
    7. }


    Ist also falsch.

    Zum Verständnis; der Spieler wählt fortlaufend einen von vier verschiedenen Einheiten die erstellt werden und von der Burg links nach rechts laufen und auf dem Weg die Gegner angreift. Momentan probiere ich gerade an nur einer Einheit.

    Wenn ich aber schreibe:

    Quellcode

    1. //Collision Event
    2. if (alarm[2]=0)
    3. {
    4. do
    5. {
    6. other.lp_q_he -= a_q_me;
    7. alarm[2] = room_speed*2;
    8. }
    9. until (other.lp_q_he <= 0)
    10. }
    Alles anzeigen


    Gehts auch nicht!

    'Do Until' weil Objekt1 stets (und ohne Spielereinfluss) nach rechts läuft, dann bei der Kollision mit Objekt 2 das von rechts nach links geht bleibt es stehen (sieht man im Code nicht, habe D&D benutzt) und greift an (auch hier ohne Spielereinfluss) und NACH dem Code wieder die D&D Funktion dass das Objekt nach rechts weitergeht (wenn es gewonnen hat) sonst wird es (durch 'Step'-Überprüfung mit HP-Variable) zerstört und das Objekt 2 geht nach links.

    Der Code funktioniert so nicht. Hat jemand eine Idee wie man so etwas lösen könnte? Eine einfache Wait Funktion wäre hier doch angebrachter... oder nicht?

    Vielen Dank
  • Das wird also das Problem sein.
    Also ein Event mit Alarm 2 machen wo ich den Script wieder ausführen lasse und dann den Alarm wieder auf 2 Sekunden stellen?

    EDIT: Dann muss ich das mit der Kollision aber im Script lösen, da dies auch ein Event ist, oder?
  • Dann muss ich das mit der Kollision aber im Script lösen, da dies auch ein Event ist, oder?
    ICh habe im INternet ein bisschen gesucht aber bin incht gross draus Schlau geworden, wie Checkt man eine Kollision mit einem bestimmten Objekt? Jedes Objekt agiert anders als ein anderes auf das eine.
    bzw gibts da nur diese 'Collision_....' Funktionen?
  • Du kannst das mit dem Alarm auch anders lösen, indem du den Code dort lässt und es über eine andere Variable machst.

    Du schreibst im :event_create: Create - Event sowas in der Art:

    GML-Quellcode

    1. wait = 0;


    Und im :event_step: Step - Event sowas:

    GML-Quellcode

    1. If (wait != 0) {
    2. wat -= 1;
    3. }


    Nun hast ersetzt du alarm[2] durch wait und alles müsste funktionieren
  • Ja, das funktioniert prima!

    Naja nicht ganz, bzw er bleibt noch nicht stehen, aber er kann zumindest nicht mehrmals innerhalb der 2 Sekunden angreifen, und das ist schon das Wichtigste.
    Das mit dem Anhalten werde ich wohl auch über Scripts erledigen, damit da nicht viel Gebastel ist. Aber das ist ja eine andere Sache und kann auch so gelöst werden.

    Danke!