PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eigenes KS:Abfrage der Heros automatisieren...



lokipoki
10.10.2006, 04:05
Also ich bin grad am Basteln meines eigenen KS. Mein Spiel hat nun 9 Hauptcharaktere die man spielen kann. Alle von denen koennen kaempfen. In meinem KS ist nun platz fuer drei von meinen Heros. Jeder Hero bekommt von mir eine Variable. D.h wenn z.B. Hero 1 = 1 Hero 2 = 2 Hero 3 = 3 ist werden diese im KS auftauchen. Alle anderen Heros bekommen die Werte 4,5,6 usw.

Als erstes uebertrage ich die Werte, der im KS kaempfenden Heros, auf Zwischenvariablen. Z.b. set pos 1 hp = hero 1 hp. Damit muss ich nicht immer wieder abfragen, wer nun kaempft und wer nicht. Am Ende eines Kampfes uebergebe ich die Werte wieder zurueck.

Nun zu meiner Frage: Wie mache ich das mit den Animationen. Sagen wir Hero 1 fuehrt seinen speziellen Skill aus. Dann muss ich ja immer wieder abfragen wer nun im "kaempfenden Team" ist und wer nicht. Gibt es da eine bessere Loesung? Ich meine die Stats ist ja eher einfacher, aber alle Animationen ist da doch schwerer. Oder sehe ich das ganze falsch?

Achja, ich moechte jetzt nicht jemanden der mir das Serges KS raet, da ich alles doch irgendwie selber machen moechte...

Danke schon mal im Vorraus...

Noshire
10.10.2006, 10:24
Die Werte der Helden würde ich am Ende jedenfalls nicht wieder zurückübergeben. Falls du Skills einbaust, die die Werte temporär beeinflussen, kannst du diese Auslagerungsvariablen auch gleich als temporäre Kampfdaten brauchen. Das heisst, für die Dauer des Kampfes wird der Speed eines Helden um 10% gesenkt (Positionswerte), nach dem Kampf hat dies allerdings keine weiteren Auswirkungen, da die Positionsvars wieder gelöscht werden und keinen Einfluss auf die Herostats selbst haben.

Bei den Skills gibt es, soweit ich weiss, keine wirklich einfache Lösung. Ich denke, am einfachsten schaffst du das, indem du erst einmal eine Fork machst, ob Hero1 den Skill ausführt, dort drin dann eine, ob Hero1= Hero1 ist, dort drinn dann alle Skillforks mit Animation. Wenn du fertig bist, dann machst du das mit CopynPaste-Prinzip für alle anderen Möglichkeiten. Oder du erstellst separate Animationsevents für alle Helden, dann wird das etwas übersichtlicher.

Ich mach selbst ein SKS unabhängig von Serges KS, ich wünsch dir viel Glück dabei (Und vor allem Ausdauer^^)

lokipoki
10.10.2006, 10:48
Die Werte der Helden würde ich am Ende jedenfalls nicht wieder zurückübergeben. Falls du Skills einbaust, die die Werte temporär beeinflussen, kannst du diese Auslagerungsvariablen auch gleich als temporäre Kampfdaten brauchen. Das heisst, für die Dauer des Kampfes wird der Speed eines Helden um 10% gesenkt (Positionswerte), nach dem Kampf hat dies allerdings keine weiteren Auswirkungen, da die Positionsvars wieder gelöscht werden und keinen Einfluss auf die Herostats selbst haben.

Bei den Skills gibt es, soweit ich weiss, keine wirklich einfache Lösung. Ich denke, am einfachsten schaffst du das, indem du erst einmal eine Fork machst, ob Hero1 den Skill ausführt, dort drin dann eine, ob Hero1= Hero1 ist, dort drinn dann alle Skillforks mit Animation. Wenn du fertig bist, dann machst du das mit CopynPaste-Prinzip für alle anderen Möglichkeiten. Oder du erstellst separate Animationsevents für alle Helden, dann wird das etwas übersichtlicher.

Ich mach selbst ein SKS unabhängig von Serges KS, ich wünsch dir viel Glück dabei (Und vor allem Ausdauer^^)

Ich glaube du hast mich falsch verstanden. Ich moechte jeweils nicht immer abfragen, ob dieser oder jener Hero in der "KS Party" ist. Und somit sollte auch keine Abfrage der Skills abhaengig davon welcher Hero im Team ist.

Ich hoffe du hast micht jetzt verstanden...

Kelven
10.10.2006, 11:45
Ich denke nicht, dass du um eine Menge Forcs herumkommst, zumindest nicht auf dem 2K. Die Animationen lassen sich ja nicht irgendwo zwischenspeichern.Du könntest dir die Arbeit evtl. mit einigen Pseudo-Funktionen erleichtern, bei denen du erst eine Variable für die Heldenposition setzt, das Common Event dann aufrufst und das Ergebnis in die Variable schreibst. So hab ich das auf dem 2K immer mit den Statuswerten der Gruppenmitglieder gemacht (das Austauschen von temporären Werten war mir zu umständlich).

lokipoki
10.10.2006, 15:36
Ich denke nicht, dass du um eine Menge Forcs herumkommst, zumindest nicht auf dem 2K. Die Animationen lassen sich ja nicht irgendwo zwischenspeichern.Du könntest dir die Arbeit evtl. mit einigen Pseudo-Funktionen erleichtern, bei denen du erst eine Variable für die Heldenposition setzt, das Common Event dann aufrufst und das Ergebnis in die Variable schreibst. So hab ich das auf dem 2K immer mit den Statuswerten der Gruppenmitglieder gemacht (das Austauschen von temporären Werten war mir zu umständlich).

Tut mir leid habe ich jetzt nicht ganz mitgeschnitten... Kannste nochmal genau erklaeren.8)

Kelven
10.10.2006, 16:07
Du setzt zunächst eine Variable:

Variable bla = Position des Heldens in der Gruppe (1-3, da bei dir ja 3 Helden sind)

Dann rufst du ein Common Event auf, dass die ID des Animationsbild bestimmt. In diesem Event wird bei bla die ID der Animation reingeschrieben. So hast du dann im Anzeigeevent nur eine einzelne Forcabfrage. Man kann das dann natürlich noch viel weiter verfeinern und im Event auch noch andere Sachen abfragen. So bleibt das Anzeigeevent jedenfalls übersichtlicher.

DR_Zeph
10.10.2006, 21:17
ich realisiere das ganze ähnlich, zumindest mittels CallEvent, jedoch lege ich das ganze nicht auf die CE sondern auf normale MapEvents, das hat zum einen den Vorteil, das man alle Angriffe, Animationen und whatever, ineinem Event beisammen hat, die einen Charakter betreffen, sondern spart auch das lästige Abfragen des Helden.

Aber mal genauer erklärt, man kann Events nichtnur direkt, sondern auch indirekt über ihre Nummern aufrufen. Dies geschieht mittels 2 Variablen, einmal die Eventnummer und einmal die Eventseite. Die Events, die du für die Helden genommen hast, haben z. B. die Nummer 15,16,17.....
Greift nun ein Held an, z.B. der Held mit der Nummer 1, es muss also Event 15 aufgerufen werden. Also nimmst du eine tempVariable zur hilfe, setzt sie auf den Startwert 14 und addierst die Nummer des ausführenden Helden hinzu und zack callst du das Event mit der Nummer 15, ohne jegliche abfrage. Ähnlich sieht es bei den unterschiedlichen Attacken aus, sag den einzellen MenüPunkten eine Zahl zu und verteil die jeweiligen Aktionenen auf die dazugehörigen Eventseiten.

lokipoki
11.10.2006, 02:51
Aber mal genauer erklärt, man kann Events nichtnur direkt, sondern auch indirekt über ihre Nummern aufrufen. Dies geschieht mittels 2 Variablen, einmal die Eventnummer und einmal die Eventseite. Die Events, die du für die Helden genommen hast, haben z. B. die Nummer 15,16,17.....
Greift nun ein Held an, z.B. der Held mit der Nummer 1, es muss also Event 15 aufgerufen werden. Also nimmst du eine tempVariable zur hilfe, setzt sie auf den Startwert 14 und addierst die Nummer des ausführenden Helden hinzu und zack callst du das Event mit der Nummer 15, ohne jegliche abfrage. Ähnlich sieht es bei den unterschiedlichen Attacken aus, sag den einzellen MenüPunkten eine Zahl zu und verteil die jeweiligen Aktionenen auf die dazugehörigen Eventseiten.

Genauso hatte ich mir das auch vorgestellt. Mir ist aber grad noch eine andere Loesung eingefallen:

In einem CE wird nun abgefragt, welcher Held nun dabei ist. Dann werden eben drei Switches angemacht. Jede "Standart Animation" jedes Helden bekommt einen eigenen Event auf des KS Map. Diese Animation wird geloopt und nur unterbrochen wenn der jenige Held, z.B. seine Attacke ausfuehrt. Bei der Unterbrechung wird dann Attack Event fuer den jenigen Helden aufgerufen. Damit bleibt ne Menge Uebersicht im KS. Hoert sich theoretisch erstmal gut an. Werde erstmal versuchen das zu realisieren.