mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Fixes
This commit is contained in:
@ -40,6 +40,7 @@ if (_startNewLoop) then {
|
|||||||
// start a new position update loop
|
// start a new position update loop
|
||||||
GVAR(positionUpdatePFEH) = [{
|
GVAR(positionUpdatePFEH) = [{
|
||||||
{
|
{
|
||||||
|
systemChat format ["updating position"];
|
||||||
if (ACE_time - (AD_GET_TIME(_x)) >= (AD_GET_REFRESH_RATE(_x))) then {
|
if (ACE_time - (AD_GET_TIME(_x)) >= (AD_GET_REFRESH_RATE(_x))) then {
|
||||||
if (AD_GET_DEVICE_STATE_VALUE(_x) isEqualTo STATE_NORMAL) then {
|
if (AD_GET_DEVICE_STATE_VALUE(_x) isEqualTo STATE_NORMAL) then {
|
||||||
private _deviceOwner = AD_GET_OWNER(_x);
|
private _deviceOwner = AD_GET_OWNER(_x);
|
||||||
|
@ -28,7 +28,7 @@ private _targetOffSet = [];
|
|||||||
// see if given unit name is still in the list of units with valid helmet cams
|
// see if given unit name is still in the list of units with valid helmet cams
|
||||||
{
|
{
|
||||||
if (_data == str _x) exitWith {_newHost = _x;};
|
if (_data == str _x) exitWith {_newHost = _x;};
|
||||||
} count GVAR(hCamList);
|
} forEach GVAR(hCamList);
|
||||||
|
|
||||||
call {
|
call {
|
||||||
// should unit not be in a vehicle
|
// should unit not be in a vehicle
|
||||||
|
@ -35,7 +35,7 @@ private _uav = objNull;
|
|||||||
private _uavDeviceData = _x select 1;
|
private _uavDeviceData = _x select 1;
|
||||||
_uav = D_GET_OWNER(_uavDeviceData);
|
_uav = D_GET_OWNER(_uavDeviceData);
|
||||||
};
|
};
|
||||||
} count GVAR(UAVlist);
|
} forEach GVAR(UAVlist);
|
||||||
|
|
||||||
// remove exisitng UAV cameras
|
// remove exisitng UAV cameras
|
||||||
[] call FUNC(deleteUAVcam);
|
[] call FUNC(deleteUAVcam);
|
||||||
@ -79,7 +79,7 @@ if (!alive _uav) exitWith {false};
|
|||||||
};
|
};
|
||||||
GVAR(UAVcams) pushBack [_uav,_renderTarget,_cam,_camPosMemPt,_camDirMemPt];
|
GVAR(UAVcams) pushBack [_uav,_renderTarget,_cam,_camPosMemPt,_camDirMemPt];
|
||||||
};
|
};
|
||||||
} count _uavCams;
|
} forEach _uavCams;
|
||||||
|
|
||||||
// set up event handler
|
// set up event handler
|
||||||
if !(GVAR(UAVcams) isEqualTo []) exitWith {
|
if !(GVAR(UAVcams) isEqualTo []) exitWith {
|
||||||
|
@ -550,7 +550,7 @@ if (isNil "_mode") then {
|
|||||||
};
|
};
|
||||||
// ----------------------------------
|
// ----------------------------------
|
||||||
};
|
};
|
||||||
} forEach ([_settings] call CBA_fnc_hashKeys);
|
} forEach (_settings select 1);
|
||||||
|
|
||||||
// update scale and world position if we have to. If so, fill in the blanks and make the changes
|
// update scale and world position if we have to. If so, fill in the blanks and make the changes
|
||||||
if ((!isNil "_targetMapScale") || (!isNil "_targetMapWorldPos")) then {
|
if ((!isNil "_targetMapScale") || (!isNil "_targetMapWorldPos")) then {
|
||||||
|
@ -21,11 +21,43 @@
|
|||||||
// see if there is a selected UAV and if it is alive before continuing
|
// see if there is a selected UAV and if it is alive before continuing
|
||||||
if (isNil QGVAR(actUav) || {!alive GVAR(actUav)}) exitWith {false};
|
if (isNil QGVAR(actUav) || {!alive GVAR(actUav)}) exitWith {false};
|
||||||
|
|
||||||
|
private _hasUavTraining = ace_player getVariable ["ACE_uavOperator", false];
|
||||||
|
if (!_hasUavTraining) exitWith {
|
||||||
|
["UAV","Action denied. You lack required training.",5] call FUNC(addNotification);
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
// make sure there is noone currently controlling the gunner seat
|
// make sure there is noone currently controlling the gunner seat
|
||||||
// unfortunately this fails as soon as there is a driver connected as only one unit is returned using UAVControl and it will alwasys be the driver if present.
|
// unfortunately this fails as soon as there is a driver connected as only one unit is returned using UAVControl and it will alwasys be the driver if present.
|
||||||
// see http://feedback.arma3.com/view.php?id=23693
|
// see http://feedback.arma3.com/view.php?id=23693
|
||||||
if (UAVControl GVAR(actUav) select 1 != "GUNNER") then {
|
if (UAVControl GVAR(actUav) select 1 != "GUNNER") then {
|
||||||
// see if there is actually a gunner AI that we can remote control
|
// see if there is actually a gunner AI that we can remote control
|
||||||
|
|
||||||
|
if (count (crew GVAR(actUav)) >= 2) then {
|
||||||
|
[] call FUNC(ifClose);
|
||||||
|
ace_player remoteControl (gunner GVAR(actUav));
|
||||||
|
GVAR(actUav) switchCamera "Gunner";
|
||||||
|
GVAR(uavViewActive) = true;
|
||||||
|
} else {
|
||||||
|
if (!("DRIVER" in uavControl GVAR(actUav))) then {
|
||||||
|
if (count (crew GVAR(actUav)) >= 1) then {
|
||||||
|
[] call FUNC(ifClose);
|
||||||
|
ace_player remoteControl ((crew GVAR(actUav)) select 0);
|
||||||
|
GVAR(actUav) switchCamera "INTERNAL";
|
||||||
|
GVAR(uavViewActive) = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(uavViewActive)) then {
|
||||||
|
[{
|
||||||
|
if (cameraOn != (_this select 0) || !GVAR(uavViewActive)) then {
|
||||||
|
[_this select 1] call CBA_fnc_removePerFrameHandler;
|
||||||
|
GVAR(uavViewActive) = false;
|
||||||
|
};
|
||||||
|
},0,GVAR(actUav)] call CBA_fnc_addPerFrameHandler;
|
||||||
|
};
|
||||||
|
/*
|
||||||
private _uavGunner = gunner GVAR(actUav);
|
private _uavGunner = gunner GVAR(actUav);
|
||||||
if (!isNull _uavGunner) then {
|
if (!isNull _uavGunner) then {
|
||||||
[] call FUNC(ifClose);
|
[] call FUNC(ifClose);
|
||||||
@ -42,7 +74,7 @@ if (UAVControl GVAR(actUav) select 1 != "GUNNER") then {
|
|||||||
} else {
|
} else {
|
||||||
// show notification
|
// show notification
|
||||||
["UAV","No gunner optics available",5] call FUNC(addNotification);
|
["UAV","No gunner optics available",5] call FUNC(addNotification);
|
||||||
};
|
};*/
|
||||||
} else {
|
} else {
|
||||||
// show notification
|
// show notification
|
||||||
["UAV","Another user has control",5] call FUNC(addNotification);
|
["UAV","Another user has control",5] call FUNC(addNotification);
|
||||||
|
@ -31,7 +31,7 @@ private _validSides = [];
|
|||||||
if ([_deviceEncryptionKey, [_x] call EFUNC(bft,getEncryptionKey)] call EFUNC(bft,encryptionKeyMatch)) then {
|
if ([_deviceEncryptionKey, [_x] call EFUNC(bft,getEncryptionKey)] call EFUNC(bft,encryptionKeyMatch)) then {
|
||||||
_validSides pushBack _x;
|
_validSides pushBack _x;
|
||||||
};
|
};
|
||||||
} count ["WEST","EAST","GUER","CIV"];
|
} forEach ["WEST","EAST","GUER","CIV"];
|
||||||
|
|
||||||
// compile list of units with the ACE_HelmetCam item
|
// compile list of units with the ACE_HelmetCam item
|
||||||
private _hcamList = [];
|
private _hcamList = [];
|
||||||
@ -41,7 +41,7 @@ private _hcamList = [];
|
|||||||
_hcamList pushBack _x;
|
_hcamList pushBack _x;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} count allUnits;
|
} forEach allUnits;
|
||||||
|
|
||||||
GVAR(hCamList) = _hcamList;
|
GVAR(hCamList) = _hcamList;
|
||||||
|
|
||||||
|
@ -40,6 +40,6 @@ GVAR(UAVlist) = [];
|
|||||||
GVAR(UAVlist) pushBack [_uavDevice,_uavDeviceData];
|
GVAR(UAVlist) pushBack [_uavDevice,_uavDeviceData];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} count allUnitsUAV;
|
} forEach allUnitsUAV;
|
||||||
|
|
||||||
true
|
true
|
||||||
|
Reference in New Issue
Block a user