aVoidPanic:
Например у тебя на карте стоит ящик с именем box1
Командой
_result = getMagazineCargo box1;
Мы получим результат выполнения команды в переменную _result.
На примере ArmA 2: массив в переменной _result будет примерно таким:
[["30Rnd_556x45_Stanag","30Rnd_556x45_StanagSD","20Rnd_556x45_Stanag","100Rnd_762x51_M240","200Rnd_556x45_M249","30Rnd_9x19_MP5SD","30Rnd_9x19_MP5","M136","1Rnd_HE_M203","FlareWhite_M203","FlareGreen_M203","FlareRed_M203","FlareYellow_M203","5Rnd_762x51_M24","20Rnd_762x51_DMR","8Rnd_B_Beneli_74Slug","10Rnd_127x99_m107","15Rnd_9x19_M9","15Rnd_9x19_M9SD","7Rnd_45ACP_1911","HandGrenade_West","SmokeShellRed","SmokeShellGreen","SmokeShellYellow","SmokeShell","1Rnd_SmokeRed_M203","1Rnd_SmokeGreen_M203","1Rnd_SmokeYellow_M203","1Rnd_Smoke_M203"],[400,20,20,50,50,30,90,20,80,2,2,2,2,30,30,50,30,30,20,30,50,2,2,2,5,2,2,2,2]]
Структура такова:
[
[Боеприпас1, Боеприпас2 и т.д...],
[Колво боеприпаса1, боеприпаса2 и т.д.]
]
Т.е. чтобы узнать сколько там находится например дымовых гранат, у которых имя класса SmokeShell, то нам нужно проверить каждый элемент и найти этот класс, потом получить количество из второго подмассива:
_result = getMagazineCargo box1; // Получаем массив боеприпасов ящика_ammoArray = _result select 0; // Записываем названия классов из массива в переменную _ammoArray_amountArray = _result select 1; // Записываем массив количества боеприпасов в переменную _amountArray_amount = 0; // Количество по-умолчанию: 0, т.е. если гранаты там не будет, то в результате мы получим 0for "_i" from 0 to ((count _ammoArray ) - 1) do { // Перебираем элементы боеприпасов _ammo = _ammoArray select _i; if (_ammo == "SmokeShell") exitWith { // Если боеприпас равен SmokeShell, то выходим из цикла _amount = (_amountArray select _i); // Записываем количество боеприпаса из массива в переменную _amount };};
По окончании выполнения скрипта имеем в переменной _amount количество гранат.. а дальше уже работаем с этим количеством.
Например вывести на экран в виде хинта можно добавив после скрипта строчку:
hint format["Количество: %1", _amount];