pierremgi 4887 Posted May 9, 2018 MGI ENHANCED TURRET Last update 09/05/2018 Hi all, Here is a little script allowing AI gunners to fire HE shells on infantry. I hoped Tank DLC will improve some AI features about targeting and ammo firing possibilities, but it seems not. So, running this script makes gunners load some accurate shells to fire with cannon. It's complementary to MGs. On the other hand, I tried to overwrite the targeting engine as far as the present BI one consider a team leader more dangerous than an AT soldier... The result is disastrous, of course. I gave up with this idea. If it's easy to choose the best threat to be shot, it's impossible to override the engine to order the gunner to watch, aim, fire at the chosen target. Engine has its own life... as usual, commands do nothing persistent (working) on that. parameters: none (at this time) Script can be added in init.sqf or initServer.sqf 0=[] spawn { while {true} do { uiSleep 4; _allCannonVehicles = vehicles select {local _x && isNil {_x getVariable "admitVeh"} && !(_x isKindOf "WeaponHolderSimulated") && (getText (configfile >> "CfgVehicles" >> typeOf _x >> "editorSubcategory") in ["EdSubcat_APCs","EdSubcat_Tanks","EdSubcat_Artillery"])}; { _x setVariable ["admitVeh",true,true]; _x spawn { params [["_tk",objNull],["_tgt",objNull]]; private _wpnTrt = _tk weaponsTurret [0]; private _cannon = (_wpnTrt select {getText (configfile >> "CfgWeapons" >> _x >> "nameSound") == "cannon"}) select 0; if (isnil "_cannon") then {_cannon = ""}; if (_cannon != "") then { _cannonMags = getArray (configFile >> "cfgweapons" >> _cannon >> "magazines"); _cannonReloadTime = getNumber (configfile >> "CfgWeapons" >> _cannon >> "magazineReloadTime"); _magsDetail = magazinesAmmo _tk; _magsDetail apply { _class = (configfile >> "CfgAmmo" >>getText (configfile >> "CfgMagazines" >> _x select 0 >> "ammo") >> "aiAmmoUsageFlags"); _usage = if (istext _class) then [{(getText _class) splitString " + "},{[str(getNumber _class)]}]; _x pushback _usage;_x }; while {alive (_tk turretUnit [0])} do { _gunner = _tk turretUnit [0]; if (!((_tk targets [true,700]) isEqualTo []) && !isPlayer _gunner) then { _tgts = (_tk targets [true,700]) apply {[_tk aimedAtTarget [_x],_x]}; _tgts sort false; _tgt = _tgts select 0 select 1; _magsDetail = _magsDetail select {(_x select 1) > 0}; if (((_tgt isKindOf "landVehicle") or (_tgt isKindOf "CAManBase" && diag_tickTime mod 30 <= 6)) && _tk currentWeaponTurret [0] != str _cannon) then { _tk selectWeaponTurret [_cannon,[0]] }; call { if (_tgt isKindOf "landVehicle" && !(_tgt isKindOf "car")) exitWith { for "_i" from 0 to count _magsDetail -1 do { if ("512" in (_magsDetail select _i select 2) && (_magsDetail select _i select 0) in _cannonMags) exitWith { _tk loadMagazine [[0],_cannon,_magsDetail select _i select 0]; }; }; }; if (secondaryWeapon _tgt != "" && diag_tickTime mod 30 <= 6) exitWith { for "_i" from 0 to count _magsDetail -1 do { if ("64" in (_magsDetail select _i select 2) && (_magsDetail select _i select 0) in _cannonMags && !(_tk getVariable ["loaded64",false])) exitWith { _tk loadMagazine [[0],_cannon,_magsDetail select _i select 0]; }; }; }; if (_tgt isKindOf "landVehicle") exitWith { for "_i" from 0 to count _magsDetail -1 do { if ("128" in (_magsDetail select _i select 2) && (_magsDetail select _i select 0) in _cannonMags) exitWith { _tk loadMagazine [[0],_cannon,_magsDetail select _i select 0]; }; }; }; if (_tgt isKindOf "CAManBase" && diag_tickTime mod 30 <= 6) exitWith { for "_i" from 0 to count _magsDetail -1 do { if ("64" in (_magsDetail select _i select 2) && (_magsDetail select _i select 0) in _cannonMags) exitWith { _tk loadMagazine [[0],_cannon,_magsDetail select _i select 0]; }; }; }; }; uiSleep _cannonReloadTime; } else { uiSleep 2; }; }; }; }; } forEach _allCannonVehicles; }; }; Feedback welcome. 2 1 Share this post Link to post Share on other sites
kremator 1065 Posted May 9, 2018 Hey @pierremgi ! Thanks for the script. I too was surprised that Tanks DLC didn’t address some of the more fundamental areas of tank combat. Tell me, would this be possible to put into a mod version so that it could apply to all tanks ? If so it would be a wonderful addition to my ‘always on’ mods ! 1 Share this post Link to post Share on other sites
fallschirmjgergewehr 1 Posted May 11, 2018 We can put this scripts into mod for private. It works fine in official campaign on my environment Thanks for nice script! This should be function of official Arma 3. Share this post Link to post Share on other sites