Nastupovanie do vozidiel
Z Armed Assault nápověda
Obsah |
Úvod
V tomto krátkom, ale určite zaujímavom tutoriále si ukážeme ako prikazovať a zároveň kontrolovať nastupovanie AI jednotiek do vozidiel a helikoptér.
Tieto úkony sa dajú samozrejme realizovať v hre poklepaním myšítka na dané vozidlo, ale to iba v prípade že je hráč veliteľom danej skupiny AI jednotiek.
Ak je ale iba členom nejakej skupiny, alebo potrebujete jednoducho v cutscéne zabezpečiť nastúpenie jednotiek do vozidiel, nezaobídete sa bez postupu ktorý si popíšeme ďalej.
Určenie pozícií vo vozidle a následný nástup
Na určenie pozícií vo vozidle do ktorého majú jednotky nastúpiť, použijeme niekoľko špecifických príkazov:
assignAsDriver, assignAsCommander, assignAsGunner, assignAsCargo
Pomocou týchto príkazov najskúr určíme konkrétnej jednotke na ktoré miesto má vo vozidle nastúpiť.
Nie každé vozidlo má ale napríklad určenú pozíciu pre veliteľa alebo strelca. Ak ste si neni istý danou pozíciou vo vybranom vozidle, jednoducho mrknite do tohto zoznamu, kde si nájdete druhy a obsaditeľné množstvá jednotlivých pozíci v jednotlivých vozidlách za všetky strany. Tento zoznam obsahuje iba oficiálne vozidlá z originálnej hry, takže ak máte neoficiálny addon, je lepšie mrknúť do jeho ReadMe súboru, kde by to pri kvalitných addonoch malo byť samozrejme uvedené.
My si teraz ukážeme príklad nastupovania skupiny AI jednotiek do pristaveného prázdneho Strykera. Niekde na skúšobnej mape si teda vytvorte prázdny Stryker s nastavením:
- Strana: Prázdný
- Třída: Obrněnci
- Jednotka: Stryker ICV (M2)
- Název: stk
Teraz neďaleko vytvorte niekoľko vojakov (nie hotovú skupinu) s takýmto nastavením:
- Strana: BLUFOR
- Třída: Lidé
- Jednotka: Posádka
- Název: w1 (vytvorte ešte druhú jednotku Posádka a označte ju w2)
Týto dvaja nám budú predstavovať posádku Strykera, preto boli vybraný ako Jednotka: Posádka. Zbytok jednotiek AI skupiny nastavíme ako obyčajných vojakov:
- Strana: BLUFOR
- Třída: Lidé
- Jednotka: Voják
- Název: w3 (a potom ešte vytvorte vojakov s označením w4, w5 a w6)
Skupinu AI jednotiek aj so Strykerom máme vytvorenú, môžeme si vytvoriť vlastný skriptík pre nástup s tradičným názvom "nastup.sqs":
w1 assignAsDriver stk w2 assignAsGunner stk w3 assignAsCargo stk w4 assignAsCargo stk w5 assignAsCargo stk w6 assignAsCargo stk [w1, w2, w3, w4, w5, w6] orderGetIn TRUE
Poznámka:
Jednotlivými príkazmi sme priradili každej jednotke pozíciu vo vozidle a až potom sme použili príkaz orderGetIn, ktorým bol vydaný samotný príkaz na nástup do vozidla.
A to je všetko. Ak si odskúšate spustiť tento skript pomocou jednoduchého zadania [] exec "nastup.sqs" do inicializačného políčka ľubovoľnej jednotky, uvidíte iba všetky AI jednotky pribehnúť ku Strykerovi a naskákať do vnútra.
Zjednodušený nástup do prepravného priestoru a kontrola nastúpenia jednotiek do vozidla
Druhá možnosť ktorá sa vám môže vyskytnúť pri editácii je taká, že čakáte na evakuačnú helikoptéru. Keď priletí a sadne na zem, začnete so svojou jednotkou nastupovať, ale ako zabezpečiť kontrolu toho, že všetky jednotky vašej skupiny sú už v prepravnom priestore helikoptéry a tá môže odletieť.
Tu je riešenie ...
Vytvorte si na mape niekoľko jednotiek spolu s hráčom (nie hotovú skupinu):
- Strana: BLUFOR
- Třída: Lidé
- Jednotka: Voják
- Název: aP (a potom ešte vytvorte vojakov s označením w1,w2, w3, w4)
Teraz vytvorte helikoptéru v dostatočnej vzdialenosti s týmto nastavením:
- Strana: BLUFOR
- Třída: Letectvo
- Jednotka: UH-60
- Speciální: Ve vzduchu
- Název: helina
A znova si skopírujte nasledovné riadky a vytvorte skript "nastup.sqs". Tento potom spustite cez inicializačné políčko ľubovoľnej jednotky a sledujte čo sa stane.
_list = [w1, w2, w3, w4, aP]
{_x assignAsCargo helina; [_x] orderGetIn TRUE} forEach _list
@{vehicle _x == helina} count _list == {alive _x} count _list
Hint "Hotovo !"
Poznámky:
V skripte sme si najskôr zadefinovali celú skupinu hráča (_list).
Následne na to je použitý príkaz forEach pre už určenú skupinu vojakov (_list) s príkazmi pre určenie miesta vo vozidle - helikoptére s názvom helina (assignAsCargo) a zároveň s príkazom orderGetIn pre nástup na tieto určené miesta.
Po týchto príkazoch nasleduje malá slučka ktorá kontroluje či sú všetci vojaci z určenej skupiny živý a v prepravnom priestore helikoptéry (vehicle).
Akonáhle sú teda všetci vojaci vo vnútri, v ľavom hornom rohu sa objaví hint - "Hotovo !".
Výhoda tejto kontroly spočíva v tom, že ak počas presunu k helikoptére zomrie niektorá z AI jednotiek skupiny, slučka bude kontrolovať iba počet (count) živých jednotiek pomocou príkazu alive.
Presun na určené pozície vo vozidle bez animácie nástupu
Iným druhom nastupovania do vozidiel je priamy presun jednotiek na určené pozície bez akejkoľvek animácie. Na toto slúžia príkazy : moveInDriver, moveInCommander, moveInGunner, moveInCargo
Pri použití týchto príkazov už nemusíme najskôr určovať každej jednotke kde bude jej miesto vo vozidle. Jednoducho iba určíme kam bude presunutá.
Táto metóda sa využíva hlavne pri zápisoch v inicializačných skriptoch ako je init.sqs, alebo počas cutscén, kde bol napríklad záber na skupinu AI vojakov bežiacich k helikoptére v diaľke. Po cutscéne sa tak môže hráč už so svojou jednotkou ocitnúť v štartujúcej helikoptére a nemusí sa starať o vydávanie príkazov svojim členom skupiny pre nástup. Využite je proste rozsiahle.
Ja tu teraz len uvediem malý príklad pre presunutie štvorice OPFOR vojakov (s názvami e1 až e4) do BMP2 (s názvom bvp):
e1 moveInDriver bvp e2 moveInGunner bvp e3 moveInCommander bvp e4 moveInCargo bvp
Pokročilejšie rozmiestnenie jednotiek vo vozidle
Toto bola ukážka použitia štandardných príkazov. Ak ale potrebujete pre svoju misiu špeciálne riešenie, mrknite na týchto pár riadkov ...
Ak potrebujete umiestniť hráča napríklad v prepravnom priestore Blackhawka na presne určené miesto - sedačku, použite príkaz moveInCargo [pole] ...
aP moveInCargo [helina, 3]
Týmto šikovným príkazom umiestnite hráča na pravú stranu hneď k oknu. Keď si predplatil miesto pri okienku tak nech ho aj dostane, nie ? :o)
Na priloženom obrázku je potom vidieť rozmiestnenie jednotlivých pozícií s ich konkrétnymi označeniami.
To nieje ale všetko. ArmA: Armed Assault ešte využíva iný špeciálny príkaz na presné určenie miesta vo vozidle.
Jedná sa o príkaz moveInTurret a ako už jeho znenie napovedá, jedná sa o umiestnenie jednotky na konkrétny palebný post vozidla. Viac nájdete v popise tohto príkazu.
Tu je príklad kódu korešpondujúci s označením na obrázku:
aP moveInTurret [helina, [0]]
aP moveInTurret [helina, [1]]

