Nastavenie času a dátumu
Z Armed Assault nápověda
Úvod
Pomocou nasledujúcich pár príkazov môžete efektívne počas hrania meniť čas alebo dátum.
Ak vás nenapadá nič užitočné v súvislosti s týmito príkazmi, tak vám tu predhodím niekoľko nápadov.
Nastavenie času
Jedným z nich je napríklad zrýchlenie času v situácii keď sa hráč cez deň ocitne v zajatí nepriateľa a misia má ďalej pokračovať jeho uniknutím zo zajatia pod rúškou noci. Nikdo by predsa nečakal tých niekoľko hodín až sa v hre vystrieda slnko s mesiacom a tak môžete vytvoriť efektný kamerový záber na západný horizont, pričom použijete príkaz na zrýchlenie času - setAccTime.
Pre nastavenie správnej hodnoty (zrýchlenia) budete musieť trocha laborovať, pretože túto presnú hodnotu si budete musieť odvodiť sami od iných okolností - dĺžka záberu, rýchlosť západu slnka, denná doba, dĺžka hudby na pozadí atď.
Príklad:
setAccTime 2.678;
- čas bude zrýchlený 2.678 krát
Pred samotným spustením akcelerácie času je ale vhodné na začiatok záberu (odporúčam to pre všetky zábery) defaultne zadávať hodnotu 1.
Hráč môže totižto tesne pred danou scénou použiť ručné zrýchlenie času (pomocou klávesy +) a potom by tento záber bol zrýchlený ešte aj o túto hodnotu.
Čiže ak by mal hráč zrýchlenú hru 2x, celý záber by sa prehral zrýchleným časom 4.678 ...
... alebo využite príkaz pre zistenie aktuálneho zrýchlenia/spomalenia času - accTime.
Príklad:
_acc = accTime; if ( (_acc > 1) or (_acc < 1) ) then { setAccTime 1; sleep 0.1; hint "Nastavena defaultna hodnota casu."; } else { sleep 0.1; hint "Cas nieje nutne menit."; };
- do lokálnej premennej _acc bude načítaná aktuálna hodnota zrýchlenia/spomalenia času
- pomocou porovnania tejto hodnoty s defaultnou hodnotou 1 sa vyhodnotí podmienka typu boolean a na jej základe sa nastaví/nenastaví defaultná rýchlosť hry
Príkaz pre zrýchlenie času môžete samozrejme využiť aj na tzv. Bullet Time - spomalenie času.
Riešenie je úplne triviálne. Jednoducho zadáte iba hodnotu v intervale 0 ~ 0.999999999, pričom 0 je samozrejme úplné zastavenie hry.
Príklad:
setAccTime 0.1;
- čas bude spomalený na rýchlosť 0.1
Ďalším užitočným príkazom pre manipuláciu s časom je skipTime.
Pomocou tohto príkazu môžete presne posúvať/vracať čas v misii.
_cas = daytime; if ( _cas < 5 ) then { skipTime 4 };
- do lokálnej premennej _cas si načítame aktuálny čas v misii a porovnáme ho s hodnotou 5 (čiže ak bude hodnota menšia ako 5, v misii je noc/skoré ráno)
- ak sa teda podmienka vyhodnotí ako TRUE, čas v misii sa posunie o 5 hodín dopredu
Pomocou tohto príkazu môžeme čas taktiež posúvať dozadu. Realizácia je opäť jednoduchá:
skipTime -1;
- čas v misii bude posunutý o jednu hodinu späť
... to by bolo k nastaveniu zrýchlenia/spomalenia a posunu času. Čo takto ale čas resp. dátum nastaviť priamo.
Áno, samozrejme najjednoduchšie cez editor (menu Intel), ale ako zrealizovať presné nastavenie času už počas hrania priamo v misii ?
Nastavenie dátumu
Nič jednoduchšie - využijeme príkaz setDate ... podľa názvu by sa zdalo že sa dá nastaviť iba dátum, ale súčasťou poľa do ktorého zadáte čísla pre aktuálny dátum v hre sú aj prvky pre nastavenie aktuálneho času.
Tento príkaz je dobre využiteľný rovnako aj na samotnom začiatku misie. V editore totiž môžete nastavovať čas iba v 5 minútových intervaloch, ale pomocou tohto príkazu si môžete zvoliť napríklad čas 9:03.
Príkaz teda používa pole prvkov ktorých význam je nasledovný: [rok, mesiac, deň, hodina, minúta]
Príklad:
setDate [1978, 9, 20, 15, 33];
- v misii sme teda nastavili rok 1978, 9. mesiac, 20. deň v tomto mesiaci a čas 15:33
Ak vám ale nezáleží na presne nastavenom čase, napríklad v prípade našej misie keď je hráč zajatý a má sa pokúsiť o nočný útek, môžete mu po predelovej scéne nastaviť "nočný" čas v rozmedzí niekoľkých hodín.
Príklad:
setDate [2009, 11, 30, (ceil random 4), (random 60)];
- nastavili sme rok 2009, 11. mesiac a jeho 30. deň
- použitím kombinácie príkazov ceil a random dosiahneme vygenerovanie náhodného čísla v intervale od 0 do 4 (čo bude hodnota pre parameter hodina), pričom bude toto náhodne vygenerované číslo zaokrúhlené na najbližšie celé číslo
- a to isté platí aj pre parameter minút, pričom tu nám nezáleží na tom aby to bolo celé číslo (budú nastavené aj stotiny, tisíciny sekundy ... atď.)

