From ae080c7882d2a5746a7b99b0afd1e08301a6b03e Mon Sep 17 00:00:00 2001 From: Emma Pollak <123012831+empollak@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:41:00 -0500 Subject: [PATCH 1/5] Allow dynamic changing of FT markers This does technically cause a performance hit to missions that disable squad/FT markers, but it's no more than the normal performance cost of having them, so it should be fine. --- .../fn_createFireteamMarkerHook.sqf | 32 +++++------- .../fn_drawFireteamMarkers.sqf | 1 + components/ftMemberMarkers/init_component.sqf | 15 ++++++ .../squadMarkers/fn_createSquadMarkerHook.sqf | 51 +++++++++---------- components/squadMarkers/init_component.sqf | 6 ++- configuration/mapMarkers.hpp | 3 ++ .../components/groups/clientStartupGroup.sqf | 1 + 7 files changed, 62 insertions(+), 47 deletions(-) create mode 100644 components/ftMemberMarkers/init_component.sqf diff --git a/components/ftMemberMarkers/fn_createFireteamMarkerHook.sqf b/components/ftMemberMarkers/fn_createFireteamMarkerHook.sqf index dec74635..b06f61b9 100644 --- a/components/ftMemberMarkers/fn_createFireteamMarkerHook.sqf +++ b/components/ftMemberMarkers/fn_createFireteamMarkerHook.sqf @@ -1,25 +1,21 @@ #include "macros.hpp" -#ifdef ENABLE_FIRETEAM_MARKERS +RUN_AS_ASYNC(f_fnc_createFireteamMarkerHook); +WAIT_UNTIL_SETTINGS_READY(); - RUN_AS_ASYNC(f_fnc_createFireteamMarkerHook); - WAIT_UNTIL_SETTINGS_READY(); +params ["_display", "_control"]; - params ["_display", "_control"]; +if (_display getVariable ["f_var_ftMarker_eventId", -1] >= 0) exitWith +{ + DEBUG_FORMAT2_LOG("[FTMarkers] Aborted creating handler on display %1 with control %2 because it was already registered.",_display,_control) +}; - if (_display getVariable ["f_var_ftMarker_eventId", -1] >= 0) exitWith - { - DEBUG_FORMAT2_LOG("[FTMarkers] Aborted creating handler on display %1 with control %2 because it was already registered.",_display,_control) - }; +DEBUG_FORMAT2_LOG("[FTMarkers] Creating handler on display %1 with control %2.",_display,_control) - DEBUG_FORMAT2_LOG("[FTMarkers] Creating handler on display %1 with control %2.",_display,_control) +_eventId = _control ctrlAddEventHandler +[ + "Draw", + "_this call f_fnc_drawFireteamMarkers" +]; - _eventId = _control ctrlAddEventHandler - [ - "Draw", - "_this call f_fnc_drawFireteamMarkers" - ]; - - _display setVariable ["f_var_ftMarker_eventId", _eventId]; - -#endif +_display setVariable ["f_var_ftMarker_eventId", _eventId]; diff --git a/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf b/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf index c5fae694..fe113dac 100644 --- a/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf +++ b/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf @@ -4,6 +4,7 @@ params ["_map"]; if !(alive player) exitWith {}; if !IS_TRUE(f_var_allSettingsReady) exitWith {}; +if IS_TRUE(f_var_hideFTMarkers) exitWith {}; #ifdef HIDE_DEAD_IN_SQUAD _group = (units player) select {alive _x}; diff --git a/components/ftMemberMarkers/init_component.sqf b/components/ftMemberMarkers/init_component.sqf new file mode 100644 index 00000000..9fe68203 --- /dev/null +++ b/components/ftMemberMarkers/init_component.sqf @@ -0,0 +1,15 @@ +#include "macros.hpp" + +CLIENT_ONLY; + +DEBUG_PRINT_LOG("initting fireteam member markers") + +#ifdef ENABLE_FIRETEAM_MARKERS + +f_var_hideFTMarkers = false; + +#else + +f_var_hideFTMarkers = true; + +#endif \ No newline at end of file diff --git a/components/squadMarkers/fn_createSquadMarkerHook.sqf b/components/squadMarkers/fn_createSquadMarkerHook.sqf index d2f655d7..a1cb6ec1 100644 --- a/components/squadMarkers/fn_createSquadMarkerHook.sqf +++ b/components/squadMarkers/fn_createSquadMarkerHook.sqf @@ -1,40 +1,37 @@ #include "macros.hpp" -#ifdef ENABLE_SQUAD_MARKERS - RUN_AS_ASYNC(f_fnc_createSquadMarkerHook); - WAIT_UNTIL_SETTINGS_READY(); +RUN_AS_ASYNC(f_fnc_createSquadMarkerHook); +WAIT_UNTIL_SETTINGS_READY(); - params ["_display", "_control"]; +params ["_display", "_control"]; - // If ft markers are enabled, wait until this display has ft markers hooked. Draw calls should occur in inverse order of registration. - #ifdef ENABLE_FIRETEAM_MARKERS +// If ft markers are enabled, wait until this display has ft markers hooked. Draw calls should occur in inverse order of registration. +#ifdef ENABLE_FIRETEAM_MARKERS - if (_display getVariable ["f_var_ftMarker_eventId", -1] < 0) then + if (_display getVariable ["f_var_ftMarker_eventId", -1] < 0) then + { + DEBUG_FORMAT1_LOG("[SquadMarkers] Waiting for display %1 to get a ft-marker hook registered.",_display) + waitUntil { - DEBUG_FORMAT1_LOG("[SquadMarkers] Waiting for display %1 to get a ft-marker hook registered.",_display) - waitUntil - { - uiSleep 1; - _display getVariable ["f_var_ftMarker_eventId", -1] >= 0 - }; + uiSleep 1; + _display getVariable ["f_var_ftMarker_eventId", -1] >= 0 }; - - #endif - - if (_display getVariable ["f_var_squadMarker_eventId", -1] >= 0) exitWith - { - DEBUG_FORMAT2_LOG("[SquadMarkers] Aborted creating handler on display %1 with control %2 because it was already registered.",_display,_control) }; - DEBUG_FORMAT2_LOG("[SquadMarkers] Creating handler on display %1 with control %2.",_display,_control) +#endif - _eventId = _control ctrlAddEventHandler - [ - "Draw", - "_this call f_fnc_drawSquadMarkers" - ]; +if (_display getVariable ["f_var_squadMarker_eventId", -1] >= 0) exitWith +{ + DEBUG_FORMAT2_LOG("[SquadMarkers] Aborted creating handler on display %1 with control %2 because it was already registered.",_display,_control) +}; - _display setVariable ["f_var_squadMarker_eventId", _eventId]; +DEBUG_FORMAT2_LOG("[SquadMarkers] Creating handler on display %1 with control %2.",_display,_control) -#endif +_eventId = _control ctrlAddEventHandler +[ + "Draw", + "_this call f_fnc_drawSquadMarkers" +]; + +_display setVariable ["f_var_squadMarker_eventId", _eventId]; diff --git a/components/squadMarkers/init_component.sqf b/components/squadMarkers/init_component.sqf index cfe586fb..b5548a25 100644 --- a/components/squadMarkers/init_component.sqf +++ b/components/squadMarkers/init_component.sqf @@ -6,10 +6,12 @@ DEBUG_PRINT_LOG("initting squad markers") #ifdef ENABLE_SQUAD_MARKERS -[] call f_fnc_beginSquadMarkers; +f_var_hideSquadMarkers = false; #else -if (true) exitWith { DEBUG_PRINT_LOG("[SquadMarkers] init_component was called but ENABLE_SQUAD_MARKERS is not set.") }; +f_var_hideSquadMarkers = true; #endif + +[] call f_fnc_beginSquadMarkers; \ No newline at end of file diff --git a/configuration/mapMarkers.hpp b/configuration/mapMarkers.hpp index 6bcc187c..beccd15e 100644 --- a/configuration/mapMarkers.hpp +++ b/configuration/mapMarkers.hpp @@ -1,7 +1,10 @@ // To disable squad markers on the map, comment-out or delete the line below. +// If you want to change this setting while the mission is running, set f_var_hideSquadMarkers to true/false +// Comment/uncomment this line to be how you wish the setting to be at the start of the mission. #define ENABLE_SQUAD_MARKERS // To disable fireteam member markers on the map, comment-out or delete the line below. +// If you want to change whether fireteam member markers are drawn during the mission, set f_var_hideFTMarkers to true/false #define ENABLE_FIRETEAM_MARKERS // To hide AI squads on the map, comment-out or delete the line below. diff --git a/startup/components/groups/clientStartupGroup.sqf b/startup/components/groups/clientStartupGroup.sqf index 07e2548c..fd1f3125 100644 --- a/startup/components/groups/clientStartupGroup.sqf +++ b/startup/components/groups/clientStartupGroup.sqf @@ -3,6 +3,7 @@ #include "macros.hpp" +INIT_COMPONENT(ftMemberMarkers) INIT_COMPONENT(squadMarkers) // CAFE - Briefing From d1096d6a17eff9b78a1f269b197885bc287629be Mon Sep 17 00:00:00 2001 From: Emma Pollak <123012831+empollak@users.noreply.github.com> Date: Fri, 6 Feb 2026 22:02:23 -0500 Subject: [PATCH 2/5] Change to sqf config for clearer use --- .../ftMemberMarkers/fn_drawFireteamMarkers.sqf | 2 +- components/ftMemberMarkers/init_component.sqf | 15 --------------- components/squadMarkers/fn_beginSquadMarkers.sqf | 4 ++-- .../squadMarkers/fn_createSquadMarkerHook.sqf | 4 ++-- components/squadMarkers/fn_drawSquadMarkers.sqf | 2 +- .../squadMarkers/fn_initSquadMarkerManager.sqf | 10 +++------- components/squadMarkers/init_component.sqf | 10 ---------- configuration/mapMarkers.hpp | 14 -------------- configuration/mapMarkers.sqf | 15 +++++++++++++++ startup/components/groups/clientStartupGroup.sqf | 1 - .../configuration/groups/clientConfigGroup.sqf | 3 +++ startup/configuration/internals/configMacros.hpp | 1 - startup/configuration/internals/mapMarkers.sqf | 12 ++++++++++++ 13 files changed, 39 insertions(+), 54 deletions(-) delete mode 100644 components/ftMemberMarkers/init_component.sqf delete mode 100644 configuration/mapMarkers.hpp create mode 100644 configuration/mapMarkers.sqf create mode 100644 startup/configuration/internals/mapMarkers.sqf diff --git a/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf b/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf index fe113dac..2c43b53c 100644 --- a/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf +++ b/components/ftMemberMarkers/fn_drawFireteamMarkers.sqf @@ -4,7 +4,7 @@ params ["_map"]; if !(alive player) exitWith {}; if !IS_TRUE(f_var_allSettingsReady) exitWith {}; -if IS_TRUE(f_var_hideFTMarkers) exitWith {}; +if !IS_TRUE(f_var_showFTMarkers) exitWith {}; #ifdef HIDE_DEAD_IN_SQUAD _group = (units player) select {alive _x}; diff --git a/components/ftMemberMarkers/init_component.sqf b/components/ftMemberMarkers/init_component.sqf deleted file mode 100644 index 9fe68203..00000000 --- a/components/ftMemberMarkers/init_component.sqf +++ /dev/null @@ -1,15 +0,0 @@ -#include "macros.hpp" - -CLIENT_ONLY; - -DEBUG_PRINT_LOG("initting fireteam member markers") - -#ifdef ENABLE_FIRETEAM_MARKERS - -f_var_hideFTMarkers = false; - -#else - -f_var_hideFTMarkers = true; - -#endif \ No newline at end of file diff --git a/components/squadMarkers/fn_beginSquadMarkers.sqf b/components/squadMarkers/fn_beginSquadMarkers.sqf index 7688d983..9fccaa64 100644 --- a/components/squadMarkers/fn_beginSquadMarkers.sqf +++ b/components/squadMarkers/fn_beginSquadMarkers.sqf @@ -7,11 +7,11 @@ WAIT_UNTIL_PLAYER_EXISTS(); [] spawn f_fnc_initSquadMarkerManager; [] spawn f_fnc_squadMarkerArtilleryComputerManager; -#ifdef ENABLE_MICRODAGR_SQUADMARKERS +if IS_TRUE(f_var_enableMicroDAGRSquadMarkers) then { if !(isNil 'ace_microDAGR_miniMapDrawHandlers') then { ace_microDAGR_miniMapDrawHandlers pushBack f_fnc_drawSquadMarkers; }; -#endif +}; diff --git a/components/squadMarkers/fn_createSquadMarkerHook.sqf b/components/squadMarkers/fn_createSquadMarkerHook.sqf index a1cb6ec1..287687c8 100644 --- a/components/squadMarkers/fn_createSquadMarkerHook.sqf +++ b/components/squadMarkers/fn_createSquadMarkerHook.sqf @@ -7,7 +7,7 @@ WAIT_UNTIL_SETTINGS_READY(); params ["_display", "_control"]; // If ft markers are enabled, wait until this display has ft markers hooked. Draw calls should occur in inverse order of registration. -#ifdef ENABLE_FIRETEAM_MARKERS +if IS_TRUE(f_var_showFTMarkers) then { if (_display getVariable ["f_var_ftMarker_eventId", -1] < 0) then { @@ -19,7 +19,7 @@ params ["_display", "_control"]; }; }; -#endif +}; if (_display getVariable ["f_var_squadMarker_eventId", -1] >= 0) exitWith { diff --git a/components/squadMarkers/fn_drawSquadMarkers.sqf b/components/squadMarkers/fn_drawSquadMarkers.sqf index d9bbfed6..1d1bc8c7 100644 --- a/components/squadMarkers/fn_drawSquadMarkers.sqf +++ b/components/squadMarkers/fn_drawSquadMarkers.sqf @@ -1,7 +1,7 @@ #include "macros.hpp" if (isNil 'f_arr_squadMarkers') exitWith {}; -if (IS_TRUE(f_var_hideSquadMarkers)) exitWith {}; +if !IS_TRUE(f_var_showSquadMarkers) exitWith {}; if !IS_TRUE(f_var_squadMarkers_configLoaded) exitWith {}; params ["_map"]; diff --git a/components/squadMarkers/fn_initSquadMarkerManager.sqf b/components/squadMarkers/fn_initSquadMarkerManager.sqf index 55ee90c6..0958abe0 100644 --- a/components/squadMarkers/fn_initSquadMarkerManager.sqf +++ b/components/squadMarkers/fn_initSquadMarkerManager.sqf @@ -50,13 +50,9 @@ waitUntil if (_visible) then { _isAiOnly = ({isPlayer _x} count _units) <= 0; - -#ifdef SHOW_NPC_SQUADS - _shouldShow = true; -#endif -#ifndef SHOW_NPC_SQUADS - _shouldShow = !_isAiOnly; -#endif + + // Show squad if NPC squads are shown, or if it is not an NPC squad. + _shouldShow = IS_TRUE(f_var_showNPCSquads) or !_isAiOnly; if (_shouldShow) then { diff --git a/components/squadMarkers/init_component.sqf b/components/squadMarkers/init_component.sqf index b5548a25..1d7b1a67 100644 --- a/components/squadMarkers/init_component.sqf +++ b/components/squadMarkers/init_component.sqf @@ -4,14 +4,4 @@ CLIENT_ONLY; DEBUG_PRINT_LOG("initting squad markers") -#ifdef ENABLE_SQUAD_MARKERS - -f_var_hideSquadMarkers = false; - -#else - -f_var_hideSquadMarkers = true; - -#endif - [] call f_fnc_beginSquadMarkers; \ No newline at end of file diff --git a/configuration/mapMarkers.hpp b/configuration/mapMarkers.hpp deleted file mode 100644 index beccd15e..00000000 --- a/configuration/mapMarkers.hpp +++ /dev/null @@ -1,14 +0,0 @@ -// To disable squad markers on the map, comment-out or delete the line below. -// If you want to change this setting while the mission is running, set f_var_hideSquadMarkers to true/false -// Comment/uncomment this line to be how you wish the setting to be at the start of the mission. -#define ENABLE_SQUAD_MARKERS - -// To disable fireteam member markers on the map, comment-out or delete the line below. -// If you want to change whether fireteam member markers are drawn during the mission, set f_var_hideFTMarkers to true/false -#define ENABLE_FIRETEAM_MARKERS - -// To hide AI squads on the map, comment-out or delete the line below. -#define SHOW_NPC_SQUADS - -// To disable squadmarker MicroDAGR integration, comment-out or delete the line below. -#define ENABLE_MICRODAGR_SQUADMARKERS diff --git a/configuration/mapMarkers.sqf b/configuration/mapMarkers.sqf new file mode 100644 index 00000000..1a3cc59f --- /dev/null +++ b/configuration/mapMarkers.sqf @@ -0,0 +1,15 @@ +// To disable squad markers on the map, set the variable on the line below to false +// Note: This variable can be changed while the mission is running +f_var_showSquadMarkers = true; + +// To disable fireteam member markers on the map, set the variable on the line below to false +// Note: This variable can be changed while the mission is running +f_var_showFTMarkers = true; + +// To hide AI squads on the map, set the variable on the line below to false +// Note: This variable can be changed while the mission is running +f_var_showNPCSquads = true; + +// To disable squadmarker MicroDAGR integration, set the below variable to false. +// Note: This variable cannot be changed while the mission is running +f_var_enableMicroDAGRSquadMarkers = true; diff --git a/startup/components/groups/clientStartupGroup.sqf b/startup/components/groups/clientStartupGroup.sqf index fd1f3125..07e2548c 100644 --- a/startup/components/groups/clientStartupGroup.sqf +++ b/startup/components/groups/clientStartupGroup.sqf @@ -3,7 +3,6 @@ #include "macros.hpp" -INIT_COMPONENT(ftMemberMarkers) INIT_COMPONENT(squadMarkers) // CAFE - Briefing diff --git a/startup/configuration/groups/clientConfigGroup.sqf b/startup/configuration/groups/clientConfigGroup.sqf index 716e22b9..0e52b55a 100644 --- a/startup/configuration/groups/clientConfigGroup.sqf +++ b/startup/configuration/groups/clientConfigGroup.sqf @@ -15,3 +15,6 @@ // Squad markers #include "..\internals\squadMarkers.sqf" + +// Map markers +#include "..\internals\mapMarkers.sqf" \ No newline at end of file diff --git a/startup/configuration/internals/configMacros.hpp b/startup/configuration/internals/configMacros.hpp index fec89322..5cad8473 100644 --- a/startup/configuration/internals/configMacros.hpp +++ b/startup/configuration/internals/configMacros.hpp @@ -9,7 +9,6 @@ #include "..\..\..\configuration\ceasefire.hpp" #include "..\..\..\configuration\killTracking.hpp" #include "..\..\..\configuration\gravestones.hpp" -#include "..\..\..\configuration\mapMarkers.hpp" #include "..\..\..\configuration\viewDistanceEditor.hpp" #include "..\..\..\configuration\identityReplacement.hpp" #include "..\..\..\configuration\insignia.hpp" diff --git a/startup/configuration/internals/mapMarkers.sqf b/startup/configuration/internals/mapMarkers.sqf new file mode 100644 index 00000000..5b59661d --- /dev/null +++ b/startup/configuration/internals/mapMarkers.sqf @@ -0,0 +1,12 @@ +#include "macros.hpp" + +if (isNil "f_var_mapMarkers_already_defined") then +{ + f_var_mapMarkers_already_defined = true; + + #include "..\..\..\configuration\mapMarkers.sqf" +} +else +{ + DEBUG_PRINT_LOG("[MapMarkers]: Map markers config tried running multiple times.") +}; From 6db030b9ff7575460cc0cdcef4deb2fa276b9b8d Mon Sep 17 00:00:00 2001 From: Emma Pollak <123012831+empollak@users.noreply.github.com> Date: Sat, 7 Feb 2026 21:40:27 -0500 Subject: [PATCH 3/5] Delete f_var_hideSquadMarkers from globals Replaced with f_var_showSquadMarkers in mapMarkers config --- components/squadMarkers/globals.sqf | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/squadMarkers/globals.sqf b/components/squadMarkers/globals.sqf index e5571977..0728ce40 100644 --- a/components/squadMarkers/globals.sqf +++ b/components/squadMarkers/globals.sqf @@ -1,7 +1,5 @@ #include "macros.hpp" -f_var_hideSquadMarkers = false; - f_var_squadMarker_colourChoices = [ 'Red', From e453fbae8ddf1377e8a5d629caac21e5edb39435 Mon Sep 17 00:00:00 2001 From: Bubbus Date: Wed, 11 Feb 2026 19:28:52 +0000 Subject: [PATCH 4/5] Expanded docs in mapMarkers.sqf --- configuration/mapMarkers.sqf | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/configuration/mapMarkers.sqf b/configuration/mapMarkers.sqf index 1a3cc59f..370a803e 100644 --- a/configuration/mapMarkers.sqf +++ b/configuration/mapMarkers.sqf @@ -1,3 +1,20 @@ +/* + + Map marker configuration + + All settings below can be changed while the mission is running (except for MicroDAGR integration). + + These settings are individually changeable for each player. This is useful if some players should have markers and some should not. + To change these settings for everyone, make sure that the change is 'global'. Some examples are below: + + Example: disable squad markers for everyone (can be run mid-mission): + missionNamespace setVariable ["f_var_showSquadMarkers", false, true]; + + Example: disable squad markers for only the OPFOR side (can put this into the 'customStartup_server.sqf' file): + [missionNamespace, ["f_var_showSquadMarkers", false]] remoteExecCall ["setVariable", east, "ChangeOpforMarkers"]; + +*/ + // To disable squad markers on the map, set the variable on the line below to false // Note: This variable can be changed while the mission is running f_var_showSquadMarkers = true; @@ -11,5 +28,6 @@ f_var_showFTMarkers = true; f_var_showNPCSquads = true; // To disable squadmarker MicroDAGR integration, set the below variable to false. +// Note: MicroDAGR markers act like a normal GPS - they respect the configuration of the three settings above. // Note: This variable cannot be changed while the mission is running f_var_enableMicroDAGRSquadMarkers = true; From 15c6eafc7269371b96443c9c9f39811cb5a1a928 Mon Sep 17 00:00:00 2001 From: Bubbus Date: Wed, 11 Feb 2026 19:30:24 +0000 Subject: [PATCH 5/5] i have finally rember to fixed the acre docs --- configuration/acre_radio_configuration.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration/acre_radio_configuration.sqf b/configuration/acre_radio_configuration.sqf index 787a4b30..d258fd3e 100644 --- a/configuration/acre_radio_configuration.sqf +++ b/configuration/acre_radio_configuration.sqf @@ -82,7 +82,7 @@ ["_radio", "_channelName", "_side", "_role"] Example: // Removes a SEM-52 long-range radio from all BLUFOR FTLs, which was tuned to "GROUND CMD". - ["ACRE_SEM52SL", "GROUND CMD", west, "ftl"] call f_fnc_acre_giveRadioToAllInRole; + ["ACRE_SEM52SL", "GROUND CMD", west, "ftl"] call f_fnc_acre_removeRadioFromAllInRole; f_fnc_acre_removeRadioFromAllInGroup Takes away a radio from every unit in the given group and side. @@ -100,7 +100,7 @@ ["_radio", "_channelName", "_side", "_role", "_groupName"]; Example: // Removes a short-range radio from an extremely suspicious individual in the BLUFOR ALPHA group, which was tuned to "ALPHA SR" net. - ["ACRE_PRC343", "ALPHA SR", west, "sus", "ALPHA"] call f_fnc_acre_giveRadioToAllInGroup; + ["ACRE_PRC343", "ALPHA SR", west, "sus", "ALPHA"] call f_fnc_acre_removeRadioFromRoleInGroup; LANGUAGE COMMAND ARGUMENTS REFERENCE: @@ -154,7 +154,7 @@ Example: // On the BLUFOR side, gives a very suspicious rifleman in CHARLIE the OPFOR language. Do the same for the CHARLIE FTL. // Because they are BLUFOR units, they will already have the BLUFOR language, so they will speak both. - ["opf", west, ["rif", "ftl"], "CHARLIE"] call f_fnc_acre_giveRadioToAllUnits; + ["opf", west, ["rif", "ftl"], "CHARLIE"] call f_fnc_acre_giveLanguagesToRoleInGroup; f_fnc_acre_removeLanguagesFromAllInGroup Removes the language(s) from all units in the given group(s).