Das sollte an sich kein Problem sein. Dazu machst du entweder in einem Map-Event oder einem CE folgende Abfrage:
Zur Erläuterung:
Die Variable "Bewegungskontrolle" kontrolliert (wie der Name schon sagt) ob sich der Held bewegt ^^. Dabei addiere ich zur X-Koordinate des Helden die Y-Koordinate (spart Variablen). Danach warte ich 0,1 Sekunde (die Zeit in der sich der Held bewege kann) und subtrahiere wieder beide Koordinaten. Hat der Held sich nicht bewegt waren beide male die Koordinaten gleich, also ist das Ergebnis der Rechnung folglich 0. Hat er sich bewegt hat sich eine der beiden Variablen (X oder Y) entweder um 1 erhöht oder um 1 gesenkt (da man sich nur in jeweils eine Richtung bewegen kann sind nur diese beiden Varianten möglich). Dadurch wird das Ergebnis der Rechnung folglich entweder -1 oder 1 , also nicht 0. Ist dies der Fall weiß ich also das sich der Held bewegt hat und ich verringere die Anzahl der Schritte bis zum Kampf um 1. Erreicht diese Varibale 0 beginnt der Kampf. Nach dem Kampf kann man dann je nach Map diese Variable beliebig einstellen, z.B. auf 20. Ein kleiner Randombetrag kann aber auch nicht schaden (also z.B. 18-24).
Hier nochmal zwei Beispiele zur Abfrage der Bewegung:
Vorher:
X-Position des Helden: 12
Y-Position des Helden: 6
Nachher:(Der Held hat einen Schritt nach rechts gemacht)
X-Position des Helden: 13
Y-Position des Helden: 6
Rechnung:
(12 + 6) - (13 - 6) = 18 - 19 = -1
-1 ist ungleich 0, also hat sich der Held bewegt!
Vorher:
X-Position des Helden: 12
Y-Position des Helden: 6
Nachher:(Der Held bewegt sich nicht)
X-Position des Helden: 12
Y-Position des Helden: 6
Rechnung:
(12 + 6) - (12 - 6) = 18 - 18 = 0
Das Ergebnis ist 0 also hat sich der Held nicht bewegt!