diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 53e22f1aa8..10028e2ab0 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/stringtable.xml b/addons/medical/stringtable.xml index 1ff24420d7..f3d4e969a5 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,788 +1,857 @@ -<?xml version="1.0"encoding="UTF-8"?> +<?xml version="1.0" encoding="utf-8"?> +<!-- Edited with tabler - 2015-03-23 --> <Project name="ACE"> - <Package name="Medical"> - <Container name="Basic"> - <Key ID="STR_ACE_Medical_Inject_Morphine"> - <English>Inject Morphine</English> - <German>Morphin injizieren</German> - <Spanish>Inyectar Morfina</Spanish> - <Polish>Wstrzyknij morfinę</Polish> - <Czech>Aplikovat Morfin</Czech> - <Russian>Ввести морфин</Russian> - <French>Morphine</French> - <Hungarian>Morfium</Hungarian> - <Portuguese>Injetar Morfina</Portuguese> - <Italian>Inietta Morfina</Italian> - </Key> - <Key ID="STR_ACE_Medical_Inject_Epinephrine"> - <English>Inject Epinephrine</English> - <German>Epinephrine injizieren</German> - <Spanish>Inyectar Epinefrina</Spanish> - <Polish>Wtrzyknij adrenalinę</Polish> - <Czech>Aplikovat Adrenalin</Czech> - <Russian>Ввести андреналил</Russian> - <French>Adrénaline</French> - <Hungarian>Adrenalin</Hungarian> - <Portuguese>Injetar Epinefrina</Portuguese> - <Italian>Inietta Epinefrina</Italian> - </Key> - <Key ID="STR_ACE_Medical_Transfuse_Blood"> - <English>Transfuse Blood</English> - <German>Bluttransfusion</German> - <Spanish>Transfundir sangre</Spanish> - <Polish>Przetocz krew</Polish> - <Czech>Transfúze krve</Czech> - <Russian>Перелить кровь</Russian> - <French>Transfusion</French> - <Hungarian>Infúzió</Hungarian> - <Portuguese>Transfundir Sangue</Portuguese> - <Italian>Effettua Trasfusione</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage"> - <English>Bandage</English> - <German>Verbinden</German> - <Spanish>Venda</Spanish> - <Polish>Bandaż</Polish> - <Czech>Obvázat</Czech> - <French>Pansement</French> - <Italian>Benda</Italian> - <Hungarian>Kötözés</Hungarian> - <Portuguese>Atadura</Portuguese> - <Russian>Перевязать</Russian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitHead"> - <English>Bandage Head</English> - <German>Kopf verbinden</German> - <Spanish>Vendar la cabeza</Spanish> - <Polish>Bandażuj głowę</Polish> - <Czech>Obvázat hlavu</Czech> - <Russian>Перевязать голову</Russian> - <French>Pansement Tête</French> - <Hungarian>Fej kötözése</Hungarian> - <Portuguese>Atar Cabeça</Portuguese> - <Italian>Benda la testa</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitBody"> - <English>Bandage Torso</English> - <German>Torso verbinden</German> - <Spanish>Vendar el torso</Spanish> - <Polish>Bandażuj tors</Polish> - <Czech>Obvázat hruď</Czech> - <Russian>Перевязать торс</Russian> - <French>Pansement Torse</French> - <Hungarian>Felsőtest kötözése</Hungarian> - <Portuguese>Atar Tronco</Portuguese> - <Italian>Benda il torso</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitLeftArm"> - <English>Bandage Left Arm</English> - <German>Arm links verbinden</German> - <Spanish>Vendar el brazo izquierdo</Spanish> - <Polish>Bandażuj lewe ramię</Polish> - <Czech>Obvázat levou ruku</Czech> - <Russian>Перевязать левую руку</Russian> - <French>Pansement Bras Gauche</French> - <Hungarian>Bal kar kötözése</Hungarian> - <Portuguese>Atar Braço Esquerdo</Portuguese> - <Italian>Benda il braccio sinistro</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitRightArm"> - <English>Bandage Right Arm</English> - <German>Arm rechts verbinden</German> - <Spanish>Vendar el brazo derecho</Spanish> - <Polish>Bandażuj prawe ramię</Polish> - <Czech>Obvázat pravou ruku</Czech> - <Russian>Перевязать правую руку</Russian> - <French>Pansement Bras Droit</French> - <Hungarian>Jobb kar kötözése</Hungarian> - <Portuguese>Atar Braço Direito</Portuguese> - <Italian>Benda il braccio destro</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitLeftLeg"> - <English>Bandage Left Leg</English> - <German>Bein links verbinden</German> - <Spanish>Vendar la pierna izquierda</Spanish> - <Polish>Bandażuj lewą nogę</Polish> - <Czech>Obvázat levou nohu</Czech> - <Russian>Перевязать левую ногу</Russian> - <French>Pansement Jambe Gauche</French> - <Hungarian>Bal láb kötözése</Hungarian> - <Portuguese>Atar Perna Esquerda</Portuguese> - <Italian>Benda la gamba sinistra</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandage_HitRightLeg"> - <English>Bandage Right Leg</English> - <German>Bein rechts verbinden</German> - <Spanish>Vendar la pierna derecha</Spanish> - <Polish>Bandażuj prawą nogę</Polish> - <Czech>Obvázat pravou nohu</Czech> - <Russian>Перевязать правую ногу</Russian> - <French>Pansement Jambe Droite</French> - <Hungarian>Jobb láb kötözése</Hungarian> - <Portuguese>Atar Perna Direita</Portuguese> - <Italian>Benda la gamba destra</Italian> - </Key> - <Key ID="STR_ACE_Medical_Injecting_Morphine"> - <English>Injecting Morphine ...</English> - <German>Morphin injizieren ...</German> - <Spanish>Inyectando Morfina ...</Spanish> - <Polish>Wstrzykiwanie morfiny ...</Polish> - <Czech>Aplikuju Morfin ...</Czech> - <Russian>Введение морфина...</Russian> - <French>Injection de Morphine...</French> - <Hungarian>Morfium beadása...</Hungarian> - <Portuguese>Injetando Morfina ...</Portuguese> - <Italian>Inietto la morfina ...</Italian> - </Key> - <Key ID="STR_ACE_Medical_Injecting_Epinephrine"> - <English>Injecting Epinephrine ...</English> - <German>Epinephrine injizieren ...</German> - <Spanish>Inyectando Epinefrina ...</Spanish> - <Polish>Wstrzykiwanie adrenaliny ...</Polish> - <Czech>Aplikuju Adrenalin ...</Czech> - <Russian>Введение андреналина</Russian> - <French>Injection d'Adrénaline ...</French> - <Hungarian>Adrenalin beadása...</Hungarian> - <Portuguese>Injetando Epinefrina ...</Portuguese> - <Italian>Inietto l'epinefrina ...</Italian> - </Key> - <Key ID="STR_ACE_Medical_Transfusing_Blood"> - <English>Transfusing Blood ...</English> - <German>Bluttransfusion ...</German> - <Spanish>Realizando transfusión ...</Spanish> - <Polish>Przetaczanie krwi ...</Polish> - <Czech>Probíhá transfúze krve ...</Czech> - <Russian>Переливание крови...</Russian> - <French>Transfusion Sanguine ...</French> - <Hungarian>Infúzió...</Hungarian> - <Portuguese>Transfundindo Sangue ...</Portuguese> - <Italian>Effettuo la trasfusione ...</Italian> - </Key> - <Key ID="STR_ACE_Medical_Bandaging"> - <English>Bandaging ...</English> - <German>Verbinden ...</German> - <Spanish>Vendando ...</Spanish> - <Polish>Bandażowanie ...</Polish> - <Czech>Obvazuji ...</Czech> - <French>Pansement ...</French> - <Italian>Sto applicando la benda ...</Italian> - <Hungarian>Bekötözés...</Hungarian> - <Portuguese>Atando ...</Portuguese> - <Russian>Перевязывание....</Russian> - </Key> - </Container> - <Container name="UI"> - <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_MINOR"> - <English>Minor</English> - </Key> - <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DELAYED"> - <English>Delayed</English> - </Key> - <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_IMMEDIATE"> - <English>Immediate</English> - </Key> - <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DECEASED"> - <English>Deceased</English> - </Key> - <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_NONE"> - <English>None</English> - </Key> - <Key ID="STR_ACE_MEDICAL_NORMAL_BREATHING"> - <English>Normal breathing</English> - <Russian>Дыхание в норме</Russian> - <Spanish>Respiración normal</Spanish> - <French>Respiration Normale</French> - <Polish>Normalny oddech</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_NO_BREATHING"> - <English>No breathing</English> - <Russian>Дыхания нет</Russian> - <Spanish>No respira</Spanish> - <French>Apnée</French> - <Polish>Brak oddechu</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_DIFFICULT_BREATHING"> - <English>Difficult breathing</English> - <Russian>Дыхание затруднено</Russian> - <Spanish>Dificultad para respirar</Spanish> - <French>Difficultée Respiratoire</French> - <Polish>Trudności z oddychaniem</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_ALMOST_NO_BREATHING"> - <English>Almost no breathing</English> - <Russian>Дыхания почти нет</Russian> - <Spanish>Casi sin respirar</Spanish> - <French>Respiration Faible</French> - <Polish>Prawie brak oddechu</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_STATUS_BLEEDING"> - <English>Bleeding</English> - <Russian>Кровотечение</Russian> - <Spanish>Sangrando</Spanish> - <French>Seignement</French> - <Polish>Krwawienie zewnętrzne</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_STATUS_PAIN"> - <English>In Pain</English> - <Russian>Испытывает боль</Russian> - <Spanish>Con Dolor</Spanish> - <French>A De La Douleur</French> - <Polish>W bólu</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_STATUS_LOST_BLOOD"> - <English>Lost a lot of Blood</English> - <Russian>Большая кровопотеря</Russian> - <Spanish>Mucha Sangre perdida</Spanish> - <French>A Perdu Bcp de Sang</French> - <Polish>Stracił dużo krwi</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_STATUS_TOURNIQUET_APPLIED"> - <English>Tourniquet [CAT]</English> - <Russian>Жгут</Russian> - <Spanish>Torniquete [CAT]</Spanish> - <French>Garot [CAT]</French> - <Polish>Opaska uciskowa [CAT]</Polish> - </Key> - </Container> - <Container name="CfgWeapons"> - <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DISPLAY"> - <English>Bandage (Basic)</English> - <Russian>Повязка (обычная)</Russian> - <Spanish>Vendaje (Básico)</Spanish> - <French>Bandage (Standard)</French> - <Polish>Bandaż (jałowy)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DESC_SHORT"> - <English>Used to cover a wound</English> - <Russian>Для перевязки ран</Russian> - <Spanish>Utilizado para cubrir una herida</Spanish> - <French>Utilisé Pour Couvrir Une Blessure</French> - <Polish>Używany w celu przykrycia i ochrony miejsca zranienia</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DESC_USE"> - <English>A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed.</English> - <Russian>Повязка, накладываемая поверх раны после остановки кровотечения.</Russian> - <Spanish>Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar.</Spanish> - <French>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.</French> - <Polish>Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DISPLAY"> - <English>Packing Bandage</English> - <Russian>Тампонирующая повязка</Russian> - <Spanish>Vendaje Compresivo</Spanish> - <French>Bandage Mèche</French> - <Polish>Bandaż (uciskowy)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DESC_SHORT"> - <English>Used to pack medium to large wounds and stem the bleeding</English> - <Russian>Для тампонирования ран среднего и большого размера и остановки кровотечения.</Russian> - <Spanish>Se utiliza para vendar heridas medianas y grandes y detener el sangrado</Spanish> - <French>Utiliser pour remplire la cavité créé dans une blessure moyenne et grande.</French> - <Polish>Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DESC_USE"> - <English>A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries.</English> - <Russian>Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны.</Russian> - <Spanish>Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos.</Spanish> - <French>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.</French> - <Polish>Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY"> - <English>Bandage (Elastic)</English> - <Russian>Повязка (давящая)</Russian> - <Spanish>Vendaje (Elástico)</Spanish> - <French>Bandage (Élastique)</French> - <Polish>Bandaż (elastyczny)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DESC_SHORT"> - <English>Bandage kit, Elastic</English> - <Russian>Давящая повязка</Russian> - <Spanish>Vendaje (Elástico)</Spanish> - <French>Bandage Compressif Élastique</French> - <Polish>Zestaw bandaży elastycznych.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DESC_USE"> - <English></English> - <Russian></Russian> - <French>Ce bandage peut etre utiliser pour compresser la plaie afin de ralentire le seignement et assurer la tenue du bandage lors de mouvment.</French> - <Polish>Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów.</Polish> - <Spanish>Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DISPLAY"> - <English>Tourniquet (CAT)</English> - <Russian>Жгут</Russian> - <Spanish>Torniquete (CAT)</Spanish> - <French>Garot (CAT)</French> - <Polish>Staza (typ. CAT)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DESC_SHORT"> - <English>Slows down blood loss when bleeding</English> - <Russian>Уменьшает кровопотерю при кровотечении.</Russian> - <Spanish>Reduce la velocidad de pérdida de sangre</Spanish> - <French>Ralentit le seignement</French> - <Polish>Zmniejsza ubytek krwi z kończyn w przypadku krwawienia.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DESC_USE"> - <English>A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood.</English> - <Russian>Жгут используется для прижатия сосудов, приводящего к остановке или значительному уменьшению кровотечения и сокращению кровопотери.</Russian> - <Spanish>Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre</Spanish> - <French>Un appareil servent a compresser les artères et veines afin de reduire la perte de sang.</French> - <Polish>Opaska zaciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_MORPHINE_DISPLAY"> - <English>Morphine auto-injector</English> - <Russian>Морфин в автоматическом шприце</Russian> - <Spanish>Morfina auto-inyectable</Spanish> - <French>Auto-injecteur de Morphine</French> - <Polish>Autostrzykawka z morfiną</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_MORPHINE_DESC_SHORT"> - <English>Used to combat moderate to severe pain experiences</English> - <Russian>Для снятия средних и сильных болевых ощущений.</Russian> - <Spanish>Usado para combatir los estados dolorosos moderados a severos</Spanish> - <French>Utiliser pour contrer les douleurs modéré à severes.</French> - <Polish>Morfina. Ma silne działanie przeciwbólowe.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_MORPHINE_DESC_USE"> - <English>An analgesic used to combat moderate to severe pain experiences.</English> - <Russian>Анальгетик для снятия средних и сильных болевых ощущений.</Russian> - <Spanish>Analgésico usado para combatir los estados dolorosos de moderado a severo.</Spanish> - <French>Un Analgésique puissant servant a contrer les douleur modéré a severe.</French> - <Polish>Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_ATROPINE_DISPLAY"> - <English>Atropin auto-injector</English> - <Russian>Атропин в автоматическом шприце</Russian> - <Spanish>Atropina auto-inyectable</Spanish> - <French>Auto-injecteur d'Atropine</French> - <Polish>Autostrzykawka AtroPen</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_ATROPINE_DESC_SHORT"> - <English>Used in NBC scenarios</English> - <Russian>Применяется для защиты от ОМП</Russian> - <Spanish>Usado en escenarios NBQ</Spanish> - <French>Utiliser en cas d'attaque CBRN</French> - <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_ATROPINE_DESC_USE"> - <English>A drug used by the Military in NBC scenarios.</English> - <Russian>Препарат, используемый в войсках для защиты от оружия массового поражения.</Russian> - <Spanish>Medicamento usado por Militares en escenarios NBQ</Spanish> - <French>Médicament utilisé par l'armée en cas d'attaque CBRN</French> - <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DISPLAY"> - <English>Epinephrine auto-injector</English> - <Russian>Адреналин в автоматическом шприце</Russian> - <Spanish>Epinefrina auto-inyectable</Spanish> - <French>Auto-injecteur d'épinéphrine</French> - <Polish>Autostrzykawka EpiPen</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DESC_SHORT"> - <English>Increase heart rate and counter effects given by allergic reactions</English> - <Russian>Стимулирует работу сердца и купирует аллергические реакции.</Russian> - <Spanish>Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas</Spanish> - <French>Augmente la Fréquance cadiaque et contré les effet d'une reaction Anaphylactique</French> - <Polish>Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DESC_USE"> - <English>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.</English> - <Russian>Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшением вероятности благоприятного исхода.</Russian> - <Spanish>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.</Spanish> - <French>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.</French> - <Polish>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.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PLASMA_IV"> - <English>Plasma IV (1000ml)</English> - <Russian>Плазма для в/в вливания (1000 мл)</Russian> - <Spanish>Plasma Intravenoso (1000ml)</Spanish> - <French>Plasma Sanguin IV (1000ml)</French> - <Polish>Osocze IV (1000ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PLASMA_IV_DESC_SHORT"> - <English>A volume-expanding blood supplement.</English> - <Russian>Дополнительный препарат, применяемый при возмещении объема крови.</Russian> - <Spanish>Suplemento para expandir el volumen sanguíneo.</Spanish> - <French>Supplement visant a remplacer les volume sanguin</French> - <Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PLASMA_IV_DESC_USE"> - <English>A volume-expanding blood supplement.</English> - <Russian>Дополнительный препарат, применяемый при возмещении объема крови.</Russian> - <Spanish>Suplemento para expandir el volumen sanguíneo.</Spanish> - <French>Supplement visant a remplacer le volume sanguin et remplace les plaquettes.</French> - <Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PLASMA_IV_500"> - <English>Plasma IV (500ml)</English> - <Russian>Плазма для в/в вливания (500 мл)</Russian> - <Spanish>Plasma Intravenoso (500ml)</Spanish> - <French>Plasma Sanguin IV (500ml)</French> - <Polish>Osocze IV (500ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_PLASMA_IV_250"> - <English>Plasma IV (250ml)</English> - <Russian>Плазма для в/в вливания (250 мл)</Russian> - <Spanish>Plasma Intravenoso (250ml)</Spanish> - <French>Plasma Sanguin (250ml)</French> - <Polish>Osocze IV (250ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BLOOD_IV"> - <English>Blood IV (1000ml)</English> - <Russian>Кровь для переливания (1000 мл)</Russian> - <Spanish>Sangre Intravenosa (1000ml)</Spanish> - <French>Cullot Sanguin IV (1000ml)</French> - <Polish>Krew IV (1000ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BLOOD_IV_DESC_SHORT"> - <English>Blood IV, for restoring a patients blood (keep cold)</English> - <Russian>Пакет крови для возмещения объема потерянной крови (хранить в холодильнике)</Russian> - <Spanish>Sangre Intravenosa, para restarurar el volumen sanguíneo (mantener frío)</Spanish> - <French>Cullot Sanguin IV, pour remplacer le volume sanguin (garder Réfrigeré)</French> - <Polish>Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BLOOD_IV_DESC_USE"> - <English>O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care.</English> - <Russian>Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи.</Russian> - <French>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. </French> - <Polish>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.</Polish> - <Spanish>Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdido. Uso habitual durante el transporte de heridos.</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_BLOOD_IV_500"> - <English>Blood IV (500ml)</English> - <Russian>Кровь для переливания (500 мл)</Russian> - <Spanish>Sangre Intravenosa (500ml)</Spanish> - <French>Cullot Sanguin IV (500ml)</French> - <Polish>Krew IV (500ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_BLOOD_IV_250"> - <English>Blood IV (250ml)</English> - <Russian>Кровь для переливания (250 мл)</Russian> - <Spanish>Sangre Intravenosa (250ml)</Spanish> - <French>Cullot Sanguin IV (250ml)</French> - <Polish>Krew IV (250ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_SALINE_IV"> - <English>Saline IV (1000ml)</English> - <Russian>Физраствор для в/в вливания (1000 мл)</Russian> - <Spanish>Solución Salina Intravenosa (1000ml)</Spanish> - <French>solution Saline 0.9% IV (1000ml)</French> - <Polish>Solanka 0,9% IV (1000ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_SALINE_IV_DESC_SHORT"> - <English>Saline IV, for restoring a patients blood</English> - <Russian>Пакет физраствора для возмещения объема потерянной крови</Russian> - <Spanish>Solución Salina Intravenosa, para restaurar el volumen sanguíneo</Spanish> - <French>Solution Saline 0.9% IV, pour retablir temporairement la tention arteriel</French> - <Polish>Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_SALINE_IV_DESC_USE"> - <English>A medical volume-replenishing agent introduced into the blood system through an IV infusion.</English> - <Russian>Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания.</Russian> - <Spanish>Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa.</Spanish> - <French> Un remplacment temporaire pour rétablir la tention artériel lors de perte sanguine, étant ajouter par intraveineuse</French> - <Polish>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).</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_SALINE_IV_500"> - <English>Saline IV (500ml)</English> - <Russian>Физраствор для в/в вливания (500 мл)</Russian> - <Spanish>Solución Salina Intravenosa (500ml)</Spanish> - <French>Solution Saline 0.9% IV (500ml)</French> - <Polish>Solanka 0,9% IV (500ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_SALINE_IV_250"> - <English>Saline IV (250ml)</English> - <Russian>Физраствор для в/в вливания (250 мл)</Russian> - <Spanish>Solución Salina Intravenosa (250ml)</Spanish> - <French>Solution Saline 0.9% IV (250ml)</French> - <Polish>Solanka 0,9% IV (250ml)</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DISPLAY"> - <English>Basic Field Dressing (QuikClot)</English> - <Russian>Первичный перевязочный пакет (QuikClot)</Russian> - <Spanish>Vendaje Básico (Coagulante)</Spanish> - <French>Bandage Regulier (Coagulant)</French> - <Polish>Opatrunek QuikClot</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DESC_SHORT"> - <English>QuikClot bandage</English> - <Russian>Гемостатический пакет QuikClot</Russian> - <Spanish>Venda Coagulante</Spanish> - <French>Bandage coagulant</French> - <Polish>Podstawowy opatrunek stosowany na rany</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DESC_USE"> - <English></English> - <Russian></Russian> - <French>Un bandage servant a coaguler les seignements mineur à moyen.</French> - <Polish>Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności.</Polish> - <Spanish>Vendaje Hemostático con coagulante que detiene el sangrado.</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_AID_KIT_DISPLAY"> - <English>Personal Aid Kit</English> - <Russian>Аптечка</Russian> - <Spanish>Kit de Soporte Vital Avanzado</Spanish> - <French>Équipement de support Vitale</French> - <Polish>Apteczka osobista</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_AID_KIT_DESC_SHORT"> - <English>Includes various treatment kit needed for stitching or advanced treatment</English> - <Russian>Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи.</Russian> - <Spanish>Incluye material médico para tratamientos avanzados</Spanish> - <French>Inclue du matériel medical pour les traitement avancé, tel les point de suture.</French> - <Polish>Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego</Polish> - </Key> - <Key ID="STR_ACE_MEDICAL_AID_KIT_DESC_USE"> - <English></English> - <Russian></Russian> - <French></French> - <Spanish></Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DISPLAY"> - <English>Surgical Kit</English> - <Russian>Хирургический набор</Russian> - <Spanish>Kit Quirúrgico</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DESC_SHORT"> - <English>Surgical Kit for in field advanced medical treatment</English> - <Russian>Набор для хирургической помощи в полевых условиях</Russian> - <Spanish>Kit Quirúrgico para el tratamiento avanzado en el campo de batalla</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DESC_USE"> - <English>Surgical Kit for in field advanced medical treatment</English> - <Russian>Набор для хирургической помощи в полевых условиях</Russian> - <Spanish>Kit Quirúrgico para el tratamiento avanzado en el campo de batalla</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_BODYBAG_DISPLAY"> - <English>Bodybag</English> - <Russian>Мешок для трупов</Russian> - <Spanish>Bolsa para cadáveres</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_BODYBAG_DESC_SHORT"> - <English>A bodybag for dead bodies</English> - <Russian>Мешок для упаковки трупов</Russian> - <Spanish>Bolsa para cadáveres</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_BODYBAG_DESC_USE"> - <English>A bodybag for dead bodies</English> - <Russian>Мешок для упаковки трупов</Russian> - <Spanish>Bolsa para cadáveres</Spanish> - </Key> - </Container> - <Container name="Actions"> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE"> - <English>Blood Pressure</English> - <Russian>Артериальное давление</Russian> - <Spanish>Presión Arterial</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_CONTENT"> - <English>Checking Blood Pressure..</English> - <Russian>Проверка артериального давления...</Russian> - <Spanish>Comprobando Presión Arterial...</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_CHECKED_MEDIC"> - <English>You checked %1</English> - <Russian>Вы осмотрели раненого %1</Russian> - <Spanish>Examinando a %1</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_1"> - <English>You find a blood pressure of %2/%3</English> - <Russian>Артериальное давление %2/%3</Russian> - <Spanish>La Presión Arterial es %2/%3</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_2"> - <English>You find a low blood pressure</English> - <Russian>Давление низкое</Russian> - <Spanish>La Presión Arterial es baja</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_3"> - <English>You find a normal blood pressure</English> - <Russian>Давление нормальное</Russian> - <Spanish>La Presión Arterial es normal</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_4"> - <English>You find a high blood pressure</English> - <Russian>Давление высокое</Russian> - <Spanish>La Presión Arterial es alta</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_5"> - <English>You find no blood pressure</English> - <Russian>Давления нет</Russian> - <Spanish>No hay Presión Arterial</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_6"> - <English>You fail to find a blood pressure</English> - <Russian>Артериальное давление не определяется</Russian> - <Spanish>No puedes encontrar Presión Arterial</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE"> - <English>Pulse</English> - <Russian>Пульс</Russian> - <Spanish>Pulso</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CONTENT"> - <English>Checking Heart Rate..</English> - <Russian>Проверка пульса...</Russian> - <Spanish>Comprobando Pulso...</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CHECKED_MEDIC"> - <English>You checked %1</English> - <Russian>Вы осмотрели раненого %1</Russian> - <Spanish>Examinando a %1</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_1"> - <English>You find a Heart Rate of %2</English> - <Russian>Пульс %2 уд./мин.</Russian> - <Spanish>El Pulso es %2</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_2"> - <English>You find a weak Heart Rate</English> - <Russian>Пульс слабый</Russian> - <Spanish>El Pulso es débil</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_3"> - <English>You find a strong Heart Rate</English> - <Russian>Пульс учащенный</Russian> - <Spanish>El Pulso está acelerado</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_4"> - <English>You find a normal Heart Rate</English> - <Russian>Пульс в норме</Russian> - <Spanish>El Pulso es bueno</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_5"> - <English>You find no Heart Rate</English> - <Russian>Пульс не прощупывается</Russian> - <Spanish>No tiene Pulso</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_RESPONSE"> - <English>Response</English> - <Russian>Реакция</Russian> - <Spanish>Reacciona</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_RESPONSE_CONTENT"> - <English>You check response of patient</English> - <Russian>Вы проверяете реакцию раненого</Russian> - <Spanish>Compruebas si el paciente reacciona</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_RESPONSIVE"> - <English>%1 is responsive</English> - <Russian>%1 реагирует на раздражители</Russian> - <Spanish>%1 ha reaccionado</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_UNRESPONSIVE"> - <English>%1 is not responsive</English> - <Russian>%1 не реагирует</Russian> - <Spanish>%1 no reacciona</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_YOU_CHECKED"> - <English>You checked %1</English> - <Russian>Вы осмотрели раненого %1</Russian> - <Spanish>Examinas a %1</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_BANDAGED"> - <English>Bandaged</English> - <Russian>Повязка наложена</Russian> - <Spanish>Vendado</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_APPLY_BANDAGE"> - <English>You bandage %1 (%2)</English> - <Russian>Вы перевязали раненого %1 (%2)</Russian> - <Spanish>Aplicas vendaje a %1 en %2</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_IS_BANDAGING_YOU"> - <English>%1 is bandaging you</English> - <Russian>%1 перевязывает вас</Russian> - <Spanish>%1 te está vendando</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_START_STITCHING_INJURIES"> - <English>You start stitching injures from %1 (%2)</English> - <Russian>Вы зашиваете ранения от %1 (%2)</Russian> - <Spanish>Estás suturando heridas de %1 en %2</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_STITCHING"> - <English>Stitching</English> - <Russian>Наложение швов</Russian> - <Spanish>Suturando</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_YOU_TREAT_AIRWAY"> - <English>You treat the airway of %1</English> - <Russian>Вы интубируете раненого %1</Russian> - <Spanish>Estás intubando a %1</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_AIRWAY"> - <English>Airway</English> - <Russian>Дыхательные пути</Russian> - <Spanish>Vías Aéreas</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_IS_TREATING_YOUR_AIRWAY"> - <English>%1 is treating your airway</English> - <Russian>%1 проводит вам интубацию</Russian> - <Spanish>%1 te está intubando</Spanish> - </Key> - <Key ID="STR_ACE_MEDICAL_DRAG"> - <English>Drag</English> - <German>Ziehen</German> - <Spanish>Arrastrar</Spanish> - <Polish>Ciągnij</Polish> - <Czech>Táhnout</Czech> - <Russian>Тащить</Russian> - <French>Tracter</French> - <Hungarian>Húzás</Hungarian> - <Portuguese>Arrastar</Portuguese> - <Italian>Trascina</Italian> - </Key> - <Key ID="STR_ACE_MEDICAL_CARRY"> - <English>Carry</English> - <German>Tragen</German> - <Spanish>Cargar</Spanish> - <Polish>Nieś</Polish> - <Czech>Nést</Czech> - <Russian>Нести</Russian> - <French>Porter</French> - <Hungarian>Cipelés</Hungarian> - <Portuguese>Carregar</Portuguese> - <Italian>Trasporta</Italian> - </Key> - <Key ID="STR_ACE_MEDICAL_RELEASE"> - <English>Release</English> - <German>Loslassen</German> - <Spanish>Soltar</Spanish> - <Polish>Połóż</Polish> - <Czech>Položit</Czech> - <Russian>Отпустить</Russian> - <French>Déposer</French> - <Hungarian>Elenged</Hungarian> - <Portuguese>Largar</Portuguese> - <Italian>Lascia</Italian> - </Key> - <Key ID="STR_ACE_MEDICAL_LOAD"> - <English>Load Patient Into</English> - <German>Patient Einladen</German> - <Spanish>Cargar el paciente en</Spanish> - <Polish>Załaduj pacjenta</Polish> - <Czech>Naložit pacianta do</Czech> - <Russian>Погрузить пациента в</Russian> - <French>Embarquer le Patient</French> - <Hungarian>Sebesült berakása</Hungarian> - <Portuguese>Carregar Paciente Em</Portuguese> - <Italian>Carica paziente nel</Italian> - </Key> - <Key ID="STR_ACE_MEDICAL_UNLOAD"> - <English>Unload Patient</English> - <German>Patient Ausladen</German> - <Spanish>Descargar el paciente</Spanish> - <Polish>Wyładuj pacjenta</Polish> - <Czech>Vyložit pacienta</Czech> - <Russian>Выгрузить пациента</Russian> - <French>Débarquer le Patient</French> - <Hungarian>Sebesült kihúzása</Hungarian> - <Portuguese>Descarregar Paciente</Portuguese> - <Italian>Scarica il paziente</Italian> - </Key> - <Key ID="STR_ACE_Medical_UnloadPatient"> - <English>Unload patient >></English> - </Key> - </Container> - </Package> -</Project> + <Package name="Medical"> + <Container name="Basic"> + <Key ID="STR_ACE_Medical_Inject_Atropine"> + <English>Inject Atropine</English> + </Key> + <Key ID="STR_ACE_Medical_Inject_Epinephrine"> + <English>Inject Epinephrine</English> + <German>Epinephrine injizieren</German> + <Spanish>Inyectar Epinefrina</Spanish> + <Polish>Wtrzyknij adrenalinę</Polish> + <Czech>Aplikovat Adrenalin</Czech> + <Russian>Ввести андреналил</Russian> + <French>Adrénaline</French> + <Hungarian>Adrenalin</Hungarian> + <Portuguese>Injetar Epinefrina</Portuguese> + <Italian>Inietta Epinefrina</Italian> + </Key> + <Key ID="STR_ACE_Medical_Inject_Morphine"> + <English>Inject Morphine</English> + <German>Morphin injizieren</German> + <Spanish>Inyectar Morfina</Spanish> + <Polish>Wstrzyknij morfinę</Polish> + <Czech>Aplikovat Morfin</Czech> + <Russian>Ввести морфин</Russian> + <French>Morphine</French> + <Hungarian>Morfium</Hungarian> + <Portuguese>Injetar Morfina</Portuguese> + <Italian>Inietta Morfina</Italian> + </Key> + <Key ID="STR_ACE_Medical_Transfuse_Blood"> + <English>Transfuse Blood</English> + <German>Bluttransfusion</German> + <Spanish>Transfundir sangre</Spanish> + <Polish>Przetocz krew</Polish> + <Czech>Transfúze krve</Czech> + <Russian>Перелить кровь</Russian> + <French>Transfusion</French> + <Hungarian>Infúzió</Hungarian> + <Portuguese>Transfundir Sangue</Portuguese> + <Italian>Effettua Trasfusione</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage"> + <English>Bandage</English> + <German>Verbinden</German> + <Spanish>Venda</Spanish> + <Polish>Bandaż</Polish> + <Czech>Obvázat</Czech> + <French>Pansement</French> + <Italian>Benda</Italian> + <Hungarian>Kötözés</Hungarian> + <Portuguese>Atadura</Portuguese> + <Russian>Перевязать</Russian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitHead"> + <English>Bandage Head</English> + <German>Kopf verbinden</German> + <Spanish>Vendar la cabeza</Spanish> + <Polish>Bandażuj głowę</Polish> + <Czech>Obvázat hlavu</Czech> + <Russian>Перевязать голову</Russian> + <French>Pansement Tête</French> + <Hungarian>Fej kötözése</Hungarian> + <Portuguese>Atar Cabeça</Portuguese> + <Italian>Benda la testa</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitBody"> + <English>Bandage Torso</English> + <German>Torso verbinden</German> + <Spanish>Vendar el torso</Spanish> + <Polish>Bandażuj tors</Polish> + <Czech>Obvázat hruď</Czech> + <Russian>Перевязать торс</Russian> + <French>Pansement Torse</French> + <Hungarian>Felsőtest kötözése</Hungarian> + <Portuguese>Atar Tronco</Portuguese> + <Italian>Benda il torso</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitLeftArm"> + <English>Bandage Left Arm</English> + <German>Arm links verbinden</German> + <Spanish>Vendar el brazo izquierdo</Spanish> + <Polish>Bandażuj lewe ramię</Polish> + <Czech>Obvázat levou ruku</Czech> + <Russian>Перевязать левую руку</Russian> + <French>Pansement Bras Gauche</French> + <Hungarian>Bal kar kötözése</Hungarian> + <Portuguese>Atar Braço Esquerdo</Portuguese> + <Italian>Benda il braccio sinistro</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitRightArm"> + <English>Bandage Right Arm</English> + <German>Arm rechts verbinden</German> + <Spanish>Vendar el brazo derecho</Spanish> + <Polish>Bandażuj prawe ramię</Polish> + <Czech>Obvázat pravou ruku</Czech> + <Russian>Перевязать правую руку</Russian> + <French>Pansement Bras Droit</French> + <Hungarian>Jobb kar kötözése</Hungarian> + <Portuguese>Atar Braço Direito</Portuguese> + <Italian>Benda il braccio destro</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitLeftLeg"> + <English>Bandage Left Leg</English> + <German>Bein links verbinden</German> + <Spanish>Vendar la pierna izquierda</Spanish> + <Polish>Bandażuj lewą nogę</Polish> + <Czech>Obvázat levou nohu</Czech> + <Russian>Перевязать левую ногу</Russian> + <French>Pansement Jambe Gauche</French> + <Hungarian>Bal láb kötözése</Hungarian> + <Portuguese>Atar Perna Esquerda</Portuguese> + <Italian>Benda la gamba sinistra</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandage_HitRightLeg"> + <English>Bandage Right Leg</English> + <German>Bein rechts verbinden</German> + <Spanish>Vendar la pierna derecha</Spanish> + <Polish>Bandażuj prawą nogę</Polish> + <Czech>Obvázat pravou nohu</Czech> + <Russian>Перевязать правую ногу</Russian> + <French>Pansement Jambe Droite</French> + <Hungarian>Jobb láb kötözése</Hungarian> + <Portuguese>Atar Perna Direita</Portuguese> + <Italian>Benda la gamba destra</Italian> + </Key> + <Key ID="STR_ACE_Medical_Injecting_Morphine"> + <English>Injecting Morphine ...</English> + <German>Morphin injizieren ...</German> + <Spanish>Inyectando Morfina ...</Spanish> + <Polish>Wstrzykiwanie morfiny ...</Polish> + <Czech>Aplikuju Morfin ...</Czech> + <Russian>Введение морфина...</Russian> + <French>Injection de Morphine...</French> + <Hungarian>Morfium beadása...</Hungarian> + <Portuguese>Injetando Morfina ...</Portuguese> + <Italian>Inietto la morfina ...</Italian> + </Key> + <Key ID="STR_ACE_Medical_Injecting_Epinephrine"> + <English>Injecting Epinephrine ...</English> + <German>Epinephrine injizieren ...</German> + <Spanish>Inyectando Epinefrina ...</Spanish> + <Polish>Wstrzykiwanie adrenaliny ...</Polish> + <Czech>Aplikuju Adrenalin ...</Czech> + <Russian>Введение андреналина</Russian> + <French>Injection d'Adrénaline ...</French> + <Hungarian>Adrenalin beadása...</Hungarian> + <Portuguese>Injetando Epinefrina ...</Portuguese> + <Italian>Inietto l'epinefrina ...</Italian> + </Key> + <Key ID="STR_ACE_Medical_Transfusing_Blood"> + <English>Transfusing Blood ...</English> + <German>Bluttransfusion ...</German> + <Spanish>Realizando transfusión ...</Spanish> + <Polish>Przetaczanie krwi ...</Polish> + <Czech>Probíhá transfúze krve ...</Czech> + <Russian>Переливание крови...</Russian> + <French>Transfusion Sanguine ...</French> + <Hungarian>Infúzió...</Hungarian> + <Portuguese>Transfundindo Sangue ...</Portuguese> + <Italian>Effettuo la trasfusione ...</Italian> + </Key> + <Key ID="STR_ACE_Medical_Bandaging"> + <English>Bandaging ...</English> + <German>Verbinden ...</German> + <Spanish>Vendando ...</Spanish> + <Polish>Bandażowanie ...</Polish> + <Czech>Obvazuji ...</Czech> + <French>Pansement ...</French> + <Italian>Sto applicando la benda ...</Italian> + <Hungarian>Bekötözés...</Hungarian> + <Portuguese>Atando ...</Portuguese> + <Russian>Перевязывание....</Russian> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Medical"> + <English>Medical</English> + <Czech>Zdravotní</Czech> + <French>Médical</French> + <German>Sanitäter</German> + <Italian>Medico</Italian> + <Polish>Medyczne</Polish> + <Portuguese>Médico</Portuguese> + <Russian>Медик</Russian> + <Spanish>Médico</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_FieldDressing"> + <English>Field Dressing</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_PackingBandage"> + <English>Packing Bandage</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_ElasticBandage"> + <English>Elastic Bandage</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_QuikClot"> + <English>QuikClot</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_CheckPulse"> + <English>Check Pulse</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_CheckBloodPressure"> + <English>Check Blood Pressure</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_TriageCard"> + <English>Triage Card</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Tourniquet"> + <English>Tourniquet</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_RemoveTourniquet"> + <English>Remove Tourniquet</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Blood4_1000"> + <English>Give Blood IV (1000ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Blood4_500"> + <English>Give Blood IV (500ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Blood4_250"> + <English>Give Blood IV (250ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Plasma4_1000"> + <English>Give Plasma IV (1000ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Plasma4_500"> + <English>Give Plasma IV (500ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Plasma4_250"> + <English>Give Plasma IV (250ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_1000"> + <English>Give Saline IV (1000ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_500"> + <English>Give Saline IV (500ml)</English> + </Key> + <Key ID="STR_ACE_MEDICAL_ACTIONS_Saline4_250"> + <English>Give Saline IV (250ml)</English> + </Key> + </Container> + <Container name="UI"> + <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_MINOR"> + <English>Minor</English> + </Key> + <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DELAYED"> + <English>Delayed</English> + </Key> + <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_IMMEDIATE"> + <English>Immediate</English> + </Key> + <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DECEASED"> + <English>Deceased</English> + </Key> + <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_NONE"> + <English>None</English> + </Key> + <Key ID="STR_ACE_MEDICAL_NORMAL_BREATHING"> + <English>Normal breathing</English> + <Russian>Дыхание в норме</Russian> + <Spanish>Respiración normal</Spanish> + <French>Respiration Normale</French> + <Polish>Normalny oddech</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_NO_BREATHING"> + <English>No breathing</English> + <Russian>Дыхания нет</Russian> + <Spanish>No respira</Spanish> + <French>Apnée</French> + <Polish>Brak oddechu</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_DIFFICULT_BREATHING"> + <English>Difficult breathing</English> + <Russian>Дыхание затруднено</Russian> + <Spanish>Dificultad para respirar</Spanish> + <French>Difficultée Respiratoire</French> + <Polish>Trudności z oddychaniem</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_ALMOST_NO_BREATHING"> + <English>Almost no breathing</English> + <Russian>Дыхания почти нет</Russian> + <Spanish>Casi sin respirar</Spanish> + <French>Respiration Faible</French> + <Polish>Prawie brak oddechu</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_STATUS_BLEEDING"> + <English>Bleeding</English> + <Russian>Кровотечение</Russian> + <Spanish>Sangrando</Spanish> + <French>Seignement</French> + <Polish>Krwawienie zewnętrzne</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_STATUS_PAIN"> + <English>In Pain</English> + <Russian>Испытывает боль</Russian> + <Spanish>Con Dolor</Spanish> + <French>A De La Douleur</French> + <Polish>W bólu</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_STATUS_LOST_BLOOD"> + <English>Lost a lot of Blood</English> + <Russian>Большая кровопотеря</Russian> + <Spanish>Mucha Sangre perdida</Spanish> + <French>A Perdu Bcp de Sang</French> + <Polish>Stracił dużo krwi</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_STATUS_TOURNIQUET_APPLIED"> + <English>Tourniquet [CAT]</English> + <Russian>Жгут</Russian> + <Spanish>Torniquete [CAT]</Spanish> + <French>Garot [CAT]</French> + <Polish>Opaska uciskowa [CAT]</Polish> + </Key> + </Container> + <Container name="CfgWeapons"> + <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DISPLAY"> + <English>Bandage (Basic)</English> + <Russian>Повязка (обычная)</Russian> + <Spanish>Vendaje (Básico)</Spanish> + <French>Bandage (Standard)</French> + <Polish>Bandaż (jałowy)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DESC_SHORT"> + <English>Used to cover a wound</English> + <Russian>Для перевязки ран</Russian> + <Spanish>Utilizado para cubrir una herida</Spanish> + <French>Utilisé Pour Couvrir Une Blessure</French> + <Polish>Używany w celu przykrycia i ochrony miejsca zranienia</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGE_BASIC_DESC_USE"> + <English>A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed.</English> + <Russian>Повязка, накладываемая поверх раны после остановки кровотечения.</Russian> + <Spanish>Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar.</Spanish> + <French>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.</French> + <Polish>Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DISPLAY"> + <English>Packing Bandage</English> + <Russian>Тампонирующая повязка</Russian> + <Spanish>Vendaje Compresivo</Spanish> + <French>Bandage Mèche</French> + <Polish>Bandaż (uciskowy)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DESC_SHORT"> + <English>Used to pack medium to large wounds and stem the bleeding</English> + <Russian>Для тампонирования ран среднего и большого размера и остановки кровотечения.</Russian> + <Spanish>Se utiliza para vendar heridas medianas y grandes y detener el sangrado</Spanish> + <French>Utiliser pour remplire la cavité créé dans une blessure moyenne et grande.</French> + <Polish>Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PACKING_BANDAGE_DESC_USE"> + <English>A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries.</English> + <Russian>Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны.</Russian> + <Spanish>Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos.</Spanish> + <French>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.</French> + <Polish>Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DISPLAY"> + <English>Bandage (Elastic)</English> + <Russian>Повязка (давящая)</Russian> + <Spanish>Vendaje (Elástico)</Spanish> + <French>Bandage (Élastique)</French> + <Polish>Bandaż (elastyczny)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DESC_SHORT"> + <English>Bandage kit, Elastic</English> + <Russian>Давящая повязка</Russian> + <Spanish>Vendaje (Elástico)</Spanish> + <French>Bandage Compressif Élastique</French> + <Polish>Zestaw bandaży elastycznych.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGE_ELASTIC_DESC_USE"> + <English></English> + <Russian></Russian> + <French>Ce bandage peut etre utiliser pour compresser la plaie afin de ralentire le seignement et assurer la tenue du bandage lors de mouvment.</French> + <Polish>Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów.</Polish> + <Spanish>Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DISPLAY"> + <English>Tourniquet (CAT)</English> + <Russian>Жгут</Russian> + <Spanish>Torniquete (CAT)</Spanish> + <French>Garot (CAT)</French> + <Polish>Staza (typ. CAT)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DESC_SHORT"> + <English>Slows down blood loss when bleeding</English> + <Russian>Уменьшает кровопотерю при кровотечении.</Russian> + <Spanish>Reduce la velocidad de pérdida de sangre</Spanish> + <French>Ralentit le seignement</French> + <Polish>Zmniejsza ubytek krwi z kończyn w przypadku krwawienia.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_TOURNIQUET_DESC_USE"> + <English>A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood.</English> + <Russian>Жгут используется для прижатия сосудов, приводящего к остановке или значительному уменьшению кровотечения и сокращению кровопотери.</Russian> + <Spanish>Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre</Spanish> + <French>Un appareil servent a compresser les artères et veines afin de reduire la perte de sang.</French> + <Polish>Opaska zaciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_MORPHINE_DISPLAY"> + <English>Morphine auto-injector</English> + <Russian>Морфин в автоматическом шприце</Russian> + <Spanish>Morfina auto-inyectable</Spanish> + <French>Auto-injecteur de Morphine</French> + <Polish>Autostrzykawka z morfiną</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_MORPHINE_DESC_SHORT"> + <English>Used to combat moderate to severe pain experiences</English> + <Russian>Для снятия средних и сильных болевых ощущений.</Russian> + <Spanish>Usado para combatir los estados dolorosos moderados a severos</Spanish> + <French>Utiliser pour contrer les douleurs modéré à severes.</French> + <Polish>Morfina. Ma silne działanie przeciwbólowe.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_MORPHINE_DESC_USE"> + <English>An analgesic used to combat moderate to severe pain experiences.</English> + <Russian>Анальгетик для снятия средних и сильных болевых ощущений.</Russian> + <Spanish>Analgésico usado para combatir los estados dolorosos de moderado a severo.</Spanish> + <French>Un Analgésique puissant servant a contrer les douleur modéré a severe.</French> + <Polish>Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_ATROPINE_DISPLAY"> + <English>Atropin auto-injector</English> + <Russian>Атропин в автоматическом шприце</Russian> + <Spanish>Atropina auto-inyectable</Spanish> + <French>Auto-injecteur d'Atropine</French> + <Polish>Autostrzykawka AtroPen</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_ATROPINE_DESC_SHORT"> + <English>Used in NBC scenarios</English> + <Russian>Применяется для защиты от ОМП</Russian> + <Spanish>Usado en escenarios NBQ</Spanish> + <French>Utiliser en cas d'attaque CBRN</French> + <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_ATROPINE_DESC_USE"> + <English>A drug used by the Military in NBC scenarios.</English> + <Russian>Препарат, используемый в войсках для защиты от оружия массового поражения.</Russian> + <Spanish>Medicamento usado por Militares en escenarios NBQ</Spanish> + <French>Médicament utilisé par l'armée en cas d'attaque CBRN</French> + <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DISPLAY"> + <English>Epinephrine auto-injector</English> + <Russian>Адреналин в автоматическом шприце</Russian> + <Spanish>Epinefrina auto-inyectable</Spanish> + <French>Auto-injecteur d'épinéphrine</French> + <Polish>Autostrzykawka EpiPen</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DESC_SHORT"> + <English>Increase heart rate and counter effects given by allergic reactions</English> + <Russian>Стимулирует работу сердца и купирует аллергические реакции.</Russian> + <Spanish>Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas</Spanish> + <French>Augmente la Fréquance cadiaque et contré les effet d'une reaction Anaphylactique</French> + <Polish>Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_EPINEPHRINE_DESC_USE"> + <English>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.</English> + <Russian>Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшением вероятности благоприятного исхода.</Russian> + <Spanish>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.</Spanish> + <French>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.</French> + <Polish>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.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PLASMA_IV"> + <English>Plasma IV (1000ml)</English> + <Russian>Плазма для в/в вливания (1000 мл)</Russian> + <Spanish>Plasma Intravenoso (1000ml)</Spanish> + <French>Plasma Sanguin IV (1000ml)</French> + <Polish>Osocze IV (1000ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PLASMA_IV_DESC_SHORT"> + <English>A volume-expanding blood supplement.</English> + <Russian>Дополнительный препарат, применяемый при возмещении объема крови.</Russian> + <Spanish>Suplemento para expandir el volumen sanguíneo.</Spanish> + <French>Supplement visant a remplacer les volume sanguin</French> + <Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PLASMA_IV_DESC_USE"> + <English>A volume-expanding blood supplement.</English> + <Russian>Дополнительный препарат, применяемый при возмещении объема крови.</Russian> + <Spanish>Suplemento para expandir el volumen sanguíneo.</Spanish> + <French>Supplement visant a remplacer le volume sanguin et remplace les plaquettes.</French> + <Polish>Składnik krwi, używany do zwiększenia jej objętości.</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PLASMA_IV_500"> + <English>Plasma IV (500ml)</English> + <Russian>Плазма для в/в вливания (500 мл)</Russian> + <Spanish>Plasma Intravenoso (500ml)</Spanish> + <French>Plasma Sanguin IV (500ml)</French> + <Polish>Osocze IV (500ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_PLASMA_IV_250"> + <English>Plasma IV (250ml)</English> + <Russian>Плазма для в/в вливания (250 мл)</Russian> + <Spanish>Plasma Intravenoso (250ml)</Spanish> + <French>Plasma Sanguin (250ml)</French> + <Polish>Osocze IV (250ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BLOOD_IV"> + <English>Blood IV (1000ml)</English> + <Russian>Кровь для переливания (1000 мл)</Russian> + <Spanish>Sangre Intravenosa (1000ml)</Spanish> + <French>Cullot Sanguin IV (1000ml)</French> + <Polish>Krew IV (1000ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BLOOD_IV_DESC_SHORT"> + <English>Blood IV, for restoring a patients blood (keep cold)</English> + <Russian>Пакет крови для возмещения объема потерянной крови (хранить в холодильнике)</Russian> + <Spanish>Sangre Intravenosa, para restarurar el volumen sanguíneo (mantener frío)</Spanish> + <French>Cullot Sanguin IV, pour remplacer le volume sanguin (garder Réfrigeré)</French> + <Polish>Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BLOOD_IV_DESC_USE"> + <English>O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care.</English> + <Russian>Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи.</Russian> + <French>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. </French> + <Polish>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.</Polish> + <Spanish>Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdido. Uso habitual durante el transporte de heridos.</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_BLOOD_IV_500"> + <English>Blood IV (500ml)</English> + <Russian>Кровь для переливания (500 мл)</Russian> + <Spanish>Sangre Intravenosa (500ml)</Spanish> + <French>Cullot Sanguin IV (500ml)</French> + <Polish>Krew IV (500ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_BLOOD_IV_250"> + <English>Blood IV (250ml)</English> + <Russian>Кровь для переливания (250 мл)</Russian> + <Spanish>Sangre Intravenosa (250ml)</Spanish> + <French>Cullot Sanguin IV (250ml)</French> + <Polish>Krew IV (250ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_SALINE_IV"> + <English>Saline IV (1000ml)</English> + <Russian>Физраствор для в/в вливания (1000 мл)</Russian> + <Spanish>Solución Salina Intravenosa (1000ml)</Spanish> + <French>solution Saline 0.9% IV (1000ml)</French> + <Polish>Solanka 0,9% IV (1000ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_SALINE_IV_DESC_SHORT"> + <English>Saline IV, for restoring a patients blood</English> + <Russian>Пакет физраствора для возмещения объема потерянной крови</Russian> + <Spanish>Solución Salina Intravenosa, para restaurar el volumen sanguíneo</Spanish> + <French>Solution Saline 0.9% IV, pour retablir temporairement la tention arteriel</French> + <Polish>Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_SALINE_IV_DESC_USE"> + <English>A medical volume-replenishing agent introduced into the blood system through an IV infusion.</English> + <Russian>Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания.</Russian> + <Spanish>Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa.</Spanish> + <French> Un remplacment temporaire pour rétablir la tention artériel lors de perte sanguine, étant ajouter par intraveineuse</French> + <Polish>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).</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_SALINE_IV_500"> + <English>Saline IV (500ml)</English> + <Russian>Физраствор для в/в вливания (500 мл)</Russian> + <Spanish>Solución Salina Intravenosa (500ml)</Spanish> + <French>Solution Saline 0.9% IV (500ml)</French> + <Polish>Solanka 0,9% IV (500ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_SALINE_IV_250"> + <English>Saline IV (250ml)</English> + <Russian>Физраствор для в/в вливания (250 мл)</Russian> + <Spanish>Solución Salina Intravenosa (250ml)</Spanish> + <French>Solution Saline 0.9% IV (250ml)</French> + <Polish>Solanka 0,9% IV (250ml)</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DISPLAY"> + <English>Basic Field Dressing (QuikClot)</English> + <Russian>Первичный перевязочный пакет (QuikClot)</Russian> + <Spanish>Vendaje Básico (Coagulante)</Spanish> + <French>Bandage Regulier (Coagulant)</French> + <Polish>Opatrunek QuikClot</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DESC_SHORT"> + <English>QuikClot bandage</English> + <Russian>Гемостатический пакет QuikClot</Russian> + <Spanish>Venda Coagulante</Spanish> + <French>Bandage coagulant</French> + <Polish>Podstawowy opatrunek stosowany na rany</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_QUIKCLOT_DESC_USE"> + <English></English> + <Russian></Russian> + <French>Un bandage servant a coaguler les seignements mineur à moyen.</French> + <Polish>Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności.</Polish> + <Spanish>Vendaje Hemostático con coagulante que detiene el sangrado.</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_AID_KIT_DISPLAY"> + <English>Personal Aid Kit</English> + <Russian>Аптечка</Russian> + <Spanish>Kit de Soporte Vital Avanzado</Spanish> + <French>Équipement de support Vitale</French> + <Polish>Apteczka osobista</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_AID_KIT_DESC_SHORT"> + <English>Includes various treatment kit needed for stitching or advanced treatment</English> + <Russian>Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи.</Russian> + <Spanish>Incluye material médico para tratamientos avanzados</Spanish> + <French>Inclue du matériel medical pour les traitement avancé, tel les point de suture.</French> + <Polish>Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego</Polish> + </Key> + <Key ID="STR_ACE_MEDICAL_AID_KIT_DESC_USE"> + <English></English> + <Russian></Russian> + <French></French> + <Spanish></Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DISPLAY"> + <English>Surgical Kit</English> + <Russian>Хирургический набор</Russian> + <Spanish>Kit Quirúrgico</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DESC_SHORT"> + <English>Surgical Kit for in field advanced medical treatment</English> + <Russian>Набор для хирургической помощи в полевых условиях</Russian> + <Spanish>Kit Quirúrgico para el tratamiento avanzado en el campo de batalla</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_SURGICALKIT_DESC_USE"> + <English>Surgical Kit for in field advanced medical treatment</English> + <Russian>Набор для хирургической помощи в полевых условиях</Russian> + <Spanish>Kit Quirúrgico para el tratamiento avanzado en el campo de batalla</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_BODYBAG_DISPLAY"> + <English>Bodybag</English> + <Russian>Мешок для трупов</Russian> + <Spanish>Bolsa para cadáveres</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_BODYBAG_DESC_SHORT"> + <English>A bodybag for dead bodies</English> + <Russian>Мешок для упаковки трупов</Russian> + <Spanish>Bolsa para cadáveres</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_BODYBAG_DESC_USE"> + <English>A bodybag for dead bodies</English> + <Russian>Мешок для упаковки трупов</Russian> + <Spanish>Bolsa para cadáveres</Spanish> + </Key> + </Container> + <Container name="Actions"> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE"> + <English>Blood Pressure</English> + <Russian>Артериальное давление</Russian> + <Spanish>Presión Arterial</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_CONTENT"> + <English>Checking Blood Pressure..</English> + <Russian>Проверка артериального давления...</Russian> + <Spanish>Comprobando Presión Arterial...</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_CHECKED_MEDIC"> + <English>You checked %1</English> + <Russian>Вы осмотрели раненого %1</Russian> + <Spanish>Examinando a %1</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_1"> + <English>You find a blood pressure of %2/%3</English> + <Russian>Артериальное давление %2/%3</Russian> + <Spanish>La Presión Arterial es %2/%3</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_2"> + <English>You find a low blood pressure</English> + <Russian>Давление низкое</Russian> + <Spanish>La Presión Arterial es baja</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_3"> + <English>You find a normal blood pressure</English> + <Russian>Давление нормальное</Russian> + <Spanish>La Presión Arterial es normal</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_4"> + <English>You find a high blood pressure</English> + <Russian>Давление высокое</Russian> + <Spanish>La Presión Arterial es alta</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_5"> + <English>You find no blood pressure</English> + <Russian>Давления нет</Russian> + <Spanish>No hay Presión Arterial</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_6"> + <English>You fail to find a blood pressure</English> + <Russian>Артериальное давление не определяется</Russian> + <Spanish>No puedes encontrar Presión Arterial</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE"> + <English>Pulse</English> + <Russian>Пульс</Russian> + <Spanish>Pulso</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CONTENT"> + <English>Checking Heart Rate..</English> + <Russian>Проверка пульса...</Russian> + <Spanish>Comprobando Pulso...</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_CHECKED_MEDIC"> + <English>You checked %1</English> + <Russian>Вы осмотрели раненого %1</Russian> + <Spanish>Examinando a %1</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_1"> + <English>You find a Heart Rate of %2</English> + <Russian>Пульс %2 уд./мин.</Russian> + <Spanish>El Pulso es %2</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_2"> + <English>You find a weak Heart Rate</English> + <Russian>Пульс слабый</Russian> + <Spanish>El Pulso es débil</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_3"> + <English>You find a strong Heart Rate</English> + <Russian>Пульс учащенный</Russian> + <Spanish>El Pulso está acelerado</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_4"> + <English>You find a normal Heart Rate</English> + <Russian>Пульс в норме</Russian> + <Spanish>El Pulso es bueno</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_PULSE_OUTPUT_5"> + <English>You find no Heart Rate</English> + <Russian>Пульс не прощупывается</Russian> + <Spanish>No tiene Pulso</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_RESPONSE"> + <English>Response</English> + <Russian>Реакция</Russian> + <Spanish>Reacciona</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_RESPONSE_CONTENT"> + <English>You check response of patient</English> + <Russian>Вы проверяете реакцию раненого</Russian> + <Spanish>Compruebas si el paciente reacciona</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_RESPONSIVE"> + <English>%1 is responsive</English> + <Russian>%1 реагирует на раздражители</Russian> + <Spanish>%1 ha reaccionado</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_UNRESPONSIVE"> + <English>%1 is not responsive</English> + <Russian>%1 не реагирует</Russian> + <Spanish>%1 no reacciona</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_CHECK_REPONSE_YOU_CHECKED"> + <English>You checked %1</English> + <Russian>Вы осмотрели раненого %1</Russian> + <Spanish>Examinas a %1</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_BANDAGED"> + <English>Bandaged</English> + <Russian>Повязка наложена</Russian> + <Spanish>Vendado</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_APPLY_BANDAGE"> + <English>You bandage %1 (%2)</English> + <Russian>Вы перевязали раненого %1 (%2)</Russian> + <Spanish>Aplicas vendaje a %1 en %2</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_IS_BANDAGING_YOU"> + <English>%1 is bandaging you</English> + <Russian>%1 перевязывает вас</Russian> + <Spanish>%1 te está vendando</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_START_STITCHING_INJURIES"> + <English>You start stitching injures from %1 (%2)</English> + <Russian>Вы зашиваете ранения от %1 (%2)</Russian> + <Spanish>Estás suturando heridas de %1 en %2</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_STITCHING"> + <English>Stitching</English> + <Russian>Наложение швов</Russian> + <Spanish>Suturando</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_YOU_TREAT_AIRWAY"> + <English>You treat the airway of %1</English> + <Russian>Вы интубируете раненого %1</Russian> + <Spanish>Estás intubando a %1</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_AIRWAY"> + <English>Airway</English> + <Russian>Дыхательные пути</Russian> + <Spanish>Vías Aéreas</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_IS_TREATING_YOUR_AIRWAY"> + <English>%1 is treating your airway</English> + <Russian>%1 проводит вам интубацию</Russian> + <Spanish>%1 te está intubando</Spanish> + </Key> + <Key ID="STR_ACE_MEDICAL_DRAG"> + <English>Drag</English> + <German>Ziehen</German> + <Spanish>Arrastrar</Spanish> + <Polish>Ciągnij</Polish> + <Czech>Táhnout</Czech> + <Russian>Тащить</Russian> + <French>Tracter</French> + <Hungarian>Húzás</Hungarian> + <Portuguese>Arrastar</Portuguese> + <Italian>Trascina</Italian> + </Key> + <Key ID="STR_ACE_MEDICAL_CARRY"> + <English>Carry</English> + <German>Tragen</German> + <Spanish>Cargar</Spanish> + <Polish>Nieś</Polish> + <Czech>Nést</Czech> + <Russian>Нести</Russian> + <French>Porter</French> + <Hungarian>Cipelés</Hungarian> + <Portuguese>Carregar</Portuguese> + <Italian>Trasporta</Italian> + </Key> + <Key ID="STR_ACE_MEDICAL_RELEASE"> + <English>Release</English> + <German>Loslassen</German> + <Spanish>Soltar</Spanish> + <Polish>Połóż</Polish> + <Czech>Položit</Czech> + <Russian>Отпустить</Russian> + <French>Déposer</French> + <Hungarian>Elenged</Hungarian> + <Portuguese>Largar</Portuguese> + <Italian>Lascia</Italian> + </Key> + <Key ID="STR_ACE_MEDICAL_LOAD"> + <English>Load Patient Into</English> + <German>Patient Einladen</German> + <Spanish>Cargar el paciente en</Spanish> + <Polish>Załaduj pacjenta</Polish> + <Czech>Naložit pacianta do</Czech> + <Russian>Погрузить пациента в</Russian> + <French>Embarquer le Patient</French> + <Hungarian>Sebesült berakása</Hungarian> + <Portuguese>Carregar Paciente Em</Portuguese> + <Italian>Carica paziente nel</Italian> + </Key> + <Key ID="STR_ACE_MEDICAL_UNLOAD"> + <English>Unload Patient</English> + <German>Patient Ausladen</German> + <Spanish>Descargar el paciente</Spanish> + <Polish>Wyładuj pacjenta</Polish> + <Czech>Vyložit pacienta</Czech> + <Russian>Выгрузить пациента</Russian> + <French>Débarquer le Patient</French> + <Hungarian>Sebesült kihúzása</Hungarian> + <Portuguese>Descarregar Paciente</Portuguese> + <Italian>Scarica il paziente</Italian> + </Key> + <Key ID="STR_ACE_Medical_UnloadPatient"> + <English>Unload patient >></English> + </Key> + </Container> + </Package> +</Project> \ 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..f892c9aaab --- /dev/null +++ b/addons/microdagr/CfgVehicles.hpp @@ -0,0 +1,58 @@ +class CfgVehicles { + class Man; + class CAManBase: Man { + class ACE_SelfActions { + class ACE_Equipment { + class GVAR(openMicroDAGR) { + displayName = "$STR_ACE_microdagr_openUnit"; + condition = QUOTE(('ACE_microDAGR' in (items _player))); + statement = QUOTE([] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0.1; + icon = QUOTE(PATHTOF(data\icon_microDAGR.paa)); + hotkey = "G"; + }; + class GVAR(closeMicroDAGR) { + displayName = "$STR_ACE_microdagr_closeUnit"; + condition = QUOTE(GVAR(currentShowMode) != DISPLAY_MODE_CLOSED); + statement = QUOTE([DISPLAY_MODE_CLOSED] call FUNC(openDisplay)); + showDisabled = 0; + priority = 0; + icon = QUOTE(PATHTOF(data\icon_microDAGR.paa)); + // hotkey = "G"; + }; + }; + }; + }; + + 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.<br/>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..347c1b01de --- /dev/null +++ b/addons/microdagr/XEH_clientInit.sqf @@ -0,0 +1,74 @@ +//XEH_clientInit.sqf +#include "script_component.hpp" + +if (!hasInterface) exitWith {}; + +//Add Keybinds: +["ACE3", QGVAR(openGPS), (localize "STR_ACE_microdagr_openUnit"), +{ + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) exitWith {false}; + // Conditions: specific + if (!("ACE_microDAGR" in (items ace_player))) exitWith {false}; + [] call FUNC(openDisplay); + true; +}, +{false}, +[0xC7, [false, false, false]], false] call cba_fnc_addKeybind; //Home Key + +["ACE3", QGVAR(closeGPS), (localize "STR_ACE_microdagr_closeUnit"), +{ + // Conditions: canInteract + _exceptions = []; + if !(_exceptions call EGVAR(common,canInteract)) 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); + 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",...] <STRING> + * + * 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) <CONTROL> + * 1: Index <NUMBER> + * + * 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 <CONTROL> + * + * 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..62fb7f01ed --- /dev/null +++ b/addons/microdagr/functions/fnc_canShow.sqf @@ -0,0 +1,29 @@ +/* + * Author: PabstMirror + * Tests if the dagr can be shown in a mode + * + * Arguments: + * The display mode to test showing <NUMBER> + * + * Return Value: + * Nothing + * + * Example: + * [] call ace_microdagr_fnc_canShow + * + * Public: No + */ +#include "script_component.hpp" + +PARAMS_1(_showType); + +//Can always do closed or hidden +if (_showType in [DISPLAY_MODE_CLOSED, DISPLAY_MODE_HIDDEN]) exitWith {true}; + +//Can't interact then hide gps: TODO: any exceptions? +if (!([ACE_player, objNull, []] call EGVAR(common,canInteractWith))) exitWith {false}; + + //Can't have minimap up while zoomed in +if ((_showType == DISPLAY_MODE_DISPLAY) && {cameraview == "GUNNER"}) exitWith {false}; + +true 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 <STRING> + * 1: Waypoint Position ASL <ARRAY> + * + * 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 <NUMBER> + * + * 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 <ARRAY> + * + * 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 <CONTROL> + * 1: MouseButton <NUMBER> + * 2: MousePosX <NUMBER> + * 3: MousePosY <NUMBER> + * + * 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 <CONTROL> + * + * 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 <STRING> + * + * 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 <OBJECT> + * 1: synced units-not used <ARRAY> + * 2: Module Activated <BOOL> + * + * 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..14aa58f92b --- /dev/null +++ b/addons/microdagr/functions/fnc_openDisplay.sqf @@ -0,0 +1,98 @@ +/* + * Author: PabstMirror + * Changes the display mode of the microDAGR + * + * Arguments: + * 0: Display Mode to show the microDAGR in <NUMBER><OPTIONAL> + * + * 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 { + 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 ((ace_player != _player) || {!("ACE_microDAGR" in (items ace_player))} || {GVAR(currentShowMode) == DISPLAY_MODE_CLOSED}) then { + GVAR(currentShowMode) = DISPLAY_MODE_CLOSED; + [_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) <NUMBER> + * 1: Azimuth (Degrees) <NUMBER> + * 2: Inclination (Degrees) <NUMBER> + * + * 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 <NUMBER> + * + * 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..99c4495732 --- /dev/null +++ b/addons/microdagr/stringtable.xml @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Edited with tabler - 2015-03-10 --> +<Project name="ACE"> + <Package name="microdagr"> + <Key ID="STR_ACE_microdagr_itemName"> + <English>MicroDAGR GPS</English> + </Key> + <Key ID="STR_ACE_microdagr_itemDescription"> + <English>MicroDAGR advanced GPS receiver</English> + </Key> + <Key ID="STR_ACE_microdagr_settingUseMils"> + <English>Angular Unit:</English> + </Key> + <Key ID="STR_ACE_microdagr_settingMils"> + <English>Mils</English> + </Key> + <Key ID="STR_ACE_microdagr_settingShowWP"> + <English>Show Waypoints On Map:</English> + </Key> + <Key ID="STR_ACE_microdagr_settingDegrees"> + <English>Degrees</English> + </Key> + <Key ID="STR_ACE_microdagr_settingOn"> + <English>On</English> + <Czech>Zapnuto</Czech> + <French>Oui</French> + <German>Ein</German> + <Italian>Sì</Italian> + <Polish>Wł.</Polish> + <Portuguese>Ativar</Portuguese> + <Russian>Вкл.</Russian> + <Spanish>Sí</Spanish> + </Key> + <Key ID="STR_ACE_microdagr_settingOff"> + <English>Off</English> + <Czech>Vypnuto</Czech> + <French>Non</French> + <German>Aus</German> + <Italian>No</Italian> + <Polish>Wył.</Polish> + <Portuguese>Desativar</Portuguese> + <Russian>Выкл.</Russian> + <Spanish>No</Spanish> + </Key> + <Key ID="STR_ACE_microdagr_openUnit"> + <English>Open MicroDAGR</English> + </Key> + <Key ID="STR_ACE_microdagr_closeUnit"> + <English>Close MicroDAGR</English> + </Key> + <Key ID="STR_ACE_microdagr_wpEnterCords"> + <English>Enter Grid Cords:</English> + </Key> + <Key ID="STR_ACE_microdagr_wpEnterName"> + <English>Name of [%1]</English> + </Key> + <Key ID="STR_ACE_microdagr_controlMGRS"> + <English>MGRS-New</English> + </Key> + <Key ID="STR_ACE_microdagr_controlWGD"> + <English>WGD</English> + </Key> + <Key ID="STR_ACE_microdagr_controlRange"> + <English>Range:</English> + <German>Reichweite:</German> + </Key> + <Key ID="STR_ACE_microdagr_compasDirection"> + <English>Compass Direction</English> + </Key> + <Key ID="STR_ACE_microdagr_menuMark"> + <English>Mark</English> + </Key> + <Key ID="STR_ACE_microdagr_menuWaypoints"> + <English>Waypoints</English> + <German>Wegpunkte</German> + </Key> + <Key ID="STR_ACE_microdagr_menuConnectTo"> + <English>Connect To</English> + </Key> + <Key ID="STR_ACE_microdagr_menuSettings"> + <English>Settings</English> + <German>Einstellungen</German> + <Spanish>Configuración</Spanish> + </Key> + <Key ID="STR_ACE_microdagr_waypointsSet"> + <English>SetWP</English> + </Key> + <Key ID="STR_ACE_microdagr_waypointsAdd"> + <English>Add</English> + </Key> + <Key ID="STR_ACE_microdagr_waypointsDelete"> + <English>Delete</English> + <Czech>Smazat</Czech> + <French>Supprimer</French> + <German>Löschen</German> + <Italian>Elimina</Italian> + <Polish>Usuń</Polish> + <Portuguese>Excluir</Portuguese> + <Russian>Удалить</Russian> + <Spanish>Suprimir</Spanish> + </Key> + </Package> +</Project> \ No newline at end of file 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/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