From 7b2d736ba35fb2c6808311ba61065076da4c9401 Mon Sep 17 00:00:00 2001 From: ulteq Date: Fri, 28 Oct 2016 22:25:47 +0200 Subject: [PATCH 01/33] Fix Kestrel4500 wind speed calculation * Cosine was applied twice (on some screens) --- addons/kestrel4500/functions/fnc_generateOutputData.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf index c3bce5efa2..ccc2ab57e3 100644 --- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf +++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf @@ -107,7 +107,7 @@ if (GVAR(referenceHeadingMenu) == 0) then { }; case 2: { // Wind SPD if (!GVAR(MinAvgMax)) then { - _textCenterBig = Str(round(abs(_windSpeed) * 10) / 10); + _textCenterBig = Str(round(_windSpeed * 10) / 10); } else { _textCenterLine1Left = "Max"; _textCenterLine2Left = "Avg"; @@ -134,7 +134,7 @@ if (GVAR(referenceHeadingMenu) == 0) then { if (!GVAR(MinAvgMax)) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { _textCenterBig = Str(round(abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10); - _textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)]; + _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_playerDir)]; } else { _textCenterBig = Str(round(abs(sin(GVAR(RefHeading)) * _windSpeed) * 10) / 10); _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)]; @@ -166,7 +166,7 @@ if (GVAR(referenceHeadingMenu) == 0) then { if (!GVAR(MinAvgMax)) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { _textCenterBig = Str(round(cos(GVAR(RefHeading) - _playerDir) * _windSpeed * 10) / 10); - _textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)]; + _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_playerDir)]; } else { _textCenterBig = Str(round(cos(GVAR(RefHeading)) * _windSpeed * 10) / 10); _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)]; From 0e364b0d48122b85312bb9bd139ead025194b0f6 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 29 Oct 2016 13:49:24 +0200 Subject: [PATCH 02/33] Adds realistic names for the QBZ-95 camo variants Green Hex and Hex variants of: * QBZ-95-1 * QBZ-95-1 GL * QBZ-95-1 LSW --- addons/realisticnames/CfgWeapons.hpp | 19 +++++++ addons/realisticnames/stringtable.xml | 78 +++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/addons/realisticnames/CfgWeapons.hpp b/addons/realisticnames/CfgWeapons.hpp index 2654dc0df7..3bc97b14ab 100644 --- a/addons/realisticnames/CfgWeapons.hpp +++ b/addons/realisticnames/CfgWeapons.hpp @@ -586,14 +586,33 @@ class CfgWeapons { class arifle_CTAR_blk_F: arifle_CTAR_base_F { displayName = CSTRING(arifle_CTAR_blk); }; + class arifle_CTAR_ghex_F: arifle_CTAR_base_F { + displayName = CSTRING(arifle_CTAR_ghex); + }; + class arifle_CTAR_hex_F: arifle_CTAR_base_F { + displayName = CSTRING(arifle_CTAR_hex); + }; class arifle_CTAR_GL_base_F; class arifle_CTAR_GL_blk_F: arifle_CTAR_GL_base_F { displayName = CSTRING(arifle_CTAR_GL_blk); }; + class arifle_CTAR_GL_ghex_F: arifle_CTAR_GL_base_F { + displayName = CSTRING(arifle_CTAR_GL_ghex); + }; + class arifle_CTAR_GL_hex_F: arifle_CTAR_GL_base_F { + displayName = CSTRING(arifle_CTAR_GL_hex); + }; + class arifle_CTARS_base_F; class arifle_CTARS_blk_F: arifle_CTARS_base_F { displayName = CSTRING(arifle_CTARS_blk); }; + class arifle_CTARS_ghex_F: arifle_CTARS_base_F { + displayName = CSTRING(arifle_CTARS_ghex); + }; + class arifle_CTARS_hex_F: arifle_CTARS_base_F { + displayName = CSTRING(arifle_CTARS_hex); + }; // QBU-88 class DMR_07_base_F; diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 7517e7b937..9821346a5a 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -2223,6 +2223,32 @@ QBZ-95-1 (Preto) QBZ-95-1 (黒) + + QBZ-95-1 (Green Hex) + QBZ-95-1 (Hex Grün) + QBZ-95-1 (Hex Verde) + QBZ-95-1 (zielony hex) + QBZ-95-1 (Zelený Hex) + QBZ-95-1 (Hex Verte) + QBZ-95-1 (Зелёный Hex) + QBZ-95-1 (Verde Hex) + QBZ-95-1 (Zöld Hex) + QBZ-95-1 (Hex Verde) + QBZ-95-1 (緑蜂巣) + + + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (Hex) + QBZ-95-1 (蜂巣) + QBZ-95-1 GL (Black) QBZ-95-1 GL (Černá) @@ -2236,6 +2262,32 @@ QBZ-95-1 GL (Preto) QBZ-95-1 GL (黒) + + QBZ-95-1 GL (Green Hex) + QBZ-95-1 GL (Hex Grün) + QBZ-95-1 GL (Hex Verde) + QBZ-95-1 GL (zielony hex) + QBZ-95-1 GL (Zelený Hex) + QBZ-95-1 GL (Hex Verte) + QBZ-95-1 GL (Зелёный Hex) + QBZ-95-1 GL (Verde Hex) + QBZ-95-1 GL (Zöld Hex) + QBZ-95-1 GL (Hex Verde) + QBZ-95-1 GL (緑蜂巣) + + + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (Hex) + QBZ-95-1 GL (蜂巣) + QBZ-95-1 LSW (Black) QBZ-95-1 LSW (Černá) @@ -2249,6 +2301,32 @@ QBZ-95-1 LSW (Preto) QBZ-95-1 LSW (黒) + + QBZ-95-1 LSW (Green Hex) + QBZ-95-1 LSW (Hex Grün) + QBZ-95-1 LSW (Hex Verde) + QBZ-95-1 LSW (zielony hex) + QBZ-95-1 LSW (Zelený Hex) + QBZ-95-1 LSW (Hex Verte) + QBZ-95-1 LSW (Зелёный Hex) + QBZ-95-1 LSW (Verde Hex) + QBZ-95-1 LSW (Zöld Hex) + QBZ-95-1 LSW (Hex Verde) + QBZ-95-1 LSW (緑蜂巣) + + + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (Hex) + QBZ-95-1 LSW (蜂巣) + QBU-88 (Black) QBU-88 (Černá) From 14af5577c6d5da8cfe16a4f77278670ab903e7c0 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 30 Oct 2016 00:28:25 +0200 Subject: [PATCH 03/33] Updates the ballistics module to support Apex * Made the new ammo types ready for advanced ballistics * Made the new weapons ready for advanced ballistics * Recalculated all initSpeed coefficients * Updated the airFrictionAnalysis report --- addons/ballistics/CfgAmmo.hpp | 56 ++++++++++--- addons/ballistics/CfgMagazines.hpp | 30 ++++++- addons/ballistics/CfgWeapons.hpp | 123 ++++++++++++++++++++++------- extras/airFrictionAnalysis.txt | 44 +++++++---- 4 files changed, 195 insertions(+), 58 deletions(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 0819f8aa4b..652cc8ece7 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -79,8 +79,8 @@ class CfgAmmo { class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red { nvgOnly = 1; }; - class ACE_545x39_Ball_7N6M : B_556x45_Ball { - airFriction=-0.00114744; + class B_545x39_Ball_F : BulletBase { + airFriction=-0.00116278; caliber=0.6; deflecting=18; hit=7; @@ -93,12 +93,14 @@ class CfgAmmo { ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; - ACE_muzzleVelocities[]={780, 880, 920}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; + ACE_muzzleVelocities[]={735, 883, 892}; + ACE_barrelLengths[]={206.5, 414.02, 508.0}; }; + class ACE_545x39_Ball_7N6M : B_545x39_Ball_F { + } class B_556x45_Ball_Tracer_Green; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { - airFriction=-0.00114744; + airFriction=-0.00116278; caliber=0.6; deflecting=18; hit=7; @@ -113,12 +115,26 @@ class CfgAmmo { ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; - ACE_muzzleVelocities[]={785, 883, 925}; - ACE_barrelLengths[]={254.0, 414.02, 508.0}; + ACE_muzzleVelocities[]={740, 886, 897}; + ACE_barrelLengths[]={206.5, 414.02, 508.0}; }; class B_56x15_dual: BulletBase { tracerScale = 0.5; }; + class B_580x42_Ball_F: BulletBase { + airFriction=-0.00117956; + typicalSpeed=930; + ACE_caliber=5.9944; + ACE_bulletLength=24.2; + ACE_bulletMass=4.15; + ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; + ACE_ballisticCoefficients[]={0.156}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=7; + ACE_muzzleVelocities[]={790, 930, 970}; + ACE_barrelLengths[]={369.0, 463.0, 600.0}; + }; class B_65x39_Caseless : BulletBase { airFriction=-0.00075308; typicalSpeed=800; @@ -439,7 +455,7 @@ class CfgAmmo { ACE_muzzleVelocities[]={620, 655, 675}; ACE_barrelLengths[]={228.6, 406.4, 508.0}; }; - class ACE_762x39_Ball : B_762x51_Ball { + class B_762x39_Ball_F : BulletBase { airFriction=-0.00151621; hit=12; caliber=1.5; @@ -455,6 +471,8 @@ class CfgAmmo { ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; + class ACE_762x39_Ball : B_762x39_Ball_F { + }; class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green { airFriction=-0.00151621; hit=12; @@ -474,7 +492,7 @@ class CfgAmmo { ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball : BulletBase { - airFriction=-0.00226847; + airFriction=-0.00208292; typicalSpeed=390; tracerScale = 0.5; hit=6; @@ -486,8 +504,8 @@ class CfgAmmo { ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; - ACE_muzzleVelocities[]={440, 460, 480}; - ACE_barrelLengths[]={101.6, 127.0, 228.6}; + ACE_muzzleVelocities[]={380, 390, 420, 435}; + ACE_barrelLengths[]={93.5, 101.6, 127.0, 228.6}; }; class B_9x21_Ball_Tracer_Green: B_9x21_Ball { tracerScale = 0.5; @@ -508,7 +526,7 @@ class CfgAmmo { ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; class ACE_9x19_Ball : B_9x21_Ball { - airFriction=-0.0018577; + airFriction=-0.0019835; typicalSpeed=370; hit=6; ACE_caliber=9.017; @@ -771,6 +789,20 @@ class CfgAmmo { ACE_muzzleVelocities[]={230, 250, 285}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; + class B_50BW_Ball_F : BulletBase { + airFriction=-0.00202645; + typicalSpeed=550; + ACE_caliber=12.7; + ACE_bulletLength=24.13; + ACE_bulletMass=21.7076; + ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; + ACE_ballisticCoefficients[]={0.21}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ASM"; + ACE_dragModel=1; + ACE_muzzleVelocities[]={510, 550, 596}; + ACE_barrelLengths[]={304.8, 406.4, 609.6}; + }; class B_19mm_HE: BulletBase { tracerScale = 1; }; diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index 931a6c2309..4c79e7ef51 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -2,6 +2,12 @@ class CfgMagazines { class CA_Magazine; + class 30Rnd_580x42_Mag_F: CA_Magazine { + initSpeed = 930; + }; + class 100Rnd_580x42_Mag_F: 30Rnd_580x42_Mag_F { + initSpeed = 930; + }; class 30Rnd_65x39_caseless_mag: CA_Magazine { initSpeed = 760; }; @@ -47,6 +53,10 @@ class CfgMagazines { descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription); }; + class 30Rnd_545x39_Mag_F: CA_Magazine { + initSpeed = 735; + }; + class 30Rnd_556x45_Stanag: CA_Magazine { }; class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag { @@ -84,6 +94,14 @@ class CfgMagazines { picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa"; }; + class 200Rnd_556x45_Box_F: CA_Magazine { + initSpeed = 872; + }; + + class 30Rnd_762x39_Mag_F: CA_Magazine { + initSpeed = 715; + }; + class 20Rnd_762x51_Mag: CA_Magazine { initSpeed = 833; }; @@ -276,7 +294,7 @@ class CfgMagazines { class 30Rnd_9x21_Mag: CA_Magazine { - initSpeed = 450; + initSpeed = 390; }; class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag { author = ECSTRING(common,ACETeam); @@ -287,6 +305,10 @@ class CfgMagazines { initSpeed = 370; }; + class 10Rnd_50BW_Mag_F: CA_Magazine { + initSpeed = 552; + }; + class 11Rnd_45ACP_Mag: CA_Magazine { initSpeed = 250; }; @@ -307,8 +329,12 @@ class CfgMagazines { initSpeed = 250; }; + class 10Rnd_9x21_Mag: 30Rnd_9x21_Mag { + initSpeed = 390; + }; + class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag { - initSpeed = 450; + initSpeed = 390; }; class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag { author = ECSTRING(common,ACETeam); diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 2446aeb3b3..51f815f938 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -27,6 +27,12 @@ class CfgWeapons { }; }; + class DMR_07_base_F: Rifle_Long_Base_F { + initSpeed = -0.982908; + ACE_barrelTwist = 228.6; + ACE_barrelLength = 640.0; + }; + class DMR_06_base_F: Rifle_Long_Base_F { class Single: Mode_SemiAuto { dispersion = 0.00029; // radians. Equal to 1.00 MOA. @@ -112,7 +118,7 @@ class CfgWeapons { "ACE_30Rnd_65x47_Scenar_mag", "ACE_30Rnd_65_Creedmor_mag" }; - initSpeed = -1.018; + initSpeed = -1.01842; ACE_barrelTwist=228.6; ACE_barrelLength=457.2; class Single: Single { @@ -142,6 +148,14 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; + initSpeed = -0.859238; + ACE_barrelTwist=177.8; + ACE_barrelLength=264.0; + }; + class arifle_SPAR_02_base_F: Rifle_Base_F { + initSpeed = -0.934282; + ACE_barrelTwist=177.8; + ACE_barrelLength=368.0; }; class arifle_SPAR_03_base_F: Rifle_Base_F { magazines[] = { @@ -154,6 +168,9 @@ class CfgWeapons { "ACE_20Rnd_762x51_M993_AP_Mag", "ACE_20Rnd_762x51_Mag_SD" }; + initSpeed = -0.984394; + ACE_barrelTwist=279.4; + ACE_barrelLength=508.0; }; /* Other */ @@ -163,21 +180,26 @@ class CfgWeapons { "200Rnd_65x39_cased_Box_Tracer", "ACE_200Rnd_65x39_cased_Box_Tracer_Dim" }; - initSpeed = -0.9763; + initSpeed = -0.976974; ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; class LMG_Zafir_F: Rifle_Long_Base_F { - initSpeed = -1.0; + initSpeed = -1.00333; ACE_barrelTwist=304.8; ACE_barrelLength=459.74; }; + class LMG_03_base_F: Rifle_Long_Base_F { + initSpeed = -1.02002; + ACE_barrelTwist=177.8; + ACE_barrelLength=414.02; + }; class Tavor_base_F: Rifle_Base_F {}; class mk20_base_F: Rifle_Base_F {}; /* SMGs */ class SDAR_base_F: Rifle_Base_F { - initSpeed = -0.989; + initSpeed = -1.211; class Single: Mode_SemiAuto { dispersion = 0.0008727; // radians. Equal to 3 MOA. }; @@ -190,9 +212,6 @@ class CfgWeapons { dispersion = 0.0008727; // radians. Equal to 3 MOA. }; }; - class pdw2000_base_F: Rifle_Short_Base_F {}; - class SMG_01_Base: Rifle_Short_Base_F {}; - class SMG_02_base_F: Rifle_Base_F {}; /* Pistols */ @@ -200,13 +219,13 @@ class CfgWeapons { class Pistol_Base_F: Pistol {}; class hgun_P07_F: Pistol_Base_F { - initSpeed = -0.9778; + initSpeed = -1.0; ACE_barrelTwist=254.0; ACE_barrelLength=101.6; }; class hgun_Rook40_F: Pistol_Base_F { - initSpeed = -1.0; + initSpeed = -1.03077; ACE_barrelTwist=254.0; ACE_barrelLength=111.76; }; @@ -228,18 +247,57 @@ class CfgWeapons { ACE_barrelTwist=406.4; ACE_barrelLength=76.2; }; - class hgun_PDW2000_F: pdw2000_base_F { - initSpeed = -1.157; + + class hgun_Pistol_01_F: Pistol_Base_F { + initSpeed = -0.974359; + ACE_barrelTwist=254.0; + ACE_barrelLength=93.5; + }; + + class pdw2000_base_F: Rifle_Short_Base_F { + initSpeed = -1.09615; ACE_barrelTwist=228.6; ACE_barrelLength=177.8; }; + + /* Rifles */ + class arifle_AKS_base_F: Rifle_Base_F { + initSpeed = -1.00419; + ACE_barrelTwist=160.02; + ACE_barrelLength=210.82; + }; + class arifle_AKM_base_F: Rifle_Base_F { + initSpeed = -1.0014; + ACE_barrelTwist = 199.898; + ACE_barrelLength = 414.02; + }; + class arifle_AK12_base_F: Rifle_Base_F { + initSpeed = -1.0014; + ACE_barrelTwist = 199.898; + ACE_barrelLength = 414.02; + }; + class arifle_CTAR_base_F: Rifle_Base_F { + initSpeed = -1.0; + ACE_barrelTwist = 244.0; + ACE_barrelLength = 463.0; + }; + class arifle_CTARS_base_F: Rifle_Base_F { + initSpeed = -1.04301; + ACE_barrelTwist = 244.0; + ACE_barrelLength = 600.0; + }; + class arifle_ARX_base_F: Rifle_Base_F { + initSpeed = -1.02052; + ACE_barrelTwist = 228.6; + ACE_barrelLength = 463.0; + }; class arifle_Katiba_F: arifle_katiba_Base_F { magazines[] = { "30Rnd_65x39_caseless_green", "30Rnd_65x39_caseless_green_mag_Tracer", "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; - initSpeed = -1.08; + initSpeed = -1.08355; ACE_barrelTwist=203.2; ACE_barrelLength=728.98; }; @@ -249,7 +307,7 @@ class CfgWeapons { "30Rnd_65x39_caseless_green_mag_Tracer", "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; - initSpeed = -1.07; + initSpeed = -1.07105; ACE_barrelTwist=203.2; ACE_barrelLength=680.72; }; @@ -259,7 +317,7 @@ class CfgWeapons { "30Rnd_65x39_caseless_green_mag_Tracer", "ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim" }; - initSpeed = -1.08; + initSpeed = -1.08355; ACE_barrelTwist=203.2; ACE_barrelLength=728.98; }; @@ -269,7 +327,7 @@ class CfgWeapons { "30Rnd_65x39_caseless_mag_Tracer", "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; - initSpeed = -0.99; + initSpeed = -0.990132; ACE_barrelTwist=228.6; ACE_barrelLength=368.3; }; @@ -295,7 +353,7 @@ class CfgWeapons { "30Rnd_65x39_caseless_mag_Tracer", "ACE_30Rnd_65x39_caseless_mag_Tracer_Dim" }; - initSpeed = -0.965; + initSpeed = -0.963816; ACE_barrelTwist=203.2; ACE_barrelLength=266.7; }; @@ -323,11 +381,16 @@ class CfgWeapons { ACE_barrelTwist=285.75; ACE_barrelLength=457.2; }; - class SMG_02_F: SMG_02_base_F { - initSpeed = -1.054; + class SMG_02_base_F: Rifle_Base_F { + initSpeed = -1.10288; ACE_barrelTwist=254.0; ACE_barrelLength=195.58; }; + class SMG_05_base_F: Rifle_Short_Base_F { + initSpeed = -1.04058; + ACE_barrelTwist=254.0; + ACE_barrelLength=115.0; + }; class arifle_TRG20_F: Tavor_base_F { magazines[] = { "30Rnd_556x45_Stanag", @@ -358,7 +421,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; - initSpeed = -0.989; + initSpeed = -0.988043; ACE_barrelTwist=177.8; ACE_barrelLength=459.74; }; @@ -375,7 +438,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; - initSpeed = -0.989; + initSpeed = -0.988043; ACE_barrelTwist=177.8; ACE_barrelLength=459.74; }; @@ -398,7 +461,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; - initSpeed = -0.98; + initSpeed = -0.980978; ACE_barrelTwist=177.8; ACE_barrelLength=441.96; }; @@ -415,7 +478,7 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; - initSpeed = -0.956; + initSpeed = -0.962648; ACE_barrelTwist=177.8; ACE_barrelLength=406.4; }; @@ -432,12 +495,12 @@ class CfgWeapons { "ACE_30Rnd_556x45_Stanag_Mk318_mag", "ACE_30Rnd_556x45_Stanag_Tracer_Dim" }; - initSpeed = -0.956; + initSpeed = -0.962648; ACE_barrelTwist=177.8; ACE_barrelLength=406.4; }; - class SMG_01_F: SMG_01_Base { - initSpeed = -1.016; + class SMG_01_Base: Rifle_Short_Base_F { + initSpeed = -1.0175; ACE_barrelTwist=406.4; ACE_barrelLength=139.7; }; @@ -461,7 +524,7 @@ class CfgWeapons { "ACE_20Rnd_762x51_M993_AP_Mag", "ACE_20Rnd_762x51_Mag_SD" }; - initSpeed = -0.9724; + initSpeed = -0.972389; ACE_barrelTwist=304.8; ACE_barrelLength=457.2; }; @@ -498,7 +561,7 @@ class CfgWeapons { "ACE_20Rnd_762x67_Mk248_Mod_1_Mag", "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag" }; - initSpeed = -0.962; + initSpeed = -0.961749; ACE_barrelTwist=254.0; ACE_barrelLength=508.0; }; @@ -513,7 +576,7 @@ class CfgWeapons { "ACE_20Rnd_762x51_M993_AP_Mag", "ACE_20Rnd_762x51_Mag_SD" }; - initSpeed = -0.9843; + initSpeed = -0.984394; ACE_barrelTwist=254.0; ACE_barrelLength=508.0; }; @@ -538,12 +601,12 @@ class CfgWeapons { "ACE_20Rnd_762x51_M993_AP_Mag", "ACE_20Rnd_762x51_Mag_SD" }; - initSpeed = -0.9916; + initSpeed = -0.992197; ACE_barrelTwist=304.8; ACE_barrelLength=558.8; }; class MMG_01_hex_F: MMG_01_base_F { - initSpeed = -1.0; + initSpeed = -0.997073; ACE_barrelTwist=359.918; ACE_barrelLength=549.91; }; diff --git a/extras/airFrictionAnalysis.txt b/extras/airFrictionAnalysis.txt index 722077578b..0f825e55d5 100644 --- a/extras/airFrictionAnalysis.txt +++ b/extras/airFrictionAnalysis.txt @@ -31,13 +31,21 @@ Max. drop difference (cm): 1.25 Max. tof difference (ms): 7.0 Optimal airFriction: 0.00123272 ########################################## -Ammo Class: ACE_545x39_Ball_7N6M +Ammo Class: B_545x39_Ball_F MaxRanges (m): [400, 500] -MuzzleVelocities (m/s): [780, 880, 920] -Max. velocity difference (m/s): 19.71 -Max. drop difference (cm): 2.04 +MuzzleVelocities (m/s): [735, 892] +Max. velocity difference (m/s): 23.07 +Max. drop difference (cm): 3.76 +Max. tof difference (ms): 12.0 +Optimal airFriction: 0.00116278 +########################################## +Ammo Class: B_580x42_Ball_F +MaxRanges (m): [500, 500] +MuzzleVelocities (m/s): [930, 970] +Max. velocity difference (m/s): 24.7 +Max. drop difference (cm): 1.51 Max. tof difference (ms): 8.0 -Optimal airFriction: 0.00114744 +Optimal airFriction: 0.00117956 ########################################## Ammo Class: B_65x39_Caseless MaxRanges (m): [400, 800, 800] @@ -247,6 +255,14 @@ Max. drop difference (cm): 14.52 Max. tof difference (ms): 29.0 Optimal airFriction: 0.00069611 ########################################## +Ammo Class: B_50BW_Ball_F +MaxRanges (m): [300, 400] +MuzzleVelocities (m/s): [510, 596] +Max. velocity difference (m/s): 29.6 +Max. drop difference (cm): 2.19 +Max. tof difference (ms): 18.0 +Optimal airFriction: 0.00202645 +########################################## Ammo Class: B_127x99_Ball MaxRanges (m): [1300, 1300] MuzzleVelocities (m/s): [895, 905] @@ -280,12 +296,12 @@ Max. tof difference (ms): 9.0 Optimal airFriction: 0.00049899 ########################################## Ammo Class: B_9x21_Ball -MaxRanges (m): [200, 300, 300] -MuzzleVelocities (m/s): [440, 460, 480] -Max. velocity difference (m/s): 37.94 -Max. drop difference (cm): 5.27 +MaxRanges (m): [200, 300] +MuzzleVelocities (m/s): [380, 420] +Max. velocity difference (m/s): 34.77 +Max. drop difference (cm): 4.7 Max. tof difference (ms): 31.0 -Optimal airFriction: 0.00226847 +Optimal airFriction: 0.00208292 ########################################## Ammo Class: ACE_9x18_Ball_57N181S MaxRanges (m): [100, 200, 200] @@ -298,10 +314,10 @@ Optimal airFriction: 0.00190333 Ammo Class: ACE_9x19_Ball MaxRanges (m): [100, 200, 200] MuzzleVelocities (m/s): [340, 370, 400] -Max. velocity difference (m/s): 17.59 -Max. drop difference (cm): 6.56 -Max. tof difference (ms): 10.0 -Optimal airFriction: 0.0018577 +Max. velocity difference (m/s): 23.95 +Max. drop difference (cm): 3.75 +Max. tof difference (ms): 17.0 +Optimal airFriction: 0.0019835 ########################################## Ammo Class: ACE_10x25_Ball MaxRanges (m): [200, 300, 300] From c3f967e365defd1aeb7e5e5adf1407ae6f0f6062 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 30 Oct 2016 12:05:17 +0100 Subject: [PATCH 04/33] Updates the ATragMX gun list --- addons/atragmx/XEH_postInit.sqf | 11 ++++++++--- addons/atragmx/script_component.hpp | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 4a68aac749..992f9e657a 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -10,9 +10,10 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ], ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ], - ["12.7x99mm API" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.99, 12.9, 38.10, 0.670, 1, "ASM" ], ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ], + + [".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" ], [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" ], @@ -38,11 +39,15 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"], ["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"], ["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"], - + + ["5.8x42mm DBP87" , 930, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.156, 7, "ICAO" ], + ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ], ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ], ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ], - ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]]; + ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ], + + ["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.168, 7, "ICAO"]]; [] call FUNC(clear_user_data); profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp index 0eae4ee5a0..3b09c0ad2f 100644 --- a/addons/atragmx/script_component.hpp +++ b/addons/atragmx/script_component.hpp @@ -16,4 +16,4 @@ #include "\z\ace\addons\main\script_macros.hpp" -#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.7 +#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.8 From 9f56ba50c1c1c711a5d6b5826cacfa75fc91a732 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 30 Oct 2016 18:43:43 -0500 Subject: [PATCH 05/33] Add semi-colon --- addons/ballistics/CfgAmmo.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 652cc8ece7..065dcdf17d 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -97,7 +97,7 @@ class CfgAmmo { ACE_barrelLengths[]={206.5, 414.02, 508.0}; }; class ACE_545x39_Ball_7N6M : B_545x39_Ball_F { - } + }; class B_556x45_Ball_Tracer_Green; class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green { airFriction=-0.00116278; From ace24d02829ab8eeb9b49e2dfe9f50933ec3d357 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 30 Oct 2016 18:46:55 -0500 Subject: [PATCH 06/33] Fix ubc --- addons/ballistics/CfgMagazines.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index 4c79e7ef51..efde366d8c 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -329,11 +329,10 @@ class CfgMagazines { initSpeed = 250; }; - class 10Rnd_9x21_Mag: 30Rnd_9x21_Mag { + class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag { initSpeed = 390; }; - - class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag { + class 10Rnd_9x21_Mag: 16Rnd_9x21_Mag { initSpeed = 390; }; class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag { From e60df02758e9dd997fb591ba8dfcbe2876c3b6ea Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 31 Oct 2016 15:11:45 -0500 Subject: [PATCH 07/33] Update CBA macros in tools (#4620) --- .../cba/addons/main/script_macros_common.hpp | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/tools/cba/addons/main/script_macros_common.hpp b/tools/cba/addons/main/script_macros_common.hpp index 6ec4906fff..a847909490 100644 --- a/tools/cba/addons/main/script_macros_common.hpp +++ b/tools/cba/addons/main/script_macros_common.hpp @@ -142,7 +142,7 @@ Author: #define LOG_SYS(LEVEL,MESSAGE) LOG_SYS_FORMAT(LEVEL,MESSAGE) call CBA_fnc_log #endif -#define LOG_SYS_FILELINENUMBERS(LEVEL,MESSAGE) LOG_SYS(LEVEL,format [ARR_4('%1 File: %2 Line: %3',MESSAGE,__FILE__,__LINE__ + 1)]) +#define LOG_SYS_FILELINENUMBERS(LEVEL,MESSAGE) LOG_SYS(LEVEL,format [ARR_4('%1 %2:%3',MESSAGE,__FILE__,__LINE__ + 1)]) /* ------------------------------------------- Macro: LOG() @@ -270,7 +270,7 @@ Example: Author: Spooner ------------------------------------------- */ -#define ERROR(MESSAGE) ['PREFIX', 'COMPONENT', MESSAGE, nil, __FILE__, __LINE__ + 1] call CBA_fnc_error +#define ERROR(MESSAGE) LOG_SYS_FILELINENUMBERS('ERROR',MESSAGE) #define ERROR_1(MESSAGE,ARG1) ERROR(FORMAT_1(MESSAGE,ARG1)) #define ERROR_2(MESSAGE,ARG1,ARG2) ERROR(FORMAT_2(MESSAGE,ARG1,ARG2)) #define ERROR_3(MESSAGE,ARG1,ARG2,ARG3) ERROR(FORMAT_3(MESSAGE,ARG1,ARG2,ARG3)) @@ -280,6 +280,33 @@ Author: #define ERROR_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR(FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7)) #define ERROR_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR(FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8)) +/* ------------------------------------------- +Macro: ERROR_MSG() + Record a critical error in the RPT log and display on screen error message. + + Newlines (\n) in the MESSAGE will be put on separate lines. + +Parameters: + MESSAGE - Message to record + +Example: + (begin example) + ERROR_MSG("value of frog not found in config ...yada...yada..."); + (end) + +Author: + commy2 +------------------------------------------- */ +#define ERROR_MSG(MESSAGE) ['PREFIX', 'COMPONENT', nil, MESSAGE, __FILE__, __LINE__ + 1] call CBA_fnc_error +#define ERROR_MSG_1(MESSAGE,ARG1) ERROR_MSG(FORMAT_1(MESSAGE,ARG1)) +#define ERROR_MSG_2(MESSAGE,ARG1,ARG2) ERROR_MSG(FORMAT_2(MESSAGE,ARG1,ARG2)) +#define ERROR_MSG_3(MESSAGE,ARG1,ARG2,ARG3) ERROR_MSG(FORMAT_3(MESSAGE,ARG1,ARG2,ARG3)) +#define ERROR_MSG_4(MESSAGE,ARG1,ARG2,ARG3,ARG4) ERROR_MSG(FORMAT_4(MESSAGE,ARG1,ARG2,ARG3,ARG4)) +#define ERROR_MSG_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5) ERROR_MSG(FORMAT_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5)) +#define ERROR_MSG_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) ERROR_MSG(FORMAT_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6)) +#define ERROR_MSG_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR_MSG(FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7)) +#define ERROR_MSG_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR_MSG(FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8)) + /* ------------------------------------------- Macro: ERROR_WITH_TITLE() Record a critical error in the RPT log. @@ -287,8 +314,6 @@ Macro: ERROR_WITH_TITLE() The title can be specified (in the heading is always just "ERROR") Newlines (\n) in the MESSAGE will be put on separate lines. - TODO: Popup an error dialog & throw an exception. - Parameters: TITLE - Title of error message MESSAGE - Body of error message @@ -302,6 +327,14 @@ Author: Spooner ------------------------------------------- */ #define ERROR_WITH_TITLE(TITLE,MESSAGE) ['PREFIX', 'COMPONENT', TITLE, MESSAGE, __FILE__, __LINE__ + 1] call CBA_fnc_error +#define ERROR_WITH_TITLE_1(TITLE,MESSAGE,ARG1) ERROR_WITH_TITLE(TITLE,FORMAT_1(MESSAGE,ARG1)) +#define ERROR_WITH_TITLE_2(TITLE,MESSAGE,ARG1,ARG2) ERROR_WITH_TITLE(TITLE,FORMAT_2(MESSAGE,ARG1,ARG2)) +#define ERROR_WITH_TITLE_3(TITLE,MESSAGE,ARG1,ARG2,ARG3) ERROR_WITH_TITLE(TITLE,FORMAT_3(MESSAGE,ARG1,ARG2,ARG3)) +#define ERROR_WITH_TITLE_4(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4) ERROR_WITH_TITLE(TITLE,FORMAT_4(MESSAGE,ARG1,ARG2,ARG3,ARG4)) +#define ERROR_WITH_TITLE_5(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5) ERROR_WITH_TITLE(TITLE,FORMAT_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5)) +#define ERROR_WITH_TITLE_6(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) ERROR_WITH_TITLE(TITLE,FORMAT_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6)) +#define ERROR_WITH_TITLE_7(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR_WITH_TITLE(TITLE,FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7)) +#define ERROR_WITH_TITLE_8(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR_WITH_TITLE(TITLE,FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8)) /* ------------------------------------------- Macro: MESSAGE_WITH_TITLE() From 9e37dc1192c9e4a54953cd126126f98debe4ed2f Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 1 Nov 2016 13:50:00 +0100 Subject: [PATCH 08/33] Fix make.py wiki lists --- .../wiki/development/setting-up-the-development-environment.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/wiki/development/setting-up-the-development-environment.md b/docs/wiki/development/setting-up-the-development-environment.md index c0333ac590..f2cdfc01ab 100644 --- a/docs/wiki/development/setting-up-the-development-environment.md +++ b/docs/wiki/development/setting-up-the-development-environment.md @@ -72,14 +72,17 @@ To start the game using this build, you can use the following modline: ## 4.3 Creating a Release Build To create a complete build of ACE3 that you can use without the source files you will need to: + - Ensure `.hpp` is **NOT** in pboProject's "Exclude From Pbo" list When the requirements are met: + - Execute `make.py version increment_build force check_external release` in the `tools` folder, replacing `` with the part of version you want to increment (options described below) This will populate the `release` folder with binarized PBOs, compiled extensions, copied extras, bisigns and a bikey. Additionally, an archive file will also be created in the folder. The folder and archive handle like those of any other mod. Different `make.py` command line options include: + - `version` - update version number in all files and leave them in working directory (leaving this out will still update the version in all files present in the `release` folder, but they will be reverted to not disturb the working directory) - `increment_build` - increments _build_ version number - `increment_patch` - increments _patch_ version number (ignored with `increment_minor` or `increment_major`) From 7d3d3ad47d3f749acab626316103151e245793a5 Mon Sep 17 00:00:00 2001 From: bux578 Date: Wed, 2 Nov 2016 11:46:50 +0100 Subject: [PATCH 09/33] add first draft of acerep --- docs/_posts/2016-11-03-ace3-version381.md | 46 +++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 docs/_posts/2016-11-03-ace3-version381.md diff --git a/docs/_posts/2016-11-03-ace3-version381.md b/docs/_posts/2016-11-03-ace3-version381.md new file mode 100644 index 0000000000..781c99eece --- /dev/null +++ b/docs/_posts/2016-11-03-ace3-version381.md @@ -0,0 +1,46 @@ +--- +title: ACEREP #00007 +description: Status report on ACE3 version 3.8.1 +parent: posts +image: /img/news/160912_grenade.jpg +author: bux +layout: post +--- + +Just about two month ago we've released 3.7.0. A version that had most of the bugs fixed even before the official release. For the first time we were supplying users interested in helping us with pre release versions of the mod - so called release candidates. Quite a lot of communities tested the several release candidates and provided us with very valuable feedback. Especially on bugs and quirks that are near impossible to test alone. + + + +A big shoutout to those who helped testing! Thank you. + +We've used this approach for 3.8.0 aswell and hope that again most of the bugs have been fixed already and that you can enjoy ACE3 without annoying interruptions. + +We will keep this approach for the future and invite you to join to test the release candidates. All information will be posted in our public chat to which you're invited too. You can access it here: [http://slackin.ace3mod.com](http://slackin.ace3mod.com){:target="_blank"} + +So, why didn't we release any minor releases for 3.7.0 (e.g. 3.7.1)? In short: We didn't feel that it was necessary. During and directingly after the release we already had added new, awesome features so that we had to do a major release. + +Two new features have made it into 3.8.0 which are blood splatters and ammo box cook off. +Wounded units now will leave more visible trails of blood on the ground which could make for interesting missions like escaping as a wounded soldier who is being tracked down by enemy combatants. +When ammo boxes are destroyed the contained ammunition now will cook off in a multitude of small explosions and the boxes won't just sink into the ground. + +With 3.8.0 the map tools will allow you to draw straight lines again. A feature that sadly is missing in vanilla Arma 3. + +## The Future things + +### Medical rewrite + +If you're following ACE3 development on github closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities aswell. There's an interesting discussion going on github with a lot of different ideas and feature requests. Worth a read. // link to that discussion + +With the state machine system that has been introduced in CBA we're able to rewrite the medical system in a better and easier way. +Now it's possible to define all medical conditions as different states and show feedback (visual, audio and textual) during the transitions between states (e.g. "no pain" -> "in pain") or react to sudden changes. All with performance and modularity in mind. + +We're really looking forward to the result and how you will like it. + +## The End Things + +The full changelog for ACE3 v3.8.1 can be found here: [https://github.com/acemod/ACE3/releases/v3.8.1](https://github.com/acemod/ACE3/releases/v3.8.1){:target="_blank"} + +We are still in need for translations for some languages within the ACE3 project. Please have a look at [this github issue to track the progress and what languages lack translations](https://github.com/acemod/ACE3/issues/367){:target="_blank"}. Any and all help with this is very appreciated. + +Make sure to [follow us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} and to [like our facebook page](https://www.facebook.com/ACE3Mod/){:target="_blank"}. + From 4ef3d9f0632bb891f46eac93d8b2bc15506e46fd Mon Sep 17 00:00:00 2001 From: bux578 Date: Wed, 2 Nov 2016 11:49:16 +0100 Subject: [PATCH 10/33] improve dockerfile --- docs/Dockerfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/Dockerfile b/docs/Dockerfile index aecfb1aa33..033cd89d67 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -2,7 +2,10 @@ # docker build -t ace3mod/jekyll . # # Run: -# docker run -p 4000:4000 -it ace3mod/jekyll +# docker run -it -p 4000:4000 -v $(pwd):/usr/src/app ace3mod/jekyll +# +# Run with --incremental flag: +# docker run -it -p 4000:4000 -v $(pwd):/usr/src/app ace3mod/jekyll --incremental FROM starefossen/github-pages:latest MAINTAINER bux @@ -11,4 +14,4 @@ COPY . /usr/src/app VOLUME "/usr/src/app" -CMD ["jekyll", "serve", "--future", "--incremental", "--config", "_config_dev.yml", "-H", "0.0.0.0", "-P", "4000"] +ENTRYPOINT ["jekyll", "serve", "--future", "--config", "_config_dev.yml", "-H", "0.0.0.0", "-P", "4000"] From 6a60770470625117b47a7ee0b3a8a8bc39c983b9 Mon Sep 17 00:00:00 2001 From: ulteq Date: Wed, 2 Nov 2016 13:54:22 +0100 Subject: [PATCH 11/33] Minor corrections in the ballistics module * Corrected AKS-U barrel length * Corrected .338 250gr BC * Corrected .338 API526 BC and muzzle velocity * Slightly reduced 5.8x42mm muzzle velocity --- addons/ballistics/CfgAmmo.hpp | 12 ++++++------ addons/ballistics/CfgWeapons.hpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 065dcdf17d..5884e63577 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -132,7 +132,7 @@ class CfgAmmo { ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; - ACE_muzzleVelocities[]={790, 930, 970}; + ACE_muzzleVelocities[]={790, 930, 950}; ACE_barrelLengths[]={369.0, 463.0, 600.0}; }; class B_65x39_Caseless : BulletBase { @@ -667,7 +667,7 @@ class CfgAmmo { ACE_bulletLength=43.18; ACE_bulletMass=19.44; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.381}; + ACE_ballisticCoefficients[]={0.368}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; @@ -683,12 +683,12 @@ class CfgAmmo { ACE_bulletLength=38.989; ACE_bulletMass=16.3941242; ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; - ACE_ballisticCoefficients[]={0.560}; + ACE_ballisticCoefficients[]={0.290}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; - ACE_muzzleVelocities[]={880, 915, 925}; - ACE_barrelLengths[]={508.0, 660.4, 711.2}; + ACE_dragModel=7; + ACE_muzzleVelocities[]={880, 895, 900}; + ACE_barrelLengths[]={508.0, 685,8, 711.2}; }; class B_127x33_Ball: BulletBase { tracerScale = 1.3; //1.2; diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index 51f815f938..b1791d7fe7 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -262,9 +262,9 @@ class CfgWeapons { /* Rifles */ class arifle_AKS_base_F: Rifle_Base_F { - initSpeed = -1.00419; + initSpeed = -1.0; ACE_barrelTwist=160.02; - ACE_barrelLength=210.82; + ACE_barrelLength=206.5; }; class arifle_AKM_base_F: Rifle_Base_F { initSpeed = -1.0014; From 71fe9bde7d703b6b71fbfc29d2d76aac82f00850 Mon Sep 17 00:00:00 2001 From: ulteq Date: Wed, 2 Nov 2016 14:27:26 +0100 Subject: [PATCH 12/33] Fixed a typo --- addons/ballistics/CfgAmmo.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 5884e63577..5fc2168b84 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -688,7 +688,7 @@ class CfgAmmo { ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={880, 895, 900}; - ACE_barrelLengths[]={508.0, 685,8, 711.2}; + ACE_barrelLengths[]={508.0, 685.8, 711.2}; }; class B_127x33_Ball: BulletBase { tracerScale = 1.3; //1.2; From aef7010d67f9d9f5b2d2522107313b7edcc8a948 Mon Sep 17 00:00:00 2001 From: ulteq Date: Wed, 2 Nov 2016 18:05:19 +0100 Subject: [PATCH 13/33] Fixes the ATragMX 'Done' button issue (#4617) --- .../functions/fnc_update_zero_range.sqf | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf index 299c321d33..3d56dc81eb 100644 --- a/addons/atragmx/functions/fnc_update_zero_range.sqf +++ b/addons/atragmx/functions/fnc_update_zero_range.sqf @@ -15,6 +15,8 @@ */ #include "script_component.hpp" +[] call FUNC(parse_input); + private ["_scopeBaseAngle"]; _scopeBaseAngle = (GVAR(workingMemory) select 3); @@ -28,10 +30,7 @@ _dragModel = GVAR(workingMemory) select 16; _atmosphereModel = GVAR(workingMemory) select 17; private ["_zeroRange"]; -_zeroRange = Round(parseNumber(ctrlText 120060)); -if (GVAR(currentUnit) == 1) then { - _zeroRange = _zeroRange / 1.0936133; -}; +_zeroRange = GVAR(workingMemory) select 2; if (_zeroRange < 10) exitWith { GVAR(workingMemory) set [2, _zeroRange]; GVAR(workingMemory) set [3, 0]; @@ -42,9 +41,17 @@ _altitude = GVAR(altitude); _temperature = GVAR(temperature); _barometricPressure = GVAR(barometricPressure); _relativeHumidity = GVAR(relativeHumidity); +if (!GVAR(atmosphereModeTBH)) then { + _barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495; + _relativeHumidity = 50; +}; -private ["_result"]; -_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution); +{ + private _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution); + private _offset = (_result select 0) / 60; + _scopeBaseAngle = _scopeBaseAngle + _offset; + if (_offset < 0.01) exitWith {}; +} forEach [1, 2, 3]; GVAR(workingMemory) set [2, _zeroRange]; -GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60]; +GVAR(workingMemory) set [3, _scopeBaseAngle]; From 0bfc476888d4f91e4a5cfd210859ef8edfb28f49 Mon Sep 17 00:00:00 2001 From: bux578 Date: Thu, 3 Nov 2016 10:54:20 +0100 Subject: [PATCH 14/33] add second draft of acerep7 --- docs/_posts/2016-11-03-ace3-version381.md | 17 ++++++++++++++++- docs/img/news/161003_blood.jpg | Bin 0 -> 307625 bytes 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 docs/img/news/161003_blood.jpg diff --git a/docs/_posts/2016-11-03-ace3-version381.md b/docs/_posts/2016-11-03-ace3-version381.md index 781c99eece..38439ff876 100644 --- a/docs/_posts/2016-11-03-ace3-version381.md +++ b/docs/_posts/2016-11-03-ace3-version381.md @@ -2,7 +2,7 @@ title: ACEREP #00007 description: Status report on ACE3 version 3.8.1 parent: posts -image: /img/news/160912_grenade.jpg +image: /img/news/161003_blood.jpg author: bux layout: post --- @@ -23,6 +23,12 @@ Two new features have made it into 3.8.0 which are blood splatters and ammo box Wounded units now will leave more visible trails of blood on the ground which could make for interesting missions like escaping as a wounded soldier who is being tracked down by enemy combatants. When ammo boxes are destroyed the contained ammunition now will cook off in a multitude of small explosions and the boxes won't just sink into the ground. +
+
+ A wounded insurgent in front of a damaged truck. +
+
+ With 3.8.0 the map tools will allow you to draw straight lines again. A feature that sadly is missing in vanilla Arma 3. ## The Future things @@ -36,6 +42,15 @@ Now it's possible to define all medical conditions as different states and show We're really looking forward to the result and how you will like it. +### Night Vision Googles Improvements + +If you've [watched dslyecxi's recent youtube videos](https://www.youtube.com/user/Dslyecxi){:target="_blank"} or if you're [following us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} you might already have seen that dslyecxi has put together a mod vastly improving night vision googles and the resulting very limiting view. Check out his video with the explanation why vanilla Arma 3 NVGs are a bad representation of real life NVGs and what he has done to improve that. + + + + +dslyecxi has donated his mod to ACE3 and we're looking into integrating it for a future release. + ## The End Things The full changelog for ACE3 v3.8.1 can be found here: [https://github.com/acemod/ACE3/releases/v3.8.1](https://github.com/acemod/ACE3/releases/v3.8.1){:target="_blank"} diff --git a/docs/img/news/161003_blood.jpg b/docs/img/news/161003_blood.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80af0fdd04838d9b9d64eec468d14a6973d10193 GIT binary patch literal 307625 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%0A%pHkoO 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�AJE{cZJl>(J0v zMZIKU4ldOt+=gGM9YF)WwOz0msT)fdp>q=YiS)?bSOywi=cQ28nJwc>keQ{)BrfmD ziqAXSRW|akQ*rU7=?+T17z=|UIk6QPEt0LYvi>kZCi;A8jf|&n+KCbwl6dEt$%+;H zl~JIKu_Tghprur;~EYav+d->^v9^O(p%uPtbS%(}|D9oUDDaNhR5*0>BQ00o&tM zb}scQS-4B777?K*rl20;ucIoqN%63vm;`1cKvau;hyGMp6-@Hbu|ToudkF~qU9Yc7 zm1PzY3@eMdy|n=U09w4P^jNKLO#LHKrX67_Jh}<)9nJROsUYb!S2ilut}A>j^D_d zX%W;leZ`J-^#|YnG}0^^{{X$f!uyBEy#~gD3HeM}Q0;Mk)myM&RsP_C&6@hveTPWW zY{=y5FMhrhRfE(DObi^+X%%(&Rn^F?z^60V+*Uy>BU|{2E~$b_-zDu)#d+|U+;kVJ zEumOgk!a;JvBt?zkTf;R*`^rkrsJ2!b+p6H-l$sa9-@r=oH-nNY%kGjo7JvN8<2~T z52jgW*?J z*n>-14dcOu6u7WZHnING@v5w(xhxN`pvBE#i~)YPwT)2ILdqM-?HqF-uBtcoDlByH zwJP4xVxnSsc}$)W_amQ7A2AF;1L6&C)wi-T?AHd*`gQ_poZVt9I_G48;AA5J5c{WA~U~TEL-^#uR zwuZU4slKef^9w49>A8hWosppY9)MgX#v^Tvh*L?c9Zs0U=5EVCKl># za0Tu^#+C?;iYe4;8rs{TsjV>+QHzf)jF;5&;RwUXM-f03nK5++yS>aF~KSLl32 zRGb{zx2?c7U7QlO4hDeVQSd$MOq8d)c>q#Vd#`=wEUCh^}Mp)Q8t$(_*+hL}fQ?Fnv zW~C>S{I153#vv@Gz*eb)#H%*OxcGCbZYo7lYe?vl65>#;<3=znu z>OstLkVzNiujU;ETf#Z%%Ot{pV&essZvOy=_S(Ak9nDd4)UqzlJKD;2j;wm0vZ>(N zP40yFvY1d9)P(r;KNCe4t=}gkvgSzrJ9RziJ2q_B#6vfRU^Q&A&I)Kta|)@RdTeF0F!KY zEZ%1Nn%dZQ6qiE>@yPj1S8ewH0H+fHx3AR3nP5i4r^ruG;|BGQ(%A)Ws83}T4wR>EO(XOeBKZtQ-cd+9|?5N{OZ4>f}kZkMHK90KHWcxmOxYeo%@ zy-&)SVG?A^zQX7$A^5NCu*L1Q9ITn&o_#*8S+&4j$QS6hyNH#{*L5L+})d zmB6xjTHc@}U!Xm~?M-e8RSbcfDQzT2&~dKqyNLNxRSwX83tw=%9Em^GnT_3tfb1w) zlc;LB#LI^)My_#3^-o@%`;%4m3`j-h$bd})ZVToo$NE*t z6+AH5aB;G+RF?GF?pzWtap6eNQ;$B${-p&YV*zbw{-vy z3T0ti$eRJ7W-h=*k_DBQL8nhIN@g^SPEI3wSlI}YN=}9K174<j$T#BaZ2C4_={x3;A8p;ZKEeT6*Bg^rw@o8wRmOA*>ZZ^GU* zmQ6V#x1m_~hqK_%3!93OyD#_>@D-VO0$IlzAew4@kTyo6ppqp+` z&0s3YoQ9>7C0E~Cdk0H zgUxGNtl1GI6m2*xc)UIr8#k>!`3%QNqtqe)0IJpkvs-H))X%yi$>MQChD3NDbNWme z%^QybEJuw|uC21Y_3aE%$3(v8fMv`?8IZ2n<6D6wYp6%KAd0_%_3MNLTHJ|;9x&Ww zuFV!PDnwEN=Gem4`5L)WP#@ahwnv5~;vthMgEVeR0LUB*YvX@~D#2t)R_Ah85#A`D z*KDR%n`l8IBI*=a4X4J!uC041VqVU#0}eVkBMQvQ*-}DY2T#kmAdgB*3vai2qTG^Y z3(f%J^D*;rH$}#0J%rf+vd1_eNQ}d`#;xxn#0)WV*BdHr%0%pTOyRvq1&HfR ztkX47bx?Emo=CIIL3Y3|zsb@;*19xG)s|Ok$nzLQF3C|uV31kWcCxVOdg)o)^d7qX zM>0t`fs`N3H{W755Jj(RQbd|l6bxw}Xkt}vRnXjRJ&(xKqN^hkU>tM+9g(T{lC6HX z15riTj2|R8EgOAc`P%+pvfZepQsiAMatF9JBVRW_J5{y8Q$`vY?RdwWjT^0n^&{s} zWrbD^_)OUnSz>TZDtyAgIJa;=!jkoqR4MuKW)2f6 zD-NooP2$YJeipH@6xMP@gL11RidA-mK2_9}_#5g)TU(@x-8%-&$SxFMx|P4w$nK{OZ1;97FD`cOjBNR;x5t(9av66A-G`zLc+P3aHS=GNau3>E5iZ+be1c z$1N5tOjW=YVy9tbtmN_0X96+wBdHY@fIAePUk4|Q%|Kj~Cg_b-*_SnO!y>20FWx>lT08kj{x&vd>d}~s)o}Wh&4avr@DzVXeuAjis?FNRj zdd74Jg3bp~^pW625xoiUG4nBHRRRj}o z>A2Z9DAmMd>c8D%+;RHA{j*jRnlk)qZQ%FP&4A`9&VvT9Y-bsqvMDu72GSdEEC zKAH0?Ui(4UvHR*kQyIg`rG}s}&>eQ4x3w$`HO5BE7C~lhEn{%s^QxUPBOuBvjKoXj zQKXDIs}B%GQEge17R?ir%lXT%(nZymp}%l@U&4`A1=m+r4=yVm!q@)f`n2&K?^;p4 beaH>*%8jGUq}_Z$A3pU}>T`UJ9gqLn5d#|^ literal 0 HcmV?d00001 From d1d27963923574b1b316799450a96b612e4f56a1 Mon Sep 17 00:00:00 2001 From: bux578 Date: Thu, 3 Nov 2016 11:12:18 +0100 Subject: [PATCH 15/33] fix typos, improve medical rewrite cba text --- docs/_posts/2016-11-03-ace3-version381.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/_posts/2016-11-03-ace3-version381.md b/docs/_posts/2016-11-03-ace3-version381.md index 38439ff876..9ce43188c0 100644 --- a/docs/_posts/2016-11-03-ace3-version381.md +++ b/docs/_posts/2016-11-03-ace3-version381.md @@ -13,14 +13,14 @@ Just about two month ago we've released 3.7.0. A version that had most of the bu A big shoutout to those who helped testing! Thank you. -We've used this approach for 3.8.0 aswell and hope that again most of the bugs have been fixed already and that you can enjoy ACE3 without annoying interruptions. +We've used this approach for 3.8.0 as well and hope that again most of the bugs have been fixed already and that you can enjoy ACE3 without annoying interruptions. We will keep this approach for the future and invite you to join to test the release candidates. All information will be posted in our public chat to which you're invited too. You can access it here: [http://slackin.ace3mod.com](http://slackin.ace3mod.com){:target="_blank"} -So, why didn't we release any minor releases for 3.7.0 (e.g. 3.7.1)? In short: We didn't feel that it was necessary. During and directingly after the release we already had added new, awesome features so that we had to do a major release. +So, why didn't we release any minor releases for 3.7.0 (e.g. 3.7.1)? In short: We didn't feel that it was necessary. During and directly after the release we had already added new and awesome features so that we had to do a major release. -Two new features have made it into 3.8.0 which are blood splatters and ammo box cook off. -Wounded units now will leave more visible trails of blood on the ground which could make for interesting missions like escaping as a wounded soldier who is being tracked down by enemy combatants. +Two new features have made it into 3.8.0 which are "blood splatters" and "ammo box cook off". +Wounded units will now leave more visible trails of blood on the ground which could make for interesting missions like escaping as a wounded soldier who is being tracked down by enemy combatants. When ammo boxes are destroyed the contained ammunition now will cook off in a multitude of small explosions and the boxes won't just sink into the ground.
@@ -35,10 +35,9 @@ With 3.8.0 the map tools will allow you to draw straight lines again. A feature ### Medical rewrite -If you're following ACE3 development on github closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities aswell. There's an interesting discussion going on github with a lot of different ideas and feature requests. Worth a read. // link to that discussion +If you're following ACE3 development on github closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on github with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134{:target="_blank"}). Worth a read. -With the state machine system that has been introduced in CBA we're able to rewrite the medical system in a better and easier way. -Now it's possible to define all medical conditions as different states and show feedback (visual, audio and textual) during the transitions between states (e.g. "no pain" -> "in pain") or react to sudden changes. All with performance and modularity in mind. +With the state machine system that has been introduced in CBA we are now able to strictly define various health states of players such as unconsciousness or cardiac arrest and what can happen in those states. This allows us to massively declutter the code which will not only reduce the possibility of bugs, but also enable us to add more features and gameplay elements to the medical system - with no performance loss at all. We're really looking forward to the result and how you will like it. From 0746264905accb7477f930548ae541af9bb2920b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Nov 2016 18:01:58 -0500 Subject: [PATCH 16/33] MedicalAI - Fix treatment animion with no weapon (#4633) --- addons/medical_ai/functions/fnc_playTreatmentAnim.sqf | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/addons/medical_ai/functions/fnc_playTreatmentAnim.sqf b/addons/medical_ai/functions/fnc_playTreatmentAnim.sqf index 93a784922d..f013486cc1 100644 --- a/addons/medical_ai/functions/fnc_playTreatmentAnim.sqf +++ b/addons/medical_ai/functions/fnc_playTreatmentAnim.sqf @@ -32,7 +32,12 @@ if (stance _unit == "PRONE") then { }; private _anim = getText (_animConfig >> _configProperty); -private _wpn = ["non", "rfl", "pst"] select (1 + ([primaryWeapon _unit, handgunWeapon _unit] find (currentWeapon _unit))); +private _wpn = switch (true) do { + case ((currentWeapon _unit) == ""): {"non"}; + case ((currentWeapon _unit) == (primaryWeapon _unit)): {"rfl"}; + case ((currentWeapon _unit) == (handgunWeapon _unit)): {"pst"}; + default {"non"}; +}; _anim = [_anim, "[wpn]", _wpn] call CBA_fnc_replace; [_unit, _anim] call EFUNC(common,doAnimation); From f23d96d4559ce6911f4ff1f1e8afe8f818fddd2f Mon Sep 17 00:00:00 2001 From: bux578 Date: Fri, 4 Nov 2016 09:24:21 +0100 Subject: [PATCH 17/33] fix typos, wording --- docs/_posts/2016-11-03-ace3-version381.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/_posts/2016-11-03-ace3-version381.md b/docs/_posts/2016-11-03-ace3-version381.md index 9ce43188c0..9e52325f53 100644 --- a/docs/_posts/2016-11-03-ace3-version381.md +++ b/docs/_posts/2016-11-03-ace3-version381.md @@ -7,7 +7,7 @@ author: bux layout: post --- -Just about two month ago we've released 3.7.0. A version that had most of the bugs fixed even before the official release. For the first time we were supplying users interested in helping us with pre release versions of the mod - so called release candidates. Quite a lot of communities tested the several release candidates and provided us with very valuable feedback. Especially on bugs and quirks that are near impossible to test alone. +Just about two month ago we've released 3.7.0. A version that had most of the bugs fixed even before the official release. For the first time we were actively supplying users interested in helping us with pre release versions of the mod - so called release candidates. Quite a lot of communities tested the several release candidates and provided us with very valuable feedback. Especially on bugs and quirks that are near impossible to test alone. @@ -35,7 +35,7 @@ With 3.8.0 the map tools will allow you to draw straight lines again. A feature ### Medical rewrite -If you're following ACE3 development on github closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on github with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134{:target="_blank"}). Worth a read. +If you're following ACE3 development on GitHub closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on GitHub with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134{:target="_blank"}). Worth a read. With the state machine system that has been introduced in CBA we are now able to strictly define various health states of players such as unconsciousness or cardiac arrest and what can happen in those states. This allows us to massively declutter the code which will not only reduce the possibility of bugs, but also enable us to add more features and gameplay elements to the medical system - with no performance loss at all. @@ -43,7 +43,7 @@ We're really looking forward to the result and how you will like it. ### Night Vision Googles Improvements -If you've [watched dslyecxi's recent youtube videos](https://www.youtube.com/user/Dslyecxi){:target="_blank"} or if you're [following us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} you might already have seen that dslyecxi has put together a mod vastly improving night vision googles and the resulting very limiting view. Check out his video with the explanation why vanilla Arma 3 NVGs are a bad representation of real life NVGs and what he has done to improve that. +If you've [watched dslyecxi's recent YouTube videos](https://www.youtube.com/user/Dslyecxi){:target="_blank"} or if you're [following us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} you might already have seen that dslyecxi has put together a mod vastly improving night vision googles and the resulting very limiting view. Check out his video with the explanation why vanilla Arma 3 NVGs are a bad representation of real life NVGs and what he has done to improve that. @@ -54,7 +54,7 @@ dslyecxi has donated his mod to ACE3 and we're looking into integrating it for a The full changelog for ACE3 v3.8.1 can be found here: [https://github.com/acemod/ACE3/releases/v3.8.1](https://github.com/acemod/ACE3/releases/v3.8.1){:target="_blank"} -We are still in need for translations for some languages within the ACE3 project. Please have a look at [this github issue to track the progress and what languages lack translations](https://github.com/acemod/ACE3/issues/367){:target="_blank"}. Any and all help with this is very appreciated. +We are still in need for translations for some languages within the ACE3 project. Please have a look at [this GitHub issue to track the progress and what languages lack translations](https://github.com/acemod/ACE3/issues/367){:target="_blank"}. Any and all help with this is very appreciated. Make sure to [follow us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} and to [like our facebook page](https://www.facebook.com/ACE3Mod/){:target="_blank"}. From f9f6afb8bbfcf5849ba9e7513fac7e224b0f8373 Mon Sep 17 00:00:00 2001 From: bux578 Date: Fri, 4 Nov 2016 20:16:35 +0100 Subject: [PATCH 18/33] increase date --- ...-version381.md => 2016-11-04-ace3-version381.md} | 4 ++-- .../img/news/{161003_blood.jpg => 161104_blood.jpg} | Bin 2 files changed, 2 insertions(+), 2 deletions(-) rename docs/_posts/{2016-11-03-ace3-version381.md => 2016-11-04-ace3-version381.md} (98%) rename docs/img/news/{161003_blood.jpg => 161104_blood.jpg} (100%) diff --git a/docs/_posts/2016-11-03-ace3-version381.md b/docs/_posts/2016-11-04-ace3-version381.md similarity index 98% rename from docs/_posts/2016-11-03-ace3-version381.md rename to docs/_posts/2016-11-04-ace3-version381.md index 9e52325f53..29bc850e97 100644 --- a/docs/_posts/2016-11-03-ace3-version381.md +++ b/docs/_posts/2016-11-04-ace3-version381.md @@ -2,7 +2,7 @@ title: ACEREP #00007 description: Status report on ACE3 version 3.8.1 parent: posts -image: /img/news/161003_blood.jpg +image: /img/news/161104_blood.jpg author: bux layout: post --- @@ -25,7 +25,7 @@ When ammo boxes are destroyed the contained ammunition now will cook off in a mu
- A wounded insurgent in front of a damaged truck. + A wounded insurgent in front of a damaged truck.
diff --git a/docs/img/news/161003_blood.jpg b/docs/img/news/161104_blood.jpg similarity index 100% rename from docs/img/news/161003_blood.jpg rename to docs/img/news/161104_blood.jpg From 7efe752f3c87f5f02e5857f26e36c55afabf057d Mon Sep 17 00:00:00 2001 From: System98 Date: Sat, 5 Nov 2016 13:42:55 +0100 Subject: [PATCH 19/33] Update german translation - Add missing german translations --- addons/advanced_throwing/stringtable.xml | 22 +++++++++++- addons/chemlights/stringtable.xml | 41 +++++++++++++++++++++- addons/cookoff/stringtable.xml | 10 ++++-- addons/dogtags/stringtable.xml | 6 ++++ addons/explosives/stringtable.xml | 4 ++- addons/goggles/stringtable.xml | 5 ++- addons/laser/stringtable.xml | 3 +- addons/maptools/stringtable.xml | 6 +++- addons/medical_blood/stringtable.xml | 5 ++- addons/minedetector/stringtable.xml | 10 +++++- addons/overheating/stringtable.xml | 12 +++++-- addons/tagging/stringtable.xml | 9 ++++- addons/trenches/stringtable.xml | 3 ++ addons/ui/stringtable.xml | 44 +++++++++++++++++++++++- addons/zeus/stringtable.xml | 33 +++++++++++++++++- 15 files changed, 197 insertions(+), 16 deletions(-) diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index dfd346a9e1..4e11662e90 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -6,60 +6,70 @@ Улучшенный бросок гранат アドバンスド投てき Zaawansowane rzucanie + Erweitertes Werfen Allows changing advanced throwing behaviour. Позволяет настраивать поведение улучшенного броска гранат. アドバンスド投てきの挙動変更を許可します。 Zezwala na zmianę zachowania zaawansowanego trybu rzucania. + Erlaubt es, das Verhalten beim erweiterten Werfen zu ändern. Enable Advanced Throwing Включить улучшенный бросок アドバンスド投てきを有効化 Aktywuj zaawansowane rzucanie + Aktiviert erweitertes Werfen Enables advanced throwing system. Включает систему улучшенного броска. アドバンスド投てきシステムを有効化 Aktywuje system zaawansowanego rzucania. + Aktiviert das erweiterte Wurfsystem. Show Throw Arc Показать траекторию броска 軌道を表示 Pokaż trasę lotu + Zeige Wurfbogen Enables visualization of the throw arc (where throwable will fly). Включает визуализацию траектории броска (как полетит граната). 投てき物の予測軌道の表示を有効化します。 Wyświetla wizualizację trasy przelotu granatu. + Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird). Show Throwing Mouse Controls Показывать управление мышью 投てきのマウス操作を表示 Pokaż podpowiedzi sterowania myszą + Zeige Maussteuerung beim Werfen Enables visual cues for mouse controls when throwable is prepared. Включает отображение подсказок по управлению мышью, когда граната подготовлена. 投てき物を投げるとき、マウス操作の説明表示を有効化します。 Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku. + Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird. Enable Throwables Pick Up Включить подбор гранат 投てき物の拾い上げを有効化 Zezwól na podnoszenie obiektów miotanych + Aktiviere Aufheben von Wurfobjekten Enables ability to pick up throwables from the ground. Включает возможность подбирать гранаты с земли. 地面に落ちている投てき物の拾い上げ動作を有効化します。 Umożliwia podnoszenie obiektów miotanych z ziemi. + Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben. Enable Attached Throwables Pick Up @@ -72,60 +82,70 @@ Включает возможность подбирать гранаты, прикрепленные к объектам. オブジェクトに取り付けられていた投てき物を拾い上げられるようにします。 Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów. + Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen. Prepare/Change Throwable Подготовить/заменить гранату 機能の起動/変更 Przygotuj/zmień ob. miotany + Wurfobjekt vorbereiten/wechseln Throwable Drop Mode (Hold) Режим броска гранаты (удерживать) 投てきモード (押しっぱ) Tryb upuszczania ob. miotanego (przytrzymaj) + Wurfobjekt Fallmodus (halten) Throwable Drop Mode (Toggle) Режим броска гранаты (переключить) 投てきモード (トグル) Tryb upuszczania ob. miotanego (przełącz) + Wurfobjekt Fallmodus (umschalten) Primed Подготовлена 起動した Odbezpieczony + Scharf gemacht Throw Бросить 投げる Rzuć + Werfen (Scroll) Change Mode (Скролл) Изменить режим (スクロール) モード変更 (Kółko m.) zmień tryb + (Scrollen) Modus wechseln (Scroll) Extend (Скролл) Увеличить (スクロール) 遠くに (Kółko m.) przedłuż + (Scrollen) Erweitern (Click) Cook (Клик) Подготовить (クリック) 起爆 (Kliknięcie) Odbezpiecz + (Klicken) Abkochen Pick Up Подобрать 拾い上げる Podnieś + Aufheben - + \ No newline at end of file diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml index 72ac033d3e..b11c60f04d 100644 --- a/addons/chemlights/stringtable.xml +++ b/addons/chemlights/stringtable.xml @@ -5,16 +5,19 @@ Chemlights ケミライト Świetliki + Knicklichter Prepare %1 %1 をつかう Przygotuj %1 + %1 vorbereiten %1<br/>Prepared %1&lt;br/&gt; をつかった %1<br/>Przygotowany + %1<br/>vorbereitet No inventory space @@ -33,180 +36,216 @@ [ACE] Chemlights [ACE] ケミライト [ACE] Świetliki + [ACE] Knicklichter Chemlight (Orange) ケミライト (オレンジ) Świetlik (pomarańczowy) + Knicklicht (orange) Orange Light オレンジ色 Pomarańczowe światło + Oranges Knicklicht Type: Light - Orange<br />Rounds: 1<br />Used in: Hand 種類: 照明 - オレンジ&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - orange<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (White) ケミライト (白) Świetlik (biały) + Knicklicht (weiß) White Light 白色 Białe światło + Weißes Knicklicht Type: Light - White<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 白&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - weiß<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi Red) ケミライト (高輝度 赤) Świetlik (jaskrawy czerwony) + Knicklicht (Hi rot) Red Hi Light 高輝度の赤色 Jaskrawe czerwone światło + Rotes Hi Licht Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 赤 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - rot Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi Yellow) ケミライト (高輝度 黄) Świetlik (jaskrawy żółty) + Knicklicht (Hi gelb) Yellow Hi Light 高輝度の黄色 Jaskrawe żółte światło + Gelbes Hi Licht Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 黄 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - gelb Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi Orange) ケミライト (高輝度 オレンジ) Świetlik (jaskrawy pomarańczowy) + Knicklicht (Hi orange) Orange Hi Light 高輝度のオレンジ Jaskrawe pomarańczowe światło + Oranges Hi Licht Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 オレンジ (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - orange Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi White) ケミライト (高輝度 白) Świetlik (jaskrawy biały) + Knicklicht (Hi weiß) White Hi Light 高輝度の白色 Jaskrawe białe światło + Weißes Hi Licht Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 白 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - weiß Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (IR) ケミライト (IR) Świetlik (podczerwony) + Knicklicht (IR) IR Light 赤外線光 Światło podczerwone + IR Licht Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 赤外線&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce + Typ: Licht - infrarot<br />Anzahl: 1<br />Benutzt in: Hand Chemlight Shield (Empty) ケミライト シールド (空) Osłona na świetlik (pusta) + Knicklicht-Abschirmung (leer) Shield for chemlights. Combine with chemlight to prepare reading light. ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。 Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania. + Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten. Chemlight Shield (Green) ケミライト シールド (緑) Osłona na świetlik (zielona) + Knicklicht-Abschirmung (grün) Green reading light. 緑色の照明。 Zielona lampka. + Grünes Leselicht. Chemlight Shield (Red) ケミライト シールド (赤) Osłona na świetlik (czerwona) + Knicklicht-Abschirmung (rot) Red reading light. 赤色の照明。 Czerwona lampka. + Rotes Leselicht. Chemlight Shield (Blue) ケミライト シールド (青) Osłona na świetlik (niebieska) + Knicklicht-Abschirmung (blau) Blue reading light. 青色の照明。 Niebieska lampka. + Blaues Leselicht. Chemlight Shield (Yellow) ケミライト シールド (黄) Osłona na świetlik (żółta) + Knicklicht-Abschirmung (gelb) Yellow reading light. 黄色の照明。 Żółta lampka. + Gelbes Leselicht. Chemlight Shield (Orange) ケミライト シールド (オレンジ) Osłona na świetlik (pomarańczowa) + Knicklicht-Abschirmung (orange) Orange reading light. オレンジの照明。 Pomarańczowa lampka. + Oranges Leselicht. Chemlight Shield (White) ケミライト シールド (白) Osłona na świetlik (biała) + Knicklicht-Abschirmung (weiß) White reading light. 白の照明。 + Weißes Leselicht. - + \ No newline at end of file diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index 8b08b1e3ff..9774265f08 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -11,7 +11,7 @@ Enables cook off and related vehicle destruction effects. - Ermöglicht Cook-off und zugehörige Fahrzeug-Zerstörungseffekte. + Ermöglicht Selbstzündung und zugehörige Fahrzeug-Zerstörungseffekte. Povolí explozi munice a její následné ničivé efekty. Включает воспламенение и сопутствующие эффекты повреждения техники. 誘爆を有効化し、車両が誘爆によって破壊されていきます。 @@ -34,18 +34,22 @@ Enable ammo box cook off 弾薬箱に誘爆を有効化 + Cook-off für Munitionskisten ermöglichen Enables cooking off of ammo boxes. 弾薬箱が誘爆するようになります。 + Ermöglicht Selbstzündung von Munitionskisten. Enable Ammunition cook off 弾薬の誘爆を有効化 + Cook-off für Munition ermöglichen Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition. 弾薬が誘爆します。車両が燃えると、搭載している弾薬が激しく燃え上がりす。 + Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt. - + \ No newline at end of file diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml index 7f57e75026..5131afde9a 100644 --- a/addons/dogtags/stringtable.xml +++ b/addons/dogtags/stringtable.xml @@ -7,6 +7,7 @@ Жетон Identifikační známka ドッグ タグ + Hundemarke Check Dog Tag @@ -14,6 +15,7 @@ Проверить жетон Zkontrolovat známku ドッグ タグを見る + Hundemarke prüfen Check @@ -21,6 +23,7 @@ Проверить Zkontroluj 見る + Prüfen Take @@ -28,6 +31,7 @@ Взять Vezmi 取る + Nehmen Dogtag taken from %1... @@ -35,6 +39,7 @@ Жетон снят с %1... Sebral jsem známku od %1... %1からドッグ タグを取っている・・・ + Hundemarke von %1 genommen... Somebody else has already taken the dogtag... @@ -42,6 +47,7 @@ Кто-то уже забрал жетон... Někdo jiný už vzal identifikační známku... すでに誰かがドッグ タグを取っているようだ・・・ + Jemand anderes hat bereits die Hundemarke genommen... \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index ecc97a4d7e..51a3051614 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -820,12 +820,14 @@ Сигнальная растяжка 仕掛け型照明地雷 Flara na linkę + Stolperdraht-Leuchtrakete Type: Tripwire flare - Ignites a non-lethal flare when triggered.<br />Rounds: 1<br />Used on: Ground Тип: Сигнальная растяжка - При срабатывании выпускает несмертельную сгнальную вспышку.<br />Зарядов: 1<br />Используется на: Земле 種類: 仕掛け型照明地雷 - 発動したとき、非致死性の照明を発炎します。<br />装填数: 1<br />次で使用: 地表 Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.<br/>Pociski: 1<br/>Używane na: ziemia + Typ: Stolperdraht-Leuchtrakete - Schießt bei Auslösung eine nicht-tödliche Leuchtrakete ab.<br />Ladungen: 1<br />Benutzt auf: Boden - + \ No newline at end of file diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml index fa31607242..eec413b69c 100644 --- a/addons/goggles/stringtable.xml +++ b/addons/goggles/stringtable.xml @@ -32,18 +32,21 @@ Эффект очков ゴーグルによる効果 Efekty gogli + Brilleneffekt Tint Тонировка 色彩のみ Winieta + Tönung Tint + Effects Тонировка + эффекты 色彩 + 効果 Winieta + Efekty + Tönung + Effekte - + \ No newline at end of file diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 5fd9f21ae7..00d40257f4 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -4,6 +4,7 @@ Laser Dispersion Simulation Count レーザーの分散シミュレート数 + Laserstreuung-Simulationszähler Laser Code @@ -45,4 +46,4 @@ レーザ - コードの数値を減らす - + \ No newline at end of file diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index 18b3a91aaf..e35ed536b0 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -150,6 +150,7 @@ Клавиша поворота инструментов карты マップ ツールの回転キー Klawisz obrotu narzędzi nawigacyjnych + Taste zum drehen des Kartenwerkzeugs Modifier key to allow rotating map tools @@ -157,14 +158,17 @@ Клавиша-модификатор, позволяющая поворачивать инструменты карты マップ ツールを回転させるキーを編集できます。 Modyfikator pozwalający na obracanie narzędzi nawigacyjnych + Steuerungstaste, um Drehung des Kartenwerkzeugs zu ermöglichen. Draw straight lines with maptools マップ ツールを使って直線を書く + Zeichne gerade Linien mit dem Kartenwerkzeug Draw on the edge of maptools to draw straight lines. Note: Must hover at midpoint to delete. マップ ツールの端から直線を書きます。メモ:線の中央ホバーすると削除します。 + Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren - + \ No newline at end of file diff --git a/addons/medical_blood/stringtable.xml b/addons/medical_blood/stringtable.xml index 6eb21c3aca..d32227d780 100644 --- a/addons/medical_blood/stringtable.xml +++ b/addons/medical_blood/stringtable.xml @@ -4,14 +4,17 @@ Only Players プレイヤーのみ + Nur Spieler Enable Blood Drops 血の滴下を有効化 + Aktiviere Blutspritzer Enable or disable Blood Drops created on bleeding and taking damage ダメージを受けたり、出血していると血が滴る様子の有効か無効化 + Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen. - + \ No newline at end of file diff --git a/addons/minedetector/stringtable.xml b/addons/minedetector/stringtable.xml index ff67757cb3..ed879dfd6b 100644 --- a/addons/minedetector/stringtable.xml +++ b/addons/minedetector/stringtable.xml @@ -8,6 +8,7 @@ Detektor kovů 地雷探知機 Wykrywacz metali + Metalldetektor Metal detector @@ -16,6 +17,7 @@ Detektor kovů 地雷探知機 Wykrywacz metali + Metalldetektor Activate @@ -24,6 +26,7 @@ Aktivovat 起動 Aktywuj + Aktivieren Deactivate @@ -32,6 +35,7 @@ Deaktivovat 停止 Deaktywuj + Deaktivieren Connect Headphones @@ -39,6 +43,7 @@ Připojit sluchátka ヘッドホンへつなぐ Podłącz słuchawki + Kopfhörer verbinden Disconnect Headphones @@ -46,6 +51,7 @@ Odpojit sluchátka ヘッドホンからはずす Odłącz słuchawki + Kopfhörer trennen Headphones Connected @@ -53,6 +59,7 @@ Sluchátka připojena ヘッドホンへ接続された Słuchawki podpięte + Kopfhörer verbunden Headphones Disconnected @@ -60,6 +67,7 @@ Sluchátka odpojena ヘッドホンから外された Słuchawki odpięte + Kopfhörer getrennt - + \ No newline at end of file diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index cd5559282b..d5a229ac6a 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -310,6 +310,7 @@ Zkontrolovat teplotu náhradní hlavně 予備銃身の温度を測る Sprawdź temperaturę zapasowych luf + Temperatur der Wechselläufe prüfen Checking spare barrels temperatures... @@ -319,6 +320,7 @@ Kontroluji teplotu náhradní hlavně... 予備銃身の温度を測っている・・・ Sprawdzanie temperatury zapasowych luf... + Prüfe Temperatur der Wechselläufe... Temperature @@ -341,6 +343,7 @@ Studená náhrandí hlaveň 予備銃身は冷たい Zimne zapasowe lufy + Kalte Wechselläufe Warm Spare Barrel/s @@ -350,6 +353,7 @@ Teplá náhrandí hlaveň 予備銃身は温かい Ciepłe zapasowe lufy + Warme Wechselläufe Hot Spare Barrel/s @@ -359,6 +363,7 @@ Horká náhrandí hlaveň 予備銃身は熱い Gorące zapasowe lufy + Heiße Wechselläufe Very Hot Spare Barrel/s @@ -368,6 +373,7 @@ Velmi horká náhrandí hlaveň 予備銃身はとても熱い Bardzo gorące zapasowe lufy + Sehr heiße Wechselläufe Extremely Hot Spare Barrel/s @@ -377,10 +383,11 @@ Extrémně horká náhrandí hlaveň 予備銃身は極めて熱い Ekstremalnie gorące zapasowe lufy + Extrem heiße Wechselläufe Overheating Enabled - Überhitzen Aktiviert + Überhitzung aktiviert Activada Sobrecalentamiento Superaquecimento ativado Surchauffe activée @@ -396,6 +403,7 @@ Главный включатель для модуля перегрева/заклинивания 過熱と弾詰まりモジュールを全て有効化します Główny włącznik modułu przegrzewania/zacinania się broni + Hauptschalter, um die Überhitzung-/Ladehemmung-Module zu aktivieren - + \ No newline at end of file diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index bbcaead48d..b813fb66a2 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -6,42 +6,49 @@ Маркировка タグ付け Tagowanie + Markierungssystem Configure how the tagging system will operate by default. Настройка работы системы спрей-маркеров по-умолчанию. 標準で開くタグ付けシステムの設定を行います。 Skonfiguruj zachowanie systemu tagowania. + Konfiguriert, wie das Markierungssystem standardmäßig funktioniert. Quick Tag Быстрый маркер クイック タグ Szybkie tagowanie + Schnelle Markierung Action performed on main tag interaction point. Действие, выполняемое при выборе главного пункта меню маркировки. インタラクション ポインにむけてタグ付けをします。 Akcja wykonywana na głównym punkcie interakcji tagu. + Aktion, die am Haupt-Interaktionspunkt ausgeführt werden soll. Last Used Повторить последний 最後の使用 Ostatnio użyte + Zuletzt benutzt Random X Случайный Х 無作為な X印 Losowy X + Zufällig X Random Случайный 無作為 Losowy + Zufällig Tag @@ -164,4 +171,4 @@ スプレー缶は壁にタグ付できます。 - + \ No newline at end of file diff --git a/addons/trenches/stringtable.xml b/addons/trenches/stringtable.xml index a56d56640b..1bb0928c2f 100644 --- a/addons/trenches/stringtable.xml +++ b/addons/trenches/stringtable.xml @@ -152,6 +152,7 @@ Продолжить копание окопа Pokračovat v kopání 塹壕を掘りつづける + Graben fortsetzen Remove Trench @@ -161,6 +162,7 @@ Убрать окоп Odstranit zákop 塹壕を消す + Schützengraben entfernen Removing Trench @@ -170,6 +172,7 @@ Убирание окопа Odstraňuji zákop 塹壕を消している + Entferne Schützengraben \ No newline at end of file diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index f039bfd7e7..7d324157f0 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -9,6 +9,7 @@ Интерфейс ユーザ インタフェイス Interfejs użytkownika + Benutzeroberfläche User Interface @@ -18,6 +19,7 @@ Пользовательский интерфейс ユーザ インタフェイス Interfejs użytkownika + Benutzeroberfläche This module allows toggling visible user interface parts. @@ -26,6 +28,7 @@ Этот модуль позволяет переключать видимость элементов пользовательского интерфейса. モジュールではユーザ インタフェイスの一部をトグル表示できます。 Moduł ten pozwala zmienić stan widoczności poszczególnych elementów UI. + Dieses Modul erlaubt es, Teile der Benutzeroberfläche (UI) an- oder auszuschalten. Allow Selective UI @@ -35,6 +38,7 @@ Включить настраиваемый интерфейс 選択できるユーザ インタフェイスを有効化します Zezwól na selektywne UI + Erlaube selektives UI Allow client to modify their UI. @@ -44,6 +48,7 @@ Позволить клиентам изменять их пользовательский интерфейс. クライアントがユーザ インタフェイスを編集できるようにします。 Zezwól klientowi na modyfikację UI. + Erlaube Clients, ihr UI zu modifizieren. Soldier/Vehicle/Weapon Information @@ -53,6 +58,7 @@ Информация о Солдате/Технике/Оружии 兵士/車両/武器の情報 Informacje o żołnierzu/pojeździe/broni + Soldat/Fahrzeug/Waffe Information Vehicle Radar @@ -62,6 +68,7 @@ Радар в технике 車両のレーダ Radar w pojeździe + Fahrzeugradar Vehicle Compass @@ -71,6 +78,7 @@ Компас в технике 車両のレーダ Kompas w pojeździe + Fahrzeugkompass Command Menu @@ -80,6 +88,7 @@ Командное меню 指揮メニュー Menu dowodzenia + Kommandomenü Group Bar @@ -89,6 +98,7 @@ Панель командира 指揮メニュー Pasek grupy + Gruppenleiste Weapon Name @@ -98,6 +108,7 @@ Название оружия 武器名 Nazwa broni + Waffenname Weapon Name Background @@ -107,6 +118,7 @@ Фон названия оружия 武器名の背景表示 Tło nazwy broni + Waffenname Hintergrund Firing Mode @@ -116,6 +128,7 @@ Режим стрельбы 射撃モード Tryb ognia + Feuermodus Ammo Type @@ -125,6 +138,7 @@ Тип боеприпасов 弾種 Typ amunicji + Munitionstyp Ammo Count @@ -134,6 +148,7 @@ Количество боеприпасов 弾薬数 Ilość amunicji + Munitionsanzahl Magazine Count @@ -143,6 +158,7 @@ Количество магазинов 弾倉装填数 Ilość magazynków + Magazinanzahl Throwable Type @@ -152,6 +168,7 @@ Тип гранаты 投げる種類 Typ granatu + Wurfobjekt-Typ Throwable Count @@ -161,6 +178,7 @@ Количество гранат 投げられる数 Ilość granatów + Wurfobjekt-Anzahl Zeroing @@ -170,6 +188,7 @@ Дальность стрельбы ゼロイン Wyzerowanie broni + Nullung Weapon Lower Info Background @@ -178,6 +197,7 @@ Фон ниформации об оружии снизу 武器名の背景表示 (下側) Tło dolnej części informacji o broni + Hintergrund der unteren Waffen-Info-Leiste Stance @@ -187,6 +207,7 @@ Стойка 姿勢 Postura + Haltung Stamina Bar @@ -196,6 +217,7 @@ Полоса выносливости 体力バー Pasek staminy + Ausdaueranzeige Gunner Weapon Name @@ -204,6 +226,7 @@ Название орудия наводчика 射手用の武器名 Nazwa broni strzelca + Richtschütze Waffenname Gunner Weapon Name Background @@ -212,6 +235,7 @@ Фон названия орудия наводчика 射手用の武器名の背景表示 Tło nazwy broni strzelca + Richtschütze Waffenname Hintergrund Gunner Firing Mode @@ -220,6 +244,7 @@ Режим стрельбы наводчика 射手用の発射モード Tryb ognia strzelca + Richtschütze Feuermodus Gunner Ammo Type @@ -228,6 +253,7 @@ Тип боеприпасов наводчика 射手用の弾種 Typ amunicji strzelca + Richtschütze Munitionstyp Gunner Ammo Count @@ -236,6 +262,7 @@ Количество боеприпасов наводчика 射手用の弾数 Ilość amunicji strzelca + Richtschütze Munitionsanzahl Gunner Magazine Count @@ -244,6 +271,7 @@ Количество магазинов наводчика 射手用の弾倉数 Ilość magazynków strzelca + Richtschütze Magazinanzahl Gunner Launchable Type @@ -252,6 +280,7 @@ Тип пусковой установки наводчика 射手用のランチャーの種類 Typ rakiet strzelca + Richtschütze Raketentyp Gunner Launchable Count @@ -260,6 +289,7 @@ Количество снарядов пусковой установки наводчика 射手用のランチャー弾薬数 Ilość rakiet strzelca + Richtschütze Raketenanzahl Gunner Zeroing @@ -268,6 +298,7 @@ Дальность стрельбы наводчика 射手用ゼロイン Wyzerowanie broni strzelca + Richtschütze Nullung Gunner Weapon Lower Info Background @@ -276,6 +307,7 @@ Фон ниформации об орудии наводчика снизу 射手用の武器名の背景表示 (下側) Tło dolnej części informacji o broni strzelca + Hintergrund der unteren Waffen-Info-Leiste (Richtschütze) Vehicle Name @@ -285,6 +317,7 @@ Название техники 車両名 Nazwa pojazdu + Fahrzeugname Vehicle Name Background @@ -294,6 +327,7 @@ Фон названия техники 車両名の背景 Tło nazwy pojazdu + Fahrzeugname Hintergrund Vehicle Fuel Bar @@ -303,6 +337,7 @@ Полоса топлива 車両の給油計 Pasek paliwa + Fahrzeug-Treibstoffleiste Vehicle Speed @@ -312,6 +347,7 @@ Скорость техники 車両の速度計 Prędkościomierz + Fahrzeuggeschwindigkeit Vehicle Altitude @@ -321,6 +357,7 @@ Высота полета 車両の高度計 Wysokościomierz radarowy + Fahrzeughöhe Vehicle Damage @@ -330,6 +367,7 @@ Повреждение техники 車両の損傷表示 Uszkodzenia pojazdu + Fahrzeugschaden Vehicle Info Background @@ -339,6 +377,7 @@ Фон информации о технике 車両状態の背景 Tło informacji o pojeździe + Fahrzeug Info Hintergrund Requires Soldier/Vehicle/Weapon Information. @@ -348,6 +387,7 @@ Требуется Информация о Солдате/Технике/Оружии. 兵士/車両/武器の情報を必要とします。 Wymaga informacji o żołnierzu/pojeździe/broni. + Benötigt Soldat/Fahrzeug/Waffe Information. Modifying User Interface is disabled. @@ -357,6 +397,7 @@ Изменение пользовательского интерфейса запрещено. 変更されたユーザ インタフェイスを無効化します。 Modyfikacja interfejsu użytkownika jest wyłączona. + Die Modifizierung des UI ist deaktiviert. Cannot modify a forced User Interface element. @@ -365,6 +406,7 @@ Невозможно изменить зафиксированный элемент пользовательского интерфейса. ユーザー インタフェイス要素は変更できません。 Nie można modyfikować wymuszonego elementu interfejsu użytkownika. + Gesperrte UI-Element können nicht modifiziert werden. - + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 6a6f75a450..8f111751d0 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -203,6 +203,7 @@ Bránit oblast 防衛範囲 Osłaniaj obszar + Verteidige Gebiet Global AI Skill @@ -211,6 +212,7 @@ Globální zkušenosti AI 総合的な AI スキル Globalne umiejętności AI + Globales KI-Können General Skill @@ -219,6 +221,7 @@ Primární zkušenosti 総合スキル Ogólne umiejętności + Allgemeines Können Changes: general, commanding, courage @@ -227,6 +230,7 @@ Upravuje: general, commanding, courage 変更:general, commanding, courage Zmienia: ogólne, dowodzenie, odwaga + Ändert: general, commanding, courage Accuracy @@ -235,6 +239,7 @@ Přesnost 精度 Precyzja + Genauigkeit Changes: aimingAccuracy @@ -243,6 +248,7 @@ Upravuje: aimingAccuracy 変更:aimingAccuracy Zmienia: precyzję celowania + Ändert: aimingAccuracy Weapon Handling @@ -251,6 +257,7 @@ Zacházení se zbraní 武器の扱い Obsługa broni + Waffenhandhabung Changes: aimingShake, aimingSpeed, reloadSpeed @@ -259,6 +266,7 @@ Upravuje: aimingShake, aimingSpeed, reloadSpeed 変更:aimingShake, aimingSpeed, reloadSpeed Zmienia: drżenie broni, szybkość celowania, szybkość przeładowania + Ändert: aimingShake, aimingSpeed, reloadSpeed Spotting @@ -267,6 +275,7 @@ Vnímavost 索敵 Rozpoznanie + Aufklärung Changes: spotDistance, spotTime @@ -275,6 +284,7 @@ Upravuje: spotDistance, spotTime 変更:spotDistance, spotTime Zmienia: zasięg rozpoznawania, czas rozpoznawania + Ändert: spotDistance, spotTime Seek Cover @@ -283,6 +293,7 @@ Vyhledávat krytí 遮蔽 Szukaj osłon + Deckungssuche Should AI seek cover @@ -291,6 +302,7 @@ AI se bude snažit vyhledávat krytí AI は遮蔽を取るようになります Czy AI powinno szukać osłon + Soll KI nach Deckung suchen Auto Combat @@ -299,6 +311,7 @@ Automatický režim boje 自動戦闘 Auto walka + Automatischer Kampfmodus Should AI automatically switch to combat mode @@ -307,6 +320,7 @@ AI se automaticky přepne do bojového režimu AI は自動的に戦闘状態へ切り替えます Czy AI powinno automatycznie przechodzić w tryb walki + Soll KI automatisch in Kampfmodus umschalten Group Side @@ -315,6 +329,7 @@ Strana skupiny グループ側 Strona grupy + Gruppenseite Patrol Area @@ -323,6 +338,7 @@ Oblast hlídkování 哨戒範囲 Patrol obszaru + Patrouillengebiet Toggle Surrender @@ -344,6 +360,7 @@ Teleportovat hráče プレイヤーを移動 Teleportuj graczy + Spieler teleportieren Player @@ -352,6 +369,7 @@ Hráč プレイヤー Gracz + Spieler Teleport selected player to module position @@ -360,6 +378,7 @@ Teleportuje vybraného hráče na pozici modulu 選択したプレイヤーをプレイヤーをモジュール位置へ移動します Teleportuje wybranego gracza na pozycję modułu + Teleportiert ausgewählten Spieler zur Position des Moduls Teleport Group @@ -368,6 +387,7 @@ Teleportovat skupinu グループを移動 Teleport grupy + Gruppe teleportieren Teleports all units in group @@ -376,6 +396,7 @@ Teleportuje všechny jednotky ve skupině グループ内の全ユニットを移動させます Teleportuje wszystkie jednostki w grupie + Teleportiert alle Einheiten der Gruppe Toggle Unconscious @@ -397,6 +418,7 @@ Prohledat oblast 捜索範囲 Przeszukaj teren + Durchsuche Gebiet Search Nearby Building @@ -405,6 +427,7 @@ Prohledat nejbližší budovu 近くの建物を創作します Przeszukaj najbliższy budynek + Durchsuche nahegelegenes Gebäude Assign Medic @@ -560,6 +583,7 @@ Jednotka musí patřit k příslušné straně ユニットを適切な陣営にします Jednostka musi należeć do odpowiedniej strony + Einheit muss einer passenden Seite angehören Nearest building is too far away @@ -568,6 +592,7 @@ Nejbližší budova je příliš daleko 近くに建物がありません。 Najbliższy budynek jest zbyt daleko + Nächstgelegenes Gebäude ist zu weit entfernt Place on a unit @@ -626,6 +651,7 @@ Náklad: カーゴ: Ładunek: + Ladung: Task Position @@ -634,6 +660,7 @@ Pozice úkolu タスクの位置 Pozycja zadania + Position der Aufgabe Select a position to perform the task at @@ -641,6 +668,7 @@ Выбрать местоположение для выполнения задания 次の選択位置をタスクとして実行 Wybierz pozycję na której wykonać zadanie + Wähle eine Position, an der die Aufgabe ausgeführt werden soll Task Radius @@ -648,6 +676,7 @@ Радиус задания タスク範囲 Obszar zadania + Radius der Aufgabe Radius to perform the task within @@ -655,6 +684,7 @@ Радиус выполнения задания 次の範囲をタスクとして実行 Obszar na którym zadanie powinno zostać wykonane + Radius, in dem die Aufgabe ausgeführt werden soll Invalid radius entered @@ -663,6 +693,7 @@ Vložen neplatný parametr 無効な半径が入力されました Wpisano nieprawidłowy promień + Ungültiger Radius eingegeben - + \ No newline at end of file From 5376a3045ba34a826cc8ce367cf561218b402e03 Mon Sep 17 00:00:00 2001 From: System98 Date: Sat, 5 Nov 2016 13:43:57 +0100 Subject: [PATCH 20/33] Fix typo - Fiy typo in german translation --- addons/advanced_throwing/stringtable.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index 4e11662e90..0cfec2ab61 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -76,6 +76,7 @@ Включить подбор прикрепленных гранат 拾い上げた投てき物の取り付けを有効化 Zezwól na podnoszenie przyczepionych obiektów miotanych + Aktiviere erneute Aufnahme befestigter Wurfobjekte Enables ability to pick up throwables from attached objects. From 38be06c28cd5c354f4a222496c9062da0e0fb06c Mon Sep 17 00:00:00 2001 From: System98 Date: Sat, 5 Nov 2016 13:50:26 +0100 Subject: [PATCH 21/33] Typo fix - fix another typo --- addons/advanced_throwing/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index 0cfec2ab61..aa04cc633d 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -20,7 +20,7 @@ Включить улучшенный бросок アドバンスド投てきを有効化 Aktywuj zaawansowane rzucanie - Aktiviert erweitertes Werfen + Aktiviere erweitertes Werfen Enables advanced throwing system. From 43c2e299c9e1d9b36749f8acb086466f3ce68c54 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Nov 2016 20:10:08 +0100 Subject: [PATCH 22/33] Fix make.py checkexternal argument documentation --- .../development/setting-up-the-development-environment.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/wiki/development/setting-up-the-development-environment.md b/docs/wiki/development/setting-up-the-development-environment.md index f2cdfc01ab..5efb993dbe 100644 --- a/docs/wiki/development/setting-up-the-development-environment.md +++ b/docs/wiki/development/setting-up-the-development-environment.md @@ -77,7 +77,7 @@ To create a complete build of ACE3 that you can use without the source files you When the requirements are met: -- Execute `make.py version increment_build force check_external release` in the `tools` folder, replacing `` with the part of version you want to increment (options described below) +- Execute `make.py version increment_build force checkexternal release` in the `tools` folder, replacing `` with the part of version you want to increment (options described below) This will populate the `release` folder with binarized PBOs, compiled extensions, copied extras, bisigns and a bikey. Additionally, an archive file will also be created in the folder. The folder and archive handle like those of any other mod. @@ -89,7 +89,7 @@ Different `make.py` command line options include: - `increment_minor` - increments _minor_ version number and resets _patch_ version number to `0` (ignored with `increment_major`) - `increment_major` - increments _major_ version number and resets _minor_ and _patch_ version numbers to `0` - `force` - force rebuild all PBOs, even those already present in the `release` directory (combined with `compile` it will also rebuild all extensions) -- `check_external` - check external references (incompatible only with ` ` and `force `) +- `checkexternal` - check external references (incompatible only with ` ` and `force `) - `release` - create release packages/archives - ` ` - build only specified component(s) (incompatible with `release`) - `force ` - force rebuild specified component(s) (incompatible with `release`) From b0bf50c506ab8ac1bf79fd01ed696ec53cc392aa Mon Sep 17 00:00:00 2001 From: System98 Date: Sun, 6 Nov 2016 10:10:36 +0100 Subject: [PATCH 23/33] Unify and improve some german translations - unify and improve some german translations - fix a few typos --- addons/advanced_throwing/stringtable.xml | 6 +++--- addons/chemlights/stringtable.xml | 26 ++++++++++++------------ addons/cookoff/stringtable.xml | 6 +++--- addons/dogtags/stringtable.xml | 4 ++-- addons/maptools/stringtable.xml | 2 +- addons/overheating/stringtable.xml | 6 +++--- addons/ui/stringtable.xml | 2 +- addons/zeus/stringtable.xml | 4 ++-- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index aa04cc633d..65fd7de04a 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -6,21 +6,21 @@ Улучшенный бросок гранат アドバンスド投てき Zaawansowane rzucanie - Erweitertes Werfen + Erweitertes Wurfsystem Allows changing advanced throwing behaviour. Позволяет настраивать поведение улучшенного броска гранат. アドバンスド投てきの挙動変更を許可します。 Zezwala na zmianę zachowania zaawansowanego trybu rzucania. - Erlaubt es, das Verhalten beim erweiterten Werfen zu ändern. + Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern. Enable Advanced Throwing Включить улучшенный бросок アドバンスド投てきを有効化 Aktywuj zaawansowane rzucanie - Aktiviere erweitertes Werfen + Aktiviere erweitertes Wurfsystem Enables advanced throwing system. diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml index b11c60f04d..4e609178ac 100644 --- a/addons/chemlights/stringtable.xml +++ b/addons/chemlights/stringtable.xml @@ -78,73 +78,73 @@ Chemlight (Hi Red) ケミライト (高輝度 赤) Świetlik (jaskrawy czerwony) - Knicklicht (Hi rot) + Knicklicht (rot, hell) Red Hi Light 高輝度の赤色 Jaskrawe czerwone światło - Rotes Hi Licht + Helles rotes Knicklicht Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 赤 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce - Typ: Licht - rot Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand + Typ: Licht - rot, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi Yellow) ケミライト (高輝度 黄) Świetlik (jaskrawy żółty) - Knicklicht (Hi gelb) + Knicklicht (gelb, hell) Yellow Hi Light 高輝度の黄色 Jaskrawe żółte światło - Gelbes Hi Licht + Helles gelbes Knicklicht Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 黄 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce - Typ: Licht - gelb Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand + Typ: Licht - gelb, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi Orange) ケミライト (高輝度 オレンジ) Świetlik (jaskrawy pomarańczowy) - Knicklicht (Hi orange) + Knicklicht (orange, hell) Orange Hi Light 高輝度のオレンジ Jaskrawe pomarańczowe światło - Oranges Hi Licht + Helles oranges Knicklicht Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 オレンジ (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce - Typ: Licht - orange Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand + Typ: Licht - orange, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (Hi White) ケミライト (高輝度 白) Świetlik (jaskrawy biały) - Knicklicht (Hi weiß) + Knicklicht (weiß, hell) White Hi Light 高輝度の白色 Jaskrawe białe światło - Weißes Hi Licht + Helles weißes Knicklicht Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand 種類: 照明 - 高輝度 白 (5分間)&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 携帯 Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce - Typ: Licht - weiß Hi (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand + Typ: Licht - weiß, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand Chemlight (IR) @@ -156,7 +156,7 @@ IR Light 赤外線光 Światło podczerwone - IR Licht + IR-Knicklicht Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index 9774265f08..2e221ce7fc 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -3,7 +3,7 @@ Enable cook off - Cook-off ermöglichen + Selbstzündung ermöglichen Povolit explozi munice Включить воспламенение 誘爆を有効化 @@ -34,7 +34,7 @@ Enable ammo box cook off 弾薬箱に誘爆を有効化 - Cook-off für Munitionskisten ermöglichen + Selbstzündung für Munitionskisten ermöglichen Enables cooking off of ammo boxes. @@ -44,7 +44,7 @@ Enable Ammunition cook off 弾薬の誘爆を有効化 - Cook-off für Munition ermöglichen + Selbstzündung für Munition ermöglichen Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition. diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml index 5131afde9a..0987dca59f 100644 --- a/addons/dogtags/stringtable.xml +++ b/addons/dogtags/stringtable.xml @@ -39,7 +39,7 @@ Жетон снят с %1... Sebral jsem známku od %1... %1からドッグ タグを取っている・・・ - Hundemarke von %1 genommen... + Hundemarke von %1 genommen ... Somebody else has already taken the dogtag... @@ -47,7 +47,7 @@ Кто-то уже забрал жетон... Někdo jiný už vzal identifikační známku... すでに誰かがドッグ タグを取っているようだ・・・ - Jemand anderes hat bereits die Hundemarke genommen... + Jemand anderes hat bereits die Hundemarke genommen ... \ No newline at end of file diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index e35ed536b0..fbb3ff49c7 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -150,7 +150,7 @@ Клавиша поворота инструментов карты マップ ツールの回転キー Klawisz obrotu narzędzi nawigacyjnych - Taste zum drehen des Kartenwerkzeugs + Taste zum Drehen des Kartenwerkzeugs Modifier key to allow rotating map tools diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index d5a229ac6a..5ef227bc42 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -239,7 +239,7 @@ Swapping barrel... - Lauf wird gewechselt... + Lauf wird gewechselt ... Cambiando el cañón... Wymienianie lufy... Měním hlaveň... @@ -291,7 +291,7 @@ Checking temperature... - Prüfe Temperatur... + Prüfe Temperatur ... Verificando temperatura... Sprawdzanie temperatury... Vérification de la température... @@ -320,7 +320,7 @@ Kontroluji teplotu náhradní hlavně... 予備銃身の温度を測っている・・・ Sprawdzanie temperatury zapasowych luf... - Prüfe Temperatur der Wechselläufe... + Prüfe Temperatur der Wechselläufe ... Temperature diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index 7d324157f0..a06a695e63 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -406,7 +406,7 @@ Невозможно изменить зафиксированный элемент пользовательского интерфейса. ユーザー インタフェイス要素は変更できません。 Nie można modyfikować wymuszonego elementu interfejsu użytkownika. - Gesperrte UI-Element können nicht modifiziert werden. + Gesperrte UI-Elemente können nicht modifiziert werden. \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 8f111751d0..317f423b4e 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -212,7 +212,7 @@ Globální zkušenosti AI 総合的な AI スキル Globalne umiejętności AI - Globales KI-Können + Globale KI-Fähigkeit General Skill @@ -221,7 +221,7 @@ Primární zkušenosti 総合スキル Ogólne umiejętności - Allgemeines Können + Allgemeine Fähigkeit Changes: general, commanding, courage From 6272b95accb3274735d7da9637104e70ed4228c8 Mon Sep 17 00:00:00 2001 From: System98 Date: Sun, 6 Nov 2016 12:22:39 +0100 Subject: [PATCH 24/33] Update chemlight translations - Add missing commas to some chemlight-strings --- addons/chemlights/stringtable.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml index 4e609178ac..c66bb425b9 100644 --- a/addons/chemlights/stringtable.xml +++ b/addons/chemlights/stringtable.xml @@ -84,7 +84,7 @@ Red Hi Light 高輝度の赤色 Jaskrawe czerwone światło - Helles rotes Knicklicht + Helles, rotes Knicklicht Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -102,7 +102,7 @@ Yellow Hi Light 高輝度の黄色 Jaskrawe żółte światło - Helles gelbes Knicklicht + Helles, gelbes Knicklicht Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -120,7 +120,7 @@ Orange Hi Light 高輝度のオレンジ Jaskrawe pomarańczowe światło - Helles oranges Knicklicht + Helles, oranges Knicklicht Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -138,7 +138,7 @@ White Hi Light 高輝度の白色 Jaskrawe białe światło - Helles weißes Knicklicht + Helles, weißes Knicklicht Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand From a0d6e0322b3ce66accce438158774c46400d31bc Mon Sep 17 00:00:00 2001 From: bux578 Date: Sun, 6 Nov 2016 20:41:21 +0100 Subject: [PATCH 25/33] fix typo in acerep7 --- docs/_posts/2016-11-04-ace3-version381.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_posts/2016-11-04-ace3-version381.md b/docs/_posts/2016-11-04-ace3-version381.md index 29bc850e97..8b9a448db3 100644 --- a/docs/_posts/2016-11-04-ace3-version381.md +++ b/docs/_posts/2016-11-04-ace3-version381.md @@ -35,7 +35,7 @@ With 3.8.0 the map tools will allow you to draw straight lines again. A feature ### Medical rewrite -If you're following ACE3 development on GitHub closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on GitHub with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134{:target="_blank"}). Worth a read. +If you're following ACE3 development on GitHub closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on GitHub with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134){:target="_blank"}. Worth a read. With the state machine system that has been introduced in CBA we are now able to strictly define various health states of players such as unconsciousness or cardiac arrest and what can happen in those states. This allows us to massively declutter the code which will not only reduce the possibility of bugs, but also enable us to add more features and gameplay elements to the medical system - with no performance loss at all. From 3f4564605beeb8cfb6f3a253000fd65eee47a812 Mon Sep 17 00:00:00 2001 From: ulteq Date: Wed, 2 Nov 2016 13:56:59 +0100 Subject: [PATCH 26/33] ATragMX - Implemented missing features * Muzzle Velocity vs. Temperature Interpolation * C1 Ballistic Coefficient vs. Distance Interpolation * Coriolis and Spin drift output * Options menu * Truing Drop --------------------------------- * Overworked default gun profiles --------------------------------- * Fixed the Cancel buttons on the gun-, atmosphere- and target columns. * Fixed some muzzle velocity entries in the default gun list. * Fixed divide by zero error in the target range estimator --- addons/atragmx/RscTitles.hpp | 390 +++++++++++++++++- addons/atragmx/XEH_PREP.hpp | 26 ++ addons/atragmx/XEH_postInit.sqf | 60 +-- addons/atragmx/functions/fnc_add_new_gun.sqf | 2 +- .../fnc_calculate_distance_at_velocity.sqf | 41 ++ .../fnc_calculate_target_range_assist.sqf | 18 +- .../fnc_calculate_target_solution.sqf | 10 +- .../functions/fnc_calculate_truing_drop.sqf | 107 +++++ addons/atragmx/functions/fnc_change_gun.sqf | 11 + .../functions/fnc_change_target_slot.sqf | 5 +- ...nc_clear_c1_ballistic_coefficient_data.sqf | 21 + .../fnc_clear_muzzle_velocity_data.sqf | 21 + .../atragmx/functions/fnc_clear_user_data.sqf | 1 + .../atragmx/functions/fnc_create_dialog.sqf | 10 + .../functions/fnc_cycle_scope_unit.sqf | 4 +- .../fnc_evaluate_option_menu_input.sqf | 30 ++ addons/atragmx/functions/fnc_init.sqf | 16 + ...c_insert_c1_ballistic_coefficient_data.sqf | 55 +++ .../fnc_insert_muzzle_velocity_data.sqf | 41 ++ addons/atragmx/functions/fnc_parse_input.sqf | 47 ++- ...c_recalculate_c1_ballistic_coefficient.sqf | 57 +++ .../fnc_recalculate_muzzle_velocity.sqf | 57 +++ .../functions/fnc_restore_truing_drop.sqf | 33 ++ .../functions/fnc_restore_user_data.sqf | 1 + ...nc_shift_c1_ballistic_coefficient_data.sqf | 25 ++ .../fnc_shift_muzzle_velocity_data.sqf | 25 ++ ...fnc_show_c1_ballistic_coefficient_data.sqf | 25 ++ .../atragmx/functions/fnc_show_main_page.sqf | 12 + .../fnc_show_muzzle_velocity_data.sqf | 25 ++ .../functions/fnc_show_truing_drop.sqf | 43 ++ .../atragmx/functions/fnc_store_user_data.sqf | 1 + .../functions/fnc_toggle_atmo_env_data.sqf | 4 + ...c_toggle_c1_ballistic_coefficient_data.sqf | 33 ++ .../atragmx/functions/fnc_toggle_coriolis.sqf | 19 + .../functions/fnc_toggle_gun_ammo_data.sqf | 3 + .../fnc_toggle_muzzle_velocity_data.sqf | 33 ++ .../functions/fnc_toggle_option_menu.sqf | 51 +++ .../functions/fnc_toggle_target_data.sqf | 2 + .../functions/fnc_toggle_truing_drop.sqf | 39 ++ .../fnc_true_c1_ballistic_coefficient.sqf | 42 ++ .../functions/fnc_true_muzzle_velocity.sqf | 42 ++ ...c_update_c1_ballistic_coefficient_data.sqf | 25 ++ .../fnc_update_muzzle_velocity_data.sqf | 28 ++ .../atragmx/functions/fnc_update_result.sqf | 21 +- .../functions/fnc_update_truing_drop_data.sqf | 77 ++++ .../fnc_update_truing_drop_selection.sqf | 43 ++ addons/atragmx/script_component.hpp | 2 +- 47 files changed, 1614 insertions(+), 70 deletions(-) create mode 100644 addons/atragmx/functions/fnc_calculate_distance_at_velocity.sqf create mode 100644 addons/atragmx/functions/fnc_calculate_truing_drop.sqf create mode 100644 addons/atragmx/functions/fnc_clear_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf create mode 100644 addons/atragmx/functions/fnc_insert_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_recalculate_c1_ballistic_coefficient.sqf create mode 100644 addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf create mode 100644 addons/atragmx/functions/fnc_restore_truing_drop.sqf create mode 100644 addons/atragmx/functions/fnc_shift_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_show_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_show_truing_drop.sqf create mode 100644 addons/atragmx/functions/fnc_toggle_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_toggle_coriolis.sqf create mode 100644 addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_toggle_option_menu.sqf create mode 100644 addons/atragmx/functions/fnc_toggle_truing_drop.sqf create mode 100644 addons/atragmx/functions/fnc_true_c1_ballistic_coefficient.sqf create mode 100644 addons/atragmx/functions/fnc_true_muzzle_velocity.sqf create mode 100644 addons/atragmx/functions/fnc_update_c1_ballistic_coefficient_data.sqf create mode 100644 addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf create mode 100644 addons/atragmx/functions/fnc_update_truing_drop_data.sqf create mode 100644 addons/atragmx/functions/fnc_update_truing_drop_selection.sqf diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp index 625cd68deb..eb2de958d6 100644 --- a/addons/atragmx/RscTitles.hpp +++ b/addons/atragmx/RscTitles.hpp @@ -2,6 +2,8 @@ #define ST_RIGHT 1 #define ST_CENTER 2 +#define ST_WITH_RECT 160 + class ATragMX_RscText { idc=-1; type=0; @@ -350,6 +352,7 @@ class ATragMX_Display { colorBackground[]={0.15,0.21,0.23,0.3}; colorFocused[]={0.15,0.21,0.23,0.2}; text="MV"; + action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data)); }; class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT { idc=130; @@ -383,18 +386,18 @@ class ATragMX_Display { y=0.265*safezoneH+safezoneY+0.320; text=""; }; - class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION { + class TEXT_BAROMETRIC_PRESSURE: TEXT_TEMPERATURE { idc=21; x=0.550*safezoneW+safezoneX+0.20; + y=0.265*safezoneH+safezoneY+0.355; text="BP"; }; class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT { idc=210; y=0.265*safezoneH+safezoneY+0.355; }; - class TEXT_RELATIVE_HUMIDITY: TEXT_AIR_FRICTION { + class TEXT_RELATIVE_HUMIDITY: TEXT_BAROMETRIC_PRESSURE { idc=22; - x=0.550*safezoneW+safezoneX+0.20; y=0.265*safezoneH+safezoneY+0.390; text="RH"; }; @@ -526,7 +529,7 @@ class ATragMX_Display { }; class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscText { idc=400; - style=160; + style=ST_WITH_RECT+ST_RIGHT; sizeEx=0.025; w=0.065; h=0.032; @@ -606,17 +609,39 @@ class ATragMX_Display { class TEXT_SCOPE_CLICK_NUMBER: TEXT_GUN_LIST { idc=2001; style=ST_CENTER; - w=0.03; + w=0.025; x=0.550*safezoneW+safezoneX+0.27; text="4"; action=QUOTE(call FUNC(toggle_solution_setup)); }; - class TEXT_CALCULATE: TEXT_SCOPE_UNIT { + class TEXT_OPTIONS: TEXT_GUN_LIST { idc=3000; style=ST_RIGHT; x=0.550*safezoneW+safezoneX+0.3; - text="Calc"; - action=QUOTE(call FUNC(calculate_target_solution)); + text="Options"; + action=QUOTE(false call FUNC(toggle_option_menu)); + }; + class TEXT_OPTIONS_BACKGROUND: ATragMX_RscButton { + idc=3001; + colorBackground[]={0.15,0.21,0.23,0.2}; + colorBackgroundActive[]={0.15,0.21,0.23,0.2}; + colorFocused[]={0.15,0.21,0.23,0.2}; + x=0.550*safezoneW+safezoneX+0.105; + y=0.265*safezoneH+safezoneY+0.17; + w=0.3; + h=0.535; + offsetPressedX=0.0; + offsetPressedY=0.0; + action=QUOTE(false call FUNC(toggle_option_menu)); + }; + class TEXT_OPTIONS_LIST_OUTPUT: ATragMX_RscListBox { + idc=3002; + w=0.17; + h=0.28; + x=0.550*safezoneW+safezoneX+0.225; + y=0.265*safezoneH+safezoneY+0.355; + sizeEx=0.025; + onMouseButtonClick=QUOTE(true call FUNC(toggle_option_menu)); }; class TEXT_RANGE_CARD_SCOPE_UNIT: TEXT_GUN_PROFILE { @@ -766,8 +791,9 @@ class ATragMX_Display { class TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE: TEXT_TARGET_RANGE_ASSIST_MEASUREMENT_METHOD { idc=7003; style=ST_RIGHT; - x=0.550*safezoneW+safezoneX+0.10; + x=0.550*safezoneW+safezoneX+0.092; y=0.265*safezoneH+safezoneY+0.4; + w=0.128; text="Target Size"; }; class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE { @@ -874,22 +900,22 @@ class ATragMX_Display { class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE { idc=8000; - x=0.550*safezoneW+safezoneX+0.13; + x=0.550*safezoneW+safezoneX+0.12; text="Target Range"; }; class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE { idc=8001; - x=0.550*safezoneW+safezoneX+0.13; + x=0.550*safezoneW+safezoneX+0.12; text="Num Ticks"; }; class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE { idc=8002; - x=0.550*safezoneW+safezoneX+0.13; + x=0.550*safezoneW+safezoneX+0.12; text="Time (secs)"; }; class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE { idc=8003; - x=0.550*safezoneW+safezoneX+0.13; + x=0.550*safezoneW+safezoneX+0.12; text="Est Speed"; }; class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT { @@ -1468,5 +1494,343 @@ class ATragMX_Display { y=0.265*safezoneH+safezoneY+0.55; action=QUOTE(0 call FUNC(toggle_solution_setup)); }; + + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE: TEXT_BORE_HEIGHT { + idc=16000; + w=0.22; + y=0.265*safezoneH+safezoneY+0.25; + sizeEx=0.022; + text="Temperature"; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE { + idc=16001; + x=0.550*safezoneW+safezoneX+0.215; + sizeEx=0.022; + text="Muzzle velocity"; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1: ATragMX_RscEdit { + idc=160021; + w=0.082; + h=0.035; + x=0.550*safezoneW+safezoneX+0.128; + y=0.265*safezoneH+safezoneY+0.29; + text="0"; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160022; + y=0.265*safezoneH+safezoneY+0.325; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160023; + y=0.265*safezoneH+safezoneY+0.360; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160024; + y=0.265*safezoneH+safezoneY+0.395; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160025; + y=0.265*safezoneH+safezoneY+0.430; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160026; + y=0.265*safezoneH+safezoneY+0.465; + }; + class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160027; + y=0.265*safezoneH+safezoneY+0.500; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_1: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 { + idc=160031; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2 { + idc=160032; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3 { + idc=160033; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4 { + idc=160034; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5 { + idc=160035; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6 { + idc=160036; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7 { + idc=160037; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_MUZZLE_VELOCITY_DATA_CLEAR: TEXT_TARGET_DATA_NEXT { + idc=16004; + style=ST_CENTER; + h=0.035; + y=0.265*safezoneH+safezoneY+0.3625; + text="Clear"; + action=QUOTE(call FUNC(clear_muzzle_velocity_data)); + }; + class TEXT_MUZZLE_VELOCITY_DATA_QUESTIONMARK: TEXT_MUZZLE_VELOCITY_DATA_CLEAR { + idc=16005; + y=0.265*safezoneH+safezoneY+0.430; + text="?"; + action=""; + }; + class TEXT_MUZZLE_VELOCITY_DATA_DONE: TEXT_TARGET_DATA_DONE { + idc=16006; + action=QUOTE(1 call FUNC(toggle_muzzle_velocity_data)); + }; + class TEXT_MUZZLE_VELOCITY_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL { + idc=16007; + action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data)); + }; + class TEXT_MUZZLE_VELOCITY_DATA_PREV: TEXT_TARGET_DATA_PREV { + idc=16008; + }; + class TEXT_MUZZLE_VELOCITY_DATA_NEXT: TEXT_TARGET_DATA_NEXT { + idc=16009; + }; + + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE: TEXT_BORE_HEIGHT { + idc=17000; + w=0.22; + x=0.550*safezoneW+safezoneX+0.15; + y=0.265*safezoneH+safezoneY+0.25; + sizeEx=0.022; + text="Meters"; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE { + idc=17001; + x=0.550*safezoneW+safezoneX+0.235; + sizeEx=0.022; + text="BC-Coef"; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1: ATragMX_RscEdit { + idc=170021; + w=0.082; + h=0.035; + x=0.550*safezoneW+safezoneX+0.128; + y=0.265*safezoneH+safezoneY+0.29; + text="0"; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170022; + y=0.265*safezoneH+safezoneY+0.325; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170023; + y=0.265*safezoneH+safezoneY+0.360; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170024; + y=0.265*safezoneH+safezoneY+0.395; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170025; + y=0.265*safezoneH+safezoneY+0.430; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170026; + y=0.265*safezoneH+safezoneY+0.465; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170027; + y=0.265*safezoneH+safezoneY+0.500; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_1: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 { + idc=170031; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2 { + idc=170032; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3 { + idc=170033; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4 { + idc=170034; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5 { + idc=170035; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6 { + idc=170036; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7 { + idc=170037; + x=0.550*safezoneW+safezoneX+0.225; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK: TEXT_TARGET_DATA_NEXT { + idc=17004; + style=ST_CENTER; + w=0.04; + h=0.035; + y=0.265*safezoneH+safezoneY+0.35; + text="?"; + action=""; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CLEAR: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK { + idc=17005; + w=0.07; + y=0.265*safezoneH+safezoneY+0.4175; + text="Clear"; + action=QUOTE(call FUNC(clear_c1_ballistic_coefficient_data)); + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DONE: TEXT_TARGET_DATA_DONE { + idc=17006; + action=QUOTE(1 call FUNC(toggle_c1_ballistic_coefficient_data)); + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL { + idc=17007; + action=QUOTE(0 call FUNC(toggle_c1_ballistic_coefficient_data)); + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_PREV: TEXT_TARGET_DATA_PREV { + idc=17008; + }; + class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_NEXT: TEXT_TARGET_DATA_NEXT { + idc=17009; + }; + + class TEXT_TRUING_DROP_ZERO_RANGE: ATragMX_RscText { + idc=18000; + style=ST_LEFT; + x=0.550*safezoneW+safezoneX+0.115; + y=0.265*safezoneH+safezoneY+0.220; + w=0.135; + h=0.03; + sizeEx=0.025; + text="ZR=100meters"; + }; + class TEXT_TRUING_DROP_DROP_UNIT: TEXT_TRUING_DROP_ZERO_RANGE { + idc=18001; + style=ST_LEFT; + x=0.550*safezoneW+safezoneX+0.25; + text="Drop=mil"; + }; + class TEXT_TRUING_DROP_TARGET_RANGE: TEXT_TRUING_DROP_ZERO_RANGE { + idc=18002; + y=0.265*safezoneH+safezoneY+0.35; + sizeEx=0.027; + text="Target Range"; + }; + class TEXT_TRUING_DROP_DROP: TEXT_TRUING_DROP_TARGET_RANGE { + idc=18003; + w=0.07; + y=0.265*safezoneH+safezoneY+0.40; + text="Drop"; + }; + class TEXT_TRUING_DROP_MUZZLE_VELOCITY: TEXT_TRUING_DROP_DROP { + idc=18004; + y=0.265*safezoneH+safezoneY+0.50; + text="MV"; + }; + class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT: TEXT_TRUING_DROP_DROP { + idc=18005; + y=0.265*safezoneH+safezoneY+0.55; + text="C1"; + }; + class TEXT_TRUING_DROP_DROP_OUTPUT: ATragMX_RscEdit { + idc=18006; + style=ST_WITH_RECT+ST_RIGHT; + colorBackground[]={0.15,0.21,0.23,0.3}; + colorDisabled[]={0,0,0,1}; + w=0.06; + y=0.265*safezoneH+safezoneY+0.40; + x=0.550*safezoneW+safezoneX+0.17; + text=""; + }; + class TEXT_TRUING_DROP_MUZZLE_VELOCITY_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT { + idc=18007; + y=0.265*safezoneH+safezoneY+0.50; + text=""; + }; + class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT { + idc=18008; + y=0.265*safezoneH+safezoneY+0.55; + text=""; + }; + class TEXT_TRUING_DROP_SUPER: TEXT_TARGET_A { + idc=18009; + w=0.06; + x=0.550*safezoneW+safezoneX+0.25; + y=0.265*safezoneH+safezoneY+0.30; + text="SUPER"; + action=QUOTE(GVAR(truingDropMode) = 0; call FUNC(update_truing_drop_selection)); + }; + class TEXT_TRUING_DROP_SUB: TEXT_TRUING_DROP_SUPER { + idc=18010; + x=0.550*safezoneW+safezoneX+0.32; + text="SUB"; + action=QUOTE(GVAR(truingDropMode) = 1; call FUNC(update_truing_drop_selection)); + }; + class TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT: ATragMX_RscEdit { + idc=18011; + style=ST_WITH_RECT+ST_RIGHT; + colorDisabled[]={0,0,0,0.6}; + w=0.06; + x=0.550*safezoneW+safezoneX+0.25; + y=0.265*safezoneH+safezoneY+0.35; + }; + class TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT { + idc=18012; + x=0.550*safezoneW+safezoneX+0.32; + }; + class TEXT_TRUING_DROP_DROP_SUPER_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT { + idc=18013; + y=0.265*safezoneH+safezoneY+0.40; + }; + class TEXT_TRUING_DROP_DROP_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT { + idc=18014; + y=0.265*safezoneH+safezoneY+0.40; + }; + class TEXT_TRUING_DROP_CALC: TEXT_GUN_LIST { + idc=18015; + style=ST_CENTER; + w=0.11; + x=0.550*safezoneW+safezoneX+0.26; + y=0.265*safezoneH+safezoneY+0.45; + text="Calc"; + action=QUOTE(true call FUNC(calculate_truing_drop)); + }; + class TEXT_TRUING_DROP_MV_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT { + idc=18016; + y=0.265*safezoneH+safezoneY+0.50; + }; + class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT { + idc=18017; + y=0.265*safezoneH+safezoneY+0.55; + }; + class TEXT_TRUING_DROP_ACCEPT: TEXT_GUN_LIST { + idc=18018; + w=0.085; + h=0.04; + x=0.550*safezoneW+safezoneX+0.125; + y=0.265*safezoneH+safezoneY+0.60; + text="Accept"; + action=QUOTE(1 call FUNC(toggle_truing_drop)); + }; + class TEXT_TRUING_DROP_CANCEL: TEXT_TRUING_DROP_ACCEPT { + idc=18019; + x=0.550*safezoneW+safezoneX+0.210; + text="Cancel"; + action=QUOTE(0 call FUNC(toggle_truing_drop)); + }; + class TEXT_TRUING_DROP_RESTORE: TEXT_TRUING_DROP_CANCEL { + idc=18020; + x=0.550*safezoneW+safezoneX+0.29525; + text="Restore"; + action=QUOTE(true call FUNC(restore_truing_drop)); + }; }; }; diff --git a/addons/atragmx/XEH_PREP.hpp b/addons/atragmx/XEH_PREP.hpp index 20900711c3..29433f9313 100644 --- a/addons/atragmx/XEH_PREP.hpp +++ b/addons/atragmx/XEH_PREP.hpp @@ -1,13 +1,17 @@ PREP(add_new_gun); +PREP(calculate_distance_at_velocity); PREP(calculate_range_card); PREP(calculate_solution); PREP(calculate_target_range_assist); PREP(calculate_target_solution); PREP(calculate_target_speed_assist); +PREP(calculate_truing_drop); PREP(can_show); PREP(change_gun); PREP(change_target_slot); +PREP(clear_c1_ballistic_coefficient_data); +PREP(clear_muzzle_velocity_data); PREP(clear_user_data); PREP(create_dialog); PREP(cycle_gun_list); @@ -18,17 +22,27 @@ PREP(cycle_scope_unit); PREP(cycle_target_size_units); PREP(cycle_target_speed_direction); PREP(delete_gun); +PREP(evaluate_option_menu_input); PREP(init); +PREP(insert_c1_ballistic_coefficient_data); +PREP(insert_muzzle_velocity_data); PREP(parse_input); +PREP(recalculate_c1_ballistic_coefficient); +PREP(recalculate_muzzle_velocity); PREP(reset_relative_click_memory); PREP(restore_atmo_default); +PREP(restore_truing_drop); PREP(restore_user_data); PREP(save_gun); +PREP(shift_c1_ballistic_coefficient_data); +PREP(shift_muzzle_velocity_data); PREP(show_add_new_gun); PREP(show_atmo_env_data); +PREP(show_c1_ballistic_coefficient_data); PREP(show_gun_ammo_data); PREP(show_gun_list); PREP(show_main_page); +PREP(show_muzzle_velocity_data); PREP(show_range_card); PREP(show_range_card_setup); PREP(show_solution_setup); @@ -36,24 +50,34 @@ PREP(show_target_data); PREP(show_target_range_assist); PREP(show_target_speed_assist); PREP(show_target_speed_assist_timer); +PREP(show_truing_drop); PREP(sord); PREP(store_user_data); PREP(target_speed_assist_timer); PREP(toggle_atmo_env_data); +PREP(toggle_c1_ballistic_coefficient_data); +PREP(toggle_coriolis); PREP(toggle_gun_ammo_data); PREP(toggle_gun_list); +PREP(toggle_muzzle_velocity_data); +PREP(toggle_option_menu); PREP(toggle_range_card); PREP(toggle_range_card_setup); PREP(toggle_solution_setup); PREP(toggle_target_data); PREP(toggle_target_range_assist); PREP(toggle_target_speed_assist); +PREP(toggle_truing_drop); +PREP(true_c1_ballistic_coefficient); +PREP(true_muzzle_velocity); PREP(update_atmosphere); PREP(update_atmo_env_data); PREP(update_atmo_selection); +PREP(update_c1_ballistic_coefficient_data); PREP(update_gun); PREP(update_gun_ammo_data); PREP(update_inclination_angle); +PREP(update_muzzle_velocity_data); PREP(update_range_card); PREP(update_relative_click_memory); PREP(update_result); @@ -62,6 +86,8 @@ PREP(update_solution_setup); PREP(update_target); PREP(update_target_data); PREP(update_target_selection); +PREP(update_truing_drop_data); +PREP(update_truing_drop_selection); PREP(update_unit_selection); PREP(update_zero_range); PREP(on_close_dialog); diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 992f9e657a..3caecd2c83 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -5,49 +5,49 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then { GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList"; } else { - // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model - GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ], + // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation + GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ], - ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ], + ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ], + ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" ], + [".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" ], + [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" , [[-15,883],[0,890],[10,897],[15,902],[25,916],[30,925],[35,936]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ], + ["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"], - [".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"], - [".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ], + [".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".338LM API526" , 880, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.268, 7, "ICAO"], - [".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"], - [".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"], + [".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"], + ["7.62x54mmR" , 820, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.200, 7, "ICAO"], - ["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"], - ["7.62x51mm Mk316" , 780, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"], - ["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"], - ["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"], - ["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"], + ["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm M118LR" , 765, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm Mk316" , 782, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm Mk319" , 901, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm M993" , 920, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm Subsonic", 315, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"], - ["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"], - ["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"], + ["6.5x39mm" , 774, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["6.5x47mm Lapua" , 775, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["6.5mm Creedmor" , 830, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.8x42mm DBP87" , 930, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.156, 7, "ICAO" ], + ["5.8x42mm DBP87" , 950, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ], - ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ], - ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ], - ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ], + ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.168, 7, "ICAO"]]; + ["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]]]; [] call FUNC(clear_user_data); profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; diff --git a/addons/atragmx/functions/fnc_add_new_gun.sqf b/addons/atragmx/functions/fnc_add_new_gun.sqf index dbc85cc27f..bca41f8b6b 100644 --- a/addons/atragmx/functions/fnc_add_new_gun.sqf +++ b/addons/atragmx/functions/fnc_add_new_gun.sqf @@ -17,7 +17,7 @@ private _gunName = ctrlText 11001; if (_gunName != "") then { - private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO"], + private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO", [[-15,0],[0,0],[10,0],[15,0],[25,0],[30,0],[35,0]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]]; GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry]; diff --git a/addons/atragmx/functions/fnc_calculate_distance_at_velocity.sqf b/addons/atragmx/functions/fnc_calculate_distance_at_velocity.sqf new file mode 100644 index 0000000000..f86ef5d28a --- /dev/null +++ b/addons/atragmx/functions/fnc_calculate_distance_at_velocity.sqf @@ -0,0 +1,41 @@ +/* + * Author: Ruthberg + * Calculates distance at which the bullet velocity drops below the threshold velocity + * + * Arguments: + * theshold velocity + * + * Return Value: + * distance _thresholdVelocity} do { + private _bc = GVAR(targetSolutionInput) select 14; + private _dragModel = GVAR(targetSolutionInput) select 15; + private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { + parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _velocity])) + } else { + ([_dragModel, _bc, _velocity] call EFUNC(advanced_ballistics,calculateRetardation)) + }; + _distance = _distance + _velocity * __DELTA_T; + _velocity = _velocity - (_drag * __DELTA_T); +}; + +_distance diff --git a/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf b/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf index e59cdee37d..be21a09927 100644 --- a/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf @@ -16,7 +16,7 @@ #include "script_component.hpp" private _angle = parseNumber(ctrlText 7012); -private _targetSize = parseNumber(ctrlText 7010); +private _targetSize = abs(parseNumber(ctrlText 7010)); if (GVAR(rangeAssistUseTargetHeight)) then { _targetSize = _targetSize * cos(_angle); }; @@ -43,7 +43,7 @@ switch (GVAR(rangeAssistImageSizeUnit)) do { _imageSize = _imageSize / 60 / 1.047; }; }; -private _estRange = parseNumber(ctrlText 7013); +private _estRange = abs(parseNumber(ctrlText 7013)); if (GVAR(currentUnit) == 1) then { _estRange = _estRange / 1.0936133; }; @@ -52,7 +52,7 @@ switch (_this) do { case 0: { _targetSize = tan(_imageSize) * _estRange; - if (GVAR(rangeAssistUseTargetHeight)) then { + if (GVAR(rangeAssistUseTargetHeight) && cos(_angle) != 0) then { _targetSize = _targetSize / cos(_angle); }; @@ -71,8 +71,10 @@ switch (_this) do { ctrlSetText [7010, Str(Round(_targetSize * 100) / 100)]; }; case 1: { - _imageSize = atan(_targetSize / _estRange); - + if (_estRange > 0) then { + _imageSize = atan(_targetSize / _estRange); + }; + switch (GVAR(rangeAssistImageSizeUnit)) do { case 0: { _imageSize = _imageSize * 6400 / 360; @@ -88,8 +90,10 @@ switch (_this) do { ctrlSetText [7011, Str(Round(_imageSize * 100) / 100)]; }; case 2: { - _estRange = _targetSize / tan(_imageSize); - + if (tan(_imageSize) != 0) then { + _estRange = _targetSize / tan(_imageSize); + }; + ctrlSetText [7013, Str(Round(_estRange))]; }; }; diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf index 8bd844938f..ced57df973 100644 --- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf @@ -70,9 +70,10 @@ _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget); _targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget); _targetRange = GVAR(targetRange) select GVAR(currentTarget); -private ["_result"]; -_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, - [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution); +GVAR(targetSolutionInput) = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, + [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire]; + +private _result = GVAR(targetSolutionInput) call FUNC(calculate_solution); GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0]; GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0]; @@ -80,5 +81,8 @@ GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1]; GVAR(leadOutput) set [GVAR(currentTarget), _result select 2]; GVAR(tofOutput) set [GVAR(currentTarget), _result select 3]; GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4]; +GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), _result select 6]; +GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), _result select 7]; +GVAR(spinDriftOutput) set [GVAR(currentTarget), _result select 8]; [] call FUNC(update_result); diff --git a/addons/atragmx/functions/fnc_calculate_truing_drop.sqf b/addons/atragmx/functions/fnc_calculate_truing_drop.sqf new file mode 100644 index 0000000000..ddc57bdb96 --- /dev/null +++ b/addons/atragmx/functions/fnc_calculate_truing_drop.sqf @@ -0,0 +1,107 @@ +/* + * Author: Ruthberg + * Calculates the truing drop and updates the output fields + * + * Arguments: + * parse input + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_calculate_truing_drop + * + * Public: No + */ +#include "script_component.hpp" + +private _parseInput = _this; + +private _transonicRange = GVAR(truingDropRangeData) select 0; +private _subsonicRange = GVAR(truingDropRangeData) select 1; +private _transonicDrop = GVAR(truingDropDropData) select 1; +private _subsonicDrop = GVAR(truingDropDropData) select 2; + +if (_parseInput) then { + _transonicRange = 0 max abs(parseNumber(ctrlText 18011)) min 4000; + _subsonicRange = 0 max abs(parseNumber(ctrlText 18012)) min 4000; + if (GVAR(currentUnit) != 2) then { + _transonicRange = _transonicRange * 0.9144; + _subsonicRange = _subsonicRange * 0.9144; + }; + _transonicRange = Round(_transonicRange); + _subsonicRange = Round(_subsonicRange); + + _subsonicRange = _transonicRange max _subsonicRange; + + _transonicDrop = 0 max abs(parseNumber(ctrlText 18013)) min 1000; + _subsonicDrop = 0 max abs(parseNumber(ctrlText 18014)) min 1000; + private _dropUnit = GVAR(currentScopeUnit); + if (_dropUnit == 3) then { + switch (GVAR(currentScopeClickUnit)) do { + case 0: { _dropUnit = 1; }; + case 1: { _dropUnit = 2; }; + case 2: { _dropUnit = 0; }; + }; + }; + switch (_dropUnit) do { + case 0: { + _transonicDrop = _transonicDrop * 3.38; + _subsonicDrop = _subsonicDrop * 3.38; + }; + case 2: { + _transonicDrop = _transonicDrop / 1.047; + _subsonicDrop = _subsonicDrop / 1.047; + }; + }; + _transonicDrop = Round(_transonicDrop * 100) / 100; + _subsonicDrop = Round(_subsonicDrop * 100) / 100; + + _subsonicDrop = _transonicDrop max _subsonicDrop; +}; + +if ((GVAR(truingDropDropData) select 0) == 0 || {!([_transonicRange, _subsonicRange] isEqualTo GVAR(truingDropRangeData))}) then { + if (isNil QGVAR(targetSolutionInput)) then { + call FUNC(calculate_target_solution); + }; + private _solutionInput = +GVAR(targetSolutionInput); + + if (_transonicRange == 0) then { + _transonicRange = Round(403 call FUNC(calculate_distance_at_velocity)); + }; + _solutionInput set [13, _transonicRange]; + private _result1 = _solutionInput call FUNC(calculate_solution); + _transonicDrop = Round((_result1 select 0) * 100) / 100; + GVAR(truingDropRangeData) set [0, _transonicRange]; + GVAR(truingDropDropData) set [1, _transonicDrop]; + GVAR(truingDropReferenceDropData) set [0, _transonicDrop]; + + private _speedOfSound = (_solutionInput select 5) call EFUNC(weather,calculateSpeedOfSound); + if (_subsonicRange == 0) then { + _subsonicRange = _speedOfSound call FUNC(calculate_distance_at_velocity); + if (GVAR(currentUnit) == 2) then { + _subsonicRange = _subsonicRange + 200; + } else { + _subsonicRange = _subsonicRange + 200 * 1.0936133; + }; + _subsonicRange = Round(_subsonicRange); + }; + _solutionInput set [13, _subsonicRange]; + private _result2 = _solutionInput call FUNC(calculate_solution); + _subsonicDrop = Round((_result2 select 0) * 100) / 100; + GVAR(truingDropRangeData) set [1, _subsonicRange]; + GVAR(truingDropDropData) set [2, _subsonicDrop]; + GVAR(truingDropReferenceDropData) set [1, _subsonicDrop]; +} else { + if (_transonicDrop != GVAR(truingDropDropData) select 1 || _subsonicDrop != GVAR(truingDropDropData) select 2) then { + GVAR(truingDropDropData) set [1, _transonicDrop]; + GVAR(truingDropDropData) set [2, _subsonicDrop]; + if (GVAR(truingDropMode) == 0) then { + call FUNC(true_muzzle_velocity); + } else { + call FUNC(true_c1_ballistic_coefficient); + }; + }; +}; + +call FUNC(update_truing_drop_data); diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf index babd4e733c..b6e5e24658 100644 --- a/addons/atragmx/functions/fnc_change_gun.sqf +++ b/addons/atragmx/functions/fnc_change_gun.sqf @@ -26,6 +26,12 @@ if (_restoreMemory) then { }; GVAR(currentGun) = _gunID; +[false, false] call FUNC(recalculate_muzzle_velocity); +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + false call FUNC(restore_truing_drop); + [false, false] call FUNC(recalculate_c1_ballistic_coefficient); +}; + if (_updateDisplay) then { lbSetCurSel [6000, GVAR(currentGun)]; }; @@ -37,6 +43,8 @@ GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10; if (_updateDisplay) then { [] call FUNC(update_gun); [] call FUNC(update_gun_ammo_data); + [] call FUNC(update_muzzle_velocity_data); + [] call FUNC(update_c1_ballistic_coefficient_data); }; GVAR(elevationOutput) set [GVAR(currentTarget), 0]; @@ -45,6 +53,9 @@ GVAR(windage2Output) set [GVAR(currentTarget), 0]; GVAR(leadOutput) set [GVAR(currentTarget), 0]; GVAR(tofOutput) set [GVAR(currentTarget), 0]; GVAR(velocityOutput) set [GVAR(currentTarget), 0]; +GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), 0]; +GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), 0]; +GVAR(spinDriftOutput) set [GVAR(currentTarget), 0]; if (_updateDisplay) then { [] call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_change_target_slot.sqf b/addons/atragmx/functions/fnc_change_target_slot.sqf index a867749f21..7c660ff7de 100644 --- a/addons/atragmx/functions/fnc_change_target_slot.sqf +++ b/addons/atragmx/functions/fnc_change_target_slot.sqf @@ -17,9 +17,8 @@ private _target = 0 max _this min 3; -call FUNC(parse_input); +[] call FUNC(parse_input); GVAR(currentTarget) = _target; call FUNC(update_target_selection); - -[] call FUNC(calculate_target_solution); +call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_clear_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_clear_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..c6f2d47134 --- /dev/null +++ b/addons/atragmx/functions/fnc_clear_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,21 @@ +/* + * Author: Ruthberg + * Clears the c1 ballistic coefficient data fields + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_clear_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +// Distances +{ctrlSetText [_x, "0"]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027]; +// Ballistic Coefficients +{ctrlSetText [_x, "0"]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037]; diff --git a/addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..d76fa5864b --- /dev/null +++ b/addons/atragmx/functions/fnc_clear_muzzle_velocity_data.sqf @@ -0,0 +1,21 @@ +/* + * Author: Ruthberg + * Clears the muzzle velocity data fields + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_clear_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +// Temperatures +{ctrlSetText [_x, "0"]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027]; +// Muzzle velocities +{ctrlSetText [_x, "0"]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037]; diff --git a/addons/atragmx/functions/fnc_clear_user_data.sqf b/addons/atragmx/functions/fnc_clear_user_data.sqf index 308b5bbf12..faa9af07f7 100644 --- a/addons/atragmx/functions/fnc_clear_user_data.sqf +++ b/addons/atragmx/functions/fnc_clear_user_data.sqf @@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_temperature", nil]; profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil]; profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil]; +profileNamespace setVariable ["ACE_ATragMX_showCoriolis", nil]; profileNamespace setVariable ["ACE_ATragMX_showWind2", nil]; profileNamespace setVariable ["ACE_ATragMX_latitude", nil]; profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil]; diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index 2eee7c1824..322f135b45 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -30,8 +30,10 @@ GVAR(showMainPage) call FUNC(show_main_page); GVAR(showAddNewGun) call FUNC(show_add_new_gun); GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data); +GVAR(showC1BallisticCoefficientData) call FUNC(show_c1_ballistic_coefficient_data); GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data); GVAR(showGunList) call FUNC(show_gun_list); +GVAR(showMuzzleVelocityData) call FUNC(show_muzzle_velocity_data); GVAR(showRangeCard) call FUNC(show_range_card); if (GVAR(showRangeCard)) then { ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001); @@ -43,6 +45,7 @@ GVAR(showTargetData) call FUNC(show_target_data); GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist); GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist); GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); +GVAR(showTruingDrop) call FUNC(show_truing_drop); [GVAR(currentGun), false, true] call FUNC(change_gun); @@ -50,6 +53,13 @@ GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); lbAdd [6000, _x select 0]; } forEach GVAR(gunList); +ctrlShow [3001, false]; +ctrlShow [3002, false]; + +{ + (__dsp displayCtrl _x) ctrlEnable false; +} forEach [18006, 18007, 18008]; + GVAR(active) = true; GVAR(DialogPFH) = [{ diff --git a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf index d83236bc78..f1cc9c2219 100644 --- a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf +++ b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf @@ -15,10 +15,10 @@ */ #include "script_component.hpp" -[] call FUNC(parse_input); - GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits)); GVAR(workingMemory) set [6, GVAR(currentScopeUnit)]; +true call FUNC(show_main_page); + [] call FUNC(update_scope_unit); [] call FUNC(update_result); diff --git a/addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf b/addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf new file mode 100644 index 0000000000..f74f8678a4 --- /dev/null +++ b/addons/atragmx/functions/fnc_evaluate_option_menu_input.sqf @@ -0,0 +1,30 @@ +/* + * Author: Ruthberg + * Evalutes input from the option menu + * + * Arguments: + * option menu id + * + * Return Value: + * Nothing + * + * Example: + * 1 call ace_atragmx_fnc_evaluate_option_menu_input + * + * Public: No + */ +#include "script_component.hpp" + +params ["_optionID"]; + +switch (_optionID) do { + case 0: {}; // Accuracy 1st + case 1: { 0 call FUNC(toggle_muzzle_velocity_data); }; // MuzVel Table + case 2: { 0 call FUNC(toggle_c1_ballistic_coefficient_data); }; // Bal Coef Table + case 3: { 0 call FUNC(toggle_target_speed_assist); }; // Target Speed Est + case 4: { 0 call FUNC(toggle_target_range_assist); }; // Target Range Est + case 5: { 0 call FUNC(toggle_truing_drop); }; // Truing Drop + case 6: { 0 call FUNC(toggle_coriolis); }; // Show Coriolis + case 7: { 0 call FUNC(toggle_solution_setup); }; // Set Clicks + case 8: {}; // Gun Note +}; diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf index 30b17ebf90..eda2cc1ee0 100644 --- a/addons/atragmx/functions/fnc_init.sqf +++ b/addons/atragmx/functions/fnc_init.sqf @@ -65,18 +65,33 @@ GVAR(targetSpeedDirection) = [1, 1, 1, 1]; GVAR(targetRange) = [0, 0, 0, 0]; GVAR(showWind2) = false; +GVAR(showCoriolis) = false; GVAR(elevationOutput) = [0, 0, 0, 0]; GVAR(windage1Output) = [0, 0, 0, 0]; GVAR(windage2Output) = [0, 0, 0, 0]; GVAR(leadOutput) = [0, 0, 0, 0]; GVAR(tofOutput) = [0, 0, 0, 0]; GVAR(velocityOutput) = [0, 0, 0, 0]; +GVAR(verticalCoriolisOutput) = [0, 0, 0, 0]; +GVAR(horizontalCoriolisOutput) = [0, 0, 0, 0]; +GVAR(spinDriftOutput) = [0, 0, 0, 0]; + +GVAR(truingDropMode) = 0; +GVAR(truingDropRangeData) = [0, 0]; +GVAR(truingDropDropData) = [0, 0, 0]; +GVAR(truingDropReferenceDropData) = [0, 0, 0]; +GVAR(truingDropC1) = 0; +GVAR(truingDropMuzzleVelocity) = 0; + +GVAR(targetSolutionInput) = nil; GVAR(showMainPage) = true; GVAR(showAddNewGun) = false; GVAR(showAtmoEnvData) = false; +GVAR(showC1BallisticCoefficientData) = false; GVAR(showGunAmmoData) = false; GVAR(showGunList) = false; +GVAR(showMuzzleVelocityData) = false; GVAR(showRangeCard) = false; GVAR(showRangeCardSetup) = false; GVAR(showSolutionSetup) = false; @@ -84,3 +99,4 @@ GVAR(showTargetData) = false; GVAR(showTargetRangeAssist) = false; GVAR(showTargetSpeedAssist) = false; GVAR(showTargetSpeedAssistTimer) = false; +GVAR(showTruingDrop) = false; diff --git a/addons/atragmx/functions/fnc_insert_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_insert_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..5b03c11475 --- /dev/null +++ b/addons/atragmx/functions/fnc_insert_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,55 @@ +/* + * Author: Ruthberg + * Inserts entry in the c1 ballistic coefficient vs. distance interpolation table + * + * Arguments: + * transonic range - + * subsonic range - + * c1 ballistic coefficient - + * + * Return Value: + * Nothing + * + * Example: + * [800, 0.485] call ace_atragmx_fnc_insert_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +params ["_transonicRange", "_subsonicRange", "_c1"]; + +private _entries = {(_x select 1) > 0} count (GVAR(workingMemory) select 19); + +if (_entries > 0) then { + // Insert + private _insertIndex = 0; + private _minDiff = 10000; + { + if (_minDiff > 0 && {(((GVAR(workingMemory) select 19) select _forEachIndex) select 1) == 0}) then { + _insertIndex = _forEachIndex; + _minDiff = 0; + }; + private _tr = ((GVAR(workingMemory) select 19) select _forEachIndex) select 0; + private _diff = abs(_subsonicRange - _tr); + if (_diff == 0) exitWith { + _insertIndex = _forEachIndex; + }; + if (_diff < _minDiff) then { + _insertIndex = _forEachIndex; + _minDiff = _diff; + }; + } forEach (GVAR(workingMemory) select 19); + + (GVAR(workingMemory) select 19) set [_insertIndex, [_subsonicRange, 0.1 max _c1 min 2.0]]; +} else { + // Reset + private _zeroRange = GVAR(workingMemory) select 2; + private _bc = GVAR(workingMemory) select 15; + GVAR(workingMemory) set [19, [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]]; + (GVAR(workingMemory) select 19) set [0, [_zeroRange, _bc]]; + (GVAR(workingMemory) select 19) set [1, [_transonicRange + (_subsonicRange - _transonicRange) * 0.75, _bc]]; + (GVAR(workingMemory) select 19) set [2, [_subsonicRange, 0.1 max _c1 min 2.0]]; +}; + +call FUNC(update_c1_ballistic_coefficient_data); diff --git a/addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..1eb25b2f62 --- /dev/null +++ b/addons/atragmx/functions/fnc_insert_muzzle_velocity_data.sqf @@ -0,0 +1,41 @@ +/* + * Author: Ruthberg + * Inserts entry in the muzzle velocity vs. temperature interpolation table + * + * Arguments: + * temperature - + * muzzle velocity - + * + * Return Value: + * Nothing + * + * Example: + * [10, 800] call ace_atragmx_fnc_insert_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +params ["_temperature", "_muzzleVelocity"]; + +private _insertIndex = 0; +private _minDiff = 1000; +{ + if (_minDiff > 0 && {(((GVAR(workingMemory) select 18) select _forEachIndex) select 1) == 0}) then { + _insertIndex = _forEachIndex; + _minDiff = 0; + }; + private _t = ((GVAR(workingMemory) select 18) select _forEachIndex) select 0; + private _diff = abs(_temperature - _t); + if (_diff == 0) exitWith { + _insertIndex = _forEachIndex; + }; + if (_diff < _minDiff) then { + _insertIndex = _forEachIndex; + _minDiff = _diff; + }; +} forEach (GVAR(workingMemory) select 18); + +(GVAR(workingMemory) select 18) set [_insertIndex, [_temperature, 0 max _muzzleVelocity min 1400]]; + +call FUNC(update_muzzle_velocity_data); diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf index 61a8caea6a..2f73ecebba 100644 --- a/addons/atragmx/functions/fnc_parse_input.sqf +++ b/addons/atragmx/functions/fnc_parse_input.sqf @@ -1,6 +1,6 @@ /* * Author: Ruthberg - * Parses all input fields in the gun, atmosphere and target column and the result input fields + * Parses all input fields in the gun-, atmosphere- and target column, the result input fields and the muzzle velocity data input fields * * Arguments: * Nothing @@ -15,6 +15,35 @@ */ #include "script_component.hpp" +// Muzzle velocity vs. temperature interpolation data +{ + private _temperature = -50 max parseNumber(ctrlText _x) min 160; + if (GVAR(currentUnit) == 1) then { + _temperature = (_temperature - 32) / 1.8; + }; + ((GVAR(workingMemory) select 18) select _forEachIndex) set [0, _temperature]; +} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027]; +{ + private _muzzleVelocity = parseNumber(ctrlText _x); + if (GVAR(currentUnit) == 1) then { + _muzzleVelocity = _muzzleVelocity / 3.2808399; + }; + ((GVAR(workingMemory) select 18) select _forEachIndex) set [1, 0 max _muzzleVelocity min 1400]; +} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037]; + +// C1 coefficient vs. distance interpolation data +{ + private _distance = 0 max parseNumber(ctrlText _x) min 4000; + if (GVAR(currentUnit) != 2) then { + _distance = _distance * 0.9144; + }; + ((GVAR(workingMemory) select 19) select _forEachIndex) set [0, _distance]; +} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027]; +{ + private _c1 = 0 max parseNumber(ctrlText _x) min 2.0; + ((GVAR(workingMemory) select 19) select _forEachIndex) set [1, _c1]; +} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037]; + GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000; GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160; GVAR(barometricPressure) = 10 max parseNumber(ctrlText 130050) min 1350; @@ -49,11 +78,11 @@ if ((ctrlText 140051) == ">") then { GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000]; if (GVAR(currentUnit) != 2) then { GVAR(windSpeed1) set [GVAR(currentTarget), (GVAR(windSpeed1) select GVAR(currentTarget)) * 0.44704]; - GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget)) * 0.44704]; - GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget)) * 0.44704]; + GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget)) * 0.44704]; + GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget)) * 0.44704]; }; if (GVAR(currentUnit) == 1) then { - GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144]; + GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144]; }; private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"]; @@ -67,7 +96,7 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t }; _rifleTwist = parseNumber(ctrlText 120040); _muzzleVelocity = parseNumber(ctrlText 120050); -_zeroRange = parseNumber (ctrlText 120060); +_zeroRange = parseNumber(ctrlText 120060); if (GVAR(currentUnit) != 2) then { _boreHeight = _boreHeight * 2.54; _bulletMass = _bulletMass * 0.06479891; @@ -88,10 +117,16 @@ GVAR(workingMemory) set [12, _bulletMass]; GVAR(workingMemory) set [13, _bulletDiameter]; GVAR(workingMemory) set [14, _rifleTwist]; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + if (_airFriction != GVAR(workingMemory) select 15) then { + (_airFriction - (GVAR(workingMemory) select 15)) call FUNC(shift_c1_ballistic_coefficient_data); + }; GVAR(workingMemory) set [15, _airFriction]; } else { GVAR(workingMemory) set [4, _airFriction]; }; +if (_muzzleVelocity != GVAR(workingMemory) select 1) then { + (_muzzleVelocity - (GVAR(workingMemory) select 1)) call FUNC(shift_muzzle_velocity_data); +}; GVAR(workingMemory) set [1, _muzzleVelocity]; GVAR(workingMemory) set [2, _zeroRange]; @@ -101,5 +136,7 @@ GVAR(workingMemory) set [2, _zeroRange]; [] call FUNC(update_atmo_env_data); [] call FUNC(update_target); [] call FUNC(update_target_data); +[] call FUNC(update_muzzle_velocity_data); +[] call FUNC(update_c1_ballistic_coefficient_data); [] call FUNC(store_user_data); diff --git a/addons/atragmx/functions/fnc_recalculate_c1_ballistic_coefficient.sqf b/addons/atragmx/functions/fnc_recalculate_c1_ballistic_coefficient.sqf new file mode 100644 index 0000000000..3ad4f26845 --- /dev/null +++ b/addons/atragmx/functions/fnc_recalculate_c1_ballistic_coefficient.sqf @@ -0,0 +1,57 @@ +/* + * Author: Ruthberg + * Recalculates the c1 ballistic coefficient based on the c1 ballistic coefficient vs. distance interpolation input + * + * Arguments: + * parse input + * update display + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_recalculate_c1_ballistic_coefficient + * + * Public: No + */ +#include "script_component.hpp" + +params ["_parseInput", "_updateDisplay"]; + +if (_parseInput) then { + [] call FUNC(parse_input); +}; + +private _lookupTable = []; +{ + if ((_x select 1) > 0) then { + _lookupTable pushBack _x; + }; +} forEach (GVAR(workingMemory) select 19); + +private _lookupTableSize = count _lookupTable; +if (_lookupTableSize < 2) exitWith {}; +_lookupTable sort true; + +private ["_lowerIndex", "_upperIndex"]; +for "_index" from 1 to (_lookupTableSize - 1) do { + _upperIndex = _index; + _lowerIndex = _upperIndex - 1; + if (((_lookupTable select _index) select 0) >= (GVAR(targetRange) select GVAR(currentTarget))) exitWith {} +}; + +private ["_lowerDistance", "_upperDistance", "_lowerC1", "_upperC1", "_slope", "_c1"]; +_lowerDistance = (_lookupTable select _lowerIndex) select 0; +_upperDistance = (_lookupTable select _upperIndex) select 0; +_lowerC1 = (_lookupTable select _lowerIndex) select 1; +_upperC1 = (_lookupTable select _upperIndex) select 1; +_slope = (_upperC1 - _lowerC1) / (_upperDistance - _lowerDistance); +_c1 = 0.1 max (_lowerC1 + ((GVAR(targetRange) select GVAR(currentTarget)) - _lowerDistance) * _slope) min 2.0; + +if (_c1 != GVAR(workingMemory) select 15) then { + GVAR(workingMemory) set [15, _c1]; + if (_updateDisplay) then { + call FUNC(update_gun); + call FUNC(update_gun_ammo_data); + }; +}; diff --git a/addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf b/addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf new file mode 100644 index 0000000000..430e8ecc68 --- /dev/null +++ b/addons/atragmx/functions/fnc_recalculate_muzzle_velocity.sqf @@ -0,0 +1,57 @@ +/* + * Author: Ruthberg + * Recalculates the muzzle velocity based on the muzzle velocity vs. temperature interpolation input + * + * Arguments: + * parse input + * update display + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_recalculate_muzzle_velocity + * + * Public: No + */ +#include "script_component.hpp" + +params ["_parseInput", "_updateDisplay"]; + +if (_parseInput) then { + [] call FUNC(parse_input); +}; + +private _lookupTable = []; +{ + if ((_x select 1) > 0) then { + _lookupTable pushBack _x; + }; +} forEach (GVAR(workingMemory) select 18); + +private _lookupTableSize = count _lookupTable; +if (_lookupTableSize < 2) exitWith {}; +_lookupTable sort true; + +private ["_lowerIndex", "_upperIndex"]; +for "_index" from 1 to (_lookupTableSize - 1) do { + _upperIndex = _index; + _lowerIndex = _upperIndex - 1; + if (((_lookupTable select _index) select 0) >= GVAR(temperature)) exitWith {} +}; + +private ["_lowerTemperature", "_upperTemperature", "_lowerMuzzleVelocity", "_upperMuzzleVelocity", "_slope", "_muzzleVelocity"]; +_lowerTemperature = (_lookupTable select _lowerIndex) select 0; +_upperTemperature = (_lookupTable select _upperIndex) select 0; +_lowerMuzzleVelocity = (_lookupTable select _lowerIndex) select 1; +_upperMuzzleVelocity = (_lookupTable select _upperIndex) select 1; +_slope = (_upperMuzzleVelocity - _lowerMuzzleVelocity) / (_upperTemperature - _lowerTemperature); +_muzzleVelocity = _lowerMuzzleVelocity + (GVAR(temperature) - _lowerTemperature) * _slope; + +if (_muzzleVelocity != GVAR(workingMemory) select 1) then { + GVAR(workingMemory) set [1, _muzzleVelocity]; + if (_updateDisplay) then { + call FUNC(update_gun); + call FUNC(update_gun_ammo_data); + }; +}; diff --git a/addons/atragmx/functions/fnc_restore_truing_drop.sqf b/addons/atragmx/functions/fnc_restore_truing_drop.sqf new file mode 100644 index 0000000000..b8541152a0 --- /dev/null +++ b/addons/atragmx/functions/fnc_restore_truing_drop.sqf @@ -0,0 +1,33 @@ +/* + * Author: Ruthberg + * Restores the truing drop defaults + * + * Arguments: + * update display + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_restore_truing_drop + * + * Public: No + */ +#include "script_component.hpp" + +private _updateDisplay = _this; + +GVAR(truingDropMode) = 0; +GVAR(truingDropRangeData) = [0, 0]; +GVAR(truingDropDropData) = [0, 0, 0]; +GVAR(truingDropReferenceDropData) = [0, 0, 0]; +GVAR(truingDropC1) = 0; +GVAR(truingDropMuzzleVelocity) = 0; + +// Resets input fields +call FUNC(update_truing_drop_selection); + +if (_updateDisplay) then { + // Repopulates input fields + false call FUNC(calculate_truing_drop); +}; diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf index 896455ec7a..de91a7cd0e 100644 --- a/addons/atragmx/functions/fnc_restore_user_data.sqf +++ b/addons/atragmx/functions/fnc_restore_user_data.sqf @@ -26,6 +26,7 @@ GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_b GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1; GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false]; +GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true]; GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]]; GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]]; GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]]; diff --git a/addons/atragmx/functions/fnc_shift_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_shift_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..241d7fe7e0 --- /dev/null +++ b/addons/atragmx/functions/fnc_shift_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Shifts all c1 ballistic coefficient entries in the c1 ballistic coefficient vs. distance interpolation table + * + * Arguments: + * ballistic coefficient - + * + * Return Value: + * Nothing + * + * Example: + * 10 call ace_atragmx_fnc_shift_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +if (_this == 0) exitWith {}; + +{ + private _c1 = _x select 1; + if (_c1 > 0) then { + ((GVAR(workingMemory) select 19) select _forEachIndex) set [1, 0.1 max (_c1 + _this) min 2]; + } +} forEach (GVAR(workingMemory) select 19); diff --git a/addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..4bbd9337fd --- /dev/null +++ b/addons/atragmx/functions/fnc_shift_muzzle_velocity_data.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Shifts all muzzle velocity entries in the muzzle velocity vs. temperature interpolation table + * + * Arguments: + * velocity - + * + * Return Value: + * Nothing + * + * Example: + * 10 call ace_atragmx_fnc_shift_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +if (_this == 0) exitWith {}; + +{ + private _velocity = _x select 1; + if (_velocity > 0) then { + ((GVAR(workingMemory) select 18) select _forEachIndex) set [1, 0 max (_velocity + _this) min 1400]; + } +} forEach (GVAR(workingMemory) select 18); diff --git a/addons/atragmx/functions/fnc_show_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_show_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..b96902f5fa --- /dev/null +++ b/addons/atragmx/functions/fnc_show_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Shows/Hides the c1 ballistic coefficient data controls + * + * Arguments: + * visible - + * + * Return Value: + * Nothing + * + * Example: + * false call ace_atragmx_fnc_show_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(showC1BallisticCoefficientData) = _this; + +{ctrlShow [_x, _this]} forEach [17000, 17001, 170021, 170022, 170023, 170024, 170025, 170026, 170027, 170031, 170032, 170033, 170034, 170035, 170036, 170037, 17004, 17005, 17006, 17007, 17008, 17009]; + +if (_this) then { + ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 170031); + [] call FUNC(update_c1_ballistic_coefficient_data); +}; diff --git a/addons/atragmx/functions/fnc_show_main_page.sqf b/addons/atragmx/functions/fnc_show_main_page.sqf index 486ea1655a..591554d632 100644 --- a/addons/atragmx/functions/fnc_show_main_page.sqf +++ b/addons/atragmx/functions/fnc_show_main_page.sqf @@ -21,6 +21,18 @@ GVAR(showMainPage) = _this; 500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 2001, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008]; if (_this) then { + if (GVAR(showCoriolis)) then { + ctrlSetText [4003, "Hold"]; + ctrlSetText [4004, "Cor"]; + ctrlSetText [4005, "Spin"]; + {ctrlShow [_x, false]} forEach [402, 4006, 4007]; + } else { + ctrlSetText [4003, "Abs"]; + ctrlSetText [4004, "Rel"]; + ctrlSetText [4005, "Cur"]; + private _visible = (GVAR(currentScopeUnit) == 3); + {ctrlShow [_x, _visible]} forEach [401, 402, 411, 412, 4004, 4005, 4006, 4007]; + }; if (GVAR(atmosphereModeTBH)) then { {ctrlShow [_x, false]} forEach [23, 230]; } else { diff --git a/addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..8a5d39f2b5 --- /dev/null +++ b/addons/atragmx/functions/fnc_show_muzzle_velocity_data.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Shows/Hides the muzzle velocity data controls + * + * Arguments: + * visible - + * + * Return Value: + * Nothing + * + * Example: + * false call ace_atragmx_fnc_show_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(showMuzzleVelocityData) = _this; + +{ctrlShow [_x, _this]} forEach [16000, 16001, 160021, 160022, 160023, 160024, 160025, 160026, 160027, 160031, 160032, 160033, 160034, 160035, 160036, 160037, 16004, 16005, 16006, 16007, 16008, 16009]; + +if (_this) then { + ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 160031); + [] call FUNC(update_muzzle_velocity_data); +}; diff --git a/addons/atragmx/functions/fnc_show_truing_drop.sqf b/addons/atragmx/functions/fnc_show_truing_drop.sqf new file mode 100644 index 0000000000..d4b7ce551f --- /dev/null +++ b/addons/atragmx/functions/fnc_show_truing_drop.sqf @@ -0,0 +1,43 @@ +/* + * Author: Ruthberg + * Shows/Hides the truing drop controls + * + * Arguments: + * visible - + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_show_truing_drop + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(showTruingDrop) = _this; + +{ctrlShow [_x, _this]} forEach [18000, 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015, 18016, 18017, 18018, 18019, 18020]; + +if (_this) then { + if (GVAR(currentUnit) == 2) then { + ctrlSetText [18000, format["ZR=%1meters", Round(GVAR(workingMemory) select 2)]]; + } else { + ctrlSetText [18000, format["ZR=%1yards", Round((GVAR(workingMemory) select 2) * 1.0936133)]]; + }; + private _dropUnit = GVAR(currentScopeUnit); + if (_dropUnit == 3) then { + switch (GVAR(currentScopeClickUnit)) do { + case 0: { _dropUnit = 1; }; + case 1: { _dropUnit = 2; }; + case 2: { _dropUnit = 0; }; + }; + }; + switch (_dropUnit) do { + case 0: { ctrlSetText [18001, "Drop=mils"]; }; + case 1: { ctrlSetText [18001, "Drop=tmoa"]; }; + case 2: { ctrlSetText [18001, "Drop=smoa"]; }; + }; + false call FUNC(calculate_truing_drop); + call FUNC(update_truing_drop_selection); +}; diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf index 5cfe7f2ae0..a0b3f9fe80 100644 --- a/addons/atragmx/functions/fnc_store_user_data.sqf +++ b/addons/atragmx/functions/fnc_store_user_data.sqf @@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricP profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)]; profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)]; +profileNamespace setVariable ["ACE_ATragMX_showCoriolis", GVAR(showCoriolis)]; profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)]; profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)]; profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)]; diff --git a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf index 87e973c7c0..bda24a48f4 100644 --- a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf @@ -20,7 +20,11 @@ if (ctrlVisible 13000) then { true call FUNC(show_main_page); if (_this == 1) then { + GVAR(truingDropDropData) set [0, 0]; + [true, true] call FUNC(recalculate_muzzle_velocity); call FUNC(calculate_target_solution); + } else { + call FUNC(update_atmo_env_data); }; } else { true call FUNC(show_atmo_env_data); diff --git a/addons/atragmx/functions/fnc_toggle_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_toggle_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..e83f0d985c --- /dev/null +++ b/addons/atragmx/functions/fnc_toggle_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,33 @@ +/* + * Author: Ruthberg + * Toggles the c1 ballistic coefficient data screen on/off + * + * Arguments: + * Apply new data? + * + * Return Value: + * Nothing + * + * Example: + * 1 call ace_atragmx_fnc_toggle_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {}; + +if (ctrlVisible 17000) then { + false call FUNC(show_c1_ballistic_coefficient_data); + true call FUNC(show_main_page); + + if (_this == 1) then { + [true, true] call FUNC(recalculate_c1_ballistic_coefficient); + call FUNC(calculate_target_solution); + } else { + call FUNC(update_c1_ballistic_coefficient_data); + }; +} else { + true call FUNC(show_c1_ballistic_coefficient_data); + false call FUNC(show_main_page); +}; diff --git a/addons/atragmx/functions/fnc_toggle_coriolis.sqf b/addons/atragmx/functions/fnc_toggle_coriolis.sqf new file mode 100644 index 0000000000..17b081131e --- /dev/null +++ b/addons/atragmx/functions/fnc_toggle_coriolis.sqf @@ -0,0 +1,19 @@ +/* + * Author: Ruthberg + * Toggles the coriolis and spin drift output on/off + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_toggle_coriolis + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(showCoriolis) = !GVAR(showCoriolis); +true call FUNC(show_main_page); diff --git a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf index f3eb814da7..c8cfe0f8f3 100644 --- a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf @@ -20,8 +20,11 @@ if (ctrlVisible 12000) then { true call FUNC(show_main_page); if (_this == 1) then { + GVAR(truingDropDropData) set [0, 0]; call FUNC(update_zero_range); call FUNC(calculate_target_solution); + } else { + call FUNC(update_gun_ammo_data); }; } else { true call FUNC(show_gun_ammo_data); diff --git a/addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..9a334b35ca --- /dev/null +++ b/addons/atragmx/functions/fnc_toggle_muzzle_velocity_data.sqf @@ -0,0 +1,33 @@ +/* + * Author: Ruthberg + * Toggles the muzzle velocity data screen on/off + * + * Arguments: + * Apply new data? + * + * Return Value: + * Nothing + * + * Example: + * 1 call ace_atragmx_fnc_toggle_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {}; + +if (ctrlVisible 16000) then { + false call FUNC(show_muzzle_velocity_data); + true call FUNC(show_main_page); + + if (_this == 1) then { + [true, true] call FUNC(recalculate_muzzle_velocity); + call FUNC(calculate_target_solution); + } else { + call FUNC(update_muzzle_velocity_data); + }; +} else { + true call FUNC(show_muzzle_velocity_data); + false call FUNC(show_main_page); +}; diff --git a/addons/atragmx/functions/fnc_toggle_option_menu.sqf b/addons/atragmx/functions/fnc_toggle_option_menu.sqf new file mode 100644 index 0000000000..ea14baedad --- /dev/null +++ b/addons/atragmx/functions/fnc_toggle_option_menu.sqf @@ -0,0 +1,51 @@ +/* + * Author: Ruthberg + * Toggles the option menu on/off + * + * Arguments: + * open menu item + * + * Return Value: + * Nothing + * + * Example: + * 1 call ace_atragmx_fnc_toggle_option_menu + * + * Public: No + */ +#include "script_component.hpp" + +if (ctrlVisible 3001) then { + if (_this) then { + private _optionID = lbCurSel 3002; + if (_optionID > 0) then { + ctrlShow [3001, false]; + ctrlShow [3002, false]; + [_optionID] call FUNC(evaluate_option_menu_input); + }; + } else { + ctrlShow [3001, false]; + ctrlShow [3002, false]; + }; +} else { + lbClear 3002; + + lbAdd [3002, "Accuracy 1st"]; + lbAdd [3002, "Muz Vel Table"]; + lbAdd [3002, "Drag Coef Table"]; + lbAdd [3002, "Target Speed Est"]; + lbAdd [3002, "Target Range Est"]; + lbAdd [3002, "Truing Drop"]; + if (GVAR(showCoriolis)) then { + lbAdd [3002, "Show Coriolis *"]; + } else { + lbAdd [3002, "Show Coriolis"]; + }; + lbAdd [3002, "Set Clicks"]; + lbAdd [3002, "Gun Note"]; + + lbSetCurSel [3002, 0]; + + ctrlShow [3001, true]; + ctrlShow [3002, true]; +}; diff --git a/addons/atragmx/functions/fnc_toggle_target_data.sqf b/addons/atragmx/functions/fnc_toggle_target_data.sqf index 2cfa2f8df5..44892ca882 100644 --- a/addons/atragmx/functions/fnc_toggle_target_data.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_data.sqf @@ -21,6 +21,8 @@ if (ctrlVisible 14000) then { if (_this == 1) then { call FUNC(calculate_target_solution); + } else { + call FUNC(update_target_data); }; } else { true call FUNC(show_target_data); diff --git a/addons/atragmx/functions/fnc_toggle_truing_drop.sqf b/addons/atragmx/functions/fnc_toggle_truing_drop.sqf new file mode 100644 index 0000000000..8c2e72587c --- /dev/null +++ b/addons/atragmx/functions/fnc_toggle_truing_drop.sqf @@ -0,0 +1,39 @@ +/* + * Author: Ruthberg + * Toggles the truing drop screen on/off + * + * Arguments: + * Apply new data? + * + * Return Value: + * Nothing + * + * Example: + * 1 call ace_atragmx_fnc_toggle_truing_drop + * + * Public: No + */ +#include "script_component.hpp" + +if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {}; + +if (ctrlVisible 18000) then { + false call FUNC(show_truing_drop); + true call FUNC(show_main_page); + + if (_this == 1) then { + if (GVAR(truingDropMode) == 0) then { + [GVAR(temperature), GVAR(truingDropMuzzleVelocity)] call FUNC(insert_muzzle_velocity_data); + [false, true] call FUNC(recalculate_muzzle_velocity); + } else { + [GVAR(truingDropRangeData) select 0, GVAR(truingDropRangeData) select 1, GVAR(truingDropC1)] call FUNC(insert_c1_ballistic_coefficient_data); + [false, true] call FUNC(recalculate_c1_ballistic_coefficient); + }; + call FUNC(calculate_target_solution); + } else { + call FUNC(update_truing_drop_data); + }; +} else { + false call FUNC(show_main_page); + true call FUNC(show_truing_drop); +}; diff --git a/addons/atragmx/functions/fnc_true_c1_ballistic_coefficient.sqf b/addons/atragmx/functions/fnc_true_c1_ballistic_coefficient.sqf new file mode 100644 index 0000000000..42bb18b875 --- /dev/null +++ b/addons/atragmx/functions/fnc_true_c1_ballistic_coefficient.sqf @@ -0,0 +1,42 @@ +/* + * Author: Ruthberg + * Trues the c1 ballistic coefficient + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_true_c1_ballistic_coefficient + * + * Public: No + */ +#include "script_component.hpp" + +private _referenceDrop = GVAR(truingDropDropData) select 0; +private _actualDrop = GVAR(truingDropDropData) select 2; + +if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {}; + +private _step = 0.01; +if (_actualDrop > _referenceDrop) then { + _step = -0.01; +}; + +private _solutionInput = +GVAR(targetSolutionInput); +_solutionInput set [13, GVAR(truingDropRangeData) select 1]; +private _c1 = _solutionInput select 14; + +{ + _step = _step * _x; + while { _actualDrop * _step < _referenceDrop * _step } do { + _c1 = _c1 + _step; + _solutionInput set [14, _c1]; + private _result = _solutionInput call FUNC(calculate_solution); + _referenceDrop = (_result select 0); + }; +} forEach [1, -0.1]; + +GVAR(truingDropC1) = _c1; diff --git a/addons/atragmx/functions/fnc_true_muzzle_velocity.sqf b/addons/atragmx/functions/fnc_true_muzzle_velocity.sqf new file mode 100644 index 0000000000..26ee2a18ce --- /dev/null +++ b/addons/atragmx/functions/fnc_true_muzzle_velocity.sqf @@ -0,0 +1,42 @@ +/* + * Author: Ruthberg + * Trues the muzzle velocity + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_true_muzzle_velocity + * + * Public: No + */ +#include "script_component.hpp" + +private _referenceDrop = GVAR(truingDropDropData) select 0; +private _actualDrop = GVAR(truingDropDropData) select 1; + +if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {}; + +private _step = 10; +if (_actualDrop > _referenceDrop) then { + _step = -10; +}; + +private _solutionInput = +GVAR(targetSolutionInput); +_solutionInput set [13, GVAR(truingDropRangeData) select 0]; +private _muzzleVelocity = _solutionInput select 4; + +{ + _step = _step * _x; + while { _actualDrop * _step < _referenceDrop * _step } do { + _muzzleVelocity = _muzzleVelocity + _step; + _solutionInput set [4, _muzzleVelocity]; + private _result = _solutionInput call FUNC(calculate_solution); + _referenceDrop = (_result select 0); + }; +} forEach [1, -0.1]; + +GVAR(truingDropMuzzleVelocity) = _muzzleVelocity; diff --git a/addons/atragmx/functions/fnc_update_c1_ballistic_coefficient_data.sqf b/addons/atragmx/functions/fnc_update_c1_ballistic_coefficient_data.sqf new file mode 100644 index 0000000000..09148fd156 --- /dev/null +++ b/addons/atragmx/functions/fnc_update_c1_ballistic_coefficient_data.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Updates the c1 ballistic coefficient data fields + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_update_c1_ballistic_coefficient_data + * + * Public: No + */ +#include "script_component.hpp" + +// Distances +if (GVAR(currentUnit) == 2) then { + {ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 19) select _forEachIndex) select 0))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027]; +} else { + {ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 0) * 1.0936133))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027]; +}; +// Ballistic coefficients +{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 1) * 1000) / 1000)]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037]; diff --git a/addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf b/addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf new file mode 100644 index 0000000000..989d3d113c --- /dev/null +++ b/addons/atragmx/functions/fnc_update_muzzle_velocity_data.sqf @@ -0,0 +1,28 @@ +/* + * Author: Ruthberg + * Updates the muzzle velocity data fields + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_update_muzzle_velocity_data + * + * Public: No + */ +#include "script_component.hpp" + +if (GVAR(currentUnit) == 2) then { + // Temperatures + {ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027]; + // Muzzle velocities + {ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 18) select _forEachIndex) select 1))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037]; +} else { + // Temperatures + {ctrlSetText [_x, Str(Round(((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 1.8 + 32) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027]; + // Muzzle velocities + {ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 1) * 3.2808399))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037]; +}; diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf index 2b6ca29e23..2541222583 100644 --- a/addons/atragmx/functions/fnc_update_result.sqf +++ b/addons/atragmx/functions/fnc_update_result.sqf @@ -15,17 +15,28 @@ */ #include "script_component.hpp" -private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_clickSize", "_clickNumber", "_clickInterval"]; +private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_wind2", "_lead", "_clickSize", "_clickNumber", "_clickInterval"]; _elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget); +_elevationRel = 0; +_elevationCur = 0; _windageAbs = GVAR(windage1Output) select GVAR(currentTarget); +_windageRel = 0; +_windageCur = 0; _wind2 = GVAR(windage2Output) select GVAR(currentTarget); -_elevationCur = GVAR(workingMemory) select 10; -_windageCur = GVAR(workingMemory) select 11; +if (GVAR(showCoriolis)) then { + _elevationRel = GVAR(verticalCoriolisOutput) select GVAR(currentTarget); + _windageRel = GVAR(horizontalCoriolisOutput) select GVAR(currentTarget); + + _windageCur = GVAR(spinDriftOutput) select GVAR(currentTarget); +} else { + _elevationCur = GVAR(workingMemory) select 10; + _windageCur = GVAR(workingMemory) select 11; -_elevationRel = _elevationAbs - _elevationCur; -_windageRel = _windageAbs - _windageCur; + _elevationRel = _elevationAbs - _elevationCur; + _windageRel = _windageAbs - _windageCur; +}; _lead = GVAR(leadOutput) select GVAR(currentTarget); diff --git a/addons/atragmx/functions/fnc_update_truing_drop_data.sqf b/addons/atragmx/functions/fnc_update_truing_drop_data.sqf new file mode 100644 index 0000000000..5d97780d49 --- /dev/null +++ b/addons/atragmx/functions/fnc_update_truing_drop_data.sqf @@ -0,0 +1,77 @@ +/* + * Author: Ruthberg + * Updates the truing drop data fields + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_update_truing_drop_data + * + * Public: No + */ +#include "script_component.hpp" + +if (GVAR(currentUnit) == 2) then { + ctrlSetText [18011, Str(Round(GVAR(truingDropRangeData) select 0))]; + ctrlSetText [18012, Str(Round(GVAR(truingDropRangeData) select 1))]; +} else { + ctrlSetText [18011, Str(Round((GVAR(truingDropRangeData) select 0) * 1.0936133))]; + ctrlSetText [18012, Str(Round((GVAR(truingDropRangeData) select 1) * 1.0936133))]; +}; + +if (GVAR(truingDropMode) == 0) then { + GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 0]; +} else { + GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 1]; +}; + +private _dropUnit = GVAR(currentScopeUnit); +if (_dropUnit == 3) then { + switch (GVAR(currentScopeClickUnit)) do { + case 0: { _dropUnit = 1; }; + case 1: { _dropUnit = 2; }; + case 2: { _dropUnit = 0; }; + }; +}; + +private _dropData = +GVAR(truingDropDropData); + +switch (_dropUnit) do { + case 0: { + _dropData set [0, (_dropData select 0) / 3.38]; + _dropData set [1, (_dropData select 1) / 3.38]; + _dropData set [2, (_dropData select 2) / 3.38]; + }; + case 2: { + _dropData set [0, (_dropData select 0) * 1.047]; + _dropData set [1, (_dropData select 1) * 1.047]; + _dropData set [2, (_dropData select 2) * 1.047]; + }; +}; + +ctrlSetText [18006, Str(Round((_dropData select 0) * 100) / 100)]; +ctrlSetText [18013, Str(Round((_dropData select 1) * 100) / 100)]; +ctrlSetText [18014, Str(Round((_dropData select 2) * 100) / 100)]; + +if (GVAR(currentUnit) != 2) then { + ctrlSetText [18007, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))]; + ctrlSetText [18016, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))]; + if (GVAR(truingDropMuzzleVelocity) > 0) then { + ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity) * 3.2808399))]; + }; +} else { + ctrlSetText [18007, Str(Round(GVAR(workingMemory) select 1))]; + ctrlSetText [18016, Str(Round(GVAR(workingMemory) select 1))]; + if (GVAR(truingDropMuzzleVelocity) > 0) then { + ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity)))]; + }; +}; +ctrlSetText [18008, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)]; +ctrlSetText [18017, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)]; +if (GVAR(truingDropC1) > 0) then { + ctrlSetText [18017, Str(Round(GVAR(truingDropC1) * 1000) / 1000)]; +}; diff --git a/addons/atragmx/functions/fnc_update_truing_drop_selection.sqf b/addons/atragmx/functions/fnc_update_truing_drop_selection.sqf new file mode 100644 index 0000000000..98f7483276 --- /dev/null +++ b/addons/atragmx/functions/fnc_update_truing_drop_selection.sqf @@ -0,0 +1,43 @@ +/* + * Author: Ruthberg + * Updates the truing drop input method + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_update_truing_drop_selection + * + * Public: No + */ +#include "script_component.hpp" + +#define __dsp (uiNamespace getVariable "ATragMX_Display") + +(__dsp displayCtrl 18009) ctrlEnable true; +(__dsp displayCtrl 18010) ctrlEnable true; + +if (GVAR(truingDropMode) == 0) then { + (__dsp displayCtrl 18009) ctrlEnable false; + { + (__dsp displayCtrl _x) ctrlEnable true; + } forEach [18011, 18013, 18016]; + { + (__dsp displayCtrl _x) ctrlEnable false; + } forEach [18012, 18014, 18017]; + ctrlSetFocus (__dsp displayCtrl 18011); +} else { + (__dsp displayCtrl 18010) ctrlEnable false; + { + (__dsp displayCtrl _x) ctrlEnable true; + } forEach [18012, 18014, 18017]; + { + (__dsp displayCtrl _x) ctrlEnable false; + } forEach [18011, 18013, 18016]; + ctrlSetFocus (__dsp displayCtrl 18012); +}; + +[] call FUNC(update_truing_drop_data); diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp index 3b09c0ad2f..054d95b9fe 100644 --- a/addons/atragmx/script_component.hpp +++ b/addons/atragmx/script_component.hpp @@ -16,4 +16,4 @@ #include "\z\ace\addons\main\script_macros.hpp" -#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.8 +#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.9 From 51c12dba1dd511a82a344cd37706106ae97bf83d Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 6 Nov 2016 19:30:18 +0100 Subject: [PATCH 27/33] Allow adding gun list entries via config --- addons/atragmx/XEH_PREP.hpp | 2 + addons/atragmx/XEH_postInit.sqf | 61 ++++----- addons/atragmx/functions/fnc_add_new_gun.sqf | 4 +- addons/atragmx/functions/fnc_delete_gun.sqf | 2 +- .../fnc_read_gun_list_entries_from_config.sqf | 120 ++++++++++++++++++ addons/atragmx/functions/fnc_save_gun.sqf | 2 +- .../atragmx/functions/fnc_store_gun_list.sqf | 25 ++++ 7 files changed, 182 insertions(+), 34 deletions(-) create mode 100644 addons/atragmx/functions/fnc_read_gun_list_entries_from_config.sqf create mode 100644 addons/atragmx/functions/fnc_store_gun_list.sqf diff --git a/addons/atragmx/XEH_PREP.hpp b/addons/atragmx/XEH_PREP.hpp index 29433f9313..fc4c5a0224 100644 --- a/addons/atragmx/XEH_PREP.hpp +++ b/addons/atragmx/XEH_PREP.hpp @@ -27,6 +27,7 @@ PREP(init); PREP(insert_c1_ballistic_coefficient_data); PREP(insert_muzzle_velocity_data); PREP(parse_input); +PREP(read_gun_list_entries_from_config); PREP(recalculate_c1_ballistic_coefficient); PREP(recalculate_muzzle_velocity); PREP(reset_relative_click_memory); @@ -52,6 +53,7 @@ PREP(show_target_speed_assist); PREP(show_target_speed_assist_timer); PREP(show_truing_drop); PREP(sord); +PREP(store_gun_list); PREP(store_user_data); PREP(target_speed_assist_timer); PREP(toggle_atmo_env_data); diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 3caecd2c83..9d4c903b06 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -5,49 +5,49 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then { GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList"; } else { - // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation - GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent + GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - [".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" , [[-15,883],[0,890],[10,897],[15,902],[25,916],[30,925],[35,936]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" , [[-15,883],[0,890],[10,897],[15,902],[25,916],[30,925],[35,936]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - [".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".338LM API526" , 880, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + [".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + [".338LM API526" , 880, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - [".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - [".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + [".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + [".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + [".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["7.62x54mmR" , 820, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x54mmR" , 820, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm M118LR" , 765, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm Mk316" , 782, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm Mk319" , 901, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm M993" , 920, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["7.62x51mm Subsonic", 315, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["7.62x51mm M118LR" , 765, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["7.62x51mm Mk316" , 782, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["7.62x51mm Mk319" , 901, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["7.62x51mm M993" , 920, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["7.62x51mm Subsonic", 315, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["6.5x39mm" , 774, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["6.5x47mm Lapua" , 775, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["6.5mm Creedmor" , 830, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["6.5x39mm" , 774, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["6.5x47mm Lapua" , 775, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["6.5mm Creedmor" , 830, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["5.8x42mm DBP87" , 950, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["5.8x42mm DBP87" , 950, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], - ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]], + ["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], + ["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true], - ["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]]]; + ["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]]; [] call FUNC(clear_user_data); profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; @@ -55,5 +55,6 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == [] call FUNC(init); [] call FUNC(restore_user_data); +[] call FUNC(read_gun_list_entries_from_config); [QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler; diff --git a/addons/atragmx/functions/fnc_add_new_gun.sqf b/addons/atragmx/functions/fnc_add_new_gun.sqf index bca41f8b6b..75d0ddd5f1 100644 --- a/addons/atragmx/functions/fnc_add_new_gun.sqf +++ b/addons/atragmx/functions/fnc_add_new_gun.sqf @@ -17,11 +17,11 @@ private _gunName = ctrlText 11001; if (_gunName != "") then { - private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO", [[-15,0],[0,0],[10,0],[15,0],[25,0],[30,0],[35,0]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]]; + private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO", [[-15,0],[0,0],[10,0],[15,0],[25,0],[30,0],[35,0]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]; GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry]; lbAdd [6000, _gunProfileEntry select 0]; - profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; + call FUNC(store_gun_list); }; diff --git a/addons/atragmx/functions/fnc_delete_gun.sqf b/addons/atragmx/functions/fnc_delete_gun.sqf index 42970d7aab..c94739035e 100644 --- a/addons/atragmx/functions/fnc_delete_gun.sqf +++ b/addons/atragmx/functions/fnc_delete_gun.sqf @@ -28,4 +28,4 @@ GVAR(gunList) = GVAR(gunList) - [0]; lbDelete [6000, _index]; -profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; +call FUNC(store_gun_list); diff --git a/addons/atragmx/functions/fnc_read_gun_list_entries_from_config.sqf b/addons/atragmx/functions/fnc_read_gun_list_entries_from_config.sqf new file mode 100644 index 0000000000..717fb07084 --- /dev/null +++ b/addons/atragmx/functions/fnc_read_gun_list_entries_from_config.sqf @@ -0,0 +1,120 @@ +/* + * Author: Ruthberg + * Reads gun list entries from the config and appends them to the gun list + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_read_gun_list_entries_from_config + * + * Public: No + */ +#include "script_component.hpp" + +private _validate_preset = { + private _valid = true; + if (count _this != 20) then { + private _errorMsg = format ["Invalid preset array size: %1", count _this]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 0 == "") then { + ERROR("Invalid gun profile name"); + _valid = false; + }; + if (_this select 1 < 0 || _this select 1 > 1400) then { + private _errorMsg = format ["Invalid muzzle velocity: %1", _this select 1]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 2 < 25 || _this select 2 > 1000) then { + private _errorMsg = format ["Invalid zero range: %1", _this select 2]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 4 > 0) then { + private _errorMsg = format ["Invalid airFriction value: %1", _this select 4]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 5 < 0.1 || _this select 5 > 10) then { + private _errorMsg = format ["Invalid bore height value: %1", _this select 4]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 12 < 1 || _this select 12 > 100) then { + private _errorMsg = format ["Invalid bullet weight: %1", _this select 12]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 13 < 1 || _this select 13 > 25) then { + private _errorMsg = format ["Invalid bullet diameter: %1", _this select 13]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 14 < 1 || _this select 14 > 75) then { + private _errorMsg = format ["Invalid rifle twist: %1", _this select 14]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 15 < 0.1 || _this select 15 > 2.0) then { + private _errorMsg = format ["Invalid ballistic coefficient: %1", _this select 15]; + ERROR(_errorMsg); + _valid = false; + }; + if (_this select 16 != 1) then { + private _errorMsg = format ["Invalid drag model: %1", _this select 16]; + ERROR(_errorMsg); + _valid = false; + }; + if (!((_this select 17) in ["ASM", "ICAO"])) then { + private _errorMsg = format ["Invalid atmosphere model: %1", _this select 17]; + ERROR(_errorMsg); + _valid = false; + }; + if (count (_this select 18) != 7) then { + private _errorMsg = format ["Invalid muzzle velocity table array size: %1", count (_this select 18)]; + ERROR(_errorMsg); + _valid = false; + } else { + { + if (count _x != 2) exitWith { + private _errorMsg = format ["Invalid muzzle velocity table subarray size: %1", count _x]; + ERROR(_errorMsg); + _valid = false; + }; + } forEach (_this select 18); + }; + if (count (_this select 19) != 7) then { + private _errorMsg = format ["Invalid drag coefficient table array size: %1", count (_this select 19)]; + ERROR(_errorMsg); + _valid = false; + } else { + { + if (count _x != 2) exitWith { + private _errorMsg = format ["Invalid drag coefficient table subarray size: %1", count _x]; + ERROR(_errorMsg); + _valid = false; + }; + } forEach (_this select 19); + }; + _valid +}; + +{ + private _preset = _x >> "preset"; + + if (isArray(_preset)) then { + private _gun = getArray _preset; + + if (_gun call _validate_preset) then { + _gun set [20, false]; + GVAR(gunList) = GVAR(gunList) + [_gun]; + lbAdd [6000, _gunProfileEntry select 0]; + }; + }; +} forEach ("true" configClasses (configFile >> "ACE_ATragMX_Presets")); diff --git a/addons/atragmx/functions/fnc_save_gun.sqf b/addons/atragmx/functions/fnc_save_gun.sqf index 64fe17e4c4..73e26ee5fd 100644 --- a/addons/atragmx/functions/fnc_save_gun.sqf +++ b/addons/atragmx/functions/fnc_save_gun.sqf @@ -25,4 +25,4 @@ lbClear 6000; lbAdd [6000, _x select 0]; } forEach GVAR(gunList); -profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; +call FUNC(store_gun_list); diff --git a/addons/atragmx/functions/fnc_store_gun_list.sqf b/addons/atragmx/functions/fnc_store_gun_list.sqf new file mode 100644 index 0000000000..3e569f8a59 --- /dev/null +++ b/addons/atragmx/functions/fnc_store_gun_list.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Saves the persistent gun list entries into profileNamespace + * + * Arguments: + * Nothing + * + * Return Value: + * Nothing + * + * Example: + * call ace_atragmx_fnc_store_user_data + * + * Public: No + */ +#include "script_component.hpp" + +private _gunList = []; +{ + if (_x select 20) then { + _gunList pushBack _x; + }; +} forEach GVAR(gunList); + +profileNamespace setVariable ["ACE_ATragMX_gunList", _gunList]; From 8c2b88da859bc4e544e856db288f695daec123b8 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Sat, 5 Nov 2016 06:20:02 -0500 Subject: [PATCH 28/33] ballistics: Added 20 round 6.5 Lapua and Creedmoor --- addons/ballistics/CfgMagazines.hpp | 14 ++++++ addons/ballistics/CfgWeapons.hpp | 5 ++ addons/ballistics/stringtable.xml | 79 ++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index efde366d8c..077430f7ce 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -241,6 +241,13 @@ class CfgMagazines { displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort); descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description); }; + class ACE_20Rnd_65x47_Scenar_mag: 20Rnd_650x39_Cased_Mag_F { + author = ECSTRING(common,ACETeam); + ammo = "ACE_65x47_Ball_Scenar"; + displayName = CSTRING(20Rnd_65x47_Scenar_mag_Name); + displayNameShort = CSTRING(20Rnd_65x47_Scenar_mag_NameShort); + descriptionShort = CSTRING(20Rnd_65x47_Scenar_mag_Description); + }; class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag { author = ECSTRING(common,ACETeam); ammo = "ACE_65_Creedmor_Ball"; @@ -248,6 +255,13 @@ class CfgMagazines { displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort); descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description); }; + class ACE_20Rnd_65_Creedmor_mag: 20Rnd_650x39_Cased_Mag_F { + author = ECSTRING(common,ACETeam); + ammo = "ACE_65_Creedmor_Ball"; + displayName = CSTRING(20Rnd_65_Creedmor_mag_Name); + displayNameShort = CSTRING(20Rnd_65_Creedmor_mag_NameShort); + descriptionShort = CSTRING(20Rnd_65_Creedmor_mag_Description); + }; class 10Rnd_338_Mag; class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag { author = ECSTRING(common,ACETeam); diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index b1791d7fe7..ad24430b30 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -31,6 +31,11 @@ class CfgWeapons { initSpeed = -0.982908; ACE_barrelTwist = 228.6; ACE_barrelLength = 640.0; + magazines[] = { + "20Rnd_650x39_Cased_Mag_F", + "ACE_20Rnd_65x47_Scenar_mag", + "ACE_20Rnd_65_Creedmor_mag" + }; }; class DMR_06_base_F: Rifle_Long_Base_F { diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index d7a4ea65b9..08325cad96 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1,6 +1,85 @@  + + + 6.5x47mm 20Rnd Mag (HPBT Scenar) + Ch. 6.5x47mm 20Cps (HPBT Scenar) + Cargador de 20 balas de 6.5x47mm (HPBT Scenar) + Magazynek 6,5x47mm 20rd (HPBT Scenar) + Магазин из 20-ти 6,5x47 мм (экспансивные Scenar) + 6,5x47mm 20-Patronen-Magazin (HPBT Scenar) + 6.5x47mm 20Rnd Mag (HPBT Scenar) + 6.5x47mm 20náb. Zásobník (HPBT Scenar) + Carregador 6.5x47mm com 20 cartuchos (HPBT Scenar) + 6,5x47mm 20-lövedékes tár (HPBT Scenar) + 6.5x47mm 20発入り 弾倉 (HPBT Scenar) + + + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + 6,5 мм Lapua + 6,5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + 6.5mm Lapua + + + Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 20<br />Used in: QBU-88 + Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 20 + Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 20<br />Se usa en: QBU-88 + Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 20 + Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 20<br />Используются с: QBU-88 + Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 20<br />Eingesetzt von: QBU-88 + Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 20<br />In uso su: QBU-88 + Ráže: 6.5x47mm (HPBT Scenar)<br />Nábojů: 20<br />Použití u: QBU-88 + Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 20<br/>Usado em: QBU-88 + Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 20<br />Használható: QBU-88 + 口径: 6.5x47mm (HPBT Scenar)&lt;br /&gt;装填数: 20&lt;br /&gt;次で使用: QBU-88 + + + 6.5mm Creedmor 20Rnd Mag + Magazynek 6,5mm Creedmor 20rd + 6.5mm Creedmor 20Rnd Mag + Магазин из 20-ти 6,5 мм Creedmor + 6,5mm Creedmor 20-Patronen-Magazin + Cargador de 20 balas Creedmor de 6.5mm + Ch. 6.5mm Creedmor 20Cps + 6.5mm Creedmor 20náb. Zásobník + Carregador 6.5mm com 20 cartuchos Creedmor + 6,5mm Creedmor 20-lövedékes tár + 6.5mm Creedmor 20発入り 弾倉 + + + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + 6,5 мм CM + 6,5mm CM + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + 6.5mm CM + + + Caliber: 6.5x47mm Creedmor<br />Rounds: 20<br />Used in: QBU-88 + Kaliber: 6,5x47mm Creedmor<br />Pociski: 20<br />Używany w: QBU-88 + Kaliber: 6,5x47mm Creedmor<br />Patronen: 20<br />Eingesetzt von: QBU-88 + Calibre: 6.5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88 + Calibro: 6.5mm Creedmor<br />Munizioni: 20<br />In uso su: QBU-88 + Calibre: 6.5mm Creedmor<br />Balas: 20<br />Se usa en: QBU-88 + Калибр: 6,5x47мм Creedmor<br />Патронов: 20<br />Используются c: QBU-88 + Ráže: 6.5x47mm Creedmor<br />Nábojů: 20<br />Použití u: QBU-88 + Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 20<br/>Usado em: QBU-88 + Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 20<br />Használható: QBU-88 + 口径: 6.5x47mm Creedmor&lt;br /&gt;装填数: 20&lt;br /&gt;次で使用: QBU-88 + 6.5mm 30Rnd Tracer IR-DIM Mag From 0580bdcc8e402dedf09e968987e9eac7fed73757 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sun, 6 Nov 2016 20:22:16 +0100 Subject: [PATCH 29/33] Added 20rnd 6.5 Creedmor and 6.5 Lapua Scenar mags * Fixed incorrect QBU-88 (DMR_07_base_F) initSpeed --- addons/ballistics/CfgMagazines.hpp | 7 +++++++ addons/ballistics/CfgWeapons.hpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index 077430f7ce..ef690b41aa 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -8,6 +8,9 @@ class CfgMagazines { class 100Rnd_580x42_Mag_F: 30Rnd_580x42_Mag_F { initSpeed = 930; }; + class 20Rnd_650x39_Cased_Mag_F: CA_Magazine { + initSpeed = 760; + }; class 30Rnd_65x39_caseless_mag: CA_Magazine { initSpeed = 760; }; @@ -237,6 +240,7 @@ class CfgMagazines { class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag { author = ECSTRING(common,ACETeam); ammo = "ACE_65x47_Ball_Scenar"; + initSpeed = 761; displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name); displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort); descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description); @@ -244,6 +248,7 @@ class CfgMagazines { class ACE_20Rnd_65x47_Scenar_mag: 20Rnd_650x39_Cased_Mag_F { author = ECSTRING(common,ACETeam); ammo = "ACE_65x47_Ball_Scenar"; + initSpeed = 779; displayName = CSTRING(20Rnd_65x47_Scenar_mag_Name); displayNameShort = CSTRING(20Rnd_65x47_Scenar_mag_NameShort); descriptionShort = CSTRING(20Rnd_65x47_Scenar_mag_Description); @@ -251,6 +256,7 @@ class CfgMagazines { class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag { author = ECSTRING(common,ACETeam); ammo = "ACE_65_Creedmor_Ball"; + initSpeed = 815; displayName = CSTRING(30Rnd_65_Creedmor_mag_Name); displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort); descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description); @@ -258,6 +264,7 @@ class CfgMagazines { class ACE_20Rnd_65_Creedmor_mag: 20Rnd_650x39_Cased_Mag_F { author = ECSTRING(common,ACETeam); ammo = "ACE_65_Creedmor_Ball"; + initSpeed = 808; displayName = CSTRING(20Rnd_65_Creedmor_mag_Name); displayNameShort = CSTRING(20Rnd_65_Creedmor_mag_NameShort); descriptionShort = CSTRING(20Rnd_65_Creedmor_mag_Description); diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index ad24430b30..3cbf8de544 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -28,7 +28,7 @@ class CfgWeapons { }; class DMR_07_base_F: Rifle_Long_Base_F { - initSpeed = -0.982908; + initSpeed = -1.06051; ACE_barrelTwist = 228.6; ACE_barrelLength = 640.0; magazines[] = { From 20f40f8c555d5b7c9ad7a7651c21cda784a597c5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 9 Nov 2016 13:00:18 -0600 Subject: [PATCH 30/33] Use single queue for blood cleanup (#4586) --- addons/medical_blood/XEH_PREP.hpp | 1 + addons/medical_blood/XEH_postInit.sqf | 12 ++++++---- .../functions/fnc_serverCleanupBlood.sqf | 23 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 addons/medical_blood/functions/fnc_serverCleanupBlood.sqf diff --git a/addons/medical_blood/XEH_PREP.hpp b/addons/medical_blood/XEH_PREP.hpp index 0c6f6e245a..aa7d358388 100644 --- a/addons/medical_blood/XEH_PREP.hpp +++ b/addons/medical_blood/XEH_PREP.hpp @@ -3,4 +3,5 @@ PREP(handleWoundReceived); PREP(isBleeding); PREP(onBleeding); PREP(createBlood); +PREP(serverCleanupBlood); PREP(spurt); diff --git a/addons/medical_blood/XEH_postInit.sqf b/addons/medical_blood/XEH_postInit.sqf index d927797c56..78bf5c43f9 100644 --- a/addons/medical_blood/XEH_postInit.sqf +++ b/addons/medical_blood/XEH_postInit.sqf @@ -10,13 +10,17 @@ if (isServer) then { [QGVAR(bloodDropCreated), { params ["_bloodDrop"]; - GVAR(bloodDrops) pushBack _bloodDrop; + // Add to created queue with format [expireTime, object] + private _index = GVAR(bloodDrops) pushBack [(CBA_missionTime + BLOOD_OBJECT_LIFETIME), _bloodDrop]; + if (count GVAR(bloodDrops) >= MAX_BLOOD_OBJECTS) then { - private _deletedBloodDrop = GVAR(bloodDrops) deleteAt 0; + (GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"]; deleteVehicle _deletedBloodDrop; }; - [{deleteVehicle _this}, _bloodDrop, BLOOD_OBJECT_LIFETIME] call CBA_fnc_waitAndExecute; + if (_index == 1) then { // Start the waitAndExecute loop + [FUNC(serverCleanupBlood), [], BLOOD_OBJECT_LIFETIME] call CBA_fnc_waitAndExecute; + }; }] call CBA_fnc_addEventHandler; }; @@ -30,7 +34,7 @@ if (isServer) then { } else { {allUnits select {(local _x) && {[_x] call FUNC(isBleeding)}}}; // filter all local bleeding units }; - + private _stateMachine = [_listcode, true] call CBA_statemachine_fnc_create; [_stateMachine, {call FUNC(onBleeding)}, {}, {}, "Bleeding"] call CBA_statemachine_fnc_addState; diff --git a/addons/medical_blood/functions/fnc_serverCleanupBlood.sqf b/addons/medical_blood/functions/fnc_serverCleanupBlood.sqf new file mode 100644 index 0000000000..4adc304d8c --- /dev/null +++ b/addons/medical_blood/functions/fnc_serverCleanupBlood.sqf @@ -0,0 +1,23 @@ +/* + * Author: PabstMirror + * Loop that cleans up blood + * + * Arguments: + * None + * + * ReturnValue: + * None + * + * Public: No + */ +#include "script_component.hpp" + +(GVAR(bloodDrops) deleteAt 0) params ["", "_deletedBloodDrop"]; +deleteVehicle _deletedBloodDrop; + +// If we cleaned out the array, exit loop +if (GVAR(bloodDrops) isEqualTo []) exitWith {}; + +// Wait until the next blood drop in the queue will expire +(GVAR(bloodDrops) select 0) params ["_expireTime"]; +[FUNC(serverCleanupBlood), [], (_expireTime - CBA_missionTime)] call CBA_fnc_waitAndExecute; From 370e746068f8d3cbb4971ffd66febdee2244554c Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 9 Nov 2016 20:02:48 +0100 Subject: [PATCH 31/33] fix tripflares script error (#4647) --- addons/explosives/functions/fnc_spawnFlare.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/explosives/functions/fnc_spawnFlare.sqf b/addons/explosives/functions/fnc_spawnFlare.sqf index acd5dc2a99..79f105b67b 100644 --- a/addons/explosives/functions/fnc_spawnFlare.sqf +++ b/addons/explosives/functions/fnc_spawnFlare.sqf @@ -21,3 +21,5 @@ TRACE_3("Params",_posX,_posY,_posZ); private _flare = "ACE_TripFlare_FlareEffect" createVehicle [_posX,_posY,_posZ]; TRACE_1("",_flare); + +nil From 09b89a0bbcb4ddb7fb46905467577426b5ed949e Mon Sep 17 00:00:00 2001 From: Karan Singh Date: Wed, 9 Nov 2016 13:07:29 -0600 Subject: [PATCH 32/33] Fix typo in Eden Options (#4615) * Fix typo in Eden Options This fixes a typo in line 25, ace_isMeidc_temp to ace_isMedic_temp * Fix L13 --- addons/medical/CfgEden.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp index e4d034a413..9579f29c61 100644 --- a/addons/medical/CfgEden.hpp +++ b/addons/medical/CfgEden.hpp @@ -10,7 +10,7 @@ class Cfg3DEN { }; class GVAR(isMedicControl): Title { attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);"; - attributeSave = "(missionnamespace getvariable ['ace_isMeidc_temp',0]) - 1;"; + attributeSave = "(missionnamespace getvariable ['ace_isMedic_temp',0]) - 1;"; class Controls: Controls { class Title: Title{}; class Value: ctrlToolbox { @@ -22,7 +22,7 @@ class Cfg3DEN { rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)}; - onToolboxSelChanged = "missionnamespace setvariable ['ace_isMeidc_temp',_this select 1];"; + onToolboxSelChanged = "missionnamespace setvariable ['ace_isMedic_temp',_this select 1];"; }; }; }; From ff961a5bd6a0f6688450e1fdc9cb6e586900cc59 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Wed, 9 Nov 2016 22:11:47 +0300 Subject: [PATCH 33/33] Fix Full Repair menu not shown when damage returns 0 (#4621) --- addons/repair/ACE_Repair.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/ACE_Repair.hpp b/addons/repair/ACE_Repair.hpp index 6e5eac4fa8..3cea9ed7ca 100644 --- a/addons/repair/ACE_Repair.hpp +++ b/addons/repair/ACE_Repair.hpp @@ -72,7 +72,7 @@ class ACE_Repair { requiredEngineer = QGVAR(engineerSetting_fullRepair); repairLocations[] = {QGVAR(fullRepairLocation)}; repairingTime = 30; - condition = "damage _target > 0"; + condition = "0 < ({_x>0} count (getAllHitPointsDamage _target param [2,[]]))"; callbackSuccess = QUOTE(call FUNC(doFullRepair)); itemConsumed = QGVAR(consumeItem_ToolKit); };