diff --git a/addons/gforces/XEH_postInit.sqf b/addons/gforces/XEH_postInit.sqf index 9eb049c9f54..f7d532c288c 100644 --- a/addons/gforces/XEH_postInit.sqf +++ b/addons/gforces/XEH_postInit.sqf @@ -3,22 +3,26 @@ if (!hasInterface) exitWith {}; GVAR(pfID) = -1; +GVAR(playerIsVirtual) = false; ["ace_settingsInitialized", { TRACE_1("SettingsInitialized eh",GVAR(enabledFor)); if (GVAR(enabledFor) == 0) exitWith {}; //Module has no effect if enabledFor is "None" + + ["unit", { // Add unit changed EH to check if player is either virtual (logic) or a UAV AI + params ["_unit"]; + GVAR(playerIsVirtual) = ((getNumber (configFile >> "CfgVehicles" >> (typeOf _unit) >> "isPlayableLogic")) == 1) || + {(getText (configFile >> "CfgVehicles" >> (typeOf _unit) >> "simulation")) == "UAVPilot"}; + TRACE_3("unit changed",_unit,typeOf _unit,GVAR(playerIsVirtual)); + }, true] call CBA_fnc_addPlayerEventHandler; + if (GVAR(enabledFor) == 2) exitWith { //PFEH is always on when enabledFor is "All" [] call FUNC(addPFEH); TRACE_1("adding perm PFEH",GVAR(pfID)); }; //PFEH only runs when player is in a type "Air" vehicle when enabledFor is "Aircraft" - - if ((!isNull (vehicle ACE_player)) && {(vehicle ACE_player) isKindOf "Air"}) then { //"playerVehicleChanged" can happen before "settingInit" - [] call FUNC(addPFEH); - TRACE_1("adding temp PFEH [start in]",GVAR(pfID)); - }; ["vehicle", { params ["", "_vehicle"]; TRACE_2("playerVehicleChanged",_vehicle,typeOf _vehicle); @@ -35,5 +39,5 @@ GVAR(pfID) = -1; GVAR(pfID) = -1; }; }; - }] call CBA_fnc_addPlayerEventHandler; + }, true] call CBA_fnc_addPlayerEventHandler; }] call CBA_fnc_addEventHandler; diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index 3be01300301..f4f7c4becd7 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -17,7 +17,7 @@ if ((CBA_missionTime - GVAR(lastUpdateTime)) < INTERVAL) exitWith {}; GVAR(lastUpdateTime) = CBA_missionTime; -if (isNull ACE_player || !(alive ACE_player)) exitWith {}; +if (GVAR(playerIsVirtual) || {!alive ACE_player}) exitWith {}; BEGIN_COUNTER(everyInterval);