Nachdem ich mir die Foren von Little Fighter 2 durchgelesen hab, habe ich festgestellt, dass fast jedes Forum darum geht einen eigenen Kämpfer zu programmieren. Ich hab mir den Data Changer schon vor längerer Zeit gezogen und mir dann diese Programmiersprache selbst beigebracht. Ich hab auch schon einige neue Charaktere gemacht und jetzt will ich euch diese (eingentlich einfache) Sprache etwas erklären dazu nehme ich einfach mal Freeze.
Okay, nachdem man die Freeze.dat mit einem Data Changer geöffnet hat, sieht man als erstes die bmp-Daten und grundlegende Daten, wie Sprungweite und -höhe. Auf die möchte ich nicht näher eingehen, da diese sich von selbst erklären. Dann gehts auch schon los mit folgenden Zeilen
<frame> 0 standing
pic: 0 state: 0 wait: 16 next: 1 dvx: 0 dvy: 0 dvz: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0 hit_Fa: 235 hit_Fj: 245 hit_Uj: 260 hit_Dj: 270
bpoint:
x: 40 y: 35
bpoint_end:
wpoint:
kind: 1 x: 40 y: 43 weaponact: 35 attacking: 0 cover: 0 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 21 y: 18 w: 43 h: 62
bdy_end:
<frame_end>
Ich erklär mal das Wichtigste:
pic = Bild für das aktuelle Frame
state = Was geschieht mit dem Kämpfer oder der Waffe? (z. B. state: 0 bedeutet "stehen")
wait = Zeit, die dieser Frame durchgeführt wird
next = nächster Frame der ausgeführt werden soll
dvx = Bewegung des Kämpfers oder Balls in der Horizontalen (Anzahl der Pixel)
dvy = Bewegung des Kämpfers oder Balls in der Vertikalen (Anzahl der Pixel)
dvz = Bewegung des Kämpfers oder Balls in der Diagonalen (Anzahl der Pixel)
centerx = Mitte des Bilds in x-Richtung in Pixel (z. B. Bild mit Breite 50 bedeutet centerx: 25)
centery = bei Kämpfern: Boden des Bildes in Pixel (z. B. Bild mit Höhe 50 bedeutet centery: 50)
bei Bällen: Mitte des Bilds in y-Richtung in Pixel (Bild mit Höhe 50 bedeutet centery: 25)
hit_a = Frame, der geladen wird wenn man "Attack" drückt
hit_j = Frame, der geladen wird wenn man "Jump" drückt
hit_d = Frame, der geladen wird wenn man "Defend" drückt
hit_?? = Frame, der geladen wird wenn ?? gedrückt wird
Bedeutungen Richtung: F = Links/Rechts, U = Oben, D = Unten
Bedeutungen Aktionen: a = attack, j = jump, d = defend
Fa bedeutet man muss Links/Rechts + Attack drücken, dass der angegebene Frame geladen wird
(!Zuvor muss natürlich immer Defend gedrückt werden!)
wpoint = Daten von der Waffe die aktuell getragen wird
kind = immer 1
x = x-Koordinate der linken, oberen Ecke des Waffenbildes im Bild des Kämpfers
y = y-Koordinate der linken, oberen Ecke des Waffenbildes im Bild des Kämpfers
weaponact = Nummer der Waffe, die getragen wird
attacking = wenn die Zahl 1 ist, wird angegriffen bei 0 nicht
cover = bei 1 Waffe verstecken bei 0 nicht (z. B. bei Rudolf)
dvx = Wird die Waffe geworfen, gibt das die Wurfweite in der Horizontalen in Pixel an
dvy = Wird die Waffe geworfen, gibt das die Wurfweite in der Senktrechten in Pixel an
dvz = Wird die Waffe geworfen, gibt das die Wurfweite in der Diagonalen in Pixel an
Wenn man jetzt bei hit_Fa nachsieht, sieht man, dass man Defend + Links/Rechts + Attack drücken muss, um den Frame 235 zu laden. Das ist natürlich der Eisball. Okay, jetzt geh ich einfach mal zum Frame 235, da die Frames vorher alles Standartdaten sind, die man als Noob nicht verändern sollte. Der Frame sieht so aus:
<frame> 235 ball1
pic: 140 state: 3 wait: 1 next: 236 dvx: 0 dvy: 0 dvz: 0 centerx: 40 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0 mp: 100
sound: data\064.wav
wpoint:
kind: 1 x: 40 y: 46 weaponact: 30 attacking: 0 cover: 1 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 26 y: 12 w: 27 h: 68
bdy_end:
<frame_end>
Okay, da werden jetzt die Daten angezeigt die Freeze ausführt, wenn er den Eisball wirft. Neu sind:
mp = Mana, das benötigt wird, um diese Attacke auszuführen
(!Bei negativer Zahl erhält man Mana, anstatt es zu verlieren!)
sound = Es wird ein Sound abgespielt, der im Dataordner unter dem Namen 064.wav zu finden ist
Aus next: 236 ergibt sich, dass der <frame> 236 als nächstes geladen wird. Den kann ich aber überspringen, da er nur Daten enthält, die für die Bewegung von Freeze vor dem Wurf des Eisballs verantwortlich sind. Ich geh jetzt mal zum <frame> 238, wo der Eisball geworfen wird:
<frame> 238 ball1
pic: 143 state: 3 wait: 1 next: 239 dvx: 3 dvy: 0 dvz: 0 centerx: 37 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
opoint:
kind: 1 x: 80 y: 46 action: 0 dvx: 0 dvy: 0 oid: 209 facing: 0
opoint_end:
wpoint:
kind: 1 x: 43 y: 46 weaponact: 31 attacking: 0 cover: 1 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 26 y: 12 w: 27 h: 68
bdy_end:
<frame_end>
Okay, jetzt wirds interessant, denn jetzt wird der Eisball geladen:
opoint = Es wird eine Datei geöffnet
x = Ort in x-Richtung an dem die Aktion ausgelöst wird in Pixel
y = Ort in y-Richtung an dem die Aktion ausgelöst wird in Pixel
dvx = Bewegung des geladenen Objekts in der Horizontalen
dvy = Bewegung des geladenen Objekts in der Senkrechten
oid = id der Datei, die geöffnet werden soll (Die id steht im data-Ordner)
facing = Die vordere Zahl gibt an, wie oft diese Datei geladen werden soll
Die hintere Zahl gibt an, in welche Richtung die Aktion ausgefürt werden soll
(0 in Richtung des Kämpfers, 1 gegen die Richtung des Kämpfers)
z. B. bedeutet facing 61, dass 6 Eisbälle gegen die Richtung des Kämpfers geworfen werden
Dann kommt irgendwann der Frame, indem steht, dass als nächstes <frame> 999 geladen werden soll. Das bedeutet, dass wieder der <frame> 0 geladen werden soll.
Nach diesem Schema sind die meisten Attacken aufgebaut.
Wenn ihr jetzt noch irgendwelche Fragen habt, dann schreibt sie in das Forum.
Okay, nachdem man die Freeze.dat mit einem Data Changer geöffnet hat, sieht man als erstes die bmp-Daten und grundlegende Daten, wie Sprungweite und -höhe. Auf die möchte ich nicht näher eingehen, da diese sich von selbst erklären. Dann gehts auch schon los mit folgenden Zeilen
<frame> 0 standing
pic: 0 state: 0 wait: 16 next: 1 dvx: 0 dvy: 0 dvz: 0 centerx: 39 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0 hit_Fa: 235 hit_Fj: 245 hit_Uj: 260 hit_Dj: 270
bpoint:
x: 40 y: 35
bpoint_end:
wpoint:
kind: 1 x: 40 y: 43 weaponact: 35 attacking: 0 cover: 0 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 21 y: 18 w: 43 h: 62
bdy_end:
<frame_end>
Ich erklär mal das Wichtigste:
pic = Bild für das aktuelle Frame
state = Was geschieht mit dem Kämpfer oder der Waffe? (z. B. state: 0 bedeutet "stehen")
wait = Zeit, die dieser Frame durchgeführt wird
next = nächster Frame der ausgeführt werden soll
dvx = Bewegung des Kämpfers oder Balls in der Horizontalen (Anzahl der Pixel)
dvy = Bewegung des Kämpfers oder Balls in der Vertikalen (Anzahl der Pixel)
dvz = Bewegung des Kämpfers oder Balls in der Diagonalen (Anzahl der Pixel)
centerx = Mitte des Bilds in x-Richtung in Pixel (z. B. Bild mit Breite 50 bedeutet centerx: 25)
centery = bei Kämpfern: Boden des Bildes in Pixel (z. B. Bild mit Höhe 50 bedeutet centery: 50)
bei Bällen: Mitte des Bilds in y-Richtung in Pixel (Bild mit Höhe 50 bedeutet centery: 25)
hit_a = Frame, der geladen wird wenn man "Attack" drückt
hit_j = Frame, der geladen wird wenn man "Jump" drückt
hit_d = Frame, der geladen wird wenn man "Defend" drückt
hit_?? = Frame, der geladen wird wenn ?? gedrückt wird
Bedeutungen Richtung: F = Links/Rechts, U = Oben, D = Unten
Bedeutungen Aktionen: a = attack, j = jump, d = defend
Fa bedeutet man muss Links/Rechts + Attack drücken, dass der angegebene Frame geladen wird
(!Zuvor muss natürlich immer Defend gedrückt werden!)
wpoint = Daten von der Waffe die aktuell getragen wird
kind = immer 1
x = x-Koordinate der linken, oberen Ecke des Waffenbildes im Bild des Kämpfers
y = y-Koordinate der linken, oberen Ecke des Waffenbildes im Bild des Kämpfers
weaponact = Nummer der Waffe, die getragen wird
attacking = wenn die Zahl 1 ist, wird angegriffen bei 0 nicht
cover = bei 1 Waffe verstecken bei 0 nicht (z. B. bei Rudolf)
dvx = Wird die Waffe geworfen, gibt das die Wurfweite in der Horizontalen in Pixel an
dvy = Wird die Waffe geworfen, gibt das die Wurfweite in der Senktrechten in Pixel an
dvz = Wird die Waffe geworfen, gibt das die Wurfweite in der Diagonalen in Pixel an
Wenn man jetzt bei hit_Fa nachsieht, sieht man, dass man Defend + Links/Rechts + Attack drücken muss, um den Frame 235 zu laden. Das ist natürlich der Eisball. Okay, jetzt geh ich einfach mal zum Frame 235, da die Frames vorher alles Standartdaten sind, die man als Noob nicht verändern sollte. Der Frame sieht so aus:
<frame> 235 ball1
pic: 140 state: 3 wait: 1 next: 236 dvx: 0 dvy: 0 dvz: 0 centerx: 40 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0 mp: 100
sound: data\064.wav
wpoint:
kind: 1 x: 40 y: 46 weaponact: 30 attacking: 0 cover: 1 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 26 y: 12 w: 27 h: 68
bdy_end:
<frame_end>
Okay, da werden jetzt die Daten angezeigt die Freeze ausführt, wenn er den Eisball wirft. Neu sind:
mp = Mana, das benötigt wird, um diese Attacke auszuführen
(!Bei negativer Zahl erhält man Mana, anstatt es zu verlieren!)
sound = Es wird ein Sound abgespielt, der im Dataordner unter dem Namen 064.wav zu finden ist
Aus next: 236 ergibt sich, dass der <frame> 236 als nächstes geladen wird. Den kann ich aber überspringen, da er nur Daten enthält, die für die Bewegung von Freeze vor dem Wurf des Eisballs verantwortlich sind. Ich geh jetzt mal zum <frame> 238, wo der Eisball geworfen wird:
<frame> 238 ball1
pic: 143 state: 3 wait: 1 next: 239 dvx: 3 dvy: 0 dvz: 0 centerx: 37 centery: 79 hit_a: 0 hit_d: 0 hit_j: 0
opoint:
kind: 1 x: 80 y: 46 action: 0 dvx: 0 dvy: 0 oid: 209 facing: 0
opoint_end:
wpoint:
kind: 1 x: 43 y: 46 weaponact: 31 attacking: 0 cover: 1 dvx: 0 dvy: 0 dvz: 0
wpoint_end:
bdy:
kind: 0 x: 26 y: 12 w: 27 h: 68
bdy_end:
<frame_end>
Okay, jetzt wirds interessant, denn jetzt wird der Eisball geladen:
opoint = Es wird eine Datei geöffnet
x = Ort in x-Richtung an dem die Aktion ausgelöst wird in Pixel
y = Ort in y-Richtung an dem die Aktion ausgelöst wird in Pixel
dvx = Bewegung des geladenen Objekts in der Horizontalen
dvy = Bewegung des geladenen Objekts in der Senkrechten
oid = id der Datei, die geöffnet werden soll (Die id steht im data-Ordner)
facing = Die vordere Zahl gibt an, wie oft diese Datei geladen werden soll
Die hintere Zahl gibt an, in welche Richtung die Aktion ausgefürt werden soll
(0 in Richtung des Kämpfers, 1 gegen die Richtung des Kämpfers)
z. B. bedeutet facing 61, dass 6 Eisbälle gegen die Richtung des Kämpfers geworfen werden
Dann kommt irgendwann der Frame, indem steht, dass als nächstes <frame> 999 geladen werden soll. Das bedeutet, dass wieder der <frame> 0 geladen werden soll.
Nach diesem Schema sind die meisten Attacken aufgebaut.
Wenn ihr jetzt noch irgendwelche Fragen habt, dann schreibt sie in das Forum.
Logge dich ein um einen Beitrag zu schreiben.