diff --git a/addons/_switchunits/UI/IconSwitchUnits_ca.paa b/addons/_switchunits/UI/IconSwitchUnits_ca.paa deleted file mode 100644 index b5868f0423..0000000000 Binary files a/addons/_switchunits/UI/IconSwitchUnits_ca.paa and /dev/null differ diff --git a/addons/_switchunits/clientInit.sqf b/addons/_switchunits/clientInit.sqf deleted file mode 100644 index 6c769a5903..0000000000 --- a/addons/_switchunits/clientInit.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - Author(s): - bux578 -*/ - -0 spawn { - private ["_side"]; - - waitUntil {sleep 0.5; AGM_SwitchUnits_EnableSwitchUnits}; - - //_side = [west, east, independent, civilian] select AGM_SwitchUnits_SwitchUnitsAllowedForSide; - - _sides = []; - - if(AGM_SwitchUnits_SwitchToWest) then {_sides pushBack west}; - if(AGM_SwitchUnits_SwitchToEast) then {_sides pushBack east}; - if(AGM_SwitchUnits_SwitchToIndependent) then {_sides pushBack independent}; - if(AGM_SwitchUnits_SwitchToCivilian) then {_sides pushBack civilian}; - - if (player getVariable ["AGM_CanSwitchUnits", false]) then { - [player, _sides] call AGM_SwitchUnits_fnc_initPlayer; - }; -}; diff --git a/addons/_switchunits/config.cpp b/addons/_switchunits/config.cpp deleted file mode 100644 index 254a92be3a..0000000000 --- a/addons/_switchunits/config.cpp +++ /dev/null @@ -1,140 +0,0 @@ -class CfgPatches { - class AGM_SwitchUnits { - units[] = {}; - weapons[] = {}; - requiredVersion = 0.60; - requiredAddons[] = {AGM_Core}; - version = "0.95"; - versionStr = "0.95"; - versionAr[] = {0,95,0}; - author[] = {"bux578"}; - authorUrl = "https://github.com/bux578/"; - }; -}; - -class CfgFunctions { - class AGM_SwitchUnits { - class AGM_SwitchUnits { - file = "AGM_SwitchUnits\functions"; - class addMapFunction; - class handleMapClick; - class initPlayer; - class isValidAi; - class markAiOnMap; - class module; - class nearestPlayers; - class switchBack; - class switchUnit; - }; - }; -}; - - -class Extended_PostInit_EventHandlers { - class AGM_SwitchUnits { - clientInit = "call compile preprocessFileLineNumbers '\AGM_SwitchUnits\clientInit.sqf'"; - }; -}; - - -class CfgVehicles { - class Module_F; - class AGM_ModuleSwitchUnits: Module_F { - author = "AGM Team"; - category = "AGM"; - displayName = "SwitchUnits System"; - function = "AGM_SwitchUnits_fnc_module"; - scope = 2; - isGlobal = 1; - icon = "\AGM_SwitchUnits\UI\IconSwitchUnits_ca.paa"; - class Arguments { - class SwitchToWest { - displayName = "Switch to West?"; - description = "Allow switching to west units?"; - typeName = "BOOL"; - class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; - }; - }; - class SwitchToEast { - displayName = "Switch to East?"; - description = "Allow switching to east units?"; - typeName = "BOOL"; - class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; - }; - }; - class SwitchToIndependent { - displayName = "Switch to Independent?"; - description = "Allow switching to independent units?"; - typeName = "BOOL"; - class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; - }; - }; - class SwitchToCivilian { - displayName = "Switch to Civilian?"; - description = "Allow switching to civilian units?"; - typeName = "BOOL"; - class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; - }; - }; - class EnableSafeZone { - displayName = "Enable Safe Zone?"; - description = "Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone."; - typeName = "BOOL"; - class values { - class Yes {default = 1; name = "Yes"; value = 1;}; - class No {name = "No"; value = 0;}; - }; - }; - class SafeZoneRadius { - displayName = "Safe Zone Radius"; - description = "The safe zone around players from a different team. Default: 200"; - typeName = "NUMBER"; - defaultValue = 100; - }; - - /* - - class EnableSwitchUnits { - displayName = "Enable SwitchUnits?"; - description = "Enable to switch to AI units? Default: No"; - typeName = "BOOL"; - class values { - class Yes {name = "Yes"; value = 1;}; - class No {default = 1; name = "No"; value = 0;}; - }; - }; - - class SwitchUnitsAllowedForSide { - displayName = "Allow for which side?"; - description = "Which side should be allowed to switch to AI units?"; - typeName = "NUMBER"; - class values { - class West {name = "West"; value = 0;}; - class East {default = 1; name = "East"; value = 1;}; - class Independent {name = "Independent"; value = 2;}; - class Civilian {name = "Civilian"; value = 3;}; - }; - };*/ - }; - }; -}; - -class AGM_Parameters_Numeric { - AGM_SwitchUnits_SafeZoneRadius = 100; -}; -class AGM_Parameters_Boolean { - AGM_SwitchUnits_EnableSwitchUnits = 0; - AGM_SwitchUnits_SwitchToWest = 0; - AGM_SwitchUnits_SwitchToEast = 0; - AGM_SwitchUnits_SwitchToIndependent = 0; - AGM_SwitchUnits_SwitchToCivilian = 0; - AGM_SwitchUnits_EnableSafeZone = 1; -}; diff --git a/addons/_switchunits/functions/fn_addMapFunction.sqf b/addons/_switchunits/functions/fn_addMapFunction.sqf deleted file mode 100644 index f65725aacf..0000000000 --- a/addons/_switchunits/functions/fn_addMapFunction.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_addMapFunction - - Author(s): - bux578 - - Description: - Adds a mapClick Eventhandler - - Parameters: - 0: OBJECT - unit - 1: ARRAY - sided - - Returns: - VOID -*/ - -private ["_unit"]; -_unit = _this select 0; - -["theMapClick", "onMapSingleClick", { - [_this, _pos, _shift, _alt] call AGM_SwitchUnits_fnc_handleMapClick; -}, [_unit, _sides]] call BIS_fnc_addStackedEventHandler; diff --git a/addons/_switchunits/functions/fn_handleMapClick.sqf b/addons/_switchunits/functions/fn_handleMapClick.sqf deleted file mode 100644 index 642baed1bd..0000000000 --- a/addons/_switchunits/functions/fn_handleMapClick.sqf +++ /dev/null @@ -1,41 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_handleMapClick - - Author(s): - bux578 - - Description: - Finds the clicked unit - - Parameters: - 0: OBJECT - MapClickEventHandlerArgs - 0: OBJECT - unit to switch to - 1: ARRAY - sides - - Returns: - VOID -*/ - -private ["_args", "_currentPlayerUnit", "_sides", "_pos", "_sideNearest"]; - -_currentPlayerUnit = (_this select 0) select 0; -_sides = (_this select 0) select 1; -_pos = _this select 1; - -_sideNearest = []; - -{ - if ([_x] call AGM_SwitchUnits_fnc_isValidAi && (side group _x in _sides)) then { - _sideNearest pushBack _x; - }; -} forEach (nearestObjects [_pos, ["Man"], 20]); - - -if (count _sideNearest > 0) then { - private ["_switchUnit"]; - - _switchUnit = _sideNearest select 0; - [_currentPlayerUnit, _switchUnit] call AGM_SwitchUnits_fnc_switchUnit; - - openMap false; -}; diff --git a/addons/_switchunits/functions/fn_initPlayer.sqf b/addons/_switchunits/functions/fn_initPlayer.sqf deleted file mode 100644 index c3ee6ce7b2..0000000000 --- a/addons/_switchunits/functions/fn_initPlayer.sqf +++ /dev/null @@ -1,48 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_initPlayer - - Author(s): - bux578 - - Description: - Initializes the player - - Parameters: - 0: OBJECT - player - 1: ARRAY - Array containing selected sides - - Returns: - VOID -*/ - -private ["_playerUnit", "_sides"]; - -_playerUnit = _this select 0; -_sides = _this select 1; - -if (vehicle _playerUnit == _playerUnit) then { - - [_sides] call AGM_SwitchUnits_fnc_markAiOnMap; - - _playerUnit setVariable ["AGM_SwitchUnits_IsPlayerUnit", true]; - _playerUnit allowDamage false; - - AGM_SwitchUnits_OriginalUnit = _playerUnit; - AGM_SwitchUnits_OriginalName = [_playerUnit] call AGM_Core_fnc_getName; - AGM_SwitchUnits_OriginalGroup = group _playerUnit; - - // remove all starting gear of a player - removeAllWeapons _playerUnit; - removeGoggles _playerUnit; - removeHeadgear _playerUnit; - removeVest _playerUnit; - removeAllAssignedItems _playerUnit; - clearAllItemsFromBackpack _playerUnit; - removeBackpack _playerUnit; - _playerUnit linkItem "ItemMap"; - removeUniform _playerUnit; - - [_playerUnit, "AGM_SwitchUnits", true] call AGM_Core_fnc_setForceWalkStatus; - - [_playerUnit, _sides] call AGM_SwitchUnits_fnc_addMapFunction; -}; diff --git a/addons/_switchunits/functions/fn_isValidAi.sqf b/addons/_switchunits/functions/fn_isValidAi.sqf deleted file mode 100644 index f91b27ffbe..0000000000 --- a/addons/_switchunits/functions/fn_isValidAi.sqf +++ /dev/null @@ -1,25 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_isValidAi - - Author(s): - bux578 - - Description: - Checks if AI is a valid target for switching - - Parameters: - 0: OBJECT - unit - - Returns: - VOID -*/ - -private ["_unit"]; - -_unit = _this select 0; - -!([_unit] call AGM_Core_fnc_isPlayer -|| {_unit in playableUnits} -|| {vehicle _unit != _unit} -|| {_unit getVariable ["AGM_SwitchUnits_IsPlayerUnit", false]} -|| {_unit getVariable ["AGM_SwitchUnits_IsPlayerControlled", false]}) diff --git a/addons/_switchunits/functions/fn_markAiOnMap.sqf b/addons/_switchunits/functions/fn_markAiOnMap.sqf deleted file mode 100644 index 05865bc060..0000000000 --- a/addons/_switchunits/functions/fn_markAiOnMap.sqf +++ /dev/null @@ -1,64 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_markAiOnMap - - Author(s): - bux578 - - Description: - Creates markers for AI units for given sides - Marks players in a different color - - Parameters: - 0: OBJECT - side - - Returns: - VOID -*/ - -private ["_sidesToShow"]; -_sidesToShow = _this select 0; - -_sidesToShow spawn { - - private ["_sides", "_allMarkerNames"]; - _sides = _this; - _allMarkerNames = []; - - while { true } do { - sleep 1.5; - - // delete markers - { - deleteMarkerLocal _x; - } forEach _allMarkerNames; - - // create markers - { - if (([_x] call AGM_SwitchUnits_fnc_isValidAi && (side group _x in _sides)) || (_x getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])) then { - private ["_markerName", "_marker", "_markerColor"]; - - //_markerName = format ["%1", [_x] call AGM_Core_fnc_getName]; - _markerName = str _x; - - _marker = createMarkerLocal [_markerName, position _x]; - _markerName setMarkerTypeLocal "mil_triangle"; - _markerName setMarkerShapeLocal "ICON"; - _markerName setMarkerSizeLocal [0.5,0.7]; - _markerName setMarkerDirLocal getDir _x; - - // commy's one liner magic - _markerColor = format ["Color%1", side group _x]; - - if ((_x getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])) then { - _markerName setMarkerColorLocal "ColorOrange"; - _markerName setMarkerTextLocal (_x getVariable ["AGM_SwitchUnits_PlayerControlledName",""]); - } else { - _markerName setMarkerColorLocal _markerColor; - _markerName setMarkerTextLocal (getText (configFile >> "CfgVehicles" >> typeOf _x >> "displayName")); - }; - - _allMarkerNames pushBack _markerName; - }; - } forEach allUnits; - }; -}; diff --git a/addons/_switchunits/functions/fn_module.sqf b/addons/_switchunits/functions/fn_module.sqf deleted file mode 100644 index 43ec26199a..0000000000 --- a/addons/_switchunits/functions/fn_module.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_module - - Author(s): - bux578 - - Description: - Initializes the SwitchUnits module - - Parameters: - 0: OBJECT - module logic - 1: ARRAY - list of affected units - 2: BOOLEAN - isActivated - - Returns: - BOOLEAN (Good practice to include one) -*/ - -if !(isServer) exitWith {}; - -_logic = _this select 0; -_activated = _this select 2; - -if !(_activated) exitWith {}; - -AGM_SwitchUnits_Module = true; - -["AGM_SwitchUnits_EnableSwitchUnits", true] call AGM_Core_fnc_setParameter; - -[_logic, "AGM_SwitchUnits_SwitchToWest", "SwitchToWest"] call AGM_Core_fnc_readBooleanParameterFromModule; -[_logic, "AGM_SwitchUnits_SwitchToEast", "SwitchToEast"] call AGM_Core_fnc_readBooleanParameterFromModule; -[_logic, "AGM_SwitchUnits_SwitchToIndependent", "SwitchToIndependent"] call AGM_Core_fnc_readBooleanParameterFromModule; -[_logic, "AGM_SwitchUnits_SwitchToCivilian", "SwitchToCivilian"] call AGM_Core_fnc_readBooleanParameterFromModule; - -[_logic, "AGM_SwitchUnits_EnableSafeZone", "EnableSafeZone"] call AGM_Core_fnc_readBooleanParameterFromModule; -[_logic, "AGM_SwitchUnits_SafeZoneRadius", "SafeZoneRadius"] call AGM_Core_fnc_readNumericParameterFromModule; - -diag_log text "[AGM]: SwitchUnits Module Initialized."; diff --git a/addons/_switchunits/functions/fn_nearestPlayers.sqf b/addons/_switchunits/functions/fn_nearestPlayers.sqf deleted file mode 100644 index 04b185c455..0000000000 --- a/addons/_switchunits/functions/fn_nearestPlayers.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_nearestPlayers - - Author(s): - bux578 - - Description: - Returns an array of alive players in a given radius around a given location - - Parameters: - 0: POSTION - Center position - 1: NUMBER - Radius - - Returns: - ARRAY - Player units -*/ - -private ["_position", "_radius", "_nearestPlayers"]; - -_position = _this select 0; -_radius = _this select 1; - -_nearestPlayers = []; - -{ - if ([_x] call AGM_Core_fnc_isPlayer && {alive _x}) then { - _nearestPlayers pushBack _x; - }; -} forEach (nearestObjects [_position, ["Man"], _radius]); - - _nearestPlayers diff --git a/addons/_switchunits/functions/fn_switchBack.sqf b/addons/_switchunits/functions/fn_switchBack.sqf deleted file mode 100644 index eba84d57f6..0000000000 --- a/addons/_switchunits/functions/fn_switchBack.sqf +++ /dev/null @@ -1,29 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_switchBack - - Author(s): - bux578 - - Description: - Switches back to the original player unit - This method needs to be "spawn"ed - - Parameters: - 0: OBJECT - original player unit - 1: OBJECT - respawned unit - - Returns: - VOID -*/ - -private ["_originalPlayerUnit", "_currentUnit"]; -_originalPlayerUnit = _this select 0; -_currentUnit = _this select 1; - -[_originalPlayerUnit] joinSilent AGM_SwitchUnits_OriginalGroup; - -waitUntil {local _originalPlayerUnit}; - -selectPlayer _originalPlayerUnit; - -deleteVehicle _currentUnit; diff --git a/addons/_switchunits/functions/fn_switchUnit.sqf b/addons/_switchunits/functions/fn_switchUnit.sqf deleted file mode 100644 index ddb2a1d523..0000000000 --- a/addons/_switchunits/functions/fn_switchUnit.sqf +++ /dev/null @@ -1,79 +0,0 @@ -/* - Name: AGM_SwitchUnits_fnc_switchUnit - - Author(s): - bux578 - - Description: - Selects the new given player unit - - Parameters: - 0: OBJECT - the unit to switch to - - Returns: - VOID -*/ - -private ["_newUnit"]; - -_newUnit = _this select 1; - -// don't switch to original player units -if (!([_newUnit] call AGM_SwitchUnits_fnc_isValidAi)) exitWith {}; - -_newUnit spawn { - private ["_unit", "_allNearestPlayers", "_oldUnit", "_respawnEhId", "_oldOwner", "_leave"]; - - _unit = _this; - - _leave = false; - - if (AGM_SwitchUnits_EnableSafeZone) then { - - _allNearestPlayers = [position _unit, AGM_SwitchUnits_SafeZoneRadius] call AGM_SwitchUnits_fnc_nearestPlayers; - _nearestEnemyPlayers = [_allNearestPlayers, {((side AGM_SwitchUnits_OriginalGroup) getFriend (side _this) < 0.6) && !(_this getVariable ["AGM_SwitchUnits_IsPlayerControlled", false])}] call AGM_Core_fnc_filter; - - if (count _nearestEnemyPlayers > 0) exitWith { - _leave = true; - }; - }; - - // exitWith doesn't exit past the "if(EnableSafeZone)" block - if (_leave) exitWith { - [localize "STR_AGM_SwitchUnits_TooCloseToEnemy"] call AGM_Core_fnc_displayTextStructured; - }; - - // should switch locality - // This doesn't work anymore, because one's now able to switch to units from a different side - //[_unit] joinSilent group player; - [[_unit, player], "{(_this select 0) setVariable ['AGM_SwitchUnits_OriginalOwner', owner (_this select 0), true]; (_this select 0) setOwner owner (_this select 1)}", 1] call AGM_Core_fnc_execRemoteFnc; - - _oldUnit = player; - waitUntil {sleep 0.2; local _unit}; - - _oldUnit setVariable ["AGM_SwitchUnits_IsPlayerControlled", false, true]; - _oldUnit setVariable ["AGM_SwitchUnits_PlayerControlledName", "", true]; - - _respawnEhId = _unit getVariable ["AGM_SwitchUnits_RespawnEhId", -1]; - if (_respawnEhId != -1) then { - _oldUnit removeEventHandler ["Respawn", _respawnEhId]; - }; - - selectPlayer _unit; - - _unit setVariable ["AGM_SwitchUnits_IsPlayerControlled", true, true]; - _unit setVariable ["AGM_SwitchUnits_PlayerControlledName", AGM_SwitchUnits_OriginalName, true]; - - _respawnEhId = _unit addEventHandler ["Respawn", { - [AGM_SwitchUnits_OriginalUnit, _this select 0] spawn AGM_SwitchUnits_fnc_switchBack; - }]; - _unit setVariable ["AGM_SwitchUnits_RespawnEhId", _respawnEhId, true]; - - // set owner back to original owner - _oldOwner = _oldUnit getVariable["AGM_SwitchUnits_OriginalOwner", -1]; - if (_oldOwner > -1) then { - [[_oldUnit, _oldOwner], "{(_this select 0) setOwner (_this select 1)}", 1] call AGM_Core_fnc_execRemoteFnc; - }; - - [localize "STR_AGM_SwitchUnits_SwitchedUnit"] call AGM_Core_fnc_displayTextStructured; -}; diff --git a/addons/_switchunits/stringtable.xml b/addons/_switchunits/stringtable.xml deleted file mode 100644 index b12e8dc17d..0000000000 --- a/addons/_switchunits/stringtable.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - Switched unit - Einheit gewechselt - Юнит переключен - Prohozená jednotka - Przełącz jednostkę - Cambiado de unidad - - - This unit is too close to the enemy. - Diese Einheit ist zu nah am Feind. - Юнит слишком близок к противнику - Tato jednotka je moc blízko k nepříteli. - Ta jednostka jest zbyt blisko przeciwnika. - Esta unidad está demasiado cerca del enemigo. - - -