Děkujeme Vám, že máte zájem stahovat soubor:
Vyčkejte prosím, až uplyne odpočet, poté můžete začít stahovat:
UPOZORNĚNÍ: Tento díl příručky používejte, pouze pokud jste zvládli základy.
Jistě jste si všimli, že mezi návodem pro začatečníky a tímto návodem uteklo hodně času. Za to se omlouvám, ale i Warcraft je hra, která se časem může omrzet. Navíc se ve světě objevilo pát zajímavých herních pecek (World of warcraf, GTA:SA atd...), takže na tohle nějak nebyl čas. Snad vám tento návod pomůže i tak.
Protože základy už zvládáte, nebudu zde popisovat co přesně máte udělat, ale budu psát jen názvy událostí, podmínek, atd. (samozřejme, uvedu i pár příkladů, ale jen pár)
OBSAH:
A) SEZNAM
1) seznam událostí
2) seznam podmínek
3) seznam činností
4) seznam proměnných
B) PŘÍKLADY
1) základ používání proměnných
2) otevíraní brány, funkce if/then/else
3) Přeskočení animace
C) DODATEK
A) SEZNAM:
1) Seznam událostí:
Map initialization - ihned po spuštění mapy.
Zničitelný objekt - destructible dies - spustí spínač po zničení daného objektu.
Zničitelný objekt - destructible within region dies - to samé, akorát jakkýkoliv objekt v oblasti.
Dialog - Dialog button click - pro spuštění musíte vybrat určitou volbu v dialogovém okně (v misi za stráže temných elfů, ta kapitola kde potkáte Kaela a máte se rozhodnou jestli půjdete přes nebo kolem bašty nemrtvých).
Hra - time of day - po dosažení určitého času (in game, ne reálného).
Hra - value of real variable - proměnná xxx má danou čís. hodnotu.
Hra - game load - po nahrátí hry.
Hra - game saved - po uložení hry.
Hra - Hero abilities button clicked - nevím, ale asi po použití libovolné schopnosti libovolného hrdiny.
Hra - build structure button clicked - nevím, ale nejspíš po použití schopnosti budovy nebo vybrání pro její stavbu. (u sedláka)
Hráč - Chat messange - Poté, co hráč xxx napíše yyy
Hráč - Cinematic skipped - Hráč xxx stiskne [esc].
Hráč - Selection event - Hráč xxx vybere/zruší výběr jednotek.
Hráč - Keybord event - Hráč xxx stiskne/uvolní šipku.
Hráč - Properties - Hráč xxx má yyy daných surovin.
Hráč - Alliance change (any) - hráč xxx provede změnu spojenců/nepřátel.
Hráč - Alliance change (specific) - hráč xxx provede danou změnu spojenců/nepřátel.
Hráč - Victory - hráč xxx vyhraje.
Hráč - Defeat - hráč xxx prohraje.
Hráč - Leaves Game - hráč xxx opustí hru (při multiplayer).
Čas - Time elapsed - nevím, ale myslím, že po určité době hry.
Čas - Periodic event - Každé, např. 2, vteřiny.
Čas - Timer expires - časovač (proměnná) má hodnotu 0 (vyprší odpočítávání).
Jednotka - Specific unit event - daná jednotka něco udělá (použije kouzlo, zemře, atd.)
Jednotka - Player owned unit event - to samé, akorát se jedná o libovolnou jednoku hráče xxx.
Jednotka - Generic unit event - ještě jednou to samé, jenže libovolná jednotka ve hře. (včetně neutrálních)
Jednotka - Unit enters region - Jednotka vstoupí do regionu.
Jednotka - Unit leaves region - jednotka opustí region.
Jednotka - Unit within range - nevím, ale myslím, že libovolná jednotka je v určité vzdálenosti od dané jednotky
Jednotka - Life - Život jednotky je menší/větší/stejný jako daná hodnota.
Jednotka - mana - Mana jednotky je menší/větší/stejný jako daná hodnota.
2) Seznam podmínek:
Jelikož jich je obrovské množství, uvedu zde jen základní kategorie, a ty nejdůležitější podmínky.
Boolean Comparison - základní a nejpoužívanější kategorie.
Zničitelný objekt - destructible is alive - zničitelný objekt je na živu.
Zničitelný objekt - destructible is death - zničitelný objekt je mrtvý
Zničitelný objekt - destructible is invulnerable - znič. objekt je nezranitelný
Prostředí - point is blighted - region je zasažený pohromou (aspoň myslím)
Hra - Map flag is set - byla použita volba znevýhodnění, viditelnost (při startu mapy) pevné spojenectví, atd.
Hra - Custom campaing button is visible - tlačítko xxx vlastní kampaňe je viditelné ( výběr mapy).
Hra - Creep camp display is on - viditelnost neutrálních tábořišť je zapnutá.
Hra - Saved-game exist - existuje uložená hra s názvem xxx.
Herní paměť - týka se proměnných.
Hrdina - hero has item - Hrdina xxx má předmět xxx.
Hrdina - hero has item of type - Hrdina xxx má předmět typu xxx.
Hrdina - Expirence is disabled for hero - Získávaní XP pro hrdinu xxx je zapnuto.
Předmět - Týká se předmětů.
Tady je několik méně důležitých proměnných, tak je psát nebudu.
Úkol - Quest requirement is completed - požadavek úkolu je splněn.
Úkol - Quest is enabled - Úkol je zapnutý.
Úkol - Quest is completed - Úkol je hotový.
Úkol - Quest is Failed - Úkol je neslněn.
Úkol - Quest is discovered - Úkol je objeven.
Úkol - Quest is required - Úkol je požadován.
Další nepoužívané proměnné.
Jednotka - Unit Clacification check - jednotka xxx je např budova.
Jednotka - Unit type clasification check - jednotka typu xxx je např. budova.
Jednotka - Unit in group - jednotka xxx je vybraná.
Jednotka - Unit in regon - jednotka xxx je v regionu.
Jednotka - Unit is alive - jednotka xxx je na živu.
Jednotka - Unit is death - jednotka xxx je mrtvá.
Jednotka - Unit is paused - jednotka xxx je pozastavena.
Jednotka - Unit is hidden - jednotka xxx je skrytá.
Jednotka - Unit is an illusion - jednotka xxx je iluze (např odraz pána mečů)
Jednotka - Unit sleeps - jednotka xxx může spát.
Jednotka - Unit sleeps at night - jednotka xxx může spát v noci.
Jednotka - Unit sleeping - jednotka xxx spí.
Jednotka - Unit genrates alarm - jednotka xxx umí spustit alarm.
Jednotka - Unit is begin transported - jednotka xxx začala právě být transportována.
Jednotka - Unit is in transport - jednotka xxx je tansportována.
Jednotka - Unit selected by player - jednotku xxx vybral hráč xxx.
Jednotka - Unit belongs to an ally of player - jednotka xxx je spojenec.
Jednotka - Unit belongs to an enemy of player - jednotka xxx je nepřítel.
Jednotka - Unit has specific buff - jednotka xxx je pod vlivem daného kouzla/aury/schopnosti.
Skupina jednotky - unit group is emty - Skupina jednotek je prázdný.
Skupina jednotky - unit of unit group are in region - Jednotky ve skupině sou v oblasti.
Skupina jednotky - unit of unit group are death - Jednotky ve skupině jsou mrtvé.
Viditelnost - Fog of war enabled - Mlha války zapnutá.
Viditelnost - Black mask enabled - Černá maska zapnutá.
Viditelnost - Unit is visible to player - jednotka xxx je pro hráče xxx viditelná.
Viditelnost - Unit is invisible to player - jednotka xxx je pro hráče xxx neviditelná.
Viditelnost - Unit fogged to player jednotka xxx je pro hráče xxx v mlze. (nebo tak něco)
Viditelnost - Unit is masked to player - jednotka xxx je pro hráče xxx maskována (nebo tak něco)
Viditelnost - point visible to player - Hráč xxx vidí oblast xxx.
Viditelnost - point fogged to player - Oblast xxx je v mlze pro hráče xxx.
Viditelnost - point masked to player - Oblast xxx je pro hráče xxx maskována.
Ability Comparision - Schopnost rovná/nerovná se schopnost.
Buff Comparision - Aktivní schopnost rovná/nerovná se aktivní schopnost.
Dialog Button Comparision - Dialogové tlačítko bylo zmáčknuto (viz spínače).
Game Dificuly Comparision - Herní obtížnost.
Game Speed Comparision - Herní rychlost.
Melee AI Comparision - Úroveň umělé inteligence.
And - A, používá se, pokud musí platit více podmínek (má význam hlavně při použití Or - viz), dá se použít stromovitě (několikrát v jedné podmínce)
Or - Nebo, používá se, pokud musí platit jen některá z podmínek, dá se použít stromovitě (několikrát v jedné podmínce)
And, Multiple condition - Všechny podmínky musí být splněny.
Or, Multiple Condition - Musí být splněna jakákoliv podmínka.
3) Seznam činností:
Činnosti obsahují největší množství položek, takže je zde nemá cenu vypisovat. Sám název jednotlivých činností napovídá, k čemu co je. Jako vždy to chce trochu odvahy... pokud si budete subor ukládat postupně podle stádia vývoje do dalších souboru (např pouze terén, pak i s jednotkama...) tak nemůžete nic pokazit... Navíc u každého návodu budu popisovat co která použitá činnost dělá. Další věc: určit, které činnosti jsou důležitější než jiné je téměř nemožné, protože je to asi to samé, jako by jste se rozhodovali, jestli je důležitější mozek nebo nervy...
4) Seznam proměnných
Proměnné se používají například tehdy, když je nutné nějakou činnost provést víckrát (např. přemístit každou jednotku, která vejde do oblasti xxx), nebo, pokud potřebujete jistou variabilitu (např pouze ta jednotka, která jako první vstoupí do oblasti xxx bude moci spustit další spínače). Pokud máte českou verzi hry, stačí si přečíst názvy a už víte, co která proměnná nahrazuje, stejně ale uvedu tři základni, s nimiž se setkáte i jinde (programovací jazyky). Spousta věcí se dá vyřešit jak s použitím proměnných, tak přímou definicí, nicměně u proměnných je případná změna mnohem snazší -když máte složitý a dlouhý spínač a pak změníte jednotku, musíte ji znovu určit pro každou činnost, podmínku nebo událost. Pokud ale použijete proměnnou, změníte pouze tu činnost, která ji definuje... tzn často i jedinný řádek oproti několika desítkám dalších. Navíc, často tatáž jednotka vystupuje ve více spínačích.
PS: věnujte pár vteřin pořádnému pojmenování, které bude krátké ale výstižné... jméno proměnné AC13G nebo promenna1 vám nic neřekne (pokud nemáte propracováný seznam zkratek a kódů, což ale asi nemáte, protože si čtete tento návod :) ), ale číst jméno o délce tohoto odstavce taky není praktické, takže si najděte způsob, který vám bude vyhovovat (např UnitEnter3, Rexxar, Stopky...)
Logický (boolean)- True/false - proměnná má hodnotu buď pravda (true) nebo nepravda (false). I když se to třeba nezdá, je to možná nejdůležitější proměnná vůbec (neříkám že nejpoužívanější).
Celočíselný (Integer) - proměnná, jejíž náplní je libovolné číslo (lze použít např jako hodnotu životů nebo počet jednotek v oblasti). !! pouze celá čísla !!
Přirozený (real) - Rovněž proměnná obsahující čísla, tentokrát ale mohou být i desetinná, lze vybrat některou z voleb (zpoždění úkolu kampaně, šířka buňky, standartní otočení,sklon (atd.) kamery, nebo nádherné číslo pí (3,14159265....). =)
plus další...
B) PŘÍKLADY
Do příkladů se pokusím zahrnou co nejvíc možností, aby bylo vše snadněji pochopitelné, takže nebudu dělat žádnou smysluplnou kampaň. Dodržujte označení, které používám, aby jste věděli, kterou proměnnou nebo oblast mám na mysli.
1) Základ používání proměnných
1) smažte obsah standartního spínače (ale spínač nemažte - jinak budete muset vytvořit jiný spínač se stejným jménem
2) vytvoříme 2 oblasti, které si pojmenujeme Enter1 (zkráceně E1) a Enter2 (E2). Poté do oblasti E1 umístíte sedláka a někde mimo tyto dvě oblasti (ale jen kousek od nich) umístěte rytíře.
3) vytvořte si proměnné Enter (oblast), Sedlak, Rytir (obojí Jednotka)
4) Jako událost si nastavte map initialization, jako podmínku vyberte Boolean comp. a
v ní volbu Unit in region. Jako oblast vyberte oblast Enter1, jako jednotku sedláka.
5) Ještě jednu podmínku, tentokrát ale místo sedláka vyberte rytíře a místo true dejte false (nebo místo rovná se dejte nerovná se). Rovná se TRUE (pravda) má stejný význam jako nerovná se FALSE (nepravda). Tudíž je jedno, který způsob budete používat... záleží poze na vašem pocitu.
6) Teď je na řadě činnost: Set Variable - vyberte proměnnou Enter a jako oblast vyberte oblast Enter1. Vytvořte stejnou činnost, hned dvakrát, a přiřaďte proměnným sedlak a Rytir odpovídající jednotky. Činnost Set Variable přiřazuje proměnným hodnotu. Dokud ji nepoužijete, bude mít ta která proměnná pořád počáteční hodnotu. Nyní tedy mají proměnné Enter, sedlak a Rytir hodnoty, ktereépotřebujeme a tak je muzeme dale využít.
7) Spínač Pohyb, jako událost: čas - periodic event nechte nastaveno na 2 sec, podmínka Boolean comp. - unit in region s hodnotou true a pro definici použijte proměnné.
8) činnost Jednotka- Issue order targeting A Point a pomocí proměné zadejte sedlákovi, aby šel do druhé oblasti. Nezapoměňte na TURN OFF. (s tím počítám automaticky, dávejteho jako první činnost ve spínači (pokud ho není nezbytně nuté dát až po nějakém čase... )
9) Nový spínač Oblast. Událost: vstup jednotky do oblasti Enter2 a podmínka: jednotka v oblasti je proměnná Sedlák. Činnost Set Variable a proměnnou ENTER nastavte na oblast Enter2
9) jako poslední krok pošlwte proměnnou rytir do oblasti definované proměnnou Enter.
Zkuste experimentovat... přidejte dlaší oblasti, jednotky, nebo umístěte rytíře do oblasti Enter1 a pozorujte, co se bude dít. Taky můžete zkombinovat tento a následující příklad do jednoho, budete tak moci presneji sledovat, co se deje (pokud vse spravne upravite).
2) Otevíraní brány, funkce if/then/else
1) Na mapu umístěte bránu, sud (stavitelné/zničitelné objekty) a 2 oblsti, na každé straně brány jednu.
2) Vytvořte si spínače s jmény BranaOpen (u tohoto spinače zrušte volbu Na začátku zapnuto - pravym tlačítkem myši), BranaClose, BranaStart a Text. Vytvořte si proměnnou rytir a na mapu umístěte rytíře.
3) Podle předchozího příkladu přiřaďte této proměnné jednotku.
4) ve spínači Text vytvořte událost čas - periodic event a nastavte na 1 sec.
5) Vytvořte činnost If/Then/Else.
Tato činnost je vlastně jakýsi malý spínač ve spínači obsahující vlastní podmínky a činnosti. volba Condition hraje roli podmínky a má i stejné možnosti (obsahuje stejné funkce, jako normální podmínka). První Action je činnost, která bude vykonána, pokud bude podmínka splněna, jinak bude vykonána druhá Action. Tato funkce je důležitá při tvorbě animací pro možnost jejich přeskočení. Toto použití rozepíšu dále také.
6) Nastavte podmínku u této funkce (volba condition) na Boolean/destructiblwe object is death a vyberte sud. jako první činnost(akci) dejte spínače - turn on a vyberte spínač BranaOpen. Jako druhou činnost dejte Do Nothing. Vytvořte ještě jednou tu samou činnost se stejnou podmínkou, akorát místo Turn on vyberete turn off a necháte this trigger. Do třetice všeho dobrého to udělejte ještě jednou, tentokrát ale vyberte Transmission from unit, vyberte rytíře a jako text dejte třeba: Brána je odemčena.
ím jsme dosáhli toho, že dokud jakmile bude sud zničen, zobrazí se nápis Brána je odemčena. Dokud tomu ovšem nebude, nebude se dít nic. Ve stejnou chvíli, kdy se text zobrazí se i zprovozní spínač obsluhující otevírání brány. Navíc se tento spínač vypne, takže nás nebude otravovat opakující se hláška o odemčení brány.
8) Vytvořte proměnou Brana (Logický (boolean)) a hodnotu ponechte na FALSE. Ve spínači BranaOpen dejte jako událost vstup jednotky do jedné z oblastí u brány, podmínka bude boolean (proměnná brana se musí rovnat FALSE)a jako činnost dejte Zničitelný objekt - Open/close/destroy Gate a vyberte bránu. Ve spínači BranaOpen vytvořte činnost set variable tak, aby změnil hodnotu proměnné brana na TRUE.
V tomto kroku jsme vytvořili spínač, který bude ovládat otevírání brány.
9) U spínače BranaClose vytvořte události Periodic event (nastavte na 0.1 sec) a unit enters region (vyberte druhou oblast, než v předchozích bodech). Podmínka je boolean (brana se musi rovnat TRUE)
10) Činnost If/Then/Else, jako podmínku dejte aby se proměnná rytir nacházela v oblasti z předchozího bodu, jako první akci (pokud se rytir nachazi v te dane oblasti) dejte wait 0.1 sec, jako druhou činnost (ve všech ostatních případech) dejte wait 3 sec. Vytvořte novou činnost Zničitelný objekt - Open/close/... , vyberte opět bránu a změňte otevřít na zavřít. Nakonec vytvořte činnost, která změní proměnnou brana opět na FALSE.
Tyto dva kroky bránu opět zavírají. Pro běžnou potřebu můžete vynechat v kroku 10) činnost If/the/else a dát místo ní jen Wait (nezapoměňte odstranit událost unit enters region)
Proměnnou brana jsme vytvořili proto, aby, pokud první oblastí projde více jednotek se tento script nespouštel pořád dokola, dokud se brána nezavře. zbytečně běžící spínače by jen zatěžovaly PC. (ikdyž jen mírně). Pokud chcete, aby se brána otevřela při vstupu do obou oblastí, vytvořte buď znovu stejné spínače, akorát přehodíte oblasti, a nebo dáte jako spínač, aby se jednotka nacházela v oblasti. Taky nemusíte pro toto používat proměnnou jednotky, ale stačí i triger unit.
3) Přeskočení animace
Přestože se může zdát, že jde o složitou věc, je tomu právě naopak. Stačí si vytvořit spínač, který bude obsahovat událost hráč - cinematic skipped, podmínku boolean/proměnná xxx (logická proměnná... tzn true/false) je false a v činnosti pak set variable, která této proměnné nastaví hodnotu true.
Do všech spínačů, které obsahují animaci dejte dvakrát činnost if/then/else, podmínka bude xxx se rovná true, v prvním bude jedna činnost spínače - run který spustí spínač, jehož úkolem bude přemístit jednotky, kameru atd do stavu, v jakém se má nacházet na konci animace a druhá činnost bude do nothing.
Co se týče druhé činnosti if/then... první činnost bude skip remaing action (přeskočit zbývající část spínače a druhá akce bude do nothing (nedělat nic).
Tohle vkládejte do spínače zhruba každé 2 sec. Jestliže budete mít činnost wait 5 sec, rozdělte ji na 3 díly a mezi ně vložte if/then...Pokud stisknete esc, pojede spínač normálně tak dlouho, dokud nelazene tyto dvě činnosti... pak už se můžeme kochat, jak se najednou ukončila aniamce přesně kdy jsme chtěli (s přesností dvou sec... proto to umísťovat tak často. Pokud by jste umísťovali třeba po 10 vteřinách, byla by animace přeskočitelná pouze jednou za 10 sec.)
Pokud máte v jedné mapě více animací, použijte por každou znich jinou proměnnou.
C) DODATEK
Za vzorec pro výpočet DMG jednotek v editoru bych chtěl poděkovat Tom4@pobox.sk.
Když si dosadíme za A "základní útošné číslo" např. 30
za B "útočné číslo na kostce" např. 10
a za C "počet stěn útočné kostky" např. 2
tak platí:
A + B = první číslo dmg (30 + 10 = 40)
A+ (B x C) = druhé číslo dmg (30 + 10 x 2 = 50)
Výsledný dmg vypadá takto: 40-50.
Věřím, že i tento návod vám pomůže v práci s editorem i přes značný časový odstup. Pokud bude zájem, možná napíšu ještě nějaký návod, jak na věci, které vám budou dělat problémy (pokud mi je ovšem napíšete). Až bude těchto příkladů více, vydám je jako samstatný návod.
PS: Pokud někde najdete chybu (nemyslím chybějící písmenko nebo interpukci) tak napište taky. Díky předem.
KONEC.