Bewegungsroute abbrechen

  • Hi!


    Ich habe folgendes Szenario: Eine bewegbare Plattform welche 21Felder weit fährt und zurück kommen soll.


    Problem A: 5 Felder außerhalt des Bildschirms hört der Maker auf etwas zu machen.

    Problem B: Der Spieler soll nicht die ganze Zeit auf die Plattform warten bis sie wieder da ist.


    Aus diesem Grund habe ich das ganze in zwei Events gesplittet.


    Event 1 Seite 1:

    Die Plattform fährt 21 Felder nach vorn, wartet 60 Frames und schaltet auf Seite 2 um.


    Event 1 Seite 2:

    Damit fährt die Plattform zurück. Beides funktioniert auch so.


    Event 2:

    Das Event überprüft über die Region ID, ob der Spieler am Rande der Schlucht steht. Wenn ja wird die Distanz berechnet und sollte diese größer als 10 sein, wird die Plattform deaktiviert und zurück an die Klippe zum Spieler geholt. Funktioniert ebenfalls.


    Nun zu meinem Problem:


    Irgendwie merkt sich der Maker an welcher Stelle die Bewegungsroute des ersten Events aufgehört hat und macht nach dem festlegen des Ereignisstandorts genau da weiter. Bedeutet die Plattform fährt dann nicht mehr 21 sondern zum Beispiel nur noch 9 Felder und schaltet danach um in die Rückfahrt.


    Kann man dies irgendwie verhinern? Gibt es da eine Möglichkeit die Bewegungsroute abzubrechen?


    Idee die ich noch hätte wäre nach jedem Schritt nach vorn abzufragen, ob die Plattform eine bestimmte Position erreicht hat. Wenn ja Rückfahrt, andernfalls wieder ein Schritt nach vorn um dann abermals abzufragen. Würde rein Eventtechnisch funktionieren, durch die Abfrage würde die Plattform aber ziemlich rucken. :/

  • Ist das denn normal, dass der Maker Events bzw. deren Bewegungen außerhalb des Bildschirms nicht mehr ausführt oder Folge eine Scripts? Das war ja früher nicht so.


    Ich würde es so machen wie du am Ende sagst. Weißt du, woher das Ruckeln kommt? Auf den alten Makern reicht es, dass ein Wait nach der Bewegung die richtige Länge hat, dann bewegen sich die Events flüssig.

  • Ist das denn normal, dass der Maker Events bzw. deren Bewegungen außerhalb des Bildschirms nicht mehr ausführt oder Folge eine Scripts? Das war ja früher nicht so.

    Leider ja, bis ca. 5 Felder außerhalb des Bildschirms. Das hat mir schon in anderen Projekten Kopfschmerzen gemacht.


    Ich würde es so machen wie du am Ende sagst. Weißt du, woher das Ruckeln kommt? Auf den alten Makern reicht es, dass ein Wait nach der Bewegung die richtige Länge hat, dann bewegen sich die Events flüssig.

    Leider nein. :/

  • Ich meine mich dunkel erinnern zu können, dass dies (wahrscheinlich zur Verbesserung der Performance) ab dem Ace in die Maker-Reihe Einzug erhielt.

    Im nicht mehr existenten deutschen Ace-Forum gab es auch einen kleinen Code, welcher diese Funktion unterband - aber ebenfalls meine ich mich nur dunkel zu erinnern.


    Vllt mag ja jemand diesbezüglich etwas programmieren, was dieses Verhalten unterbindet - insofern es nicht gewünscht ist.

  • Ich hab es nicht ausprobiert, aber in Scriptbefehlen gibt es:

    Code
    1. character.processRouteEnd();

    Also dann wahrscheinlich für Dein Event:

    Code
    1. $gameMap.event(x).processRouteEnd();

    Vielleicht hilft das ja.

  • Danke, funktioniert aber für Events leider nicht. ^^

    Natürlich funktioniert das für Events. Die Funktion processRouteEnd ist im Objekt Game_Character definiert und alle Events erben von diesem Objekt. Und genau dieser Scriptcall ist im Grunde das was du brauchst. Wenn du ihn im Event selbst platzieren willst, dann ist der richtige Scriptcall $gameMap.event(this._eventId).processRouteEnd()

  • Kannst du nicht die Bewegungsroute nicht im Event selbst festlegen sondern per Event Befehl, davor setzt du nen Label. Und am Schluss machst du ne if Bedingungen. Wenn die Platform versetzt wird sollte nen Schalter oder ähnliches aktiviert werden und ist er aktiv soll die if Bedingung das Event wieder zum label springen lassen und so von vorn starten anstatt mittendrin

    Wenn du mich unterstützen willst, kaufe mir gern einen

    kofi2.png