PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [AKSFrage] Gegner soll alle Partymitglieder angreifen



Yukari
16.10.2009, 21:18
Ich bastel derzeit an einem Aks mit dem rpgmaker2k3, in dem die ganze Truppe kämpft und nicht nur der Held. Ich habs zwar schon hinbekommen, dass die Heldenparty den Gegner angreift aber jetzt weiß ich nicht recht wie ich es machen muss, damit der Gegner nicht nur den Held angreift. Hätte da jemand eine Idee? :D

Supermike
16.10.2009, 21:41
Ich nehme mal an du meinst das Handeln des Gegners, oder?

Er kann zum beispiel denjenigen angreifen welcher ihm am nächsten ist.
Oder er greift eine bestimmte Klasse an oder denjenigen mit den wenigsten HP oder
du bringst deinem viech sogar bei einen Flächenzauber bzw Schlag zu verwenden.

Arnold
17.10.2009, 07:42
Hmm...was meinst du?

Willst du jetzt alle deine Gruppenmitglieder steuern?

Oder möchtest du einen Ki-Kampf machen?

uninspired
17.10.2009, 12:00
Hm, ich würde sagen einfach die Positionen aller Events (Held, Mitglieder, Gegner) in Variablen abfragen, dann mit einer Bedingung abfragen, ob der Gegner in unmittelbarer Nähe zu Held, Mitglied 1, Mitglied 2 usw. steht und wenn er das tut, dann eine ANimation anzeigen und eben dem Mitglied/dem Helden Schaden zufügen.
Wenn du es richtig schön haben willst, kannst du noch abfragen, ob der Gegner auch wirklich in die Richtung des zu angreifenden guckt, das wird aber ne Menge Bedingungsgewurschtel, hab sowas ähnliches mal gemacht - unr das nur mit dem Helden und was war ne Menge...

Yukari
17.10.2009, 17:59
Ich nehme mal an du meinst das Handeln des Gegners, oder?

Er kann zum beispiel denjenigen angreifen welcher ihm am nächsten ist.
Oder er greift eine bestimmte Klasse an oder denjenigen mit den wenigsten HP oder
du bringst deinem viech sogar bei einen Flächenzauber bzw Schlag zu verwenden.
Der Gegner soll eben unterschiedliche Charaktere angreifen nicht nur einen und dann noch verschiedene Attacken haben.


Hmm...was meinst du?

Willst du jetzt alle deine Gruppenmitglieder steuern?

Oder möchtest du einen Ki-Kampf machen?
Ja einen Ki Kampf den Held steuert der Spieler und die anderen kömpfen automatisch.

Hm, ich würde sagen einfach die Positionen aller Events (Held, Mitglieder, Gegner) in Variablen abfragen, dann mit einer Bedingung abfragen, ob der Gegner in unmittelbarer Nähe zu Held, Mitglied 1, Mitglied 2 usw. steht und wenn er das tut, dann eine ANimation anzeigen und eben dem Mitglied/dem Helden Schaden zufügen.
Wenn du es richtig schön haben willst, kannst du noch abfragen, ob der Gegner auch wirklich in die Richtung des zu angreifenden guckt, das wird aber ne Menge Bedingungsgewurschtel, hab sowas ähnliches mal gemacht - unr das nur mit dem Helden und was war ne Menge...
Ja und wie frage ich ab, ob der Gegner in der Nähe von einem Event ist? Wenn ich die X und Y Pisition nehme wird ja gefragt ob er direkt davor steht, aber ich möchte das er auch z.b Zauber verwendet der über etwas mehr Distanz geht.

Arnold
17.10.2009, 18:04
Ja einen Ki Kampf den Held steuert der Spieler und die anderen kömpfen automatisch.


I-wie sag ich das in letzter Zeit oft, aber schau dir das AKS von
"Der gelbe Adler" an, das ist genau das was du brauchst.


Hier:

http://www.rpg-atelier.de/showgame.php?gid=631

Supermike
17.10.2009, 22:58
Ja und wie frage ich ab, ob der Gegner in der Nähe von einem Event ist? Wenn ich die X und Y Pisition nehme wird ja gefragt ob er direkt davor steht, aber ich möchte das er auch z.b Zauber verwendet der über etwas mehr Distanz geht.

Du "legst" ein quadrat um den Gegner, dass dir als Struktur für die Fläche dient, auf welcher der Zauber schaden verursacht.

z.B
_ _ _
|_|_|_|
|_|_|_|
|_|_|_|

Das ist ein feld von 3 x3 und im günen Feld steht der Gegner.
Auf den darum liegenden Feldern soll ebenfalls Schaden enstehen.

Du rechnest eigentlich genau gleich wie bei der Berechnung wo der held 1 Feld vor dem Monster stehen.
Nur musst du hier das Feld abfragen.

Mit koordinaten ist das so:
Oben linkes Feld ist 0,0(x,y) und rechtes unteres 3,3
Der Gegner steht jetzt auf 2,2. seine koordinaten nennen wir FeindX und FeindY.

Am besten nimms du dir eine weitere variable zur Hand welche die entfernung misst. Die sind NahX und NahY.
In denen werden die Felder errechnet, die zwischen Gegner und Held liegen. Beispiel: Held ist auf der X-achse auf Feld 3. Der gegner auf Feld 8.
Wenn du diese Zahl subrahierst erhälst du -> 8-3=5! 5 felder liegen also zwischen held und Gegner!
Wichtig! Der erste Summand muss die koordinate des gegner sein. Wir rechnen hier schliesslich sein Umfeld. Sollte auch dem Verständniss dienen!


Die Abfrage lautet:
Ist nahX grösser als -1
Ist Nah X kleiner als 1
Ist NahY kleiner als -1
Ist NahY grösser als 1
-> und hiermit hast du das Quadrat um den Gegner errechnet und gleichzeit wird abgefragt ob sich der Held in jenem quadrat befindet.

---
Es wird genau gleich gemacht, wenn das quadrat grösser ist oder verschoben wird. Ausgangspunkt ist aber immer das Monster. Du musst also immer Abfragen wie weit welche Ecke des Quadrates vom Monster entfernt liegt.


Der Gegner soll eben unterschiedliche Charaktere angreifen nicht nur einen und dann noch verschiedene Attacken haben.

Erstmal hängt das von der KI ab. Also vor der Berechnung (wo ich denke, dass es kein Problem ist) gehts ans planen. Da kann man dir auch nicht grossartig helfen. Du musst dir halt einfach überlegen ob deine Viecher stur sind und nur einen angreifen, ob sie sich bestimmte Ziele suchen, ob sie nach drei treffern wechseln, ob sie immer jenen angreifen der sie grad angreift etc. KI halt.
Dafür kann ich dir nur raten Diagramme zu erstellen, wo du die einzelnen handlungen aufschreibst und so verbindest, dass sie anschliessend einen Kreis ergeben.
Aber weisst du ja sicher schon...

Yukari
18.10.2009, 20:52
I-wie sag ich das in letzter Zeit oft, aber schau dir das AKS von
"Der gelbe Adler" an, das ist genau das was du brauchst.


Hier:

http://www.rpg-atelier.de/showgame.php?gid=631
Das Ks hat fast gar nichts mit dem zu tun, das ich versuche zu erstellen.



Du "legst" ein quadrat um den Gegner, dass dir als Struktur für die Fläche dient, auf welcher der Zauber schaden verursacht.

z.B
_ _ _
|_|_|_|
|_|_|_|
|_|_|_|

Das ist ein feld von 3 x3 und im günen Feld steht der Gegner.
Auf den darum liegenden Feldern soll ebenfalls Schaden enstehen.

Du rechnest eigentlich genau gleich wie bei der Berechnung wo der held 1 Feld vor dem Monster stehen.
Nur musst du hier das Feld abfragen.

Mit koordinaten ist das so:
Oben linkes Feld ist 0,0(x,y) und rechtes unteres 3,3
Der Gegner steht jetzt auf 2,2. seine koordinaten nennen wir FeindX und FeindY.

Am besten nimms du dir eine weitere variable zur Hand welche die entfernung misst. Die sind NahX und NahY.
In denen werden die Felder errechnet, die zwischen Gegner und Held liegen. Beispiel: Held ist auf der X-achse auf Feld 3. Der gegner auf Feld 8.
Wenn du diese Zahl subrahierst erhälst du -> 8-3=5! 5 felder liegen also zwischen held und Gegner!
Wichtig! Der erste Summand muss die koordinate des gegner sein. Wir rechnen hier schliesslich sein Umfeld. Sollte auch dem Verständniss dienen!


Die Abfrage lautet:
Ist nahX grösser als -1
Ist Nah X kleiner als 1
Ist NahY kleiner als -1
Ist NahY grösser als 1
-> und hiermit hast du das Quadrat um den Gegner errechnet und gleichzeit wird abgefragt ob sich der Held in jenem quadrat befindet.

---
Es wird genau gleich gemacht, wenn das quadrat grösser ist oder verschoben wird. Ausgangspunkt ist aber immer das Monster. Du musst also immer Abfragen wie weit welche Ecke des Quadrates vom Monster entfernt liegt.


Erstmal hängt das von der KI ab. Also vor der Berechnung (wo ich denke, dass es kein Problem ist) gehts ans planen. Da kann man dir auch nicht grossartig helfen. Du musst dir halt einfach überlegen ob deine Viecher stur sind und nur einen angreifen, ob sie sich bestimmte Ziele suchen, ob sie nach drei treffern wechseln, ob sie immer jenen angreifen der sie grad angreift etc. KI halt.
Dafür kann ich dir nur raten Diagramme zu erstellen, wo du die einzelnen handlungen aufschreibst und so verbindest, dass sie anschliessend einen Kreis ergeben.
Aber weisst du ja sicher schon...
Ah Danke das hilft mir weiter ^^