Ich will das was Dhan gesagt hat nochmal weiter ausführen, da du ja auch um ein Beispiel gebeten hast. Ich hab das gerade im Maker nachgebaut und es funktioniert auch so recht gut. Dabei würde ich dir auch empfehlen die Reaktionszeit weit unter einer Sekunde anzusetzen. Das ist wirklich schon extreeem langsam
Also, nun zum Code.
Du brauchst folgende Variablen:
Außerdem brauchst du zwei Events (zumindest bei meiner Version ):
Das erste ist ein Parallel-Process Event welches die Angriffskontrolle des Gegners übernimmt. Das zweite ist der Gegner selbst welcher nur die Angriffsfläche für den Helden darstellt.
Fangen wir mal mit dem PP für den Gegner an:
Sooo, was genau macht dieses Event nun?
Am Anfang werden erst einmal die Koordinaten von Held und Gegner eingelesen.
Für den nächsten Schritt muss man sich ins Gedächtnis rufen was wir eigentlich machen wollen:
Wir wollen erreichen, dass der Gegner, wenn er den Helden vor sich hat, eine spezielle Zeit wartet und dann zuschlägt. Doch wie ermitteln wir ob der Held vor dem Gegner steht? Wir betrachten einfach nicht mehr das Feld auf dem der Gegner steht, sondern nehmen das Feld vor ihm. Dazu dient die folgende Abfrage. Sie kontrolliert in welche Richtung der Gegner schaut und passt dann seine Koordinatenvariablen so an, dass sie nicht mehr den Gegner, sondern das Feld vor ihm wiedergeben. Wenn man ein bisschen drüber nachdenkt dürfte das schnell klar werden .
Der Rest ist dann ein Kinderspiel:
Gleichen sich die Koordinaten des Feldes vor dem Gegner und die des Helden steht der Held logischerweise auf dem Feld vor dem Gegner. Damit können wir also die Zählervariable um 1 erhöhen und nach einer kurzen Pause von einer sechzigstel Sekunde kontrollieren ob bereits lange genug gewartet wurde. Wenn nicht springe ich per Lable wieder zum Anfang des Events, sodass erneut die Koordinaten überprüft werden und in dem Fall das der Held immer noch da ist wo er vorher auch war die Zählervariable wieder erhöht wird.
Sollte nun lange genug gewartet worden sein attackiert der Gegner den Helden. Hier passiert dies mit einer einfachen Battle Animation. Danach noch schnell die Helden HP um den Wert "Gegner Schaden" verringern und fertig. Da nun die vorher aufgebaute Lable-Schleife verlassen wird setzte ich den Zähler wieder auf 0 und das Event wird erneut durchlaufen, nur mit genulltem Zähler, also muss der Gegner wieder seine Zeit lang warten.
Damit ist dieses Event fertig. Nun kommen wir zum Gegnerevent, welches auch nicht wirklich schwieriger ist:
Erstmal ist es wichtig das du nicht die normale "Step Towards Hero" Einstellung unter dem "Movement Type" wählst, sondern selbst eine Route festlegst. Tust du dies nicht gibt es Probleme mit der Face Richtung, da dann der Gegner den Helden nie anguckt sondern dauernd hoch und runter läuft. Verwendest du diese Route schaut der Gegner nach jeder Bewegung in Richtung des Helden und bleibt auch stehen, sobald er diesen erreicht hat. Nachteil ist allerdings, dass er keine randomierten Bewegungen macht, wenn er nicht mehr weiterlaufen kann, weshalb ein Hindernis schnell zu seinem Verhängnis werden kann. Eine einfache andere Lösung ist mir leider nicht eingefallen...
Aber weiter im Code:
Dieses Event soll nichts anderes machen als sich selbst töten, sobald der Held an es ran tritt und Enter drückt. Gleich zu beginn wird die Zeitzähler Variable des Gegners auf 0 gesetzt, da du ja wolltest, das der Gegner neu mit zählen anfangen muss, sobald der Held ihn angreift. Danach kommt sofort die Battle Animation und das Verringern der HP um den Wert "Held Schaden".
Sollten die HP des Gegners auf 0 oder darunter gesunken sein soll er einen Sterbesound spielen, seine Transparenz erhöhen (langsam verschwinden) und sich selbst rot "färben". Nach einer Sekunde vernichtet sich das Event selbst und wird erst wieder auftauchen sobald man die Map verlässt und erneut betritt. (Clear Timer ist leider eine falsche Übersetzung und bedeutet so viel wie "Lösche das Event".)
Damit ist dein Mini-AKS auch schon fertig
Ich hoffe ich konnte dir helfen
mfg
Phönix Tear
P.S:
Solltest du den Deutsch-Patch verwenden mach den weg T_T
Ansonsten musst du wohl versuchen aus dem Sinn des Codes heraus die Übersetzung zu finden. Ich kenne die Übersetzung nämlich auch nicht und bin ein Verfechter der Englischen Version. Einmal weil es einfach besser klingt und zum anderen weil wir alle das gleiche nutzen sollten um solche Probleme zu verhindern. Da Englisch internationaler ist als Deutsch und außerdem im Normalfall den Kern der Sache besser trifft (Switch -> Tab???), sollte man also Englisch und nicht Deutsch wählen .