diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index 047549dfba..15eca2fb62 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -6,7 +6,7 @@ displayName = "$STR_ACE_Attach_AttachDetach"; \ condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \ statement = QUOTE( [ARR_2(_player, _target)] call FUNC(openAttachUI);); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ + exceptions[] = {"isNotDragging"}; \ showDisabled = 0; \ priority = 0; \ icon = PATHTOF(UI\attach_ca.paa); \ @@ -16,7 +16,7 @@ displayName = "$STR_ACE_Attach_Detach"; \ condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canDetach))); \ statement = QUOTE( [ARR_2(_player, _target)] call FUNC(detach) ); \ - exceptions[] = {"ACE_Drag_isNotDragging"}; \ + exceptions[] = {"isNotDragging"}; \ showDisabled = 0; \ priority = 0; \ icon = PATHTOF(UI\detach_ca.paa); \ @@ -57,7 +57,7 @@ class CfgVehicles { displayName = "$STR_ACE_Attach_AttachDetach"; condition = QUOTE(([ARR_3(_player, _player, '')] call FUNC(canAttach))); statement = QUOTE( [ARR_2(_player, _player)] call FUNC(openAttachUI); ); - exceptions[] = {"ACE_Drag_isNotDragging"}; + exceptions[] = {"isNotDragging"}; showDisabled = 0; priority = 5; icon = PATHTOF(UI\attach_ca.paa); @@ -67,7 +67,7 @@ class CfgVehicles { displayName = "$STR_ACE_Attach_Detach"; condition = QUOTE(([ARR_2(_player, _player)] call FUNC(canDetach))); statement = QUOTE( [ARR_2(_player, _player)] call FUNC(detach) ); - exceptions[] = {"ACE_Drag_isNotDragging"}; + exceptions[] = {"isNotDragging"}; showDisabled = 0; priority = 5; icon = PATHTOF(UI\detach_ca.paa); diff --git a/addons/attach/config.cpp b/addons/attach/config.cpp index dd7e1add3b..e8983cefde 100644 --- a/addons/attach/config.cpp +++ b/addons/attach/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {"ACE_IR_Strobe_Item"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"KoffeinFlummi","eRazeri","CAA-Picard"}; + author[] = {"KoffeinFlummi","eRazeri","esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index 3aa06bacc2..655cac598b 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -1,5 +1,5 @@ /* - * Author: eRazeri and CAA-Picard + * Author: eRazeri and esteldunedain * Attach an item to the unit * * Arguments: diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 8fb9e3cc9c..7b0d82dec1 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -1,5 +1,5 @@ /* - * Author: eRazeri and CAA-Picard + * Author: eRazeri and esteldunedain * Detach an item from a unit * * Arguments: diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 720bea3d33..89ab74d5bb 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -39,7 +39,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_2(_player, _target)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,_target, false)] call FUNC(doEscortCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; + exceptions[] = {"isNotEscorting"}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; @@ -50,7 +50,7 @@ class CfgVehicles { distance = 4; condition = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(canLoadCaptive)); statement = QUOTE([ARR_3(_player, _target, objNull)] call FUNC(doLoadCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; + exceptions[] = {"isNotEscorting"}; showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.2; @@ -74,7 +74,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_StopEscorting"; condition = QUOTE([ARR_2(_player, objNull)] call FUNC(canStopEscorting)); statement = QUOTE([ARR_3(_player,objNull, false)] call FUNC(doEscortCaptive)); - exceptions[] = {QGVAR(isNotEscorting)}; + exceptions[] = {"isNotEscorting"}; showDisabled = 0; priority = 2.3; hotkey = "C"; @@ -91,7 +91,7 @@ class CfgVehicles { displayName = "$STR_ACE_Captives_StopSurrendering"; condition = QUOTE([ARR_2(_player, false)] call FUNC(canSurrender)); statement = QUOTE([ARR_2(_player, false)] call FUNC(setSurrendered)); - exceptions[] = {QGVAR(isNotSurrendering)}; + exceptions[] = {"isNotSurrendering"}; showDisabled = 0; priority = 0; }; @@ -107,7 +107,7 @@ class CfgVehicles { distance = 4; \ condition = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(canLoadCaptive)); \ statement = QUOTE([ARR_3(_player, objNull, _target)] call FUNC(doLoadCaptive)); \ - exceptions[] = {QGVAR(isNotEscorting)}; \ + exceptions[] = {"isNotEscorting"}; \ showDisabled = 0; \ priority = 1.2; \ hotkey = "L"; \ diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 1d951c3ceb..e554550a95 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -183,3 +183,4 @@ _vehicle setFuel _fuelLevel; ["displayTextPicture", FUNC(displayTextPicture)] call FUNC(addEventhandler); ["notOnMap", {!visibleMap}] call FUNC(addCanInteractWithCondition); +["isNotInside", {_this select 0 == _this select 1 || {vehicle (_this select 0) == _this select 0}}] call FUNC(addCanInteractWithCondition); diff --git a/addons/common/functions/fnc_ASLToPosition.sqf b/addons/common/functions/fnc_ASLToPosition.sqf index 41e532d39b..4ff880c019 100644 --- a/addons/common/functions/fnc_ASLToPosition.sqf +++ b/addons/common/functions/fnc_ASLToPosition.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Converts ASL to Arma "Position" * * Arguments: diff --git a/addons/common/functions/fnc_addLineToDebugDraw.sqf b/addons/common/functions/fnc_addLineToDebugDraw.sqf index 1c7d5d5cd1..4b8b235811 100644 --- a/addons/common/functions/fnc_addLineToDebugDraw.sqf +++ b/addons/common/functions/fnc_addLineToDebugDraw.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Add line to draw on debug * diff --git a/addons/common/functions/fnc_addSetting.sqf b/addons/common/functions/fnc_addSetting.sqf index 866b7fb35b..d3f97f8ae0 100644 --- a/addons/common/functions/fnc_addSetting.sqf +++ b/addons/common/functions/fnc_addSetting.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Adds a new setting at runtime, with all it's metadata. * If has only local effects. * diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 03916b8600..ac6687fd4f 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard and Jaynus + * Author: esteldunedain and Jaynus * Returns the result of the function and caches it up to a given time or event * * Arguments: diff --git a/addons/common/functions/fnc_createOrthonormalReference.sqf b/addons/common/functions/fnc_createOrthonormalReference.sqf index a92464a7f3..346127c658 100644 --- a/addons/common/functions/fnc_createOrthonormalReference.sqf +++ b/addons/common/functions/fnc_createOrthonormalReference.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Returns a orthonormal system of reference aligned with the supplied vector * diff --git a/addons/common/functions/fnc_eraseCache.sqf b/addons/common/functions/fnc_eraseCache.sqf index 00f49f4833..94592ad409 100644 --- a/addons/common/functions/fnc_eraseCache.sqf +++ b/addons/common/functions/fnc_eraseCache.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Deletes a cached result * * Arguments: diff --git a/addons/common/functions/fnc_execNextFrame.sqf b/addons/common/functions/fnc_execNextFrame.sqf index e0dd49e86c..a0f71f9d51 100644 --- a/addons/common/functions/fnc_execNextFrame.sqf +++ b/addons/common/functions/fnc_execNextFrame.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Executes a code on the next frame * diff --git a/addons/common/functions/fnc_getSettingData.sqf b/addons/common/functions/fnc_getSettingData.sqf index 3dd2582860..a3733560da 100644 --- a/addons/common/functions/fnc_getSettingData.sqf +++ b/addons/common/functions/fnc_getSettingData.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Returns the metadata of a setting if it exists * * Arguments: diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf index 1e8e9001aa..69d86eac98 100644 --- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf +++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Load the user setable settings from the user profile. * Config < Server UserConfig < Mission Config < Client settings * diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index 20a7e1c40f..2548c44bec 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Load the parameters on the server. * Config < Server UserConfig < Mission Config * diff --git a/addons/common/functions/fnc_positionToASL.sqf b/addons/common/functions/fnc_positionToASL.sqf index 916184eb33..d933e67125 100644 --- a/addons/common/functions/fnc_positionToASL.sqf +++ b/addons/common/functions/fnc_positionToASL.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Converts Arma "Position" to ASL * * Arguments: diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index 0f3ab447b1..c92bb4ab94 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Reads a setting value from a module, set it and force it. Logs if the setting is missing from the module. * Must be called on the server, effect is global. diff --git a/addons/common/functions/fnc_removeSpecificMagazine.sqf b/addons/common/functions/fnc_removeSpecificMagazine.sqf index 7f29cf979c..ec24dbf618 100644 --- a/addons/common/functions/fnc_removeSpecificMagazine.sqf +++ b/addons/common/functions/fnc_removeSpecificMagazine.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Removes a magazine from the unit that has an specific ammo count * * Argument: diff --git a/addons/common/functions/fnc_sanitizeString.sqf b/addons/common/functions/fnc_sanitizeString.sqf index 44717915db..85f743150e 100644 --- a/addons/common/functions/fnc_sanitizeString.sqf +++ b/addons/common/functions/fnc_sanitizeString.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard, based on Killzone-Kid code + * Author: esteldunedain, based on Killzone-Kid code * * Removes quotation marks to avoid exploits and optionally html tags from text to avoid conflicts with structured text. * diff --git a/addons/common/functions/fnc_serverLog.sqf b/addons/common/functions/fnc_serverLog.sqf index e2c981302d..058b68b3cc 100644 --- a/addons/common/functions/fnc_serverLog.sqf +++ b/addons/common/functions/fnc_serverLog.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if (isServer) then { diff --git a/addons/common/functions/fnc_setParameter.sqf b/addons/common/functions/fnc_setParameter.sqf index 889c242bb3..4dbc5fc84e 100644 --- a/addons/common/functions/fnc_setParameter.sqf +++ b/addons/common/functions/fnc_setParameter.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Sets the value of an ACE_Parameter and makes it public. * diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index ae4b1d6655..67068c6ad1 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Change the value of an existing setting if it was not previously forced. Force if neccesary. * If executed on clients it has local effect. * If executed on server it can have global effect if the last parameter is set to true. diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 27c727acab..9d93b9e62d 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Load a setting from config if it was not previosuly forced. Force if neccesary. * * Arguments: diff --git a/addons/common/functions/fnc_throttledPublicVariable.sqf b/addons/common/functions/fnc_throttledPublicVariable.sqf index 6953d39fb5..e5e30b6664 100644 --- a/addons/common/functions/fnc_throttledPublicVariable.sqf +++ b/addons/common/functions/fnc_throttledPublicVariable.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Schedules the publishment of an object variable to reduce network overhead * * Arguments: diff --git a/addons/common/functions/fnc_toHex.sqf b/addons/common/functions/fnc_toHex.sqf index 5100e8d373..2d7d7a383e 100644 --- a/addons/common/functions/fnc_toHex.sqf +++ b/addons/common/functions/fnc_toHex.sqf @@ -1,5 +1,5 @@ /* -Author: commy2, CAA-Picard +Author: commy2, esteldunedain Description: Converts number to hexadecimal number diff --git a/addons/common/functions/fnc_waitAndExecute.sqf b/addons/common/functions/fnc_waitAndExecute.sqf index 7b106cc0c1..777cd72c0a 100644 --- a/addons/common/functions/fnc_waitAndExecute.sqf +++ b/addons/common/functions/fnc_waitAndExecute.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Executes a code once with a given game time delay, using a PFH * diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index e62b31aa56..af2ed90cb6 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_Menu; condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)])); statement = ""; - exceptions[] = {"ACE_Interaction_isNotSwimming"}; + exceptions[] = {"isNotSwimming"}; showDisabled = 1; priority = 4; icon = PATHTOF(UI\Explosives_Menu_ca.paa); @@ -17,7 +17,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_Detonate; condition = QUOTE([_player] call FUNC(canDetonate)); statement = QUOTE([_player] call FUNC(openTransmitterUI);); - exceptions[] = {"ACE_Interaction_isNotSwimming"}; + exceptions[] = {"isNotSwimming"}; showDisabled = 1; icon = PATHTOF(UI\Explosives_Menu_ca.paa); priority = 2; @@ -27,7 +27,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_Place; condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)}); statement = QUOTE([_player] call FUNC(openPlaceUI);); - exceptions[] = {"ACE_Interaction_isNotSwimming"}; + exceptions[] = {"isNotSwimming"}; showDisabled = 1; icon = PATHTOF(UI\Place_Explosive_ca.paa); priority = 1; @@ -37,7 +37,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_Defuse; condition = QUOTE([_player] call FUNC(canDefuse)); statement = QUOTE([ARR_2(_player,EGVAR(Interaction,Target))] call FUNC(startDefuse);); - exceptions[] = {"ACE_Interaction_isNotSwimming"}; + exceptions[] = {"isNotSwimming"}; showDisabled = 0; icon = PATHTOF(UI\Defuse_ca.paa); priority = 0.8; @@ -47,7 +47,7 @@ class CfgVehicles { displayName = $STR_ACE_Explosives_cellphone_displayName; condition = "('ACE_Cellphone' in (items ace_player))"; statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';"; - exceptions[] = {"ACE_Interaction_isNotSwimming"}; + exceptions[] = {"isNotSwimming"}; showDisabled = 0; icon = PATHTOF(Data\UI\Cellphone_UI.paa); priority = 0.8; diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 0b67fe5a7e..c19c65ccb2 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -3,16 +3,16 @@ - Explosives >> - Sprengstoffe >> - Explosivos >> - Ładunki wybuchowe >> - Explosifs >> - Výbušniny >> - Esplosivi >> - Robbanóanyagok >> - Explosivos >> - Взрывчатка >> + Explosives + Sprengstoffe + Explosivos + Ładunki wybuchowe + Explosifs + Výbušniny + Esplosivi + Robbanóanyagok + Explosivos + Взрывчатка Place >> diff --git a/addons/gforces/config.cpp b/addons/gforces/config.cpp index e81b034fd9..6c40f4ce1c 100644 --- a/addons/gforces/config.cpp +++ b/addons/gforces/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi", "CAA-Picard"}; + author[] = {"KoffeinFlummi", "esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf index 839110fd2b..c2a08ee73f 100644 --- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf +++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and CAA-Picard + * Author: KoffeinFlummi and esteldunedain * Calculates average g-forces and triggers g-effects * * Argument: diff --git a/addons/hearing/config.cpp b/addons/hearing/config.cpp index 0616ffa0e1..b822204484 100644 --- a/addons/hearing/config.cpp +++ b/addons/hearing/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {"ACE_EarPlugs"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"KoffeinFlummi", "CAA-Picard", "HopeJ", "commy2"}; + author[] = {"KoffeinFlummi", "esteldunedain", "HopeJ", "commy2"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 78e79d971e..d7b43e0092 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Initializes the Map module. * * Arguments: diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index 634537922c..1aa38848a5 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * Updates and applys the current deafness. Called every 0.1 sec from a PFEH. * * Arguments: diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index b804ea970f..e279c484a1 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -1,10 +1,19 @@ //XEH_clientInit.sqf #include "script_component.hpp" -_fnc = { - _this call FUNC(render); +// Install the render EH on the main display +addMissionEventHandler ["Draw3D", DFUNC(render)]; + +// This spawn is probably worth keeping, as pfh don't work natively on the briefing screen and IDK how reliable the hack we implemented for them is. +// The thread dies as soon as the mission start, so it's not really compiting for scheduler space. +[] spawn { + // Wait until the map display is detected + waitUntil {(!isNull findDisplay 12)}; + + // Install the render EH on the map screen + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", DFUNC(render)]; }; -addMissionEventHandler ["Draw3D", _fnc]; + ["ACE3", QGVAR(InteractKey), "Interact Key", {_this call FUNC(keyDown)}, diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf index 4ede3196fe..c2ae253fc0 100644 --- a/addons/interact_menu/XEH_preInit.sqf +++ b/addons/interact_menu/XEH_preInit.sqf @@ -20,6 +20,7 @@ PREP(render); PREP(renderBaseMenu); PREP(renderIcon); PREP(renderMenu); +PREP(renderSelector); PREP(splitPath); GVAR(keyDown) = false; diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp index 20fc30805e..17900c2f6b 100644 --- a/addons/interact_menu/config.cpp +++ b/addons/interact_menu/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"NouberNou", "CAA-Picard"}; + author[] = {"NouberNou", "esteldunedain"}; authorUrl = ""; VERSION_CONFIG; }; diff --git a/addons/interact_menu/functions/fnc_addActionToClass.sqf b/addons/interact_menu/functions/fnc_addActionToClass.sqf index c93342cfda..7a8278c72d 100644 --- a/addons/interact_menu/functions/fnc_addActionToClass.sqf +++ b/addons/interact_menu/functions/fnc_addActionToClass.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Insert an ACE action to a class, under a certain path * Note: This function is NOT global. * diff --git a/addons/interact_menu/functions/fnc_addActionToObject.sqf b/addons/interact_menu/functions/fnc_addActionToObject.sqf index 223247057a..9c4b5013ae 100644 --- a/addons/interact_menu/functions/fnc_addActionToObject.sqf +++ b/addons/interact_menu/functions/fnc_addActionToObject.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Insert an ACE action to an object, under a certain config path * Note: This function is NOT global. * diff --git a/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf b/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf index 36d4dc548d..582fe750a8 100644 --- a/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf +++ b/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Collect a entire tree of active actions * * Argument: diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 0fd4f6adb4..a0b9b31dd4 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -1,5 +1,5 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Compile the action menu from config for an object's class * * Argument: diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index ebccc2ca42..eccf1a6c76 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -1,5 +1,5 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Compile the self action menu from config for an object's class * * Argument: @@ -86,8 +86,11 @@ _actions = [ "ACE_SelfActions", "Self Actions", "\a3\ui_f\data\IGUI\Cfg\Actions\eject_ca.paa", - {}, - { true }, + { + // Dummy statement so it's not collapsed when there's no available actions + true + }, + {[ACE_player, objNull, ["isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering"]] call EFUNC(common,canInteractWith)}, {}, [], "Spine3", diff --git a/addons/interact_menu/functions/fnc_createAction.sqf b/addons/interact_menu/functions/fnc_createAction.sqf index 785db2c8b9..768d51f2a7 100644 --- a/addons/interact_menu/functions/fnc_createAction.sqf +++ b/addons/interact_menu/functions/fnc_createAction.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Creates an isolated ACE action * Note: This function is NOT global. * diff --git a/addons/interact_menu/functions/fnc_findActionNode.sqf b/addons/interact_menu/functions/fnc_findActionNode.sqf index 41dd32b7d8..4027b7a852 100644 --- a/addons/interact_menu/functions/fnc_findActionNode.sqf +++ b/addons/interact_menu/functions/fnc_findActionNode.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Return action point from path * Note: This function is NOT global. * diff --git a/addons/interact_menu/functions/fnc_isSubPath.sqf b/addons/interact_menu/functions/fnc_isSubPath.sqf index 1f086fb809..ec22b0aa9e 100644 --- a/addons/interact_menu/functions/fnc_isSubPath.sqf +++ b/addons/interact_menu/functions/fnc_isSubPath.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Check if the first path is a subpath of the other * * Argument: diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index 4c8ffd8b3a..e7c6815d50 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -13,6 +13,9 @@ #include "script_component.hpp" if(!GVAR(keyDown)) then { + while {dialog} do { + closeDialog 0; + }; // Only interact with others if on foot if (vehicle ACE_player != ACE_player) exitWith {}; diff --git a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf index 63c81b58bc..ae51d36109 100644 --- a/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_keyDownSelfAction.sqf @@ -13,6 +13,10 @@ #include "script_component.hpp" if(!GVAR(keyDownSelfAction)) then { + while {dialog} do { + closeDialog 0; + }; + GVAR(keyDownSelfAction) = true; GVAR(keyDown) = false; GVAR(keyDownTime) = diag_tickTime; diff --git a/addons/interact_menu/functions/fnc_removeActionFromClass.sqf b/addons/interact_menu/functions/fnc_removeActionFromClass.sqf index aee1675fa7..898228d6d8 100644 --- a/addons/interact_menu/functions/fnc_removeActionFromClass.sqf +++ b/addons/interact_menu/functions/fnc_removeActionFromClass.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Removes an action from a class * * Argument: diff --git a/addons/interact_menu/functions/fnc_removeActionFromObject.sqf b/addons/interact_menu/functions/fnc_removeActionFromObject.sqf index dc5fdc05f0..bab740c578 100644 --- a/addons/interact_menu/functions/fnc_removeActionFromObject.sqf +++ b/addons/interact_menu/functions/fnc_removeActionFromObject.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2, NouberNou and CAA-Picard + * Author: commy2, NouberNou and esteldunedain * Removes an action from an object * * Argument: diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 523520ee91..653a66c7e8 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -1,5 +1,5 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Render all available nearby interactions * * Argument: @@ -12,6 +12,8 @@ */ #include "script_component.hpp" +BEGIN_COUNTER(fnc_render); + private ["_cursorPos1", "_cursorPos2", "_cursorVec", "_p1", "_p2", "_p", "_v", "_cp", "_forEachIndex", "_renderTargets", "_x", "_cursorScreenPos", "_closestDistance", "_closestSelection", "_pos", "_sPos", "_disSq", "_closest", "_cTime", "_delta", "_foundTarget", "_misMatch", "_hoverPath", "_i"]; _foundTarget = false; _cursorPos1 = positionCameraToWorld [0, 0, 0]; @@ -97,7 +99,11 @@ if (GVAR(keyDown)) then { { _action = _x; - _pos = (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition); + _pos = if !(visibleMap) then { + (((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)) vectorAdd GVAR(selfMenuOffset)) call EFUNC(common,ASLToPosition) + } else { + [0.5, 0.5] + }; [_target, _action, _pos] call FUNC(renderBaseMenu); } forEach _classActions; }; @@ -107,7 +113,7 @@ if (GVAR(keyDown)) then { if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then { // Draw the red selector only when there's no cursor if !(uiNamespace getVariable [QGVAR(cursorMenuOpened),false]) then { - drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa", [1,0,0,1], _cursorPos2, 1, 1, 0, "", 0.5, 0.025, "TahomaB"]; + [[0.5,0.5], "\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa"] call FUNC(renderSelector); }; _cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); @@ -115,14 +121,11 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then { _closestDistance = 1000000; _closestSelection = -1; { - _pos = _x select 1; - _sPos = worldToScreen _pos; - if(count _sPos > 0) then { - _disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2); - if(_disSq < 0.0125 && _disSq < _closestDistance) then { - _closestDistance = _disSq; - _closestSelection = _forEachIndex; - }; + _sPos = _x select 1; + _disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2); + if(_disSq < 0.0125 && _disSq < _closestDistance) then { + _closestDistance = _disSq; + _closestSelection = _forEachIndex; }; } forEach GVAR(currentOptions); @@ -131,15 +134,14 @@ if(GVAR(keyDown) || GVAR(keyDownSelfAction)) then { _closest = GVAR(currentOptions) select _closestSelection; - _pos = _closest select 1; + _sPos = _closest select 1; _cTime = diag_tickTime; _delta = _cTime - GVAR(lastTime); GVAR(lastTime) = _cTime; - GVAR(rotationAngle) = GVAR(rotationAngle) + (180*_delta); - if(GVAR(rotationAngle) > 360) then { - GVAR(rotationAngle) = GVAR(rotationAngle) - 360; - }; - drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,0,0,.75], _pos, 0.6*SafeZoneW, 0.6*SafeZoneW, GVAR(rotationAngle), "", 0.5, 0.025, "TahomaB"]; + + GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360; + [_sPos, format [QUOTE(PATHTOF(ui\selector%1.paa)), floor (((abs GVAR(rotationAngle)) mod 90) / 6)]] call FUNC(renderSelector); + _foundTarget = true; GVAR(actionSelected) = true; GVAR(selectedAction) = (_closest select 0) select 1; @@ -207,3 +209,5 @@ for "_i" from GVAR(iconCount) to (count GVAR(iconCtrls))-1 do { }; GVAR(iconCtrls) resize GVAR(iconCount); GVAR(iconCount) = 0; + +END_COUNTER(fnc_render); diff --git a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf index b73c3c4979..a2154d0da9 100644 --- a/addons/interact_menu/functions/fnc_renderBaseMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderBaseMenu.sqf @@ -1,11 +1,11 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Render the interaction menu for a base action * * Argument: * 0: Object * 1: Action node - * 2: 3D position (Optional) + * 2: 3D position or 2D position (Optional) * * Return value: * Was the menu rendered @@ -14,6 +14,8 @@ */ #include "script_component.hpp" +BEGIN_COUNTER(fnc_renderBaseMenu) + private ["_distance","_pos","_weaponDir","_ref","_cameraPos","_sPos","_activeActionTree"]; EXPLODE_2_PVT(_this,_object,_baseActionNode); @@ -41,15 +43,16 @@ if((count _this) > 2) then { _pos = _pos vectorAdd ((visiblePositionASL _object) vectorDiff (getPosASL _object)); }; -_cameraToActionVec = (_pos call EFUNC(common,positionToASL)) vectorDiff ((positionCameraToWorld [0,0,0]) call EFUNC(common,positionToASL)); -GVAR(refSystem) = _cameraToActionVec call EFUNC(common,createOrthonormalReference); - // For non-self actions, exit if the action is too far away if (GVAR(keyDown) && {(ACE_player modelToWorld (ACE_player selectionPosition "pilot")) distance _pos >= _distance}) exitWith {false}; // Exit if the action is behind you -_sPos = worldToScreen _pos; +_sPos = if (count _pos != 2) then { + worldToScreen _pos +} else { + _pos +}; if(count _sPos == 0) exitWith {false}; // Exit if the action is off screen @@ -57,6 +60,8 @@ if ((_sPos select 0) < safeZoneXAbs || (_sPos select 0) > safeZoneXAbs + safeZon if ((_sPos select 1) < safeZoneY || (_sPos select 1) > safeZoneY + safeZoneH) exitWith {false}; +BEGIN_COUNTER(fnc_collectActiveActionTree) + // Collect active tree private "_uid"; _uid = format [QGVAR(ATCache_%1), _actionData select 0]; @@ -66,6 +71,8 @@ _activeActionTree = [ _object, _uid, 1.0, "interactMenuClosed" ] call EFUNC(common,cachedCall); +END_COUNTER(fnc_collectActiveActionTree) + /* diag_log "Printing: _activeActionTree"; _fnc_print = { @@ -83,6 +90,12 @@ if (count _activeActionTree == 0) exitWith {false}; //EXPLODE_2_PVT(_activeActionTree,_actionData,_actionChildren); -[[], _activeActionTree, _pos, [180,360]] call FUNC(renderMenu); +BEGIN_COUNTER(fnc_renderMenus); + +[[], _activeActionTree, _sPos, [180,360]] call FUNC(renderMenu); + +END_COUNTER(fnc_renderMenus); + +END_COUNTER(fnc_renderBaseMenu) true diff --git a/addons/interact_menu/functions/fnc_renderIcon.sqf b/addons/interact_menu/functions/fnc_renderIcon.sqf index 348070bc97..8054e9d800 100644 --- a/addons/interact_menu/functions/fnc_renderIcon.sqf +++ b/addons/interact_menu/functions/fnc_renderIcon.sqf @@ -1,11 +1,11 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Render a single interaction icon * * Argument: * 0: Text * 1: Color - * 2: 3d position ASL + * 2: 2d position * 3: ? * 4: ? * 5: ? @@ -18,30 +18,25 @@ */ #include "script_component.hpp" #define DEFAULT_ICON QUOTE(\z\ace\addons\interaction\ui\dot_ca.paa) -private ["_color", "_pos", "_sPos", "_ctrl", "_icon"]; +private ["_color", "_sPos", "_ctrl", "_icon"]; _text = _this select 0; _color = _this select 1; -_pos = _this select 2; +_sPos = _this select 2; _icon = _this select 6; -//systemChat format ["Icon %1 - %2,%3,%4", _text, _pos select 0, _pos select 1, _pos select 2]; +//systemChat format ["Icon %1 - %2,%3", _text, _sPos select 0, _sPos select 1]; -_sPos = worldToScreen _pos; -if(count _sPos > 0) then { - - if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { - _displayNum = [46,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); - //systemChat format ["Displaynum: %1", _displayNum]; - GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); - }; - _ctrl = GVAR(iconCtrls) select GVAR(iconCount); - GVAR(iconCount) = GVAR(iconCount) + 1; - if(_icon == "") then { - _icon = DEFAULT_ICON; - }; - _text = format ["
%4", _icon, _color, _color, _text]; - _ctrl ctrlSetStructuredText (parseText _text); - _ctrl ctrlSetPosition [(_sPos select 0)-(0.2*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.4*SafeZoneW, 0.035*SafeZoneW]; - //_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1]; - _ctrl ctrlCommit 0; +if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { + _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); + GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); }; +_ctrl = GVAR(iconCtrls) select GVAR(iconCount); +GVAR(iconCount) = GVAR(iconCount) + 1; +if(_icon == "") then { + _icon = DEFAULT_ICON; +}; +_text = format ["
%4", _icon, _color, _color, _text]; +_ctrl ctrlSetStructuredText (parseText _text); +_ctrl ctrlSetPosition [(_sPos select 0)-(0.125*SafeZoneW), (_sPos select 1)-(0.0095*SafeZoneW), 0.25*SafeZoneW, 0.1*SafeZoneW]; +//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1]; +_ctrl ctrlCommit 0; diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 0206e93952..42e8de16a2 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -1,11 +1,11 @@ /* - * Author: NouberNou and CAA-Picard + * Author: NouberNou and esteldunedain * Render an interaction menu and it's children recursively * * Argument: * 0: Parent path * 1: Action data - * 2: 3D position + * 2: 2D position * 3: Angle range available for rendering * * Return value: @@ -17,12 +17,14 @@ private ["_menuInSelectedPath", "_path", "_menuDepth", "_currentRenderDepth", "_x", "_offset", "_newPos", "_forEachIndex"]; -EXPLODE_4_PVT(_this,_parentPath,_action,_pos,_angles); +EXPLODE_4_PVT(_this,_parentPath,_action,_sPos,_angles); EXPLODE_3_PVT(_action,_actionData,_activeChildren,_actionObject); EXPLODE_2_PVT(_angles,_centerAngle,_maxAngleSpan); _menuDepth = (count GVAR(menuDepthPath)); +//BEGIN_COUNTER(constructing_paths); + // Store path to action _path = +_parentPath; _path pushBack [_actionData select 0,_actionObject]; @@ -38,24 +40,39 @@ _menuInSelectedPath = true; }; } forEach _path; +//END_COUNTER(constructing_paths); +//BEGIN_COUNTER(constructing_colors); + // Render icon // ARGB Color (First Hex Pair is transparancy) _color = "#FFFFFFFF"; -if(!_menuInSelectedPath) then { //_menuDepth > 0 && +if(!_menuInSelectedPath) then { if (_menuDepth > 0) then { _color = format ["#%1FFFFFF", [255 * ((((count _path) - 1)/_menuDepth) max 0.25)] call EFUNC(common,toHex)]; } else { _color = format ["#%1FFFFFF", [255 * 0.75] call EFUNC(common,toHex)]; }; }; -[_actionData select 1, _color, _pos, 1, 1, 0, _actionData select 2, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); + +//END_COUNTER(constructing_colors); +//BEGIN_COUNTER(fnc_renderIcons); + +[_actionData select 1, _color, _sPos, 1, 1, 0, _actionData select 2, 0.5, 0.025, "TahomaB"] call FUNC(renderIcon); + +//END_COUNTER(fnc_renderIcons); + +//BEGIN_COUNTER(currentOptions); // Add the action to current options -GVAR(currentOptions) pushBack [_this, _pos, _path]; +GVAR(currentOptions) pushBack [_this, _sPos, _path]; + +//END_COUNTER(currentOptions); // Exit without rendering children if it isn't if !(_menuInSelectedPath) exitWith {true}; +//BEGIN_COUNTER(children); + private ["_numChildren","_angleSpan","_angle","_angleInterval","_scale","_offset"]; _numChildren = count _activeChildren; _angleSpan = _maxAngleSpan min (55 * ((_numChildren) - 1)); @@ -68,14 +85,14 @@ if (_angleSpan < 360) then { _angleInterval = _angleSpan / (_numChildren - 1); }; } else { - _angleSpan / (_numChildren); + _angleInterval = _angleSpan / (_numChildren); }; if (_numChildren == 1) then { - _angleInterval = 60; + _angleInterval = 55; }; // Scale menu based on the amount of children -_scale = GVAR(menuScale) * (((0.8 * (0.46 / sin (0.5 * _angleInterval))) min 1.4) max 0.5); +_scale = 0.17 * (((0.8 * (0.46 / sin (0.5 * _angleInterval))) min 1.1) max 0.5); // Animate menu scale if (_menuInSelectedPath && (_menuDepth == count _path)) then { _scale = _scale * (0.3 + 0.7 * (((diag_tickTime - GVAR(expandedTime)) * 8) min 1)); @@ -83,17 +100,18 @@ if (_menuInSelectedPath && (_menuDepth == count _path)) then { _target = _actionObject; _player = ACE_player; + +//END_COUNTER(children); _angle = _centerAngle - _angleSpan / 2; { - + //BEGIN_COUNTER(children); private ["_offset","_newPos"]; - _offset = ((GVAR(refSystem) select 1) vectorMultiply (-_scale * cos _angle)) vectorAdd - ((GVAR(refSystem) select 2) vectorMultiply (-_scale * sin _angle)); - _newPos = ((_pos call EFUNC(common,positionToASL)) vectorAdd _offset) call EFUNC(common,ASLToPosition); + _newPos = [(_sPos select 0) -_scale * cos _angle, + (_sPos select 1) +_scale * (sin _angle) * 4/3]; //drawLine3D [_pos, _newPos, [1,0,0,0.8]]; - - [_path, _x, _newPos, [_angle, 140]] call FUNC(renderMenu); + //END_COUNTER(children); + [_path, _x, _newPos, [_angle, 150]] call FUNC(renderMenu); _angle = _angle + _angleInterval; } forEach _activeChildren; diff --git a/addons/interact_menu/functions/fnc_renderSelector.sqf b/addons/interact_menu/functions/fnc_renderSelector.sqf new file mode 100644 index 0000000000..44ed15e9c4 --- /dev/null +++ b/addons/interact_menu/functions/fnc_renderSelector.sqf @@ -0,0 +1,30 @@ +/* + * Author: esteldunedain + * Render a single interaction icon + * + * Argument: + * 0: 2d position + * 1: Icon + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +EXPLODE_2_PVT(_this,_sPos,_icon); + +if(GVAR(iconCount) > (count GVAR(iconCtrls))-1) then { + _displayNum = [[46, 12] select visibleMap,91919] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); + GVAR(iconCtrls) pushBack ((findDisplay _displayNum) ctrlCreate ["RscStructuredText", 54021+GVAR(iconCount)]); +}; + +private "_ctrl"; +_ctrl = GVAR(iconCtrls) select GVAR(iconCount); +GVAR(iconCount) = GVAR(iconCount) + 1; + +_ctrl ctrlSetStructuredText (parseText format ["", _icon]); +_ctrl ctrlSetPosition [(_sPos select 0)-(0.05*SafeZoneW), (_sPos select 1)-(0.014*SafeZoneW), 0.1*SafeZoneW, 0.035*SafeZoneW]; +//_ctrl ctrlSetBackgroundColor [1, 0, 0, 0.1]; +_ctrl ctrlCommit 0; diff --git a/addons/interact_menu/functions/fnc_splitPath.sqf b/addons/interact_menu/functions/fnc_splitPath.sqf index 87140d0482..609f26f972 100644 --- a/addons/interact_menu/functions/fnc_splitPath.sqf +++ b/addons/interact_menu/functions/fnc_splitPath.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Take full path and split it between parent path and action name * * Argument: diff --git a/addons/interact_menu/ui/selector0.paa b/addons/interact_menu/ui/selector0.paa new file mode 100644 index 0000000000..107c0df8ba Binary files /dev/null and b/addons/interact_menu/ui/selector0.paa differ diff --git a/addons/interact_menu/ui/selector1.paa b/addons/interact_menu/ui/selector1.paa new file mode 100644 index 0000000000..17f95562ee Binary files /dev/null and b/addons/interact_menu/ui/selector1.paa differ diff --git a/addons/interact_menu/ui/selector10.paa b/addons/interact_menu/ui/selector10.paa new file mode 100644 index 0000000000..ed783b45ec Binary files /dev/null and b/addons/interact_menu/ui/selector10.paa differ diff --git a/addons/interact_menu/ui/selector11.paa b/addons/interact_menu/ui/selector11.paa new file mode 100644 index 0000000000..cc70b12ef3 Binary files /dev/null and b/addons/interact_menu/ui/selector11.paa differ diff --git a/addons/interact_menu/ui/selector12.paa b/addons/interact_menu/ui/selector12.paa new file mode 100644 index 0000000000..b7aac55c75 Binary files /dev/null and b/addons/interact_menu/ui/selector12.paa differ diff --git a/addons/interact_menu/ui/selector13.paa b/addons/interact_menu/ui/selector13.paa new file mode 100644 index 0000000000..1adcca3c8e Binary files /dev/null and b/addons/interact_menu/ui/selector13.paa differ diff --git a/addons/interact_menu/ui/selector14.paa b/addons/interact_menu/ui/selector14.paa new file mode 100644 index 0000000000..f46fde1063 Binary files /dev/null and b/addons/interact_menu/ui/selector14.paa differ diff --git a/addons/interact_menu/ui/selector2.paa b/addons/interact_menu/ui/selector2.paa new file mode 100644 index 0000000000..7da669f90b Binary files /dev/null and b/addons/interact_menu/ui/selector2.paa differ diff --git a/addons/interact_menu/ui/selector3.paa b/addons/interact_menu/ui/selector3.paa new file mode 100644 index 0000000000..c9becb268a Binary files /dev/null and b/addons/interact_menu/ui/selector3.paa differ diff --git a/addons/interact_menu/ui/selector4.paa b/addons/interact_menu/ui/selector4.paa new file mode 100644 index 0000000000..eccec64c3a Binary files /dev/null and b/addons/interact_menu/ui/selector4.paa differ diff --git a/addons/interact_menu/ui/selector5.paa b/addons/interact_menu/ui/selector5.paa new file mode 100644 index 0000000000..0647f14c2e Binary files /dev/null and b/addons/interact_menu/ui/selector5.paa differ diff --git a/addons/interact_menu/ui/selector6.paa b/addons/interact_menu/ui/selector6.paa new file mode 100644 index 0000000000..a9555c2497 Binary files /dev/null and b/addons/interact_menu/ui/selector6.paa differ diff --git a/addons/interact_menu/ui/selector7.paa b/addons/interact_menu/ui/selector7.paa new file mode 100644 index 0000000000..b64f36af46 Binary files /dev/null and b/addons/interact_menu/ui/selector7.paa differ diff --git a/addons/interact_menu/ui/selector8.paa b/addons/interact_menu/ui/selector8.paa new file mode 100644 index 0000000000..4c3a422258 Binary files /dev/null and b/addons/interact_menu/ui/selector8.paa differ diff --git a/addons/interact_menu/ui/selector9.paa b/addons/interact_menu/ui/selector9.paa new file mode 100644 index 0000000000..c39a780c4f Binary files /dev/null and b/addons/interact_menu/ui/selector9.paa differ diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 9ccb798d0f..f934bd8076 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -405,6 +405,7 @@ class CfgVehicles { icon = ""; // @todo enableInside = 1; hotkey = "E"; + exceptions[] = {"notOnMap"}; }; }; }; diff --git a/addons/interaction/XEH_clientInit.sqf b/addons/interaction/XEH_clientInit.sqf index 76647e54a3..1ed3883f02 100644 --- a/addons/interaction/XEH_clientInit.sqf +++ b/addons/interaction/XEH_clientInit.sqf @@ -1,4 +1,4 @@ -// by commy2 and CAA-Picard +// by commy2 and esteldunedain #include "script_component.hpp" diff --git a/addons/interaction/config.cpp b/addons/interaction/config.cpp index d5d9d63d69..cfca73a90b 100644 --- a/addons/interaction/config.cpp +++ b/addons/interaction/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interact_menu"}; - author[] = {"commy2", "KoffeinFlummi", "CAA-Picard", "bux578"}; + author[] = {"commy2", "KoffeinFlummi", "esteldunedain", "bux578"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf index dfe3b2e9b6..1a079b1ac6 100644 --- a/addons/interaction/functions/fnc_addPassengerActions.sqf +++ b/addons/interaction/functions/fnc_addPassengerActions.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Mount unit actions inside passenger submenu * * Argument: diff --git a/addons/interaction/functions/fnc_addPassengersActions.sqf b/addons/interaction/functions/fnc_addPassengersActions.sqf index de0c91e767..c446be3737 100644 --- a/addons/interaction/functions/fnc_addPassengersActions.sqf +++ b/addons/interaction/functions/fnc_addPassengersActions.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Create one action per passenger * * Argument: diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 4940d42e0f..a4417df4e8 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -3,28 +3,28 @@ - Interactions >> + Interactions - Torso >> + Torso - Head >> + Head - Left Arm >> + Left Arm - Right Arm >> + Right Arm - Left Leg >> + Left Leg - Right Leg >> + Right Leg - Weapon >> + Weapon Interaction Menu @@ -183,16 +183,16 @@ << Indietro - Gestures >> - Gesten >> - Gestos >> - Gesty >> - Gesta >> - Signaux >> - Жесты >> - Kézjelek >> - Gestos >> - Segnali gestuali >> + Gestures + Gesten + Gestos + Gesty + Gesta + Signaux + Жесты + Kézjelek + Gestos + Segnali gestuali Attack @@ -435,16 +435,16 @@ A Terra! - Team Management >> - Team Management >> - Gestión de equipo >> - Gestion d'équipe >> - Zarządzanie oddziałem >> - Správa týmu >> - Управление группой >> - Gerenciamento de Equipe >> - Organizzazione Squadra >> - Csapat kezelés >> + Team<br/>Management + Team<br/>Management + Gestión<br/>de equipo + Gestion<br/>d'équipe + Zarządzanie<br/>oddziałem + Správa<br/>týmu + Управление<br/>группой + Gerenciamento<br/>de Equipe + Organizzazione<br/>Squadra + Csapat<br/>kezelés Red @@ -495,52 +495,52 @@ Sárga - Join Team Red - Team Rot beitreten - Unirse al equipo rojo - Rejoindre Rouge - Dołącz do drużyny czerwonej - Připojit do Červeného Týmu - Присоединиться к красной группе - Unir-se à Equipe Vermelha - Entra nella Squadra Rossa - Csatlakozás a piros csapathoz + Join Team<br/>Red + Team Rot<br/>beitreten + Unirse al<br/>equipo rojo + Rejoindre<br/>Rouge + Dołącz do drużyny<br/>czerwonej + Připojit do<br/>Červeného Týmu + Присоединиться<br/>к красной группе + Unir-se à<br/>Equipe Vermelha + Entra nella<br/>Squadra Rossa + Csatlakozás a<br/>piros csapathoz - Join Team Green - Team Grün beitreten - Unirse al equipo verde - Rejoindre Verte - Dołącz do drużyny zielonej - Připojit do Zeleného Týmu - Присоединиться к зеленой группе - Unir-se à Equipe Verde - Entra nella Squadra Verde - Csatlakozás a zöld csapathoz + Join Team<br/>Green + Team Grün<br/>beitreten + Unirse al<br/>equipo verde + Rejoindre<br/>Verte + Dołącz do<br/>drużyny zielonej + Připojit do<br/>Zeleného Týmu + Присоединиться<br/>к зеленой группе + Unir-se à<br/>Equipe Verde + Entra nella<br/>Squadra Verde + Csatlakozás a<br/>zöld csapathoz - Join Team Blue - Team Blau beitreten - Unirse al equipo azul - Rejoindre Bleue - Dołącz do drużyny niebieskiej - Připojit do Modrého Týmu - Присоединиться к синей группе - Unir-se à Equipe Azul - Entra nella Squadra Blu - Csatlakozás a kék csapathoz + Join Team<br/>Blue + Team Blau<br/>beitreten + Unirse al<br/>equipo azul + Rejoindre<br/>Bleue + Dołącz do<br/>drużyny niebieskiej + Připojit do<br/>Modrého Týmu + Присоединиться<br/>к синей группе + Unir-se à<br/>Equipe Azul + Entra nella<br/>Squadra Blu + Csatlakozás a<br/>kék csapathoz - Join Team Yellow - Team Gelb beitreten - Unirse al equipo amarillo - Rejoindre Jaune - Dołącz do drużyny żółtej - Připojit do Žlutého Týmu - Присоединиться к желтой группе - Unir-se à Equipe Amarela - Entra nella Squadra Gialla - Csatlakozás a sárga csapathoz + Join Team<br/>Yellow + Team Gelb<br/>beitreten + Unirse al<br/>equipo amarillo + Rejoindre<br/>Jaune + Dołącz do<br/>drużyny żółtej + Připojit do<br/>Žlutého Týmu + Присоединиться<br/>к желтой группе + Unir-se à<br/>Equipe Amarela + Entra nella<br/>Squadra Gialla + Csatlakozás a<br/>sárga csapathoz You joined Team %1 @@ -626,14 +626,14 @@ Mimo dosah - Equipment >> - Ausrüstung >> - Equipamiento >> - Équipment >> - Ekwipunek >> - Vybavení >> - Felszerelés >> - Снаряжение >> + Equipment + Ausrüstung + Equipamiento + Équipment + Ekwipunek + Vybavení + Felszerelés + Снаряжение Push @@ -654,7 +654,7 @@ Interactuar - Passengers >> + Passengers diff --git a/addons/kestrel/config.cpp b/addons/kestrel/config.cpp index 61735f1697..b79dcd5825 100644 --- a/addons/kestrel/config.cpp +++ b/addons/kestrel/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {"ACE_Kestrel"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common","ace_interaction"}; - author[] = {"Falke","commy2","KoffeinFlummi","CAA-Picard"}; + author[] = {"Falke","commy2","KoffeinFlummi","esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf index 626e0e3abc..969607f987 100644 --- a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf +++ b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf @@ -1,4 +1,4 @@ -// by commy2 and CAA-Picard +// by commy2 and esteldunedain #include "script_component.hpp" EXPLODE_3_PVT(_this,_unit,_range,_isGreen); diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf index c81fc46c40..6012b1e0e2 100644 --- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf +++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf @@ -17,6 +17,7 @@ PARAMS_1(_interactionType); +//Ignore self-interaction menu if (_interactionType != 0) exitWith {}; //for performance only do stuff it they have a wirecutter item @@ -32,7 +33,10 @@ if (!("ACE_wirecutter" in (items ace_player))) exitWith {}; {deleteVehicle _x;} forEach _addedHelpers; [_pfID] call CBA_fnc_removePerFrameHandler; } else { - //If play moved >5 meters from last pos, then rescan + // Prevent Rare Error when ending mission with interact key down: + if (isNull ace_player) exitWith {}; + + //If player moved >5 meters from last pos, then rescan if (((getPosASL ace_player) distance _setPosition) > 5) then { _fncStatement = { diff --git a/addons/magazinerepack/config.cpp b/addons/magazinerepack/config.cpp index 514a74350a..7011d28c0c 100644 --- a/addons/magazinerepack/config.cpp +++ b/addons/magazinerepack/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2","CAA-Picard"}; + author[] = {"commy2","esteldunedain"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 937cfcbf9a..401d3beaf7 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -3,16 +3,16 @@ - Repack Magazines - Magazine umpacken - Reorganizar cargadores - Réorganiser chargeurs - Przepakuj magazynki - Přepáskovat Zásobníky - Ricarica Caricatori - Reorganizar Carregadores - Újratárazás - Перепаковать магазины + Repack<br/>Magazines + Magazine<br/>umpacken + Reorganizar<br/>cargadores + Réorganiser<br/>chargeurs + Przepakuj<br/>magazynki + Přepáskovat<br/>Zásobníky + Ricarica<br/>Caricatori + Reorganizar<br/>Carregadores + Újratárazás<<br/>Hungarian> + Перепаковать<br/>магазины Select Magazine Menu diff --git a/addons/map/config.cpp b/addons/map/config.cpp index c779caa9b2..e544a67c12 100644 --- a/addons/map/config.cpp +++ b/addons/map/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"KoffeinFlummi","Rocko","CAA-Picard"}; + author[] = {"KoffeinFlummi","Rocko","esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/map/functions/fnc_determineMapLight.sqf b/addons/map/functions/fnc_determineMapLight.sqf index 370bcdb167..e342ae82df 100644 --- a/addons/map/functions/fnc_determineMapLight.sqf +++ b/addons/map/functions/fnc_determineMapLight.sqf @@ -1,5 +1,5 @@ /* -* Author: Rocko and CAA-Picard +* Author: Rocko and esteldunedain * Calculates the current map illumination for a given unit * * Arguments: diff --git a/addons/map/functions/fnc_moduleMap.sqf b/addons/map/functions/fnc_moduleMap.sqf index 4fdea61420..b6e556c92e 100644 --- a/addons/map/functions/fnc_moduleMap.sqf +++ b/addons/map/functions/fnc_moduleMap.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Initializes the Map module. * * Arguments: diff --git a/addons/map/functions/fnc_updateMapEffects.sqf b/addons/map/functions/fnc_updateMapEffects.sqf index ad32a02632..027197a150 100644 --- a/addons/map/functions/fnc_updateMapEffects.sqf +++ b/addons/map/functions/fnc_updateMapEffects.sqf @@ -1,5 +1,5 @@ /* -* Author: Rocko and CAA-Picard +* Author: Rocko and esteldunedain * On map draw, updates the effects * * Arguments: diff --git a/addons/maptools/CfgVehicles.hpp b/addons/maptools/CfgVehicles.hpp index 4ecc649893..7d81ae7e08 100644 --- a/addons/maptools/CfgVehicles.hpp +++ b/addons/maptools/CfgVehicles.hpp @@ -7,7 +7,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapTools_Menu"; condition = QUOTE((call FUNC(canUseMapTools) || {call FUNC(canUseMapGPS)})); statement = ""; - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 0; priority = 100; enableInside = 1; @@ -16,7 +16,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapToolsHide"; condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 1; priority = 5; enableInside = 1; @@ -25,7 +25,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapToolsShowNormal"; condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1})); statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 1; priority = 4; enableInside = 1; @@ -34,7 +34,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapToolsShowSmall"; condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2})); statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 1; priority = 3; enableInside = 1; @@ -43,7 +43,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapToolsAlignNorth"; condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 1; priority = 2; enableInside = 1; @@ -52,7 +52,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapToolsAlignCompass"; condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0} && {('ItemCompass' in assigneditems ACE_player) || {'ItemCompass' in assigneditems ACE_player}})); statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player; [] call FUNC(updateMapToolMarkers)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 1; priority = 1; enableInside = 1; @@ -61,7 +61,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapGpsShow"; condition = QUOTE((call FUNC(canUseMapGPS) && {!GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = true; [GVAR(mapGpsShow)] call FUNC(openMapGps)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 0; priority = 0; enableInside = 1; @@ -70,7 +70,7 @@ class CfgVehicles { displayName = "$STR_ACE_MapTools_MapGpsHide"; condition = QUOTE((call FUNC(canUseMapGPS) && {GVAR(mapGpsShow)})); statement = QUOTE(GVAR(mapGpsShow) = false; [GVAR(mapGpsShow)] call FUNC(openMapGps)); - exceptions[] = {"ACE_Drag_isNotDragging", QEGVAR(common,notOnMap)}; + exceptions[] = {"isNotDragging", "notOnMap"}; showDisabled = 0; priority = 0; enableInside = 1; diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index 5267a8c802..e94cdaf266 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" diff --git a/addons/maptools/config.cpp b/addons/maptools/config.cpp index ea39ca7708..d5b1f26396 100644 --- a/addons/maptools/config.cpp +++ b/addons/maptools/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {"ACE_MapTools"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"CAA-Picard"}; + author[] = {"esteldunedain"}; authorUrl = "https://github.com/esteldunedain/"; VERSION_CONFIG; }; diff --git a/addons/maptools/functions/fnc_addLineMarker.sqf b/addons/maptools/functions/fnc_addLineMarker.sqf index 24446c18a6..a55792e98a 100644 --- a/addons/maptools/functions/fnc_addLineMarker.sqf +++ b/addons/maptools/functions/fnc_addLineMarker.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Add the line marker * diff --git a/addons/maptools/functions/fnc_calculateMapScale.sqf b/addons/maptools/functions/fnc_calculateMapScale.sqf index 3c3fc33d53..d8ed1cfcb9 100644 --- a/addons/maptools/functions/fnc_calculateMapScale.sqf +++ b/addons/maptools/functions/fnc_calculateMapScale.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Returns the equivalent of 100m in screen coordinates * diff --git a/addons/maptools/functions/fnc_canDraw.sqf b/addons/maptools/functions/fnc_canDraw.sqf index 2c3cc68e21..a5088f668b 100644 --- a/addons/maptools/functions/fnc_canDraw.sqf +++ b/addons/maptools/functions/fnc_canDraw.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" diff --git a/addons/maptools/functions/fnc_canUseMapGPS.sqf b/addons/maptools/functions/fnc_canUseMapGPS.sqf index af6840f7fa..f3d0b10c56 100644 --- a/addons/maptools/functions/fnc_canUseMapGPS.sqf +++ b/addons/maptools/functions/fnc_canUseMapGPS.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" diff --git a/addons/maptools/functions/fnc_canUseMapTools.sqf b/addons/maptools/functions/fnc_canUseMapTools.sqf index f06408d929..fe0bf012da 100644 --- a/addons/maptools/functions/fnc_canUseMapTools.sqf +++ b/addons/maptools/functions/fnc_canUseMapTools.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" diff --git a/addons/maptools/functions/fnc_cancelDrawing.sqf b/addons/maptools/functions/fnc_cancelDrawing.sqf index 1cd9f4fa77..09396e61fe 100644 --- a/addons/maptools/functions/fnc_cancelDrawing.sqf +++ b/addons/maptools/functions/fnc_cancelDrawing.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Cancel the drawing of the current line marker * diff --git a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf index dcae05c572..d2675a2b06 100644 --- a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf +++ b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Copy recieved markers to map * diff --git a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf index 27e0a61b72..f4aebf6093 100644 --- a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf +++ b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Send Map markers to other player * diff --git a/addons/maptools/functions/fnc_copyMapStart.sqf b/addons/maptools/functions/fnc_copyMapStart.sqf index d3a1efaa80..11464d7573 100644 --- a/addons/maptools/functions/fnc_copyMapStart.sqf +++ b/addons/maptools/functions/fnc_copyMapStart.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Send request to remote player * @@ -15,7 +15,7 @@ * Return value: * Return */ - + #include "script_component.hpp" PARAMS_1(_player,_target); diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index 0dfc4d895e..4553ed62ab 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Handle key down on map. * diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index 0a1309d456..b0eb848e61 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Handle mouse buttons. * diff --git a/addons/maptools/functions/fnc_handleMouseMove.sqf b/addons/maptools/functions/fnc_handleMouseMove.sqf index aac19ba883..6df07cfead 100644 --- a/addons/maptools/functions/fnc_handleMouseMove.sqf +++ b/addons/maptools/functions/fnc_handleMouseMove.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Handle mouse movement over the map tool. * diff --git a/addons/maptools/functions/fnc_handleMouseZChanged.sqf b/addons/maptools/functions/fnc_handleMouseZChanged.sqf index 3f68512d4d..a2faf1b3aa 100644 --- a/addons/maptools/functions/fnc_handleMouseZChanged.sqf +++ b/addons/maptools/functions/fnc_handleMouseZChanged.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Handle mouse wheel. * @@ -24,7 +24,7 @@ _handled = false; // If drawing, change line color -//@todo AGM bug: +//@todo AGM bug: // ACE_Map_drawColors is never defined /* if (count GVAR(drawing_tempLineMarker) > 0) then { @@ -37,7 +37,7 @@ _handled = false; }; GVAR(drawing_tempLineMarker) set [3, ACE_Map_drawColor]; GVAR(drawing_tempLineMarker) call ACE_Map_fnc_updateLineMarker; - + _handled = true; }; */ _handled diff --git a/addons/maptools/functions/fnc_isInsideMapTool.sqf b/addons/maptools/functions/fnc_isInsideMapTool.sqf index 98b88651a6..4e2339f9f1 100644 --- a/addons/maptools/functions/fnc_isInsideMapTool.sqf +++ b/addons/maptools/functions/fnc_isInsideMapTool.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Return true if the position is inside the map marker (to allow dragging). * diff --git a/addons/maptools/functions/fnc_openMapGps.sqf b/addons/maptools/functions/fnc_openMapGps.sqf index c89416401b..03b3f5525c 100644 --- a/addons/maptools/functions/fnc_openMapGps.sqf +++ b/addons/maptools/functions/fnc_openMapGps.sqf @@ -1,5 +1,5 @@ /* -* Author: CAA-Picard +* Author: esteldunedain * * Opens or closes the gps on the map screen, showing coordinates * diff --git a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf index ea022b4cf2..a4d25f8157 100644 --- a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf +++ b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf @@ -1,4 +1,4 @@ -//CAA-Picard +//esteldunedain //update gps display #include "script_component.hpp" @@ -11,7 +11,7 @@ disableSerialization; _mapGpsDisplay = uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull]; _ctrl = _mapGpsDisplay displayCtrl 913590; -_ctrl ctrlSetText str(round(getDir player)); //set Heading +_ctrl ctrlSetText str(round(getDir player)); //set Heading _ctrl = _mapGpsDisplay displayCtrl 913591; _ctrl ctrlSetText str(round((getPosASL player) select 2)); //set Altitude _ctrl = _mapGpsDisplay displayCtrl 913592; diff --git a/addons/maptools/functions/fnc_removeLineMarker.sqf b/addons/maptools/functions/fnc_removeLineMarker.sqf index 124d4b031c..15af48217e 100644 --- a/addons/maptools/functions/fnc_removeLineMarker.sqf +++ b/addons/maptools/functions/fnc_removeLineMarker.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Remove the line marker * diff --git a/addons/maptools/functions/fnc_updateLineMarker.sqf b/addons/maptools/functions/fnc_updateLineMarker.sqf index 34c8be2a04..9635dc02fa 100644 --- a/addons/maptools/functions/fnc_updateLineMarker.sqf +++ b/addons/maptools/functions/fnc_updateLineMarker.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Updates the line marker position and scale * @@ -19,7 +19,7 @@ _startPos = _this select 1; _difPos = (_this select 2) vectorDiff _startPos ; _color = _this select 3; - + _name setMarkerShapeLocal "RECTANGLE"; _name setMarkerAlphaLocal 1; _name setMarkerColorLocal GVAR(drawing_drawColor); diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index a167a8eb45..bb096bd064 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Update the map tool markers, position, size, rotation and visibility. * diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index 1658856128..5dd4578976 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -27,16 +27,16 @@ Картографические инструменты позволяют измерять расстояния и углы на карте. - Map Tools >> - Herramientas de mapa >> - Outils de navigation >> - Narzędzia nawigacyjne >> - Kartenwerkzeug >> - Pomůcky k Mapě >> - Strumenti Cartografici >> - Ferramentas de Mapa >> - Térképészeti eszközök >> - Инструменты карты >> + Map Tools + Herramientas de mapa + Outils de navigation + Narzędzia nawigacyjne + Kartenwerkzeug + Pomůcky k Mapě + Strumenti Cartografici + Ferramentas de Mapa + Térképészeti eszközök + Инструменты карты Hide Map Tool diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 0ccab9d32b..58ca82750b 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -347,7 +347,7 @@ class CfgVehicles { }; class ACE_SelfActions { class Medical { - displayName = "Medical"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Medical"; runOnHover = 1; hotkey = "M"; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); @@ -372,7 +372,7 @@ class CfgVehicles { }; // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); @@ -383,31 +383,31 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); }; @@ -437,7 +437,7 @@ class CfgVehicles { }; class TriageCard { - displayName = "Triage Card"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_TriageCard"; distance = 2.0; condition = "true"; statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); @@ -450,7 +450,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); @@ -461,19 +461,19 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); @@ -499,7 +499,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); @@ -510,25 +510,25 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -540,7 +540,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); @@ -552,18 +552,18 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -588,7 +588,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); @@ -599,23 +599,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -627,7 +627,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); }; @@ -637,18 +637,18 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -674,7 +674,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); @@ -685,23 +685,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -712,7 +712,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); @@ -723,7 +723,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -749,7 +749,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); @@ -760,23 +760,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -788,7 +788,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); }; @@ -798,7 +798,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -825,7 +825,7 @@ class CfgVehicles { }; // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); @@ -836,31 +836,31 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'head', 'CheckBloodPressure')] call DFUNC(treatment)); }; @@ -931,7 +931,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); @@ -942,19 +942,19 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'body', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); @@ -998,7 +998,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); @@ -1009,25 +1009,25 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'ElasticBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'QuikClot')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\bandage.paa); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -1039,7 +1039,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); @@ -1051,64 +1051,64 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class BloodIV: fieldDressing { - displayName = "Give Blood IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_1000"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "Give Blood IV (500ml)"; + displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_500')] call DFUNC(treatment)); }; class BloodIV_250: BloodIV { - displayName = "Give Blood IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV_250')] call DFUNC(treatment)); }; class PlasmaIV: BloodIV { - displayName = "Give Blood IV (1000ml)"; - condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(canTreatCached)); - statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'BloodIV')] call DFUNC(treatment)); + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000"; + condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(canTreatCached)); + statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV')] call DFUNC(treatment)); }; class PlasmaIV_500: PlasmaIV { - displayName = "Give Plasma IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_500')] call DFUNC(treatment)); }; class PlasmaIV_250: PlasmaIV { - displayName = "Give Plasma IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'PlasmaIV_250')] call DFUNC(treatment)); }; class SalineIV: BloodIV { - displayName = "Give Saline IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_1000"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV')] call DFUNC(treatment)); }; class SalineIV_500: SalineIV { - displayName = "Give Saline IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_500')] call DFUNC(treatment)); }; class SalineIV_250: SalineIV { - displayName = "Give Saline IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'SalineIV_250')] call DFUNC(treatment)); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -1132,7 +1132,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); @@ -1143,23 +1143,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -1171,7 +1171,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Atropine')] call DFUNC(treatment)); }; @@ -1181,64 +1181,64 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Epinephrine')] call DFUNC(treatment)); }; class BloodIV: fieldDressing { - displayName = "Give Blood IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_1000"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "Give Blood IV (500ml)"; + displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_500')] call DFUNC(treatment)); }; class BloodIV_250: BloodIV { - displayName = "Give Blood IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV_250')] call DFUNC(treatment)); }; class PlasmaIV: BloodIV { - displayName = "Give Plasma IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment)); }; class PlasmaIV_500: PlasmaIV { - displayName = "Give Plasma IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_500')] call DFUNC(treatment)); }; class PlasmaIV_250: PlasmaIV { - displayName = "Give Plasma IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV_250')] call DFUNC(treatment)); }; class SalineIV: BloodIV { - displayName = "Give Saline IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_1000"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV')] call DFUNC(treatment)); }; class SalineIV_500: SalineIV { - displayName = "Give Saline IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_500"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_500')] call DFUNC(treatment)); }; class SalineIV_250: SalineIV { - displayName = "Give Saline IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_250"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'SalineIV_250')] call DFUNC(treatment)); }; class CheckPulse: fieldDressing { - displayName = "Check Pulse"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckPulse"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckPulse')] call DFUNC(treatment)); icon = ""; }; class CheckBloodPressure: CheckPulse { - displayName = "Check Blood Pressure"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'CheckBloodPressure')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -1264,7 +1264,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); @@ -1275,23 +1275,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -1302,7 +1302,7 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Morphine')] call DFUNC(treatment)); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Atropine')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\autoInjector.paa); @@ -1313,53 +1313,53 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Epinephrine')] call DFUNC(treatment)); }; class BloodIV: fieldDressing { - displayName = "Give Blood IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "Give Blood IV (500ml)"; + displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_500')] call DFUNC(treatment)); }; class BloodIV_250: BloodIV { - displayName = "Give Blood IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV_250')] call DFUNC(treatment)); }; class PlasmaIV: BloodIV { - displayName = "Give Plasma IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment)); }; class PlasmaIV_500: PlasmaIV { - displayName = "Give Plasma IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_500')] call DFUNC(treatment)); }; class PlasmaIV_250: PlasmaIV { - displayName = "Give Plasma IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV_250')] call DFUNC(treatment)); }; class SalineIV: BloodIV { - displayName = "Give saline IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV')] call DFUNC(treatment)); }; class SalineIV_500: SalineIV { - displayName = "Give saline IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_500')] call DFUNC(treatment)); }; class SalineIV_250: SalineIV { - displayName = "Give saline IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'SalineIV_250')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'RemoveTourniquet')] call DFUNC(treatment)); }; @@ -1384,7 +1384,7 @@ class CfgVehicles { // Advanced medical class FieldDressing { - displayName = "Field Dressing"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_FieldDressing"; distance = 5.0; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); @@ -1395,23 +1395,23 @@ class CfgVehicles { icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { - displayName = "Packing Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_PackingBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PackingBandage')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\packingBandage.paa); }; class ElasticBandage: fieldDressing { - displayName = "Elastic Bandage"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_ElasticBandage"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'ElasticBandage')] call DFUNC(treatment)); }; class QuikClot: fieldDressing { - displayName = "QuikClot"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_QuikClot"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'QuikClot')] call DFUNC(treatment)); }; class Tourniquet: fieldDressing { - displayName = "Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Tourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Tourniquet')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\tourniquet.paa); @@ -1423,7 +1423,7 @@ class CfgVehicles { icon = PATHTOF(UI\icons\autoInjector.paa); }; class Atropine: Morphine { - displayName = "Atropine"; + displayName = "$STR_ACE_Medical_Inject_Atropine"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Atropine')] call DFUNC(treatment)); }; @@ -1433,53 +1433,53 @@ class CfgVehicles { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Epinephrine')] call DFUNC(treatment)); }; class BloodIV: fieldDressing { - displayName = "Give Blood IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment)); icon = PATHTOF(UI\icons\iv.paa); }; class BloodIV_500: BloodIV { - displayName = "Give Blood IV (500ml)"; + displayName = "#STR_ACE_MEDICAL_ACTIONS_Blood4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_500')] call DFUNC(treatment)); }; class BloodIV_250: BloodIV { - displayName = "Give Blood IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Blood4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV_250')] call DFUNC(treatment)); }; class PlasmaIV: BloodIV { - displayName = "Give Plasma IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment)); }; class PlasmaIV_500: PlasmaIV { - displayName = "Give Plasma IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_500')] call DFUNC(treatment)); }; class PlasmaIV_250: PlasmaIV { - displayName = "Give Plasma IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV_250')] call DFUNC(treatment)); }; class SalineIV: BloodIV { - displayName = "Give Saline IV (1000ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_1000"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV')] call DFUNC(treatment)); }; class SalineIV_500: SalineIV { - displayName = "Give Saline IV (500ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_500"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_500')] call DFUNC(treatment)); }; class SalineIV_250: SalineIV { - displayName = "Give Saline IV (250ml)"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_Saline4_250"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'SalineIV_250')] call DFUNC(treatment)); }; class RemoveTourniquet: Tourniquet { - displayName = "Remove Tourniquet"; + displayName = "$STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"; condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(canTreatCached)); statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'RemoveTourniquet')] call DFUNC(treatment)); }; diff --git a/addons/medical/functions/fnc_addUnloadPatientActions.sqf b/addons/medical/functions/fnc_addUnloadPatientActions.sqf index 89960afae9..c792746d47 100644 --- a/addons/medical/functions/fnc_addUnloadPatientActions.sqf +++ b/addons/medical/functions/fnc_addUnloadPatientActions.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Create one unload action per unconscious passenger * * Argument: diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 1ff24420d7..80ac936952 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,788 +1,857 @@ - + + - - - - Inject Morphine - Morphin injizieren - Inyectar Morfina - Wstrzyknij morfinę - Aplikovat Morfin - Ввести морфин - Morphine - Morfium - Injetar Morfina - Inietta Morfina - - - Inject Epinephrine - Epinephrine injizieren - Inyectar Epinefrina - Wtrzyknij adrenalinę - Aplikovat Adrenalin - Ввести андреналил - Adrénaline - Adrenalin - Injetar Epinefrina - Inietta Epinefrina - - - Transfuse Blood - Bluttransfusion - Transfundir sangre - Przetocz krew - Transfúze krve - Перелить кровь - Transfusion - Infúzió - Transfundir Sangue - Effettua Trasfusione - - - Bandage - Verbinden - Venda - Bandaż - Obvázat - Pansement - Benda - Kötözés - Atadura - Перевязать - - - Bandage Head - Kopf verbinden - Vendar la cabeza - Bandażuj głowę - Obvázat hlavu - Перевязать голову - Pansement Tête - Fej kötözése - Atar Cabeça - Benda la testa - - - Bandage Torso - Torso verbinden - Vendar el torso - Bandażuj tors - Obvázat hruď - Перевязать торс - Pansement Torse - Felsőtest kötözése - Atar Tronco - Benda il torso - - - Bandage Left Arm - Arm links verbinden - Vendar el brazo izquierdo - Bandażuj lewe ramię - Obvázat levou ruku - Перевязать левую руку - Pansement Bras Gauche - Bal kar kötözése - Atar Braço Esquerdo - Benda il braccio sinistro - - - Bandage Right Arm - Arm rechts verbinden - Vendar el brazo derecho - Bandażuj prawe ramię - Obvázat pravou ruku - Перевязать правую руку - Pansement Bras Droit - Jobb kar kötözése - Atar Braço Direito - Benda il braccio destro - - - Bandage Left Leg - Bein links verbinden - Vendar la pierna izquierda - Bandażuj lewą nogę - Obvázat levou nohu - Перевязать левую ногу - Pansement Jambe Gauche - Bal láb kötözése - Atar Perna Esquerda - Benda la gamba sinistra - - - Bandage Right Leg - Bein rechts verbinden - Vendar la pierna derecha - Bandażuj prawą nogę - Obvázat pravou nohu - Перевязать правую ногу - Pansement Jambe Droite - Jobb láb kötözése - Atar Perna Direita - Benda la gamba destra - - - Injecting Morphine ... - Morphin injizieren ... - Inyectando Morfina ... - Wstrzykiwanie morfiny ... - Aplikuju Morfin ... - Введение морфина... - Injection de Morphine... - Morfium beadása... - Injetando Morfina ... - Inietto la morfina ... - - - Injecting Epinephrine ... - Epinephrine injizieren ... - Inyectando Epinefrina ... - Wstrzykiwanie adrenaliny ... - Aplikuju Adrenalin ... - Введение андреналина - Injection d'Adrénaline ... - Adrenalin beadása... - Injetando Epinefrina ... - Inietto l'epinefrina ... - - - Transfusing Blood ... - Bluttransfusion ... - Realizando transfusión ... - Przetaczanie krwi ... - Probíhá transfúze krve ... - Переливание крови... - Transfusion Sanguine ... - Infúzió... - Transfundindo Sangue ... - Effettuo la trasfusione ... - - - Bandaging ... - Verbinden ... - Vendando ... - Bandażowanie ... - Obvazuji ... - Pansement ... - Sto applicando la benda ... - Bekötözés... - Atando ... - Перевязывание.... - - - - - Minor - - - Delayed - - - Immediate - - - Deceased - - - None - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration Normale - Normalny oddech - - - No breathing - Дыхания нет - No respira - Apnée - Brak oddechu - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée Respiratoire - Trudności z oddychaniem - - - Almost no breathing - Дыхания почти нет - Casi sin respirar - Respiration Faible - Prawie brak oddechu - - - Bleeding - Кровотечение - Sangrando - Seignement - Krwawienie zewnętrzne - - - In Pain - Испытывает боль - Con Dolor - A De La Douleur - W bólu - - - Lost a lot of Blood - Большая кровопотеря - Mucha Sangre perdida - A Perdu Bcp de Sang - Stracił dużo krwi - - - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Garot [CAT] - Opaska uciskowa [CAT] - - - - - Bandage (Basic) - Повязка (обычная) - Vendaje (Básico) - Bandage (Standard) - Bandaż (jałowy) - - - Used to cover a wound - Для перевязки ран - Utilizado para cubrir una herida - Utilisé Pour Couvrir Une Blessure - Używany w celu przykrycia i ochrony miejsca zranienia - - - A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. - Повязка, накладываемая поверх раны после остановки кровотечения. - Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. - C'est un bandage, qui est fait d'un matériel spécial utiliser pour couvrir une blessure, qui peut etre appliquer des que le seignement as ete stopper. - Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. - - - Packing Bandage - Тампонирующая повязка - Vendaje Compresivo - Bandage Mèche - Bandaż (uciskowy) - - - Used to pack medium to large wounds and stem the bleeding - Для тампонирования ран среднего и большого размера и остановки кровотечения. - Se utiliza para vendar heridas medianas y grandes y detener el sangrado - Utiliser pour remplire la cavité créé dans une blessure moyenne et grande. - Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. - - - A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. - Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны. - Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. - Un bandage servent a etre inseré dans les blessure pour éponger le seignement et faciliter la guerrison. Ce bandage est une option pour soigner les lession de politrauma. - Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. - - - Bandage (Elastic) - Повязка (давящая) - Vendaje (Elástico) - Bandage (Élastique) - Bandaż (elastyczny) - - - Bandage kit, Elastic - Давящая повязка - Vendaje (Elástico) - Bandage Compressif Élastique - Zestaw bandaży elastycznych. - - - - - Ce bandage peut etre utiliser pour compresser la plaie afin de ralentire le seignement et assurer la tenue du bandage lors de mouvment. - Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. - Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada - - - Tourniquet (CAT) - Жгут - Torniquete (CAT) - Garot (CAT) - Staza (typ. CAT) - - - Slows down blood loss when bleeding - Уменьшает кровопотерю при кровотечении. - Reduce la velocidad de pérdida de sangre - Ralentit le seignement - Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. - - - A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. - Жгут используется для прижатия сосудов, приводящего к остановке или значительному уменьшению кровотечения и сокращению кровопотери. - Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre - Un appareil servent a compresser les artères et veines afin de reduire la perte de sang. - Opaska zaciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. - - - Morphine auto-injector - Морфин в автоматическом шприце - Morfina auto-inyectable - Auto-injecteur de Morphine - Autostrzykawka z morfiną - - - Used to combat moderate to severe pain experiences - Для снятия средних и сильных болевых ощущений. - Usado para combatir los estados dolorosos moderados a severos - Utiliser pour contrer les douleurs modéré à severes. - Morfina. Ma silne działanie przeciwbólowe. - - - An analgesic used to combat moderate to severe pain experiences. - Анальгетик для снятия средних и сильных болевых ощущений. - Analgésico usado para combatir los estados dolorosos de moderado a severo. - Un Analgésique puissant servant a contrer les douleur modéré a severe. - Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe. - - - Atropin auto-injector - Атропин в автоматическом шприце - Atropina auto-inyectable - Auto-injecteur d'Atropine - Autostrzykawka AtroPen - - - Used in NBC scenarios - Применяется для защиты от ОМП - Usado en escenarios NBQ - Utiliser en cas d'attaque CBRN - Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. - - - A drug used by the Military in NBC scenarios. - Препарат, используемый в войсках для защиты от оружия массового поражения. - Medicamento usado por Militares en escenarios NBQ - Médicament utilisé par l'armée en cas d'attaque CBRN - Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. - - - Epinephrine auto-injector - Адреналин в автоматическом шприце - Epinefrina auto-inyectable - Auto-injecteur d'épinéphrine - Autostrzykawka EpiPen - - - Increase heart rate and counter effects given by allergic reactions - Стимулирует работу сердца и купирует аллергические реакции. - Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas - Augmente la Fréquance cadiaque et contré les effet d'une reaction Anaphylactique - Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne - - - A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. - Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшением вероятности благоприятного исхода. - Medicamento que dilata los bronquios, aumenta la frecuencia cardiaca y contrarresta los efectos de las reacciones alérgicas (anafilaxis). Se utiliza en caso de paros cardiacos repentinos. - Un medicament qui fonctione sur le systeme sympatique créan une dilatation des bronches, augmente la fréquance cardiaque et contre les effet d'une reaction alergique (anaphylaxie). Utiliser lors d'arret cardio-respiratoire pour augmenté les chances retrouver un ryhtme. - EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. - - - Plasma IV (1000ml) - Плазма для в/в вливания (1000 мл) - Plasma Intravenoso (1000ml) - Plasma Sanguin IV (1000ml) - Osocze IV (1000ml) - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - Supplement visant a remplacer les volume sanguin - Składnik krwi, używany do zwiększenia jej objętości. - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - Supplement visant a remplacer le volume sanguin et remplace les plaquettes. - Składnik krwi, używany do zwiększenia jej objętości. - - - Plasma IV (500ml) - Плазма для в/в вливания (500 мл) - Plasma Intravenoso (500ml) - Plasma Sanguin IV (500ml) - Osocze IV (500ml) - - - Plasma IV (250ml) - Плазма для в/в вливания (250 мл) - Plasma Intravenoso (250ml) - Plasma Sanguin (250ml) - Osocze IV (250ml) - - - Blood IV (1000ml) - Кровь для переливания (1000 мл) - Sangre Intravenosa (1000ml) - Cullot Sanguin IV (1000ml) - Krew IV (1000ml) - - - Blood IV, for restoring a patients blood (keep cold) - Пакет крови для возмещения объема потерянной крови (хранить в холодильнике) - Sangre Intravenosa, para restarurar el volumen sanguíneo (mantener frío) - Cullot Sanguin IV, pour remplacer le volume sanguin (garder Réfrigeré) - Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych - - - O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. - Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи. - Cullot Sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. - Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. - Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdido. Uso habitual durante el transporte de heridos. - - - Blood IV (500ml) - Кровь для переливания (500 мл) - Sangre Intravenosa (500ml) - Cullot Sanguin IV (500ml) - Krew IV (500ml) - - - Blood IV (250ml) - Кровь для переливания (250 мл) - Sangre Intravenosa (250ml) - Cullot Sanguin IV (250ml) - Krew IV (250ml) - - - Saline IV (1000ml) - Физраствор для в/в вливания (1000 мл) - Solución Salina Intravenosa (1000ml) - solution Saline 0.9% IV (1000ml) - Solanka 0,9% IV (1000ml) - - - Saline IV, for restoring a patients blood - Пакет физраствора для возмещения объема потерянной крови - Solución Salina Intravenosa, para restaurar el volumen sanguíneo - Solution Saline 0.9% IV, pour retablir temporairement la tention arteriel - Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta - - - A medical volume-replenishing agent introduced into the blood system through an IV infusion. - Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания. - Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. - Un remplacment temporaire pour rétablir la tention artériel lors de perte sanguine, étant ajouter par intraveineuse - Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). - - - Saline IV (500ml) - Физраствор для в/в вливания (500 мл) - Solución Salina Intravenosa (500ml) - Solution Saline 0.9% IV (500ml) - Solanka 0,9% IV (500ml) - - - Saline IV (250ml) - Физраствор для в/в вливания (250 мл) - Solución Salina Intravenosa (250ml) - Solution Saline 0.9% IV (250ml) - Solanka 0,9% IV (250ml) - - - Basic Field Dressing (QuikClot) - Первичный перевязочный пакет (QuikClot) - Vendaje Básico (Coagulante) - Bandage Regulier (Coagulant) - Opatrunek QuikClot - - - QuikClot bandage - Гемостатический пакет QuikClot - Venda Coagulante - Bandage coagulant - Podstawowy opatrunek stosowany na rany - - - - - Un bandage servant a coaguler les seignements mineur à moyen. - Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - Vendaje Hemostático con coagulante que detiene el sangrado. - - - Personal Aid Kit - Аптечка - Kit de Soporte Vital Avanzado - Équipement de support Vitale - Apteczka osobista - - - Includes various treatment kit needed for stitching or advanced treatment - Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. - Incluye material médico para tratamientos avanzados - Inclue du matériel medical pour les traitement avancé, tel les point de suture. - Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego - - - - - - - - - Surgical Kit - Хирургический набор - Kit Quirúrgico - - - Surgical Kit for in field advanced medical treatment - Набор для хирургической помощи в полевых условиях - Kit Quirúrgico para el tratamiento avanzado en el campo de batalla - - - Surgical Kit for in field advanced medical treatment - Набор для хирургической помощи в полевых условиях - Kit Quirúrgico para el tratamiento avanzado en el campo de batalla - - - Bodybag - Мешок для трупов - Bolsa para cadáveres - - - A bodybag for dead bodies - Мешок для упаковки трупов - Bolsa para cadáveres - - - A bodybag for dead bodies - Мешок для упаковки трупов - Bolsa para cadáveres - - - - - Blood Pressure - Артериальное давление - Presión Arterial - - - Checking Blood Pressure.. - Проверка артериального давления... - Comprobando Presión Arterial... - - - You checked %1 - Вы осмотрели раненого %1 - Examinando a %1 - - - You find a blood pressure of %2/%3 - Артериальное давление %2/%3 - La Presión Arterial es %2/%3 - - - You find a low blood pressure - Давление низкое - La Presión Arterial es baja - - - You find a normal blood pressure - Давление нормальное - La Presión Arterial es normal - - - You find a high blood pressure - Давление высокое - La Presión Arterial es alta - - - You find no blood pressure - Давления нет - No hay Presión Arterial - - - You fail to find a blood pressure - Артериальное давление не определяется - No puedes encontrar Presión Arterial - - - Pulse - Пульс - Pulso - - - Checking Heart Rate.. - Проверка пульса... - Comprobando Pulso... - - - You checked %1 - Вы осмотрели раненого %1 - Examinando a %1 - - - You find a Heart Rate of %2 - Пульс %2 уд./мин. - El Pulso es %2 - - - You find a weak Heart Rate - Пульс слабый - El Pulso es débil - - - You find a strong Heart Rate - Пульс учащенный - El Pulso está acelerado - - - You find a normal Heart Rate - Пульс в норме - El Pulso es bueno - - - You find no Heart Rate - Пульс не прощупывается - No tiene Pulso - - - Response - Реакция - Reacciona - - - You check response of patient - Вы проверяете реакцию раненого - Compruebas si el paciente reacciona - - - %1 is responsive - %1 реагирует на раздражители - %1 ha reaccionado - - - %1 is not responsive - %1 не реагирует - %1 no reacciona - - - You checked %1 - Вы осмотрели раненого %1 - Examinas a %1 - - - Bandaged - Повязка наложена - Vendado - - - You bandage %1 (%2) - Вы перевязали раненого %1 (%2) - Aplicas vendaje a %1 en %2 - - - %1 is bandaging you - %1 перевязывает вас - %1 te está vendando - - - You start stitching injures from %1 (%2) - Вы зашиваете ранения от %1 (%2) - Estás suturando heridas de %1 en %2 - - - Stitching - Наложение швов - Suturando - - - You treat the airway of %1 - Вы интубируете раненого %1 - Estás intubando a %1 - - - Airway - Дыхательные пути - Vías Aéreas - - - %1 is treating your airway - %1 проводит вам интубацию - %1 te está intubando - - - Drag - Ziehen - Arrastrar - Ciągnij - Táhnout - Тащить - Tracter - Húzás - Arrastar - Trascina - - - Carry - Tragen - Cargar - Nieś - Nést - Нести - Porter - Cipelés - Carregar - Trasporta - - - Release - Loslassen - Soltar - Połóż - Položit - Отпустить - Déposer - Elenged - Largar - Lascia - - - Load Patient Into - Patient Einladen - Cargar el paciente en - Załaduj pacjenta - Naložit pacianta do - Погрузить пациента в - Embarquer le Patient - Sebesült berakása - Carregar Paciente Em - Carica paziente nel - - - Unload Patient - Patient Ausladen - Descargar el paciente - Wyładuj pacjenta - Vyložit pacienta - Выгрузить пациента - Débarquer le Patient - Sebesült kihúzása - Descarregar Paciente - Scarica il paziente - - - Unload patient >> - - - - + + + + Inject Atropine + + + Inject Epinephrine + Epinephrine injizieren + Inyectar Epinefrina + Wtrzyknij adrenalinę + Aplikovat Adrenalin + Ввести андреналил + Adrénaline + Adrenalin + Injetar Epinefrina + Inietta Epinefrina + + + Inject Morphine + Morphin injizieren + Inyectar Morfina + Wstrzyknij morfinę + Aplikovat Morfin + Ввести морфин + Morphine + Morfium + Injetar Morfina + Inietta Morfina + + + Transfuse Blood + Bluttransfusion + Transfundir sangre + Przetocz krew + Transfúze krve + Перелить кровь + Transfusion + Infúzió + Transfundir Sangue + Effettua Trasfusione + + + Bandage + Verbinden + Venda + Bandaż + Obvázat + Pansement + Benda + Kötözés + Atadura + Перевязать + + + Bandage Head + Kopf verbinden + Vendar la cabeza + Bandażuj głowę + Obvázat hlavu + Перевязать голову + Pansement Tête + Fej kötözése + Atar Cabeça + Benda la testa + + + Bandage Torso + Torso verbinden + Vendar el torso + Bandażuj tors + Obvázat hruď + Перевязать торс + Pansement Torse + Felsőtest kötözése + Atar Tronco + Benda il torso + + + Bandage Left Arm + Arm links verbinden + Vendar el brazo izquierdo + Bandażuj lewe ramię + Obvázat levou ruku + Перевязать левую руку + Pansement Bras Gauche + Bal kar kötözése + Atar Braço Esquerdo + Benda il braccio sinistro + + + Bandage Right Arm + Arm rechts verbinden + Vendar el brazo derecho + Bandażuj prawe ramię + Obvázat pravou ruku + Перевязать правую руку + Pansement Bras Droit + Jobb kar kötözése + Atar Braço Direito + Benda il braccio destro + + + Bandage Left Leg + Bein links verbinden + Vendar la pierna izquierda + Bandażuj lewą nogę + Obvázat levou nohu + Перевязать левую ногу + Pansement Jambe Gauche + Bal láb kötözése + Atar Perna Esquerda + Benda la gamba sinistra + + + Bandage Right Leg + Bein rechts verbinden + Vendar la pierna derecha + Bandażuj prawą nogę + Obvázat pravou nohu + Перевязать правую ногу + Pansement Jambe Droite + Jobb láb kötözése + Atar Perna Direita + Benda la gamba destra + + + Injecting Morphine ... + Morphin injizieren ... + Inyectando Morfina ... + Wstrzykiwanie morfiny ... + Aplikuju Morfin ... + Введение морфина... + Injection de Morphine... + Morfium beadása... + Injetando Morfina ... + Inietto la morfina ... + + + Injecting Epinephrine ... + Epinephrine injizieren ... + Inyectando Epinefrina ... + Wstrzykiwanie adrenaliny ... + Aplikuju Adrenalin ... + Введение андреналина + Injection d'Adrénaline ... + Adrenalin beadása... + Injetando Epinefrina ... + Inietto l'epinefrina ... + + + Transfusing Blood ... + Bluttransfusion ... + Realizando transfusión ... + Przetaczanie krwi ... + Probíhá transfúze krve ... + Переливание крови... + Transfusion Sanguine ... + Infúzió... + Transfundindo Sangue ... + Effettuo la trasfusione ... + + + Bandaging ... + Verbinden ... + Vendando ... + Bandażowanie ... + Obvazuji ... + Pansement ... + Sto applicando la benda ... + Bekötözés... + Atando ... + Перевязывание.... + + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + + + Field Dressing + + + Packing Bandage + + + Elastic Bandage + + + QuikClot + + + Check Pulse + + + Check Blood Pressure + + + Triage Card + + + Tourniquet + + + Remove Tourniquet + + + Give Blood IV (1000ml) + + + Give Blood IV (500ml) + + + Give Blood IV (250ml) + + + Give Plasma IV (1000ml) + + + Give Plasma IV (500ml) + + + Give Plasma IV (250ml) + + + Give Saline IV (1000ml) + + + Give Saline IV (500ml) + + + Give Saline IV (250ml) + + + + + Minor + + + Delayed + + + Immediate + + + Deceased + + + None + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration Normale + Normalny oddech + + + No breathing + Дыхания нет + No respira + Apnée + Brak oddechu + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée Respiratoire + Trudności z oddychaniem + + + Almost no breathing + Дыхания почти нет + Casi sin respirar + Respiration Faible + Prawie brak oddechu + + + Bleeding + Кровотечение + Sangrando + Seignement + Krwawienie zewnętrzne + + + In Pain + Испытывает боль + Con Dolor + A De La Douleur + W bólu + + + Lost a lot of Blood + Большая кровопотеря + Mucha Sangre perdida + A Perdu Bcp de Sang + Stracił dużo krwi + + + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Garot [CAT] + Opaska uciskowa [CAT] + + + + + Bandage (Basic) + Повязка (обычная) + Vendaje (Básico) + Bandage (Standard) + Bandaż (jałowy) + + + Used to cover a wound + Для перевязки ран + Utilizado para cubrir una herida + Utilisé Pour Couvrir Une Blessure + Używany w celu przykrycia i ochrony miejsca zranienia + + + A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. + Повязка, накладываемая поверх раны после остановки кровотечения. + Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. + C'est un bandage, qui est fait d'un matériel spécial utiliser pour couvrir une blessure, qui peut etre appliquer des que le seignement as ete stopper. + Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. + + + Packing Bandage + Тампонирующая повязка + Vendaje Compresivo + Bandage Mèche + Bandaż (uciskowy) + + + Used to pack medium to large wounds and stem the bleeding + Для тампонирования ран среднего и большого размера и остановки кровотечения. + Se utiliza para vendar heridas medianas y grandes y detener el sangrado + Utiliser pour remplire la cavité créé dans une blessure moyenne et grande. + Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. + + + A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. + Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны. + Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. + Un bandage servent a etre inseré dans les blessure pour éponger le seignement et faciliter la guerrison. Ce bandage est une option pour soigner les lession de politrauma. + Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. + + + Bandage (Elastic) + Повязка (давящая) + Vendaje (Elástico) + Bandage (Élastique) + Bandaż (elastyczny) + + + Bandage kit, Elastic + Давящая повязка + Vendaje (Elástico) + Bandage Compressif Élastique + Zestaw bandaży elastycznych. + + + + + Ce bandage peut etre utiliser pour compresser la plaie afin de ralentire le seignement et assurer la tenue du bandage lors de mouvment. + Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. + Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada + + + Tourniquet (CAT) + Жгут + Torniquete (CAT) + Garot (CAT) + Staza (typ. CAT) + + + Slows down blood loss when bleeding + Уменьшает кровопотерю при кровотечении. + Reduce la velocidad de pérdida de sangre + Ralentit le seignement + Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. + + + A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. + Жгут используется для прижатия сосудов, приводящего к остановке или значительному уменьшению кровотечения и сокращению кровопотери. + Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre + Un appareil servent a compresser les artères et veines afin de reduire la perte de sang. + Opaska zaciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. + + + Morphine auto-injector + Морфин в автоматическом шприце + Morfina auto-inyectable + Auto-injecteur de Morphine + Autostrzykawka z morfiną + + + Used to combat moderate to severe pain experiences + Для снятия средних и сильных болевых ощущений. + Usado para combatir los estados dolorosos moderados a severos + Utiliser pour contrer les douleurs modéré à severes. + Morfina. Ma silne działanie przeciwbólowe. + + + An analgesic used to combat moderate to severe pain experiences. + Анальгетик для снятия средних и сильных болевых ощущений. + Analgésico usado para combatir los estados dolorosos de moderado a severo. + Un Analgésique puissant servant a contrer les douleur modéré a severe. + Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe. + + + Atropin auto-injector + Атропин в автоматическом шприце + Atropina auto-inyectable + Auto-injecteur d'Atropine + Autostrzykawka AtroPen + + + Used in NBC scenarios + Применяется для защиты от ОМП + Usado en escenarios NBQ + Utiliser en cas d'attaque CBRN + Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. + + + A drug used by the Military in NBC scenarios. + Препарат, используемый в войсках для защиты от оружия массового поражения. + Medicamento usado por Militares en escenarios NBQ + Médicament utilisé par l'armée en cas d'attaque CBRN + Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. + + + Epinephrine auto-injector + Адреналин в автоматическом шприце + Epinefrina auto-inyectable + Auto-injecteur d'épinéphrine + Autostrzykawka EpiPen + + + Increase heart rate and counter effects given by allergic reactions + Стимулирует работу сердца и купирует аллергические реакции. + Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas + Augmente la Fréquance cadiaque et contré les effet d'une reaction Anaphylactique + Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne + + + A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. + Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшением вероятности благоприятного исхода. + Medicamento que dilata los bronquios, aumenta la frecuencia cardiaca y contrarresta los efectos de las reacciones alérgicas (anafilaxis). Se utiliza en caso de paros cardiacos repentinos. + Un medicament qui fonctione sur le systeme sympatique créan une dilatation des bronches, augmente la fréquance cardiaque et contre les effet d'une reaction alergique (anaphylaxie). Utiliser lors d'arret cardio-respiratoire pour augmenté les chances retrouver un ryhtme. + EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. + + + Plasma IV (1000ml) + Плазма для в/в вливания (1000 мл) + Plasma Intravenoso (1000ml) + Plasma Sanguin IV (1000ml) + Osocze IV (1000ml) + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + Supplement visant a remplacer les volume sanguin + Składnik krwi, używany do zwiększenia jej objętości. + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + Supplement visant a remplacer le volume sanguin et remplace les plaquettes. + Składnik krwi, używany do zwiększenia jej objętości. + + + Plasma IV (500ml) + Плазма для в/в вливания (500 мл) + Plasma Intravenoso (500ml) + Plasma Sanguin IV (500ml) + Osocze IV (500ml) + + + Plasma IV (250ml) + Плазма для в/в вливания (250 мл) + Plasma Intravenoso (250ml) + Plasma Sanguin (250ml) + Osocze IV (250ml) + + + Blood IV (1000ml) + Кровь для переливания (1000 мл) + Sangre Intravenosa (1000ml) + Cullot Sanguin IV (1000ml) + Krew IV (1000ml) + + + Blood IV, for restoring a patients blood (keep cold) + Пакет крови для возмещения объема потерянной крови (хранить в холодильнике) + Sangre Intravenosa, para restarurar el volumen sanguíneo (mantener frío) + Cullot Sanguin IV, pour remplacer le volume sanguin (garder Réfrigeré) + Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych + + + O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. + Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи. + Cullot Sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. + Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. + Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdido. Uso habitual durante el transporte de heridos. + + + Blood IV (500ml) + Кровь для переливания (500 мл) + Sangre Intravenosa (500ml) + Cullot Sanguin IV (500ml) + Krew IV (500ml) + + + Blood IV (250ml) + Кровь для переливания (250 мл) + Sangre Intravenosa (250ml) + Cullot Sanguin IV (250ml) + Krew IV (250ml) + + + Saline IV (1000ml) + Физраствор для в/в вливания (1000 мл) + Solución Salina Intravenosa (1000ml) + solution Saline 0.9% IV (1000ml) + Solanka 0,9% IV (1000ml) + + + Saline IV, for restoring a patients blood + Пакет физраствора для возмещения объема потерянной крови + Solución Salina Intravenosa, para restaurar el volumen sanguíneo + Solution Saline 0.9% IV, pour retablir temporairement la tention arteriel + Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta + + + A medical volume-replenishing agent introduced into the blood system through an IV infusion. + Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания. + Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. + Un remplacment temporaire pour rétablir la tention artériel lors de perte sanguine, étant ajouter par intraveineuse + Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). + + + Saline IV (500ml) + Физраствор для в/в вливания (500 мл) + Solución Salina Intravenosa (500ml) + Solution Saline 0.9% IV (500ml) + Solanka 0,9% IV (500ml) + + + Saline IV (250ml) + Физраствор для в/в вливания (250 мл) + Solución Salina Intravenosa (250ml) + Solution Saline 0.9% IV (250ml) + Solanka 0,9% IV (250ml) + + + Basic Field Dressing (QuikClot) + Первичный перевязочный пакет (QuikClot) + Vendaje Básico (Coagulante) + Bandage Regulier (Coagulant) + Opatrunek QuikClot + + + QuikClot bandage + Гемостатический пакет QuikClot + Venda Coagulante + Bandage coagulant + Podstawowy opatrunek stosowany na rany + + + + + Un bandage servant a coaguler les seignements mineur à moyen. + Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. + Vendaje Hemostático con coagulante que detiene el sangrado. + + + Personal Aid Kit + Аптечка + Kit de Soporte Vital Avanzado + Équipement de support Vitale + Apteczka osobista + + + Includes various treatment kit needed for stitching or advanced treatment + Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. + Incluye material médico para tratamientos avanzados + Inclue du matériel medical pour les traitement avancé, tel les point de suture. + Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego + + + + + + + + + Surgical Kit + Хирургический набор + Kit Quirúrgico + + + Surgical Kit for in field advanced medical treatment + Набор для хирургической помощи в полевых условиях + Kit Quirúrgico para el tratamiento avanzado en el campo de batalla + + + Surgical Kit for in field advanced medical treatment + Набор для хирургической помощи в полевых условиях + Kit Quirúrgico para el tratamiento avanzado en el campo de batalla + + + Bodybag + Мешок для трупов + Bolsa para cadáveres + + + A bodybag for dead bodies + Мешок для упаковки трупов + Bolsa para cadáveres + + + A bodybag for dead bodies + Мешок для упаковки трупов + Bolsa para cadáveres + + + + + Blood Pressure + Артериальное давление + Presión Arterial + + + Checking Blood Pressure.. + Проверка артериального давления... + Comprobando Presión Arterial... + + + You checked %1 + Вы осмотрели раненого %1 + Examinando a %1 + + + You find a blood pressure of %2/%3 + Артериальное давление %2/%3 + La Presión Arterial es %2/%3 + + + You find a low blood pressure + Давление низкое + La Presión Arterial es baja + + + You find a normal blood pressure + Давление нормальное + La Presión Arterial es normal + + + You find a high blood pressure + Давление высокое + La Presión Arterial es alta + + + You find no blood pressure + Давления нет + No hay Presión Arterial + + + You fail to find a blood pressure + Артериальное давление не определяется + No puedes encontrar Presión Arterial + + + Pulse + Пульс + Pulso + + + Checking Heart Rate.. + Проверка пульса... + Comprobando Pulso... + + + You checked %1 + Вы осмотрели раненого %1 + Examinando a %1 + + + You find a Heart Rate of %2 + Пульс %2 уд./мин. + El Pulso es %2 + + + You find a weak Heart Rate + Пульс слабый + El Pulso es débil + + + You find a strong Heart Rate + Пульс учащенный + El Pulso está acelerado + + + You find a normal Heart Rate + Пульс в норме + El Pulso es bueno + + + You find no Heart Rate + Пульс не прощупывается + No tiene Pulso + + + Response + Реакция + Reacciona + + + You check response of patient + Вы проверяете реакцию раненого + Compruebas si el paciente reacciona + + + %1 is responsive + %1 реагирует на раздражители + %1 ha reaccionado + + + %1 is not responsive + %1 не реагирует + %1 no reacciona + + + You checked %1 + Вы осмотрели раненого %1 + Examinas a %1 + + + Bandaged + Повязка наложена + Vendado + + + You bandage %1 (%2) + Вы перевязали раненого %1 (%2) + Aplicas vendaje a %1 en %2 + + + %1 is bandaging you + %1 перевязывает вас + %1 te está vendando + + + You start stitching injures from %1 (%2) + Вы зашиваете ранения от %1 (%2) + Estás suturando heridas de %1 en %2 + + + Stitching + Наложение швов + Suturando + + + You treat the airway of %1 + Вы интубируете раненого %1 + Estás intubando a %1 + + + Airway + Дыхательные пути + Vías Aéreas + + + %1 is treating your airway + %1 проводит вам интубацию + %1 te está intubando + + + Drag + Ziehen + Arrastrar + Ciągnij + Táhnout + Тащить + Tracter + Húzás + Arrastar + Trascina + + + Carry + Tragen + Cargar + Nieś + Nést + Нести + Porter + Cipelés + Carregar + Trasporta + + + Release + Loslassen + Soltar + Połóż + Položit + Отпустить + Déposer + Elenged + Largar + Lascia + + + Load Patient Into + Patient Einladen + Cargar el paciente en + Załaduj pacjenta + Naložit pacianta do + Погрузить пациента в + Embarquer le Patient + Sebesült berakása + Carregar Paciente Em + Carica paziente nel + + + Unload Patient + Patient Ausladen + Descargar el paciente + Wyładuj pacjenta + Vyložit pacienta + Выгрузить пациента + Débarquer le Patient + Sebesült kihúzása + Descarregar Paciente + Scarica il paziente + + + Unload patient + + + + \ No newline at end of file diff --git a/addons/microdagr/$PBOPREFIX$ b/addons/microdagr/$PBOPREFIX$ new file mode 100644 index 0000000000..e2de546eaf --- /dev/null +++ b/addons/microdagr/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\microdagr \ No newline at end of file diff --git a/addons/microdagr/CfgEventHandlers.hpp b/addons/microdagr/CfgEventHandlers.hpp new file mode 100644 index 0000000000..6d1d3b6dfb --- /dev/null +++ b/addons/microdagr/CfgEventHandlers.hpp @@ -0,0 +1,11 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); + }; +}; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp new file mode 100644 index 0000000000..6742a6721f --- /dev/null +++ b/addons/microdagr/CfgVehicles.hpp @@ -0,0 +1,69 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(show) { + //Opens the mini map + displayName = "$STR_ACE_microdagr_show"; + condition = QUOTE(([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DISPLAY}); + statement = QUOTE([DISPLAY_MODE_DISPLAY] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.2; + icon = QUOTE(PATHTOF(data\icon_microDAGR.paa)); + exceptions[] = {"notOnMap"}; + }; + class GVAR(configure) { + //Opens the dialog + displayName = "$STR_ACE_microdagr_configure"; + condition = QUOTE(([DISPLAY_MODE_DIALOG] call FUNC(canShow)) && {GVAR(currentShowMode) != DISPLAY_MODE_DIALOG}); + statement = QUOTE([DISPLAY_MODE_DIALOG] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.1; + icon = QUOTE(PATHTOF(data\icon_microDAGR.paa)); + exceptions[] = {"notOnMap"}; + }; + class GVAR(close) { + displayName = "$STR_ACE_microdagr_closeUnit"; + condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); + statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.3; + icon = QUOTE(PATHTOF(data\icon_microDAGR.paa)); + exceptions[] = {"notOnMap"}; + }; + }; + }; + }; + + class Logic; + class Module_F: Logic { + class ArgumentsBaseUnits {}; + class ModuleDescription {}; + }; + class GVAR(dagrModule): Module_F { + author = "$STR_ACE_Common_ACETeam"; + category = "ACE"; + displayName = "MicroDAGR Map Fill"; + function = QFUNC(moduleMapFill); + scope = 2; + isGlobal = 1; + // icon = QUOTE(PATHTOF(ui\IconLock_ca.paa)); + functionPriority = 0; + class Arguments { + class MapDataAvailable { + displayName = "MicroDAGR Map Fill"; // Argument label + description = "How much map data is filled on MicroDAGRs "; // Tooltip description + typeName = "NUMBER"; // Value type, can be "NUMBER", "STRING" or "BOOL" + class values { + class None {name = "Full Satellite + Buildings"; value = MAP_DETAIL_SAT; default = 1;}; + class Side {name = "Topographical + Roads"; value = MAP_DETAIL_TOPOROADS;}; + class Unique {name = "None (Cannot use map view)"; value = MAP_DETAIL_NONE;}; + }; + }; + }; + class ModuleDescription: ModuleDescription { + description = "Controls how muchdata is filled in the microDAGR items. Less data restricts the map view to show less on the minimap.
Source: microDAGR.pbo"; + }; + }; +}; diff --git a/addons/microdagr/CfgWeapons.hpp b/addons/microdagr/CfgWeapons.hpp new file mode 100644 index 0000000000..73615ea6b6 --- /dev/null +++ b/addons/microdagr/CfgWeapons.hpp @@ -0,0 +1,15 @@ +class CfgWeapons { + class ACE_ItemCore; + class InventoryItem_Base_F; + + class ACE_microDAGR: ACE_ItemCore { + author = "$STR_ACE_Common_ACETeam"; + scope = 2; + displayName = "$STR_ACE_microdagr_itemName"; + descriptionShort = "$STR_ACE_microdagr_itemDescription"; + picture = QUOTE(PATHTOF(images\microDAGR_item.paa)); + class ItemInfo: InventoryItem_Base_F { + mass = 2; + }; + }; +}; diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf new file mode 100644 index 0000000000..61f857cfed --- /dev/null +++ b/addons/microdagr/XEH_clientInit.sqf @@ -0,0 +1,73 @@ +//XEH_clientInit.sqf +#include "script_component.hpp" + +if (!hasInterface) exitWith {}; + +//Add Keybinds: +["ACE3", QGVAR(openGPS), (localize "STR_ACE_microdagr_toggleUnit"), +{ + // canInteractWith (can use on map) + if !([ACE_player, objNull, ["notOnMap"]] call EFUNC(common,canInteractWith)) exitWith {false}; + // Conditions: specific + if (!("ACE_microDAGR" in (items ace_player))) exitWith {false}; + + [] call FUNC(openDisplay); //toggle display mode + true; +}, +{false}, +[0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key + +["ACE3", QGVAR(closeGPS), (localize "STR_ACE_microdagr_closeUnit"), +{ + // canInteractWith (can use on map) + if !([ACE_player, objNull, ["notOnMap"]] call EFUNC(common,canInteractWith)) exitWith {false}; + // Conditions: specific + if (!("ACE_microDAGR" in (items ace_player))) exitWith {false}; + if (GVAR(currentShowMode) == DISPLAY_MODE_CLOSED) exitWith {false}; + + [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); //close unit + true; +}, +{false}, +[0xC7, [false, true, false]], false] call cba_fnc_addKeybind; //CTRL + Home Key + +//Add Eventhandler: +["RangerfinderData", {_this call FUNC(recieveRangefinderData)}] call EFUNC(common,addEventHandler); + +//Global Variables to default: +GVAR(gpsPositionASL) = [0,0,0]; +GVAR(mapAutoTrackPosition) = true; +GVAR(mapShowTexture) = false; +GVAR(mapPosition) = [-999, -999]; +GVAR(mapZoom) = 0.075; +GVAR(currentApplicationPage) = APP_MODE_NULL; +GVAR(currentShowMode) = DISPLAY_MODE_CLOSED; + +//User Settings +GVAR(settingUseMils) = false; +GVAR(settingShowAllWaypointsOnMap) = true; + +GVAR(newWaypointPosition) = []; +GVAR(currentWaypoint) = -1; +GVAR(rangeFinderPositionASL) = []; + + +GVAR(mapAltitude) = getNumber (configFile >> "CfgWorlds" >> worldName >> "elevationOffset"); + +//Calculate the map's MGRS: +_worldMapLong = getNumber (configFile >> "CfgWorlds" >> worldName >> "longitude"); +_worldMapLat = getNumber (configFile >> "CfgWorlds" >> worldName >> "latitude"); +//Pull UTM grid from world's long/lat +_zone = 1 + (floor ((_worldMapLong + 180) / 6)); +_band = "Z"; +if (_worldMapLat <= -80) then { + _band = "A"; +} else { + if (_worldMapLat < 84) then { + _band = "CDEFGHJKLMNPQRSTUVWXX" select [(floor ((_worldMapLat / 8) + 10)), 1]; + }; +}; +//calculating square ID from long/lat is a pain in the ass, just fake it unless someone wants to actualy do this +_squareID = if ((count worldName) > 2) then {toUpper(worldName select [0,2])} else {"XG"}; +GVAR(mgrsGridZoneDesignator) = format ["%1%2 %3", _zone, _band, _squareID]; + diff --git a/addons/microdagr/XEH_preInit.sqf b/addons/microdagr/XEH_preInit.sqf new file mode 100644 index 0000000000..a0ea1a538e --- /dev/null +++ b/addons/microdagr/XEH_preInit.sqf @@ -0,0 +1,25 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(appMarkKeypadEntry); +PREP(appMenuButtonConnectRangefinder); +PREP(appSettingsLBClick); +PREP(appWaypointsButtonDeleteWP); +PREP(appWaypointsButtonSetWP); +PREP(canShow); +PREP(deviceAddWaypoint); +PREP(deviceDeleteWaypoint); +PREP(deviceGetWaypoints); +PREP(dialogClosedEH); +PREP(mapDoubleTapEH); +PREP(mapOnDrawEH); +PREP(modeMapButtons); +PREP(moduleMapFill); +PREP(openDisplay); +PREP(recieveRangefinderData); +PREP(saveCurrentAndSetNewMode); +PREP(showApplicationPage); +PREP(updateDisplay); + +ADDON = true; diff --git a/addons/microdagr/config.cpp b/addons/microdagr/config.cpp new file mode 100644 index 0000000000..39380d7a2e --- /dev/null +++ b/addons/microdagr/config.cpp @@ -0,0 +1,26 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {"PabstMirror"}; + authorUrl = "https://github.com/PabstMirror/"; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" +#include "CfgWeapons.hpp" +#include "CfgVehicles.hpp" +#include "gui.hpp" + +class ACE_Settings { + class GVAR(MapDataAvailable) { + value = 2; + typeName = "SCALAR"; + isClientSetable = 0; + }; +}; diff --git a/addons/microdagr/data/icon_microDAGR.paa b/addons/microdagr/data/icon_microDAGR.paa new file mode 100644 index 0000000000..04307ec581 Binary files /dev/null and b/addons/microdagr/data/icon_microDAGR.paa differ diff --git a/addons/microdagr/functions/fnc_appMarkKeypadEntry.sqf b/addons/microdagr/functions/fnc_appMarkKeypadEntry.sqf new file mode 100644 index 0000000000..066b44508d --- /dev/null +++ b/addons/microdagr/functions/fnc_appMarkKeypadEntry.sqf @@ -0,0 +1,57 @@ +/* + * Author: PabstMirror + * Handles the keypad entries from the "Mark" Application + * + * Arguments: + * 0: String version of Keypad entry ["ok","del","1",...] + * + * Return Value: + * Nothing + * + * Example: + * ["ok"] call ace_microdagr_fnc_appMarkKeypadEntry + * + * Public: No + */ +#include "script_component.hpp" + +private ["_display", "_editText", "_gridPosTuple", "_actualPos"]; +PARAMS_1(_keypadButton); + +disableSerialization; +_display = displayNull; +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + _display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]); +} else { + _display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]); +}; +if (isNull _display) exitWith {ERROR("No Display");}; + +if (GVAR(currentApplicationPage) != APP_MODE_MARK) exitWith {}; + +_editText = ctrlText (_display displayCtrl IDC_MODEMARK_CORDSEDIT); + +switch (_keypadButton) do { +case ("ok"): { + if ((count GVAR(newWaypointPosition)) == 0) then { + _gridPosTuple = [_editText] call BIS_fnc_gridToPos; + _actualPos = [(((_gridPosTuple select 0) select 0) + 0.5 * ((_gridPosTuple select 1) select 0)), (((_gridPosTuple select 0) select 1) + 0.5 * ((_gridPosTuple select 1) select 1))]; + _actualPos set [2, (getTerrainHeightASL _actualPos)]; + GVAR(newWaypointPosition) = _actualPos; + [APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode); + } else { + [_editText, GVAR(newWaypointPosition)] call FUNC(deviceAddWaypoint); + [APP_MODE_WAYPOINTS] call FUNC(saveCurrentAndSetNewMode); + }; + }; +case ("del"): { + _editText = _editText select [0, (((count _editText) - 1) max 0)]; + (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText _editText; + ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT); + }; + default { + _editText = _editText + _keypadButton; + (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText _editText; + ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT); + }; +}; diff --git a/addons/microdagr/functions/fnc_appMenuButtonConnectRangefinder.sqf b/addons/microdagr/functions/fnc_appMenuButtonConnectRangefinder.sqf new file mode 100644 index 0000000000..1cf81963f5 --- /dev/null +++ b/addons/microdagr/functions/fnc_appMenuButtonConnectRangefinder.sqf @@ -0,0 +1,20 @@ +/* + * Author: PabstMirror + * Handles the "Connect To" button from the menu application + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_appMenuButtonConnectRangefinder + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(currentWaypoint) = if (GVAR(currentWaypoint) == -2) then {-1} else {-2}; +GVAR(rangeFinderPositionASL) = []; +[APP_MODE_INFODISPLAY] call FUNC(saveCurrentAndSetNewMode); diff --git a/addons/microdagr/functions/fnc_appSettingsLBClick.sqf b/addons/microdagr/functions/fnc_appSettingsLBClick.sqf new file mode 100644 index 0000000000..bc6779c10a --- /dev/null +++ b/addons/microdagr/functions/fnc_appSettingsLBClick.sqf @@ -0,0 +1,27 @@ +/* + * Author: PabstMirror + * Handles double clicking on the setting listbox + * + * Arguments: + * 0: Setting List box (not used) + * 1: Index + * + * Return Value: + * Nothing + * + * Example: + * [settingList, 1] call ace_microdagr_fnc_appSettingsLBClick + * + * Public: No + */ +#include "script_component.hpp" + +disableSerialization; +PARAMS_2(_control,_itemClicked); + +switch (_itemClicked) do { + case (0): { GVAR(settingUseMils) = ! GVAR(settingUseMils)}; + case (1): { GVAR(settingShowAllWaypointsOnMap) = ! GVAR(settingShowAllWaypointsOnMap)}; +}; + +[] call FUNC(updateDisplay); diff --git a/addons/microdagr/functions/fnc_appWaypointsButtonDeleteWP.sqf b/addons/microdagr/functions/fnc_appWaypointsButtonDeleteWP.sqf new file mode 100644 index 0000000000..1acd936370 --- /dev/null +++ b/addons/microdagr/functions/fnc_appWaypointsButtonDeleteWP.sqf @@ -0,0 +1,37 @@ +/* + * Author: PabstMirror + * Handles clicking the delete button from the waypoint application + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_appWaypointsButtonDeleteWP + * + * Public: No + */ +#include "script_component.hpp" + +private ["_display", "_wpIndex"]; + +disableSerialization; +_display = displayNull; +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + _display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]); +} else { + _display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]); +}; +if (isNull _display) exitWith {ERROR("No Display");}; + +_wpIndex = lbCurSel (_display displayCtrl IDC_MODEWAYPOINTS_LISTOFWAYPOINTS); + +//If it's our currentWP then deactivate +if (GVAR(currentWaypoint) == _wpIndex) then {GVAR(currentWaypoint) = -1}; + +//Delete from list: +[_wpIndex] call FUNC(deviceDeleteWaypoint); +//Update list now: +[] call FUNC(updateDisplay); diff --git a/addons/microdagr/functions/fnc_appWaypointsButtonSetWP.sqf b/addons/microdagr/functions/fnc_appWaypointsButtonSetWP.sqf new file mode 100644 index 0000000000..1836e50da2 --- /dev/null +++ b/addons/microdagr/functions/fnc_appWaypointsButtonSetWP.sqf @@ -0,0 +1,33 @@ +/* + * Author: PabstMirror + * Handles clicking the setWP button from the waypoint application + * + * Arguments: + * The "SetWP" button + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_appWaypointsButtonSetWP + * + * Public: No + */ +#include "script_component.hpp" + +private ["_wpListBox", "_newWpIndex", "_waypoints"]; + +disableSerialization; +PARAMS_1(_wpButton); + +_wpListBox = (ctrlParent _wpButton) displayCtrl 144501; +_newWpIndex = lbCurSel _wpListBox; +_waypoints = [] call FUNC(deviceGetWaypoints); + +if ((_newWpIndex < 0) || (_newWpIndex > ((count _waypoints) - 1))) exitWith { + GVAR(currentWaypoint) = -1; + ERROR("out of bounds wp"); +}; + +GVAR(currentWaypoint) = _newWpIndex; +[APP_MODE_COMPASS] call FUNC(saveCurrentAndSetNewMode); diff --git a/addons/microdagr/functions/fnc_canShow.sqf b/addons/microdagr/functions/fnc_canShow.sqf new file mode 100644 index 0000000000..19b7b8f0c6 --- /dev/null +++ b/addons/microdagr/functions/fnc_canShow.sqf @@ -0,0 +1,37 @@ +/* + * Author: PabstMirror + * Tests if the dagr can be shown in a mode + * + * Arguments: + * The display mode to test showing + * + * Return Value: + * Nothing + * + * Example: + * [mode] call ace_microdagr_fnc_canShow + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_showType); + +private ["_returnValue"]; + +_returnValue = false; + +switch (_showType) do { +case (DISPLAY_MODE_CLOSED): {_returnValue = true}; //Can always close +case (DISPLAY_MODE_HIDDEN): {_returnValue = true}; //Can always hide + +case (DISPLAY_MODE_DIALOG): { + _returnValue = ("ACE_microDAGR" in (items ACE_player)) && {[ACE_player, objNull, ["notOnMap"]] call EFUNC(common,canInteractWith)}; + }; +case (DISPLAY_MODE_DISPLAY): { + //Can't have minimap up while zoomed in + _returnValue = (cameraview != "GUNNER") && {"ACE_microDAGR" in (items ACE_player)} && {[ACE_player, objNull, ["notOnMap"]] call EFUNC(common,canInteractWith)}; + }; +}; + +_returnValue diff --git a/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf b/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf new file mode 100644 index 0000000000..6912810f58 --- /dev/null +++ b/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf @@ -0,0 +1,24 @@ +/* + * Author: PabstMirror + * Adds a waypoint to the "device" + * Device saving not implemented yet, just save to player object + * + * Arguments: + * 0: Waypoint name + * 1: Waypoint Position ASL + * + * Return Value: + * Nothing + * + * Example: + * ["Hill 55", [41,324, 12]] call ace_microdagr_fnc_deviceAddWaypoint + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_2(_waypointName,_waypointPosASL); + +_waypoints = ace_player getVariable [QGVAR(waypoints), []]; +_waypoints pushBack [_waypointName, _waypointPosASL]; +ace_player setVariable [QGVAR(waypoints), _waypoints]; diff --git a/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf b/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf new file mode 100644 index 0000000000..3d1e8ec852 --- /dev/null +++ b/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf @@ -0,0 +1,26 @@ +/* + * Author: PabstMirror + * Deletes a waypoint from the "device" + * Device saving not implemented yet, just save to player object + * + * Arguments: + * 0: Waypoint Index + * + * Return Value: + * Nothing + * + * Example: + * ["Hill 55", [41,324, 12]] call ace_microdagr_fnc_deviceDeleteWaypoint + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_wpIndex); + +_waypoints = ace_player getVariable [QGVAR(waypoints), []]; + +if ((_wpIndex < 0) || (_wpIndex > ((count _waypoints) - 1))) exitWith {ERROR("out of bounds wp");}; + +_waypoints deleteAt _wpIndex; +ace_player setVariable [QGVAR(waypoints), _waypoints]; diff --git a/addons/microdagr/functions/fnc_deviceGetWaypoints.sqf b/addons/microdagr/functions/fnc_deviceGetWaypoints.sqf new file mode 100644 index 0000000000..f90ecb06be --- /dev/null +++ b/addons/microdagr/functions/fnc_deviceGetWaypoints.sqf @@ -0,0 +1,19 @@ +/* + * Author: PabstMirror + * Gets all waypoints from the "device" + * Device saving not implemented yet, just save to player object + * + * Arguments: + * Nothing + * + * Return Value: + * Waypoints + * + * Example: + * [["Hill 55", [41,324, 12]]] = [] call ace_microdagr_fnc_deviceGetWaypoint + * + * Public: No + */ +#include "script_component.hpp" + +(ace_player getVariable [QGVAR(waypoints), []]) diff --git a/addons/microdagr/functions/fnc_dialogClosedEH.sqf b/addons/microdagr/functions/fnc_dialogClosedEH.sqf new file mode 100644 index 0000000000..0a7e5e5115 --- /dev/null +++ b/addons/microdagr/functions/fnc_dialogClosedEH.sqf @@ -0,0 +1,21 @@ +/* + * Author: PabstMirror + * Handles the dialog closeing, switches back to display mode + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_dialogClosedEH + * + * Public: No + */ +#include "script_component.hpp" + +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + [-1] call FUNC(saveCurrentAndSetNewMode); + [DISPLAY_MODE_DISPLAY] call FUNC(openDisplay); +}; diff --git a/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf b/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf new file mode 100644 index 0000000000..1fd4c4c4d2 --- /dev/null +++ b/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf @@ -0,0 +1,30 @@ +/* + * Author: PabstMirror + * Handles the double tapping either of the 2 mini-maps + * + * Arguments: + * 0: The Map + * 1: MouseButton + * 2: MousePosX + * 3: MousePosY + * + * Return Value: + * Nothing + * + * Example: + * [minimap,0,0.5,0.5] call ace_microdagr_fnc_mapOnDrawEH + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_4(_theMap,_mouseButton,_xPos,_yPos); + +//Only handle LMB +if (_mouseButton != 0) exitWith {}; + +_worldPos = _theMap ctrlMapScreenToWorld [_xPos, _yPos]; +_worldPos set [2, (getTerrainHeightASL _worldPos)]; + +GVAR(newWaypointPosition) = _worldPos; +[APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode); diff --git a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf new file mode 100644 index 0000000000..3acf3e889c --- /dev/null +++ b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf @@ -0,0 +1,65 @@ +/* + * Author: PabstMirror + * Handles the draw event from all 3 maps (compass + 2 minimaps) + * + * Arguments: + * 0: The Map + * + * Return Value: + * Nothing + * + * Example: + * [compassMap] call ace_microdagr_fnc_mapOnDrawEH + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_theMap); + +_theMap = _this select 0; +_mapSize = (ctrlPosition _theMap) select 3; + +_waypoints = [] call FUNC(deviceGetWaypoints); + +if (GVAR(currentApplicationPage) == 1) then { + _theMap ctrlMapAnimAdd [0, DUMMY_ZOOM, DUMMY_POS]; + ctrlMapAnimCommit _theMap; + _size = 412 * _mapSize; + _theMap drawIcon [QUOTE(PATHTO_R(images\compass_starInverted.paa)), [1,1,1,1], DUMMY_POS, _size, _size, (-1 * (getDir ace_player)), '', 0 ]; + _theMap drawIcon [QUOTE(PATHTO_R(images\compass_needle.paa)), [0.533,0.769,0.76,1], DUMMY_POS, _size, _size, 0, '', 0 ]; + + if (GVAR(currentWaypoint) != -1) then { + _targetPos = []; + if (GVAR(currentWaypoint) == -2) then { + if ((count GVAR(rangeFinderPositionASL)) == 3) then { + _targetPos = GVAR(rangeFinderPositionASL); + }; + } else { + if (GVAR(currentWaypoint) < (count _waypoints)) then { + _targetPos = (_waypoints select GVAR(currentWaypoint)) select 1; + }; + }; + if ((count _targetPos) == 3) then { + _relBearing = [ace_player, _targetPos] call BIS_fnc_relativeDirTo; + _theMap drawIcon [QUOTE(PATHTO_R(images\compass_needle.paa)), [1,0.564,0.564,1], DUMMY_POS, _size, _size, _relBearing, '', 0 ]; + }; + }; + +} else { //Map Mode: + if (GVAR(mapAutoTrackPosition)) then { + _theMap ctrlMapAnimAdd [0, (GVAR(mapZoom)/_mapSize), GVAR(gpsPositionASL)]; + ctrlMapAnimCommit _theMap; + }; + _size = 48 * _mapSize; + _theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], GVAR(gpsPositionASL), _size, _size, (getDir ace_player), '', 0 ]; + + if (GVAR(settingShowAllWaypointsOnMap)) then { + _size = 32 * _mapSize; + { + EXPLODE_2_PVT(_x,_wpName,_wpPos); + _alpha = if (_forEachIndex == GVAR(currentWaypoint)) then {1} else {0.5}; + _theMap drawIcon [QUOTE(PATHTO_R(images\icon_mapWaypoints.paa)), [1,1,1,_alpha], _wpPos, _size, _size, 0, '', 0 ]; + } forEach _waypoints; + }; +}; diff --git a/addons/microdagr/functions/fnc_modeMapButtons.sqf b/addons/microdagr/functions/fnc_modeMapButtons.sqf new file mode 100644 index 0000000000..5de4bf9ca7 --- /dev/null +++ b/addons/microdagr/functions/fnc_modeMapButtons.sqf @@ -0,0 +1,31 @@ +/* + * Author: PabstMirror + * Takes some arguments and returns something or other. + * + * Arguments: + * 0: String of the map button pressed + * + * Return Value: + * Nothing + * + * Example: + * ["autotrack"] call ace_microdagr_fnc_modeMapButtons + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_mode); + +[-1] call FUNC(saveCurrentAndSetNewMode); //backup current draw pos/zoom + +if (_mode == "autotrack") then { + GVAR(mapAutoTrackPosition) = !GVAR(mapAutoTrackPosition); +} else { + if (_mode == "zoomin") then { + GVAR(mapZoom) = GVAR(mapZoom) * (10/11); + } else { + GVAR(mapZoom) = GVAR(mapZoom) * (11/10); + }; +}; +[] call FUNC(showApplicationPage); diff --git a/addons/microdagr/functions/fnc_moduleMapFill.sqf b/addons/microdagr/functions/fnc_moduleMapFill.sqf new file mode 100644 index 0000000000..d07b0bc518 --- /dev/null +++ b/addons/microdagr/functions/fnc_moduleMapFill.sqf @@ -0,0 +1,26 @@ +/* + * Author: PabstMirror + * Function for the module (handles the map fill level) + * + * Arguments: + * 0: logic + * 1: synced units-not used + * 2: Module Activated + * + * Return Value: + * Nothing + * + * Example: + * [module, [], true] call ace_microdagr_fnc_moduleMapFill + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_3(_logic,_syncedUnits,_activated); + +if (!_activated) exitWith {WARNING("Module Placed but not active");}; + +if (isServer) then { + [_logic, QGVAR(MapDataAvailable), "MapDataAvailable"] call EFUNC(common,readSettingFromModule); +}; diff --git a/addons/microdagr/functions/fnc_openDisplay.sqf b/addons/microdagr/functions/fnc_openDisplay.sqf new file mode 100644 index 0000000000..ae5f7f47f5 --- /dev/null +++ b/addons/microdagr/functions/fnc_openDisplay.sqf @@ -0,0 +1,101 @@ +/* + * Author: PabstMirror + * Changes the display mode of the microDAGR + * + * Arguments: + * 0: Display Mode to show the microDAGR in + * + * Return Value: + * Nothing + * + * Example: + * [1] call ace_microdagr_fnc_openDisplay + * + * Public: No + */ +#include "script_component.hpp" + +private ["_oldShowMode", "_args", "_pfID", "_player"]; + +DEFAULT_PARAM(0,_newDisplayShowMode,-1); +_oldShowMode = GVAR(currentShowMode); + +if (_newDisplayShowMode == -1) then { + //Toggle mode button: + if (_oldShowMode in [DISPLAY_MODE_DISPLAY, DISPLAY_MODE_HIDDEN]) then {_newDisplayShowMode = DISPLAY_MODE_DIALOG}; + if (_oldShowMode in [DISPLAY_MODE_DIALOG, DISPLAY_MODE_CLOSED]) then {_newDisplayShowMode = DISPLAY_MODE_DISPLAY}; +}; + +if ((_newDisplayShowMode == DISPLAY_MODE_DISPLAY) && {!([DISPLAY_MODE_DISPLAY] call FUNC(canShow))}) then {_newDisplayShowMode = DISPLAY_MODE_HIDDEN}; +if ((_newDisplayShowMode == DISPLAY_MODE_DIALOG) && {!([DISPLAY_MODE_DIALOG] call FUNC(canShow))}) then {_newDisplayShowMode = DISPLAY_MODE_HIDDEN}; + + + +//On first-startup +if (GVAR(currentApplicationPage) == APP_MODE_NULL) then { + GVAR(currentApplicationPage) = APP_MODE_INFODISPLAY; + GVAR(mapPosition) = getPos ace_player; +}; + +if (_newDisplayShowMode in [DISPLAY_MODE_CLOSED, DISPLAY_MODE_HIDDEN]) then { + + //If Dialog is open, back it up before closing: + if (dialog && {!isNull (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull])}) then { + [-1] call FUNC(saveCurrentAndSetNewMode); + closeDialog 0; + }; + + //Close the display: + (QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; +} else { + if (_newDisplayShowMode == DISPLAY_MODE_DISPLAY) then { + //If Dialog is open, back it up before closing: + if (dialog && {!isNull (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull])}) then { + [-1] call FUNC(saveCurrentAndSetNewMode); + closeDialog 0; + }; + //Open the display: + (QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutRsc [QGVAR(TheRscTitleDisplay), "PLAIN", 0, true]; + } else { //DISPLAY_MODE_DIALOG + //Close the display: + (QGVAR(TheRscTitleDisplay) call BIS_fnc_rscLayer) cutText ["", "PLAIN"]; + //Open the dialog: + createDialog QGVAR(TheDialog); + }; +}; + +GVAR(currentShowMode) = _newDisplayShowMode; +//Update display applicaiton if open: +if (GVAR(currentShowMode) in [DISPLAY_MODE_DIALOG, DISPLAY_MODE_DISPLAY]) then { + [] call FUNC(showApplicationPage); +}; + +if ((_oldShowMode == DISPLAY_MODE_CLOSED) && {GVAR(currentShowMode) != DISPLAY_MODE_CLOSED}) then { + //Start a pfeh to update display and handle hiding display + + [{ + PARAMS_2(_args,_pfID); + EXPLODE_1_PVT(_args,_player); + if ((isNull ace_player) || {!alive ace_player} || {ace_player != _player} || {!("ACE_microDAGR" in (items ace_player))} || {GVAR(currentShowMode) == DISPLAY_MODE_CLOSED}) then { + //Close Display if still open: + if (GVAR(currentShowMode) != DISPLAY_MODE_CLOSED) then { + [DISPLAY_MODE_CLOSED] call FUNC(openDisplay); + }; + [_pfID] call CBA_fnc_removePerFrameHandler; + } else { + GVAR(gpsPositionASL) = getPosAsl ace_player; + if (GVAR(currentShowMode) == DISPLAY_MODE_HIDDEN) then { + //If display is hidden, and we can show, then swithc modes: + if ([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) then { + [DISPLAY_MODE_DISPLAY] call FUNC(openDisplay); + }; + } else { + if ([GVAR(currentShowMode)] call FUNC(canShow)) then { + [] call FUNC(updateDisplay); + } else { + [DISPLAY_MODE_HIDDEN] call FUNC(openDisplay); + }; + }; + }; + }, 0.1, [ace_player]] call CBA_fnc_addPerFrameHandler; +}; diff --git a/addons/microdagr/functions/fnc_recieveRangefinderData.sqf b/addons/microdagr/functions/fnc_recieveRangefinderData.sqf new file mode 100644 index 0000000000..154dfff94a --- /dev/null +++ b/addons/microdagr/functions/fnc_recieveRangefinderData.sqf @@ -0,0 +1,34 @@ +/* + * Author: PabstMirror + * Recieves the data packet from the vector rangefinder + * + * Arguments: + * 0: Slope distance (Meters) + * 1: Azimuth (Degrees) + * 2: Inclination (Degrees) + * + * Return Value: + * Nothing + * + * Example: + * [1000, 45, 1] call ace_microdagr_fnc_recieveRangefinderData + * + * Public: No + */ +#include "script_component.hpp" + +private ["_horizontalDistance", "_verticleDistance", "_targetOffset", "_targetPosASL"]; + +PARAMS_3(_slopeDistance,_azimuth,_inclination); + +if (GVAR(currentWaypoint) != -2) exitWith {}; //Only take waypoint when "connected" +if (_slopeDistance < 0) exitWith {}; //Bad Data + +_horizontalDistance = (cos _inclination) * _slopeDistance; +_verticleDistance = (sin _inclination) * _slopeDistance; + +_targetOffset = [((sin _azimuth) * _horizontalDistance), ((cos _azimuth) * _horizontalDistance), _verticleDistance]; +//This assumes the "rangefinder view" pos is very close to player, at worst the turret should only be a few meters different +_targetPosASL = (getPosASL ace_player) vectorAdd _targetOffset; + +GVAR(rangeFinderPositionASL) = _targetPosASL; diff --git a/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf b/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf new file mode 100644 index 0000000000..1f4982d87f --- /dev/null +++ b/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf @@ -0,0 +1,62 @@ +/* + * Author: PabstMirror + * Saves the current mode and sets a new mode + * Used to backup display when switching display modes + * + * Arguments: + * 0: New Mode + * + * Return Value: + * Nothing + * + * Example: + * [2] call ace_microdagr_fnc_saveCurrentAndSetNewMode + * + * Public: No + */ +#include "script_component.hpp" + +private ["_display", "_theMap", "_mapSize", "_centerPos"]; + +PARAMS_1(_newMode); + +disableSerialization; +_display = displayNull; +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + _display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]); +} else { + _display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]); +}; +if (isNull _display) exitWith {ERROR("No Display");}; + +if (GVAR(currentApplicationPage) == 2) then { + _theMap = if (!GVAR(mapShowTexture)) then {_display displayCtrl IDC_MAPPLAIN} else {_display displayCtrl IDC_MAPDETAILS}; + _mapCtrlPos = ctrlPosition _theMap; + _mapSize = _mapCtrlPos select 3; + _centerPos = [((_mapCtrlPos select 0) + (_mapCtrlPos select 2) / 2), ((_mapCtrlPos select 1) + (_mapCtrlPos select 3) / 2)]; + GVAR(mapPosition) = _theMap ctrlMapScreenToWorld _centerPos; + GVAR(mapZoom) = (ctrlMapScale _theMap) * _mapSize; + + //Hit button again, toggle map modes: + if (_newMode == 2) then { + if (GVAR(mapShowTexture)) then { + GVAR(mapShowTexture) = false; + } else { + if (GVAR(MapDataAvailable) == MAP_DETAIL_SAT) then { + GVAR(mapShowTexture) = true; + }; + }; + }; +}; + +//Can't switch to map if no map loaded +if (_newMode == APP_MODE_MAP) then { + if (GVAR(MapDataAvailable) == MAP_DETAIL_NONE) then { + _newMode = -1; + }; +}; + +if (_newMode != -1) then { + GVAR(currentApplicationPage) = _newMode; + [] call FUNC(showApplicationPage); +}; diff --git a/addons/microdagr/functions/fnc_showApplicationPage.sqf b/addons/microdagr/functions/fnc_showApplicationPage.sqf new file mode 100644 index 0000000000..a9e6d10db7 --- /dev/null +++ b/addons/microdagr/functions/fnc_showApplicationPage.sqf @@ -0,0 +1,127 @@ +/* + * Author: PabstMirror + * Changes the "application page" shown on the microDAGR + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_showApplicationPage + * + * Public: No + */ +#include "script_component.hpp" + +private ["_display", "_daylight", "_theMap", "_mapSize"]; + +disableSerialization; + +_display = displayNull; +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + _display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]); +} else { + _display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]); +}; +if (isNull _display) exitWith {ERROR("No Display");}; + +//Fade "shell" at night +_daylight = 0.05 max (((1 - overcast)/2 + ((1 - cos (daytime * 360/24)) / 4)) * (linearConversion [0, 1, sunOrMoon, (0.25 * moonIntensity), 1])); +(_display displayCtrl IDC_MICRODAGRSHELL) ctrlSetTextColor [_daylight, _daylight, _daylight, 1]; + +//TopBar +(_display displayCtrl IDC_RANGEFINDERCONNECTEDICON) ctrlShow (GVAR(currentWaypoint) == -2); + +//Mode: Info: +(_display displayCtrl IDC_MODEDISPLAY) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY); + +if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then { + (_display displayCtrl IDC_MODEDISPLAY_UTMGRID) ctrlSetText GVAR(mgrsGridZoneDesignator); + if (GVAR(currentWaypoint) == -1) then { + (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTIMECG) ctrlShow true; + (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTARGETCG) ctrlShow false; + } else { + (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTIMECG) ctrlShow false; + (_display displayCtrl IDC_MODEDISPLAY_MODEPOSTARGETCG) ctrlShow true; + if (GVAR(currentWaypoint) == -2) then { + (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa" + } else { + (_display displayCtrl IDC_MODEDISPLAY_TARGETICON) ctrlSetText QUOTE(PATHTOF(images\icon_menuMark.paa)); + }; + }; +}; + +//Mode: Compass: +(_display displayCtrl IDC_MODECOMPASS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_COMPASS); +(_display displayCtrl IDC_MAPCOMPASS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_COMPASS); + + +//Mode: Map +(_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP); +(_display displayCtrl IDC_MODEMAP_MAPZOOMIN) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP); +(_display displayCtrl IDC_MODEMAP_MAPZOOMOUT) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MAP); + +(_display displayCtrl IDC_MAPPLAIN) ctrlShow ((GVAR(currentApplicationPage) == APP_MODE_MAP) && {!GVAR(mapShowTexture)}); +(_display displayCtrl IDC_MAPDETAILS) ctrlShow ((GVAR(currentApplicationPage) == APP_MODE_MAP) && {GVAR(mapShowTexture)}); + +if (GVAR(currentApplicationPage) == APP_MODE_MAP) then { + _theMap = if (!GVAR(mapShowTexture)) then {_display displayCtrl IDC_MAPPLAIN} else {_display displayCtrl IDC_MAPDETAILS}; + _mapSize = (ctrlPosition _theMap) select 3; + _theMap ctrlMapAnimAdd [0, (GVAR(mapZoom) / _mapSize), GVAR(mapPosition)]; + ctrlMapAnimCommit _theMap; + if (GVAR(mapAutoTrackPosition)) then { + (_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlSetTextColor [1,1,1,0.8]; + } else { + (_display displayCtrl IDC_MODEMAP_MAPTRACKBUTTON) ctrlSetTextColor [1,1,1,0.4]; + }; +}; + +//Mode: Menu +(_display displayCtrl IDC_MODEMENU) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_MENU); + +//Mode: Mark +if (GVAR(currentApplicationPage) == APP_MODE_MARK) then { + (_display displayCtrl IDC_MODEMARK) ctrlShow true; + //not backed up for displayMode swap, not a big deal + + + if ((count GVAR(newWaypointPosition)) == 0) then { + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText (localize "STR_ACE_microdagr_wpEnterCords"); + (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText ""; + } else { + (_display displayCtrl IDC_MODEMARK_HEADER) ctrlSetText format [(localize "STR_ACE_microdagr_wpEnterName"), mapGridPosition GVAR(newWaypointPosition)]; + (_display displayCtrl IDC_MODEMARK_CORDSEDIT) ctrlSetText format ["[%1]", mapGridPosition GVAR(newWaypointPosition)]; + }; + ctrlSetFocus (_display displayCtrl IDC_MODEMARK_CORDSEDIT); +} else { + (_display displayCtrl IDC_MODEMARK) ctrlShow false; + GVAR(newWaypointPosition) = []; +}; + +//Mode: Waypoints +(_display displayCtrl IDC_MODEWAYPOINTS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_WAYPOINTS); + +//Mode: Setting +(_display displayCtrl IDC_MODESETTINGS) ctrlShow (GVAR(currentApplicationPage) == APP_MODE_SETUP); + +//Buttons pushed: +if (GVAR(currentApplicationPage) == APP_MODE_INFODISPLAY) then { + (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); +} else { + (_display displayCtrl IDC_BUTTONBG0) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); +}; +if (GVAR(currentApplicationPage) == APP_MODE_COMPASS) then { + (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); +} else { + (_display displayCtrl IDC_BUTTONBG1) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); +}; +if (GVAR(currentApplicationPage) == APP_MODE_MAP) then { + (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedDown.paa)); +} else { + (_display displayCtrl IDC_BUTTONBG2) ctrlSetText QUOTE(PATHTOF(images\button_pushedUp.paa)); +}; + +//Update the page now: +[] call FUNC(updateDisplay); diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf new file mode 100644 index 0000000000..af577049a0 --- /dev/null +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -0,0 +1,198 @@ +/* + * Author: PabstMirror + * Updates the display (several times a second) called from the pfeh + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_updateDisplay + * + * Public: No + */ +#include "script_component.hpp" + +private ["_display", "_waypoints", "_posString", "_eastingText", "_northingText", "_numASL", "_aboveSeaLevelText", "_compassAngleText", "_targetPosName", "_targetPosLocationASL", "_bearingText", "_rangeText", "_targetName", "_bearing", "_2dDistanceKm", "_SpeedText", "_playerPos2d", "_wpListBox", "_currentIndex", "_wpName", "_wpPos", "_settingListBox", "_yearString", "_monthSring", "_dayString"]; + +disableSerialization; +_display = displayNull; +if (GVAR(currentShowMode) == DISPLAY_MODE_DIALOG) then { + _display = (uiNamespace getVariable [QGVAR(DialogDisplay), displayNull]); +} else { + _display = (uiNamespace getVariable [QGVAR(RscTitleDisplay), displayNull]); +}; +if (isNull _display) exitWith {ERROR("No Display");}; + +(_display displayCtrl IDC_CLOCKTEXT) ctrlSetText ([daytime, "HH:MM"] call bis_fnc_timeToString); + +_waypoints = [] call FUNC(deviceGetWaypoints); + +switch (GVAR(currentApplicationPage)) do { +case (APP_MODE_INFODISPLAY): { + //Easting/Northing: + _posString = mapGridPosition ACE_player; + _eastingText = ""; + _northingText = ""; + if (count _posString > 0) then { + _eastingText = (_posString select [0, ((count _posString)/2)]) + "e"; + _northingText = (_posString select [(count _posString)/2, (count _posString - 1)]) + "n"; + }; + (_display displayCtrl IDC_MODEDISPLAY_EASTING) ctrlSetText _eastingText; + (_display displayCtrl IDC_MODEDISPLAY_NORTHING) ctrlSetText _northingText; + + //Elevation: + _numASL = (GVAR(gpsPositionASL) select 2) + GVAR(mapAltitude); + _aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber; + _aboveSeaLevelText = if (_numASL > 0) then {"+" + _aboveSeaLevelText + " MSL"} else {_aboveSeaLevelText + " MSL"}; + (_display displayCtrl IDC_MODEDISPLAY_ELEVATIONNUM) ctrlSetText _aboveSeaLevelText; + + //Heading: + _compassAngleText = if (GVAR(settingUseMils)) then { + [(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber; + } else { + ([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "" //degree symbol is in UTF-8 + }; + (_display displayCtrl IDC_MODEDISPLAY_HEADINGNUM) ctrlSetText _compassAngleText; + + //Speed: + (_display displayCtrl IDC_MODEDISPLAY_SPEEDNUM) ctrlSetText format ["%1kph", (round (speed (vehicle ace_player)))];; + + + if (GVAR(currentWaypoint) == -1) then { + _yearString = (date select 0); + _monthSring = localize (["error","str_january","str_february","str_march","str_april","str_may","str_june","str_july","str_august","str_september","str_october","str_november","str_december"] select (date select 1)); + _dayString = if ((date select 2) < 10) then {"0" + str (date select 2)} else {str (date select 2)}; + + (_display displayCtrl IDC_MODEDISPLAY_TIMEDISPLAYGREEN1) ctrlSetText format ["%1-%2-%3", _yearString, _monthSring, _dayString]; //"18-Feb-2010"; + (_display displayCtrl IDC_MODEDISPLAY_TIMEDISPLAYGREEN2) ctrlSetText ([daytime, "HH:MM:SS"] call bis_fnc_timeToString); + } else { + _targetPosName = ""; + _targetPosLocationASL = []; + _bearingText = "----"; + _rangeText = "----"; + _aboveSeaLevelText = "----"; + _targetName = "----"; + + if (GVAR(currentWaypoint) == -2) then { + if (!(GVAR(rangeFinderPositionASL) isEqualTo [])) then { + _targetPosName = format ["[%1]", (mapGridPosition GVAR(rangeFinderPositionASL))]; + _targetPosLocationASL = GVAR(rangeFinderPositionASL); + }; + } else { + if (GVAR(currentWaypoint) > ((count _waypoints) - 1)) exitWith {ERROR("bounds");}; + _targetPosName = (_waypoints select GVAR(currentWaypoint)) select 0; + _targetPosLocationASL = (_waypoints select GVAR(currentWaypoint)) select 1; + }; + + if (!(_targetPosLocationASL isEqualTo [])) then { + _bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo; + _bearingText = if (GVAR(settingUseMils)) then { + [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; + } else { + ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "" //degree symbol is in UTF-8 + }; + _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000; + _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; + _numASL = (_targetPosLocationASL select 2) + GVAR(mapAltitude); + _aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber; + _aboveSeaLevelText = if (_numASL > 0) then {"+" + _aboveSeaLevelText + " MSL"} else {_aboveSeaLevelText + " MSL"}; + }; + + (_display displayCtrl IDC_MODEDISPLAY_TRACKNUM) ctrlSetText _bearingText; + (_display displayCtrl IDC_MODEDISPLAY_TARGETRANGENUM) ctrlSetText _rangeText; + (_display displayCtrl IDC_MODEDISPLAY_TARGETELEVATIONNUM) ctrlSetText _aboveSeaLevelText; + (_display displayCtrl IDC_MODEDISPLAY_TARGETNAME) ctrlSetText _targetPosName; + }; + }; +case (APP_MODE_COMPASS): { + //Heading: + _compassAngleText = if (GVAR(settingUseMils)) then { + [(floor ((6400 / 360) * (getDir ace_player))), 4, 0] call CBA_fnc_formatNumber; + } else { + ([(floor (getDir ace_player)), 3, 1] call CBA_fnc_formatNumber) + "M" //degree symbol is in UTF-8 + }; + (_display displayCtrl IDC_MODECOMPASS_HEADING) ctrlSetText _compassAngleText; + + //Speed: + _SpeedText = format ["%1kph", (round (speed (vehicle ace_player)))];; + (_display displayCtrl IDC_MODECOMPASS_SPEED) ctrlSetText _SpeedText; + + if (GVAR(currentWaypoint) == -1) then { + (_display displayCtrl IDC_MODECOMPASS_BEARING) ctrlSetText ""; + (_display displayCtrl IDC_MODECOMPASS_RANGE) ctrlSetText ""; + (_display displayCtrl IDC_MODECOMPASS_TARGET) ctrlSetText ""; + } else { + _playerPos2d = GVAR(gpsPositionASL) select [0,2]; + + _targetPosName = ""; + _targetPosLocationASL = []; + + if (GVAR(currentWaypoint) == -2) then { + if (!(GVAR(rangeFinderPositionASL) isEqualTo [])) then { + _targetPosName = format ["[%1]", (mapGridPosition GVAR(rangeFinderPositionASL))]; + _targetPosLocationASL = GVAR(rangeFinderPositionASL); + }; + } else { + if (GVAR(currentWaypoint) > ((count _waypoints - 1))) exitWith {ERROR("bounds");}; + _targetPosName = (_waypoints select GVAR(currentWaypoint)) select 0; + _targetPosLocationASL = (_waypoints select GVAR(currentWaypoint)) select 1; + }; + + _bearing = "---"; + _rangeText = "---"; + + if (!(_targetPosLocationASL isEqualTo [])) then { + _bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo; + _bearingText = if (GVAR(settingUseMils)) then { + [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber; + } else { + ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "M" //degree symbol is in UTF-8 + }; + _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000; + _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)]; + }; + + (_display displayCtrl IDC_MODECOMPASS_BEARING) ctrlSetText _bearingText; + (_display displayCtrl IDC_MODECOMPASS_RANGE) ctrlSetText _rangeText; + (_display displayCtrl IDC_MODECOMPASS_TARGET) ctrlSetText _targetPosName; + }; + }; + +case (APP_MODE_WAYPOINTS): { + _wpListBox = _display displayCtrl IDC_MODEWAYPOINTS_LISTOFWAYPOINTS; + _currentIndex = lbCurSel _wpListBox; + + lbClear _wpListBox; + { + EXPLODE_2_PVT(_x,_wpName,_wpPos); + _wpListBox lbAdd _wpName; + _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_wpPos select [0,2])) / 1000; + _wpListBox lbSetTextRight [_forEachIndex, (format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)])]; + } forEach _waypoints; + + _currentIndex = (_currentIndex max 0) min (count _waypoints); + _wpListBox lbSetCurSel _currentIndex; + }; + +case (APP_MODE_SETUP): { + _settingListBox = _display displayCtrl IDC_MODESETTINGS; + lbClear _settingListBox; + + _settingListBox lbAdd (localize "STR_ACE_microdagr_settingUseMils"); + if (GVAR(settingUseMils)) then { + _settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingMils")]; + } else { + _settingListBox lbSetTextRight [0, (localize "STR_ACE_microdagr_settingDegrees")]; + }; + + _settingListBox lbAdd (localize "STR_ACE_microdagr_settingShowWP"); + if (GVAR(settingShowAllWaypointsOnMap)) then { + _settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOn")]; + } else { + _settingListBox lbSetTextRight [1, (localize "STR_ACE_microdagr_settingOff")]; + }; + }; +}; diff --git a/addons/microdagr/functions/script_component.hpp b/addons/microdagr/functions/script_component.hpp new file mode 100644 index 0000000000..13fbbcf5fe --- /dev/null +++ b/addons/microdagr/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\microdagr\script_component.hpp" \ No newline at end of file diff --git a/addons/microdagr/gui.hpp b/addons/microdagr/gui.hpp new file mode 100644 index 0000000000..2eeb99563c --- /dev/null +++ b/addons/microdagr/gui.hpp @@ -0,0 +1,83 @@ +#define ST_LEFT 0x00 +#define ST_RIGHT 0x01 +#define ST_CENTER 0x02 + +class RscActiveText; +class RscText; +class RscPicture; +class RscMapControl { + class hospital; + class church; + class lighthouse; + class power; + class fuelstation; + class transmitter; +}; +class RscMapControlEmpty; +class RscControlsGroupNoScrollbars; +class RscEdit; +class RscButton; +class RscListBox; + + +class GVAR(RscActiveTextPicture): RscActiveText { + style = 48; + colorText[] = {1,1,1,1}; + colorActive[] = {1,1,1,1}; + color[] = {1,1,1,1}; + color2[] = {1,1,1,1}; + colorFocused[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,1}; + colorBackground[] = {1,1,1,1}; + colorBackground2[] = {1,1,1,1}; + colorBackgroundFocused[] = {1,1,1,1}; +}; + +class GVAR(RscText): RscText { + font = "EtelkaMonospacePro"; + //Design note: I think less contrast in font color makes it look more natural and less "eye catching" + colorText[] = {0.75,0.75,0.75,1}; +}; + +//Redfine Scaling for the Dialog +#define X_PART(num) QUOTE((((60 - 25)/2) + (num)) * (safeZoneH / 64) + (safezoneX + (safezoneW - safeZoneH)/2)) +#define Y_PART(num) QUOTE((0 + (num)) * (safeZoneH / 36) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2)) +#define W_PART(num) QUOTE((num) * (safeZoneH / 64)) +#define H_PART(num) QUOTE((num) * (safeZoneH / 36)) + +class GVAR(TheDialog) { + idd = -1; + movingEnable = 1; + duration = 9999999; + fadein = 0; + fadeout = 0; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(DialogDisplay)),_this select 0)];); + onUnload = QUOTE([] call FUNC(dialogClosedEH)); + + #include "gui_controls.hpp" +}; + + +//Redfine Scaling for the RscTitle +#define PROFILE_X (profilenamespace getvariable ['IGUI_GRID_GPS_X', 0]) +#define PROFILE_Y (profilenamespace getvariable ['IGUI_GRID_GPS_Y', 0]) +#define PROFILE_W (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1]) +#define PROFILE_H ((16/9) * (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1])) + +#define X_PART(num) QUOTE((num) / 25 * PROFILE_W + PROFILE_X) +#define Y_PART(num) QUOTE((num) / 25 * PROFILE_H + PROFILE_Y) +#define W_PART(num) QUOTE((num) / 25 * PROFILE_W) +#define H_PART(num) QUOTE((num) / 25 * PROFILE_H) + +class RscTitles { + class GVAR(TheRscTitleDisplay) { + idd = -1; + movingEnable = 1; + duration = 9999999; + fadein = 0; + fadeout = 0; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(RscTitleDisplay)),_this select 0)];); + + #include "gui_controls.hpp" + }; +}; diff --git a/addons/microdagr/gui_controls.hpp b/addons/microdagr/gui_controls.hpp new file mode 100644 index 0000000000..99bf049977 --- /dev/null +++ b/addons/microdagr/gui_controls.hpp @@ -0,0 +1,769 @@ +class controlsBackground { + class BackgroundBlackScreen: GVAR(RscText) { + idc = -1; + x = X_PART(-1); + y = Y_PART(-1); + //Cover the "seams" and make it bigger + w = W_PART(27); + h = H_PART(27); + colorBackground[] = {0,0,0,1}; + }; + class StatusBarBS: RscPicture { + idc = -1; + text = QUOTE(PATHTOF(images\microDAGR_topBar.paa)); + x = X_PART(0); + y = Y_PART(0); + w = W_PART(25); + h = H_PART(2); + }; + class RangefinderConnectedIcon: RscPicture { + idc = IDC_RANGEFINDERCONNECTEDICON; + text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa"; + x = X_PART(6.35); + y = Y_PART(0.1); + w = W_PART(2.7); + h = H_PART(1.8); + }; + class ClockText: GVAR(RscText) { + idc = IDC_CLOCKTEXT; + style = ST_RIGHT; + // text = "12:00"; + x = X_PART(0); + y = Y_PART(0.2); + w = W_PART(15); + h = H_PART(1.8); + sizeEx = H_PART(1.5); + colorText[] = {0,0.67,0.22,1}; + }; + class ClockText2: GVAR(RscText) { + idc = -1; + style = ST_LEFT; + text = "L"; + x = X_PART(14.75); + y = Y_PART(0.2); + w = W_PART(2); + h = H_PART(1.8); + sizeEx = H_PART(1.5); + }; + class MapPlain: RscMapControl { + idc = IDC_MAPPLAIN; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + onDraw = QUOTE(_this call FUNC(mapOnDrawEH)); + onMouseButtonDblClick = QUOTE(_this call FUNC(mapDoubleTapEH)); + + scaleMin = 0.005; + scaleMax = 10; //Lets the mini display zoom out far enough + drawObjects = 0; + text = "#(argb,8,8,3)color(1,1,1,1)"; + maxSatelliteAlpha = 0; + alphaFadeStartScale = 100; + alphaFadeEndScale = 100; + colorSea[] = {0.467,0.631,0.851,0.25}; + colorCountlinesWater[] = {0.491,0.577,0.702,0.3}; + colorMainCountlinesWater[] = {0.491,0.577,0.702,0.6}; + colorGrid[] = {0,0,0,0.15}; + colorGridMap[] = {0,0,0,0.2}; + + //Text sizes: + sizeExLabel = 0; + sizeExGrid = H_PART(0.5); + sizeExUnits = 0; + sizeExNames = H_PART(2); //Marker's Text + sizeExInfo = 0; + sizeExLevel = 0; + sizeEx = H_PART(1); + + ptsPerSquareSea = 5; + ptsPerSquareTxt = 20; + ptsPerSquareRoad = 0.01; + ptsPerSquareObj = 2000; //don't show buildings + ptsPerSquareCLn = 100; + ptsPerSquareCost = 200; + ptsPerSquareFor = 9; + ptsPerSquareForEdge = 9; + + showCountourInterval = 0; + + //Copy style from ace_map's config.cpp: + colorTracks[] = {1.0,0.0,0.0,1}; + colorTracksFill[] = {1.0,1.0,0.0,1}; + colorRoads[] = {0.0,0.0,0.0,1}; + colorRoadsFill[] = {1,1,0,1}; + colorMainRoads[] = {0.0,0.0,0.0,1}; + colorMainRoadsFill[] = {1,0.6,0.4,1}; + colorRailWay[] = {0.8,0.2,0,1}; + + colorBackground[] = {0.929412, 0.929412, 0.929412, 1.0}; + colorOutside[] = {0.929412, 0.929412, 0.929412, 1.0}; + colorCountlines[] = {0.647059, 0.533333, 0.286275, 0.5}; + colorMainCountlines[] = {0.858824, 0, 0,0.5}; + colorForest[] = {0.6, 0.8, 0.2, 0.1}; + colorForestBorder[] = {0,1,0,0.25}; + colorLevels[] = {0.0, 0.0, 0.0, 0.5}; + colorRocks[] = {0.50, 0.50, 0.50, 0}; + }; + class MapDetails: MapPlain { + idc = IDC_MAPDETAILS; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + onDraw = QUOTE(_this call FUNC(mapOnDrawEH)); + onMouseButtonDblClick = QUOTE(_this call FUNC(mapDoubleTapEH)); + + // ptsPerSquareSea = 5; + // ptsPerSquareTxt = 20; + // ptsPerSquareRoad = 0.01; + ptsPerSquareObj = 9; + // ptsPerSquareCLn = 100; + // ptsPerSquareCost = 200; + // ptsPerSquareFor = 9; + // ptsPerSquareForEdge = 9; + + maxSatelliteAlpha = 0.5; + + colorRocks[] = {0.50, 0.50, 0.50, 0.50}; + + class hospital: Hospital {color[] = {0,0,0,0.25};}; + class church: Church {color[] = {0,0,0,0.25};}; + class lighthouse: Lighthouse {color[] = {0,0,0,0.25};}; + class power: power {color[] = {0,0,0,0.25};}; + class fuelstation: Fuelstation {color[] = {0,0,0,0.25};}; + class transmitter: Transmitter {color[] = {0,0,0,0.25};}; + + }; + class MapCompass: RscMapControlEmpty { + idc = IDC_MAPCOMPASS; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + onDraw = QUOTE(_this call FUNC(mapOnDrawEH)); + + colorBackground[] = {0,0,0,1}; + colorOutside[] = {0,0,0,1}; + moveOnEdges = 0; + }; +}; + +class controls { + class TopMenuClick: GVAR(RscActiveTextPicture) { + idc = -1; + text = "#(argb,8,8,3)color(0,0,0,0)"; + x = X_PART(0); + y = Y_PART(0); + w = W_PART(25); + h = H_PART(2); + onbuttonclick = QUOTE([3] call FUNC(saveCurrentAndSetNewMode)); + }; + + //Mode: Display + class ModeDisplay: RscControlsGroupNoScrollbars { + idc = IDC_MODEDISPLAY; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + class Controls { + class MGRSNew: GVAR(RscText) { + idc = -1; + text = "$STR_ACE_microdagr_controlMGRS"; + x = W_PART(0.5); + y = H_PART(0); + w = W_PART(10); + h = H_PART(1); + sizeEx = H_PART(1); + }; + class WGD: GVAR(RscText) { + idc = -1; + style = ST_RIGHT; + text = "$STR_ACE_microdagr_controlWGD"; + x = W_PART(14.5); + y = H_PART(0); + w = W_PART(10); + h = H_PART(1); + sizeEx = H_PART(1); + }; + class UTMGrid: GVAR(RscText) { + idc = IDC_MODEDISPLAY_UTMGRID; + // text = "15T XG"; + x = W_PART(4.5); + y = H_PART(1.5); + w = W_PART(10); + h = H_PART(2); + sizeEx = H_PART(2); + }; + class selfIcon: RscPicture { + idc = -1; + text = QUOTE(PATHTOF(images\icon_self.paa)); + x = W_PART(0.5); + y = H_PART(2); + w = W_PART(4); + h = H_PART(3); + }; + class Easting: GVAR(RscText) { + idc = IDC_MODEDISPLAY_EASTING; + // text = "11994e"; //--- ToDo: Localize; + style = ST_RIGHT; + x = W_PART(14.5); + y = H_PART(1.5); + w = W_PART(10); + h = H_PART(2); + sizeEx = H_PART(2); + }; + class Northing: GVAR(RscText) { + idc = IDC_MODEDISPLAY_NORTHING; + // text = "11994n"; //--- ToDo: Localize; + style = ST_RIGHT; + x = W_PART(14.5); + y = H_PART(3.5); + w = W_PART(10); + h = H_PART(2); + sizeEx = H_PART(2); + }; + class ElevationText: GVAR(RscText) { + idc = -1; + text = "$STR_A3_disp_editor_elevation"; + x = W_PART(0.5); + y = H_PART(6); + w = W_PART(10); + h = H_PART(1.5); + sizeEx = H_PART(1.25); + }; + class ElevationNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_ELEVATIONNUM; + // text = "+000232 MSL"; //--- ToDo: Localize; + style = ST_RIGHT; + x = W_PART(12); + y = H_PART(6); + w = W_PART(12.5); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class RscPicture_1201: RscPicture { + idc = -1; + text = "#(argb,8,8,3)color(1,1,1,0.75)"; + x = W_PART(0.5); + y = H_PART(8.115); + w = W_PART(24); + h = H_PART(0.05); + }; + class CompasIcon: RscPicture { + idc = -1; + text = QUOTE(PATHTOF(images\icon_infoCompass.paa)); + x = W_PART(0.5); + y = H_PART(8.5); + w = W_PART(2); + h = H_PART(1.5); + }; + class HeadingNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_HEADINGNUM; + // text = "097.2oM"; //--- ToDo: Localize; + x = W_PART(4); + y = H_PART(8.5); + w = W_PART(10); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class SpeedNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_SPEEDNUM; + // text = "34kph"; //--- ToDo: Localize; + style = ST_RIGHT; + x = W_PART(14.5); + y = H_PART(8.5); + w = W_PART(7.5); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class RscPicture_1204: RscPicture { + idc = -1; + text = "#(argb,8,8,3)color(1,1,1,0.75)"; + x = W_PART(0.5); + y = H_PART(10.45); + w = W_PART(24); + h = H_PART(0.05); + }; + class modePosTimeCG: RscControlsGroupNoScrollbars { + idc = IDC_MODEDISPLAY_MODEPOSTIMECG; + x = W_PART(0); + y = H_PART(10.5); + w = W_PART(25); + h = H_PART(8.5); + class controls { + class TimeIcon: RscPicture { + idc = -1; + text = QUOTE(PATHTOF(images\icon_infoClock.paa)); + x = W_PART(0.5); + y = H_PART(3.5); + w = W_PART(2); + h = H_PART(1.5); + }; + class TimeDisplayGreen1: GVAR(RscText) { + idc = IDC_MODEDISPLAY_TIMEDISPLAYGREEN1; + x = W_PART(5); + y = H_PART(2.75); + w = W_PART(15); + h = H_PART(1.5); + style = ST_CENTER; + sizeEx = H_PART(1.5); + colorText[] = {0,0.67,0.22,1}; + }; + class TimeDisplayGreen2: TimeDisplayGreen1 { + idc = IDC_MODEDISPLAY_TIMEDISPLAYGREEN2; + y = H_PART(4.25); + }; + }; + }; + class modePosTargetCG: RscControlsGroupNoScrollbars { + idc = IDC_MODEDISPLAY_MODEPOSTARGETCG; + x = W_PART(0); + y = H_PART(10.5); + w = W_PART(25); + h = H_PART(8.5); + class controls { + class TargetIcon: RscPicture { + idc = IDC_MODEDISPLAY_TARGETICON; + text = QUOTE(PATHTOF(images\icon_menuMark.paa)); + x = W_PART(0.5); + y = H_PART(0.5); + w = W_PART(2); + h = H_PART(1.5); + }; + class TrackNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_TRACKNUM; + // text = "097.2oM"; //--- ToDo: Localize; + x = W_PART(4); + y = H_PART(0.5); + w = W_PART(10); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class TargetRangeText: GVAR(RscText) { + idc = -1; + text = "$STR_ACE_microdagr_controlRange"; + x = W_PART(0.5); + y = H_PART(2); + w = W_PART(7.5); + h = H_PART(1.5); + sizeEx = H_PART(1.25); + }; + class TargetRangeNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_TARGETRANGENUM; + // text = "1250 m"; + style = ST_RIGHT; + x = W_PART(14.5); + y = H_PART(2); + w = W_PART(10); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class TargetElevationText: GVAR(RscText) { + idc = -1; + text = "$STR_A3_disp_editor_elevation"; //--- ToDo: Localize; + x = W_PART(0.5); + y = H_PART(3.5); + w = W_PART(10); + h = H_PART(1.5); + sizeEx = H_PART(1.25); + }; + class TargetElevationNum: GVAR(RscText) { + idc = IDC_MODEDISPLAY_TARGETELEVATIONNUM; + // text = "+000232 MSL"; //--- ToDo: Localize; + style = ST_RIGHT; + x = W_PART(12); + y = H_PART(3.5); + w = W_PART(12.5); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class TargetName: GVAR(RscText) { + idc = IDC_MODEDISPLAY_TARGETNAME; + // text = "43243 33432"; //--- ToDo: Localize; + style = ST_CENTER; + x = W_PART(1); + y = H_PART(5.5); + w = W_PART(23); + h = H_PART(2); + sizeEx = H_PART(2); + }; + }; + }; + }; + }; + + //Mode: Compass + class ModeCompass: RscControlsGroupNoScrollbars { + idc = IDC_MODECOMPASS; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + class Controls { + + class CompassHeader: GVAR(RscText) { + idc = -1; + style = ST_CENTER; + text = "$STR_ACE_microdagr_compasDirection"; + x = W_PART(0); + y = H_PART(0); + w = W_PART(25); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + }; + class CompassHeading: GVAR(RscText) { + idc = IDC_MODECOMPASS_HEADING; + style = ST_LEFT; + x = W_PART(0); + y = H_PART(1.5); + w = W_PART(25); + h = H_PART(1.25); + sizeEx = H_PART(1.25); + colorText[] = {0.533,0.769,0.76,1}; + }; + class CompassSpeed: CompassHeading { + idc = IDC_MODECOMPASS_SPEED; + style = ST_RIGHT; + }; + class CompassBearing: CompassHeading { + idc = IDC_MODECOMPASS_BEARING; + y = H_PART(16.25); + style = ST_LEFT; + colorText[] = {1,0.564,0.564,1}; + }; + class CompassRange: CompassHeading { + idc = IDC_MODECOMPASS_RANGE; + y = H_PART(16.25); + style = ST_RIGHT; + colorText[] = {1,0.564,0.564,1}; + }; + class CompassTARGET: CompassHeader { + idc = IDC_MODECOMPASS_TARGET; + y = H_PART(17.5); + }; + }; + }; + + + //Mode: Map + class mapTrackButton: GVAR(RscActiveTextPicture) { + onbuttonclick = QUOTE(['autotrack'] call FUNC(modeMapButtons)); + idc = IDC_MODEMAP_MAPTRACKBUTTON; + text = QUOTE(PATHTOF(images\icon_mapTrack.paa)); + x = X_PART(11); + y = Y_PART(18.75); + w = W_PART(3); + h = H_PART(2.25); + }; + class mapZoomIn: mapTrackButton { + onbuttonclick = QUOTE(['zoomin'] call FUNC(modeMapButtons)); + idc = IDC_MODEMAP_MAPZOOMIN; + text = QUOTE(PATHTOF(images\icon_mapPlus.paa)); + color[] = {1,1,1,0.4}; + x = X_PART(4); + }; + class mapZoomOut: mapTrackButton { + onbuttonclick = QUOTE(['zoomout'] call FUNC(modeMapButtons)); + idc = IDC_MODEMAP_MAPZOOMOUT; + text = QUOTE(PATHTOF(images\icon_mapMinus.paa)); + color[] = {1,1,1,0.4}; + x = X_PART(18); + }; + + + // Mode: Menu + class ModeMenu: RscControlsGroupNoScrollbars { + idc = IDC_MODEMENU; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + class Controls { + class ButtonTL: GVAR(RscActiveTextPicture) { + idc = -1; + text = QUOTE(PATHTOF(images\icon_menuMark.paa)); + x = W_PART(3); + y = H_PART(1.5); + w = W_PART(8); + h = H_PART(6); + onbuttonclick = QUOTE([4] call FUNC(saveCurrentAndSetNewMode)); + }; + class ButtonTR: ButtonTL { + text = QUOTE(PATHTOF(images\icon_menuWaypoints.paa)); + x = W_PART(14); + y = H_PART(1.5); + onbuttonclick = QUOTE([5] call FUNC(saveCurrentAndSetNewMode)); + }; + class ButtonBL: ButtonTL { + text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa"; + x = W_PART(3); + y = H_PART(10.5); + onbuttonclick = QUOTE(_this call FUNC(appMenuButtonConnectRangefinder)); + }; + class ButtonBR: ButtonTL { + text = QUOTE(PATHTOF(images\icon_menuSettings.paa)); + x = W_PART(14); + y = H_PART(10.5); + onbuttonclick = QUOTE([6] call FUNC(saveCurrentAndSetNewMode)); + }; + class TextTL: GVAR(RscText) { + idc = -1; + style = ST_CENTER; + text = "$STR_ACE_microdagr_menuMark"; + x = W_PART(0); + y = H_PART(7.5); + w = W_PART(14); + h = H_PART(1.2); + sizeEx = H_PART(1.2); + }; + class TextTR: TextTL { + text = "$STR_ACE_microdagr_menuWaypoints"; + x = W_PART(11); + y = H_PART(7.5); + }; + class TextBL: TextTL { + text = "$STR_ACE_microdagr_menuConnectTo"; + x = W_PART(0); + y = H_PART(16.5); + }; + class TextBR: TextTL { + text = "$STR_ACE_microdagr_menuSettings"; + x = W_PART(11); + y = H_PART(16.5); + }; + }; + }; + + // Mode: Mark + class ModeMark: RscControlsGroupNoScrollbars { + idc = IDC_MODEMARK; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + class Controls { + class InfoText: GVAR(RscText) { + idc = IDC_MODEMARK_HEADER; + x = W_PART(3); + y = H_PART(1); + w = W_PART(19); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + colorText[] = {0.95,0.95,0.95,1}; + }; + class RscEdit_1400: RscEdit { + idc = IDC_MODEMARK_CORDSEDIT; + x = W_PART(3); + y = H_PART(2.75); + w = W_PART(17); + h = H_PART(1.5); + size = H_PART(1.5); + sizeEx = H_PART(1.5); + colorText[] = {0.95,0.95,0.95,1}; + font = "EtelkaMonospacePro"; + }; + class DeleteButton: GVAR(RscActiveTextPicture) { + idc = -1; + text = QUOTE(PATHTOF(images\icon_deleteButton.paa)); + x = W_PART(20); + y = H_PART(2.75); + w = W_PART(2); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + onbuttonclick = QUOTE(['del'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad1: RscButton { + idc = -1; + text = "1"; + x = W_PART(3); + y = H_PART(5); + w = W_PART(6); + h = H_PART(3); + sizeEx = H_PART(3); + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.3,0.3,0.3,1}; + colorBackgroundDisabled[] = {0.3,0.3,0.3,1}; + colorBackgroundActive[] = {0.3,0.3,0.3,1}; + colorFocused[] = {0.3,0.3,0.3,1}; + onbuttonclick = QUOTE(['1'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad2: Keypad1 { + text = "2"; + x = W_PART(9.5); + onbuttonclick = QUOTE(['2'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad3: Keypad1 { + text = "3"; + x = W_PART(16); + onbuttonclick = QUOTE(['3'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad4: Keypad1 { + text = "4"; + x = W_PART(3); + y = H_PART(8.5); + onbuttonclick = QUOTE(['4'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad5: Keypad4 { + text = "5"; + x = W_PART(9.5); + onbuttonclick = QUOTE(['5'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad6: Keypad4 { + text = "6"; + x = W_PART(16); + onbuttonclick = QUOTE(['6'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad7: Keypad1 { + text = "7"; + x = W_PART(3); + y = H_PART(12); + onbuttonclick = QUOTE(['7'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad8: Keypad7 { + text = "8"; + x = W_PART(9.5); + onbuttonclick = QUOTE(['8'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad9: Keypad7 { + text = "9"; + x = W_PART(16); + onbuttonclick = QUOTE(['9'] call FUNC(appMarkKeypadEntry)); + }; + class Keypad0: Keypad1 { + text = "0"; + x = W_PART(3); + y = H_PART(15.5); + w = W_PART(12.5); + onbuttonclick = QUOTE(['0'] call FUNC(appMarkKeypadEntry)); + }; + class KeypadEnter: Keypad1 { + text = "OK"; + x = W_PART(16); + y = H_PART(15.5); + onbuttonclick = QUOTE(['ok'] call FUNC(appMarkKeypadEntry)); + }; + }; + }; + + // Mode: Waypoints + class ModeWaypoints: RscControlsGroupNoScrollbars { + idc = IDC_MODEWAYPOINTS; + x = X_PART(0); + y = Y_PART(2); + w = W_PART(25); + h = H_PART(19); + class Controls { + class ListOfWaypoints: RscListBox { + idc = IDC_MODEWAYPOINTS_LISTOFWAYPOINTS; + sizeEx = H_PART(1.5); + sizeEx2 = H_PART(1.5); + rowHeight = H_PART(1.75); + colorText[] = {0.75,0.75,0.75,1}; + colorSelect[] = {0.75,0.75,0.75,1}; + colorSelect2[] = {0.75,0.75,0.75,1}; + colorBackground[] = {0,0,0,1}; + colorSelectBackground[] = {0.3,0.3,0.3,1}; + colorSelectBackground2[] = {0.3,0.3,0.3,1}; + + itemSpacing = 0.001; + x = W_PART(0.2); + y = H_PART(0.5); + w = W_PART(24.6); + h = H_PART(16.5); + }; + + class ButtonSetWP: RscButton { + idc = -1; + text = "$STR_ACE_microdagr_waypointsSet"; + x = W_PART(1); + y = H_PART(17); + w = W_PART(7); + h = H_PART(1.5); + sizeEx = H_PART(1.5); + font = "EtelkaMonospacePro"; + colorText[] = {0.95,0.95,0.95,1}; + colorBackground[] = {0.3,0.3,0.3,1}; + colorBackgroundDisabled[] = {0.3,0.3,0.3,1}; + colorBackgroundActive[] = {0.3,0.3,0.3,1}; + colorFocused[] = {0.3,0.3,0.3,1}; + onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonSetWP)); + }; + class ButtonAdd: ButtonSetWP { + text = "$STR_ACE_microdagr_waypointsAdd"; + x = W_PART(9); + onbuttonclick = QUOTE([APP_MODE_MARK] call FUNC(saveCurrentAndSetNewMode)); + }; + class ButtonDelete: ButtonSetWP { + text = "$STR_ACE_microdagr_waypointsDelete"; + x = W_PART(17); + onbuttonclick = QUOTE(_this call FUNC(appWaypointsButtonDeleteWP)); + }; + }; + }; + + class SettingsMenu: RscListBox { + idc = IDC_MODESETTINGS; + x = X_PART(0.2); + y = Y_PART(2); + w = W_PART(24.6); + h = H_PART(19); + onLBDblClick = QUOTE(_this call FUNC(appSettingsLBClick)); + sizeEx = H_PART(1.5); + sizeEx2 = H_PART(1.5); + rowHeight = H_PART(1.75); + itemSpacing = 0.001; + colorText[] = {0.75,0.75,0.75,1}; + colorSelect[] = {0.75,0.75,0.75,1}; + colorSelect2[] = {0.75,0.75,0.75,1}; + colorBackground[] = {0.05,0.05,0.05,1}; + colorSelectBackground[] = {0.05,0.05,0.05,1}; + colorSelectBackground2[] = {0.05,0.05,0.05,1}; + }; + + class ButtonBG0: RscPicture { + idc = IDC_BUTTONBG0; + text = QUOTE(PATHTOF(images\button_pushedDown.paa)); + x = X_PART(0 * (25/3)); + y = Y_PART(21); + w = W_PART((25/3)); + h = H_PART(4); + }; + class ButtonBG1: ButtonBG0 { + idc = IDC_BUTTONBG1; + x = X_PART(1 * (25/3)); + }; + class ButtonBG2: ButtonBG0 { + idc = IDC_BUTTONBG2; + x = X_PART(2 * (25/3)); + }; + class ButtonIcon0: GVAR(RscActiveTextPicture) { + idc = -1; + text = QUOTE(PATHTOF(images\icon_info.paa)); + x = X_PART(0 * (25/3)); + y = Y_PART(21); + w = W_PART((25/3)); + h = H_PART(4); + onbuttonclick = QUOTE([APP_MODE_INFODISPLAY] call FUNC(saveCurrentAndSetNewMode)); + }; + class ButtonIcon1: ButtonIcon0 { + text = QUOTE(PATHTOF(images\icon_compass.paa)); + x = X_PART(1 * (25/3)); + onbuttonclick = QUOTE([APP_MODE_COMPASS] call FUNC(saveCurrentAndSetNewMode)); + }; + class ButtonIcon2: ButtonIcon0 { + text = QUOTE(PATHTOF(images\icon_map.paa)); + x = X_PART(2 * (25/3)); + onbuttonclick = QUOTE([APP_MODE_MAP] call FUNC(saveCurrentAndSetNewMode)); + }; + //At the end: The Big Shell overlay + class MicroDagrShell: RscPicture { + idc = IDC_MICRODAGRSHELL; + text = QUOTE(PATHTOF(images\microDAGR_shellPicture.paa)); + x = X_PART(-14.77); + y = Y_PART(-5.875); + w = W_PART(53.62); + h = H_PART(39.9); + }; +}; diff --git a/addons/microdagr/images/button_pushedDown.paa b/addons/microdagr/images/button_pushedDown.paa new file mode 100644 index 0000000000..fc519a3235 Binary files /dev/null and b/addons/microdagr/images/button_pushedDown.paa differ diff --git a/addons/microdagr/images/button_pushedUp.paa b/addons/microdagr/images/button_pushedUp.paa new file mode 100644 index 0000000000..5aa18986be Binary files /dev/null and b/addons/microdagr/images/button_pushedUp.paa differ diff --git a/addons/microdagr/images/compass_needle.paa b/addons/microdagr/images/compass_needle.paa new file mode 100644 index 0000000000..048518c8ad Binary files /dev/null and b/addons/microdagr/images/compass_needle.paa differ diff --git a/addons/microdagr/images/compass_starInverted.paa b/addons/microdagr/images/compass_starInverted.paa new file mode 100644 index 0000000000..cc911848e3 Binary files /dev/null and b/addons/microdagr/images/compass_starInverted.paa differ diff --git a/addons/microdagr/images/icon_compass.paa b/addons/microdagr/images/icon_compass.paa new file mode 100644 index 0000000000..777eaffde4 Binary files /dev/null and b/addons/microdagr/images/icon_compass.paa differ diff --git a/addons/microdagr/images/icon_deleteButton.paa b/addons/microdagr/images/icon_deleteButton.paa new file mode 100644 index 0000000000..a1af618ea7 Binary files /dev/null and b/addons/microdagr/images/icon_deleteButton.paa differ diff --git a/addons/microdagr/images/icon_info.paa b/addons/microdagr/images/icon_info.paa new file mode 100644 index 0000000000..5dc94a444c Binary files /dev/null and b/addons/microdagr/images/icon_info.paa differ diff --git a/addons/microdagr/images/icon_infoClock.paa b/addons/microdagr/images/icon_infoClock.paa new file mode 100644 index 0000000000..292cf29afb Binary files /dev/null and b/addons/microdagr/images/icon_infoClock.paa differ diff --git a/addons/microdagr/images/icon_infoCompass.paa b/addons/microdagr/images/icon_infoCompass.paa new file mode 100644 index 0000000000..8390a24509 Binary files /dev/null and b/addons/microdagr/images/icon_infoCompass.paa differ diff --git a/addons/microdagr/images/icon_map.paa b/addons/microdagr/images/icon_map.paa new file mode 100644 index 0000000000..52c3931c68 Binary files /dev/null and b/addons/microdagr/images/icon_map.paa differ diff --git a/addons/microdagr/images/icon_mapMinus.paa b/addons/microdagr/images/icon_mapMinus.paa new file mode 100644 index 0000000000..8c9be4fb7d Binary files /dev/null and b/addons/microdagr/images/icon_mapMinus.paa differ diff --git a/addons/microdagr/images/icon_mapPlus.paa b/addons/microdagr/images/icon_mapPlus.paa new file mode 100644 index 0000000000..5272bce099 Binary files /dev/null and b/addons/microdagr/images/icon_mapPlus.paa differ diff --git a/addons/microdagr/images/icon_mapTrack.paa b/addons/microdagr/images/icon_mapTrack.paa new file mode 100644 index 0000000000..f16ccbfe86 Binary files /dev/null and b/addons/microdagr/images/icon_mapTrack.paa differ diff --git a/addons/microdagr/images/icon_mapWaypoints.paa b/addons/microdagr/images/icon_mapWaypoints.paa new file mode 100644 index 0000000000..89f167f4c1 Binary files /dev/null and b/addons/microdagr/images/icon_mapWaypoints.paa differ diff --git a/addons/microdagr/images/icon_menuMark.paa b/addons/microdagr/images/icon_menuMark.paa new file mode 100644 index 0000000000..2c77aac04b Binary files /dev/null and b/addons/microdagr/images/icon_menuMark.paa differ diff --git a/addons/microdagr/images/icon_menuSettings.paa b/addons/microdagr/images/icon_menuSettings.paa new file mode 100644 index 0000000000..cfb340247e Binary files /dev/null and b/addons/microdagr/images/icon_menuSettings.paa differ diff --git a/addons/microdagr/images/icon_menuWaypoints.paa b/addons/microdagr/images/icon_menuWaypoints.paa new file mode 100644 index 0000000000..74ca3a59c1 Binary files /dev/null and b/addons/microdagr/images/icon_menuWaypoints.paa differ diff --git a/addons/microdagr/images/icon_self.paa b/addons/microdagr/images/icon_self.paa new file mode 100644 index 0000000000..79c41eaa69 Binary files /dev/null and b/addons/microdagr/images/icon_self.paa differ diff --git a/addons/microdagr/images/microDAGR_item.paa b/addons/microdagr/images/microDAGR_item.paa new file mode 100644 index 0000000000..ce6336c8a6 Binary files /dev/null and b/addons/microdagr/images/microDAGR_item.paa differ diff --git a/addons/microdagr/images/microDAGR_shellPicture.paa b/addons/microdagr/images/microDAGR_shellPicture.paa new file mode 100644 index 0000000000..93a14c3c11 Binary files /dev/null and b/addons/microdagr/images/microDAGR_shellPicture.paa differ diff --git a/addons/microdagr/images/microDAGR_topBar.paa b/addons/microdagr/images/microDAGR_topBar.paa new file mode 100644 index 0000000000..c4c28307f0 Binary files /dev/null and b/addons/microdagr/images/microDAGR_topBar.paa differ diff --git a/addons/microdagr/readme.md b/addons/microdagr/readme.md new file mode 100644 index 0000000000..f2dc25a656 --- /dev/null +++ b/addons/microdagr/readme.md @@ -0,0 +1,24 @@ +ace_microdagr +=============== + +Adds a microDAGR infentry GPS device. +Press home to open. Then home again to toggle an interactive version. Press CTRL+Home to close. +Info/Compass/Minimap modes are selectable by the bottom buttons. Tap the top bar to open the menu and access Mark/Waypoints/Connect To/Settings modes. +Tap the minimap button again to toggle map modes (if available). +Enter waypoints from the menu or double tapping on the minimap. +Can interface with the `ace_vector`. Hold Azimuth+Range and release (see page 14 of vector's manual) + +#### Items Added: + +`ACE_microDAGR` + +## For Mission Makers: + +#### Modules: +* MicroDAGR Map Fill - Controls the amount of map data avaialbe for the minimap. Can limit to just roads/topographical or disable entirely. + +## Maintainers + +The people responsible for merging changes to this component or answering potential questions. + +- [PabstMirror](https://github.com/PabstMirror) diff --git a/addons/microdagr/script_component.hpp b/addons/microdagr/script_component.hpp new file mode 100644 index 0000000000..72c5c125bc --- /dev/null +++ b/addons/microdagr/script_component.hpp @@ -0,0 +1,83 @@ +#define COMPONENT microdagr +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_MICRODAGR + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_MICRODAGR + #define DEBUG_SETTINGS DEBUG_SETTINGS_MICRODAGR +#endif + +#include "\z\ace\addons\main\script_macros.hpp" + +#define DUMMY_POS [-1,-1] +#define DUMMY_ZOOM 0.1 + +#define MAP_DETAIL_NONE 0 +#define MAP_DETAIL_TOPOROADS 1 +#define MAP_DETAIL_SAT 2 + +#define APP_MODE_NULL -1 +#define APP_MODE_INFODISPLAY 0 +#define APP_MODE_COMPASS 1 +#define APP_MODE_MAP 2 +#define APP_MODE_MENU 3 +#define APP_MODE_MARK 4 +#define APP_MODE_WAYPOINTS 5 +#define APP_MODE_SETUP 6 + +#define DISPLAY_MODE_CLOSED 0 +#define DISPLAY_MODE_DISPLAY 1 +#define DISPLAY_MODE_DIALOG 2 +#define DISPLAY_MODE_HIDDEN 3 + +#define IDC_RANGEFINDERCONNECTEDICON 77700 +#define IDC_CLOCKTEXT 77701 +#define IDC_MAPPLAIN 77702 +#define IDC_MAPDETAILS 77703 +#define IDC_MAPCOMPASS 77704 + +#define IDC_MODEDISPLAY 144000 +#define IDC_MODEDISPLAY_UTMGRID 144001 +#define IDC_MODEDISPLAY_EASTING 144002 +#define IDC_MODEDISPLAY_NORTHING 144003 +#define IDC_MODEDISPLAY_ELEVATIONNUM 144004 +#define IDC_MODEDISPLAY_HEADINGNUM 144005 +#define IDC_MODEDISPLAY_SPEEDNUM 144006 +#define IDC_MODEDISPLAY_MODEPOSTIMECG 144010 +#define IDC_MODEDISPLAY_TIMEDISPLAYGREEN1 144011 +#define IDC_MODEDISPLAY_TIMEDISPLAYGREEN2 144012 +#define IDC_MODEDISPLAY_MODEPOSTARGETCG 144020 +#define IDC_MODEDISPLAY_TARGETICON 144021 +#define IDC_MODEDISPLAY_TRACKNUM 144022 +#define IDC_MODEDISPLAY_TARGETRANGENUM 144023 +#define IDC_MODEDISPLAY_TARGETELEVATIONNUM 144024 +#define IDC_MODEDISPLAY_TARGETNAME 144025 + +#define IDC_MODECOMPASS 144100 +#define IDC_MODECOMPASS_HEADING 144110 +#define IDC_MODECOMPASS_SPEED 144111 +#define IDC_MODECOMPASS_BEARING 144112 +#define IDC_MODECOMPASS_RANGE 144113 +#define IDC_MODECOMPASS_TARGET 144114 + +#define IDC_MODEMAP_MAPTRACKBUTTON 144211 +#define IDC_MODEMAP_MAPZOOMIN 144212 +#define IDC_MODEMAP_MAPZOOMOUT 144213 + +#define IDC_MODEMENU 144300 + +#define IDC_MODEMARK 144400 +#define IDC_MODEMARK_HEADER 144411 +#define IDC_MODEMARK_CORDSEDIT 144412 + +#define IDC_MODEWAYPOINTS 144500 +#define IDC_MODEWAYPOINTS_LISTOFWAYPOINTS 144501 + +#define IDC_MODESETTINGS 144600 + +#define IDC_BUTTONBG0 77710 +#define IDC_BUTTONBG1 77711 +#define IDC_BUTTONBG2 77712 +#define IDC_MICRODAGRSHELL 77713 diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml new file mode 100644 index 0000000000..772a7a172f --- /dev/null +++ b/addons/microdagr/stringtable.xml @@ -0,0 +1,109 @@ + + + + + + MicroDAGR GPS + + + MicroDAGR advanced GPS receiver + + + Angular Unit: + + + Mils + + + Show Waypoints On Map: + + + Degrees + + + On + Zapnuto + Oui + Ein + + Wł. + Ativar + Вкл. + + + + Off + Vypnuto + Non + Aus + No + Wył. + Desativar + Выкл. + No + + + Enter Grid Cords: + + + Name of [%1] + + + MGRS-New + + + WGD + + + Range: + Reichweite: + + + Compass Direction + + + Mark + + + Waypoints + Wegpunkte + + + Connect To + + + Settings + Einstellungen + Configuración + + + SetWP + + + Add + + + Delete + Smazat + Supprimer + Löschen + Elimina + Usuń + Excluir + Удалить + Suprimir + + + Toggle MicroDAGR Display Mode + + + Show MicoDAGR + + + Configure MicroDAGR + + + Close MicroDAGR + + + \ No newline at end of file diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 47a176b1dd..ab3cd03391 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by commy2 and CAA-Picard +// by commy2 and esteldunedain #include "script_component.hpp" [] call FUNC(initIsSpeaking); diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp index 25992c0174..42c970b1e9 100644 --- a/addons/nametags/config.cpp +++ b/addons/nametags/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = { "ace_main", "ace_common", "ace_interaction" }; - author[] = { "commy2", "CAA-Picard" }; + author[] = { "commy2", "esteldunedain" }; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; @@ -46,7 +46,7 @@ class ACE_Settings { typeName = "BOOL"; isClientSetable = 1; displayName = "$STR_ACE_NameTags_ShowNamesForAI"; - }; + }; class GVAR(showCursorTagForVehicles) { value = 0; typeName = "BOOL"; diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index 8ccbfc9b4a..f0a9bb89d4 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2, CAA-Picard + * Author: commy2, esteldunedain * * Draw the nametag and rank icon. * diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index a998e5d8a3..6050b99c67 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Initializes the name tags module. * diff --git a/addons/nightvision/functions/fnc_updatePPEffects.sqf b/addons/nightvision/functions/fnc_updatePPEffects.sqf index 3edfe28e74..a90186fe10 100644 --- a/addons/nightvision/functions/fnc_updatePPEffects.sqf +++ b/addons/nightvision/functions/fnc_updatePPEffects.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2, PabstMirror and CAA-Picard + * Author: commy2, PabstMirror and esteldunedain * Update the ppEffects everytime something changes * * Arguments: diff --git a/addons/overheating/XEH_postInit.sqf b/addons/overheating/XEH_postInit.sqf index 4755b9c869..2281a1eeac 100644 --- a/addons/overheating/XEH_postInit.sqf +++ b/addons/overheating/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/overheating/config.cpp b/addons/overheating/config.cpp index b72660ce72..1d932d1f51 100644 --- a/addons/overheating/config.cpp +++ b/addons/overheating/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {"ACE_SpareBarrel"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common", "ace_interaction"}; - author[] = {"commy2", "KoffeinFlummi", "CAA-Picard"}; + author[] = {"commy2", "KoffeinFlummi", "esteldunedain"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf index 02747b0129..6c15068815 100644 --- a/addons/overheating/functions/fnc_checkTemperature.sqf +++ b/addons/overheating/functions/fnc_checkTemperature.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: Commy2 and esteldunedain * Make the player check the temperature of his weapon * * Arguments: diff --git a/addons/overheating/functions/fnc_cooldown.sqf b/addons/overheating/functions/fnc_cooldown.sqf index 718c77474f..f5a7f68c36 100644 --- a/addons/overheating/functions/fnc_cooldown.sqf +++ b/addons/overheating/functions/fnc_cooldown.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Calculate cooling down of the weapon. * * Argument: diff --git a/addons/overheating/functions/fnc_displayTemperature.sqf b/addons/overheating/functions/fnc_displayTemperature.sqf index 9af817f8fd..5c17794cde 100644 --- a/addons/overheating/functions/fnc_displayTemperature.sqf +++ b/addons/overheating/functions/fnc_displayTemperature.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: Commy2 and esteldunedain * Displays the weapon temperature * * Arguments: diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf index 9f26d51869..d1f7a737d9 100644 --- a/addons/overheating/functions/fnc_overheat.sqf +++ b/addons/overheating/functions/fnc_overheat.sqf @@ -1,5 +1,5 @@ /* - * Author: Commy2 and CAA-Picard + * Author: Commy2 and esteldunedain * Handle weapon fire, heat up the weapon * * Argument: diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index bea2c61ca2..5d2c9595df 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -117,16 +117,16 @@ Проверить температуру оружия - Check temperature - Temperatur prüfen - Verificar temperatura - Sprawdź temperaturę - Vérifier la température - Hőmérséklet ellenőrzése - Zjistit teplotu - Conferir temperatura - Controlla la temperatura - Проверить температуру + Check<br/>temperature + Temperatur<br/>prüfen + Verificar<br/>temperatura + Sprawdź<br/>temperaturę + Vérifier la<br/>température + Hőmérséklet<br/>ellenőrzése + Zjistit<br/>teplotu + Conferir<br/>temperatura + Controlla la<br/>temperatura + Проверить<br/>температуру Checking temperature ... diff --git a/addons/overpressure/config.cpp b/addons/overpressure/config.cpp index 4f866beedc..0524f6e4c9 100644 --- a/addons/overpressure/config.cpp +++ b/addons/overpressure/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi","CAA-Picard"}; + author[] = {"commy2","KoffeinFlummi","esteldunedain"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index f42ffd23ed..d63f3b2359 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * * Handle fire of local launchers * diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index cc4918275d..4438e4a859 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * * Handle fire of local vehicle weapons creating overpressure zones * diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 6ffa60f7af..4fe380fbaf 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * * Calculate the distance to the first intersection of a line * diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index c19fed1c04..2fbbcf9aa8 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * * Calculate and apply backblast damage to potentially affected local units * diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index b3ca31cd5d..faefbe449d 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/reload/config.cpp b/addons/reload/config.cpp index 611cf7d6aa..372292de89 100644 --- a/addons/reload/config.cpp +++ b/addons/reload/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_interaction"}; - author[] = {"commy2","KoffeinFlummi","CAA-Picard"}; + author[] = {"commy2","KoffeinFlummi","esteldunedain"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/reload/functions/fnc_canCheckAmmo.sqf b/addons/reload/functions/fnc_canCheckAmmo.sqf index 2cabe6edc2..63c302bf07 100644 --- a/addons/reload/functions/fnc_canCheckAmmo.sqf +++ b/addons/reload/functions/fnc_canCheckAmmo.sqf @@ -15,7 +15,17 @@ EXPLODE_2_PVT(_this,_player,_target); // Return true for static weapons if they have been fired once, @todo 1.40 this work-around doesn't work anymore if (_target isKindOf "StaticWeapon") exitWith { - (currentMagazine _target) != "" + if (currentMagazine _target != "") exitWith {true}; + + private ["_magazines","_found"]; + _magazines = magazinesAmmoFull _target; + _found = false; + { + if (_x select 2) exitWith { + _found = true; + }; + } forEach _magazines; + _found }; // Return false for all other vehicles diff --git a/addons/reload/functions/fnc_canLinkBelt.sqf b/addons/reload/functions/fnc_canLinkBelt.sqf index b06a69fafa..4461b4f3e3 100644 --- a/addons/reload/functions/fnc_canLinkBelt.sqf +++ b/addons/reload/functions/fnc_canLinkBelt.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Check if the target has an MG equiped with belt system that the player can link * * Argument: diff --git a/addons/reload/functions/fnc_checkAmmo.sqf b/addons/reload/functions/fnc_checkAmmo.sqf index 2ab656fe47..a1001890cd 100644 --- a/addons/reload/functions/fnc_checkAmmo.sqf +++ b/addons/reload/functions/fnc_checkAmmo.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * Count the ammo of the currently loaded magazine or count rifle grenades. Play animation and display message. * * Argument: diff --git a/addons/reload/functions/fnc_displayAmmo.sqf b/addons/reload/functions/fnc_displayAmmo.sqf index 07e1a4593a..77578caa68 100644 --- a/addons/reload/functions/fnc_displayAmmo.sqf +++ b/addons/reload/functions/fnc_displayAmmo.sqf @@ -1,5 +1,5 @@ /* - * Author: commy2 and CAA-Picard + * Author: commy2 and esteldunedain * Display the ammo of the currently loaded magazine of the target or count rifle grenades. * * Argument: @@ -28,8 +28,20 @@ if (_target isKindOf "StaticWeapon") then { _muzzle = _weapon; }; }; + + if (_magazine == "") then { + // Try to get magazine using magazinesAmmoFull + private ["_magazines"]; + _magazines = magazinesAmmoFull _target; + { + if (_x select 2) exitWith { + _magazine = _x select 0; + }; + } forEach _magazines; + }; }; +if (_magazine == "") exitWith {}; if (_weapon == "") exitWith {}; if (typeName _muzzle != "STRING") then {_muzzle = _weapon}; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index d739cd8c56..412fcabb97 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * Start linking the belt * * Argument: @@ -60,7 +60,7 @@ _onFailure = { _player addMagazine _magazine; }; -[_player, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation); +_player playActionNow "PutDown"; // Remove the magazine with maximum remaining ammo [_player, _magazineType, _maxAmmo] call EFUNC(common,removeSpecificMagazine); diff --git a/addons/respawn/functions/fnc_module.sqf b/addons/respawn/functions/fnc_module.sqf index 5ba52fd40e..6d03c1eda3 100644 --- a/addons/respawn/functions/fnc_module.sqf +++ b/addons/respawn/functions/fnc_module.sqf @@ -2,7 +2,7 @@ Name: ACE_Respawn_fnc_module Author(s): - KoffeinFlummi, bux578, CAA-Picard, commy2 + KoffeinFlummi, bux578, esteldunedain, commy2 Description: initializes the respawn module diff --git a/addons/resting/XEH_postInit.sqf b/addons/resting/XEH_postInit.sqf index ec80100523..bd78ae0044 100644 --- a/addons/resting/XEH_postInit.sqf +++ b/addons/resting/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/resting/config.cpp b/addons/resting/config.cpp index 599c15d318..f1cc20c6e2 100644 --- a/addons/resting/config.cpp +++ b/addons/resting/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"KoffeinFlummi", "TaoSensai", "CAA-Picard"}; + author[] = {"KoffeinFlummi", "TaoSensai", "esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; }; diff --git a/addons/resting/functions/fnc_getIntersection.sqf b/addons/resting/functions/fnc_getIntersection.sqf index cadddff1e1..395b83f0a4 100644 --- a/addons/resting/functions/fnc_getIntersection.sqf +++ b/addons/resting/functions/fnc_getIntersection.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi, edited by commy2 and CAA-Picard + * Author: KoffeinFlummi, edited by commy2 and esteldunedain * * Prepares intersects * diff --git a/addons/resting/functions/fnc_pfhCheckRest.sqf b/addons/resting/functions/fnc_pfhCheckRest.sqf index ad0f73ad06..0f6fea300b 100644 --- a/addons/resting/functions/fnc_pfhCheckRest.sqf +++ b/addons/resting/functions/fnc_pfhCheckRest.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi, edited by commy2 and CAA-Picard + * Author: KoffeinFlummi, edited by commy2 and esteldunedain * * PFH that check for player moving away, changing weapon, etc * and unrests the weapon if necessary diff --git a/addons/resting/functions/fnc_restWeapon.sqf b/addons/resting/functions/fnc_restWeapon.sqf index 793ef4fff3..75d16a62be 100644 --- a/addons/resting/functions/fnc_restWeapon.sqf +++ b/addons/resting/functions/fnc_restWeapon.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi, edited by commy2 and CAA-Picard + * Author: KoffeinFlummi, edited by commy2 and esteldunedain * * Rests the player's weapon if possible. * diff --git a/addons/resting/functions/fnc_unRestWeapon.sqf b/addons/resting/functions/fnc_unRestWeapon.sqf index 2cf885676f..ef5a52b824 100644 --- a/addons/resting/functions/fnc_unRestWeapon.sqf +++ b/addons/resting/functions/fnc_unRestWeapon.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi, edited by commy2 and CAA-Picard + * Author: KoffeinFlummi, edited by commy2 and esteldunedain * * Un Rests the player's weapon * diff --git a/addons/safemode/XEH_postInit.sqf b/addons/safemode/XEH_postInit.sqf index 6754038bd1..ff6a76d834 100644 --- a/addons/safemode/XEH_postInit.sqf +++ b/addons/safemode/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" //["Soldier", {_player = ACE_player; if (currentWeapon _player in (_player getVariable [QGVAR(safedWeapons), []])) then {[false] call FUNC(setSafeModeVisual)}] call EFUNC(common,addInfoDisplayEventHandler); diff --git a/addons/scopes/XEH_postInit.sqf b/addons/scopes/XEH_postInit.sqf index 6d4485e1b0..9a1b0e8ef3 100644 --- a/addons/scopes/XEH_postInit.sqf +++ b/addons/scopes/XEH_postInit.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and CAA-Picard + * Author: KoffeinFlummi and esteldunedain * * Watches for scope changes. * Defines key bindings diff --git a/addons/scopes/config.cpp b/addons/scopes/config.cpp index 50ff6528d0..d94e066767 100644 --- a/addons/scopes/config.cpp +++ b/addons/scopes/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = { "ace_common" }; - author[] = {"KoffeinFlummi", "CAA-Picard"}; + author[] = {"KoffeinFlummi", "esteldunedain"}; authorUrl = "https://github.com/KoffeinFlummi"; VERSION_CONFIG; }; diff --git a/addons/scopes/functions/fnc_firedEH.sqf b/addons/scopes/functions/fnc_firedEH.sqf index 371d1e5f33..8185e00ea0 100644 --- a/addons/scopes/functions/fnc_firedEH.sqf +++ b/addons/scopes/functions/fnc_firedEH.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and CAA-Picard + * Author: KoffeinFlummi and esteldunedain * Adjusts the flight path of the bullet according to the zeroing * * Argument: diff --git a/addons/scopes/functions/fnc_showZeroing.sqf b/addons/scopes/functions/fnc_showZeroing.sqf index 836f69b2df..bd1a04f326 100644 --- a/addons/scopes/functions/fnc_showZeroing.sqf +++ b/addons/scopes/functions/fnc_showZeroing.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi and CAA-Picard + * Author: KoffeinFlummi and esteldunedain * Display the adjustment knobs, update their value and fade them out later * * Arguments: diff --git a/addons/vector/XEH_preInit.sqf b/addons/vector/XEH_preInit.sqf index a0a20d3315..21ca573118 100644 --- a/addons/vector/XEH_preInit.sqf +++ b/addons/vector/XEH_preInit.sqf @@ -6,6 +6,7 @@ PREP(clearDisplay); PREP(convertToTexturesDegree); PREP(convertToTexturesDistance); PREP(convertToTexturesFOS); +PREP(dataTransfer); PREP(showCenter); PREP(showP1); PREP(onKeyDown); diff --git a/addons/vector/functions/fnc_dataTransfer.sqf b/addons/vector/functions/fnc_dataTransfer.sqf new file mode 100644 index 0000000000..25403b82ee --- /dev/null +++ b/addons/vector/functions/fnc_dataTransfer.sqf @@ -0,0 +1,25 @@ +/* + * Author: PabstMirror + * Data transfer over a connected cable. Based on page 14 of pdf. + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_vector_fnc_dataTransfer + * + * Public: No + */ +#include "script_component.hpp" + +private ["_distance", "_direction", "_azimuth", "_inclination"]; + +_distance = call FUNC(getDistance); +_direction = call FUNC(getDirection); +_azimuth = _direction select 0; +_inclination = _direction select 1; +//Send Data to connected GPS +["RangerfinderData", [_distance, _azimuth, _inclination]] call EFUNC(common,localEvent); \ No newline at end of file diff --git a/addons/vector/functions/fnc_onKeyHold.sqf b/addons/vector/functions/fnc_onKeyHold.sqf index 57e76d57ea..aca31d95a5 100644 --- a/addons/vector/functions/fnc_onKeyHold.sqf +++ b/addons/vector/functions/fnc_onKeyHold.sqf @@ -74,6 +74,7 @@ switch (_this select 0) do { if (_isReady) then { call FUNC(showDistance); [false] call FUNC(showCenter); + [] call FUNC(dataTransfer); }; [_this select 1] call CBA_fnc_removePerFrameHandler; diff --git a/addons/vehiclelock/script_component.hpp b/addons/vehiclelock/script_component.hpp index 1700ce4b79..43d49a8028 100644 --- a/addons/vehiclelock/script_component.hpp +++ b/addons/vehiclelock/script_component.hpp @@ -1,6 +1,6 @@ #define COMPONENT vehiclelock -#define DEBUG_MODE_FULL +// #define DEBUG_MODE_FULL #include "\z\ace\addons\main\script_mod.hpp" diff --git a/addons/vehicles/XEH_postInit.sqf b/addons/vehicles/XEH_postInit.sqf index 7b1a0c575e..8f714105b6 100644 --- a/addons/vehicles/XEH_postInit.sqf +++ b/addons/vehicles/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index 14c4f1aa51..91165f7be5 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -1,4 +1,4 @@ -// by CAA-Picard +// by esteldunedain #include "script_component.hpp" if !(hasInterface) exitWith {}; diff --git a/addons/weaponselect/config.cpp b/addons/weaponselect/config.cpp index 9bf9c7c39c..80be936e98 100644 --- a/addons/weaponselect/config.cpp +++ b/addons/weaponselect/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"commy2","KoffeinFlummi","CAA-Picard"}; + author[] = {"commy2","KoffeinFlummi","esteldunedain"}; authorUrl = "https://github.com/commy2/"; VERSION_CONFIG; }; diff --git a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf index 4803978902..f73f2444c4 100644 --- a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Count how many grenade magazines the unit has on the uniform and vest. * diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 4605bd3861..1922ffdbb9 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Display a grenade type and quantity. * diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf index 72977e6ad6..31999ad0b9 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard, commy2 + * Author: esteldunedain, commy2 * * Cycle through all grenades. * diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf index 6eb1714b51..408cf0e608 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard, commy2 + * Author: esteldunedain, commy2 * * Cycle through frags. * diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf index 32c0e43666..c732010a2b 100644 --- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf +++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard, commy2 + * Author: esteldunedain, commy2 * * Cycle through non explosive grenades. * diff --git a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf index 67ab15e1a7..ced1fa87b3 100644 --- a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf @@ -1,5 +1,5 @@ /* - * Author: CAA-Picard + * Author: esteldunedain * * Select the next grenade muzzle to throw. * @@ -104,18 +104,18 @@ _throwMuzzleNames = getArray (configfile >> "CfgWeapons" >> "Throw" >> "muzzles" // Readd magazines { for [{_i = 0}, {_i < (_x select 1)}, {_i = _i + 1}] do { - _unit addItemToUniform (_x select 0); + _unit addItemToUniform (_x select 0); }; } forEach _uniformMagsToRemove; { for [{_i = 0}, {_i < (_x select 1)}, {_i = _i + 1}] do { - _unit addItemToVest (_x select 0); + _unit addItemToVest (_x select 0); }; } forEach _vestMagsToRemove; { for [{_i = 0}, {_i < (_x select 1)}, {_i = _i + 1}] do { - _unit addItemToBackpack (_x select 0); + _unit addItemToBackpack (_x select 0); }; } forEach _backPackMagsToRemove; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index f59267690f..3f2bb4e15a 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -6,7 +6,7 @@ class CfgPatches { weapons[] = {};// "ACE_Kestrel4500" }; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"q1184", "Rocko", "CAA-Picard"}; + author[] = {"q1184", "Rocko", "esteldunedain"}; VERSION_CONFIG; }; }; diff --git a/addons/weather/functions/fnc_getMapData.sqf b/addons/weather/functions/fnc_getMapData.sqf index c610b07f59..ebd37053e3 100644 --- a/addons/weather/functions/fnc_getMapData.sqf +++ b/addons/weather/functions/fnc_getMapData.sqf @@ -1,5 +1,5 @@ /* - * Author: Ruthberg, CAA-Picard + * Author: Ruthberg, esteldunedain * * Get the weather data for the current map * diff --git a/extras/assets/icons/icon_microDAGR.png b/extras/assets/icons/icon_microDAGR.png new file mode 100644 index 0000000000..47bb75a146 Binary files /dev/null and b/extras/assets/icons/icon_microDAGR.png differ diff --git a/extras/assets/selector/selector0.png b/extras/assets/selector/selector0.png new file mode 100644 index 0000000000..f744338e2a Binary files /dev/null and b/extras/assets/selector/selector0.png differ diff --git a/extras/assets/selector/selector1.png b/extras/assets/selector/selector1.png new file mode 100644 index 0000000000..f9b6dd1938 Binary files /dev/null and b/extras/assets/selector/selector1.png differ diff --git a/extras/assets/selector/selector10.png b/extras/assets/selector/selector10.png new file mode 100644 index 0000000000..5cc738dc4a Binary files /dev/null and b/extras/assets/selector/selector10.png differ diff --git a/extras/assets/selector/selector11.png b/extras/assets/selector/selector11.png new file mode 100644 index 0000000000..8fadc4ccee Binary files /dev/null and b/extras/assets/selector/selector11.png differ diff --git a/extras/assets/selector/selector12.png b/extras/assets/selector/selector12.png new file mode 100644 index 0000000000..3267afcd53 Binary files /dev/null and b/extras/assets/selector/selector12.png differ diff --git a/extras/assets/selector/selector13.png b/extras/assets/selector/selector13.png new file mode 100644 index 0000000000..37db70e41a Binary files /dev/null and b/extras/assets/selector/selector13.png differ diff --git a/extras/assets/selector/selector14.png b/extras/assets/selector/selector14.png new file mode 100644 index 0000000000..9521b05c4c Binary files /dev/null and b/extras/assets/selector/selector14.png differ diff --git a/extras/assets/selector/selector2.png b/extras/assets/selector/selector2.png new file mode 100644 index 0000000000..313c788f03 Binary files /dev/null and b/extras/assets/selector/selector2.png differ diff --git a/extras/assets/selector/selector3.png b/extras/assets/selector/selector3.png new file mode 100644 index 0000000000..8268eca772 Binary files /dev/null and b/extras/assets/selector/selector3.png differ diff --git a/extras/assets/selector/selector4.png b/extras/assets/selector/selector4.png new file mode 100644 index 0000000000..5aadafc90e Binary files /dev/null and b/extras/assets/selector/selector4.png differ diff --git a/extras/assets/selector/selector5.png b/extras/assets/selector/selector5.png new file mode 100644 index 0000000000..a1e98e9489 Binary files /dev/null and b/extras/assets/selector/selector5.png differ diff --git a/extras/assets/selector/selector6.png b/extras/assets/selector/selector6.png new file mode 100644 index 0000000000..a1a8e6abcf Binary files /dev/null and b/extras/assets/selector/selector6.png differ diff --git a/extras/assets/selector/selector7.png b/extras/assets/selector/selector7.png new file mode 100644 index 0000000000..2735c5b95a Binary files /dev/null and b/extras/assets/selector/selector7.png differ diff --git a/extras/assets/selector/selector8.png b/extras/assets/selector/selector8.png new file mode 100644 index 0000000000..1ac4b51426 Binary files /dev/null and b/extras/assets/selector/selector8.png differ diff --git a/extras/assets/selector/selector9.png b/extras/assets/selector/selector9.png new file mode 100644 index 0000000000..1d7ed98ce7 Binary files /dev/null and b/extras/assets/selector/selector9.png differ