PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATB-Leiste?



MrSerji
26.04.2012, 23:09
Nabend :)

Wollte mal fragen wie man eine ATB-Leiste aufbaut bzw. wie man eine überhaupt macht.
Ansich hätte ich ne Idee, aber da die Helden lvl sollen die auch Schneller in der Leiste werden, und dies kann ich nicht in meine Idee einbauen...

Würde mir sehr helfen und auch ein Spiel endlich vorwärts bringen x3


Muss nicht umbedingt ein Skript sein, eine einfach kleine erklärung wies ungefähr geht reicht schon ;)

MfG Soul und thx :)

caesa_andy
27.04.2012, 10:35
Du kannst doch über den Variablen-Befehl den GES Wert eines Charakters in eine Variable speichern. Benutz dass doch einfach um anschließend über irgend eine Rechenoperation die geschwindigkeit deiner ATB-Leiste zu bestimmen. Ich bin jetzt kein meister, was eigene KS angeht, aber ich würde einfach so arbeiten:


Wait 0.1
Set Variable 0001 = Char1 GES
Set Variable 0001 = Variable 0001 / 4
Set Variable 0002 = Variable 0002 + Variable 0001




Den Rest (wie die Anzeige als ATB-Leiste etc.) leitest du dann davon ab, wie hoch der Wert aus Variable 0002 ist.

Corti
27.04.2012, 11:02
Hi!

Die ATB Leiste je nach Helden-Level schneller werden lassen ist eine wirklich wirklich wirklich wirklich wirklich...beschissene Idee. Das würde wohl bedeuten, dass sie auf Level 1 äääätzend langsam ist und auf Stufe 60 dann superfix oder sowas, nein, vergiss das bloß.

Die Herausforderung ist es, einen Algorithmus zu finden, der aus den skalaren GES-Werten die ATB Leisten so berechnet, dass jemand mit 360 GES ca. 50% schneller seine Leiste füllt als jemand mit 240 GES und das mit egal welcher Kombination aus GES-Werten die Leiste schön fix ist.

Die ATB Leiste des 2k3 hat einen Wertebereich von 0 bis 300.000~ warum 300.000? Wohl weil sich bei so einem Maxwert die GES-Werte einfach drauf skalieren lassen ohne großen Verlust von Kommastellen bei der Konvertierung, verglichen mit zB 0 bis 100. Gehen wir mal von 0 bis 300.000 aus.

Gehen wir mal davon aus, du baust das ATB auffüllen als Parallel Process. Ein Wait 0.0 sind 1/6 von 0,1s. Das sind idealst 60 Aufrufe / Sek. allerdings kostet ja auch die Berechnung der ATB Leiste etwas Zeit, ich schätze das nun mal auf praktisch dann 20 Aufrufe / Sek. Gehen wir mal von einem Wait von 0,0s aus. Also 20 Aufrufe / Sek.
Du willst, dass ein Durchschnittscharakter im Schnitt in 3 Sek. seine ATB Leiste füllt. In 3 Sekunden wird ca. 60 mal die Berechnung aufgerufen, 60 von den 300.000 sind 5.000, der Durchschnittscharakter füllt seine ATB Leiste also mit 5.000 pro Zyklus. Du hast 2 Helden, einen mit 200 GES und einen mit 300, der Mittelwert ist 250. 250 GES ergeben 5.000 P pro Zyklus, daraus ergibt sich dass der Held mit 200 GES dann 4.000 pro Zyklus füllt und der mit 300 GES dann 6.000. Mit jedem Aufruf erhöhst du dann den ATB Wert eines jeden Akteurs um seinen Zykluswert. Wenn einer >=300.000 ist er an der Reihe, sein Wert wird dann um 300.000 reduziert.

Wenn du mehr wissen willst, frag!

MrSerji
27.04.2012, 19:24
Also wies ungefähr geht weiß ich jetzt, allerdings reichen mir die Infos nicht um mir ein bild vom Skript zu geben xD
Etwas näher erläutern, das würde mir ziemlich helfen :)

MfG Soul

Corti
27.04.2012, 19:37
Frag bitte spezifischer, dir jedes Kleinstdetail zu beschreiben, so dass du nur noch abtippen musst ist leider zu umfangreich und Bock drauf hätte ich da auch nicht.

MrSerji
27.04.2012, 19:43
Das meinte ich auch nicht, und wollen würd ichs auch nicht xD

Ich meinte eher, z.B. du erklärst mir was von "Zyklus" der sich 60 mal in 3 Sekunden wiederholt, aber nicht den ungefähren Aufbau.
Mindestens der Anfang wäre interessant, den Rest könnte ich mir denken.
So, weiß ich nähmlich nur wie oft der sich wiederholt (ungefähr) und was für ein Wert ich nehmen sollte.

Corti
27.04.2012, 19:51
Nunja, wenn du ein Kampfsystem baust, dann hast du sicher irgendwie ne Map, auf die portest du deine Helden, dort findet der Kampf statt und wenn du auf die Map kommst zeigst du deine Helden und Gegner grafisch an irgendwie und die HP-Leisten und die ATB - Leiste etc. ~ und dann muss ja was passieren. Die ATB - Leiste muss sich füllen damit irgendwann irgendwer dran kommt und dazu brauchst du Eventcode, der dieses Füllen vornimmt. Dies würde ich als Parallelprocess bauen und in diesem Parallelprozess hast du dann den Code, der die Leisten füllt.


Gegner 1 füllen
wenn Gegner 1 voll -> handeln
Gegner 2
wenn Gegner 2 voll -> handeln
Held 1
wenn Held 1 voll -> handeln
Held 2
wenn Held 2 voll -> handeln
(etc.)
Wait 0.0


Und jeder dieser Durchgänge ist dann ein Zyklus. Geht das so in die richtige Richtung in Sachen Erklärung?

MrSerji
27.04.2012, 20:05
Jo, so ungefähr :D
Werde gleich mal das versuchen ^^

Btw. das am Anfang musstest du nicht sagen, das wusste ich schon x3

Corti
27.04.2012, 20:11
Btw. das am Anfang musstest du nicht sagen, das wusste ich schon x3
*dir den Hals umdreh* O_o

MrSerji
27.04.2012, 21:00
Ich hab eine Art Lösung gefunden, aber die ist von Aufbau her falsch.
Denn bei mir muss dann die Geschwindigkeit immer niedriger werden, also z.B. von 100 bis 1, so wirds dann in der ATB-Lesite schneller.
Mir wärs aber leiber wenns von 1 bis 100 schneller wird und nciht umgekehrt xD

Ich habs so gemacht

<> Variable [...] set 300000
<> Varibale [...] / 4
<> Variable [...] / Held Geschwindigkeit
<> Varibale [...] + to Varibale [...]

Dann die abfrage wenns aktiv ist.
Hättest du vllt ein Rat wie ichs normal hinbekommen, mir fällt nähmlich nichts ein :/

Corti
27.04.2012, 21:14
Lies meinen Post nochmal und diesmal genauer, vor allem die Sachen mit dem Zahlen.

MrSerji
27.04.2012, 21:35
Ich kapiers nicht xD
Naja, ich werds gleich nochmal anders versuchen...