Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- span class="re5"> GetVehicleWeapons = {
- private _result = [];
- private _getAnyMagazines = {
- private _weapon = configFile >> "CfgWeapons" >> _this;
- private _mags = [];
- {
- _mags = _mags + getArray (
- (if (_x == "this") then { _weapon } else { _weapon >> _x }) >> "magazines"
- );
- } forEach getArray (_weapon >> "muzzles");
- _mags;
- };
- private _findRecurse = {
- private ["_class", "_currentPath"];
- private _root = (_this select 0);
- private _path = +(_this select 1);
- for "_i" from 0 to count _root -1 do {
- _class = _root select _i;
- if (isClass _class) then {
- _currentPath = _path + [_i];
- {
- _result set [count _result, [_x, _x call _getAnyMagazines, _currentPath, str _class]];
- } forEach getArray (_class >> "weapons");
- _class = _class >> "turrets";
- if (isClass _class) then {
- [_class, _currentPath] call _findRecurse;
- };
- };
- };
- };
- private _class = (
- configFile >> "CfgVehicles" >> (
- switch (typeName _this) do {
- case "STRING" : {_this};
- case "OBJECT" : {typeOf _this};
- default {nil}
- }
- ) >> "turrets"
- );
- [_class, []] call _findRecurse;
- _result;
- };
- AddVehicleAmmo = {
- params ["_unit", "_mag", "_path", "_magCount", "_ammoCount"];
- _unit removeMagazinesTurret [_mag, _path];
- if (_ammoCount > 0) then {
- _unit addMagazineTurret [_mag, _path, _ammoCount];
- };
- if (_magCount > 0) then {
- for "_i" from 1 to _magCount do {
- _unit addMagazineTurret [_mag, _path];
- };
- };
- };
- ["Equipment", "Change Vehicle Loadout", {
- _unit = [_logic, false] call Ares_fnc_GetUnitUnderCursor;
- if (isNull _unit) exitWith {
- [localize "STR_NO_OBJECT_SELECTED"] call Ares_fnc_ShowZeusMessage;
- playSound "FD_Start_F";
- };
- _unit = vehicle _unit;
- if (!(_unit isKindOf "AllVehicles")) exitWith {
- ["Object is not a vehicle"] call Ares_fnc_ShowZeusMessage;
- playSound "FD_Start_F";
- };
- _weaponList = _unit call GetVehicleWeapons;
- _paths = [];
- _weapons = [];
- _magazines = [];
- _magazineNames = [];
- {
- _x params ["_weapon", "_mags", "_path", "_config"];
- _weapons pushBack _weapon;
- _magNames = [];
- {
- _magNames pushBack (getText (configFile >> "CfgMagazines" >> _x >> "displayName"));
- } forEach _mags;
- _paths pushBack _path;
- _magazines pushBack _mags;
- _magazineNames pushBack _magNames;
- } forEach _weaponList;
- _properties = ["Loadout", [
- ["Choose weapon", _weapons]
- ]] call Ares_fnc_ShowChooseDialog;
- if (count _properties == 0) exitWith {
- ["Loadout editing aborted"] call Ares_fnc_ShowZeusMessage;
- };
- _turretPath = _paths select (_properties select 0);
- _weaponMags = _magazines select (_properties select 0);
- _weaponMagNames = _magazineNames select (_properties select 0);
- _properties = ["Loadout", [
- ["Choose magazine", _weaponMagNames]
- ]] call Ares_fnc_ShowChooseDialog;
- if (count _properties == 0) exitWith {
- ["Loadout editing aborted"] call Ares_fnc_ShowZeusMessage;
- };
- _selectedMagazine = _weaponMags select (_properties select 0);
- _magazineCount = 0;
- _largestMag = 0;
- _ammoCount = 0;
- {
- _x params ["_class", "_path", "_ammo", "_id", "_creator"];
- if (_class == _selectedMagazine) then {
- if (_ammo > _largestMag) then {
- _largestMag = _ammo;
- };
- };
- } forEach magazinesAllTurrets _unit;
- {
- _x params ["_class", "_path", "_ammo", "_id", "_creator"];
- if (_class == _selectedMagazine) then {
- if (_ammo < _largestMag) then {
- _ammoCount = _ammo;
- }
- else {
- _magazineCount = _magazineCount + 1;
- };
- };
- } forEach magazinesAllTurrets _unit;
- if (_ammoCount == 0 && _magazineCount > 0) then {
- _ammoCount = _largestMag;
- _magazineCount = _magazineCount - 1;
- };
- _properties = ["", [
- ["Ammo Count", str _ammoCount, str _ammoCount],
- ["Magazine Count", str _magazineCount, str _magazineCount]
- ]] call Ares_fnc_ShowChooseDialog;
- if (count _properties == 0) exitWith {
- ["Loadout editing aborted"] call Ares_fnc_ShowZeusMessage;
- };
- _newAmmoCount = parseNumber (_properties select 0);
- _newMagCount = parseNumber (_properties select 1);
- [_unit, _selectedMagazine, _turretPath, _newMagCount, _newAmmoCount] remoteExecCall ["AddVehicleAmmo", _unit];
- }] call Ares_fnc_RegisterCustomModule;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement