Jak zapewne wiecie
do tworzenia własnych postaci będzie potrzebny
program Data Changer, albo konkretniej mówiąc program,
który potrafi
odszyfrować pliki .dat ponieważ na takich plikach opiera się całe LF2.
Obsługa tego programu jest tak prosta jak obsługa Notatnika.
Potrzebny będzie również program do obróbki
plików .bmp. Najczęściej
używanym programem tego typu jest wbrew wszelkim pozorom MS Paint.
A więc zaczynamy! Z góry ostrzegam, że aby zrozumieć ten
poradnik
trzeba mieć dużo cierpliwości, a żeby stworzyć porządną postać trzeba
jej jeszcze więcej. Nie zamierzam tłumaczyć jak kopiować ataki,
ponieważ to znajdziecie np. na
stronie http://www.littlefighter.gsi.pl/. Zamierzam po prostu
wytłumaczyć jak
to działa.
Plik dat każdej postaci zaczyna się od tak zwanej części bmp. Wygląda
ona tak:
BMP -
POCZĄTEK DAT
<bmp_begin>
name: Davis - imię postaci, spację oznaczamy jako '_'
head: spritesysdavis_f.bmp - portret postaci, widoczny przy
wybieraniu jej w menu LF2.. Ma format 120x120 pikseli.
small: spritesysdavis_s.bmp - miniaturka postaci widoczna przy pasku
życia. Ma format 40x45 pikseli.
file(0-69): spritesysdavis_0.bmp w: 79 h: 79 row: 10 col: 7
file(70-139): spritesysdavis_1.bmp w: 79 h: 79 row: 10 col: 7
file(140-209): spritesysdavis_2.bmp w: 79 h: 79 row: 10 col: 7
Są to pliki graficzne dla postaci, numery te będą później
wykorzystywane w poszczególnych klatkach.
w: szerokość jednej
klatki
h: wysokość jednej klatki
row: ilość
klatek w rzędzie
col: ilość klatek w kolumnie
walking_frame_rate 3
- ilość czasu między kolejnymi klatkami chodzenia,
niezależna od parametru wait: w tych klatkach (o parametrze wait będzie
później)
walking_speed
5.000000
walking_speedz 2.500000
Szybkość chodzenia, odpowiednio w lewo i w prawo lub górę i
w dół (podane bodajże w pikselach na TU (TU=jednostka czasu))
running_frame_rate 3
running_speed 10.000000
running_speedz 1.600000
Te trzy oznaczają to samo co w klatkach chodzenia, więc ich nie tłumaczę
heavy_walking_speed 3.700000
heavy_walking_speedz 1.850000
heavy_running_speed 6.200000
heavy_running_speedz 1.000000
Szybkość chodzenia/biegania podczas trzymania ciężkiego przedmiotu
(Typu 2)
jump_height
-16.299999
Wysokość skoku jest zawsze ujemna.
jump_distance
10.000000
jump_distancez 3.750000
Dystansy pokonywane podczas skoku w bok/w górę
dash_height
-10.000000
dash_distance 18.000000
dash_distancez 5.000000
Są to wartości wykorzystywane przy skoku podczas biegu. Jeśli
zrozumiałeś poprzednie części to ta nie powinna być zagadką.
rowing_height -2.000000
rowing_distance 5.000000
Wartości podczas salta w tył podczas spadania.
<bmp_end>
To by było na, tyle jeśli chodzi o pierwszą część.
FRAME
- KLATKI
Kolejna to już
klatki. Klatki to najważniejsza część gry. To one decydują o tym, co
będzie się działo na ekranie. Każda klatka zawiera podstawowe
informacje takie jak czas, po jakim
pojawi się następna, ruch w danej klatce, czy chociażby, jaki obrazek
pokaże się podczas wykonywania klatki.
<frame> 399 dummy
- powiadomienie, iż zaczyna się nowa
klatka, numer klatki, nazwa (łatwiej się zorientować co jest czym)
pic: 0 - obrazek
klatki
state: 0 - stan postaci, jest około 50 stanów postaram się
je
wszystkie później opisać
wait: 0 - ile komputer będzie oczekiwał na następną klatkę(w TU
(1TU=1/30 sekundy jakby ktoś zapomniał)
next: 0 - numer następnej klatki
dvx: 0 dvy: 0 dvz: 0 - ruch pstaci w danej klatce (x= w lewo
prawo,
y=góra (skok), z=góra, dół(chodzenie)
centerx: 39 centery: 79 - miejsce, w którym pojawi się cień
oraz miejsce
z którego liczone są wszystkie inne wartości dotyczące
położenia
hit_a: 0 hit_d: 0 hit_j: 0 - określa co stanie się po wciśnięcu
odpowiednich klawiszy, więcej poniżej
bdy:
kind: 0 x: 21 y: 18 w: 43 h: 62
bdy_end:
(Jest to akurat funkcja specjalna więc jej tu nie opiszę.)
<frame_end>
Co do funkcji hit_a itd. warto wspomnieć o wszystkich możliwych
kombinacjach klawiszy:
hit_a - oznacza
przyciśnięcia ataku
hit_d - obrony
hit_j - skoku
hit_Fa - obrony+kierunku+ataku
hit_Ua - obrony+góry+ataku
hit_Da - obrony+dołu+ataku
hit_Fj - obrony+kierunku+skoku
hit_Uj - obrony+góry+skoku
hit_Dj - obrony+dołu+skoku
hit_Ja - obrony+skoku+ataku
Warto wspomnieć o podstawowych klatkach, jakie powinna mieć każda
postać. Są to:
<Frame>
0 ? standing, <Frame> 5 ? walking,
<Frame> 9
? running, <Frame> 12 - heavy_obj_walk,
<Frame> 16 -
heavy_obj_run, <Frame> 19 - heavy_stop_run,
<Frame> 20 / 25
- normal_weapon_atck, <Frame> 30 - jump_weapon_atck,
<Frame> 35 - run_weapon_atck, <Frame> 40 -
dash_weapon_atck, <Frame> 45 - light_weapon_thw
<Frame> 50 - heavy_weapon_thw, <Frame> 52 -
sky_lgt_wp_thw,
<Frame> 55 - zwanweapon_drink, <Frame> 60 /
65 ? punch,
<Frame> 70 - super_punch, <Frame> 80 -
jump_attack,
<Frame> 85 - run_attack, <Frame> 90 -
dash_attack,
<Frame> 95 - dash_defend, <Frame> 100 / 102
/ 108 ? rowing,
<Frame> 110 ? defend, <Frame> 112 -
broken_defend,
<Frame> 115 - picking_light, <Frame> 116 -
picking_heavy,
<Frame> 120 ? catching, <Frame> 20 / 25 -
normal_weapon_atck, <Frame> 130 / 133 - picked_caught,
<Frame> 180 / 186 ? falling, <Frame> 200 ?
ice,
<Frame> 203 ? fire ,<Frame> 207 ? tired,
<Frame> 210
? jump, <Frame> 213 / 214 ? dash, <Frame>
215 ? crouch,
<Frame> 218 - stop_running, <Frame> 219 -
crouch2,
<Frame> 220 / 222 / 224 / 226 ? injured,
<Frame> 230 / 231
? lying ,<Frame> 232 - throw_lying_man,
<Frame> 399 ? dummy
Wszystkie te nazwy powinny być zrozumiałe pod warunkiem, że czytacie
ten poradnik od początku. Gdybyście czegoś nie rozumieli wystarczy
sprawdzić daną klatkę i obejrzeć przypisany jej rysunek. Powinno to
rozwiać wasze wątpliwości.
FUNKCJE
SPECJALNE W KLATKACH
Przejdę teraz do funkcji specjalnych w klatkach. Pierwsza i najprostsza
z nich to funkcja bdy.
bdy: - początek funkcji
kind: 0 (kind jest zawsze 0 (jest
wyjątek ale o nim później)x: 21 y: 18 w: 43 h:
62(koordynaty (punkt
startowy, wysokość, szerokość)
bdy_end:
To jest jak widzicie baaardzo trudne. Funkcja jest używana, aby
określić obszar w który należy uderzyć aby postać odniosła
obrażenia
(bdy=skrót od body=ciało).
INTERAKCJA
Kolejna funkcja to funkcja itr (interaction=interakcja(wpływ na
otoczenie jakby ktoś nie wiedział).
Jest trudniejsza, ponieważ występuje kilka jej typów.
Jednakże
prawdopodobnie będziecie korzystali tylko z jednego bądź
dwóch.
Typ pierwszy to zwykłe uderzenie.
itr:
kind: 0
x: y: w: h: (miejsce gdzie zostanie zadane uderzenie )dvx: dvy: (jak
zachowa się przeciwnik po uderzeniu = odrzut ) vrest: ( lub arest:
)(określa czas po jakim ten sam atak może uderzyć ponownie postać
(vrest jest jeśli bijesz wielu przeciwników arest jeśli
jednego (nigdy
nie użyłem arest więc nie wiem jak działa)
fall: każda postać ma 70 punktów upadku. Każde uderzenie
zabiera ich
trochę. Poniżej macie pewne wartości ( wartość parametru fall, ilość
ciosów do przejścia w Dance of Pain, ilość ciosów
do upadku)
20 - 3, 4
30 - 2, 3
60 - 1, 2
70 - 1 (od razu upada)
bdefend: podobne do fall tyle że jest 10 punktów. Kiedy
zejdą poniżej
zera przeciwnik który się broni przejdzie do klatki broken
defend.
injury: ilość punktów życia odebranych wrogowi.
zwidth: jest to szerokość ataku w kierunkach góra
dół. Nie umiem tego bardziej zrozumiale wytłumaczyć
effect: jaki efekt wywoła atak. Poniżej umieszczam listę.
itr_end:
Lista efektów:
0. Normalny atak
1. Krew
2. Ogień
3. Zamrożenie
4. Działa jak odbijająca Johna
5. Jest to taki sam efekt jak byśmy w ogóle nie napisali
effect. W grze nie jest użyty
20. Zapala, odporność na efekty 20, 21. Np. użyte w każdej płonącej
postaci i w ogniu, który zostawia Firen, kiedy robi ognisty
bieg.
21. Zapala, odporność na efekty 20, 21. Np. ognisty bieg
22.Zapalam, eksplozja. dvx, dvy muszą być negatywne ponieważ inaczej
wciągnie postać do środka. Np. wybuch Firena.
23. To samo, co wyżej tyle, że nie zapala. Np. wybuch Juliana.
30. Zamrożenie. Zamrożone postacie są odporne na ten efekt. Np. Lodowe
kolumny Freeza.
40. Nie wiem co to jest (:P)
Kolejny rodzaj interakcji to łapanie.
itr:
kind: 1
(obszar)
caughingact: (tutaj podajemy 2 numery klatek do jakich przejdzie nasza
postać po złapaniu (jedna dotyczy łapanie od przodu druga od tyłu))
caughtact: (to samo tyle, że chodzi o klatkę do której
przejdzie
złapana postać
itr_end:
Używamy
Podniesienie broni:
itr:
kind: 2
x: y: w: h: (obszar)
vrest: 1 (zawsze)
itr_end:
Używamy w pierwszej klatce uderzenia pięścią (zwykłego uderzenia (bo
np. Rudolf rzuca szriukenem ) )
Następna to łapanie postaci która nie robi Dance of Pain:
itr:
kind: 3
x: y: w: h: (obszar)
caughingact: caughtact: to samo co w kind: 1
itr_end:
Używane w klatkach Louisa kiedy próbuje złapać postać.
Kolejny to uderzenie jakie wykonuje twoja postać po rzuceniu przez
kogoś.
itr:
kind: 4
?
Stawiam 3 kropki ponieważ reszta funkcji została opisana w kind: 0, a
są takie same. W razie wątpliwości patrz kind: 0
?
itr_end:
Kolejna to uderzenie bronią. Jest o tyle dziwna że musi się odwoływać
do siły danej broni. Dlatego wartości powinny być zawsze takie same
(zaraz je podam)
itr:
kind: 5
x: y: w: h: (obszar)
dvx: 8 (zawsze)
fall: 20 (zawsze)
bdefend: 16 (zawsze)
injury: 789 (zawsze)
itr_end:
Kolejna to informacja dla innych postaci, że należy wykonać Super
Punch, czyli atak kończący np. uderzenie pałką Johna w góre.
itr:
kind: 6
x: y: w: h: (obszar)
vrest: 1
itr_end:
Jest to używane w klatkach Dance of Pain oraz Broken Demence
Kolejny typ to podnoszenie broni podczas turlania
itr:
kind: 7
Reszta jak w zwykłym podnoszeniu broni
itr_end:
Kolejny to leczące kulki (np. Johna)
itr:
kind: 8
x: y: w: h: (obszar)
dvx: numer klatki do której przejdzie kulka po uleczeniu
kogoś
injury: ilość hp możliwych do wyleczenia. Zazwyczaj 100
Kolejna to tarcza odbijająca pociski. WAŻNE! Nie używać w postaciach.
Użyć kind: 0 /effect 4
itr:
kind: 9
?
itr_end:
Nigdy nie używałem. Nie rozumiem tego do końca.
Kolejny rodzaj jest wykorzystany w klatkach fletu Henrego
itr:
kind: 10
x: y: w: h: (obszar)(wszystkie bronie i postacie unoszone są do
górnej krawędzi tego obszaru
vrest: 1
injury: niska wartość ( kind: 10 automatycznie zabiera przeciwnikowi
życie więc spokojnie możemy zostawić to w spokoju)
zwidth: patrz kind: 0
itr_end:
kind: 11 sprawia że przeciwnik przebywa cały czas w klatkach falling.
Jednak kind: 10 ma ten sam efekt więc kind: 11 jest niepotrzebny.
Następny rodzaj tylko blokuje drogę
itr:
kind: 14
x: y: w: h: (obszar)
vrest: 1
itr_end:
Używany np. w kamieniu czy lodowej ścianie Freeza.
itr:
kind:15
?
itr_end:
Użyty w wichurze Freeza, odpowiada za wirowanie.
itr:
kind: 16
?
itr_end:
To samo, co wyżej tyle, że odpowiada za zamrażanie.
NO! To tyle o interakcji.
Kolejna funkcja, którą się zajmę to bpoint.
Odpowiada za pasek krwi na twarzy postaci.
bpoint:
x: y: (pozycja)
bpoint_end:
Kolejna, bardzo ważna to point, który odpowiada za
zachowanie broni w rękach:
wpoint:
kind: (1 używamy do wszystkiego, oprócz wypuszczania broni z
ręki bo do tego jest kind: 3)
x: y: Punkt w którym postać trzyma broń.
weaponact: Określa jak zachowa się broń podczas trzymania przez postać.
(numer klatki)
attacking: od 1 do 4. Określa, jaki atak wykonuje broń. Jest to
odnośnik do pliku broni.
cover: 1=broń ukryta 0=broń widoczna
dvx: dvy: dvz: wykorzystane przy ruchu. Jeśli chcesz upuścić broń z
zerowymi koordynatami używasz wpoint / kind: 3
Point to to, na co czekaliście: tworzenie obiektów:
opoint: początek
kind: 1 dla wszystkiego, 2 dla
<b>lekkich</b> broni.
x: y: gdzie pojawia się obiekt
action: numer klatki, w której zostanie aktywowany obiekt
dvx: dvy: impuls początkowy
oid: numerek obiektu (z pliku data.txt)
facing: 0 jeden obiekt z przodu (pozytywny dvx oddala od postaci) 1
jeden obiekt z tyłu. Liczby dwucyfrowe: 10: tu był jakiś kruczek, ale
nie pamiętam. Pierwsza liczba określa ilość obiektów, druga
kierunek (0
przód, 1 tył, 2 nie wiem )
opoint_end: koniec
Jest jeszcze cpoint, ale dodam go innym razem (tak tak nie skończyłem
jeszcze tego pisać )
Staty (stany postaci)
0 - stanie, reakcja na wszystkie klawisze i przejście do standardowych
klatek (podałem już
1 - chodzenie (prędkość ustalana automatycznie, według bmp_part),
reakcja na to samo, co w 0
2 - bieg reakcja na wszystkie klawisze i przejści do odpowiednich
klatek, prędkość z bmp.
3 - atak pięścią z tym statem używana jest interakcja
4 - skok, reakcja na strzałki lewo- prawo (zmienia ustawienie postaci)
i klawisz ataku
5 - dash, czyli atak w biegu
6 - rowing
7 - obrona
8 - przełamana obrona
9 - łapanie, jeśli w klatce jest cpoint trzeba użyć state: 9 żeby
działało bez problemu
10 - złapany do wszystkich klatek, w których postać jest
złapana (brak kontroli nad postacią
11 - uderzony brak kontroli nad postacią (standardowej)
12 - spadanie
13 - lód może być uderzony przez przyjaciół,
pierwsze uderzenie rozbija lód
14 - leżenie ciekawy state, gdyż można go użyć do ruchu po śmierci
postaci, ignorowany przez komputer.
15 - inny, brak specjalnych właściwości
16 - uderzony 2 ( nie wiem po co)
17 - picie z butelek
18 - płonięcie. Interakcja może wpływać na przyjaciół!
19 - ognisty bieg. Możesz ruszać się na osi z ale nie skrzywdzisz
przyjaciół
100 - uderzenie w ziemię. Jest użyte w dash ataku louisa z dużym
parametrem wait:. Za parę dni opracuje ten state dokładnie.
301 - odpowiada za atak, przy którym można poruszać się na
osi z. Patrz: Deep - Dashing Strafe (bieg z mieczem?)
400/401 - teleport Woodyego 400 teleport do najbliższego wroga na
dystans 121 pikseli, 401 do najdalszego przyjaciela na dystans 60
pikseli
500/501 - przemiana Rudolfa. Wytłumaczę później.
1000 - odpowiada za zachowanie się lekkiej broni w powietrzu
1001 - l. broń w ręce
1002 - rzucona l. broń
1003 - l. broń odbijająca się od ziemi (nie jestem pewien)
1004 - lekka broń na ziemi
1700 - leczy 10 hp (tylko z ciemnego paska) to samo co itr/kind: 8
2000 - ciężka broń w powietrzu
2001 - c. broń w ręce
2004 - rzucona c. broń
3000 - lecąca kulka. Po uderzeniu z innym atakiem który ma
state: 3000 atak jest niszczony
3001 - używane w klatkach uderzenia w coś. To samo co 3002 i 3004 więc
ich nie opiszę
3003 - odbicie ataku (chodzi o atak ze statem 3000)
3005 - atak bez cienia. Najsilniejszy, niszczy wszystkie inne.
3006 - super atak. Niszczy 3000 ale jest niszczony przez 3005
80xx - (xx to id postaci z pliku data.txt) przemiana w wybraną postać
(tutaj jest bug i trzeba do wszystkich numerów
obrazków (pic dodać 140... (muszę przyznać że ten state
zawsze mi się przydawał )
9995 - transformacja w postać o id: 50 (Louis EX)(BTW: id tłumaczyłem w
części z opoint: więc jeśli czytasz od końca to tam zajrzyj)
9996 - zbroja louisa. Aktywowane: są 4 razy id 217(i lecą na boki) i
raz id 218 (i zostaje w środku). Mogą "skrzywdzić" twoją postać.
9997 - wiadomości max 80x80 z tego co pamiętam. Jeśli aktywujesz
opointem musisz dać dvy: 550 bo inaczej będzie spadać .
9998 - usunięcie obiektu z gry. To samo co next: 1000 ale jeśli
pracujesz z cpointami i broniami to lepiej użyć tego.
9999 - patrz 15.
Przemiana rudolfa:
Potrzebny będzie cpoint, ale chwilowo nie wiecie co to. Podpowiem że w
klatkach dotyczących trzymania wroga trzeb umieścić odnośnik do klatki
z transformacją.
Klatka musi mieć:
state: 9
cpoint z wartościami : vaction: 181 (żeby przeciwnik przeszedł do
klatki falling)throwvx: 10 throwvy: -5 (żeby przeciwnik nie została w
tym samym miejscu) throwinjury: -1 (odpowiada za samą transformację
Tyle. Jesteście już inną postacią. Z powrotem zmieniacie się przez
kombinację D+J+A. Tak jest niestety w kodzie gry.
Żeby przemienić się w postać którą już byliście trzeba:
stworzyć jedną klatkę z state: 500. Stworzyć drugą klatkę z state 501.
Tyle. Warto uwzględnić w tej drugiej next: 999 ale nie jest to
konieczne. (500 odpowiada za blokadę w razie gdybyś nie był jeszcze
żadną inną postacią (wrócisz wtedy do klatki standing)