PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AKS : Koordinatenfrage für Gegner



Icognito
15.05.2004, 05:33
Hallo !
Ich arbeite schon seit einem 3/4 Jahr mit den Maker.
Nun bin ich dran, ein AKS zu machen, mit mehreren Waffen.
Ich wollte nur fragen, wie die Koordinatenabfrage wenn man schlägt funktioniert. Muss man für jeden Gegner seperat eine machen ?

Greez, Icognito.

Kyuu
15.05.2004, 05:58
Original geschrieben von Icognito
Hallo !
Ich arbeite schon seit einem 3/4 Jahr mit den Maker.
Nun bin ich dran, ein AKS zu machen, mit mehreren Waffen.
Ich wollte nur fragen, wie die Koordinatenabfrage wenn man schlägt funktioniert. Muss man für jeden Gegner seperat eine machen ?

Greez, Icognito.

Ersteinmal solltest du die Koordinaten der Gegner in Variablen archivieren.
Sobald der Held zuschlägt speicherst du seine Koordinaten in Variablen.
Dann addierst bzw. subtrachierst du diese Koordinaten mit 1 (oder einer anderen Zahl, der Reichweite der Waffe entsprechend), jenachdem in welche Richtung der Held gerade schaut, sodass du die Koordinaten vom Feld hast, welches gerade angegriffen wird.
Jetzt vergleichst du die rausgefundenen Koordinaten mit denen aller aktiven Monster. So bekommst du raus, ob und welches Monster gerade angegriffen wird.

Ich habe mich mit einem AKS noch nie auseinandergesetzt, aber rein theoretisch sollte es funktionieren.

Icognito
15.05.2004, 06:03
Hmmm...könntest du mir das bitte als ungefähren code aufschreiben, wäre sehr nett.

Greez, Icognito

Dingsi
15.05.2004, 06:15
Jeder Gegner in meinem AKS ist ein PP-Event mit folgendem Inhalt. Eh.
http://home.arcor.de/dthorm/ichbintollundihrseidalleuntoll.jpg

Ach, fuck. Jetzt hab ich mir soviel Mühe mit dem zusammenschneiden gemacht, und jetzt isses die falsche Seite. Hier wird der Held getroffen und nicht der Gegner... Aber der Code ist trotzdem sehr ähnlich. Vielleicht hilfts dir ja auch...

edit: mir fällt gerade auf, der code zum gegner treffen ist eigentlich genau der gleiche, bis auf dass nicht hero-face-direction sonder this-event-face-dir abgefragt wird.

edit²: oh, doch nicht ganz. die variablen beeinflussung hindernissx+1 und -1 und so muss immer umgekehrt sein. also da wo +1 stand muss -1 stehen

Kyuu
15.05.2004, 06:31
Enter Password: Var[0001:tasten_abfrage]5
If Var[0001]= 5
Show Animation [0001]
ChangeVar: Var[0002:m1_x]set Monster1 X coord
ChangeVar: Var[0003:m1_y]set Monster1 Y coord
ChangeVar: Var[0004:m2_x]set Monster1 X coord
ChangeVar: Var[0005:m2_y]set Monster1 Y coord
ChangeVar: Var[0006:h_x]set Hero X coord
ChangeVar: Var[0007:h_y]set Hero Y coord
If Hero DirFacing = UP
ChangeVar: Var[0007:h_y]-1
Else:
If Hero DirFacing = DOWN
ChangeVar: Var[0007:h_y]+1
Else:
If Hero DirFacing = RIGHT
ChangeVar: Var[0006:h_x]+1
Else:
If Hero DirFacing = LEFT
ChangeVar: Var[0006:h_x]-1

:END

If Var[0006:h_x]=Var[0002:m1_x]
If Var[0007:h_y]=Var[0003:m1_y]
Change Var[0010:m1_hp]- Schaden
:END

If Var[0006:h_x]=Var[0004:m2_x]
If Var[0007:h_y]=Var[0005:m2_y]
Change Var[0011:m2_hp]- Schaden
:END

Wait: 0,0 sec

Das ist jetzt sehr einfach gemacht, und nur mit zwei Monstern.
Da gehören noch deine eigenen Algorithmen zur Schadensbrechnung und Eigenschaften der Waffen implementiert.

Icognito
15.05.2004, 07:15
Wow, und wenn ich jetzt 1000 Monster z.b. mache, muss ich dann für jedes einzelnes soetwas machen ?

Ynnus
15.05.2004, 07:19
Das Problem ist, das es keine protected oder static Variablen für Events gibt. Somit kann man von überall her auf alle Variablen zugreifen, und sie verändern. Allerdings muss nicht jeder Gegner eine einmalige und immer neue Variable haben, es reicht, wenn du diese für 6 Gegner machst. Diese Variablen musst du dann bei Kartenwechsel eben wieder den neuen Gegnern neu zuweisen. Also, dann kannst du maximal 6 Gegner gleichzeitig auf der Map haben, und jeder belegt eine der 6 Variablenpaare für die Koordinaten.
Und leider gibt es auch keine Arrays, sodass man 12 eigene Variablen erstellen muss...
Wie dem auch sei, der Maker ist nun eben etwas umständlich bei sowas, also du benötigst so viele Variablen, wie du maximale Gegner auf einer Map haben könntest. Du benötigst ja immer nur die Rechnung mit denen, welche auf der Karte sind, somit musst du nicht für alle Gegner eigene Variablen erstellen. Wenigstens das...

Ach ja, aber natürlich musst du dann auch für jeden Gegner einene eigenen dieser Codes im Event erstellen, jeweils eine der 6 Variablenpaare eingestellt. Somit wird das eine Schweine-Arbeit, ich weiß es, hab's lange genug durchgemacht und zig mal umgeändert. Und das wird dann erst richtig lustig, wenn man den Code bei bereits erstellten Gegnern umändern muss, und alles editieren muss. Wünsche schonmal viel Freude und gute Nerven dabei, ist wirklich nicht z unterschätzen, diese Arbeit.

Lachsen
15.05.2004, 15:52
Es ist möglich beliebig viele Gegner über ein Parallel Event zu steuern, was die KI und auch die Terffer-Abfrage angeht.
Was man machen muss ist ein ein parallel Event, dass sich in einer sehr hohen Frequenz wiederholt. Am besten alle "2x 0.0" Sekunden.
Bei jedem Loop wird unter bestimmten Bedingungen ein Gegner bewegt.
WENN aber ein Gegner bewegt wird, wird eine Variable zu diesem Gegner erhöht. Diese Speichert die ZEIT ein, bzw. die anzahl an LooPs, die die Bewegung in anspruch nimmt. Wenn der Wert gegeben ist, dann wird dieser gegner in den nächsten Wiederholungen des Events nicht bewegt, stattdessen Wird der Wert dieser variable reduziert, solange, bis er wieder 0 ist, dann kommt die nächste Bewegung.
Das hört sich jetzt sehr komplex und umständlich an.
Komplex ist es auch, aber dafür WENIG Skriptarbeit.
Denn man kann die KI EINMAL Skripten und sie gilt für alle Gegner...
Die Bewegungs-Berechnung ebenfalls.
Eigentlich muss man ALLEs nur einmal skripten bis auf die BEwegung an sich, da diese über Events läuft. Aber selbst hier kann man durch kluge anwendung von Call Events wirklich nur das MINIMUM (undzwar NUR die Move-Events selber) über das Event des Gegners laufen lassen.

Das das geht kann ich bezeugen, ich habs bereits hinbekommen, zwar nicht in einem A-KS, aber in sowas in der Art, wo die Gegner sich fast genauso verhalten im Endeffekt.

Naja, das nur nebenbei oO

C ya

Lachsen

(Den Post könnte man fast als Spamm bezeichnen, so überflüssig ist er XD... Sorry)

Icognito
15.05.2004, 16:49
o_o http://www.multimediaxis.de/images/smilies/old/1/nixweiss.gif :watt:

wow, das ist mir doch zu schwer. Da mache ich lieber ein Siedeview (oder ähnliches) KS !

Gibt es wirklich keine sehr einfache und leicht zu verstehene Methode ?