Hier mal mein Lösungsvorschlag xD...
Kommentare sind nur spärlich gesetzt ^^"
Auf Wunsch send ich dir das Script auch gern zu ^^ - vielleicht gibbet aber auch ne einfachere Lösung, aber ich wollt unbedingt das Schräglaufen des Gegners einbauen. Ich hoffe die Mühe war net umsonst :).
~RB~
Edit: Erklärung (jedenfalls der Versuch)
Diese Fork dient lediglich dazu, zu überprüfen, ob die beiden Gegner schon "erledigt" sind. Die Anzahl der
getöteten Gegner wird (wie wir ja später sehen werden - oder jetzt schon sehen, in Variable 0031 gespeichert). Ist die Fork
erfüllt, so wird das Skript beendet.
Speichern wir zunächst die X- und Y-Positionen des Gegners und von Ziel1 & 2 (Gegner, Ziel1 und Ziel2 sind die
Namens der Events)
Jetzt müssen wir den Abstand von Ziel1 und Ziel2 zum Gegner berechnen. Da dort allerdings auch negative Werte
herauskommen können, (Beispiel: X-Positon Gegner = 10, X-Position Ziel1 = 14, d. h. 10 - 14 = -4) fügen wir noch ein paar
Forks ein, um dies zu verhindern.
Das ganze wiederholt sich für die Y-Position und dann nochmal für die X- und Y-Position von Ziel2. (siehe Code)
Nachdem wir nun all die schönen Forks gebastelt haben (und die verdammten Schusseligkeitsfehler entfernt sind *grml*), gehts
nun weiter... Wir fassen nun den gesamten Abstand (in Kästchen) vom Gegner zu Ziel1 bzw. Ziel2 zusammen.
Jop, jetzt haben wir ja schon die Werte für den Abstand! Juhu! - Nur noch bestimmen, wo der Gegner hinrennen
soll... also wieder ne kleine Fork gebastelt, welcher Abstand denn nun größer ist.
Nun gut, wir wissen nun, welches Ziel angegriffen werden soll... und wir wissen wie weit es wegsteht, auch gut :)
- Nur können wir mit dem Abstand allein nicht viel anfangen. Wir müssen diesmal auch die Negativwerte kennen, das erledigen
wir ganz fix mit ein wenig Code.
So, Abstand berechnet. Fangen wir an, die Richtung zu bestimmen in die der Gegner rennen soll. FORK folgt...
wieder mal. In Variable 0019 [MoveCode] sichern wir einen Wert, dieser bestimmt in welche Richtung der Gegner gehen soll. da
er auch schräg rennen soll, besteht der Wert aus 2 Werten. Einmal für X-Pos (1, 3 oder 7) und einmal für die Y-Pos (15, 31
oder 63). Diese werden addiert und ergeben den entgültigen "MoveCode".
Werte X: Werte Y:
1 = Gegner links vom Ziel 15 = Gegner über Ziel
3 = Gegner auf gleicher X-Pos wie Ziel 31 = Gegner auf gleicher Y-Pos wie Ziel
7 = Gegner rechts vom Ziel 63 = Gegner unter Ziel
Beispiele:
1 und 63 = 64, d.h. Schritt nach links-unten
3 und 15 = 18, d.h. Schritt hoch
7 und 31 = 32, d.h. Schritt rechts
Der Wert 34 wird NIE entstehen, der Gegner müsste "im" Ziel stehen.
*Puh*... wat'n Absatz, ne...
So, nun einfach die Werte für die Richtungen einfach per FORK vergleichen...
Folgende Werte sind möglich:
16 = links-oben
32 = links
64 = links-unten
18 = hoch
34 = geht nicht ;) - wie schon gesagt
38 = rechts
22 = rechts-hoch
66 = runter
70 = rechts-unten (brauchen wir nicht abfragen, da letzte Möglichkeit -> kommt in letzten ELSE-Case)
Nun wieder der ellenlange Code...
Dat wär auch erledigt... Code für Angriff folgt sofort... *gäääähhhn*
That's it... *uff* - Und ja - mir war langweilig... :O
~RB~
--
Arbeiten an den Projekten gecancelt! (DP, Fading, KPConfig...)
Geändert von RB [Redbounty] (18.09.2003 um 22:36 Uhr)