Polish

Zaloguj się / Zarejestruj się 

Witaj. Zarejestruj się jeżeli nie posiadasz jeszcze konta.

Nazwa użytkownika: Hasło: Zapamiętaj mnie

emo TEMAT: Prosty sposób na licznik kombosów/obrażeń

TEMAT: Prosty sposób na licznik kombosów/obrażeń 

2015/08/10 18:37 Prosty sposób na licznik kombosów/obrażeń #71
Tekst, którego autorem jest ViS ze starego forum.

Prosty przykład jak zrobić takie cudo i się przy tym nie narobić :) Właściwie jest to gotowy kod który wymaga jedynie wstawienia animacji.
Starałem się to uprościć jak to tylko możliwe.
Ten licznik działa poprawnie jedynie w walkach jeden na jednego. Ale można pokombinować i dostosować go do trybu drużynowego.
Licznik używa dwóch varów. Jednego do liczenia uderzeń, drugiego do obrażeń w procentach.
Zamiast vara do obliczania uderzeń można by użyć mugenowego gethitvar(hitcount) ale ponieważ nie ma nad tym kontroli i nie będzie on działał zgodnie z licznikiem obrażeń, lepiej zrobić własny licznik.

KOD DO STANU -2
[State -2];licznik obrażeń. dadaje obrażenia po każdym otrzymanym ciosie. stany 120-160 to stany blokowania ciosów, one są ignorowane.
type = VarAdd
trigger1 = time = 0 && gethitvar(damage) > 1 && (stateno != [120,160])
v = 10
value = (gethitvar(damage)*100/lifemax)

[State -2];licznik uderzeń. podobnie jak wyżej ale tu dodawane są otrzymane uderzenia.
type = VarAdd
trigger1 = time = 0 && gethitvar(damage) > 1 && (stateno != [120,160])
v = 11
value = 1

[State -2];wyświetlenie liczników. możemy dobrać dowolne triggery, wszystko zależy od tego kiedy chcemy je wyświetlać. zasadniczo jest to movetype != H
type = Helper
trigger1 = movetype != H
triggerall = var(10) > 1 && var(11) > 1
triggerall = numhelper(2090) < 2
ID = 2090
stateno = 2090
postype = left

[State -2];zerowanie liczników. powinno zawierać takie same triggery jak helper powyżej.
type = VarRangeSet
triggerall = time > 2
trigger1 = movetype != H && var(10) > 0 && var(11) > 0
first = 10
last = 11
value = 0

Całe obliczanie w zasadzie już mamy. zostaje jedynie zrobić helpera który ma wyświetlać co trzeba i wstawić animacje do plików z grafiką. Potrzebujemy:
- HITS
- % DAMAGE
- i cyferki od 0 do 9. numery animacji muszą być po kolei np. jeżeli animacja 300 oznacza 0 do dla 1 dajemy numer 301 itd.

Jeżeli mają być ruchome jak w starych MK musimy zrobić osobne animacje dla obu graczy.

KOD LICZNIKA
[StateDef 2090];licznik uderzeń/obrażeń
velset = 0,0
ctrl = 0
anim = 888

[State 2090, 0] ;osobne vary dla licznika zapamiętujące dane z momentu wywołania.
type = VarSet
trigger1 = time = 0
v = 10
value = root,var(10)

[State 2090, 0]
type = VarSet
trigger1 = time = 0
v = 11
value = root,var(11)

[State 2090, 1];hits
type = Explod
trigger1 = time = 0
anim = F(?+1*(teamside = 2));w miejsce ? wstawiamy numer animacji do hits. +1 oznacza następną animację w przypadku gdy używamy osobnych animacji.
ID = 2090
postype = left
pos = -30+(780*(teamside = 1)),100
bindtime = -1
ontop = 1

[State 2090, 1];%damage
type = Explod
trigger1 = time = 20
anim = F(?+1*(teamside = 2));to samo co wyżej ale do animacji damage.
ID = 2090
postype = left
pos = -60+(780*(teamside = 1)),125
bindtime = -1
ontop = 1

[State 2090, 2];jednostki do hits
type = Explod
trigger1 = time = 0
anim = F?+(10*(teamside = 2)+(var(11)%10)); w miejsce ? wstawiamy numer animacji z cyferką 0. tak samo do wszystkich pozostałych explodów.
ID = 2090
postype = left
pos = -70+(780*(teamside = 1)),100; z pozycjami trzeba trochę pokombinować. wszystko zależy od standardowego rozmiaru okienka.
bindtime = -1
ontop = 1

[State 2090, 2];jednostki do damage
type = Explod
trigger1 = time = 20
anim = F?+(10*(teamside = 2)+(var(10)%10))
ID = 2090
postype = left
pos = -130+(780*(teamside = 1)),125
bindtime = -1
ontop = 1

[State 2090, 3];dziesiątki do hits
type = Explod
trigger1 = time = 0
trigger1 = var(11) > 9
anim = F?+(10*(teamside = 2)+(var(11)/10))
ID = 2090
postype = left
pos = -85+(780*(teamside = 1)),100
bindtime = -1
ontop = 1

[State 2090, 3];dziesiątki do damage
type = Explod
trigger1 = time = 20 && var(10) > 9
anim = F?+(10*(teamside = 2)+(var(10)%100/10))
ID = 2090
postype = left
pos = -145+(780*(teamside = 1)),125
bindtime = -1
ontop = 1

[State 2090, 4]; 100% obrażeń. raczej mało użyteczne ale i tak może się zdarzyć :)
type = Explod
trigger1 = time = 20 && var(10) > 99
anim = F?+(10*(teamside = 2)+(var(10)/100))
ID = 2090
postype = left
pos = -160+(780*(teamside = 1)),125
bindtime = -1
ontop = 1

[State 2090, 5]; usuwanie starych liczników jeżeli miało miejsce nowe kombo.
type = RemoveExplod
trigger1 = time > 10 && numhelper(2090) > 1
id = 2090

[State 2090, 6]; usunięcie helpera po tym jak schowają się wszystkie explody.
type = DestroySelf
trigger1 = time > 10 && numexplod(2090) = 0
Ostatnio zmieniany: 2015/08/10 18:38 przez ARMOR_CAGE.
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.

emo TEMAT: Prosty sposób na licznik kombosów/obrażeń