Varování! Tento příkaz je zastaralý a byl nahrazen příkazem param!
Původní článek byl zanechán v nezměněné podobě.

BI do enginu Arma 3 přidala mnoho nových funkcí (v rámci Functions
Library 2.0) vycházejících z vlastních zkušeností při tvorbě misí pro
Arma série. Mrkněme na pár základních, ale zásadních.

První funkcí kterou bych doporučil okamžitě používat je BIS_fnc_param.
Díky této funkci vám odpadne spousta kontrol, které jste měli dělat
v každém skriptu či funkci. Je jakousi náhradou za kontroly typů, které
třeba umožňují některé z pokročilých programovacích jazyků.

Syntaxe je trošku divoká
([input,index,(defaultValue,data­Types,requiredCount)] call
bis_fnc_param)
, tak pojďme rovnou na příklad

[] spawn {
  _ied = [ _this, 0, objNull, [objNull] ] call BIS_fnc_param;
  _radius = [ _this, 1, 10, [0] ] call BIS_fnc_param;
  _side = [ _this, 2, west, [sidelogic] ] call BIS_fnc_param;
}

Uvnitř skriptu se předpokládají tři parametry (my jsme poslali prázdné
pole). Pojďme rovnou na první řádek. První dva parametry volání udávají
vstup a případný index, v našem příkladu jde tedy o nulu, což je první
prvek pole. Přeskočme třetí parametr a podívejme se na čtvrtý, který
polem udává, jaké typy parametrů volání přijímá (např.
[“”,[],0,objnull]). A pokud kontrolovaný vstup nesouhlasí, pak se do
proměnné nastaví právě třetí parametr. V tomto případě se navíc
zapíše do logu chybová hláška. Pokud proměnná není vůbec předána, pak
se výchozí parametr nastaví taktéž, ale bez zápisu chyby. Posledním
pátým parametrem lze zkontrolovat počet prvků, pokud je kontrolovaným
vstupem pole (opět s hláškou do logu v případě problémů).

Takže v našem příkladu se do proměnné _ied nastaví buď předaný
objekt na první pozici v _this nebo objNull, do proměnné _radius se nastaví
buď číslo (předané jako druhý prvek pole _this) nebo výchozí desítka a
do _side se nastaví strana z třetího parametru (např. east, west,
resistance, civilian…) nebo se nastaví na výchozí west. Jelikož jsme
předali prádné pole, tak _ied obsahuje objNull, _radius je roven desíti a
_side je nastaven na west.

Na závěr bych doporučil mrknout i na BIS_fnc_log, BIS_fnc_error a
hlavně na BIS_fnc_halt.

Od teď by vás už neměla překvapit žádná špatně nastavená
proměnná.