Der Terrain-Heldenbewegungscode, ist exakt der gleiche wie von dir angegeben:
Edit: Von dem 2. Event, gibt es pro Terrain eines (mit 2 Seiten). Vllt ist da ja der Wurm vergraben. Aber wenn diese Events als Hero-Touch gelegt werden, funktionieren sie einwandfrei oO =verwirrt.
EDIT2: den 2. Code nochmal neu in den Spoiler reinkopiert, mit Erklärung versehen
--
"Gib einem Mann Feuer, und er hat es einen Tag lang warm. Steck ihn in Brand, und er hat es warm für den Rest seines Lebens"
Uff... auf Anhieb find' ich da nichts, allerdings hab ich auch keine Ahnung, was da was bewirkt bzw. bewirken soll.
Und die Variable mit der Terrain-ID ändert sich tatsächlich nicht, sprich, wenn du im Testgame in dieses Switch/Variablen-Menü gehst, ist die unverändert, auch wenn du auf nem neuen Terrain bist?
Ansonsten würde ich raten, dass dein zweites Event da irgendwas extrem verzögert. Ist etwas schwierig da jetzt bei dir durchzublicken, zumal die Formatierung kaputt ist. Wähl beim EventExporter mal dden Style für vBulletin mit hellem Hintergrund aus, dann wird's hier richtig angezeigt.
Aber wenn man die auf Touch stellt funktionieren sie doch prima!?
Es liegt also an der Verbindung mit dem PP-Terrain-ID-Event. Irgendwie wird die Terrain-ID erst nach mehreren Schritten ausgelöst, aber das ergibt bei diesem Aufbau doch eigentlich gar keinen Sinn...
Zudem ist mir aufgefallen, dass wenn man ohne zu stoppen von der Ebene durch ein Waldstück/Gebirge "durchrennt" die ID-überhaupt gar nicht erst verändert wird. Sehr merkwürdig.
--
"Gib einem Mann Feuer, und er hat es einen Tag lang warm. Steck ihn in Brand, und er hat es warm für den Rest seines Lebens"
Okay, 1. Sache die ich gefunden habe:
Du prüfst die falschen Koordinaten. Die Terrain-ID wird aus den 2. X- und Y-Koordinaten bezogen, da die ja aktueller sind. Aber das hilft gerade trotzdem nicht, stelle ich fest. xD
Edit: Ich könnte dich erwürgen... xD
Du hast nen Fehler beim einbauen meines Codes gemacht. So, wie du es gescriptet hast, wird der y-Unterschied niemals abgefragt werden. Du hast das nicht verschachtelt, sondern einfach untereinander gebaut. Bewegt der Held sich nun bei dir nach oben oder unten, wird immer noch zuerst die X-Koordinate verglichen - die ist aber identisch, und bei dir springt der Maker nun wieder zum Anfang.
Ne, ich hab's mal eben getestet. Die Terrain-ID gilt für alle Elemente vom Autotile. Sonst würde es auch wenig sinnvoll sein, dem überhaupt eine ID zuzuweisen.
Irgendwie bin ich beim Script skeptisch. Du fragst die Heldenposition ab und nach einem Wait 0,0 nochmal. Eigentlich müsstest du die Heldenposition aber nur nach jeder Bewegung abfragen. Vielleicht wäre es so besser:
Pseudo-Code:
Problematisch könnte nur sein, dass die Tastenabfrage vor der Bewegung stattfindet und man deswegen ein Wait bräuchte, das an die Bewegungsgeschwindigkeit angepasst ist.
@Kelven: Also für meine Zwecke funktioniert es zumindest Bestens, es ist ja eigentlich auch eher ein Weltkarten-Reiseskript, um verschiedenste Events zu aktivieren, das Terrain abzufragen und anzufragen, ob der Held sich gerade gerührt hat oder nicht.
Ich Danke Euch allen für Eure Antworten, Ihr habt mir alle seeeehr viel Arbeit erspart :]
--
"Gib einem Mann Feuer, und er hat es einen Tag lang warm. Steck ihn in Brand, und er hat es warm für den Rest seines Lebens"
@Kelven:
Worauf du mit dem Autotile hinauswillst, ist mir noch nicht ganz klar...
Aber mit der Abfrage, das stimmt schon, 100% vertraue ich dem 0,0-Wait auch nicht. Aber solange der Held nicht so schnell ist, dass er kürzer als 0,0 braucht um von Feld zu Feld zu kommen, dürfte da eigtl. nichts passieren. Einzig bei der Performance bin ich skeptisch, andererseits dürfte es relativ egal sein, ob man ne Taste abfragt oder Koordinaten vergleicht. Weswegen ich das mit der Tastenabfrage ungerne mache, ist, dass man das Script bei Sequenzen oder allgemein Bewegungen, die per Move Event getätigt werden, dann vergessen kann.
Danke für den Tipp aber mit der Abfrage, das ist echt einfacher. ^^
@BDraw
Mit der Tastenabfrage müsste die Performance besser sein (falls es mit der überhaupt Probleme gibt), weil der Prozess ja immer auf die Tastenabfrage wartet und wenn der Spieler gerade nichts drückt, passiert auch nichts. Nur bei gedrückter Taste könnte es problematisch werden, vermutlich bräuchte man noch ein Wait hinter der Abfrage. Ich weiß aber auch gar nicht, ob eine gedrückte Taste überhaupt Key Input Processing mehrmals auslöst.
Edit:
Nur so aus wissenschaftlicher Neugier hab ich überlegt, ob man die Methode noch vereinfachen könnte. Ich hab das nicht ausgetestet, aber müsste es so nicht auch gehen? Falls ich nicht missverstanden habe was die alte Methode machen soll. Man würde dann sogar eine Variable sparen. Allerdings müsste man die Variable für das alte Terrain wohl vorher initialisieren.
Prinzipiell würde das auf jeden Fall funktionieren, allerdings ging es bei dem Skript ja gerade darum (oder unter anderem), dass sich die Heldengeschwindigkeit je nach Terrain verändert. Lässt man diesen Punkt aber außer acht, ist es eine gute,schlankere Version des Codes!
--
"Gib einem Mann Feuer, und er hat es einen Tag lang warm. Steck ihn in Brand, und er hat es warm für den Rest seines Lebens"