From 05965fde306470bff2f31898a015aa49f6635b63 Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Fri, 19 Jan 2018 20:28:32 +0100 Subject: [PATCH 1/9] ANVRC64 --- .../radio/fnc_getCurrentChannelData.sqf | 6 ++- .../sys_prc77/radio/fnc_initializeRadio.sqf | 2 +- addons/sys_rack/CfgAcreRacks.hpp | 39 +++++++++++++++++++ addons/sys_rack/XEH_PREP.hpp | 1 + addons/sys_rack/script_acre_rack_defines.hpp | 1 + addons/sys_rack/vrc64/__PREP__.sqf | 7 ++++ addons/sys_rack/vrc64/fnc_vrc64MountRadio.sqf | 27 +++++++++++++ .../vrc64/fnc_vrc64MountableRadio.sqf | 31 +++++++++++++++ .../sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf | 26 +++++++++++++ addons/sys_rack/vrc64/script_component.hpp | 1 + 10 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 addons/sys_rack/vrc64/__PREP__.sqf create mode 100644 addons/sys_rack/vrc64/fnc_vrc64MountRadio.sqf create mode 100644 addons/sys_rack/vrc64/fnc_vrc64MountableRadio.sqf create mode 100644 addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf create mode 100644 addons/sys_rack/vrc64/script_component.hpp diff --git a/addons/sys_prc77/radio/fnc_getCurrentChannelData.sqf b/addons/sys_prc77/radio/fnc_getCurrentChannelData.sqf index d42b4276c..674e8581c 100644 --- a/addons/sys_prc77/radio/fnc_getCurrentChannelData.sqf +++ b/addons/sys_prc77/radio/fnc_getCurrentChannelData.sqf @@ -46,7 +46,11 @@ private _return = HASH_CREATE; HASH_SET(_return, "mode", HASH_GET(_radioData, "mode")); HASH_SET(_return, "frequencyTX", HASH_GET(_radioData, "frequencyTX")); HASH_SET(_return, "frequencyRX", HASH_GET(_radioData, "frequencyRX")); -HASH_SET(_return, "power", HASH_GET(_radioData, "power")); +if (HASH_GET(_radioData, "powerSource") == "VAU") then { + HASH_SET(_return, "power", VRC64_RACK_POWER); +} else { + HASH_SET(_return, "power", HASH_GET(_radioData, "power")); +}; HASH_SET(_return, "CTCSSTx", HASH_GET(_radioData, "CTCSSTx")); HASH_SET(_return, "CTCSSRx", HASH_GET(_radioData, "CTCSSRx")); HASH_SET(_return, "modulation", HASH_GET(_radioData, "modulation")); diff --git a/addons/sys_prc77/radio/fnc_initializeRadio.sqf b/addons/sys_prc77/radio/fnc_initializeRadio.sqf index de0b8bbf5..0d73258e7 100644 --- a/addons/sys_prc77/radio/fnc_initializeRadio.sqf +++ b/addons/sys_prc77/radio/fnc_initializeRadio.sqf @@ -71,7 +71,7 @@ HASH_SET(_radioData,"radioOn",1); //0 - OFF, 1 - ON HASH_SET(_radioData,"band",_band); //{0,1} HASH_SET(_radioData,"currentPreset",[ARR_2(_knobPositions,_secondPresetKnobPositions)]); //Array of Presetarrays (KnobPositions) HASH_SET(_radioData,"currentChannel",_knobPositions); - +HASH_SET(_radioData,"powerSource", "BAT"); //Common Channel Settings HASH_SET(_radioData,"frequencyTX",_frequencyTx); diff --git a/addons/sys_rack/CfgAcreRacks.hpp b/addons/sys_rack/CfgAcreRacks.hpp index 4b791ce40..4c40314f7 100644 --- a/addons/sys_rack/CfgAcreRacks.hpp +++ b/addons/sys_rack/CfgAcreRacks.hpp @@ -1,5 +1,41 @@ class CfgAcreComponents { class ACRE_BaseRack; + class ACRE_VRC64 : ACRE_BaseRack { + name = "AN/VRC-64"; + + connectors[] = { + {"Antenna", ACRE_CONNECTOR_3_8}, + {"Audio In", ACRE_CONNECTOR_U_283}, + {"Audio Out", ACRE_CONNECTOR_U_283}, + {"Power In", ACRE_CONNECTOR_U_283}, + {"Radio", ACRE_CONNECTOR_CONN_32PIN} + }; + defaultComponents[] = { + {0, "ACRE_AT271_38"} + }; + class Interfaces { + class CfgAcreDataInterface { + getState = QFUNC(getState); + setState = QFUNC(setState); + handleComponentMessage = QEFUNC(sys_data,noApiSystemFunction); + + initializeComponent = QFUNC(initializeRack); + + attachComponent = QEFUNC(sys_data,noApiSystemFunction); + detachComponent = QEFUNC(sys_data,noApiSystemFunction); + mountRadio = QFUNC(vrc110MountRadio); + unmountRadio = QFUNC(vrc110UnmountRadio); + mountableRadio = QFUNC(vrc110MountableRadio); + }; + }; + class InterfaceClasses { + CfgAcreDataInterface = "DefaultRackInterface"; + CfgAcreInteractInterface = "DefaultRadioInterface"; + CfgAcreTransmissionInterface = "DefaultRadioInterface"; + CfgAcrePhysicalInterface = "DefaultRadioInterface"; + }; + }; + class ACRE_VRC110 : ACRE_BaseRack { name = "AN/VRC-110"; @@ -35,6 +71,7 @@ class CfgAcreComponents { CfgAcrePhysicalInterface = "DefaultRadioInterface"; }; }; + class ACRE_VRC103 : ACRE_BaseRack { name = "AN/VRC-103"; @@ -72,6 +109,7 @@ class CfgAcreComponents { CfgAcrePhysicalInterface = "DefaultRadioInterface"; }; }; + class ACRE_VRC111 : ACRE_BaseRack { name = "AN/VRC-111"; @@ -107,6 +145,7 @@ class CfgAcreComponents { CfgAcrePhysicalInterface = "DefaultRadioInterface"; }; }; + class ACRE_SEM90 : ACRE_BaseRack { name = "SEM90"; diff --git a/addons/sys_rack/XEH_PREP.hpp b/addons/sys_rack/XEH_PREP.hpp index 65c9b7de9..ce79976e9 100644 --- a/addons/sys_rack/XEH_PREP.hpp +++ b/addons/sys_rack/XEH_PREP.hpp @@ -37,6 +37,7 @@ PREP(stopUsingMountedRadio); PREP(getState); PREP(setState); +PREP_FOLDER(vrc64); PREP_FOLDER(vrc103); PREP_FOLDER(vrc110); PREP_FOLDER(vrc111); diff --git a/addons/sys_rack/script_acre_rack_defines.hpp b/addons/sys_rack/script_acre_rack_defines.hpp index accfea5d3..3bba9ffff 100644 --- a/addons/sys_rack/script_acre_rack_defines.hpp +++ b/addons/sys_rack/script_acre_rack_defines.hpp @@ -1,5 +1,6 @@ #define SEM90_RACK_POWER_MULTIPLIER 10 +#define VRC64_RACK_POWER 50000 // 50W #define VRC103_RACK_POWER 50000 // 50W #define VRC110_RACK_POWER 20000 // 20W #define VRC111_RACK_POWER 20000 // 20W diff --git a/addons/sys_rack/vrc64/__PREP__.sqf b/addons/sys_rack/vrc64/__PREP__.sqf new file mode 100644 index 000000000..0386a495b --- /dev/null +++ b/addons/sys_rack/vrc64/__PREP__.sqf @@ -0,0 +1,7 @@ + +#include "script_component.hpp" +TRACE_1("enter", _this); + +PREP_MODULE(vrc64,vrc64MountRadio); +PREP_MODULE(vrc64,vrc64UnmountRadio); +PREP_MODULE(vrc64,vrc64MountableRadio); diff --git a/addons/sys_rack/vrc64/fnc_vrc64MountRadio.sqf b/addons/sys_rack/vrc64/fnc_vrc64MountRadio.sqf new file mode 100644 index 000000000..12d570984 --- /dev/null +++ b/addons/sys_rack/vrc64/fnc_vrc64MountRadio.sqf @@ -0,0 +1,27 @@ +/* + * Author: ACRE2Team + * Mount radio classname + * + * Arguments: + * 0: Target Vehicle + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call acre_sys_rack_fnc_vrc64MountRadio + * + * Public: No + */ +#include "script_component.hpp" + +params ["_rackId", "", "_eventData", ""]; + +private _radioId = _eventData; + +// 26 Pin Connector +private _attributes = HASH_CREATE; +[_rackId, 3, _radioId, 2, _attributes, false] call EFUNC(sys_components,attachComplexComponent); + +//Enable VAA Mode. +[_radioId, "setState", ["powerSource", "VAU"]] call EFUNC(sys_data,dataEvent); diff --git a/addons/sys_rack/vrc64/fnc_vrc64MountableRadio.sqf b/addons/sys_rack/vrc64/fnc_vrc64MountableRadio.sqf new file mode 100644 index 000000000..985a0bf00 --- /dev/null +++ b/addons/sys_rack/vrc64/fnc_vrc64MountableRadio.sqf @@ -0,0 +1,31 @@ +/* + * Author: ACRE2Team + * Check if the radio is mountable in AN/VRC64 rack. + * + * Arguments: + * 0: Unique rack ID + * 1: Event type (Unused) + * 2: Event data with unique radio ID + * 3: Radio data (Unused) + * + * Return Value: + * Is radio mountable + * + * Example: + * [cursorTarget] call acre_sys_rack_fnc_vrc64MountableRadio + * + * Public: No + */ +#include "script_component.hpp" + +params ["_rackId", "", "_eventData", ""]; + +if (([_rackId] call FUNC(getMountedRadio)) != "") exitWith {false}; // If a radio is already mounted we can't mount another. + +private _mountable = false; +private _radioId = _eventData; +private _baseClass = toLower (BASE_CLASS_CONFIG(_radioId)); + +if (_baseClass in ["acre_prc77"]) then { _mountable = true; }; + +_mountable diff --git a/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf b/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf new file mode 100644 index 000000000..5fc537e09 --- /dev/null +++ b/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf @@ -0,0 +1,26 @@ +/* + * Author: ACRE2Team + * Unmounts the given radio from an AN/VRC64 vehicle rack. + * + * Arguments: + * 0: Unique rack ID + * 1: Event type (Unused) + * 2: Event data with unique radio ID + * 3: Radio data (Unused) + * + * Return Value: + * None + * + * Example: + * [cursorTarget] call acre_sys_rack_fnc_vrc64UnmountRadio + * + * Public: No + */ +#include "script_component.hpp" + +params ["", "", "_eventData", ""]; + +private _radioId = _eventData; + +//Enable VAA Mode. +[_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); diff --git a/addons/sys_rack/vrc64/script_component.hpp b/addons/sys_rack/vrc64/script_component.hpp new file mode 100644 index 000000000..352deba9a --- /dev/null +++ b/addons/sys_rack/vrc64/script_component.hpp @@ -0,0 +1 @@ +#include "\idi\acre\addons\sys_rack\script_component.hpp" From df73459851fa4ec15ffbab063b648baa8b45cd35 Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sun, 21 Jan 2018 22:02:04 +0100 Subject: [PATCH 2/9] AN/VRC-64 --- addons/sys_rack/CfgVehicles.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/sys_rack/CfgVehicles.hpp b/addons/sys_rack/CfgVehicles.hpp index 975a83c49..3a77588de 100644 --- a/addons/sys_rack/CfgVehicles.hpp +++ b/addons/sys_rack/CfgVehicles.hpp @@ -1,6 +1,11 @@ class CfgVehicles { // Vehicle rack vehicle definitions class ACRE_BaseRack; + class ACRE_VRC64 : ACRE_BaseRack { + displayName = "AN/VRC-64 Rack"; + }; + RADIO_ID_LIST(ACRE_VRC64); + class ACRE_VRC110 : ACRE_BaseRack { displayName = "AN/VRC-110 Rack"; }; @@ -194,7 +199,7 @@ class CfgVehicles { class AcreRacks { class Rack_1 { displayName = CSTRING(Dash); // Name is displayed in the interaction menu. - componentName = "ACRE_VRC103"; + componentName = "ACRE_VRC64"; allowedPositions[] = {"driver", "commander", "gunner"}; // Who has access "inside" - anyone inside, "external" - provides access upto 10m away, "driver", "gunner", "copilot", "commander" disabledPositions[] = {}; defaultComponents[] = {}; From 0a8fa265f0c44a86c734960f206dd54fb48d441a Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sun, 21 Jan 2018 22:04:02 +0100 Subject: [PATCH 3/9] Fix Tank rack --- addons/sys_rack/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sys_rack/CfgVehicles.hpp b/addons/sys_rack/CfgVehicles.hpp index 3a77588de..609521072 100644 --- a/addons/sys_rack/CfgVehicles.hpp +++ b/addons/sys_rack/CfgVehicles.hpp @@ -199,7 +199,7 @@ class CfgVehicles { class AcreRacks { class Rack_1 { displayName = CSTRING(Dash); // Name is displayed in the interaction menu. - componentName = "ACRE_VRC64"; + componentName = "ACRE_VRC103"; allowedPositions[] = {"driver", "commander", "gunner"}; // Who has access "inside" - anyone inside, "external" - provides access upto 10m away, "driver", "gunner", "copilot", "commander" disabledPositions[] = {}; defaultComponents[] = {}; From e5876eb44bd8e66cb855b74e9010329d015a7e1a Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sun, 21 Jan 2018 22:24:13 +0100 Subject: [PATCH 4/9] Delete semi-colon --- addons/sys_rack/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sys_rack/CfgVehicles.hpp b/addons/sys_rack/CfgVehicles.hpp index 609521072..0c6119838 100644 --- a/addons/sys_rack/CfgVehicles.hpp +++ b/addons/sys_rack/CfgVehicles.hpp @@ -4,7 +4,7 @@ class CfgVehicles { class ACRE_VRC64 : ACRE_BaseRack { displayName = "AN/VRC-64 Rack"; }; - RADIO_ID_LIST(ACRE_VRC64); + RADIO_ID_LIST(ACRE_VRC64) class ACRE_VRC110 : ACRE_BaseRack { displayName = "AN/VRC-110 Rack"; From 0868bcbc08a6fd86862fe0eef007679d9b683dc9 Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sun, 4 Feb 2018 02:09:11 +0100 Subject: [PATCH 5/9] Acre racks speakers --- .../ace_interact/fnc_radioChildrenActions.sqf | 7 ++++ addons/api/fnc_getIntercomStationVolume.sqf | 32 +++++++++++++++++++ addons/sys_prc117f/fnc_initializeRadio.sqf | 3 +- .../radio/fnc_getExternalAudioPosition.sqf | 18 ++++++++++- .../sys_prc117f/radio/fnc_isExternalAudio.sqf | 4 ++- .../radio/fnc_getExternalAudioPosition.sqf | 14 ++++++-- .../sys_prc148/radio/fnc_isExternalAudio.sqf | 2 +- addons/sys_prc152/fnc_initializeRadio.sqf | 2 +- .../radio/fnc_getExternalAudioPosition.sqf | 14 ++++++-- .../sys_prc152/radio/fnc_isExternalAudio.sqf | 2 +- .../radio/fnc_getExternalAudioPosition.sqf | 18 ++++++++++- .../sys_prc77/radio/fnc_initializeRadio.sqf | 7 ++-- .../sys_prc77/radio/fnc_isExternalAudio.sqf | 4 ++- addons/sys_rack/XEH_PREP.hpp | 1 + addons/sys_rack/fnc_addRack.sqf | 4 +-- addons/sys_rack/fnc_initVehicle.sqf | 12 ++++++- addons/sys_rack/fnc_initializeRack.sqf | 5 +-- .../sys_rack/sem90/fnc_sem90UnmountRadio.sqf | 1 + addons/sys_rack/stringtable.xml | 8 ++++- .../vrc103/fnc_vrc103UnmountRadio.sqf | 1 + .../vrc110/fnc_vrc110UnmountRadio.sqf | 6 ++++ .../vrc111/fnc_vrc111UnmountRadio.sqf | 6 ++++ .../sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf | 1 + .../radio/fnc_getExternalAudioPosition.sqf | 14 ++++++-- .../sys_sem52sl/radio/fnc_initializeRadio.sqf | 2 +- .../sys_sem52sl/radio/fnc_isExternalAudio.sqf | 2 +- .../radio/fnc_getExternalAudioPosition.sqf | 14 ++++++-- .../sys_sem70/radio/fnc_initializeRadio.sqf | 4 +-- .../sys_sem70/radio/fnc_isExternalAudio.sqf | 2 +- 29 files changed, 180 insertions(+), 30 deletions(-) create mode 100644 addons/api/fnc_getIntercomStationVolume.sqf diff --git a/addons/ace_interact/fnc_radioChildrenActions.sqf b/addons/ace_interact/fnc_radioChildrenActions.sqf index d6534d3a9..1a89d8a09 100644 --- a/addons/ace_interact/fnc_radioChildrenActions.sqf +++ b/addons/ace_interact/fnc_radioChildrenActions.sqf @@ -38,6 +38,13 @@ if (!(_radio in ACRE_EXTERNALLY_USED_PERSONAL_RADIOS)) then { if (!((_radio in ACRE_ACCESSIBLE_RACK_RADIOS && {isTurnedOut acre_player}) || _radio in ACRE_HEARABLE_RACK_RADIOS)) then { _action = ["acre_open_radio", localize ELSTRING(sys_list,OpenRadio), "", {[((_this select 2) select 0)] call EFUNC(sys_radio,openRadio)}, {true}, {}, _params] call ace_interact_menu_fnc_createAction; _actions pushBack [_action, [], _target]; + if ([_radio, "isExternalAudio"] call EFUNC(sys_data,dataEvent)) then { + _action = ["acre_loudspeaker", localize ELSTRING(sys_rack,turnOffSpeaker), "", {[((_this select 2) select 0), false] call EFUNC(sys_rack,activateRackSpeaker)}, {true}, {}, _params] call ace_interact_menu_fnc_createAction; + } else { + _action = ["acre_loudspeaker", localize ELSTRING(sys_rack,turnOnSpeaker), "", {[((_this select 2) select 0), true] call EFUNC(sys_rack,activateRackSpeaker)}, {true}, {}, _params] call ace_interact_menu_fnc_createAction; + }; + + _actions pushBack [_action, [], _target]; }; _action = ["acre_make_active", localize LSTRING(setAsActive), "", {[(_this select 2) select 0] call EFUNC(api,setCurrentRadio)}, {!((_this select 2) select 1)}, {},_params] call ace_interact_menu_fnc_createAction; diff --git a/addons/api/fnc_getIntercomStationVolume.sqf b/addons/api/fnc_getIntercomStationVolume.sqf new file mode 100644 index 000000000..645a6af73 --- /dev/null +++ b/addons/api/fnc_getIntercomStationVolume.sqf @@ -0,0 +1,32 @@ +/* + * Author: ACRE2Team + * Retrieves the current intercom volume of the given unit. + * + * Arguments: + * 0: Vehicle . Default: objNull. + * 1: Unit . Default: objNull. + * 2: Intercom network . Default: 0. + * 3: Seat . Default: []. + * + * Return Value: + * Intercom volume in [0,1]. -1 if it could not be retrieved + * + * Example: + * [vehicle acre_player, acre_player,"intercom_1"] call acre_api_fnc_getIntercomStationVolume + * [vehicle acre_player, objNull,"intercom_1", ["turret"], [1]] call acre_api_fnc_getIntercomStationVolume + * [vehicle acre_player, objNull, 2, ["cargo"], 1] call acre_api_fnc_getIntercomStationVolume + * [objNull, acre_player, 0] call acre_api_fnc_getIntercomStationVolume + * + * Public: Yes + */ +#include "script_component.hpp" + +params [["_vehicle", objNull], ["_unit", objNull], ["_intercomNetwork", 0], ["_seat", []]]; + +private _arguments = [_vehicle, _unit, _intercomNetwork, _seat] call FUNC(helperValidateIntercomArguments); + +if (_arguments isEqualTo []) then { + -1 +} else { + [_arguments select 0, _arguments select 1, _arguments select 2, INTERCOM_STATIONSTATUS_CONNECTION, _arguments select 3] call EFUNC(sys_intercom,getStationConfiguration) +}; diff --git a/addons/sys_prc117f/fnc_initializeRadio.sqf b/addons/sys_prc117f/fnc_initializeRadio.sqf index fa69fedbc..38bceb807 100644 --- a/addons/sys_prc117f/fnc_initializeRadio.sqf +++ b/addons/sys_prc117f/fnc_initializeRadio.sqf @@ -40,5 +40,6 @@ HASH_SET(_radioData,"volume",1); HASH_SET(_radioData,"currentChannel",0); HASH_SET(_radioData,"radioOn", 1); HASH_SET(_radioData,"pressedButton", -1); -HASH_SET(_radioData,"powerSource", "BAT"); +HASH_SET(_radioData,"powerSource","BAT"); HASH_SET(_radioData,"pgm_pa_mode", "ON"); +HASH_SET(_radioData,"audioPath","HEADSET"); diff --git a/addons/sys_prc117f/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_prc117f/radio/fnc_getExternalAudioPosition.sqf index f9d33ea8d..b1e8def0a 100644 --- a/addons/sys_prc117f/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_prc117f/radio/fnc_getExternalAudioPosition.sqf @@ -16,4 +16,20 @@ */ #include "script_component.hpp" -[0,0,0] +params ["_radioId", "_event", "_eventData", "_radioData"]; + +private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); +private _pos = getPosASL _obj; + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + _pos = [0,0,0]; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; +}; + +_pos diff --git a/addons/sys_prc117f/radio/fnc_isExternalAudio.sqf b/addons/sys_prc117f/radio/fnc_isExternalAudio.sqf index c30b62433..f6f5a3714 100644 --- a/addons/sys_prc117f/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_prc117f/radio/fnc_isExternalAudio.sqf @@ -16,4 +16,6 @@ */ #include "script_component.hpp" -false +params ["_radioId", "_event", "_eventData", "_radioData"]; + +(HASH_GET(_radioData, "audioPath") == "RACKSPEAKER") diff --git a/addons/sys_prc148/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_prc148/radio/fnc_getExternalAudioPosition.sqf index 4630f55c6..44cf754c0 100644 --- a/addons/sys_prc148/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_prc148/radio/fnc_getExternalAudioPosition.sqf @@ -20,8 +20,18 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); private _pos = getPosASL _obj; -if (_obj isKindOf "Man") then { - _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + if (_obj isKindOf "Man") then { + _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + }; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; }; _pos; diff --git a/addons/sys_prc148/radio/fnc_isExternalAudio.sqf b/addons/sys_prc148/radio/fnc_isExternalAudio.sqf index 77b867302..0adb6b23c 100644 --- a/addons/sys_prc148/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_prc148/radio/fnc_isExternalAudio.sqf @@ -18,4 +18,4 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; -(HASH_GET(_radioData, "audioPath") == "INTAUDIO") +(HASH_GET(_radioData, "audioPath") in ["INTAUDIO", "RACKSPEAKER"]) diff --git a/addons/sys_prc152/fnc_initializeRadio.sqf b/addons/sys_prc152/fnc_initializeRadio.sqf index 29ab0de76..8823e06c6 100644 --- a/addons/sys_prc152/fnc_initializeRadio.sqf +++ b/addons/sys_prc152/fnc_initializeRadio.sqf @@ -41,5 +41,5 @@ for "_i" from 0 to (count _channels)-1 do { HASH_SET(_radioData,"volume",1); HASH_SET(_radioData,"currentChannel",0); HASH_SET(_radioData,"radioOn",1); -HASH_SET(_radioData,"audioPath", "TOPAUDIO"); +HASH_SET(_radioData,"audioPath","TOPAUDIO"); HASH_SET(_radioData,"powerSource","BAT"); diff --git a/addons/sys_prc152/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_prc152/radio/fnc_getExternalAudioPosition.sqf index 4630f55c6..44cf754c0 100644 --- a/addons/sys_prc152/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_prc152/radio/fnc_getExternalAudioPosition.sqf @@ -20,8 +20,18 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); private _pos = getPosASL _obj; -if (_obj isKindOf "Man") then { - _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + if (_obj isKindOf "Man") then { + _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + }; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; }; _pos; diff --git a/addons/sys_prc152/radio/fnc_isExternalAudio.sqf b/addons/sys_prc152/radio/fnc_isExternalAudio.sqf index 77b867302..0adb6b23c 100644 --- a/addons/sys_prc152/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_prc152/radio/fnc_isExternalAudio.sqf @@ -18,4 +18,4 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; -(HASH_GET(_radioData, "audioPath") == "INTAUDIO") +(HASH_GET(_radioData, "audioPath") in ["INTAUDIO", "RACKSPEAKER"]) diff --git a/addons/sys_prc77/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_prc77/radio/fnc_getExternalAudioPosition.sqf index 3a4d5bfeb..93419cc68 100644 --- a/addons/sys_prc77/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_prc77/radio/fnc_getExternalAudioPosition.sqf @@ -20,4 +20,20 @@ */ #include "script_component.hpp" -[0,0,0]; +params ["_radioId", "_event", "_eventData", "_radioData"]; + +private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); +private _pos = getPosASL _obj; + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + _pos = [0,0,0]; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; +}; + +_pos diff --git a/addons/sys_prc77/radio/fnc_initializeRadio.sqf b/addons/sys_prc77/radio/fnc_initializeRadio.sqf index 0d73258e7..a9b754de2 100644 --- a/addons/sys_prc77/radio/fnc_initializeRadio.sqf +++ b/addons/sys_prc77/radio/fnc_initializeRadio.sqf @@ -71,15 +71,16 @@ HASH_SET(_radioData,"radioOn",1); //0 - OFF, 1 - ON HASH_SET(_radioData,"band",_band); //{0,1} HASH_SET(_radioData,"currentPreset",[ARR_2(_knobPositions,_secondPresetKnobPositions)]); //Array of Presetarrays (KnobPositions) HASH_SET(_radioData,"currentChannel",_knobPositions); -HASH_SET(_radioData,"powerSource", "BAT"); +HASH_SET(_radioData,"powerSource","BAT"); +HASH_SET(_radioData,"audioPath","HEADSET"); //Common Channel Settings HASH_SET(_radioData,"frequencyTX",_frequencyTx); HASH_SET(_radioData,"frequencyRX",_frequencyTx); HASH_SET(_radioData,"power",3500); HASH_SET(_radioData,"mode","singleChannel"); -HASH_SET(_radioData,"CTCSSTx", 150); -HASH_SET(_radioData,"CTCSSRx", 150); +HASH_SET(_radioData,"CTCSSTx",150); +HASH_SET(_radioData,"CTCSSRx",150); HASH_SET(_radioData,"modulation","FM"); HASH_SET(_radioData,"encryption",0); HASH_SET(_radioData,"TEK",""); diff --git a/addons/sys_prc77/radio/fnc_isExternalAudio.sqf b/addons/sys_prc77/radio/fnc_isExternalAudio.sqf index 9d7fe89bb..744e94824 100644 --- a/addons/sys_prc77/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_prc77/radio/fnc_isExternalAudio.sqf @@ -20,4 +20,6 @@ */ #include "script_component.hpp" -false; +params ["_radioId", "_event", "_eventData", "_radioData"]; + +(HASH_GET(_radioData, "audioPath") == "RACKSPEAKER") diff --git a/addons/sys_rack/XEH_PREP.hpp b/addons/sys_rack/XEH_PREP.hpp index ce79976e9..6950ed5da 100644 --- a/addons/sys_rack/XEH_PREP.hpp +++ b/addons/sys_rack/XEH_PREP.hpp @@ -5,6 +5,7 @@ PREP(rackListChildrenActions); PREP(onReturnRackId); PREP(onReturnRadioId); +PREP(activateRackSpeaker); PREP(addRack); PREP(addRackOnReturn); PREP(initVehicle); diff --git a/addons/sys_rack/fnc_addRack.sqf b/addons/sys_rack/fnc_addRack.sqf index 1277d2f89..4d8777f67 100644 --- a/addons/sys_rack/fnc_addRack.sqf +++ b/addons/sys_rack/fnc_addRack.sqf @@ -23,11 +23,11 @@ */ #include "script_component.hpp" -params ["_vehicle", "_rackClassname", "_rackName", ["_isRadioRemovable", true], ["_allowed", ["inside"]], ["_disabled", []], ["_mountedRadio",""], ["_defaultComponents", []], ["_intercoms",[]]]; +params ["_vehicle", "_rackClassname", "_rackName", ["_isRadioRemovable", true], ["_allowed", ["inside"]], ["_disabled", []], ["_mountedRadio",""], ["_defaultComponents", []], ["_intercoms",[]], ["_rackPosition", [0, 0, 0]]]; private _queue = _vehicle getVariable [QGVAR(queue), []]; -_queue pushBack [_rackClassname, _rackName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _defaultComponents, _intercoms]; +_queue pushBack [_rackClassname, _rackName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _defaultComponents, _intercoms, _rackPosition]; _vehicle setVariable [QGVAR(queue), _queue]; // Request RACK ID diff --git a/addons/sys_rack/fnc_initVehicle.sqf b/addons/sys_rack/fnc_initVehicle.sqf index 6e5098f57..4c9ab330b 100644 --- a/addons/sys_rack/fnc_initVehicle.sqf +++ b/addons/sys_rack/fnc_initVehicle.sqf @@ -32,7 +32,17 @@ if (!_initialized) then { private _isRadioRemovable = getNumber (_x >> "isRadioRemovable") == 1; private _intercoms = [_vehicle, _x] call FUNC(configWiredIntercoms); - [_vehicle, _componentName, _displayName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _components, _intercoms] call FUNC(addRack); + // Speaker + private _positionConfig = _x >> "rackPosition"; + private _speakerPosition = [0, 0, 0]; // Default to main action point + if (isText _positionConfig) then { + _speakerPosition = _vehicle selectionPosition (getText _positionConfig); // Convert to coordinates for sys_core intercomPFH checks + }; + if (isArray _positionConfig) then { + _speakerPosition = getArray _positionConfig; + }; + + [_vehicle, _componentName, _displayName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _components, _intercoms, _positionConfig] call FUNC(addRack); } forEach (configProperties [_racks, "isClass _x", true]); _vehicle setVariable [QGVAR(initialized), true, true]; diff --git a/addons/sys_rack/fnc_initializeRack.sqf b/addons/sys_rack/fnc_initializeRack.sqf index 8d552e5a3..38adada54 100644 --- a/addons/sys_rack/fnc_initializeRack.sqf +++ b/addons/sys_rack/fnc_initializeRack.sqf @@ -12,14 +12,14 @@ * None * * Example: - * ["ACRE_VRC110_ID_1","initializeRack",["ACRE_VRC110_ID_1","Dash",true,["inside"],[["cargo", 1],["ffv", [2]]],false,[],vehicle1],(acre_sys_data_radioData getVariable "ACRE_VRC110_ID_1")] call acre_sys_rack_fnc_initializeRack + * ["ACRE_VRC110_ID_1","initializeRack",["ACRE_VRC110_ID_1","Dash",true,["inside"],[["cargo", 1],["ffv", [2]]],false,[],[0,0,0],vehicle1],(acre_sys_data_radioData getVariable "ACRE_VRC110_ID_1")] call acre_sys_rack_fnc_initializeRack * * Public: No */ #include "script_component.hpp" params ["_rackId", "", "_eventData", "_rackData"]; -_eventData params ["_componentName", "_displayName", "_isRadioRemovable", "_allowed", "_disabled", "_mountedRadio", "_defaultComponents", "_intercoms", "_vehicle"]; +_eventData params ["_componentName", "_displayName", "_isRadioRemovable", "_allowed", "_disabled", "_mountedRadio", "_defaultComponents", "_intercoms", "_rackPosition", "_vehicle"]; HASH_SET(_rackData,"name",_displayName); @@ -28,6 +28,7 @@ HASH_SET(_rackData,"disabled",_disabled); HASH_SET(_rackData,"mountedRadio",_mountedRadio); HASH_SET(_rackData,"isRadioRemovable",_isRadioRemovable); HASH_SET(_rackData,"wiredIntercoms",_intercoms); +HASH_SET(_rackData,"rackPosition",_rackPosition); HASH_SET(_rackData,"vehicle",_vehicle); //Only run on server as initializeRack is called globally. diff --git a/addons/sys_rack/sem90/fnc_sem90UnmountRadio.sqf b/addons/sys_rack/sem90/fnc_sem90UnmountRadio.sqf index 0525dba97..8333f4b01 100644 --- a/addons/sys_rack/sem90/fnc_sem90UnmountRadio.sqf +++ b/addons/sys_rack/sem90/fnc_sem90UnmountRadio.sqf @@ -24,3 +24,4 @@ private _radioId = _eventData; //Enable VAA Mode. [_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); +[_radioId, "setState", ["audioPath", "HEADSET"]] call EFUNC(sys_data,dataEvent); diff --git a/addons/sys_rack/stringtable.xml b/addons/sys_rack/stringtable.xml index f15c3de10..9e391bb2e 100644 --- a/addons/sys_rack/stringtable.xml +++ b/addons/sys_rack/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -100,5 +100,11 @@ ダッシュボードを上げる Painel Superior + + Turn On Speaker + + + Turn Off Speaker + diff --git a/addons/sys_rack/vrc103/fnc_vrc103UnmountRadio.sqf b/addons/sys_rack/vrc103/fnc_vrc103UnmountRadio.sqf index 08bb4cf15..5f0c98e32 100644 --- a/addons/sys_rack/vrc103/fnc_vrc103UnmountRadio.sqf +++ b/addons/sys_rack/vrc103/fnc_vrc103UnmountRadio.sqf @@ -24,3 +24,4 @@ private _radioId = _eventData; //Enable VAA Mode. [_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); +[_radioId, "setState", ["audioPath", "HEADSET"]] call EFUNC(sys_data,dataEvent); diff --git a/addons/sys_rack/vrc110/fnc_vrc110UnmountRadio.sqf b/addons/sys_rack/vrc110/fnc_vrc110UnmountRadio.sqf index aa9f86e59..5351f87c8 100644 --- a/addons/sys_rack/vrc110/fnc_vrc110UnmountRadio.sqf +++ b/addons/sys_rack/vrc110/fnc_vrc110UnmountRadio.sqf @@ -24,3 +24,9 @@ private _radioId = _eventData; // Switch back to battery mode. [_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); + +private _audioPath = [_radioId, "getState", "audioPath"] call EFUNC(sys_data,dataEvent); + +if (_audioPath == "RACKSPEAKER") then { + [_radioId, "setState", ["audioPath", "TOPAUDIO"]] call EFUNC(sys_data,dataEvent); +}; diff --git a/addons/sys_rack/vrc111/fnc_vrc111UnmountRadio.sqf b/addons/sys_rack/vrc111/fnc_vrc111UnmountRadio.sqf index ae6a000e0..db764f56a 100644 --- a/addons/sys_rack/vrc111/fnc_vrc111UnmountRadio.sqf +++ b/addons/sys_rack/vrc111/fnc_vrc111UnmountRadio.sqf @@ -24,3 +24,9 @@ private _radioId = _eventData; // Switch back to battery mode. [_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); + +private _audioPath = [_radioId, "getState", "audioPath"] call EFUNC(sys_data,dataEvent); + +if (_audioPath == "RACKSPEAKER") then { + [_radioId, "setState", ["audioPath", "TOPAUDIO"]] call EFUNC(sys_data,dataEvent); +}; diff --git a/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf b/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf index 5fc537e09..7d9b6bedd 100644 --- a/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf +++ b/addons/sys_rack/vrc64/fnc_vrc64UnmountRadio.sqf @@ -24,3 +24,4 @@ private _radioId = _eventData; //Enable VAA Mode. [_radioId, "setState", ["powerSource", "BAT"]] call EFUNC(sys_data,dataEvent); +[_radioId, "setState", ["audioPath", "HEADSET"]] call EFUNC(sys_data,dataEvent); diff --git a/addons/sys_sem52sl/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_sem52sl/radio/fnc_getExternalAudioPosition.sqf index 8d63a9ef6..ad90003c5 100644 --- a/addons/sys_sem52sl/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_sem52sl/radio/fnc_getExternalAudioPosition.sqf @@ -51,8 +51,18 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); private _pos = getPosASL _obj; -if (_obj isKindOf "Man") then { - _pos = ATLtoASL (_obj modelToWorldVisual (_obj selectionPosition "RightShoulder")); + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + if (_obj isKindOf "Man") then { + _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + }; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; }; _pos; diff --git a/addons/sys_sem52sl/radio/fnc_initializeRadio.sqf b/addons/sys_sem52sl/radio/fnc_initializeRadio.sqf index 1f21a6004..5eb567c14 100644 --- a/addons/sys_sem52sl/radio/fnc_initializeRadio.sqf +++ b/addons/sys_sem52sl/radio/fnc_initializeRadio.sqf @@ -83,4 +83,4 @@ HASH_SET(_radioData,"channelKnobPosition", 2); // Channel 1 (after on/off option HASH_SET(_radioData,"volumeKnobPosition", 0);// mid-way HASH_SET(_radioData,"programmingStep", 0); HASH_SET(_radioData,"lastActiveChannel",0); -HASH_SET(_radioData,"audioPath", "HEADSET"); +HASH_SET(_radioData,"audioPath","HEADSET"); diff --git a/addons/sys_sem52sl/radio/fnc_isExternalAudio.sqf b/addons/sys_sem52sl/radio/fnc_isExternalAudio.sqf index 41770ef44..0f6651c84 100644 --- a/addons/sys_sem52sl/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_sem52sl/radio/fnc_isExternalAudio.sqf @@ -42,4 +42,4 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; -(HASH_GET(_radioData, "audioPath") == "INTSPEAKER") +(HASH_GET(_radioData, "audioPath") in ["INTSPEAKER", "RACKSPEAKER"]) diff --git a/addons/sys_sem70/radio/fnc_getExternalAudioPosition.sqf b/addons/sys_sem70/radio/fnc_getExternalAudioPosition.sqf index 8d63a9ef6..ad90003c5 100644 --- a/addons/sys_sem70/radio/fnc_getExternalAudioPosition.sqf +++ b/addons/sys_sem70/radio/fnc_getExternalAudioPosition.sqf @@ -51,8 +51,18 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; private _obj = [_radioId] call EFUNC(sys_radio,getRadioObject); private _pos = getPosASL _obj; -if (_obj isKindOf "Man") then { - _pos = ATLtoASL (_obj modelToWorldVisual (_obj selectionPosition "RightShoulder")); + +private _rackId = [_radioId] call EFUNC(sys_rack,getRackFromRadio); +if (_rackId isEqualTo "") then { + if (_obj isKindOf "Man") then { + _pos = ATLtoASL (_obj modelToWorld (_obj selectionPosition "RightShoulder")); + }; +} else { + private _vehicle = [_radioId] call EFUNC(sys_rack,getVehicleFromRack); + private _position = [_rackId, _vehicle] call EFUNC(sys_rack,getRackPosition); + if !(_position isEqualTo [0, 0, 0]) then { + _pos = ATLtoASL (_vehicle modelToWorld _position); + }; }; _pos; diff --git a/addons/sys_sem70/radio/fnc_initializeRadio.sqf b/addons/sys_sem70/radio/fnc_initializeRadio.sqf index ebebce5e4..dc7aa4bec 100644 --- a/addons/sys_sem70/radio/fnc_initializeRadio.sqf +++ b/addons/sys_sem70/radio/fnc_initializeRadio.sqf @@ -82,8 +82,8 @@ HASH_SET(_radioData,"radioOn",1); HASH_SET(_radioData,"volume",1); HASH_SET(_radioData,"currentChannel",GVAR(manualChannel)); // Manual Channel //HASH_SET(_radioData,"lastActiveChannel",GVAR(manualChannel)); -HASH_SET(_radioData,"audioPath", "HEADSET"); -HASH_SET(_radioData,"powerSource", "BAT"); +HASH_SET(_radioData,"audioPath","HEADSET"); +HASH_SET(_radioData,"powerSource","BAT"); // Channel //HASH_SET(_radioData,"mode","singleChannel"); // or "sem70AKW" diff --git a/addons/sys_sem70/radio/fnc_isExternalAudio.sqf b/addons/sys_sem70/radio/fnc_isExternalAudio.sqf index 41770ef44..3846a42c4 100644 --- a/addons/sys_sem70/radio/fnc_isExternalAudio.sqf +++ b/addons/sys_sem70/radio/fnc_isExternalAudio.sqf @@ -42,4 +42,4 @@ params ["_radioId", "_event", "_eventData", "_radioData"]; -(HASH_GET(_radioData, "audioPath") == "INTSPEAKER") +(HASH_GET(_radioData, "audioPath") == "RACKSPEAKER") From 679b8f277ed14e7a9c9d5d4814febb71ec2d8a4b Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sun, 11 Feb 2018 16:24:07 +0100 Subject: [PATCH 6/9] Missing file --- addons/sys_rack/fnc_activateRackSpeaker.sqf | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 addons/sys_rack/fnc_activateRackSpeaker.sqf diff --git a/addons/sys_rack/fnc_activateRackSpeaker.sqf b/addons/sys_rack/fnc_activateRackSpeaker.sqf new file mode 100644 index 000000000..70fa1a995 --- /dev/null +++ b/addons/sys_rack/fnc_activateRackSpeaker.sqf @@ -0,0 +1,24 @@ +/* + * Author: ACRE2Team + * Sets the mounted radio external audio to ON/OFF. + * + * Arguments: + * 0: Radio Unique ID + * 1: External audio on/off + * 1: Rack Unique ID + * + * Return Value: + * None + * + * Example: + * ["ACRE_PRC152_ID_1", true] call acre_sys_rack_fnc_activateRackSpeaker + * + * Public: No + */ + #include "script_component.hpp" + +params ["_radioId", "_active", ["_rackId",""]]; + +// TODO: For version 2.7. Implement check if rack has an external speaker + +[_radioId, "setState", ["audioPath", "RACKSPEAKER"]] call EFUNC(sys_data,dataEvent); From b28f34476e84fd412c7043b2fbfcb874ac4678bf Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Thu, 15 Feb 2018 00:11:29 +0100 Subject: [PATCH 7/9] Fix showing loudspeaker action without racks --- addons/ace_interact/fnc_radioChildrenActions.sqf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/ace_interact/fnc_radioChildrenActions.sqf b/addons/ace_interact/fnc_radioChildrenActions.sqf index 1a89d8a09..b0f17c3f8 100644 --- a/addons/ace_interact/fnc_radioChildrenActions.sqf +++ b/addons/ace_interact/fnc_radioChildrenActions.sqf @@ -38,6 +38,13 @@ if (!(_radio in ACRE_EXTERNALLY_USED_PERSONAL_RADIOS)) then { if (!((_radio in ACRE_ACCESSIBLE_RACK_RADIOS && {isTurnedOut acre_player}) || _radio in ACRE_HEARABLE_RACK_RADIOS)) then { _action = ["acre_open_radio", localize ELSTRING(sys_list,OpenRadio), "", {[((_this select 2) select 0)] call EFUNC(sys_radio,openRadio)}, {true}, {}, _params] call ace_interact_menu_fnc_createAction; _actions pushBack [_action, [], _target]; + }; + + _action = ["acre_make_active", localize LSTRING(setAsActive), "", {[(_this select 2) select 0] call EFUNC(api,setCurrentRadio)}, {!((_this select 2) select 1)}, {},_params] call ace_interact_menu_fnc_createAction; + _actions pushBack [_action, [], _target]; + + // Loudspeakers + if (_radio in ACRE_ACCESSIBLE_RACK_RADIOS) then { if ([_radio, "isExternalAudio"] call EFUNC(sys_data,dataEvent)) then { _action = ["acre_loudspeaker", localize ELSTRING(sys_rack,turnOffSpeaker), "", {[((_this select 2) select 0), false] call EFUNC(sys_rack,activateRackSpeaker)}, {true}, {}, _params] call ace_interact_menu_fnc_createAction; } else { @@ -47,9 +54,6 @@ if (!(_radio in ACRE_EXTERNALLY_USED_PERSONAL_RADIOS)) then { _actions pushBack [_action, [], _target]; }; - _action = ["acre_make_active", localize LSTRING(setAsActive), "", {[(_this select 2) select 0] call EFUNC(api,setCurrentRadio)}, {!((_this select 2) select 1)}, {},_params] call ace_interact_menu_fnc_createAction; - _actions pushBack [_action, [], _target]; - // External radios. Show only options to share/stop sharing the radio if you are the actual owner and not an external user. if (!(_radio in ACRE_ACTIVE_EXTERNAL_RADIOS || _radio in ACRE_HEARABLE_RACK_RADIOS)) then { _action = ["acre_share_radio", localize ELSTRING(sys_external,shareRadio), "", {[(_this select 2) select 0, true] call EFUNC(sys_external,allowExternalUse)}, {!([(_this select 2) select 0] call EFUNC(sys_external,isRadioShared))}, {}, _params] call ace_interact_menu_fnc_createAction; From a92855ed934fa8819989e315d347730d456c2700 Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Wed, 21 Feb 2018 20:20:06 +0100 Subject: [PATCH 8/9] Fixed API functions --- addons/api/fnc_addRackToVehicle.sqf | 7 ++++--- addons/sys_rack/XEH_postInit.sqf | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/api/fnc_addRackToVehicle.sqf b/addons/api/fnc_addRackToVehicle.sqf index e97b67358..771922685 100644 --- a/addons/api/fnc_addRackToVehicle.sqf +++ b/addons/api/fnc_addRackToVehicle.sqf @@ -14,13 +14,14 @@ * 4: Base classname of the mounted radio (Without ID). Empty string for no radio (default: "") * 7: Components (default: []) * 8: Connected intercoms (default: []) + * 9: Speaker position (default: [0,0,0]) * 2: Force initialisation (default: false) * * Return Value: * Rack added successfully * * Example: - * [cursorTarget, ["ACRE_VRC103", "Upper Dash", "Dash", false, ["external"], [], "ACRE_PRC117F", [], ["intercom_1"]]] call acre_api_fnc_addRackToVehicle + * [cursorTarget, ["ACRE_VRC103", "Upper Dash", "Dash", false, ["external"], [], "ACRE_PRC117F", [], ["intercom_1"], [-1.0, 2.0, 0.0]]] call acre_api_fnc_addRackToVehicle * * Public: Yes */ @@ -64,7 +65,7 @@ if (count _rackConfiguration != 9) exitWith { false }; -_rackConfiguration params [["_rackClassname", ""], ["_rackName", ""], ["_rackShortName", ""], ["_isRadioRemovable", false], ["_allowed", ["inside"]], ["_disabled", []], ["_mountedRadio", ""], ["_defaultComponents", []], ["_intercoms", []]]; +_rackConfiguration params [["_rackClassname", ""], ["_rackName", ""], ["_rackShortName", ""], ["_isRadioRemovable", false], ["_allowed", ["inside"]], ["_disabled", []], ["_mountedRadio", ""], ["_defaultComponents", []], ["_intercoms", []], ["_speakerPosition", [0, 0, 0]]]; if (_rackClassname isEqualTo "") exitWith { WARNING_1("No rack specified for vehicle %1",_vehicle); @@ -95,6 +96,6 @@ if (isDedicated) then { _player = acre_player; }; -[QEGVAR(sys_rack,addVehicleRacks), [_vehicle, _rackClassname, _rackName, _rackShortName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _defaultComponents, _intercoms], _player] call CBA_fnc_targetEvent; +[QEGVAR(sys_rack,addVehicleRacks), [_vehicle, _rackClassname, _rackName, _rackShortName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _defaultComponents, _intercoms, _speakerPosition], _player] call CBA_fnc_targetEvent; true diff --git a/addons/sys_rack/XEH_postInit.sqf b/addons/sys_rack/XEH_postInit.sqf index ad957cf2d..21362c1e5 100644 --- a/addons/sys_rack/XEH_postInit.sqf +++ b/addons/sys_rack/XEH_postInit.sqf @@ -52,9 +52,9 @@ if (vehicle acre_player != acre_player) then { }] call CBA_fnc_addEventHandler; [QGVAR(addVehicleRacks), { - params ["_vehicle", "_rackClassname", "_displayName", "_rackName", "_rackShortName", "_isRadioRemovable", "_allowed", "_disabled", "_mountedRadio", "_components", "_intercoms"]; + params ["_vehicle", "_rackClassname", "_displayName", "_rackName", "_rackShortName", "_isRadioRemovable", "_allowed", "_disabled", "_mountedRadio", "_components", "_intercoms", "_speakerPosition"]; - [_vehicle, _rackClassname, _displayName, _rackName, _rackShortName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _components, _intercoms] call FUNC(addRack); + [_vehicle, _rackClassname, _displayName, _rackName, _rackShortName, _isRadioRemovable, _allowed, _disabled, _mountedRadio, _components, _intercoms, _speakerPosition] call FUNC(addRack); // Give some time for the racks to initialise properly [{ From f64853930802bd6711b5634c09b1bf0f59de28a2 Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Tue, 16 Oct 2018 11:28:31 +0200 Subject: [PATCH 9/9] Includes on top --- addons/api/fnc_getIntercomStationVolume.sqf | 32 --------------------- addons/sys_rack/fnc_activateRackSpeaker.sqf | 2 +- 2 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 addons/api/fnc_getIntercomStationVolume.sqf diff --git a/addons/api/fnc_getIntercomStationVolume.sqf b/addons/api/fnc_getIntercomStationVolume.sqf deleted file mode 100644 index 645a6af73..000000000 --- a/addons/api/fnc_getIntercomStationVolume.sqf +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Author: ACRE2Team - * Retrieves the current intercom volume of the given unit. - * - * Arguments: - * 0: Vehicle . Default: objNull. - * 1: Unit . Default: objNull. - * 2: Intercom network . Default: 0. - * 3: Seat . Default: []. - * - * Return Value: - * Intercom volume in [0,1]. -1 if it could not be retrieved - * - * Example: - * [vehicle acre_player, acre_player,"intercom_1"] call acre_api_fnc_getIntercomStationVolume - * [vehicle acre_player, objNull,"intercom_1", ["turret"], [1]] call acre_api_fnc_getIntercomStationVolume - * [vehicle acre_player, objNull, 2, ["cargo"], 1] call acre_api_fnc_getIntercomStationVolume - * [objNull, acre_player, 0] call acre_api_fnc_getIntercomStationVolume - * - * Public: Yes - */ -#include "script_component.hpp" - -params [["_vehicle", objNull], ["_unit", objNull], ["_intercomNetwork", 0], ["_seat", []]]; - -private _arguments = [_vehicle, _unit, _intercomNetwork, _seat] call FUNC(helperValidateIntercomArguments); - -if (_arguments isEqualTo []) then { - -1 -} else { - [_arguments select 0, _arguments select 1, _arguments select 2, INTERCOM_STATIONSTATUS_CONNECTION, _arguments select 3] call EFUNC(sys_intercom,getStationConfiguration) -}; diff --git a/addons/sys_rack/fnc_activateRackSpeaker.sqf b/addons/sys_rack/fnc_activateRackSpeaker.sqf index 70fa1a995..a1b8b21ed 100644 --- a/addons/sys_rack/fnc_activateRackSpeaker.sqf +++ b/addons/sys_rack/fnc_activateRackSpeaker.sqf @@ -1,3 +1,4 @@ + #include "script_component.hpp" /* * Author: ACRE2Team * Sets the mounted radio external audio to ON/OFF. @@ -15,7 +16,6 @@ * * Public: No */ - #include "script_component.hpp" params ["_radioId", "_active", ["_rackId",""]];