Autor: Restor Název: WE - Cinematiky (přesný timing)
Ako robit "presny timing" na cinematiky, kedze pouzivanie akcie "wait for x seconds" je presne asi jak bratislavska MHDcka. Zacnem z vostra - poznate funkciu Wait for x sec. alebo wait for x sec gametime. JE TO NA HOVNO! Kedze taky wait na 1 sekundu moze byt zhruba od 0,9-1,1 sekundy, blizzard to spravil dementne
Urcite si vsimnete, ze ked mate prvu scenu, neco tam spravite, a potom robite dalsie a dalsie, a ako je mapa vacsia a vacsia, tak tie prve sceny uz niesu az tak uplne presne, to je preto, ze tie waity sa neprisposobuju lagovaniu hry alebo ako by som to nazval. (ano, aj ten wait-gametime je naprd). Ako na to? Toto je tutorial velmi jednoduchy, a cely v GUI ako spravit presne casovanie (hlavne v bojovych a neviem akych pasazach je to treba, kde je potrebne co najpresnejsie casovanie a pouzivaju sa velmi male casove intervaly, kde je klasicky wait najviac naprd)
Viete co je to TriggerQueue (dalej len ako "TQ") ? Asi nie co? Ked sa pozriete do akcii, tak tam v sekcii Trigerov mate, ze Add trigger to TQ, remove trigger from TQ. No ten TQ je taky poradovnik triggerov, najprv prejde prvy trigger, ked sa ten vyradi zo zoznamu, tak potom pojde dalsi atd. (musi sa vyradit pomocou toho Remove trigger from TQ, nestaci ked len prebehnu vsetky jeho akcie)
A viete snad, co su to Timery, proste jak ked mate v kuchyni hodiny, ktore vam odpocitaju cas dokedy sa vam v mikrovlnke zohreje kakauko, tak toto je podobne. Samozrejme sa najviac pouzivaju v playable mapach, kde sa daju aj zobrazit vpravo hore atd, ale kedze cas v timeri je presny, a ne blby jak waity, tak pouzijeme namiesto kazdeho waitu timer.
Takze aky je vlastne ten tajomny system? Klasicka schema triggeru v cinematiku vypada ze
A: nech bezi unita sem
wait 5 sec
kill unita
create mrtvola
wait 5 sec
remove mrtvola atd.
Treba nam dva variable
Typ timer = napr. KAKAUKO
Typ triiger = napr. SPINAC
V tomto systeme hned na zaciatku kazdeho triggera (nie uplne kazdeho, taky trigger, ze ked dojde jednotka do lavy, tak skape, a nic ine ten triger nerobi, tak do takeho nie, proste len tam, kde by mali byt waity) treba dat akciu "Set Variable - Set SPINAC=This Trigger"
Najpodstatnejsia vec este je, ze vzdy, ked by mal byt niekde wait, pouzije sa akcia "Countdown timer - Start Timer KAUAUKO", kde si navolite pocet sekund, ktore chcete. Dalsie akcie supnete do noveho triggera, a zas, tam kde ma byt wait, date akciu s tym Timerom, co som pisal vyssie, a dalsie akcie za tym zas do noveho triggera, takze namiesto jedneho dlheeho triggera s 2 waitami, ktore su krive jak slak, budete mat 3 triggery. Nazvite ich napr. TriggerA, TriggerB a TriggerC
Takze budu vypadat asi takto
Trigger A
A: Set SPINAC=This trigger
nech bezi unita sem
Start timer KAKAUKO as One-shot that will expire in 5 sec
Trigger B
A: Set SPINAC=This trigger
kill unita
create mrtvola
Start timer KAKAUKO as One-shot that will expire in 5 sec
Trigger C
A: Set SPINAC=This trigger
remove mrtvola atd.
a dalsie akcie
Teraz tie tri triggery hodime to toho TQ
Spravte dalsi trigger, nazvite ho PORADOVNIK
E: co chcete
C: co chcete, to si treba setko navolit podla gusta
A: Clear the TQ (aj ked toto ani netreba, ale ja to tam davam)
Add Trigger A to TQ (ja davam ignoring conditions, a to v 99% v cinoch treba takto)
Add Trigger B to TQ
Add Trigger C to TQ
a este jeden trigger treba spravit, velmi jednoduchy, kamen tohto systemu, nazvite ho napr. SYSTEMOVY TRIGGER
Takze, mate ten PORADOVNIK trigger, v tom ste si spravili ten poradovnik triggerov (trigger queue po anglicky) , najprv sa ide exekutnut trigger A (prvy trigger sa spusti hned, kedze prednim v poradovniku nic neni, a tomto ten TQ je, ze nehladi na eventy (a tu ani na conditions) triggerov, ale len sa ich akcie spustaju)
Trigger A hned v prvej akcii da premennu SPINAC na seba, potom sa exekutne aj to dolezite z neho, a nakonci sa spusti Timer KAKAUKO, ten ked skonci, tak hned na to zareaguje SYSTEMOVY TRIGGER, ktory hned trigger A vyhodi z TQ, a moze ist na rad spinac B, ktory spravi to iste, a 5 sekund po nom ide na radu trigger C.
Jednoduche, co poviete? Takze budete mat plno kratkych triggerov, ale za to presne casovanie. Je na to aj nejaky uber JASS tutorial, ale tomu nerozumiem ani makke F. Este dve drobnosti
Nemusite samozrejme zas mat cely cinematic nahodeny iba v jednom TQ (teda poradovniku), kludne ako posledny trigger jedneho triggera PORADOVNIKU dajte dalsi PORADOVNIK_B, v ktorom zas nahadzete triggery do zoznamu, a spravite to iste vlastne. Nie je vynimkou ak v jednom taktomto TQ budete mat aj 30 triggerov, a to moze trvat fakt len dve tri minutky, takze toho bude dost, nezabudnite si tie triggery nazyvat tak, aby ste sa v tom vyznali, napr. aj ako spominane triggerA, triggerB atd...
Odporuca sa, kvoli mnozstvu triggerov, na koniec kazdeho triggera ktory sa uz nebude v hre viacejkrat spustat (takze okrem SYSTEMOVEHO_TRIGGERA) kazdy, TriggerA, TriggerB atd, aj PORADOVNIK, dat este custom script ze "call DestroyTrigger(GetTriggeringTrigger())", aby hra isla viacej plynule.
S tymto systemom sa inac aj daju robit lahsie Escape cinematikov, poznate to z kampane, ze date Esc, a cinematik sa okamzite skonci, tu staci len spravit trigger ze ked hrac stlaci esc, tak sa odstrania vsetky triggery z TQ (clear the TQ), tym padom bude TQ prazdny a uz nemoze akykolvek trigger z neho prebehnut. V pripade pouzitia waitov by sa muselo pred kazdym waitom checkovat, ci sa nestlacila esc, proste otrava.
Samozrejme ze presny timing sa da spravit aj inaksie, aj cez event game-time elapsed, alebo aj cez jass whatever, ale toto je pomerne jednoduche, co by mal zvladnut kazdy.
Edit by : e1f e1f@warcraft3.cz Editor neručí a nezodpovídá za kvalitu překladu
Myslim, že tohle je v celku zbytečné, wait funguje nejlip co může. Př: wait 5sec trvá 5 sec i ve skutečnosti a wait game time 5sec trvá 5 sec ve hře (když se ve hře podíváte nahoru doprostřed, běží vám tam čas a jedna hod je mín jak 1min :D (PS dá se to změnit)). Podle mě je tenhle návod nahouby
Rock_Win Witcher21.10.2013 20:58:25
já to nepochopil pls vysvětlete my to snadnějc :D
sgm 7.12.2011 20:36:36
Je to dobre, asi aj profesionalne ale nechapem tomu :D asi ostanem pri normal trigeroch
TheBus 1.12.2011 14:38:52
evylm
hustej link xD
Restor RednekLama22.11.2011 16:00:56
mnoo, ze som to pisal asi pred polrokom alebo kedy, o tom potom :-D, a ze sa to az teraz dostalo na stranku
anyway, je to mozno trochu zmatocne napisane. Mozno to prepisem do nejakej lepsej formy. Samozrejme ze pri tomto tutoriale je uz vhodne aby clovek uz vedel nejake tie zakladne veci o editore.