Ergebnis 1 bis 10 von 10

Thema: [2k3] Zwei übereinanderliegende "Below" Events ergeben ein "Same as Character" Event?

  1. #1

    [2k3] Zwei übereinanderliegende "Below" Events ergeben ein "Same as Character" Event?

    Grüß euch!

    Ich bin gerade auf ein Geschehen gestoßen, welches mich verwirrt zurückgelassen hat.

    Aber mal von Vorne:
    In einem Dungeon gibt es gewisse Geheimwege, die per simplen Below Character Event in die Wandtiles (also die, die per Passability ein Rechteck erhalten) führen. Diese Events haben ein Chipset Tile als Grafik.



    Wenn man auf einem diesen Below Events einem Gegner gegenübertritt, und den Kampf gewinnt, wird der Gegner per Switch auf eine letzte Seite besiegt. Auf dieser letzten Seite ist ein leeres Event (leer im Sinne von Leertile des Chipsets), welches ebenfalls Below Character ist.



    Nun das, das mich verwirrt: Das Tile, auf dem der Gegner besiegt wurde, ist nun nicht mehr begehbar.
    Nach einigen Tests kann ich mit Gewissheit sagen, dass dies nur passiert, wenn der Gegner auf der letzten Eventseite ein leeres Chipsettile als Grafik verwendet, und dabei auf Below Character eingestellt ist.
    Wenn der Gegner nach dem Kampf z. B. ein Above Character Event wird, passiert das nicht. Auch nicht, wenn man das Event per Move Command auf Through stellt.
    Und das passiert auch nicht, wenn ich ein leeres Charset als Below Event anzeigen lasse. Also tatsächlich nur, mit dem Chipset Leertile.

    Woran kann das denn liegen? Was können da für weitere Komplikationen durch diese Eigenheit entstehen?
    Ist jetzt nicht wirklich ein Problem für mich, aber ich wolltes nur mal anmerken, und dabei vielleicht erfahren, was es damit auf sich hat.

    Liebe Grüße,
    Legion

  2. #2
    Ist das leere Tile beim Gegner denn durchlässig? Ich hab mal versucht, deinen Fall zu reproduzieren (es wurde aber kein Kampf gestartet), und bei mir kann ich auf den leeren Gegner laufen.

  3. #3
    Hey Kelven!

    Ja, die Events sind alle Below Character, und somit können sowohl Helden als auch Gegner da unten durchlaufen.
    Aber schonmal ein sehr interessantes Detail, das mit dem Kampf. Das Gegnerevent wird übrigens per "Event Touch" getriggert.

    Hier mal der Code, vom Beginn des Kampfes, zum "Verschwinden" des Gegners per Switch:

    Code:
    @> Battle Processing: Normal, [Kopfloser]
    @> Control Switches: [0600:SOUND ON] = ON
    @> Change MP: [Kjaran], - 999
    @> Show Animation: [Kopfloser], [Kj EH 1], Wait
    @> Control Switches: [0460:Kopfloser tot] = ON
    Danach ist das Event nicht mehr betretbar.

    Edit: Achja, das leere Chipsettile ist das erste Tile des Upper Layers, also ist das automatisch Above Character, und somit natürlich durchlässig. Das Event selbst, welches dieses Tile als Grafik verwendet, ist allerdings eben Below Character.

    Edit 2: Jetzt wo ich so darüber nachdenke, wird das Event mit der Pflanze, welches als Durchgang dient, womöglich durch das leere Gegnerevent überschrieben, und somit kann man nicht mehr unter dem Wandtile durch. Leere Events funktionieren nämlich nicht als Durchgang, da braucht es ein Below Character Upper Tile dafür, deswegen benutze ich auch die Pflanze.
    Allerdings kann man durch dieses leere Event trotzdem hindurch, wenn es Above Character ist, was normalerweise nicht der Fall ist.

    Geändert von Ich bin viele (05.12.2021 um 20:14 Uhr)

  4. #4
    Zitat Zitat
    Jetzt wo ich so darüber nachdenke, wird das Event mit der Pflanze, welches als Durchgang dient, womöglich durch das leere Gegnerevent überschrieben, und somit kann man nicht mehr unter dem Wandtile durch.
    Ob das Event wirklich überschrieben wird, weiß ich nicht, aber es ist auf jeden Fall für das Problem verantwortlich. Du könntest doch stattdessen ein Wandtile nehmen, das über dem Helden ist.

  5. #5
    Ja, den Bug umgehen ist zum Glück kein Problem! Ich werde jetzt speziell darauf achten, dass das nicht mehr passiert. War tatsächlich ein Gamebreaker, da der Held nicht mehr aus einem Geheimgang raus kam ^^'

    Würde mich dennoch interessieren, ob jemand weiß was genau dafür verantwortlich ist.

  6. #6
    Hat der Gegner zufällig die höhere Event-ID? Kann sein, dass er dadurch eine höhere Priorität hat, und das darunterliegende Event nicht mehr berücksichtigt wird.

  7. #7
    Hey G-Bro!

    Ja, die Event ID des Gegners ist höher als die des Durchgangs!
    Was aber irgendwie nicht zusammen passt ist, dass man durch das leere Event mit leerer Grafik gehen kann, wenn es Above Character ist, was normalerweise nicht der Fall ist. Ganz überschrieben wird es also nicht, wie es scheint.
    Noch immer sehr mysteriös...

    Edit: Vielleicht überschreibt es einfach das Event an sich, greift aber trotzdem noch auf die Grafik des Darunterliegenden zu. Oder so.

    Edit 2: Oder es überschreibt das Event nur, wenn es dieselbe Kollision besitzt, daher tritt der Fehler nur bei "Below Character" auf. Was aber auch wenig Sinn ergibt, da es mit leeren Charsets funktioniert, nur nicht mit leeren Tileset-Grafiken.

    Geändert von Ich bin viele (06.12.2021 um 19:25 Uhr)

  8. #8
    Hm, ich wollte jetzt eigentlich nur dieses spezifische Problem erklären. Dann dachte ich, ich erkläre gleich wie das ganze überhaupt abläuft. Und dann hab ich gemerkt, die eigentliche Antwort ist nur ein ganz kleiner Teil davon. Naja, here it goes anyway, könnte ja nützlich sein. Wenn es dich nicht interessiert, fang gleich bei "*: So und jetzt wirds spannend" an zu lesen.

    Wenn ein "Eventoid" (Event, Held oder Vehicle) sich auf ein neues Tile bewegen möchte, werden ein Haufen Bedingungen überprüft. Meistens wird die Überprüfung abgebrochen wenn eine Bedingung ein negatives Ergebnis gebracht hat.

    1) Liegt die neue Position innerhalb der Map? (nein => Abbruch)
    2) Ist das bewegende Eventoid auf "Through"? Wenn ja, wird alles ab jetzt ignoriert und die Bewegung ist erlaubt.
    3) Kann laut Chipseteinstellungen (siehe Liste X unten*) das bewegende Eventoid überhaupt in der gewünschten Richtung das aktuelle Tile verlassen? (nein => Abbruch)
    4) Pro Eventoid welches sich auf dem Zieltile befindet (ein sich bewegendes Eventoid wird immer so gerechnet als hätte es seine Bewegung schon abgeschlossen), aufsteigend nach Event ID (Held hat 10001, Vehicles haben 10002-10004):
    ... 4.1) Zuerst wird das überprüfte Eventoid, wenn es sich auf dem Tile befindet, "angestupst", dabei wird z.B. der nächste Schritt dessen Move Route ausgeführt sofern anwendbar, und es wird auch das Eventskript direkt einmal ausgeführt falls es auf "Parallel Process" eingestellt ist (bis zu einem Yieldpoint, also jeglichem Befehl der auf das nächste Frame warten würde). Befindet sich danach das andere Eventoid nicht mehr "im Weg" (ein sich wegbewegendes Eventoid wird nicht mehr als "im Weg" gezählt), wird das Eventoid übersprungen.
    ... 4.2) Ist entweder das bewegende Eventoid oder das überprüfte Eventoid erased? Wenn ja, überspringen.
    ... 4.3) Fliegt entweder das bewegende Eventoid oder das überprüfte Eventoid? (Fliegen trifft nur auf das Airship zu.) Wenn ja, überspringen
    ... 4.4) Ist das überprüfte Eventoid auf "Through"? Wenn ja, überspringen
    ... 4.5) Hat eins der beiden Eventoids "Forbid Event Overlap" gesetzt? Wenn ja, dann Abbruch - Bewegung nicht möglich!
    ... 4.6) Haben die beiden Eventoids denselben Layer eingestellt? (Held hat "Same Level as Hero", natürlich.) Wenn ja, dann Abbruch - Bewegung nicht möglich!
    ... 4.7) Ist das bewegende Eventoid zwar "Below Hero" aber dadurch, dass es ein bestimmtes Tile als Grafik eingestellt hat, selber nicht begehbar, und ist das überprüfte Eventoid "Same Level as Hero"? Wenn ja, dann Abbruch - Bewegung nicht möglich! (Was nämlich sonst unlogisch wäre, weil sich dann z.B. ein Stein "unter" einen NPC bewegen könnte.)
    5) Kann laut Chipseteinstellungen (siehe Liste X unten*) das bewegende Eventoid sich auf das neue Tile draufbewegen? (nein => Abbruch)
    (Hm ja, ich hätte mir alles bis jetzt sparen können, weil in diesem Fall ist das Problem in Schritt 5, und diesen Schritt hätte man ja eh erwarten können.)

    *: So und jetzt wirds spannend. Was heißt "laut Chipseteinstellungen"? Das bezieht nämlich Events mit ein! Und zwar auf folgende Weise: Das Upper-Layer-Tile wird in der Berechnung ersetzt durch das als Eventgrafik gesetzt Tile wenn das relevante Event ein Chipsettile als Grafik hat und jenes nicht auf Stern gesetzt ist. Aber, und jetzt kommts, es wird zuerst entschieden welches Event das "relevante Event ist" (genau eines), und dann wird erst auf Stern überprüft. Die Art und Weise, wie entschieden wird, welches Event das relevante Event ist, ist indem ein Event gesucht wird, welches nicht auf "Through" ist, auf "Below Hero" eingestellt ist, ein Chipsettile als Grafik hat und nicht das bewegende Event selber ist. Dabei wird aber die Suche nicht abgebrochen wenn ein Event gefunden wurde, sodass letztenendes das Event mit der höchsten ID, welches zutrifft, als "relevantes Event" verwendet wird für die Überprüfung.

    Zum Nachvollziehen:
    X1) Lower und Upper Layer Tiles werden geladen, laut Map.
    X2) Es wird ein "relevantes Event" gesucht (genau eines, höchste ID gewinnt) - nicht auf "Through", "Below Hero", hat Chipsettile als Grafik, nicht das bewegende Event selber.
    X3) Wenn ein "relevantes Event" gefunden wurde, und dieses Event nicht ein Stern-Tile als Grafik hat, wird das geladene Upper Layer Tile mit dem Tile des Events ersetzt.
    X4) Es werden die geladenen Lower und Upper Layer Tiles verwendet um zu errechnen, ob das Tile als Ganzes begehbar ist. (Die Regeln dafür brauch ich wohl nicht erklären.)

    Das ganz am Schluss ist das relevante Puzzleteil - das Problem ist dass Schritte X2 und X3 getrennt nacheinander erfolgen - es würde klappen wenn auch das mit dem Stern innerhalb von X2 überprüft würde. Ohne Gegnerevent zählt das Tile als "hat im Upper Layer ein begehbares Tile" weil die Blumen dafür sorgen (X2 liefert die Blumen, X3 ersetzt das Upper Layer Tile durch die Blumen). Allerdings mit Gegnerevent (dessen ID höher ist), zählt das leere Gegnerevent als "relevantes Event" in Schritt X2. Und dadurch, dass es aber einen Stern im Chipset hat, wird es im Schritt X3 ignoriert und ersetzt nicht das originale (leere) Tile im Upper Layer, sodass dadurch in Schritt X4 das Tile als ganzes unbegehbar wird, weil der Lower Layer dafür sorgt!

    Geändert von Cherry (06.12.2021 um 22:21 Uhr)

  9. #9
    Zwei Lösungsvorschläge:

    1) Das Event löschen nachdem es besiegt wurde.
    2) Falls das nicht hilft und trotzdem priorisiert behandelt wird, stattdessen auf eine andere Stelle in der Map teleportierne zb. (0,0) und dort deaktivieren, wo es nicht im Weg stehen kann.

  10. #10
    @Cherry, vielen lieben Dank dir! Sehr, sehr interessant und aufschlussreich, zudem leicht verständlich erklärt, genau was ich gesucht hab! Damit wäre meine Neugierde befriedigt
    Auf deine Einsicht kann man sich eben immer verlassen

    @TrunX
    Danke dir für die Lösungsvorschläge! Glücklicherweise lässt sich das auch ganz einfach anderweitig fixen, indem ich die letzte Gegnerseite einfach auf "Above Characters" setze, oder ein Charset als Grafik nehme! Auch das Event einfach nach Beendigung auf "Through" stellen klappt wunderbar!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •