"Vibration of Nature" - It's a long story
Rundenbasiertes KS?
Prinzipiell besteht eine Runde immer aus 2 Teilen.
1. Die Attacken bestimmung (von allen Kampfteilnehmern und Gegnern)
2. Die Bestimmung der Reihenfolge der Attacken und gleichzeitig ihre Ausführung.
Für 1:
Hier kannst du dich ziemlich an den KS-Kursen wie dem von Serge richten, nur eines ist wichtig: Du musst alles Ergebnisse in Variablen einspeichern.
Also brauchst du mindestens folgende Variablen:
Held1-Aktion
Held2-Aktion
Held3-Aktion
...
Gegner1-Aktion
Gegner2-Aktion
...
usw.
In dese Variablen speicherst du die AKTION-ID der jeweils gewählten Aktion.
Bei Helden wird die Aktion (meistens) per Menu-Skript gewählt, bei Gegnern über eine Art "KI" (bzw per Zufall - siehe andere KS Kurse dafür...).
Und dann noch diese:
Held1-Ziel
Held2-Ziel
....
Gegner1-Ziel
usw.
Hier musst du das Ziel der Aktion einspeichern. Bei Helden wieder durch Auwahl bestimmt, bei Gegnern durch eine KI (oder Zufall).
Zu 2.:
Um die Richtige Reihenfolge rauszufinden würde ich so vorgehen:
Zuerst speicherst du die Agilitätswerte ALLER Kampfteilnehmer in Temporäre Variablen (also in neue Variablen). Diese Variablen wirst du in folgener Rechnung für die GEschwindigkeiten der Kampfteilnehmer verwenden.
Und nun die ERklärung wie man auf einfache Art und Weise den HÖCHSTEN WERT bestimmt (da können auch ein paar Vorposter noch was von lernen):
Mann verwendet eine Variable Namen's "Top-Wert" und eine Variable "Top-Nummer"
Beschreibung der Variablen: Top-Wert hat immer den momentan größen Vergleichswert eingespeichert, während Top-Nummer die Nummer des Kampfteilnehmers (z.B. 1=Held1, 2=Held2 3=Held3 4=Gegner1 5=Gegner2 usw.) mit dem momentan größten Vergleichwertes.
Das Skript sieht nun so aus:
Top-Wert=0
Top-Nummer=0
If Held1-Agi>Top-Wert then
Top-Wert=Held1-Agi
Top-Nummer=1
End Case.
If Held2-Agi>Top-Wert then
Top-Wert=Held2-Agi
Top-Nummer=2
End Case.
....
If Gegner1-Agi>Top Wert then
Top Wert=Gegner1-Agi
Top-Nummer=4
End Case.
....
usw.
Das ganze muss mit allen möglichen Kampfteilnehmern durchgezogen werden.
(wichtig: In den Forks muss BIGGER gewählt werden, NICHT above)
Wenn das Skript nun einmal durchlaufen wurde, hat man in der Variable "Top-Nummer" die Nummer des Kampfteilnehmers, der der schnellste ist, also jetzt am Zug ist.
Mit diesem Kampfteilnehmer wird nun der Zug ausgeführt.
Das heisst: Du musst auf die Aktion- und Ziel-Variable des Kampfteilnehmers zugreifen. Beispiel:
Top-Nummer=1 -> Aktion-ID=Held1-Aktion und Ziel-ID=Held1-Ziel
oder
Top-Nummer=3 -> Aktion-ID=Held3-Aktion und Ziel-ID=Held3-Ziel
oder
Top-Nummer=5 -> Aktion-ID=Gegner2-Aktion und Ziel-ID=Gegner2-Ziel
(wenn es nur 3 Helden gibt..)
usw.
Anhand von "Top-Nummer" weisst du, welcher Kampfteilnehmer seine Aktion hat, anhand der "Aktion-ID" weisst du, welche Attacke kommen muss (SChwertschlag oder Feuerzauber, oder Heilitem) und schließlich weisst du anhand der "Ziel-ID" welches Ziel, bzw. welche Ziele angegriffen werden.
Wichtig: Hat der Charakter seinen Zug ausgeführt, senke seinen Agilitäts-Wert auf 0, undzwar den in der temporären Variable! (deshalb das umspeichern, die Agilitäts-Werte sollen ja nicht verloren gehen)
Und jetzt wiederholst du das ganze (ab der Stelle wo die Schrift Rot ist). Du durchgehst wieder die oben beschrieben Rechnung. Da der Kampfteilnehmer der vorher der schnellste war jetzt einen Agi-Wert von 0 hat, wird der nächst schnellere dran kommen.
Das ganze machst du solange, bis am Ende der Rechnung die Variable Top-Nummer den Wert 0 hat. Dann ist die Runde vorbei.
Was noch wichtig ist: Sollte ein Kampfteilnehmer nach einer Aktion sterben musst du den Agi-Wert der temporären Variable auf 0 setzten (genau wie in allen anderen Fällen, wenn seine Aktion irgendwie abgebrochen wird.)
Ich denke das ist das wichtigste was du zu einem Rundenbasierten-KS wissen musst.
Ich hoffe ich konnte helfen.
C ya
Lachsen