PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Taktisches KS: Aktionsbegrenzung



These
04.01.2007, 21:51
Hallo!

Ich würde gerne ein Kampfsystem entwickeln, welches taktischer ist als die üblichen Sideview-Kampfsysteme usw. Wenn also ein Kampf beginnt, wird der Held auf eine Map gebeamt, auf der sich 3-4 Gegner befinden. Das KS ist rundenbasiert, jede Einheit auf der Map hat zehn bis zwölf Aktionspunkte. Jeder Schritt, den der Held läuft, kostet einen Aktionspunkt. Wie bekomme ich es hin, dass sich der Held nach zwölf Schritten nicht mehr bewegen kann bzw. darf? Meine Idee sah so aus:

Ich frage einfach mit einer bzw mehreren Forks ab welche Taste benutzt wurde. Für oben,unten,rechts und links wird dann pro Schritt die Variable die die Aktionspunkte bestimmt um 1 erhöht. Wenn sie bei 12 angekommen ist, soll dieses System aufhören.

Aber das mit dem Aufhören, also das sich der Held nicht mehr bewegen darf klappt nicht.

HILFE!

Satyras
04.01.2007, 22:12
Erstelle 4 Events mit auf der Ebene Same Layer as Hero.

Speichere nun die Koordinaten des Helden in Variabeln.

Platziere nun anhand dieser Koordinaten je eins der Block-events
an jeder Seite des Helden.(Jedes Event braucht 2 Variabeln extra,
in denen ebenfalls die Koordinaten des Helden gespeichert werden.
Für das Event über dem Helden ziehe von der y-koordinate eins ab.
für das unter dem helden addiere eins zu der y-Koordinate.
Gleich verfährst du mit den x-Koordinaten, wobei für das linke event eins
Abgezogen werden muss und für das rechte eins hinzugefügt werden.

Sobald der Held sich wieder bewegen soll, müssen die Events wieder auf
ihre Ausgangsposition gesetzt werden.

Phönix Tear
05.01.2007, 05:03
Das wäre die nächstliegendste Lösung, aber nicht die beste ^^°.
Bei einem solchen KS soll man sicherlich alle Charaktere steuern können (soweit es mehr als nur den Helden geben soll (bei 3-4 Gegner gehe ich mal davon aus, dass auch der Held Hilfe bekommt ^^°)).
Aber selbst wenn nicht solltest, bzw. könntest du dabei mit einem Auto Start Event, welches das KS koordiniert arbeiten. Dieses wird dann nur von einem Parallel Process Event abgelöst, solange sich der Held bewegen kann (soweit du das so einfach machen willst).
Dies lässt sich ganz einfach machen. Das KS-Event hat zwei Seiten. Die erste Seite steht auf "Auto Start" und prüft wer als nächster an der Reihe ist, etc. Die zweite Seite steht auf "Parallel Process" und sorgt dafür, dass ein Switch mit dem diese Seite aktiviert wird, sobald der Held dran ist, ausgeschaltet wird, sobald dieser seine Aktionspunkte verbraucht hat. Damit kommt man dann zurück zur ersten Seite.
Damit sollte es funktionieren.

mfg
Phönix Tear

P.S:
Ich muss allerdings - ohne dich beleidigen zu wollen (^^°) - sagen, dass ich nicht denke, dass ein derart kompliziertes KS (KI, Koordinatenabfragen, Bahnberechnung für Zauber, etc.) dein Ziel sein sollte, wenn du fragst wie man den Helden am Bewegen hindern kann. So etwas ist ein ordentliches Stück Arbeit, welches eine Menge Erfahrung voraussetzt, angenommen es soll am Ende auch etwas Vernünftiges bei rumkommen. Dementsprechend würde sich etwas Leichteres, bei dem man erstmal diese Erfahrung sammeln kann, besser eignen.
Wenn du allerdings selbst wusstest wie das geht und dich nur vergewissern wolltest nehme ich das natürlich zurück ;)

These
05.01.2007, 13:09
Danke sehr!

Werd's jetzt mal so ausprobieren wie Phoenix Tear es beschrieben hat. Ich weiß, dass es ein ganzes Stück Arbeit ist, aber bis auf die Berechnung der Aktionspunkte habe ich das meiste schon aufgeschrieben bzw ein Konzept davon.

These

Daen vom Clan
05.01.2007, 19:08
Es geht vielleicht noch einfacher.
Wenn dein KS - sagen wir wie in den alten DSA-Computerspielen - jede Runde fragen würde, was der Held mit seinen Aktionspunkten machen will, dann könntest du bei 0 Aktionspunkten einfach die Option Bewegen ausgrauen.

D.h. der Kampf beginnt, ein Menü ploppt auf:


Held: Leberkasian
Aktionen:
Bewegen
Angriff
Fernkampf
Magie

Der Spieler klickt auf Bewegen, oben rechts erscheint der Zähler "12 AP"

Spieler bewegt sich vier Felder mit Leberkasian, der Zähler tickert runter auf 8, der Spieler drückt [esc] , besagtes Menü erscheint wieder und er wählt einen Angriff beim Gegner.
Nach dem Angriff kommt das Menü abermals usw. und wenn alle 12 AP aufgebraucht sind, erscheint das Menü nur noch ausgegraut.


Eine andere Alternative wäre einfach das du jede Tastatureingabe ausliest, wenn Held Leberkasian dran ist und in einem Parallen Event kontrollierst, ob die Taste gedrückt wurde und wenn Ja, welche.
War eine Pfeiltaste dabei, wirfst du ein Event an das besagten helden um einen Schritt in die entsprechende Richtugn bewegt, intern zählt ein Ticker hoch und nach 12 Tastaturrichtungsangaben sagt Leberkasian nur noch: "Keine AP mehr" (evtl als halbsekündige Pictureeinblendung.)


Wenn es dir allerdings um Taktik und Spieltiefe geht, würde ich ersteren Vorschlag nehmen. Wenn man mit Aktionspunkten jonglieren muss für jeden Angriff, dann wird es auf jeden Fall taktischer :)

These
05.01.2007, 22:53
Hey, danke!http://www.multimediaxis.de/images/smilies/old/sm_12.gif

Ist echt 'ne sehr gute Idee. Ich werde mich da mal dransetzen. Hört sich sogar leichter an, als das, was ich geplant hatte.^^

Thanks,
These

Chrise
06.01.2007, 14:48
Ich hab das jetzt so überflogen. Aber meine Lösung wäre:
Jeden zug die Bewegungsrate auf eine erwünschte Zahl setzen.
Dann ein Autostartevent, das blockt die standart bewegung, dann
tastenabfrage und immer bei Richtungstastenknopf oder Aktion diese Punkte abziehen. Nach Tastenabfrage und Tastenfork einen Fork der abfrägt ob
die Bewegungsrate gleich 0 ist, wenn ja, dann kommt der Zug vom Gegner.

;) Chrise