diff --git a/addons/main/CfgFunctions.hpp b/addons/main/CfgFunctions.hpp index 777099f..a2ded73 100644 --- a/addons/main/CfgFunctions.hpp +++ b/addons/main/CfgFunctions.hpp @@ -10,6 +10,9 @@ class CfgFunctions { class send_group_cots { file = "\armatak\armatak\addons\main\functions\api\fn_send_group_cots.sqf"; }; + class send_enemy_cot { + file = "\armatak\armatak\addons\main\functions\api\fn_send_enemy_cot.sqf"; + }; class send_eud_cot { file = "\armatak\armatak\addons\main\functions\api\fn_send_eud_cot.sqf"; }; @@ -31,6 +34,9 @@ class CfgFunctions { class extract_role { file = "\armatak\armatak\addons\main\functions\extract_data\fn_extract_role.sqf"; }; + class extract_sensor_data { + file = "\armatak\armatak\addons\main\functions\extract_data\fn_extract_sensor_data.sqf"; + }; class extract_unit_callsign { file = "\armatak\armatak\addons\main\functions\extract_data\fn_extract_unit_callsign.sqf"; }; diff --git a/addons/main/functions/api/fn_send_enemy_cot.sqf b/addons/main/functions/api/fn_send_enemy_cot.sqf index 9f3bf27..fd2f528 100644 --- a/addons/main/functions/api/fn_send_enemy_cot.sqf +++ b/addons/main/functions/api/fn_send_enemy_cot.sqf @@ -9,7 +9,7 @@ _unit_position = _unit call armatak_client_fnc_extractClientPosition; _uuid = _unit call armatak_fnc_extract_uuid; _type = _unit call armatak_fnc_extract_role; _callsign = _unit call armatak_fnc_extract_marker_callsign; - + _marker_cot = [_uuid, _type, _unit_position select 1, _unit_position select 2, _unit_position select 3, _callsign, _unit_position select 5, _unit_position select 6]; "armatak" callExtension ["tcp_socket:send_marker_cot", [_marker_cot]]; diff --git a/addons/main/functions/extract_data/fn_extract_role.sqf b/addons/main/functions/extract_data/fn_extract_role.sqf index be4cd61..111f057 100644 --- a/addons/main/functions/extract_data/fn_extract_role.sqf +++ b/addons/main/functions/extract_data/fn_extract_role.sqf @@ -7,8 +7,13 @@ params["_unit"]; private _affiliation = "f"; private _type = "G"; private _role = "a-f-G-U-C-I"; - -switch (str side _unit) do { +private _side = side _unit; + +if (isNil {_unit getVariable "armatak_current_side"}) then { + _side = _unit getVariable "armatak_current_side"; +}; + +switch (str _side) do { case "WEST": { _affiliation = "f"; }; diff --git a/addons/main/functions/extract_data/fn_extract_sensor_data.sqf b/addons/main/functions/extract_data/fn_extract_sensor_data.sqf new file mode 100644 index 0000000..e9f7227 --- /dev/null +++ b/addons/main/functions/extract_data/fn_extract_sensor_data.sqf @@ -0,0 +1,17 @@ +params["_unit"]; + +_target = getSensorTargets (_unit); + +{ + _unit = _x select 0; + _position = _x select 1; + _status = _x select 2; + + if (isNil {_unit getVariable "armatak_current_side"}) then { + _unit setVariable ["armatak_current_side", side _unit]; + }; + + if (_status != "destroyed") then { + _unit call armatak_fnc_send_enemy_cot; + }; +} forEach _target; diff --git a/addons/main/functions/extract_data/fn_extract_unit_callsign.sqf b/addons/main/functions/extract_data/fn_extract_unit_callsign.sqf index f79692e..caca838 100644 --- a/addons/main/functions/extract_data/fn_extract_unit_callsign.sqf +++ b/addons/main/functions/extract_data/fn_extract_unit_callsign.sqf @@ -16,6 +16,10 @@ if (roleDescription _unit != "") then { }; }; +if (side _unit == east) then { + _callsign = getText (configOf _unit >> "displayName"); +}; + armatak_attribute_unit_callsign = _unit getVariable "armatak_attribute_unit_callsign"; if (!isNil "armatak_attribute_unit_callsign" or armatak_attribute_unit_callsign != '') then { diff --git a/addons/server/functions/fnc_3denCoreModuleConfig.sqf b/addons/server/functions/fnc_3denCoreModuleConfig.sqf index af38470..589e1bc 100644 --- a/addons/server/functions/fnc_3denCoreModuleConfig.sqf +++ b/addons/server/functions/fnc_3denCoreModuleConfig.sqf @@ -44,6 +44,8 @@ if (isServer) exitWith { _callsign = [_x] call armatak_fnc_extract_marker_callsign; [_x, _atak_type, _callsign] call armatak_fnc_send_marker_cot; + + _x call armatak_fnc_extract_sensor_data; }; case ((_objectType select 0) == "VehicleAutonomous"): { _atak_type = [_x] call armatak_fnc_extract_role; @@ -51,6 +53,8 @@ if (isServer) exitWith { [_x, _atak_type, _callsign] call armatak_fnc_send_drone_cot; [_x] call armatak_fnc_send_digital_pointer_cot; + + _x call armatak_fnc_extract_sensor_data; }; }; } forEach GVAR(syncedUnits); diff --git a/addons/server/functions/fnc_ZeusCoreModuleConfig.sqf b/addons/server/functions/fnc_ZeusCoreModuleConfig.sqf index dfbe39f..8889cf4 100644 --- a/addons/server/functions/fnc_ZeusCoreModuleConfig.sqf +++ b/addons/server/functions/fnc_ZeusCoreModuleConfig.sqf @@ -48,6 +48,8 @@ missionNamespace setVariable ["armatak_server_syncedUnits", _syncUnits]; _callsign = [_x] call armatak_fnc_extract_marker_callsign; [_x, _atak_type, _callsign] call armatak_fnc_send_marker_cot; + + _x call armatak_fnc_extract_sensor_data; }; case ((_objectType select 0) == "VehicleAutonomous"): { _atak_type = [_x] call armatak_fnc_extract_role; @@ -55,6 +57,8 @@ missionNamespace setVariable ["armatak_server_syncedUnits", _syncUnits]; [_x, _atak_type, _callsign] call armatak_fnc_send_drone_cot; [_x] call armatak_fnc_send_digital_pointer_cot; + + _x call armatak_fnc_extract_sensor_data; }; }; } forEach GVAR(syncedUnits);