From e53ba2ae0f4ec50ceb1cde30e2a841982111b4f3 Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Mon, 25 May 2026 19:48:51 -0300 Subject: [PATCH] Added addRouterEntities and removeRouterEntites instead of manually adding entites to the CoT Router array --- addons/server/XEH_PREP.hpp | 3 ++ .../functions/fnc_addRouterEntities.sqf | 28 +++++++++++++++++++ .../functions/fnc_removeRouterEntities.sqf | 26 +++++++++++++++++ .../functions/fnc_setRouterEntities.sqf | 25 +++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 addons/server/functions/fnc_addRouterEntities.sqf create mode 100644 addons/server/functions/fnc_removeRouterEntities.sqf create mode 100644 addons/server/functions/fnc_setRouterEntities.sqf diff --git a/addons/server/XEH_PREP.hpp b/addons/server/XEH_PREP.hpp index 1503a24..36aad59 100644 --- a/addons/server/XEH_PREP.hpp +++ b/addons/server/XEH_PREP.hpp @@ -1,7 +1,10 @@ PREP(3denEnrollModuleConfig); PREP(3denTcpModuleConfig); +PREP(addRouterEntities); +PREP(removeRouterEntities); PREP(routerEntityAdd); PREP(routerEntityRemove); +PREP(setRouterEntities); PREP(startCotRouter); PREP(ZeusEnrollModuleConfig); PREP(ZeusTcpModuleConfig); diff --git a/addons/server/functions/fnc_addRouterEntities.sqf b/addons/server/functions/fnc_addRouterEntities.sqf new file mode 100644 index 0000000..d018db0 --- /dev/null +++ b/addons/server/functions/fnc_addRouterEntities.sqf @@ -0,0 +1,28 @@ +#include "..\script_component.hpp" +/* + * Author: Valmo, Codex + * Adds entities to the server-side CoT router entity list. + * + * Arguments: + * 0: Entity or entities to publish through the CoT router + * + * Return Value: + * Current routed entities + * + * Public: Yes + */ + +params [ + ["_entities", [], [objNull, []]] +]; + +private _toAdd = if (_entities isEqualType objNull) then {[_entities]} else {_entities}; +private _routed = missionNamespace getVariable ["armatak_server_syncedUnits", []]; +_routed append _toAdd; +_routed = _routed arrayIntersect _routed; +_routed = _routed select {!isNull _x && {alive _x}}; + +missionNamespace setVariable ["armatak_server_syncedUnits", _routed, true]; +GVAR(syncedUnits) = _routed; + +_routed diff --git a/addons/server/functions/fnc_removeRouterEntities.sqf b/addons/server/functions/fnc_removeRouterEntities.sqf new file mode 100644 index 0000000..8d9250e --- /dev/null +++ b/addons/server/functions/fnc_removeRouterEntities.sqf @@ -0,0 +1,26 @@ +#include "..\script_component.hpp" +/* + * Author: Valmo, Codex + * Removes entities from the server-side CoT router entity list. + * + * Arguments: + * 0: Entity or entities to remove from the CoT router + * + * Return Value: + * Current routed entities + * + * Public: Yes + */ + +params [ + ["_entities", [], [objNull, []]] +]; + +private _toRemove = if (_entities isEqualType objNull) then {[_entities]} else {_entities}; +private _routed = missionNamespace getVariable ["armatak_server_syncedUnits", []]; +_routed = (_routed - _toRemove) select {!isNull _x && {alive _x}}; + +missionNamespace setVariable ["armatak_server_syncedUnits", _routed, true]; +GVAR(syncedUnits) = _routed; + +_routed diff --git a/addons/server/functions/fnc_setRouterEntities.sqf b/addons/server/functions/fnc_setRouterEntities.sqf new file mode 100644 index 0000000..0203d71 --- /dev/null +++ b/addons/server/functions/fnc_setRouterEntities.sqf @@ -0,0 +1,25 @@ +#include "..\script_component.hpp" +/* + * Author: Valmo, Codex + * Replaces the server-side CoT router entity list with a de-duplicated list. + * + * Arguments: + * 0: Entities to publish through the CoT router + * + * Return Value: + * Current routed entities + * + * Public: Yes + */ + +params [ + ["_entities", [], [[]]] +]; + +private _routed = _entities arrayIntersect _entities; +_routed = _routed select {!isNull _x && {alive _x}}; + +missionNamespace setVariable ["armatak_server_syncedUnits", _routed, true]; +GVAR(syncedUnits) = _routed; + +_routed