mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Merge remote-tracking branch 'acemod/master'
This commit is contained in:
commit
a950a91766
Binary file not shown.
Binary file not shown.
BIN
ace_fcs.dll
BIN
ace_fcs.dll
Binary file not shown.
@ -7,8 +7,9 @@
|
|||||||
<Polish>Pokaż inf. o wietrze</Polish>
|
<Polish>Pokaż inf. o wietrze</Polish>
|
||||||
<Italian>Mostra indicazioni del vento</Italian>
|
<Italian>Mostra indicazioni del vento</Italian>
|
||||||
<Russian>Показать информацию о ветре</Russian>
|
<Russian>Показать информацию о ветре</Russian>
|
||||||
<French>Afficher les info du vent</French>
|
<French>Afficher les info sur le vent</French>
|
||||||
<Spanish>Mostrar información del viento</Spanish>
|
<Spanish>Mostrar información del viento</Spanish>
|
||||||
|
<German>Windinformationen anzeigen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
|
<Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
|
||||||
<English>Show Protractor</English>
|
<English>Show Protractor</English>
|
||||||
@ -17,6 +18,7 @@
|
|||||||
<Russian>Показать транспортир</Russian>
|
<Russian>Показать транспортир</Russian>
|
||||||
<French>Afficher le rapporteur</French>
|
<French>Afficher le rapporteur</French>
|
||||||
<Spanish>Mostrar transportador</Spanish>
|
<Spanish>Mostrar transportador</Spanish>
|
||||||
|
<German>Winkelmesser anzeigen</German>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -133,40 +133,6 @@ class ATragMX_RscListNBox: ATragMX_RscListBox {
|
|||||||
idcLeft=-1;
|
idcLeft=-1;
|
||||||
idcRight=-1;
|
idcRight=-1;
|
||||||
};
|
};
|
||||||
class ATragMX_RscControlsGroup {
|
|
||||||
type=15;
|
|
||||||
idc=-1;
|
|
||||||
style=16;
|
|
||||||
x=0;
|
|
||||||
y=0;
|
|
||||||
w=1;
|
|
||||||
h=1;
|
|
||||||
shadow=0;
|
|
||||||
class VScrollbar {
|
|
||||||
color[]={1,1,1,0.6};
|
|
||||||
width=0.021;
|
|
||||||
autoScrollSpeed=-1;
|
|
||||||
autoScrollDelay=5;
|
|
||||||
autoScrollRewind=0;
|
|
||||||
shadow=0;
|
|
||||||
};
|
|
||||||
class HScrollbar {
|
|
||||||
color[]={1,1,1,0.6};
|
|
||||||
height=0.028;
|
|
||||||
shadow=0;
|
|
||||||
};
|
|
||||||
class ScrollBar {
|
|
||||||
color[]={1,1,1,0.6};
|
|
||||||
colorActive[]={1,1,1,1};
|
|
||||||
colorDisabled[]={1,1,1,0.3};
|
|
||||||
thumb="#(argb,8,8,3)color(1,1,1,1)";
|
|
||||||
arrowEmpty="#(argb,8,8,3)color(1,1,1,1)";
|
|
||||||
arrowFull="#(argb,8,8,3)color(1,1,1,1)";
|
|
||||||
border="#(argb,8,8,3)color(1,1,1,1)";
|
|
||||||
};
|
|
||||||
class Controls {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class ATragMX_RscLineBreak {
|
class ATragMX_RscLineBreak {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
type=98;
|
type=98;
|
||||||
@ -230,12 +196,12 @@ class ATragMX_Display {
|
|||||||
w=0.03;
|
w=0.03;
|
||||||
h=0.03;
|
h=0.03;
|
||||||
colorBackground[]={0,0,0,0.0};
|
colorBackground[]={0,0,0,0.0};
|
||||||
action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) - 1) % (count GVAR(gunList)) call FUNC(change_gun));
|
action=QUOTE(-1 call FUNC(cycle_gun_list));
|
||||||
};
|
};
|
||||||
class BOTTOM: TOP {
|
class BOTTOM: TOP {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
y=0.265*safezoneH+safezoneY+0.955;
|
y=0.265*safezoneH+safezoneY+0.955;
|
||||||
action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) + 1) % (count GVAR(gunList)) call FUNC(change_gun));
|
action=QUOTE(+1 call FUNC(cycle_gun_list));
|
||||||
};
|
};
|
||||||
class LEFT: ATragMX_RscButton {
|
class LEFT: ATragMX_RscButton {
|
||||||
idc=-1;
|
idc=-1;
|
||||||
@ -264,6 +230,30 @@ class ATragMX_Display {
|
|||||||
x=0.55*safezoneW+safezoneX+0.315;
|
x=0.55*safezoneW+safezoneX+0.315;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TEXT_GUN_FRAME: ATragMX_RscText {
|
||||||
|
idc=1001;
|
||||||
|
style=64;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.11;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.25;
|
||||||
|
w=0.0925;
|
||||||
|
h=0.205;
|
||||||
|
text="";
|
||||||
|
};
|
||||||
|
class TEXT_ATMOSPHERE_FRAME: TEXT_GUN_FRAME {
|
||||||
|
idc=1002;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.205;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_FRAME: TEXT_GUN_FRAME {
|
||||||
|
idc=1003;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
|
};
|
||||||
|
class TEXT_RESULT_FRAME: TEXT_GUN_FRAME {
|
||||||
|
idc=1004;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.11;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.46;
|
||||||
|
w=0.2825;
|
||||||
|
h=0.15;
|
||||||
|
};
|
||||||
class TEXT_GUN_PROFILE: ATragMX_RscText {
|
class TEXT_GUN_PROFILE: ATragMX_RscText {
|
||||||
idc=1000;
|
idc=1000;
|
||||||
x=0.550*safezoneW+safezoneX+0.11;
|
x=0.550*safezoneW+safezoneX+0.11;
|
||||||
@ -316,6 +306,7 @@ class ATragMX_Display {
|
|||||||
colorBackground[]={0.15,0.21,0.23,0.3};
|
colorBackground[]={0.15,0.21,0.23,0.3};
|
||||||
colorFocused[]={0.15,0.21,0.23,0.2};
|
colorFocused[]={0.15,0.21,0.23,0.2};
|
||||||
text="Gun";
|
text="Gun";
|
||||||
|
action=QUOTE(call FUNC(toggle_gun_ammo_data));
|
||||||
};
|
};
|
||||||
class TEXT_BORE_HEIGHT: TEXT_GUN_PROFILE {
|
class TEXT_BORE_HEIGHT: TEXT_GUN_PROFILE {
|
||||||
idc=10;
|
idc=10;
|
||||||
@ -323,12 +314,12 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.285;
|
y=0.265*safezoneH+safezoneY+0.285;
|
||||||
text="BH";
|
text="BH";
|
||||||
};
|
};
|
||||||
class TEXT_BORE_HEIGHT_INPUT: ATragMX_RscEdit {
|
class TEXT_BORE_HEIGHT_OUTPUT: TEXT_BORE_HEIGHT {
|
||||||
idc=100;
|
idc=100;
|
||||||
|
style=ST_RIGHT;
|
||||||
w=0.058;
|
w=0.058;
|
||||||
x=0.550*safezoneW+safezoneX+0.145;
|
x=0.550*safezoneW+safezoneX+0.145;
|
||||||
y=0.265*safezoneH+safezoneY+0.285;
|
y=0.265*safezoneH+safezoneY+0.285;
|
||||||
onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
|
|
||||||
};
|
};
|
||||||
class TEXT_BULLET_MASS: TEXT_BORE_HEIGHT {
|
class TEXT_BULLET_MASS: TEXT_BORE_HEIGHT {
|
||||||
idc=11;
|
idc=11;
|
||||||
@ -336,7 +327,7 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.320;
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
text="BW";
|
text="BW";
|
||||||
};
|
};
|
||||||
class TEXT_BULLET_MASS_INPUT: TEXT_BORE_HEIGHT_INPUT {
|
class TEXT_BULLET_MASS_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=110;
|
idc=110;
|
||||||
y=0.265*safezoneH+safezoneY+0.320;
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
};
|
};
|
||||||
@ -345,7 +336,7 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.355;
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
text="C1";
|
text="C1";
|
||||||
};
|
};
|
||||||
class TEXT_AIR_FRICTION_INPUT: TEXT_BORE_HEIGHT_INPUT {
|
class TEXT_AIR_FRICTION_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=120;
|
idc=120;
|
||||||
y=0.265*safezoneH+safezoneY+0.355;
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
};
|
};
|
||||||
@ -359,7 +350,7 @@ class ATragMX_Display {
|
|||||||
colorFocused[]={0.15,0.21,0.23,0.2};
|
colorFocused[]={0.15,0.21,0.23,0.2};
|
||||||
text="MV";
|
text="MV";
|
||||||
};
|
};
|
||||||
class TEXT_MUZZLE_VELOCITY_INPUT: TEXT_BORE_HEIGHT_INPUT {
|
class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=130;
|
idc=130;
|
||||||
y=0.265*safezoneH+safezoneY+0.390;
|
y=0.265*safezoneH+safezoneY+0.390;
|
||||||
};
|
};
|
||||||
@ -368,35 +359,35 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.425;
|
y=0.265*safezoneH+safezoneY+0.425;
|
||||||
text="ZR";
|
text="ZR";
|
||||||
};
|
};
|
||||||
class TEXT_ZERO_RANGE_INPUT: TEXT_BORE_HEIGHT_INPUT {
|
class TEXT_ZERO_RANGE_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=140;
|
idc=140;
|
||||||
y=0.265*safezoneH+safezoneY+0.425;
|
y=0.265*safezoneH+safezoneY+0.425;
|
||||||
onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(update_zero_range)});
|
|
||||||
};
|
};
|
||||||
class TEXT_ATMOSPHERE: TEXT_GUN {
|
class TEXT_ATMOSPHERE: TEXT_GUN {
|
||||||
idc=4001;
|
idc=4001;
|
||||||
x=0.550*safezoneW+safezoneX+0.205;
|
x=0.550*safezoneW+safezoneX+0.205;
|
||||||
text="Atmsphr";
|
text="Atmsphr";
|
||||||
|
action=QUOTE(0 call FUNC(toggle_atmo_env_data));
|
||||||
};
|
};
|
||||||
class TEXT_TEMPERATURE: TEXT_BULLET_MASS {
|
class TEXT_TEMPERATURE: TEXT_BULLET_MASS {
|
||||||
idc=20;
|
idc=20;
|
||||||
x=0.550*safezoneW+safezoneX+0.20;
|
x=0.550*safezoneW+safezoneX+0.20;
|
||||||
text="Tmp";
|
text="Tmp";
|
||||||
};
|
};
|
||||||
class TEXT_TEMPERATURE_INPUT: ATragMX_RscEdit {
|
class TEXT_TEMPERATURE_OUTPUT: TEXT_TEMPERATURE {
|
||||||
idc=200;
|
idc=200;
|
||||||
|
style=ST_RIGHT;
|
||||||
w=0.050;
|
w=0.050;
|
||||||
x=0.550*safezoneW+safezoneX+0.245;
|
x=0.550*safezoneW+safezoneX+0.245;
|
||||||
y=0.265*safezoneH+safezoneY+0.320;
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
text="";
|
text="";
|
||||||
onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
|
|
||||||
};
|
};
|
||||||
class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION {
|
class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION {
|
||||||
idc=21;
|
idc=21;
|
||||||
x=0.550*safezoneW+safezoneX+0.20;
|
x=0.550*safezoneW+safezoneX+0.20;
|
||||||
text="BP";
|
text="BP";
|
||||||
};
|
};
|
||||||
class TEXT_BAROMETRIC_PRESSURE_INPUT: TEXT_TEMPERATURE_INPUT {
|
class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
|
||||||
idc=210;
|
idc=210;
|
||||||
y=0.265*safezoneH+safezoneY+0.355;
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
};
|
};
|
||||||
@ -406,10 +397,19 @@ class ATragMX_Display {
|
|||||||
y=0.265*safezoneH+safezoneY+0.390;
|
y=0.265*safezoneH+safezoneY+0.390;
|
||||||
text="RH";
|
text="RH";
|
||||||
};
|
};
|
||||||
class TEXT_RELATIVE_HUMIDITY_INPUT: TEXT_TEMPERATURE_INPUT {
|
class TEXT_RELATIVE_HUMIDITY_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
|
||||||
idc=220;
|
idc=220;
|
||||||
y=0.265*safezoneH+safezoneY+0.390;
|
y=0.265*safezoneH+safezoneY+0.390;
|
||||||
};
|
};
|
||||||
|
class TEXT_ALTITUDE: TEXT_BORE_HEIGHT {
|
||||||
|
idc=23;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.20;
|
||||||
|
text="Alt";
|
||||||
|
};
|
||||||
|
class TEXT_ALTITUDE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
|
||||||
|
idc=230;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.285;
|
||||||
|
};
|
||||||
class TEXT_TARGET_A: ATragMX_RscButton {
|
class TEXT_TARGET_A: ATragMX_RscButton {
|
||||||
idc=500;
|
idc=500;
|
||||||
w=0.0231;
|
w=0.0231;
|
||||||
@ -428,13 +428,13 @@ class ATragMX_Display {
|
|||||||
text="B";
|
text="B";
|
||||||
action=QUOTE(1 call FUNC(change_target_slot));
|
action=QUOTE(1 call FUNC(change_target_slot));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_C: TEXT_TARGET_B {
|
class TEXT_TARGET_C: TEXT_TARGET_A {
|
||||||
idc=502;
|
idc=502;
|
||||||
x=0.550*safezoneW+safezoneX+0.2512;
|
x=0.550*safezoneW+safezoneX+0.2512;
|
||||||
text="C";
|
text="C";
|
||||||
action=QUOTE(2 call FUNC(change_target_slot));
|
action=QUOTE(2 call FUNC(change_target_slot));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_D: TEXT_TARGET_B {
|
class TEXT_TARGET_D: TEXT_TARGET_A {
|
||||||
idc=503;
|
idc=503;
|
||||||
x=0.550*safezoneW+safezoneX+0.2743;
|
x=0.550*safezoneW+safezoneX+0.2743;
|
||||||
text="D";
|
text="D";
|
||||||
@ -445,18 +445,18 @@ class ATragMX_Display {
|
|||||||
idc=4002;
|
idc=4002;
|
||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="Target";
|
text="Target";
|
||||||
|
action=QUOTE(0 call FUNC(toggle_target_data));
|
||||||
};
|
};
|
||||||
class TEXT_WIND_SPEED: TEXT_BORE_HEIGHT {
|
class TEXT_WIND_SPEED: TEXT_BORE_HEIGHT {
|
||||||
idc=30;
|
idc=30;
|
||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="WS";
|
text="WS";
|
||||||
};
|
};
|
||||||
class TEXT_WIND_SPEED_INPUT: ATragMX_RscEdit {
|
class TEXT_WIND_SPEED_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
|
||||||
idc=300;
|
idc=300;
|
||||||
w=0.058;
|
w=0.058;
|
||||||
x=0.550*safezoneW+safezoneX+0.335;
|
x=0.550*safezoneW+safezoneX+0.335;
|
||||||
y=0.265*safezoneH+safezoneY+0.285;
|
y=0.265*safezoneH+safezoneY+0.285;
|
||||||
onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
|
|
||||||
text="0";
|
text="0";
|
||||||
};
|
};
|
||||||
class TEXT_WIND_DIRECTION: TEXT_BULLET_MASS {
|
class TEXT_WIND_DIRECTION: TEXT_BULLET_MASS {
|
||||||
@ -464,7 +464,7 @@ class ATragMX_Display {
|
|||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="WD";
|
text="WD";
|
||||||
};
|
};
|
||||||
class TEXT_WIND_DIRECTION_INPUT: TEXT_WIND_SPEED_INPUT {
|
class TEXT_WIND_DIRECTION_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
|
||||||
idc=310;
|
idc=310;
|
||||||
y=0.265*safezoneH+safezoneY+0.32;
|
y=0.265*safezoneH+safezoneY+0.32;
|
||||||
};
|
};
|
||||||
@ -473,7 +473,7 @@ class ATragMX_Display {
|
|||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="IA";
|
text="IA";
|
||||||
};
|
};
|
||||||
class TEXT_INCLINATION_ANGLE_INPUT: TEXT_WIND_SPEED_INPUT {
|
class TEXT_INCLINATION_ANGLE_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
|
||||||
idc=320;
|
idc=320;
|
||||||
y=0.265*safezoneH+safezoneY+0.355;
|
y=0.265*safezoneH+safezoneY+0.355;
|
||||||
};
|
};
|
||||||
@ -481,9 +481,9 @@ class ATragMX_Display {
|
|||||||
idc=33;
|
idc=33;
|
||||||
x=0.550*safezoneW+safezoneX+0.3;
|
x=0.550*safezoneW+safezoneX+0.3;
|
||||||
text="TS";
|
text="TS";
|
||||||
action=QUOTE(call FUNC(toggle_target_speed_assist));
|
action=QUOTE(0 call FUNC(toggle_target_speed_assist));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_INPUT: TEXT_WIND_SPEED_INPUT {
|
class TEXT_TARGET_SPEED_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
|
||||||
idc=330;
|
idc=330;
|
||||||
y=0.265*safezoneH+safezoneY+0.39;
|
y=0.265*safezoneH+safezoneY+0.39;
|
||||||
};
|
};
|
||||||
@ -493,7 +493,7 @@ class ATragMX_Display {
|
|||||||
text="TR";
|
text="TR";
|
||||||
action=QUOTE(0 call FUNC(toggle_target_range_assist));
|
action=QUOTE(0 call FUNC(toggle_target_range_assist));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_RANGE_INPUT: TEXT_WIND_SPEED_INPUT {
|
class TEXT_TARGET_RANGE_INPUT: TEXT_WIND_SPEED_OUTPUT {
|
||||||
idc=340;
|
idc=340;
|
||||||
y=0.265*safezoneH+safezoneY+0.425;
|
y=0.265*safezoneH+safezoneY+0.425;
|
||||||
};
|
};
|
||||||
@ -501,7 +501,7 @@ class ATragMX_Display {
|
|||||||
class TEXT_ELEVATION: TEXT_GUN_PROFILE {
|
class TEXT_ELEVATION: TEXT_GUN_PROFILE {
|
||||||
idc=40;
|
idc=40;
|
||||||
w=0.05;
|
w=0.05;
|
||||||
x=0.550*safezoneW+safezoneX+0.11;
|
x=0.550*safezoneW+safezoneX+0.115;
|
||||||
y=0.265*safezoneH+safezoneY+0.50;
|
y=0.265*safezoneH+safezoneY+0.50;
|
||||||
text="Elev";
|
text="Elev";
|
||||||
};
|
};
|
||||||
@ -560,9 +560,10 @@ class ATragMX_Display {
|
|||||||
class TEXT_LEAD: TEXT_GUN {
|
class TEXT_LEAD: TEXT_GUN {
|
||||||
idc=42;
|
idc=42;
|
||||||
w=0.05;
|
w=0.05;
|
||||||
x=0.550*safezoneW+safezoneX+0.11;
|
x=0.550*safezoneW+safezoneX+0.115;
|
||||||
y=0.265*safezoneH+safezoneY+0.57;
|
y=0.265*safezoneH+safezoneY+0.57;
|
||||||
text="Lead";
|
text="Lead";
|
||||||
|
action=QUOTE(GVAR(showWind2) = !GVAR(showWind2); call FUNC(update_result); call FUNC(update_target));
|
||||||
};
|
};
|
||||||
class TEXT_LEAD_OUTPUT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
|
class TEXT_LEAD_OUTPUT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
|
||||||
idc=420;
|
idc=420;
|
||||||
@ -668,6 +669,7 @@ class ATragMX_Display {
|
|||||||
h=0.45;
|
h=0.45;
|
||||||
x=0.550*safezoneW+safezoneX+0.11;
|
x=0.550*safezoneW+safezoneX+0.11;
|
||||||
y=0.265*safezoneH+safezoneY+0.24;
|
y=0.265*safezoneH+safezoneY+0.24;
|
||||||
|
sizeEx=0.025;
|
||||||
colorSelectBackground[]={0.15,0.21,0.23,0.3};
|
colorSelectBackground[]={0.15,0.21,0.23,0.3};
|
||||||
colorSelectBackground2[]={0.15,0.21,0.23,0.3};
|
colorSelectBackground2[]={0.15,0.21,0.23,0.3};
|
||||||
onMouseButtonDblClick=QUOTE(true call FUNC(toggle_gun_list));
|
onMouseButtonDblClick=QUOTE(true call FUNC(toggle_gun_list));
|
||||||
@ -814,13 +816,13 @@ class ATragMX_Display {
|
|||||||
w=0.07;
|
w=0.07;
|
||||||
x=0.550*safezoneW+safezoneX+0.32;
|
x=0.550*safezoneW+safezoneX+0.32;
|
||||||
text="cm";
|
text="cm";
|
||||||
action=QUOTE(GVAR(rangeAssistTargetSizeUnit)=(GVAR(rangeAssistTargetSizeUnit)+1) % (count GVAR(GVAR(rangeAssistTargetSizeUnit)s)); ctrlSetText [7014, GVAR(GVAR(rangeAssistTargetSizeUnit)s) select GVAR(rangeAssistTargetSizeUnit)]);
|
action=QUOTE(call FUNC(cycle_target_size_units));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_UNIT {
|
class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_UNIT {
|
||||||
idc=7015;
|
idc=7015;
|
||||||
y=0.265*safezoneH+safezoneY+0.45;
|
y=0.265*safezoneH+safezoneY+0.45;
|
||||||
text="MIL";
|
text="MIL";
|
||||||
action=QUOTE(GVAR(rangeAssistImageSizeUnit)=(GVAR(rangeAssistImageSizeUnit)+1) % (count GVAR(rangeAssistImageSizeUnits)); ctrlSetText [7015, GVAR(rangeAssistImageSizeUnits) select GVAR(rangeAssistImageSizeUnit)]);
|
action=QUOTE(call FUNC(cycle_image_size_units));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE_UNIT: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
class TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE_UNIT: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
||||||
idc=7016;
|
idc=7016;
|
||||||
@ -861,22 +863,22 @@ class ATragMX_Display {
|
|||||||
|
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
|
||||||
idc=8000;
|
idc=8000;
|
||||||
x=0.550*safezoneW+safezoneX+0.12;
|
x=0.550*safezoneW+safezoneX+0.13;
|
||||||
text="Target Range";
|
text="Target Range";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
|
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
|
||||||
idc=8001;
|
idc=8001;
|
||||||
x=0.550*safezoneW+safezoneX+0.12;
|
x=0.550*safezoneW+safezoneX+0.13;
|
||||||
text="Num Ticks";
|
text="Num Ticks";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
|
class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
|
||||||
idc=8002;
|
idc=8002;
|
||||||
x=0.550*safezoneW+safezoneX+0.12;
|
x=0.550*safezoneW+safezoneX+0.13;
|
||||||
text="Time (secs)";
|
text="Time (secs)";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
|
||||||
idc=8003;
|
idc=8003;
|
||||||
x=0.550*safezoneW+safezoneX+0.12;
|
x=0.550*safezoneW+safezoneX+0.13;
|
||||||
text="Est Speed";
|
text="Est Speed";
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
|
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
|
||||||
@ -907,7 +909,7 @@ class ATragMX_Display {
|
|||||||
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS_UNIT: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
|
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS_UNIT: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
|
||||||
idc=8009;
|
idc=8009;
|
||||||
text="MIL";
|
text="MIL";
|
||||||
action=QUOTE(GVAR(speedAssistNumTicksUnit)=(GVAR(speedAssistNumTicksUnit)+1) % (count GVAR(speedAssistNumTicksUnits)); ctrlSetText [8009, GVAR(speedAssistNumTicksUnits) select GVAR(speedAssistNumTicksUnit)]; call FUNC(calculate_target_speed_assist));
|
action=QUOTE(call FUNC(cycle_num_ticks_units));
|
||||||
};
|
};
|
||||||
class TEXT_TARGET_SPEED_ASSIST_TIMER_START: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
|
class TEXT_TARGET_SPEED_ASSIST_TIMER_START: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
|
||||||
idc=8010;
|
idc=8010;
|
||||||
@ -1046,5 +1048,298 @@ class ATragMX_Display {
|
|||||||
text="Cancel";
|
text="Cancel";
|
||||||
action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list));
|
action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TEXT_GUN_AMMO_DATA_BORE_HEIGHT: TEXT_BORE_HEIGHT {
|
||||||
|
idc=12000;
|
||||||
|
w=0.22;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.28;
|
||||||
|
text="Bore (cm)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT: ATragMX_RscEdit {
|
||||||
|
idc=120000;
|
||||||
|
w=0.06;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.335;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.28;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_BULLET_MASS: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12001;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
text="Bullet Weight (grams)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_BULLET_MASS_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120010;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_BULLET_DIAMETER: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12002;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
text="Bullet Diam (cm)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_BULLET_DIAMETER_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120020;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_AIR_FRICTION: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12003;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
text="C1 Coefficient";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_AIR_FRICTION_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120030;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_RIFLE_TWIST: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12004;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
text="Rifle Twist (cm/trn)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_RIFLE_TWIST_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120040;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_MUZZLE_VELOCITY: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12005;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
text="Muzzle Velocity (m/s)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_MUZZLE_VELOCITY_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120050;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_ZERO_RANGE: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=12006;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
text="Zero Range (meters)";
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_ZERO_RANGE_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=120060;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
|
||||||
|
idc=12008;
|
||||||
|
action=QUOTE(1 call FUNC(toggle_gun_ammo_data));
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
|
||||||
|
idc=12009;
|
||||||
|
action=QUOTE(0 call FUNC(toggle_gun_ammo_data));
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
|
||||||
|
idc=12010;
|
||||||
|
};
|
||||||
|
class TEXT_GUN_AMMO_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
|
||||||
|
idc=12011;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEXT_ATMO_ENV_DATA_DEFAULT: TEXT_LEAD {
|
||||||
|
idc=13000;
|
||||||
|
w=0.08;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.15;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
text="Default";
|
||||||
|
action=QUOTE(call FUNC(restore_atmo_default));
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_AT: TEXT_TARGET_A {
|
||||||
|
idc=13001;
|
||||||
|
w=0.04;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.24;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
text="AT";
|
||||||
|
action=QUOTE(GVAR(atmosphereModeTBH) = false; call FUNC(update_atmo_selection));
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_TBH: TEXT_ATMO_ENV_DATA_AT {
|
||||||
|
idc=13002;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.28;
|
||||||
|
text="TBH";
|
||||||
|
action=QUOTE(GVAR(atmosphereModeTBH) = true; call FUNC(update_atmo_selection));
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_ALTITUDE: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=13003;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.115;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
text="Altitude (ft)";
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
|
||||||
|
idc=130030;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.330;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_TEMPERATURE: TEXT_ATMO_ENV_DATA_ALTITUDE {
|
||||||
|
idc=13004;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
text="temperature (F)";
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_TEMPERATURE_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
|
||||||
|
idc=130040;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_BAROMETRIC_PRESSURE: TEXT_ATMO_ENV_DATA_ALTITUDE {
|
||||||
|
idc=13005;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
text="Barom Pres (in.merc.)";
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_BAROMETRIC_PRESSURE_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
|
||||||
|
idc=130050;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_RELATIVE_HUMIDITY: TEXT_ATMO_ENV_DATA_ALTITUDE {
|
||||||
|
idc=13006;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
text="Relative Humidity (%)";
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_RELATIVE_HUMIDITY_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
|
||||||
|
idc=130060;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
|
||||||
|
idc=13007;
|
||||||
|
action=QUOTE(1 call FUNC(toggle_atmo_env_data));
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
|
||||||
|
idc=13008;
|
||||||
|
action=QUOTE(0 call FUNC(toggle_atmo_env_data));
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
|
||||||
|
idc=13009;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
|
||||||
|
idc=13010;
|
||||||
|
};
|
||||||
|
class TEXT_ATMO_ENV_DATA_CALC_METHOD: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
|
||||||
|
idc=13011;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.24;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.29;
|
||||||
|
text="Calc Method";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT {
|
||||||
|
idc=14000;
|
||||||
|
w=0.22;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.28;
|
||||||
|
text="Latitude";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_LATITUDE_INPUT: ATragMX_RscEdit {
|
||||||
|
idc=140000;
|
||||||
|
w=0.06;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.335;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.28;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_DIR_OF_FIRE: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14001;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
text="Dir of Fire (deg from N)";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_DIR_OF_FIRE_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140010;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.320;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_SPEED: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14002;
|
||||||
|
w=1.2;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
text="Wind Speed (m/s)";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_SPEED_1: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=141020;
|
||||||
|
colorText[]={0,0,0,0.6};
|
||||||
|
w=0.05;
|
||||||
|
h=0.03;
|
||||||
|
sizeEx=0.025;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.270;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.357;
|
||||||
|
text="1";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_SPEED_INPUT_1: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140020;
|
||||||
|
w=0.045;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.290;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_SPEED_2: TEXT_TARGET_DATA_WIND_SPEED_1 {
|
||||||
|
idc=141021;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.330;
|
||||||
|
text="2";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_SPEED_INPUT_2: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140021;
|
||||||
|
w=0.045;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.350;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.360;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_DIRECTION: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14003;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
text="Wind Direction (clock)";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_WIND_DIRECTION_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140030;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.400;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_INCLINATION_ANGLE: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14004;
|
||||||
|
w=1.2;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
text="Inclination Angle";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_INCLINATION_ANGLE_COSINE: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=141041;
|
||||||
|
colorText[]={0,0,0,0.6};
|
||||||
|
w=0.05;
|
||||||
|
h=0.03;
|
||||||
|
sizeEx=0.025;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.270;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.437;
|
||||||
|
text="c";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_COSINE: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140041;
|
||||||
|
w=0.045;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.290;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
onKeyUp=QUOTE(if (_this select 1 == 28) then {0 call FUNC(update_inclination_angle)});
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_INCLINATION_ANGLE_DEGREE: TEXT_TARGET_DATA_INCLINATION_ANGLE_COSINE {
|
||||||
|
idc=141040;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.330;
|
||||||
|
text="d";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_DEGREE: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140040;
|
||||||
|
w=0.045;
|
||||||
|
x=0.550*safezoneW+safezoneX+0.350;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.440;
|
||||||
|
onKeyUp=QUOTE(if (_this select 1 == 28) then {1 call FUNC(update_inclination_angle)});
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_TARGET_SPEED: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14005;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
text="Target Speed (m/s)";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_TARGET_SPEED_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140050;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.480;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_TARGET_RANGE: TEXT_TARGET_DATA_LATITUDE {
|
||||||
|
idc=14006;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
text="Target Range (meters)";
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_TARGET_RANGE_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
|
||||||
|
idc=140060;
|
||||||
|
y=0.265*safezoneH+safezoneY+0.520;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
|
||||||
|
idc=14008;
|
||||||
|
action=QUOTE(1 call FUNC(toggle_target_data));
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
|
||||||
|
idc=14009;
|
||||||
|
action=QUOTE(0 call FUNC(toggle_target_data));
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
|
||||||
|
idc=14010;
|
||||||
|
};
|
||||||
|
class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
|
||||||
|
idc=14011;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
@ -2,46 +2,48 @@
|
|||||||
|
|
||||||
#include "initKeybinds.sqf"
|
#include "initKeybinds.sqf"
|
||||||
|
|
||||||
if (count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
|
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";
|
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
|
||||||
} else {
|
} else {
|
||||||
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Ammo Class Name, Magazine Class Name, BC, Drag Model, Atmosphere Model
|
// 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.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, "B_127x108_Ball" , "5Rnd_127x108_Mag" , 0.630, 1, "ASM" ],
|
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0659, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
|
||||||
|
|
||||||
["12.7x99mm AMAX" , 860, 100, 0.0612, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x99_Ball" , "5Rnd_mas_127x99_Stanag" , 1.050, 1, "ASM" ],
|
["12.7x99mm AMAX" , 860, 100, 0.0612, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
|
||||||
["12.7x99mm" , 853, 100, 0.0623, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, "B_127x99_Ball" , "5Rnd_mas_127x99_Stanag" , 0.670, 1, "ASM" ],
|
["12.7x99mm" , 853, 100, 0.0623, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
|
||||||
|
|
||||||
["12.7x54mm" , 300, 100, 0.3394, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x54_Ball" , "10Rnd_127x54_Mag" , 1.050, 1, "ASM" ],
|
["12.7x54mm" , 300, 100, 0.3394, -0.0014000, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
|
||||||
|
|
||||||
[".408 Chey Tac" , 910, 100, 0.0569, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, "B_408_Ball" , "7Rnd_408_Mag" , 0.970, 1, "ASM" ],
|
[".408 Chey Tac" , 910, 100, 0.0569, -0.0004800, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
|
||||||
|
|
||||||
["9.3×64mm" , 870, 100, 0.0619, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "B_93x64_Ball" , "10Rnd_93x64_DMR_05_Mag" , 0.368, 1, "ASM" ],
|
["9.3×64mm" , 870, 100, 0.0619, -0.0007500, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
|
||||||
|
|
||||||
[".338LM 250gr" , 880, 100, 0.0598, -0.0006060, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, "B_338_Ball" , "10Rnd_338_Mag" , 0.322, 7, "ICAO"],
|
[".338LM 250gr" , 880, 100, 0.0598, -0.0006060, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
|
||||||
[".338LM 300gr" , 800, 100, 0.0677, -0.0005350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 19.44, "ACE_338_Ball" , "ACE_10Rnd_338_300gr_HPBT_Mag" , 0.381, 7, "ICAO"],
|
[".338LM 300gr" , 800, 100, 0.0677, -0.0005350, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
|
||||||
[".338LM API526" , 880, 100, 0.0601, -0.0006730, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.39, "ACE_338_Ball_API526" , "ACE_10Rnd_338_API526_Mag" , 0.290, 7, "ICAO"],
|
[".338LM API526" , 880, 100, 0.0601, -0.0006730, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"],
|
||||||
|
|
||||||
[".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 13.31, "ACE_762x67_Ball_Mk248_Mod_0" , "ACE_20Rnd_762x67_Mk248_Mod_0_Mag" , 0.268, 7, "ICAO"],
|
[".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
|
||||||
[".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.26, "ACE_762x67_Ball_Mk248_Mod_1" , "ACE_20Rnd_762x67_Mk248_Mod_1_Mag" , 0.310, 7, "ICAO"],
|
[".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
|
||||||
[".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "ACE_762x67_Ball_Berger_Hybrid_OTM", "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag", 0.368, 7, "ICAO"],
|
[".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
|
||||||
|
|
||||||
["7.62x54mmR" , 800, 100, 0.0692, -0.0010230, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.849, "B_762x54_Ball" , "10Rnd_762x54_Mag" , 0.400, 1, "ICAO"],
|
["7.62x54mmR" , 800, 100, 0.0692, -0.0010230, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
|
||||||
|
|
||||||
["7.62x51mm M80" , 810, 100, 0.0679, -0.0010350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.525, "B_762x51_Ball" , "20Rnd_762x51_Mag" , 0.200, 7, "ICAO"],
|
["7.62x51mm M80" , 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
|
||||||
["7.62x51mm M118LR" , 820, 100, 0.0662, -0.0008525, 3.81, 0, 0.338, 0.338, 120, 0, 0, 11.34, "ACE_762x51_Ball_M118LR" , "ACE_20Rnd_762x51_M118LR_Mag" , 0.243, 7, "ICAO"],
|
["7.62x51mm M118LR" , 820, 100, 0.0662, -0.0008525, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
|
||||||
["7.62x51mm Mk319" , 820, 100, 0.0670, -0.0010300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 8.424, "ACE_762x51_Ball_Mk319_Mod_0" , "ACE_20Rnd_762x51_Mk319_Mod_0_Mag" , 0.377, 1, "ICAO"],
|
["7.62x51mm Mk319" , 820, 100, 0.0670, -0.0010300, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
|
||||||
["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 0.338, 0.338, 120, 0, 0, 12.96, "ACE_762x51_Ball_Subsonic" , "ACE_20Rnd_762x51_Mag_SD" , 0.235, 7, "ICAO"],
|
["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
|
||||||
|
|
||||||
["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.970, "B_65x39_Caseless" , "30Rnd_65x39_caseless_mag" , 0.263, 7, "ICAO"],
|
["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
|
||||||
["6.5x47mm Lapua" , 800, 100, 0.0682, -0.0007710, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.007, "ACE_65x47_Ball_Scenar" , "ACE_30Rnd_65x47_Scenar_mag" , 0.290, 7, "ICAO"],
|
["6.5x47mm Lapua" , 800, 100, 0.0682, -0.0007710, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
|
||||||
|
|
||||||
["5.56x45mm M855" , 870, 100, 0.0626, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "B_556x45_Ball" , "30Rnd_556x45_Stanag" , 0.151, 7, "ASM" ],
|
["5.56x45mm M855" , 870, 100, 0.0626, -0.0012650, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
|
||||||
["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, "ACE_556x45_Ball_Mk262" , "ACE_30Rnd_556x45_Stanag_Mk262_mag" , 0.361, 1, "ASM" ],
|
["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011250, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
|
||||||
["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "ACE_556x45_Ball_Mk318" , "ACE_30Rnd_556x45_Stanag_Mk318_mag" , 0.307, 1, "ASM" ]];
|
["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0011200, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]];
|
||||||
|
|
||||||
|
[] call FUNC(clear_user_data);
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||||
};
|
};
|
||||||
|
|
||||||
[] call FUNC(init);
|
[] call FUNC(init);
|
||||||
|
[] call FUNC(restore_user_data);
|
||||||
|
|
||||||
["RangerfinderData", {_this call FUNC(sord)}] call EFUNC(common,addEventHandler);
|
["RangerfinderData", {_this call FUNC(sord)}] call EFUNC(common,addEventHandler);
|
||||||
|
@ -12,36 +12,55 @@ PREP(calculate_target_speed_assist);
|
|||||||
PREP(can_show);
|
PREP(can_show);
|
||||||
PREP(change_gun);
|
PREP(change_gun);
|
||||||
PREP(change_target_slot);
|
PREP(change_target_slot);
|
||||||
|
PREP(clear_user_data);
|
||||||
PREP(create_dialog);
|
PREP(create_dialog);
|
||||||
|
PREP(cycle_gun_list);
|
||||||
|
PREP(cycle_image_size_units);
|
||||||
|
PREP(cycle_num_ticks_units);
|
||||||
PREP(cycle_range_card_columns);
|
PREP(cycle_range_card_columns);
|
||||||
PREP(cycle_scope_unit);
|
PREP(cycle_scope_unit);
|
||||||
|
PREP(cycle_target_size_units);
|
||||||
PREP(delete_gun);
|
PREP(delete_gun);
|
||||||
PREP(init);
|
PREP(init);
|
||||||
PREP(parse_input);
|
PREP(parse_input);
|
||||||
PREP(reset_relative_click_memory);
|
PREP(reset_relative_click_memory);
|
||||||
|
PREP(restore_atmo_default);
|
||||||
|
PREP(restore_user_data);
|
||||||
PREP(save_gun);
|
PREP(save_gun);
|
||||||
PREP(show_add_new_gun);
|
PREP(show_add_new_gun);
|
||||||
|
PREP(show_atmo_env_data);
|
||||||
|
PREP(show_gun_ammo_data);
|
||||||
PREP(show_gun_list);
|
PREP(show_gun_list);
|
||||||
PREP(show_main_page);
|
PREP(show_main_page);
|
||||||
PREP(show_range_card);
|
PREP(show_range_card);
|
||||||
PREP(show_range_card_setup);
|
PREP(show_range_card_setup);
|
||||||
|
PREP(show_target_data);
|
||||||
PREP(show_target_range_assist);
|
PREP(show_target_range_assist);
|
||||||
PREP(show_target_speed_assist);
|
PREP(show_target_speed_assist);
|
||||||
PREP(show_target_speed_assist_timer);
|
PREP(show_target_speed_assist_timer);
|
||||||
PREP(sord);
|
PREP(sord);
|
||||||
|
PREP(store_user_data);
|
||||||
PREP(target_speed_assist_timer);
|
PREP(target_speed_assist_timer);
|
||||||
|
PREP(toggle_atmo_env_data);
|
||||||
|
PREP(toggle_gun_ammo_data);
|
||||||
PREP(toggle_gun_list);
|
PREP(toggle_gun_list);
|
||||||
PREP(toggle_range_card);
|
PREP(toggle_range_card);
|
||||||
PREP(toggle_range_card_setup);
|
PREP(toggle_range_card_setup);
|
||||||
|
PREP(toggle_target_data);
|
||||||
PREP(toggle_target_range_assist);
|
PREP(toggle_target_range_assist);
|
||||||
PREP(toggle_target_speed_assist);
|
PREP(toggle_target_speed_assist);
|
||||||
PREP(update_atmosphere);
|
PREP(update_atmosphere);
|
||||||
|
PREP(update_atmo_env_data);
|
||||||
|
PREP(update_atmo_selection);
|
||||||
PREP(update_gun);
|
PREP(update_gun);
|
||||||
|
PREP(update_gun_ammo_data);
|
||||||
|
PREP(update_inclination_angle);
|
||||||
PREP(update_range_card);
|
PREP(update_range_card);
|
||||||
PREP(update_relative_click_memory);
|
PREP(update_relative_click_memory);
|
||||||
PREP(update_result);
|
PREP(update_result);
|
||||||
PREP(update_scope_unit);
|
PREP(update_scope_unit);
|
||||||
PREP(update_target);
|
PREP(update_target);
|
||||||
|
PREP(update_target_data);
|
||||||
PREP(update_target_selection);
|
PREP(update_target_selection);
|
||||||
PREP(update_unit_selection);
|
PREP(update_unit_selection);
|
||||||
PREP(update_zero_range);
|
PREP(update_zero_range);
|
||||||
|
@ -20,43 +20,61 @@
|
|||||||
private ["_scopeBaseAngle"];
|
private ["_scopeBaseAngle"];
|
||||||
_scopeBaseAngle = (GVAR(workingMemory) select 3);
|
_scopeBaseAngle = (GVAR(workingMemory) select 3);
|
||||||
|
|
||||||
private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
|
private ["_bulletMass", "_bulletDiameter", "_boreHeight", "_airFriction", "_barrelTwist", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel", "_twistDirection"];
|
||||||
_bulletMass = GVAR(workingMemory) select 12;
|
_bulletMass = GVAR(workingMemory) select 12;
|
||||||
|
_bulletDiameter = GVAR(workingMemory) select 13;
|
||||||
_boreHeight = GVAR(workingMemory) select 5;
|
_boreHeight = GVAR(workingMemory) select 5;
|
||||||
_airFriction = GVAR(workingMemory) select 4;
|
_airFriction = GVAR(workingMemory) select 4;
|
||||||
|
_barrelTwist = GVAR(workingMemory) select 14;
|
||||||
_muzzleVelocity = GVAR(workingMemory) select 1;
|
_muzzleVelocity = GVAR(workingMemory) select 1;
|
||||||
_bc = GVAR(workingMemory) select 15;
|
_bc = GVAR(workingMemory) select 15;
|
||||||
_dragModel = GVAR(workingMemory) select 16;
|
_dragModel = GVAR(workingMemory) select 16;
|
||||||
_atmosphereModel = GVAR(workingMemory) select 17;
|
_atmosphereModel = GVAR(workingMemory) select 17;
|
||||||
|
|
||||||
private ["_temperature", "_barometricPressure", "_relativeHumidity"];
|
_twistDirection = 0;
|
||||||
|
if (_barrelTwist > 0) then {
|
||||||
|
_twistDirection = 1;
|
||||||
|
} else {
|
||||||
|
if (_barrelTwist < 0) then {
|
||||||
|
_twistDirection = -1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_barrelTwist = abs(_barrelTwist);
|
||||||
|
|
||||||
|
private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
|
||||||
|
_altitude = GVAR(altitude);
|
||||||
_temperature = GVAR(temperature);
|
_temperature = GVAR(temperature);
|
||||||
_barometricPressure = GVAR(barometricPressure);
|
_barometricPressure = GVAR(barometricPressure);
|
||||||
_relativeHumidity = GVAR(relativeHumidity);
|
_relativeHumidity = GVAR(relativeHumidity);
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (!GVAR(atmosphereModeTBH)) then {
|
||||||
{
|
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
|
||||||
_temperature = (_temperature - 32) / 1.8;
|
_relativeHumidity = 50;
|
||||||
_barometricPressure = _barometricPressure * 33.8638866667;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
|
private ["_bulletLength", "_stabilityFactor"];
|
||||||
_windSpeed = (GVAR(windSpeed) select GVAR(currentTarget));
|
_bulletLength = 1.8;
|
||||||
|
_stabilityFactor = 1.5;
|
||||||
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
|
||||||
|
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||||
|
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
|
||||||
|
_latitude = GVAR(latitude) select GVAR(currentTarget);
|
||||||
|
_directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
|
||||||
|
_windSpeed1 = (GVAR(windSpeed1) select GVAR(currentTarget));
|
||||||
|
_windSpeed2 = (GVAR(windSpeed2) select GVAR(currentTarget));
|
||||||
_windDirection = (GVAR(windDirection) select GVAR(currentTarget));
|
_windDirection = (GVAR(windDirection) select GVAR(currentTarget));
|
||||||
_inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
|
_inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
|
||||||
_targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
|
_targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
|
||||||
_targetRange = GVAR(rangeCardEndRange);
|
_targetRange = GVAR(rangeCardEndRange);
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
_targetRange = _targetRange / 1.0936133;
|
_targetRange = _targetRange / 1.0936133;
|
||||||
};
|
};
|
||||||
if (GVAR(currentUnit) == 1) then
|
|
||||||
{
|
|
||||||
_windSpeed = _windSpeed / 2.23693629;
|
|
||||||
_targetSpeed = _targetSpeed / 2.23693629;
|
|
||||||
};
|
|
||||||
|
|
||||||
GVAR(rangeCardData) = [];
|
GVAR(rangeCardData) = [];
|
||||||
|
|
||||||
private ["_result"];
|
private ["_result"];
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
||||||
_windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true] call FUNC(calculate_solution);
|
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
|
||||||
|
@ -35,6 +35,6 @@ _barometricPressure = 1013.25;
|
|||||||
_relativeHumidity = 0;
|
_relativeHumidity = 0;
|
||||||
|
|
||||||
private ["_result"];
|
private ["_result"];
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false] call FUNC(calculate_solution);
|
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
|
||||||
|
|
||||||
_scopeBaseAngle + (_result select 0) / 60
|
_scopeBaseAngle + (_result select 0) / 60
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
* 6: barometric pressure <NUMBER>
|
* 6: barometric pressure <NUMBER>
|
||||||
* 7: relative humidity <NUMBER>
|
* 7: relative humidity <NUMBER>
|
||||||
* 8: simulation steps <NUMBER>
|
* 8: simulation steps <NUMBER>
|
||||||
* 9: wind speed <NUMBER>
|
* 9: wind speed <ARRAY>
|
||||||
* 10: wind direction <NUMBER>
|
* 10: wind direction <NUMBER>
|
||||||
* 11: inclination angle <NUMBER>
|
* 11: inclination angle <NUMBER>
|
||||||
* 12: target speed <NUMBER>
|
* 12: target speed <NUMBER>
|
||||||
@ -21,14 +21,20 @@
|
|||||||
* 15: drag model <NUMBER>
|
* 15: drag model <NUMBER>
|
||||||
* 16: atmosphere model <STRING>
|
* 16: atmosphere model <STRING>
|
||||||
* 17: Store range card data? <BOOL>
|
* 17: Store range card data? <BOOL>
|
||||||
|
* 18: Stability factor <NUMBER>
|
||||||
|
* 19: Twist Direction <NUMBER>
|
||||||
|
* 20: Latitude <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* 0: Elevation <NUMBER>
|
* 0: Elevation (MOA) <NUMBER>
|
||||||
* 1: Windage <NUMBER>
|
* 1: Windage (MOA) <ARRAY>
|
||||||
* 2: Lead <NUMBER>
|
* 2: Lead (MOA) <NUMBER>
|
||||||
* 3: Time of fligth <NUMBER>
|
* 3: Time of fligth (SECONDS) <NUMBER>
|
||||||
* 4: Remaining velocity <NUMBER>
|
* 4: Remaining velocity (m/s) <NUMBER>
|
||||||
* 4: Remaining kinetic energy <NUMBER>
|
* 5: Remaining kinetic energy (ft·lb) <NUMBER>
|
||||||
|
* 6: Vertical coriolis drift (MOA) <NUMBER>
|
||||||
|
* 7: Horizontal coriolis drift (MOA) <NUMBER>
|
||||||
|
* 8: Spin drift (MOA) <NUMBER>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_calculate_target_range_assist
|
* call ace_atragmx_calculate_target_range_assist
|
||||||
@ -37,7 +43,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData"];
|
private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
|
||||||
_scopeBaseAngle = _this select 0;
|
_scopeBaseAngle = _this select 0;
|
||||||
_bulletMass = _this select 1;
|
_bulletMass = _this select 1;
|
||||||
_boreHeight = _this select 2;
|
_boreHeight = _this select 2;
|
||||||
@ -47,7 +53,8 @@ _temperature = _this select 5;
|
|||||||
_barometricPressure = _this select 6;
|
_barometricPressure = _this select 6;
|
||||||
_relativeHumidity = _this select 7;
|
_relativeHumidity = _this select 7;
|
||||||
_simSteps = _this select 8;
|
_simSteps = _this select 8;
|
||||||
_windSpeed = _this select 9;
|
_windSpeed1 = (_this select 9) select 0;
|
||||||
|
_windSpeed2 = (_this select 9) select 1;
|
||||||
_windDirection = _this select 10;
|
_windDirection = _this select 10;
|
||||||
_inclinationAngle = _this select 11;
|
_inclinationAngle = _this select 11;
|
||||||
_targetSpeed = _this select 12;
|
_targetSpeed = _this select 12;
|
||||||
@ -56,6 +63,10 @@ _bc = _this select 14;
|
|||||||
_dragModel = _this select 15;
|
_dragModel = _this select 15;
|
||||||
_atmosphereModel = _this select 16;
|
_atmosphereModel = _this select 16;
|
||||||
_storeRangeCardData = _this select 17;
|
_storeRangeCardData = _this select 17;
|
||||||
|
_stabilityFactor = _this select 18;
|
||||||
|
_twistDirection = _this select 19;
|
||||||
|
_latitude = _this select 20;
|
||||||
|
_directionOfFire = _this select 21;
|
||||||
|
|
||||||
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
|
||||||
_bulletPos = [0, 0, 0];
|
_bulletPos = [0, 0, 0];
|
||||||
@ -65,31 +76,51 @@ _bulletSpeed = 0;
|
|||||||
_gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665];
|
_gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665];
|
||||||
_deltaT = 1 / _simSteps;
|
_deltaT = 1 / _simSteps;
|
||||||
|
|
||||||
private ["_elevation", "_windage", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy"];
|
private ["_elevation", "_windage1", "_windage2", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
|
||||||
_elevation = 0;
|
_elevation = 0;
|
||||||
_windage = 0;
|
_windage1 = 0;
|
||||||
|
_windage2 = 0;
|
||||||
_lead = 0;
|
_lead = 0;
|
||||||
_TOF = 0;
|
_TOF = 0;
|
||||||
_trueVelocity = [0, 0, 0];
|
_trueVelocity = [0, 0, 0];
|
||||||
_trueSpeed = 0;
|
_trueSpeed = 0;
|
||||||
|
_verticalCoriolis = 0;
|
||||||
|
_verticalDeflection = 0;
|
||||||
|
_horizontalCoriolis = 0;
|
||||||
|
_horizontalDeflection = 0;
|
||||||
|
_spinDrift = 0;
|
||||||
|
_spinDeflection = 0;
|
||||||
|
|
||||||
private ["_n", "_range", "_rangeFactor"];
|
private ["_n", "_range", "_rangeFactor"];
|
||||||
_n = 0;
|
_n = 0;
|
||||||
_range = 0;
|
_range = 0;
|
||||||
_rangeFactor = 1;
|
_rangeFactor = 1;
|
||||||
if (_storeRangeCardData) then {
|
if (_storeRangeCardData) then {
|
||||||
if (GVAR(currentUnit) != 2) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
_rangeFactor = 1.0936133;
|
_rangeFactor = 1.0936133;
|
||||||
};
|
};
|
||||||
GVAR(rangeCardData) = [];
|
GVAR(rangeCardData) = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_wind"];
|
private ["_wind1", "_wind2", "_windDrift"];
|
||||||
_wind = [cos(270 - _windDirection * 30) * _windSpeed, sin(270 - _windDirection * 30) * _windSpeed, 0];
|
_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0];
|
||||||
|
_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
|
||||||
|
_windDrift = 0;
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||||
_bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
|
_bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private ["_speedTotal", "_stepsTotal", "_speedAverage"];
|
||||||
|
_speedTotal = 0;
|
||||||
|
_stepsTotal = 0;
|
||||||
|
_speedAverage = 0;
|
||||||
|
|
||||||
|
private ["_eoetvoesMultiplier"];
|
||||||
|
_eoetvoesMultiplier = 0;
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||||
|
_eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire);
|
||||||
|
};
|
||||||
|
|
||||||
_TOF = 0;
|
_TOF = 0;
|
||||||
|
|
||||||
_bulletPos set [0, 0];
|
_bulletPos set [0, 0];
|
||||||
@ -103,12 +134,15 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
|
|||||||
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||||
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
_bulletSpeed = vectorMagnitude _bulletVelocity;
|
||||||
|
|
||||||
_trueVelocity = _bulletVelocity vectorDiff _wind;
|
_speedTotal = _speedTotal + _bulletSpeed;
|
||||||
|
_stepsTotal = _stepsTotal + 1;
|
||||||
|
_speedAverage = (_speedTotal / _stepsTotal);
|
||||||
|
|
||||||
|
_trueVelocity = _bulletVelocity vectorDiff _wind1;
|
||||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||||
|
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false]) then {
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false]) then {
|
||||||
private ["_drag"];
|
|
||||||
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
|
||||||
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
|
||||||
} else {
|
} else {
|
||||||
@ -132,7 +166,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
|
if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
|
||||||
if ((_bulletPos select 1) > 0) then {
|
if ((_bulletPos select 1) > 0) then {
|
||||||
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
||||||
_windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
_windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
||||||
|
_windDrift = (_wind2 select 0) * (_TOF - (_range / _rangeFactor) / _muzzleVelocity);
|
||||||
|
_windage2 = - atan(_windDrift / (_bulletPos select 1));
|
||||||
};
|
};
|
||||||
if (_range != 0) then {
|
if (_range != 0) then {
|
||||||
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range);
|
_lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range);
|
||||||
@ -140,7 +176,27 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
||||||
_kineticEnergy = _kineticEnergy * 0.737562149;
|
_kineticEnergy = _kineticEnergy * 0.737562149;
|
||||||
|
|
||||||
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]];
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
|
||||||
|
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||||
|
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||||
|
_windage1 = _windage1 + _horizontalCoriolis;
|
||||||
|
_windage2 = _windage2 + _horizontalCoriolis;
|
||||||
|
};
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||||
|
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||||
|
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||||
|
_elevation = _elevation + _verticalCoriolis;
|
||||||
|
};
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
|
||||||
|
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||||
|
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||||
|
_windage1 = _windage1 + _spinDrift;
|
||||||
|
_windage2 = _windage2 + _spinDrift;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
|
||||||
_n = _n + 1;
|
_n = _n + 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -148,7 +204,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
|
|
||||||
if ((_bulletPos select 1) > 0) then {
|
if ((_bulletPos select 1) > 0) then {
|
||||||
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
_elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
|
||||||
_windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
_windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
|
||||||
|
_windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity);
|
||||||
|
_windage2 = - atan(_windDrift / (_bulletPos select 1));
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_targetRange != 0) then {
|
if (_targetRange != 0) then {
|
||||||
@ -158,4 +216,24 @@ if (_targetRange != 0) then {
|
|||||||
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
_kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
|
||||||
_kineticEnergy = _kineticEnergy * 0.737562149;
|
_kineticEnergy = _kineticEnergy * 0.737562149;
|
||||||
|
|
||||||
[_elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
|
||||||
|
_horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
|
||||||
|
_horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
|
||||||
|
_windage1 = _windage1 + _horizontalCoriolis;
|
||||||
|
_windage2 = _windage2 + _horizontalCoriolis;
|
||||||
|
};
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
|
||||||
|
_verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
|
||||||
|
_verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
|
||||||
|
_elevation = _elevation + _verticalCoriolis;
|
||||||
|
};
|
||||||
|
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
|
||||||
|
_spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
|
||||||
|
_spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
|
||||||
|
_windage1 = _windage1 + _spinDrift;
|
||||||
|
_windage2 = _windage2 + _spinDrift;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60]
|
||||||
|
@ -46,7 +46,7 @@ switch (GVAR(rangeAssistImageSizeUnit)) do {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
_estRange = parseNumber(ctrlText 7013);
|
_estRange = parseNumber(ctrlText 7013);
|
||||||
if (GVAR(currentUnit) != 2) then {
|
if (GVAR(currentUnit) == 1) then {
|
||||||
_estRange = _estRange / 1.0936133;
|
_estRange = _estRange / 1.0936133;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,47 +20,63 @@
|
|||||||
private ["_scopeBaseAngle"];
|
private ["_scopeBaseAngle"];
|
||||||
_scopeBaseAngle = (GVAR(workingMemory) select 3);
|
_scopeBaseAngle = (GVAR(workingMemory) select 3);
|
||||||
|
|
||||||
private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
|
private ["_bulletMass", "_bulletDiameter", "_boreHeight", "_airFriction", "_barrelTwist", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel", "_twistDirection"];
|
||||||
_bulletMass = GVAR(workingMemory) select 12;
|
_bulletMass = GVAR(workingMemory) select 12;
|
||||||
|
_bulletDiameter = GVAR(workingMemory) select 13;
|
||||||
_boreHeight = GVAR(workingMemory) select 5;
|
_boreHeight = GVAR(workingMemory) select 5;
|
||||||
_airFriction = GVAR(workingMemory) select 4;
|
_airFriction = GVAR(workingMemory) select 4;
|
||||||
|
_barrelTwist = GVAR(workingMemory) select 14;
|
||||||
_muzzleVelocity = GVAR(workingMemory) select 1;
|
_muzzleVelocity = GVAR(workingMemory) select 1;
|
||||||
_bc = GVAR(workingMemory) select 15;
|
_bc = GVAR(workingMemory) select 15;
|
||||||
_dragModel = GVAR(workingMemory) select 16;
|
_dragModel = GVAR(workingMemory) select 16;
|
||||||
_atmosphereModel = GVAR(workingMemory) select 17;
|
_atmosphereModel = GVAR(workingMemory) select 17;
|
||||||
|
|
||||||
private ["_temperature", "_barometricPressure", "_relativeHumidity"];
|
_twistDirection = 0;
|
||||||
|
if (_barrelTwist > 0) then {
|
||||||
|
_twistDirection = 1;
|
||||||
|
} else {
|
||||||
|
if (_barrelTwist < 0) then {
|
||||||
|
_twistDirection = -1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
_barrelTwist = abs(_barrelTwist);
|
||||||
|
|
||||||
|
private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
|
||||||
|
_altitude = GVAR(altitude);
|
||||||
_temperature = GVAR(temperature);
|
_temperature = GVAR(temperature);
|
||||||
_barometricPressure = GVAR(barometricPressure);
|
_barometricPressure = GVAR(barometricPressure);
|
||||||
_relativeHumidity = GVAR(relativeHumidity);
|
_relativeHumidity = GVAR(relativeHumidity);
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (!GVAR(atmosphereModeTBH)) then {
|
||||||
{
|
_barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
|
||||||
_temperature = (_temperature - 32) / 1.8;
|
_relativeHumidity = 50;
|
||||||
_barometricPressure = _barometricPressure * 33.8638866667;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
|
private ["_bulletLength", "_stabilityFactor"];
|
||||||
_windSpeed = (GVAR(windSpeed) select GVAR(currentTarget));
|
_bulletLength = 1.8;
|
||||||
_windDirection = (GVAR(windDirection) select GVAR(currentTarget));
|
_stabilityFactor = 1.5;
|
||||||
_inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
|
||||||
_targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
|
if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
|
||||||
_targetRange = (GVAR(targetRange) select GVAR(currentTarget));
|
_stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
|
||||||
if (GVAR(currentUnit) != 2) then
|
};
|
||||||
{
|
|
||||||
_targetRange = _targetRange / 1.0936133;
|
|
||||||
};
|
|
||||||
if (GVAR(currentUnit) == 1) then
|
|
||||||
{
|
|
||||||
_windSpeed = _windSpeed / 2.23693629;
|
|
||||||
_targetSpeed = _targetSpeed / 2.23693629;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
|
||||||
|
_latitude = GVAR(latitude) select GVAR(currentTarget);
|
||||||
|
_directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
|
||||||
|
_windSpeed1 = GVAR(windSpeed1) select GVAR(currentTarget);
|
||||||
|
_windSpeed2 = GVAR(windSpeed2) select GVAR(currentTarget);
|
||||||
|
_windDirection = GVAR(windDirection) select GVAR(currentTarget);
|
||||||
|
_inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
|
||||||
|
_targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
|
||||||
|
_targetRange = GVAR(targetRange) select GVAR(currentTarget);
|
||||||
|
|
||||||
private ["_result"];
|
private ["_result"];
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
|
||||||
_windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution);
|
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
|
||||||
|
|
||||||
GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
|
GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
|
||||||
GVAR(windageOutput) set [GVAR(currentTarget), _result select 1];
|
GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
|
||||||
|
GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1];
|
||||||
GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
|
GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
|
||||||
GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
|
GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
|
||||||
GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
|
GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
|
||||||
|
@ -22,34 +22,27 @@ _numTicks = parseNumber(ctrlText 8005);
|
|||||||
_timeSecs = parseNumber(ctrlText 8006);
|
_timeSecs = parseNumber(ctrlText 8006);
|
||||||
_estSpeed = 0;
|
_estSpeed = 0;
|
||||||
|
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
_targetRange = _targetRange / 1.0936133;
|
_targetRange = _targetRange / 1.0936133;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (GVAR(rangeAssistImageSizeUnit)) do
|
switch (GVAR(rangeAssistImageSizeUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
_numTicks = _numTicks / 6400 * 360;
|
_numTicks = _numTicks / 6400 * 360;
|
||||||
};
|
};
|
||||||
case 1:
|
case 1: {
|
||||||
{
|
|
||||||
_numTicks = _numTicks / 60;
|
_numTicks = _numTicks / 60;
|
||||||
};
|
};
|
||||||
case 2:
|
case 2: {
|
||||||
{
|
|
||||||
_numTicks = _numTicks / 60 / 1.047;
|
_numTicks = _numTicks / 60 / 1.047;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
if (_timeSecs > 0) then
|
if (_timeSecs > 0) then {
|
||||||
{
|
|
||||||
_estSpeed = tan(_numTicks) * _targetRange / _timeSecs;
|
_estSpeed = tan(_numTicks) * _targetRange / _timeSecs;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (GVAR(currentUnit) != 2) then {
|
||||||
{
|
|
||||||
_estSpeed = _estSpeed * 2.23693629;
|
_estSpeed = _estSpeed * 2.23693629;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* gunID <number>
|
* gunID <number>
|
||||||
|
* restore workingMemory from gunList <BOOL>
|
||||||
|
* update display <BOOL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
@ -15,24 +17,38 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (_this < 0 || _this > (count GVAR(gunList)) - 1) exitWith {};
|
private ["_gunID", "_restoreMemory", "_updateDisplay"];
|
||||||
|
_gunID = _this select 0;
|
||||||
|
_restoreMemory = _this select 1;
|
||||||
|
_updateDisplay = _this select 2;
|
||||||
|
|
||||||
GVAR(workingMemory) = +(GVAR(gunList) select _this);
|
if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
|
||||||
GVAR(currentGun) = _this;
|
|
||||||
|
|
||||||
lbSetCurSel [6000, GVAR(currentGun)];
|
if (_restoreMemory) then {
|
||||||
|
GVAR(workingMemory) = +(GVAR(gunList) select _gunID);
|
||||||
|
};
|
||||||
|
GVAR(currentGun) = _gunID;
|
||||||
|
|
||||||
if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then
|
if (_updateDisplay) then {
|
||||||
{
|
lbSetCurSel [6000, GVAR(currentGun)];
|
||||||
GVAR(currentScopeUnit) = GVAR(workingMemory) select 6;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
[] call FUNC(update_gun);
|
GVAR(currentScopeUnit) = 0 max (GVAR(workingMemory) select 6) min 3;
|
||||||
|
GVAR(currentScopeClickUnit) = 0 max (GVAR(workingMemory) select 7) min 2;
|
||||||
|
GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10;
|
||||||
|
|
||||||
|
if (_updateDisplay) then {
|
||||||
|
[] call FUNC(update_gun);
|
||||||
|
[] call FUNC(update_gun_ammo_data);
|
||||||
|
};
|
||||||
|
|
||||||
GVAR(elevationOutput) set [GVAR(currentTarget), 0];
|
GVAR(elevationOutput) set [GVAR(currentTarget), 0];
|
||||||
GVAR(windageOutput) set [GVAR(currentTarget), 0];
|
GVAR(windage1Output) set [GVAR(currentTarget), 0];
|
||||||
|
GVAR(windage2Output) set [GVAR(currentTarget), 0];
|
||||||
GVAR(leadOutput) set [GVAR(currentTarget), 0];
|
GVAR(leadOutput) set [GVAR(currentTarget), 0];
|
||||||
GVAR(tofOutput) set [GVAR(currentTarget), 0];
|
GVAR(tofOutput) set [GVAR(currentTarget), 0];
|
||||||
GVAR(velocityOutput) set [GVAR(currentTarget), 0];
|
GVAR(velocityOutput) set [GVAR(currentTarget), 0];
|
||||||
|
|
||||||
[] call FUNC(calculate_target_solution);
|
if (_updateDisplay) then {
|
||||||
|
[] call FUNC(calculate_target_solution);
|
||||||
|
};
|
||||||
|
@ -23,4 +23,4 @@ call FUNC(parse_input);
|
|||||||
GVAR(currentTarget) = _target;
|
GVAR(currentTarget) = _target;
|
||||||
call FUNC(update_target_selection);
|
call FUNC(update_target_selection);
|
||||||
|
|
||||||
call FUNC(calculate_target_solution);
|
[] call FUNC(calculate_target_solution);
|
||||||
|
44
addons/atragmx/functions/fnc_clear_user_data.sqf
Normal file
44
addons/atragmx/functions/fnc_clear_user_data.sqf
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Removes all user data from the profileNamespace
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_clear_user_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_gunList", nil];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentUnit", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentGun", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentTarget", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentScopeUnit", nil];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_atmosphereModeTBH", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_altitude", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_temperature", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_latitude", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windSpeed1", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windSpeed2", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windDirection", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_targetSpeed", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_targetRange", nil];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardEndRange", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardIncrement", nil];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardCurrentColumn", nil];
|
@ -26,6 +26,8 @@ call FUNC(update_target_selection);
|
|||||||
GVAR(showMainPage) call FUNC(show_main_page);
|
GVAR(showMainPage) call FUNC(show_main_page);
|
||||||
|
|
||||||
GVAR(showAddNewGun) call FUNC(show_add_new_gun);
|
GVAR(showAddNewGun) call FUNC(show_add_new_gun);
|
||||||
|
GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data);
|
||||||
|
GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data);
|
||||||
GVAR(showGunList) call FUNC(show_gun_list);
|
GVAR(showGunList) call FUNC(show_gun_list);
|
||||||
GVAR(showRangeCard) call FUNC(show_range_card);
|
GVAR(showRangeCard) call FUNC(show_range_card);
|
||||||
if (GVAR(showRangeCard)) then {
|
if (GVAR(showRangeCard)) then {
|
||||||
@ -33,10 +35,13 @@ if (GVAR(showRangeCard)) then {
|
|||||||
[] call FUNC(update_range_card);
|
[] call FUNC(update_range_card);
|
||||||
};
|
};
|
||||||
GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
|
GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
|
||||||
|
GVAR(showTargetData) call FUNC(show_target_data);
|
||||||
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
|
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
|
||||||
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
|
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
|
||||||
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
|
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
|
||||||
|
|
||||||
|
[GVAR(currentGun), false, true] call FUNC(change_gun);
|
||||||
|
|
||||||
{
|
{
|
||||||
lbAdd [6000, _x select 0];
|
lbAdd [6000, _x select 0];
|
||||||
} forEach GVAR(gunList);
|
} forEach GVAR(gunList);
|
||||||
|
20
addons/atragmx/functions/fnc_cycle_gun_list.sqf
Normal file
20
addons/atragmx/functions/fnc_cycle_gun_list.sqf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Cycles through the gun list
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* step <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_cycle_scope_unit
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!(GVAR(showMainPage) || GVAR(showGunList))) exitWith {};
|
||||||
|
|
||||||
|
[(GVAR(currentGun) + (count GVAR(gunList)) + _this) % (count GVAR(gunList)), true, true] call FUNC(change_gun);
|
19
addons/atragmx/functions/fnc_cycle_image_size_units.sqf
Normal file
19
addons/atragmx/functions/fnc_cycle_image_size_units.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Cycles through the image size units
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* step <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_cycle_image_size_units
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(rangeAssistImageSizeUnit) = (GVAR(rangeAssistImageSizeUnit) + 1) % (count GVAR(rangeAssistImageSizeUnits));
|
||||||
|
ctrlSetText [7015, GVAR(rangeAssistImageSizeUnits) select GVAR(rangeAssistImageSizeUnit)];
|
20
addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf
Normal file
20
addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Cycles through the num ticks units
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* step <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_cycle_num_ticks_units
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(speedAssistNumTicksUnit) = (GVAR(speedAssistNumTicksUnit) + 1) % (count GVAR(speedAssistNumTicksUnits));
|
||||||
|
ctrlSetText [8009, GVAR(speedAssistNumTicksUnits) select GVAR(speedAssistNumTicksUnit)];
|
||||||
|
call FUNC(calculate_target_speed_assist);
|
19
addons/atragmx/functions/fnc_cycle_target_size_units.sqf
Normal file
19
addons/atragmx/functions/fnc_cycle_target_size_units.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Cycles through the target size units
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* step <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_cycle_target_size_units
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(rangeAssistTargetSizeUnit) = (GVAR(rangeAssistTargetSizeUnit) + 1) % (count GVAR(rangeAssistTargetSizeUnits));
|
||||||
|
ctrlSetText [7014, GVAR(rangeAssistTargetSizeUnits) select GVAR(rangeAssistTargetSizeUnit)];
|
@ -20,10 +20,8 @@ _index = lbCurSel 6000;
|
|||||||
|
|
||||||
if (_index == -1) exitWith {};
|
if (_index == -1) exitWith {};
|
||||||
|
|
||||||
for "_i" from 0 to (count GVAR(currentGun)) - 1 do {
|
if (GVAR(currentGun) > _index) then {
|
||||||
if ((GVAR(currentGun) select _i) > _index) then {
|
GVAR(currentGun) = GVAR(currentGun) - 1;
|
||||||
GVAR(currentGun) set [_i, (GVAR(currentGun) select _i) - 1];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
GVAR(gunList) set [_index, 0];
|
GVAR(gunList) set [_index, 0];
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_init
|
* call ace_atragmx_fnc_init
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
@ -18,6 +18,7 @@
|
|||||||
GVAR(workingMemory) = +(GVAR(gunList) select 0);
|
GVAR(workingMemory) = +(GVAR(gunList) select 0);
|
||||||
|
|
||||||
GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"];
|
GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"];
|
||||||
|
GVAR(scopeClickUnits) = ["TMOA", "SMOA", "MILs"];
|
||||||
|
|
||||||
GVAR(rangeCardStartRange) = 200;
|
GVAR(rangeCardStartRange) = 200;
|
||||||
GVAR(rangeCardEndRange) = 2000;
|
GVAR(rangeCardEndRange) = 2000;
|
||||||
@ -26,7 +27,7 @@ GVAR(rangeCardLastColumns) = ["Lead", "RemV", "RemE", "TmFlt"];
|
|||||||
GVAR(rangeCardCurrentColumn) = 3;
|
GVAR(rangeCardCurrentColumn) = 3;
|
||||||
GVAR(rangeCardData) = [];
|
GVAR(rangeCardData) = [];
|
||||||
|
|
||||||
GVAR(GVAR(rangeAssistTargetSizeUnit)s) = ["in", "ft", "cm", "m"];
|
GVAR(rangeAssistTargetSizeUnits) = ["in", "ft", "cm", "m"];
|
||||||
GVAR(rangeAssistTargetSizeUnit) = 2;
|
GVAR(rangeAssistTargetSizeUnit) = 2;
|
||||||
GVAR(rangeAssistImageSizeUnits) = ["MIL", "TMOA", "IOA"];
|
GVAR(rangeAssistImageSizeUnits) = ["MIL", "TMOA", "IOA"];
|
||||||
GVAR(rangeAssistImageSizeUnit) = 0;
|
GVAR(rangeAssistImageSizeUnit) = 0;
|
||||||
@ -40,29 +41,40 @@ GVAR(currentUnit) = 2;
|
|||||||
GVAR(currentGun) = 0;
|
GVAR(currentGun) = 0;
|
||||||
GVAR(currentTarget) = 0;
|
GVAR(currentTarget) = 0;
|
||||||
GVAR(currentScopeUnit) = 0;
|
GVAR(currentScopeUnit) = 0;
|
||||||
|
GVAR(currentScopeClickUnit) = 2;
|
||||||
|
GVAR(currentScopeClickNumber) = 10;
|
||||||
|
|
||||||
|
GVAR(atmosphereModeTBH) = true;
|
||||||
|
GVAR(altitude) = 0;
|
||||||
GVAR(temperature) = 15;
|
GVAR(temperature) = 15;
|
||||||
GVAR(barometricPressure) = 1013.25;
|
GVAR(barometricPressure) = 1013.25;
|
||||||
GVAR(relativeHumidity) = 0.5;
|
GVAR(relativeHumidity) = 0.5;
|
||||||
|
|
||||||
GVAR(windSpeed) = [0, 0, 0, 0];
|
GVAR(latitude) = [38, 38, 38, 38];
|
||||||
|
GVAR(directionOfFire) = [0, 0, 0, 0];
|
||||||
|
GVAR(windSpeed1) = [0, 0, 0, 0];
|
||||||
|
GVAR(windSpeed2) = [0, 0, 0, 0];
|
||||||
GVAR(windDirection) = [12, 12, 12, 12];
|
GVAR(windDirection) = [12, 12, 12, 12];
|
||||||
GVAR(inclinationAngle) = [0, 0, 0, 0];
|
GVAR(inclinationAngle) = [0, 0, 0, 0];
|
||||||
GVAR(targetSpeed) = [0, 0, 0, 0];
|
GVAR(targetSpeed) = [0, 0, 0, 0];
|
||||||
GVAR(targetRange) = [0, 0, 0, 0];
|
GVAR(targetRange) = [0, 0, 0, 0];
|
||||||
|
|
||||||
|
GVAR(showWind2) = false;
|
||||||
GVAR(elevationOutput) = [0, 0, 0, 0];
|
GVAR(elevationOutput) = [0, 0, 0, 0];
|
||||||
GVAR(windageOutput) = [0, 0, 0, 0];
|
GVAR(windage1Output) = [0, 0, 0, 0];
|
||||||
|
GVAR(windage2Output) = [0, 0, 0, 0];
|
||||||
GVAR(leadOutput) = [0, 0, 0, 0];
|
GVAR(leadOutput) = [0, 0, 0, 0];
|
||||||
GVAR(tofOutput) = [0, 0, 0, 0];
|
GVAR(tofOutput) = [0, 0, 0, 0];
|
||||||
GVAR(velocityOutput) = [0, 0, 0, 0];
|
GVAR(velocityOutput) = [0, 0, 0, 0];
|
||||||
|
|
||||||
GVAR(showMainPage) = true;
|
GVAR(showMainPage) = true;
|
||||||
GVAR(showAddNewGun) = false;
|
GVAR(showAddNewGun) = false;
|
||||||
|
GVAR(showAtmoEnvData) = false;
|
||||||
|
GVAR(showGunAmmoData) = false;
|
||||||
GVAR(showGunList) = false;
|
GVAR(showGunList) = false;
|
||||||
GVAR(showRangeCard) = false;
|
GVAR(showRangeCard) = false;
|
||||||
GVAR(showRangeCardSetup) = false;
|
GVAR(showRangeCardSetup) = false;
|
||||||
|
GVAR(showTargetData) = false;
|
||||||
GVAR(showTargetRangeAssist) = false;
|
GVAR(showTargetRangeAssist) = false;
|
||||||
GVAR(showTargetSpeedAssist) = false;
|
GVAR(showTargetSpeedAssist) = false;
|
||||||
GVAR(showTargetSpeedAssistTimer) = false;
|
GVAR(showTargetSpeedAssistTimer) = false;
|
||||||
|
|
||||||
|
@ -15,64 +15,95 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
GVAR(temperature) = parseNumber(ctrlText 200);
|
GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
|
||||||
GVAR(barometricPressure) = 0 max parseNumber(ctrlText 210);
|
GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
|
||||||
GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 220) min 100) / 100;
|
GVAR(barometricPressure) = 10 max parseNumber(ctrlText 130050) min 1350;
|
||||||
|
GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 130060) min 100) / 100;
|
||||||
GVAR(windSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 300)) min 50];
|
if (GVAR(currentUnit) != 2) then {
|
||||||
GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 310)) min 12];
|
GVAR(altitude) = GVAR(altitude) * 0.3048;
|
||||||
GVAR(inclinationAngle) set [GVAR(currentTarget), -60 max parseNumber(ctrlText 320) min 60];
|
GVAR(temperature) = (GVAR(temperature) - 32) / 1.8;
|
||||||
GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 330)) min 50];
|
GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
|
||||||
GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 340)) min 4000];
|
|
||||||
|
|
||||||
private ["_boreHeight", "_bulletMass", "_airFriction", "_muzzleVelocity"];
|
|
||||||
_boreHeight = parseNumber(ctrlText 100);
|
|
||||||
_bulletMass = parseNumber(ctrlText 110);
|
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
|
||||||
_airFriction = 0.1 max parseNumber(ctrlText 120) min 2;
|
|
||||||
} else {
|
|
||||||
_airFriction = parseNumber(ctrlText 120) / -1000;
|
|
||||||
};
|
};
|
||||||
_muzzleVelocity = parseNumber(ctrlText 130);
|
|
||||||
if (GVAR(currentUnit) == 1) then
|
private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
|
||||||
{
|
GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90];
|
||||||
|
GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359];
|
||||||
|
GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020)) min 50];
|
||||||
|
GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
|
||||||
|
GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
|
||||||
|
_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
|
||||||
|
_inclinationAngleDegree = -60 max round(parseNumber(ctrlText 140040)) min 60;
|
||||||
|
if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
|
||||||
|
GVAR(inclinationAngle) set [GVAR(currentTarget), _inclinationAngleDegree];
|
||||||
|
} else {
|
||||||
|
if (_inclinationAngleCosine != Round(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100) then {
|
||||||
|
GVAR(inclinationAngle) set [GVAR(currentTarget), round(acos(_inclinationAngleCosine))];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
GVAR(targetSpeed) set [GVAR(currentTarget), -50 max abs(parseNumber(ctrlText 140050)) min 50];
|
||||||
|
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];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144];
|
||||||
|
};
|
||||||
|
|
||||||
|
private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
|
||||||
|
_boreHeight = parseNumber(ctrlText 120000);
|
||||||
|
_bulletMass = parseNumber(ctrlText 120010);
|
||||||
|
_bulletDiameter = parseNumber(ctrlText 120020);
|
||||||
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||||
|
_airFriction = 0.1 max parseNumber(ctrlText 120030) min 2;
|
||||||
|
} else {
|
||||||
|
_airFriction = parseNumber(ctrlText 120030) / -1000;
|
||||||
|
};
|
||||||
|
_rifleTwist = parseNumber(ctrlText 120040);
|
||||||
|
_muzzleVelocity = parseNumber(ctrlText 120050);
|
||||||
|
_zeroRange = parseNumber (ctrlText 120060);
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
_boreHeight = _boreHeight * 2.54;
|
_boreHeight = _boreHeight * 2.54;
|
||||||
_bulletMass = _bulletMass * 0.06479891;
|
_bulletMass = _bulletMass * 0.06479891;
|
||||||
|
_bulletDiameter = _bulletDiameter * 10 * 2.54;
|
||||||
|
_rifleTwist = _rifleTwist * 2.54;
|
||||||
_muzzleVelocity = _muzzleVelocity / 3.2808399;
|
_muzzleVelocity = _muzzleVelocity / 3.2808399;
|
||||||
};
|
};
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
_zeroRange = _zeroRange / 1.0936133;
|
||||||
|
};
|
||||||
_boreHeight = 0.1 max _boreHeight min 10;
|
_boreHeight = 0.1 max _boreHeight min 10;
|
||||||
_bulletMass = 1 max _bulletMass min 100;
|
_bulletMass = 1 max _bulletMass min 100;
|
||||||
|
_bulletDiameter = 1 max _bulletDiameter min 25;
|
||||||
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
_muzzleVelocity = 100 max _muzzleVelocity min 1400;
|
||||||
|
_zeroRange = 0 max _zeroRange min 1000;
|
||||||
GVAR(workingMemory) set [5, _boreHeight];
|
GVAR(workingMemory) set [5, _boreHeight];
|
||||||
GVAR(workingMemory) set [12, _bulletMass];
|
GVAR(workingMemory) set [12, _bulletMass];
|
||||||
|
GVAR(workingMemory) set [13, _bulletDiameter];
|
||||||
|
GVAR(workingMemory) set [14, _rifleTwist];
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||||
GVAR(workingMemory) set [15, _airFriction];
|
GVAR(workingMemory) set [15, _airFriction];
|
||||||
} else {
|
} else {
|
||||||
GVAR(workingMemory) set [4, _airFriction];
|
GVAR(workingMemory) set [4, _airFriction];
|
||||||
};
|
};
|
||||||
GVAR(workingMemory) set [1, _muzzleVelocity];
|
GVAR(workingMemory) set [1, _muzzleVelocity];
|
||||||
|
GVAR(workingMemory) set [2, _zeroRange];
|
||||||
|
|
||||||
private ["_elevationCur", "_windageCur", "_elevationScopeStep", "_windageScopeStep"];
|
private ["_elevationCur", "_windageCur", "_elevationScopeStep", "_windageScopeStep"];
|
||||||
_elevationCur = parseNumber(ctrlText 402);
|
_elevationCur = parseNumber(ctrlText 402);
|
||||||
_windageCur = parseNumber(ctrlText 412);
|
_windageCur = parseNumber(ctrlText 412);
|
||||||
|
|
||||||
switch (GVAR(currentScopeUnit)) do
|
switch (GVAR(currentScopeUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
_elevationCur = _elevationCur * 3.38;
|
_elevationCur = _elevationCur * 3.38;
|
||||||
_windageCur = _windageCur * 3.38;
|
_windageCur = _windageCur * 3.38;
|
||||||
};
|
};
|
||||||
|
case 2: {
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
_elevationCur = _elevationCur / 1.047;
|
_elevationCur = _elevationCur / 1.047;
|
||||||
_windageCur = _windageCur / 1.047;
|
_windageCur = _windageCur / 1.047;
|
||||||
};
|
};
|
||||||
|
case 3: {
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
||||||
_windageScopeStep = (GVAR(workingMemory) select 8);
|
_windageScopeStep = (GVAR(workingMemory) select 8);
|
||||||
|
|
||||||
@ -85,5 +116,10 @@ GVAR(workingMemory) set [10, _elevationCur];
|
|||||||
GVAR(workingMemory) set [11, _windageCur];
|
GVAR(workingMemory) set [11, _windageCur];
|
||||||
|
|
||||||
[] call FUNC(update_gun);
|
[] call FUNC(update_gun);
|
||||||
|
[] call FUNC(update_gun_ammo_data);
|
||||||
[] call FUNC(update_atmosphere);
|
[] call FUNC(update_atmosphere);
|
||||||
|
[] call FUNC(update_atmo_env_data);
|
||||||
[] call FUNC(update_target);
|
[] call FUNC(update_target);
|
||||||
|
[] call FUNC(update_target_data);
|
||||||
|
|
||||||
|
[] call FUNC(store_user_data);
|
||||||
|
25
addons/atragmx/functions/fnc_restore_atmo_default.sqf
Normal file
25
addons/atragmx/functions/fnc_restore_atmo_default.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Restores the atmospheric data defaults
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_restore_atmo_default
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(atmosphereModeTBH) = true;
|
||||||
|
GVAR(altitude) = 0;
|
||||||
|
GVAR(temperature) = 15;
|
||||||
|
GVAR(barometricPressure) = 1013.25;
|
||||||
|
GVAR(relativeHumidity) = 0.5;
|
||||||
|
|
||||||
|
[] call FUNC(update_atmo_selection);
|
||||||
|
[] call FUNC(update_atmosphere);
|
42
addons/atragmx/functions/fnc_restore_user_data.sqf
Normal file
42
addons/atragmx/functions/fnc_restore_user_data.sqf
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Reads user data from profileNamespace
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_restore_user_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(currentUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentUnit", 2]) min 2;
|
||||||
|
[(profileNamespace getVariable ["ACE_ATragMX_currentGun", 0]), true, false] call FUNC(change_gun);
|
||||||
|
GVAR(currentTarget) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentTarget", 0]) min 3;
|
||||||
|
GVAR(currentScopeUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentScopeUnit", 0]) min 3;
|
||||||
|
|
||||||
|
GVAR(atmosphereModeTBH) = profileNamespace getVariable ["ACE_ATragMX_atmosphereModeTBH", true];
|
||||||
|
GVAR(altitude) = -1000 max (profileNamespace getVariable ["ACE_ATragMX_altitude", 0]) min 20000;
|
||||||
|
GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperature", 15]) min 160;
|
||||||
|
GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_barometricPressure", 1013.25]) min 1350;
|
||||||
|
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
|
||||||
|
|
||||||
|
GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
|
||||||
|
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]];
|
||||||
|
GVAR(windSpeed2) = profileNamespace getVariable ["ACE_ATragMX_windSpeed2", [0, 0, 0, 0]];
|
||||||
|
GVAR(windDirection) = profileNamespace getVariable ["ACE_ATragMX_windDirection", [12, 12, 12, 12]];
|
||||||
|
GVAR(inclinationAngle) = profileNamespace getVariable ["ACE_ATragMX_inclinationAngle", [0, 0, 0, 0]];
|
||||||
|
GVAR(targetSpeed) = profileNamespace getVariable ["ACE_ATragMX_targetSpeed", [0, 0, 0, 0]];
|
||||||
|
GVAR(targetRange) = profileNamespace getVariable ["ACE_ATragMX_targetRange", [0, 0, 0, 0]];
|
||||||
|
|
||||||
|
GVAR(rangeCardStartRange) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardStartRange", 200]) min 3000;
|
||||||
|
GVAR(rangeCardEndRange) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardEndRange", 2000]) min 3000;
|
||||||
|
GVAR(rangeCardIncrement) = 1 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardIncrement", 50]) min 3000;
|
||||||
|
GVAR(rangeCardCurrentColumn) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardCurrentColumn", 3]) min 3;
|
25
addons/atragmx/functions/fnc_show_atmo_env_data.sqf
Normal file
25
addons/atragmx/functions/fnc_show_atmo_env_data.sqf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the atmosphere and environmental data controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* false call ace_atragmx_fnc_show_atmo_env_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showAtmoEnvData) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [13000, 13001, 13002, 13003, 130030, 13004, 130040, 13005, 130050, 13006, 130060, 13007, 13008, 13009, 13010, 13011];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
[] call FUNC(update_atmo_selection);
|
||||||
|
[] call FUNC(update_atmo_env_data);
|
||||||
|
};
|
24
addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
Normal file
24
addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the gun ammo data controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* false call ace_atragmx_fnc_show_gun_ammo_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showGunAmmoData) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [12000, 120000, 12001, 120010, 12002, 120020, 12003, 120030, 12004, 120040, 12005, 120050, 12006, 120060, 12007, 12008, 12009, 12010, 12011];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
[] call FUNC(update_gun_ammo_data);
|
||||||
|
};
|
@ -17,5 +17,13 @@
|
|||||||
|
|
||||||
GVAR(showMainPage) = _this;
|
GVAR(showMainPage) = _this;
|
||||||
|
|
||||||
{ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
|
{ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 23, 230, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
|
||||||
500, 501, 502, 503, 600, 601, 602, 603, 1000, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
|
500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
if (GVAR(atmosphereModeTBH)) then {
|
||||||
|
{ctrlShow [_x, false]} forEach [23, 230];
|
||||||
|
} else {
|
||||||
|
{ctrlShow [_x, false]} forEach [21, 210, 22, 220];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
24
addons/atragmx/functions/fnc_show_target_data.sqf
Normal file
24
addons/atragmx/functions/fnc_show_target_data.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Shows/Hides the target data controls
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* visible - <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* false call ace_atragmx_fnc_show_target_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
GVAR(showTargetData) = _this;
|
||||||
|
|
||||||
|
{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 14006, 140060, 14007, 14008, 14009, 14010, 14011];
|
||||||
|
|
||||||
|
if (_this) then {
|
||||||
|
[] call FUNC(update_target_data);
|
||||||
|
};
|
@ -25,11 +25,9 @@ if (_this) then {
|
|||||||
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
|
ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
|
||||||
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
|
ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
|
||||||
|
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
ctrlSetText [7016, "Yards"];
|
ctrlSetText [7016, "Yards"];
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [7016, "Meters"];
|
ctrlSetText [7016, "Meters"];
|
||||||
};
|
};
|
||||||
};
|
};
|
@ -24,19 +24,15 @@ if (_this) then {
|
|||||||
|
|
||||||
ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
|
ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
|
||||||
|
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
ctrlSetText [8008, "Yards"];
|
ctrlSetText [8008, "Yards"];
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [8008, "Meters"];
|
ctrlSetText [8008, "Meters"];
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GVAR(currentUnit) != 1) then
|
if (GVAR(currentUnit) == 2) then {
|
||||||
{
|
|
||||||
ctrlSetText [8011, "m/s"];
|
ctrlSetText [8011, "m/s"];
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [8011, "mph"];
|
ctrlSetText [8011, "mph"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -22,6 +22,6 @@ _slopeDistance = _this select 0;
|
|||||||
_azimuth = _this select 1;
|
_azimuth = _this select 1;
|
||||||
_inclination = _this select 2;
|
_inclination = _this select 2;
|
||||||
|
|
||||||
//_inclination = asin((ACE_player weaponDirection currentWeapon ACE_player) select 2);
|
GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
|
||||||
GVAR(inclinationAngle) set [GVAR(currentTarget), _inclination];
|
GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];
|
||||||
GVAR(targetRange) set [GVAR(currentTarget), _slopeDistance];
|
GVAR(targetRange) set [GVAR(currentTarget), round(_slopeDistance)];
|
||||||
|
44
addons/atragmx/functions/fnc_store_user_data.sqf
Normal file
44
addons/atragmx/functions/fnc_store_user_data.sqf
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Saves user data into profileNamespace
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_store_user_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_profileNamespaceVersion", ATRAGMX_PROFILE_NAMESPACE_VERSION];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentUnit", GVAR(currentUnit)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentGun", GVAR(currentGun)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentTarget", GVAR(currentTarget)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_currentScopeUnit", GVAR(currentScopeUnit)];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_atmosphereModeTBH", GVAR(atmosphereModeTBH)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_altitude", GVAR(altitude)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_temperature", GVAR(temperature)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricPressure)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windSpeed2", GVAR(windSpeed2)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_windDirection", GVAR(windDirection)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", GVAR(inclinationAngle)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_targetSpeed", GVAR(targetSpeed)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_targetRange", GVAR(targetRange)];
|
||||||
|
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", GVAR(rangeCardStartRange)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardEndRange", GVAR(rangeCardEndRange)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardIncrement", GVAR(rangeCardIncrement)];
|
||||||
|
profileNamespace setVariable ["ACE_ATragMX_rangeCardCurrentColumn", GVAR(rangeCardCurrentColumn)];
|
28
addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
Normal file
28
addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the atmospheric data screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_atmo_env_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (ctrlVisible 13000) then {
|
||||||
|
false call FUNC(show_atmo_env_data);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
true call FUNC(show_atmo_env_data);
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
};
|
29
addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
Normal file
29
addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the gun ammo data screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_gun_ammo_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (ctrlVisible 12000) then {
|
||||||
|
false call FUNC(show_gun_ammo_data);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
call FUNC(update_zero_range);
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
true call FUNC(show_gun_ammo_data);
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
};
|
@ -3,28 +3,26 @@
|
|||||||
* Toggles the gun list screen on/off
|
* Toggles the gun list screen on/off
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* Nothing
|
* change gun? <BOOL>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_fnc_toggle_gun_list
|
* false call ace_atragmx_fnc_toggle_gun_list
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (ctrlVisible 6000) then
|
if (ctrlVisible 6000) then {
|
||||||
{
|
|
||||||
false call FUNC(show_gun_list);
|
false call FUNC(show_gun_list);
|
||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
if (_this) then {
|
if (_this) then {
|
||||||
(lbCurSel 6000) call FUNC(change_gun);
|
[lbCurSel 6000, true, true] call FUNC(change_gun);
|
||||||
};
|
};
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
false call FUNC(show_main_page);
|
false call FUNC(show_main_page);
|
||||||
true call FUNC(show_gun_list);
|
true call FUNC(show_gun_list);
|
||||||
};
|
};
|
||||||
|
@ -15,12 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (ctrlVisible 5006) then
|
if (ctrlVisible 5006) then {
|
||||||
{
|
|
||||||
false call FUNC(show_range_card);
|
false call FUNC(show_range_card);
|
||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
false call FUNC(show_main_page);
|
false call FUNC(show_main_page);
|
||||||
true call FUNC(show_range_card);
|
true call FUNC(show_range_card);
|
||||||
|
|
||||||
|
@ -3,25 +3,23 @@
|
|||||||
* Toggles the range card setup screen on/off
|
* Toggles the range card setup screen on/off
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* Apply new range card settings <BOOL>
|
* Apply new range card settings <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_fnc_toggle_range_card_setup
|
* 1 call ace_atragmx_fnc_toggle_range_card_setup
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (ctrlVisible 10000) then
|
if (ctrlVisible 10000) then {
|
||||||
{
|
|
||||||
false call FUNC(show_range_card_setup);
|
false call FUNC(show_range_card_setup);
|
||||||
true call FUNC(show_range_card);
|
true call FUNC(show_range_card);
|
||||||
|
|
||||||
if (_this == 1) then
|
if (_this == 1) then {
|
||||||
{
|
|
||||||
GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000;
|
GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000;
|
||||||
GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000;
|
GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000;
|
||||||
GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000;
|
GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000;
|
||||||
@ -29,8 +27,7 @@ if (ctrlVisible 10000) then
|
|||||||
[] call FUNC(calculate_range_card);
|
[] call FUNC(calculate_range_card);
|
||||||
[] call FUNC(update_range_card);
|
[] call FUNC(update_range_card);
|
||||||
};
|
};
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
false call FUNC(show_range_card);
|
false call FUNC(show_range_card);
|
||||||
true call FUNC(show_range_card_setup);
|
true call FUNC(show_range_card_setup);
|
||||||
};
|
};
|
||||||
|
28
addons/atragmx/functions/fnc_toggle_target_data.sqf
Normal file
28
addons/atragmx/functions/fnc_toggle_target_data.sqf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Toggles the target data screen on/off
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Apply new data? <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 1 call ace_atragmx_fnc_toggle_target_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (ctrlVisible 14000) then {
|
||||||
|
false call FUNC(show_target_data);
|
||||||
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
|
if (_this == 1) then {
|
||||||
|
call FUNC(calculate_target_solution);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
true call FUNC(show_target_data);
|
||||||
|
false call FUNC(show_main_page);
|
||||||
|
};
|
@ -3,30 +3,30 @@
|
|||||||
* Toggles the target range assist screen on/off
|
* Toggles the target range assist screen on/off
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* Nothing
|
* update range? <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_fnc_toggle_target_range_assist
|
* 1 call ace_atragmx_fnc_toggle_target_range_assist
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (ctrlVisible 7000) then
|
if (ctrlVisible 7000) then {
|
||||||
{
|
|
||||||
false call FUNC(show_target_range_assist);
|
false call FUNC(show_target_range_assist);
|
||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
if (_this == 1) then
|
if (_this == 1) then {
|
||||||
{
|
|
||||||
ctrlSetText [320, Str(parseNumber(ctrlText 7012))];
|
ctrlSetText [320, Str(parseNumber(ctrlText 7012))];
|
||||||
|
ctrlSetText [140040, Str(parseNumber(ctrlText 7012))];
|
||||||
ctrlSetText [340, Str(parseNumber(ctrlText 7013))];
|
ctrlSetText [340, Str(parseNumber(ctrlText 7013))];
|
||||||
|
ctrlSetText [140060, Str(parseNumber(ctrlText 7013))];
|
||||||
|
[] call FUNC(calculate_target_solution);
|
||||||
};
|
};
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
false call FUNC(show_main_page);
|
false call FUNC(show_main_page);
|
||||||
true call FUNC(show_target_range_assist);
|
true call FUNC(show_target_range_assist);
|
||||||
};
|
};
|
||||||
|
@ -3,30 +3,33 @@
|
|||||||
* Toggles the target speed assist screen on/off
|
* Toggles the target speed assist screen on/off
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* Nothing
|
* update speed? <NUMBER>
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Nothing
|
* Nothing
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* call ace_atragmx_fnc_toggle_target_speed_assist
|
* 1 call ace_atragmx_fnc_toggle_target_speed_assist
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (ctrlVisible 8000) then
|
if (ctrlVisible 8000) then {
|
||||||
{
|
|
||||||
false call FUNC(show_target_speed_assist);
|
false call FUNC(show_target_speed_assist);
|
||||||
true call FUNC(show_main_page);
|
true call FUNC(show_main_page);
|
||||||
|
|
||||||
if (_this == 1) then
|
if (_this == 1) then {
|
||||||
{
|
|
||||||
[] call FUNC(calculate_target_speed_assist);
|
[] call FUNC(calculate_target_speed_assist);
|
||||||
ctrlSetText [330, Str(parseNumber(ctrlText 8007))];
|
private ["_targetSpeed"];
|
||||||
|
_targetSpeed = parseNumber(ctrlText 8007);
|
||||||
|
if (_targetSpeed != 0) then {
|
||||||
|
ctrlSetText [330, Str(_targetSpeed)];
|
||||||
|
ctrlSetText [140050, Str(_targetSpeed)];
|
||||||
|
[] call FUNC(calculate_target_solution);
|
||||||
};
|
};
|
||||||
} else
|
};
|
||||||
{
|
} else {
|
||||||
false call FUNC(show_main_page);
|
false call FUNC(show_main_page);
|
||||||
true call FUNC(show_target_speed_assist);
|
true call FUNC(show_target_speed_assist);
|
||||||
};
|
};
|
||||||
|
45
addons/atragmx/functions/fnc_update_atmo_env_data.sqf
Normal file
45
addons/atragmx/functions/fnc_update_atmo_env_data.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the atmospheric data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_atmo_env_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 13007);
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [130040, Str(Round(GVAR(temperature) * 10) / 10)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [130040, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [130050, Str(Round(GVAR(barometricPressure)))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [130050, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
|
||||||
|
};
|
||||||
|
ctrlSetText [130060, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [130030, Str(Round(GVAR(altitude)))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [130030, Str(Round(GVAR(altitude) * 3.2808399))];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [13003, "Altitude (m)"];
|
||||||
|
ctrlSetText [13004, "temperature (C)"];
|
||||||
|
ctrlSetText [13005, "Barom Pres (milibars)"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [13003, "Altitude (ft)"];
|
||||||
|
ctrlSetText [13004, "temperature (F)"];
|
||||||
|
ctrlSetText [13005, "Barom Pres (in.merc.)"];
|
||||||
|
};
|
31
addons/atragmx/functions/fnc_update_atmo_selection.sqf
Normal file
31
addons/atragmx/functions/fnc_update_atmo_selection.sqf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the atmospheric data input method
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_atmo_selection
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
((uiNamespace getVariable "ATragMX_Display") displayCtrl 13001) ctrlEnable true;
|
||||||
|
((uiNamespace getVariable "ATragMX_Display") displayCtrl 13002) ctrlEnable true;
|
||||||
|
|
||||||
|
if (GVAR(atmosphereModeTBH)) then {
|
||||||
|
((uiNamespace getVariable "ATragMX_Display") displayCtrl 13002) ctrlEnable false;
|
||||||
|
{ctrlShow [_x, false]} forEach [13003, 130030];
|
||||||
|
{ctrlShow [_x, true]} forEach [13005, 130050, 13006, 130060];
|
||||||
|
} else {
|
||||||
|
((uiNamespace getVariable "ATragMX_Display") displayCtrl 13001) ctrlEnable false;
|
||||||
|
{ctrlShow [_x, false]} forEach [13005, 130050, 13006, 130060];
|
||||||
|
{ctrlShow [_x, true]} forEach [13003, 130030];
|
||||||
|
};
|
||||||
|
|
||||||
|
[] call FUNC(update_atmo_env_data);
|
@ -15,10 +15,19 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)];
|
if (GVAR(currentUnit) == 2) then {
|
||||||
if (GVAR(currentUnit) == 1) then {
|
ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)];
|
||||||
ctrlSetText [210, Str(Round(GVAR(barometricPressure) * 100) / 100)];
|
|
||||||
} else {
|
} else {
|
||||||
|
ctrlSetText [200, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
ctrlSetText [210, Str(Round(GVAR(barometricPressure)))];
|
ctrlSetText [210, Str(Round(GVAR(barometricPressure)))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [210, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
|
||||||
};
|
};
|
||||||
ctrlSetText [220, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
|
ctrlSetText [220, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [230, Str(Round(GVAR(altitude)))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [230, Str(Round(GVAR(altitude) * 3.2808399))];
|
||||||
|
};
|
||||||
|
@ -16,38 +16,35 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
ctrlSetText [1000, GVAR(workingMemory) select 0];
|
ctrlSetText [1000, GVAR(workingMemory) select 0];
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (GVAR(currentUnit) != 2) then {
|
||||||
{
|
ctrlSetText [100, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
|
||||||
ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
|
} else {
|
||||||
} else
|
ctrlSetText [100, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
|
||||||
{
|
|
||||||
ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
|
|
||||||
};
|
};
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (GVAR(currentUnit) != 2) then {
|
||||||
{
|
ctrlSetText [110, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
|
||||||
ctrlSetText [ 110, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
|
} else {
|
||||||
} else
|
ctrlSetText [110, Str(Round(GVAR(workingMemory) select 12))];
|
||||||
{
|
|
||||||
ctrlSetText [ 110, Str(Round(GVAR(workingMemory) select 12))];
|
|
||||||
};
|
};
|
||||||
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||||
ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
ctrlSetText [120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||||
} else {
|
} else {
|
||||||
ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
|
ctrlSetText [120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
|
||||||
};
|
};
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (GVAR(currentUnit) != 2) then {
|
||||||
{
|
|
||||||
ctrlSetText [130, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
|
ctrlSetText [130, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))];
|
ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))];
|
||||||
};
|
};
|
||||||
if (GVAR(currentUnit) == 2) then
|
switch (GVAR(currentUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
|
ctrlSetText [140, format["*%1", Round(GVAR(workingMemory) select 2)]];
|
||||||
} else
|
};
|
||||||
{
|
case 1: {
|
||||||
ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
|
ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
|
ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
[] call FUNC(update_scope_unit);
|
[] call FUNC(update_scope_unit);
|
||||||
|
74
addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
Normal file
74
addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the gun ammo data fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_gun_ammo_data
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 12008);
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [120000, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120000, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [120010, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120010, Str(Round(GVAR(workingMemory) select 12))];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) / 10 / 2.54 * 1000) / 1000)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) * 1000) / 1000)];
|
||||||
|
};
|
||||||
|
if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
|
||||||
|
ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [120040, Str(Round((GVAR(workingMemory) select 14) / 2.54 * 10) / 10)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120040, Str(Round((GVAR(workingMemory) select 14) * 100) / 100)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [120050, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120050, Str(Round(GVAR(workingMemory) select 1))];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [120060, Str(Round(GVAR(workingMemory) select 2))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [120060, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [12000, "Bore (cm)"];
|
||||||
|
ctrlSetText [12001, "Bullet Weight (grams)"];
|
||||||
|
ctrlSetText [12002, "Bullet Diam (cm)"];
|
||||||
|
ctrlSetText [12004, "Rifle Twist (cm/trn)"];
|
||||||
|
ctrlSetText [12005, "Muzzle Velocity (m/s)"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [12000, "Bore (inches)"];
|
||||||
|
ctrlSetText [12001, "Bullet Weight (grains)"];
|
||||||
|
ctrlSetText [12002, "Bullet Diam (inches)"];
|
||||||
|
ctrlSetText [12004, "Rifle Twist (inches/trn)"];
|
||||||
|
ctrlSetText [12005, "Muzzle Velocity (feet/sec)"];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
ctrlSetText [12006, "Zero Range (yards)"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [12006, "Zero Range (meters)"];
|
||||||
|
};
|
26
addons/atragmx/functions/fnc_update_inclination_angle.sqf
Normal file
26
addons/atragmx/functions/fnc_update_inclination_angle.sqf
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates the inclination angle input fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Reference input field ID <NUMBER>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* 0 call ace_atragmx_fnc_update_inclination_angle
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
|
||||||
|
_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
|
||||||
|
_inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
|
||||||
|
|
||||||
|
if (_this == 0) then {
|
||||||
|
ctrlSetText [140040, Str(round(acos(_inclinationAngleCosine)))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [140041, Str(round(cos(_inclinationAngleDegree) * 100) / 100)];
|
||||||
|
};
|
@ -15,16 +15,18 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_range", "_elevation", "_windage", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
|
private ["_range", "_elevation", "_windage1", "_windage2", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
|
||||||
_lastColumnOutput = "";
|
_lastColumnOutput = "";
|
||||||
|
|
||||||
ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
|
if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
|
||||||
|
ctrlSetText [5006, "Wind2"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
|
||||||
|
};
|
||||||
|
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
ctrlSetText [5003, "Yards"];
|
ctrlSetText [5003, "Yards"];
|
||||||
} else
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [5003, "Meters"];
|
ctrlSetText [5003, "Meters"];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -33,69 +35,61 @@ lnbClear 5007;
|
|||||||
{
|
{
|
||||||
_range = _x select 0;
|
_range = _x select 0;
|
||||||
_elevation = _x select 1;
|
_elevation = _x select 1;
|
||||||
_windage = _x select 2;
|
_windage1 = (_x select 2) select 0;
|
||||||
|
_windage2 = (_x select 2) select 1;
|
||||||
_lead = _x select 3;
|
_lead = _x select 3;
|
||||||
_TOF = _x select 4;
|
_TOF = _x select 4;
|
||||||
_velocity = _x select 5;
|
_velocity = _x select 5;
|
||||||
_kineticEnergy = _x select 6;
|
_kineticEnergy = _x select 6;
|
||||||
|
|
||||||
switch (GVAR(currentScopeUnit)) do
|
switch (GVAR(currentScopeUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
_elevation = _elevation / 3.38;
|
_elevation = _elevation / 3.38;
|
||||||
_windage = _windage / 3.38;
|
_windage1 = _windage1 / 3.38;
|
||||||
|
_windage2 = _windage2 / 3.38;
|
||||||
};
|
};
|
||||||
|
case 2: {
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
_elevation = _elevation * 1.047;
|
_elevation = _elevation * 1.047;
|
||||||
_windage = _windage * 1.047;
|
_windage1 = _windage1 * 1.047;
|
||||||
|
_windage2 = _windage2 * 1.047;
|
||||||
};
|
};
|
||||||
|
case 3: {
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
||||||
_windageScopeStep = (GVAR(workingMemory) select 8);
|
_windageScopeStep = (GVAR(workingMemory) select 8);
|
||||||
|
|
||||||
_elevation = Round(_elevation / _elevationScopeStep);
|
_elevation = Round(_elevation / _elevationScopeStep);
|
||||||
_windage = Round(_windage / _windageScopeStep);
|
_windage1 = Round(_windage1 / _windageScopeStep);
|
||||||
|
_windage2 = Round(_windage2 / _windageScopeStep);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
_elevationOutput = Str(Round(_elevation * 100) / 100);
|
_elevationOutput = Str(Round(_elevation * 100) / 100);
|
||||||
_windageOutput = Str(Round(_windage * 100) / 100);
|
_windageOutput = Str(Round(_windage1 * 100) / 100);
|
||||||
|
|
||||||
_rangeOutput = Str(_range);
|
_rangeOutput = Str(_range);
|
||||||
if (_velocity < 340.29) then
|
if (_velocity < 340.29) then {
|
||||||
{
|
|
||||||
_rangeOutput = _rangeOutput + "*";
|
_rangeOutput = _rangeOutput + "*";
|
||||||
};
|
};
|
||||||
|
|
||||||
if (GVAR(currentUnit) == 1) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
_velocity = _velocity * 3.2808399;
|
_velocity = _velocity * 3.2808399;
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (GVAR(rangeCardCurrentColumn)) do
|
switch (GVAR(rangeCardCurrentColumn)) do {
|
||||||
{
|
case 0: {
|
||||||
case 0:
|
if (GVAR(showWind2)) then {
|
||||||
{
|
_lastColumnOutput = Str(Round(_windage2 * 100) / 100);
|
||||||
|
} else {
|
||||||
_lastColumnOutput = Str(Round(_lead * 100) / 100);
|
_lastColumnOutput = Str(Round(_lead * 100) / 100);
|
||||||
};
|
};
|
||||||
|
};
|
||||||
case 1:
|
case 1: {
|
||||||
{
|
|
||||||
_lastColumnOutput = Str(Round(_velocity));
|
_lastColumnOutput = Str(Round(_velocity));
|
||||||
};
|
};
|
||||||
|
case 2: {
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
_lastColumnOutput = Str(Round(_kineticEnergy));
|
_lastColumnOutput = Str(Round(_kineticEnergy));
|
||||||
};
|
};
|
||||||
|
case 3: {
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
_lastColumnOutput = Str(Round(_TOF * 100) / 100);
|
_lastColumnOutput = Str(Round(_TOF * 100) / 100);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -16,6 +16,6 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
GVAR(workingMemory) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))];
|
GVAR(workingMemory) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))];
|
||||||
GVAR(workingMemory) set [11, (GVAR(windageOutput) select GVAR(currentTarget))];
|
GVAR(workingMemory) set [11, (GVAR(windage1Output) select GVAR(currentTarget))];
|
||||||
|
|
||||||
[] call FUNC(update_result);
|
[] call FUNC(update_result);
|
||||||
|
@ -15,9 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
|
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
|
||||||
_elevationAbs = (GVAR(elevationOutput) select GVAR(currentTarget));
|
_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
|
||||||
_windageAbs = (GVAR(windageOutput) select GVAR(currentTarget));
|
_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
|
||||||
|
|
||||||
|
_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
|
||||||
|
|
||||||
_elevationCur = GVAR(workingMemory) select 10;
|
_elevationCur = GVAR(workingMemory) select 10;
|
||||||
_windageCur = GVAR(workingMemory) select 11;
|
_windageCur = GVAR(workingMemory) select 11;
|
||||||
@ -25,42 +27,42 @@ _windageCur = GVAR(workingMemory) select 11;
|
|||||||
_elevationRel = _elevationAbs - _elevationCur;
|
_elevationRel = _elevationAbs - _elevationCur;
|
||||||
_windageRel = _windageAbs - _windageCur;
|
_windageRel = _windageAbs - _windageCur;
|
||||||
|
|
||||||
_lead = (GVAR(leadOutput) select GVAR(currentTarget));
|
_lead = GVAR(leadOutput) select GVAR(currentTarget);
|
||||||
|
|
||||||
switch (GVAR(currentScopeUnit)) do
|
switch (GVAR(currentScopeUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
_elevationAbs = _elevationAbs / 3.38;
|
_elevationAbs = _elevationAbs / 3.38;
|
||||||
_windageAbs = _windageAbs / 3.38;
|
_windageAbs = _windageAbs / 3.38;
|
||||||
|
|
||||||
|
_wind2 = _wind2 / 3.38;
|
||||||
|
|
||||||
_elevationRel = _elevationRel / 3.38;
|
_elevationRel = _elevationRel / 3.38;
|
||||||
_windageRel = _windageRel / 3.38;
|
_windageRel = _windageRel / 3.38;
|
||||||
|
|
||||||
_elevationCur = _elevationCur / 3.38;
|
_elevationCur = _elevationCur / 3.38;
|
||||||
_windageCur = _windageCur / 3.38;
|
_windageCur = _windageCur / 3.38;
|
||||||
};
|
};
|
||||||
|
case 2: {
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
_elevationAbs = _elevationAbs * 1.047;
|
_elevationAbs = _elevationAbs * 1.047;
|
||||||
_windageAbs = _windageAbs * 1.047;
|
_windageAbs = _windageAbs * 1.047;
|
||||||
|
|
||||||
|
_wind2 = _wind2 / 1.047;
|
||||||
|
|
||||||
_elevationRel = _elevationRel * 1.047;
|
_elevationRel = _elevationRel * 1.047;
|
||||||
_windageRel = _windageRel * 1.047;
|
_windageRel = _windageRel * 1.047;
|
||||||
|
|
||||||
_elevationCur = _elevationCur * 1.047;
|
_elevationCur = _elevationCur * 1.047;
|
||||||
_windageCur = _windageCur * 1.047;
|
_windageCur = _windageCur * 1.047;
|
||||||
};
|
};
|
||||||
|
case 3: {
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
_elevationScopeStep = (GVAR(workingMemory) select 7);
|
||||||
_windageScopeStep = (GVAR(workingMemory) select 8);
|
_windageScopeStep = (GVAR(workingMemory) select 8);
|
||||||
|
|
||||||
_elevationAbs = Round(_elevationAbs / _elevationScopeStep);
|
_elevationAbs = Round(_elevationAbs / _elevationScopeStep);
|
||||||
_windageAbs = Round(_windageAbs / _windageScopeStep);
|
_windageAbs = Round(_windageAbs / _windageScopeStep);
|
||||||
|
|
||||||
|
_wind2 = Round(_wind2 / _windageScopeStep);
|
||||||
|
|
||||||
_elevationRel = Round(_elevationRel / _elevationScopeStep);
|
_elevationRel = Round(_elevationRel / _elevationScopeStep);
|
||||||
_windageRel = Round(_windageRel / _windageScopeStep);
|
_windageRel = Round(_windageRel / _windageScopeStep);
|
||||||
|
|
||||||
@ -69,6 +71,12 @@ switch (GVAR(currentScopeUnit)) do
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (GVAR(showWind2)) then {
|
||||||
|
ctrlSetText [42, "Wind2"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [42, "Lead"];
|
||||||
|
};
|
||||||
|
|
||||||
ctrlSetText [400, Str(Round(_elevationAbs * 100) / 100)];
|
ctrlSetText [400, Str(Round(_elevationAbs * 100) / 100)];
|
||||||
ctrlSetText [401, Str(Round(_elevationRel * 100) / 100)];
|
ctrlSetText [401, Str(Round(_elevationRel * 100) / 100)];
|
||||||
ctrlSetText [402, Str(Round(_elevationCur * 100) / 100)];
|
ctrlSetText [402, Str(Round(_elevationCur * 100) / 100)];
|
||||||
@ -77,4 +85,8 @@ ctrlSetText [410, Str(Round(_windageAbs * 100) / 100)];
|
|||||||
ctrlSetText [411, Str(Round(_windageRel * 100) / 100)];
|
ctrlSetText [411, Str(Round(_windageRel * 100) / 100)];
|
||||||
ctrlSetText [412, Str(Round(_windageCur * 100) / 100)];
|
ctrlSetText [412, Str(Round(_windageCur * 100) / 100)];
|
||||||
|
|
||||||
ctrlSetText [420, Str(Round(_lead * 100) / 100)];
|
if (GVAR(showWind2)) then {
|
||||||
|
ctrlSetText [420, Str(Round(_wind2 * 100) / 100)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [420, Str(Round(_lead * 100) / 100)];
|
||||||
|
};
|
@ -15,5 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
|
if (GVAR(currentScopeUnit) == 3) then {
|
||||||
ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
|
ctrlSetText [2000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
|
||||||
|
ctrlSetText [5000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
|
||||||
|
ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
|
||||||
|
};
|
||||||
|
@ -15,23 +15,34 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (!isNil QGVAR(windSpeed)) then
|
if (GVAR(showWind2)) then {
|
||||||
{
|
if (GVAR(currentUnit) != 2) then {
|
||||||
ctrlSetText [300, Str(Round((GVAR(windSpeed) select GVAR(currentTarget)) * 100) / 100)];
|
ctrlSetText [300, format["%1/%2", Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629), Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 2.23693629)]];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [300, format["%1/%2", Round(GVAR(windSpeed1) select GVAR(currentTarget)), Round(GVAR(windSpeed2) select GVAR(currentTarget))]];
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
if (!isNil QGVAR(windDirection)) then
|
ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
|
||||||
{
|
ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
|
||||||
ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
|
if (GVAR(currentUnit) != 2) then {
|
||||||
};
|
ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
|
||||||
if (!isNil QGVAR(inclinationAngle)) then
|
} else {
|
||||||
{
|
|
||||||
ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
|
|
||||||
};
|
|
||||||
if (!isNil QGVAR(targetSpeed)) then
|
|
||||||
{
|
|
||||||
ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
|
ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
};
|
};
|
||||||
if (!isNil QGVAR(targetRange)) then
|
switch (GVAR(currentUnit)) do {
|
||||||
{
|
case 0: {
|
||||||
|
ctrlSetText [340, format["*%1", Round((GVAR(targetRange) select GVAR(currentTarget)))]];
|
||||||
|
};
|
||||||
|
case 1: {
|
||||||
|
ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
|
||||||
|
};
|
||||||
|
case 2: {
|
||||||
ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
|
ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
53
addons/atragmx/functions/fnc_update_target_data.sqf
Normal file
53
addons/atragmx/functions/fnc_update_target_data.sqf
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Author: Ruthberg
|
||||||
|
* Updates all target column input fields
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* Nothing
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* call ace_atragmx_fnc_update_target
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
ctrlSetText [140000, Str(Round((GVAR(latitude) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
ctrlSetText [140010, Str(Round((GVAR(directionOfFire) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
|
||||||
|
ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
};
|
||||||
|
ctrlSetText [140030, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
|
||||||
|
ctrlSetText [140040, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
|
||||||
|
ctrlSetText [140041, Str(Round(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
if (GVAR(currentUnit) != 2) then {
|
||||||
|
ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
|
||||||
|
};
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 2) then {
|
||||||
|
ctrlSetText [14002, "Wind Speed (m/s)"];
|
||||||
|
ctrlSetText [14005, "Target Speed (m/s)"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [14002, "Wind Speed (mph)"];
|
||||||
|
ctrlSetText [14005, "Target Speed (mph)"];
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GVAR(currentUnit) == 1) then {
|
||||||
|
ctrlSetText [14006, "Target Range (yards)"];
|
||||||
|
} else {
|
||||||
|
ctrlSetText [14006, "Target Range (meters)"];
|
||||||
|
};
|
@ -22,6 +22,10 @@
|
|||||||
((uiNamespace getVariable "ATragMX_Display") displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
|
((uiNamespace getVariable "ATragMX_Display") displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
|
||||||
|
|
||||||
[] call FUNC(update_gun);
|
[] call FUNC(update_gun);
|
||||||
|
[] call FUNC(update_gun_ammo_data);
|
||||||
[] call FUNC(update_atmosphere);
|
[] call FUNC(update_atmosphere);
|
||||||
|
[] call FUNC(update_atmo_env_data);
|
||||||
[] call FUNC(update_target);
|
[] call FUNC(update_target);
|
||||||
|
[] call FUNC(update_target_data);
|
||||||
|
|
||||||
[] call FUNC(update_result);
|
[] call FUNC(update_result);
|
||||||
|
@ -28,9 +28,8 @@ _dragModel = GVAR(workingMemory) select 16;
|
|||||||
_atmosphereModel = GVAR(workingMemory) select 17;
|
_atmosphereModel = GVAR(workingMemory) select 17;
|
||||||
|
|
||||||
private ["_zeroRange"];
|
private ["_zeroRange"];
|
||||||
_zeroRange = Round(parseNumber(ctrlText 140));
|
_zeroRange = Round(parseNumber(ctrlText 120060));
|
||||||
if (GVAR(currentUnit) != 2) then
|
if (GVAR(currentUnit) == 1) then {
|
||||||
{
|
|
||||||
_zeroRange = _zeroRange / 1.0936133;
|
_zeroRange = _zeroRange / 1.0936133;
|
||||||
};
|
};
|
||||||
if (_zeroRange < 10) exitWith {
|
if (_zeroRange < 10) exitWith {
|
||||||
@ -38,18 +37,14 @@ if (_zeroRange < 10) exitWith {
|
|||||||
GVAR(workingMemory) set [3, 0];
|
GVAR(workingMemory) set [3, 0];
|
||||||
};
|
};
|
||||||
|
|
||||||
private ["_temperature", "_barometricPressure", "_relativeHumidity"];
|
private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
|
||||||
|
_altitude = GVAR(altitude);
|
||||||
_temperature = GVAR(temperature);
|
_temperature = GVAR(temperature);
|
||||||
_barometricPressure = GVAR(barometricPressure);
|
_barometricPressure = GVAR(barometricPressure);
|
||||||
_relativeHumidity = GVAR(relativeHumidity);
|
_relativeHumidity = GVAR(relativeHumidity);
|
||||||
if (GVAR(currentUnit) == 1) then
|
|
||||||
{
|
|
||||||
_temperature = (_temperature - 32) / 1.8;
|
|
||||||
_barometricPressure = _barometricPressure * 33.8638866667;
|
|
||||||
};
|
|
||||||
|
|
||||||
private ["_result"];
|
private ["_result"];
|
||||||
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution);
|
_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);
|
||||||
|
|
||||||
GVAR(workingMemory) set [2, _zeroRange];
|
GVAR(workingMemory) set [2, _zeroRange];
|
||||||
GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];
|
GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];
|
||||||
|
@ -10,3 +10,5 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#include "\z\ace\addons\main\script_macros.hpp"
|
||||||
|
|
||||||
|
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.1
|
||||||
|
@ -19,18 +19,23 @@
|
|||||||
<Polish>Otwórz ATragMX</Polish>
|
<Polish>Otwórz ATragMX</Polish>
|
||||||
<Russian>Открыть ATragMX</Russian>
|
<Russian>Открыть ATragMX</Russian>
|
||||||
<Spanish>Abrir ATragMX</Spanish>
|
<Spanish>Abrir ATragMX</Spanish>
|
||||||
|
<French>Ouvrir ATragMX</French>
|
||||||
|
<German>ATragMX öffnen</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ATragMX_Description">
|
<Key ID="STR_ACE_ATragMX_Description">
|
||||||
<English>Rugged PDA with ATragMX</English>
|
<English>Rugged PDA with ATragMX</English>
|
||||||
<Polish>Przenośny PDA z kalkulatorem balistycznym ATragMX</Polish>
|
<Polish>Przenośny PDA z kalkulatorem balistycznym ATragMX</Polish>
|
||||||
<Russian>Защищенный КПК с ATragMX</Russian>
|
<Russian>Защищенный КПК с ATragMX</Russian>
|
||||||
<Spanish>PDA rugerizada con ATragMX</Spanish>
|
<Spanish>PDA rugerizada con ATragMX</Spanish>
|
||||||
|
<German>Robuster PDA mit ATragMX</German>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ATragMX_ATragMXDialogKey">
|
<Key ID="STR_ACE_ATragMX_ATragMXDialogKey">
|
||||||
<English>Open ATragMX</English>
|
<English>Open ATragMX</English>
|
||||||
<Polish>Otwórz ATragMX</Polish>
|
<Polish>Otwórz ATragMX</Polish>
|
||||||
<Russian>Открыть ATragMX</Russian>
|
<Russian>Открыть ATragMX</Russian>
|
||||||
<Spanish>Abrir ATragMX</Spanish>
|
<Spanish>Abrir ATragMX</Spanish>
|
||||||
|
<French>Ouvrir ATragMX</French>
|
||||||
|
<German>ATragMX öffnen</German>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
<German>IR-Stroboskop befestigt</German>
|
<German>IR-Stroboskop befestigt</German>
|
||||||
<Spanish>Marcador IR acoplado</Spanish>
|
<Spanish>Marcador IR acoplado</Spanish>
|
||||||
<Polish>Przyczepiono stroboskop IR</Polish>
|
<Polish>Przyczepiono stroboskop IR</Polish>
|
||||||
<French>Strobe IR attaché</French>
|
<French>Balise IR attachée</French>
|
||||||
<Czech>IR Značkovač připnutý</Czech>
|
<Czech>IR Značkovač připnutý</Czech>
|
||||||
<Portuguese>Marcador IV Acoplado</Portuguese>
|
<Portuguese>Marcador IV Acoplado</Portuguese>
|
||||||
<Italian>Strobo IR attaccata</Italian>
|
<Italian>Strobo IR attaccata</Italian>
|
||||||
@ -54,7 +54,7 @@
|
|||||||
<German>IR-Stroboskop entfernt</German>
|
<German>IR-Stroboskop entfernt</German>
|
||||||
<Spanish>Marcador IR quitado</Spanish>
|
<Spanish>Marcador IR quitado</Spanish>
|
||||||
<Polish>Odczepiono stroboskop IR</Polish>
|
<Polish>Odczepiono stroboskop IR</Polish>
|
||||||
<French>Strobe IR détaché</French>
|
<French>Balise IR détachée</French>
|
||||||
<Czech>IR Značkovač odepnutý</Czech>
|
<Czech>IR Značkovač odepnutý</Czech>
|
||||||
<Portuguese>Marcador IV Separado</Portuguese>
|
<Portuguese>Marcador IV Separado</Portuguese>
|
||||||
<Italian>Strobo IR staccata</Italian>
|
<Italian>Strobo IR staccata</Italian>
|
||||||
@ -126,7 +126,7 @@
|
|||||||
<German>IR-Stroboskop</German>
|
<German>IR-Stroboskop</German>
|
||||||
<Spanish>Marcador IR</Spanish>
|
<Spanish>Marcador IR</Spanish>
|
||||||
<Polish>Stroboskop IR</Polish>
|
<Polish>Stroboskop IR</Polish>
|
||||||
<French>Strobe IR</French>
|
<French>Balise IR</French>
|
||||||
<Czech>IR Značkovač</Czech>
|
<Czech>IR Značkovač</Czech>
|
||||||
<Portuguese>Marcador IV</Portuguese>
|
<Portuguese>Marcador IV</Portuguese>
|
||||||
<Italian>Strobo IR</Italian>
|
<Italian>Strobo IR</Italian>
|
||||||
@ -138,7 +138,7 @@
|
|||||||
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
|
<German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
|
||||||
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
|
<Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
|
||||||
<Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
|
<Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
|
||||||
<French>Le Strobe IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
|
<French>La balise IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
|
||||||
<Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
|
<Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
|
||||||
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
|
<Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
|
||||||
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
|
<Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
|
||||||
@ -189,7 +189,7 @@
|
|||||||
<Portuguese>%1<br/>Acoplada</Portuguese>
|
<Portuguese>%1<br/>Acoplada</Portuguese>
|
||||||
<Italian>%1<br/>attaccata</Italian>
|
<Italian>%1<br/>attaccata</Italian>
|
||||||
<Hungarian>%1<br/>hozzácsatolva</Hungarian>
|
<Hungarian>%1<br/>hozzácsatolva</Hungarian>
|
||||||
<Russian>%1<br/>присоединена</Russian>
|
<Russian>%1<br/>присоединен(-а)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Attach_Item_Detached">
|
<Key ID="STR_ACE_Attach_Item_Detached">
|
||||||
<English>%1<br/>Detached</English>
|
<English>%1<br/>Detached</English>
|
||||||
@ -201,7 +201,7 @@
|
|||||||
<Portuguese>%1<br/>Separada</Portuguese>
|
<Portuguese>%1<br/>Separada</Portuguese>
|
||||||
<Italian>%1<br/>staccata</Italian>
|
<Italian>%1<br/>staccata</Italian>
|
||||||
<Hungarian>%1<br/>lecsatolva</Hungarian>
|
<Hungarian>%1<br/>lecsatolva</Hungarian>
|
||||||
<Russian>%1<br/>отсоединена</Russian>
|
<Russian>%1<br/>отсоединен(-а)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Edited with tabler. -->
|
|
||||||
<Project name="ACE">
|
<Project name="ACE">
|
||||||
<Package name="Magazines">
|
<Package name="Magazines">
|
||||||
<!-- MX -->
|
<!-- MX -->
|
||||||
@ -13,7 +12,7 @@
|
|||||||
<Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
|
<Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм трассирующих под ПНВ</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort">
|
||||||
<English>6.5mm IR-DIM</English>
|
<English>6.5mm IR-DIM</English>
|
||||||
@ -25,7 +24,7 @@
|
|||||||
<Czech>6.5mm IR-DIM</Czech>
|
<Czech>6.5mm IR-DIM</Czech>
|
||||||
<Portuguese>6,5mm IR-DIM</Portuguese>
|
<Portuguese>6,5mm IR-DIM</Portuguese>
|
||||||
<Italian>6.5 IR-DIM</Italian>
|
<Italian>6.5 IR-DIM</Italian>
|
||||||
<Russian>6.5 мм ИК-трассирующие</Russian>
|
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 6.5x39 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
<English>Caliber: 6.5x39 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||||
@ -37,7 +36,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39 mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
<Italian>Calibro: 6.5x39 mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм трассирующие под ПНВ<br />Патронов: 30<br />Применимы в: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDName">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDName">
|
||||||
<English>6.5mm 30Rnd SD Mag</English>
|
<English>6.5mm 30Rnd SD Mag</English>
|
||||||
@ -49,7 +48,7 @@
|
|||||||
<Czech>6.5mm 30ks SD Zásobník</Czech>
|
<Czech>6.5mm 30ks SD Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм дозвуковых</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм дозвуковых</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDNameShort">
|
||||||
<English>6.5mm SD</English>
|
<English>6.5mm SD</English>
|
||||||
@ -61,7 +60,7 @@
|
|||||||
<Czech>6.5mm SD</Czech>
|
<Czech>6.5mm SD</Czech>
|
||||||
<Portuguese>6,5mm SD</Portuguese>
|
<Portuguese>6,5mm SD</Portuguese>
|
||||||
<Italian>6.5mm Sil.</Italian>
|
<Italian>6.5mm Sil.</Italian>
|
||||||
<Russian>6.5 мм дозвуковые</Russian>
|
<Russian>6,5 мм дозвуковые</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDDescription">
|
||||||
<English>Caliber: 6.5x39 mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
<English>Caliber: 6.5x39 mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||||
@ -73,7 +72,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39 mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL </Italian>
|
<Italian>Calibro: 6.5x39 mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL </Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм дозвуковые<br />Патронов: 30<br />Применимы в: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APName">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APName">
|
||||||
<English>6.5mm 30Rnd AP Mag</English>
|
<English>6.5mm 30Rnd AP Mag</English>
|
||||||
@ -85,7 +84,7 @@
|
|||||||
<Czech>6.5mm 30ks AP Zásobník</Czech>
|
<Czech>6.5mm 30ks AP Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd AP</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd AP</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм бронебойных</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APNameShort">
|
||||||
<English>6.5mm AP</English>
|
<English>6.5mm AP</English>
|
||||||
@ -97,7 +96,7 @@
|
|||||||
<Czech>6.5mm AP</Czech>
|
<Czech>6.5mm AP</Czech>
|
||||||
<Portuguese>6,5mm AP</Portuguese>
|
<Portuguese>6,5mm AP</Portuguese>
|
||||||
<Italian>6.5mm AP</Italian>
|
<Italian>6.5mm AP</Italian>
|
||||||
<Russian>6.5 мм бронебойные</Russian>
|
<Russian>6,5 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APDescription">
|
||||||
<English>Caliber: 6.5x39 mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
<English>Caliber: 6.5x39 mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL</English>
|
||||||
@ -109,7 +108,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
<Czech>Ráže: 6.5x39 mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
<Italian>Calibro: 6.5x39 mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL</Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм бронебойные<br />Патронов: 30<br />Применимы в: MX/C/M/SW/3GL</Russian>
|
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- KATIBA -->
|
<!-- KATIBA -->
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName">
|
||||||
@ -122,7 +121,7 @@
|
|||||||
<Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
|
<Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм трассирующих под ПНВ</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort">
|
||||||
<English>6.5mm IR-DIM</English>
|
<English>6.5mm IR-DIM</English>
|
||||||
@ -134,7 +133,7 @@
|
|||||||
<Czech>6.5mm IR-DIM</Czech>
|
<Czech>6.5mm IR-DIM</Czech>
|
||||||
<Portuguese>6,5mm IR-DIM</Portuguese>
|
<Portuguese>6,5mm IR-DIM</Portuguese>
|
||||||
<Italian>6.5mm IR-DIM</Italian>
|
<Italian>6.5mm IR-DIM</Italian>
|
||||||
<Russian>6.5 мм ИК-трассирующие</Russian>
|
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 6.5x39 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba</English>
|
<English>Caliber: 6.5x39 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba</English>
|
||||||
@ -146,7 +145,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39 mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39 mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм трассирующие под ПНВ<br />Патронов: 30<br />Применимы в: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDName">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDName">
|
||||||
<English>6.5mm 30Rnd SD Mag</English>
|
<English>6.5mm 30Rnd SD Mag</English>
|
||||||
@ -158,7 +157,7 @@
|
|||||||
<Czech>6.5mm 30ks SD Zásobník</Czech>
|
<Czech>6.5mm 30ks SD Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм дозвуковых</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм дозвуковых</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDNameShort">
|
||||||
<English>6.5mm SD</English>
|
<English>6.5mm SD</English>
|
||||||
@ -170,7 +169,7 @@
|
|||||||
<Czech>6.5mm SD</Czech>
|
<Czech>6.5mm SD</Czech>
|
||||||
<Portuguese>6,5mm SD</Portuguese>
|
<Portuguese>6,5mm SD</Portuguese>
|
||||||
<Italian>6.5mm Sil.</Italian>
|
<Italian>6.5mm Sil.</Italian>
|
||||||
<Russian>6.5 мм дозвуковые</Russian>
|
<Russian>6,5 мм дозвуковые</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDDescription">
|
||||||
<English>Caliber: 6.5x39 mm SD<br />Rounds: 30<br />Used in: Katiba</English>
|
<English>Caliber: 6.5x39 mm SD<br />Rounds: 30<br />Used in: Katiba</English>
|
||||||
@ -182,7 +181,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm SD<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39 mm SD<br />Munice: 30<br />Použití: Katiba</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm SD<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm SD<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm Sil.<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39 mm Sil.<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм дозвуковые<br />Патронов: 30<br />Применимы в: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APName">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APName">
|
||||||
<English>6.5mm 30Rnd AP Mag</English>
|
<English>6.5mm 30Rnd AP Mag</English>
|
||||||
@ -194,7 +193,7 @@
|
|||||||
<Czech>6.5mm 30ks AP Zásobník</Czech>
|
<Czech>6.5mm 30ks AP Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
|
||||||
<Italian>Caricatore 6.5mm 30Rnd AP</Italian>
|
<Italian>Caricatore 6.5mm 30Rnd AP</Italian>
|
||||||
<Russian>Магазин из 30-ти 6.5 мм бронебойных</Russian>
|
<Russian>Магазин из 30-ти 6,5 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APNameShort">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APNameShort">
|
||||||
<English>6.5mm AP</English>
|
<English>6.5mm AP</English>
|
||||||
@ -206,7 +205,7 @@
|
|||||||
<Czech>6.5mm AP</Czech>
|
<Czech>6.5mm AP</Czech>
|
||||||
<Portuguese>6,5mm AP</Portuguese>
|
<Portuguese>6,5mm AP</Portuguese>
|
||||||
<Italian>6.5mm AP</Italian>
|
<Italian>6.5mm AP</Italian>
|
||||||
<Russian>6.5 мм бронебойные</Russian>
|
<Russian>6,5 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APDescription">
|
<Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APDescription">
|
||||||
<English>Caliber: 6.5x39 mm AP<br />Rounds: 30<br />Used in: Katiba</English>
|
<English>Caliber: 6.5x39 mm AP<br />Rounds: 30<br />Used in: Katiba</English>
|
||||||
@ -218,7 +217,7 @@
|
|||||||
<Czech>Ráže: 6.5x39 mm AP<br />Munice: 30<br />Použití: Katiba</Czech>
|
<Czech>Ráže: 6.5x39 mm AP<br />Munice: 30<br />Použití: Katiba</Czech>
|
||||||
<Portuguese>Calibre: 6,5x39 mm AP<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
<Portuguese>Calibre: 6,5x39 mm AP<br />Projéteis: 30<br />Usado em: Katiba</Portuguese>
|
||||||
<Italian>Calibro: 6.5x39 mm AP<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
<Italian>Calibro: 6.5x39 mm AP<br />Munizioni: 30<br />In uso su: Katiba</Italian>
|
||||||
<Russian>Калибр: 6.5x39 мм бронебойные<br />Патронов: 30<br />Применимы в: Katiba</Russian>
|
<Russian>Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- 5.56x45mm -->
|
<!-- 5.56x45mm -->
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimName">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimName">
|
||||||
@ -231,7 +230,7 @@
|
|||||||
<Czech>5.56mm 30ks Svítící IR-DIM Zásobník</Czech>
|
<Czech>5.56mm 30ks Svítící IR-DIM Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 5,56mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 5,56mm</Portuguese>
|
||||||
<Italian>Caricatore 5.56mm 30rnd Traccianti IR-DIM</Italian>
|
<Italian>Caricatore 5.56mm 30rnd Traccianti IR-DIM</Italian>
|
||||||
<Russian>Магазин из 30-ти 5.56 мм трассирующих под ПНВ</Russian>
|
<Russian>Магазин из 30-ти 5,56 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort">
|
||||||
<English>5.56mm IR-DIM</English>
|
<English>5.56mm IR-DIM</English>
|
||||||
@ -243,7 +242,7 @@
|
|||||||
<Czech>5.56mm IR-DIM</Czech>
|
<Czech>5.56mm IR-DIM</Czech>
|
||||||
<Portuguese>5,56mm IR-DIM</Portuguese>
|
<Portuguese>5,56mm IR-DIM</Portuguese>
|
||||||
<Italian>5.56mm IR-DIM</Italian>
|
<Italian>5.56mm IR-DIM</Italian>
|
||||||
<Russian>5.56 мм ИК-трассирующие</Russian>
|
<Russian>5,56 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 5.56x45 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
|
<English>Caliber: 5.56x45 mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
|
||||||
@ -255,7 +254,7 @@
|
|||||||
<Czech>Ráže: 5.56x45 mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
<Czech>Ráže: 5.56x45 mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
||||||
<Portuguese>Calibre: 5,56x45 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
<Portuguese>Calibre: 5,56x45 mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
||||||
<Italian>Calibro: 5.56x45 mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
<Italian>Calibro: 5.56x45 mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
||||||
<Russian>Калибр: 5.56x45 мм трассирующие под ПНВ<br />Патронов: 30<br />Применимы в: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
<Russian>Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APName">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_APName">
|
||||||
<English>5.56mm 30Rnd AP Mag</English>
|
<English>5.56mm 30Rnd AP Mag</English>
|
||||||
@ -267,7 +266,7 @@
|
|||||||
<Czech>5.56mm 30ks AP Zásobník</Czech>
|
<Czech>5.56mm 30ks AP Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 30 projéteis AP de 5,56mm</Portuguese>
|
<Portuguese>Carregador de 30 projéteis AP de 5,56mm</Portuguese>
|
||||||
<Italian>Caricatore 5.56mm 30Rnd AP</Italian>
|
<Italian>Caricatore 5.56mm 30Rnd AP</Italian>
|
||||||
<Russian>Магазин из 30-ти 5.56 мм бронебойных</Russian>
|
<Russian>Магазин из 30-ти 5,56 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APNameShort">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_APNameShort">
|
||||||
<English>5.56mm AP</English>
|
<English>5.56mm AP</English>
|
||||||
@ -279,7 +278,7 @@
|
|||||||
<Czech>5.56mm AP</Czech>
|
<Czech>5.56mm AP</Czech>
|
||||||
<Portuguese>5,56mm AP</Portuguese>
|
<Portuguese>5,56mm AP</Portuguese>
|
||||||
<Italian>5.56mm AP</Italian>
|
<Italian>5.56mm AP</Italian>
|
||||||
<Russian>5.56 мм бронебойные</Russian>
|
<Russian>5,56 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_mag_APDescription">
|
<Key ID="STR_ACE_30Rnd_556x45_mag_APDescription">
|
||||||
<English>Caliber: 5.56x45 mm AP<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
|
<English>Caliber: 5.56x45 mm AP<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
|
||||||
@ -291,7 +290,7 @@
|
|||||||
<Czech>Ráže: 5.56x45 mm AP<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
<Czech>Ráže: 5.56x45 mm AP<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
|
||||||
<Portuguese>Calibre: 5,56x45 mm AP<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
<Portuguese>Calibre: 5,56x45 mm AP<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
|
||||||
<Italian>Calibro: 5.56x45 mm AP<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
<Italian>Calibro: 5.56x45 mm AP<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
|
||||||
<Russian>Калибр: 5.56x45 мм бронебойные<br />Патронов: 30<br />Применимы в: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
<Russian>Калибр: 5,56x45 мм бронебойные<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- 7.62x51mm -->
|
<!-- 7.62x51mm -->
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerName">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerName">
|
||||||
@ -304,7 +303,7 @@
|
|||||||
<Czech>7.62mm 20ks Svítící Zásobník</Czech>
|
<Czech>7.62mm 20ks Svítící Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 20 projéteis traçantes de 7,62mm</Portuguese>
|
<Portuguese>Carregador de 20 projéteis traçantes de 7,62mm</Portuguese>
|
||||||
<Italian>Caricatore 7.62mm 20Rnd Traccianti</Italian>
|
<Italian>Caricatore 7.62mm 20Rnd Traccianti</Italian>
|
||||||
<Russian>Магазин из 20-ти 7.62 мм трассирующих</Russian>
|
<Russian>Магазин из 20-ти 7,62 мм трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerNameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerNameShort">
|
||||||
<English>7.62mm Tracer</English>
|
<English>7.62mm Tracer</English>
|
||||||
@ -316,7 +315,7 @@
|
|||||||
<Czech>7.62mm Svítící</Czech>
|
<Czech>7.62mm Svítící</Czech>
|
||||||
<Portuguese>7,62mm Traçante</Portuguese>
|
<Portuguese>7,62mm Traçante</Portuguese>
|
||||||
<Italian>7.62mm Traccianti</Italian>
|
<Italian>7.62mm Traccianti</Italian>
|
||||||
<Russian>7.62 мм трассирущие</Russian>
|
<Russian>7,62 мм трассирущие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerDescription">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_TracerDescription">
|
||||||
<English>Caliber: 7.62x51 mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
<English>Caliber: 7.62x51 mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
||||||
@ -328,7 +327,7 @@
|
|||||||
<Czech>Ráže: 7.62x51 mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51 mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51 mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51 mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51 mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51 mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7.62x51 мм трассирующие<br />Патронов: 20<br />Применимы в: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimName">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimName">
|
||||||
<English>7.62mm 20rnd Tracer IR-DIM Mag</English>
|
<English>7.62mm 20rnd Tracer IR-DIM Mag</English>
|
||||||
@ -340,7 +339,7 @@
|
|||||||
<Czech>7.62mm 20ks Svítící IR-DIM Zásobník</Czech>
|
<Czech>7.62mm 20ks Svítící IR-DIM Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 20 projéteis IR-DIM de 7,62mm</Portuguese>
|
<Portuguese>Carregador de 20 projéteis IR-DIM de 7,62mm</Portuguese>
|
||||||
<Italian>Caricatore 7.62mm 20rnd Traccianti IR-DIM</Italian>
|
<Italian>Caricatore 7.62mm 20rnd Traccianti IR-DIM</Italian>
|
||||||
<Russian>Магазин из 20-ти 7.62 мм трассирующих под ПНВ</Russian>
|
<Russian>Магазин из 20-ти 7,62 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort">
|
||||||
<English>7.62mm IR-DIM</English>
|
<English>7.62mm IR-DIM</English>
|
||||||
@ -352,7 +351,7 @@
|
|||||||
<Czech>7.62mm IR-DIM</Czech>
|
<Czech>7.62mm IR-DIM</Czech>
|
||||||
<Portuguese>7,62mm IR-DIM</Portuguese>
|
<Portuguese>7,62mm IR-DIM</Portuguese>
|
||||||
<Italian>7.62mm IR-DIM</Italian>
|
<Italian>7.62mm IR-DIM</Italian>
|
||||||
<Russian>7.62 мм ИК-трассирующие</Russian>
|
<Russian>7,62 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 7.62x51 mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
<English>Caliber: 7.62x51 mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
||||||
@ -364,7 +363,7 @@
|
|||||||
<Czech>Ráže: 7.62x51 mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51 mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51 mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51 mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51 mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51 mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7.62x51 мм трассирующие под ПНВ<br />Патронов: 20<br />Применимы в: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_SDName">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_SDName">
|
||||||
<English>7.62mm 20Rnd SD Mag</English>
|
<English>7.62mm 20Rnd SD Mag</English>
|
||||||
@ -376,7 +375,7 @@
|
|||||||
<Czech>7.62mm 20ks SD Zásobník</Czech>
|
<Czech>7.62mm 20ks SD Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 20 projéteis SD de 7,62mm</Portuguese>
|
<Portuguese>Carregador de 20 projéteis SD de 7,62mm</Portuguese>
|
||||||
<Italian>Caricatore 7.62mm 20Rnd Sil.</Italian>
|
<Italian>Caricatore 7.62mm 20Rnd Sil.</Italian>
|
||||||
<Russian>Магазин из 20-ти 7.62 мм дозвуковых</Russian>
|
<Russian>Магазин из 20-ти 7,62 мм дозвуковых</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_SDNameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_SDNameShort">
|
||||||
<English>7.62mm SD</English>
|
<English>7.62mm SD</English>
|
||||||
@ -388,7 +387,7 @@
|
|||||||
<Czech>7.62mm SD</Czech>
|
<Czech>7.62mm SD</Czech>
|
||||||
<Portuguese>7,62mm SD</Portuguese>
|
<Portuguese>7,62mm SD</Portuguese>
|
||||||
<Italian>7.62mm Sil.</Italian>
|
<Italian>7.62mm Sil.</Italian>
|
||||||
<Russian>7.62 мм дозвуковые</Russian>
|
<Russian>7,62 мм дозвуковые</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_SDDescription">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_SDDescription">
|
||||||
<English>Caliber: 7.62x51 mm SD<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
<English>Caliber: 7.62x51 mm SD<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
||||||
@ -400,7 +399,7 @@
|
|||||||
<Czech>Ráže: 7.62x51 mm SD<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51 mm SD<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51 mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51 mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51 mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51 mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7.62x51 мм дозвуковые<br />Патронов: 20<br />Применимы в: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APName">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_APName">
|
||||||
<English>7.62mm 20Rnd AP Mag</English>
|
<English>7.62mm 20Rnd AP Mag</English>
|
||||||
@ -412,7 +411,7 @@
|
|||||||
<Czech>7.62mm 20ks AP Zásobník</Czech>
|
<Czech>7.62mm 20ks AP Zásobník</Czech>
|
||||||
<Portuguese>Carregador de 20 projéteis AP de 7,62mm</Portuguese>
|
<Portuguese>Carregador de 20 projéteis AP de 7,62mm</Portuguese>
|
||||||
<Italian>Caricatore 7.62mm 20Rnd AP</Italian>
|
<Italian>Caricatore 7.62mm 20Rnd AP</Italian>
|
||||||
<Russian>Магазин из 20-ти 7.62 мм бронебойных</Russian>
|
<Russian>Магазин из 20-ти 7,62 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APNameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_APNameShort">
|
||||||
<English>7.62mm AP</English>
|
<English>7.62mm AP</English>
|
||||||
@ -424,7 +423,7 @@
|
|||||||
<Czech>7.62mm AP</Czech>
|
<Czech>7.62mm AP</Czech>
|
||||||
<Portuguese>7,62mm AP</Portuguese>
|
<Portuguese>7,62mm AP</Portuguese>
|
||||||
<Italian>7.62mm AP</Italian>
|
<Italian>7.62mm AP</Italian>
|
||||||
<Russian>7.62 мм бронебойные</Russian>
|
<Russian>7,62 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_mag_APDescription">
|
<Key ID="STR_ACE_20Rnd_762x51_mag_APDescription">
|
||||||
<English>Caliber: 7.62x51 mm AP<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
<English>Caliber: 7.62x51 mm AP<br />Rounds: 20<br />Used in: Mk18 ABR</English>
|
||||||
@ -436,7 +435,7 @@
|
|||||||
<Czech>Ráže: 7.62x51 mm AP<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
<Czech>Ráže: 7.62x51 mm AP<br />Munice: 20<br />Použití: Mk18 ABR</Czech>
|
||||||
<Portuguese>Calibre: 7,62x51 mm AP<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
<Portuguese>Calibre: 7,62x51 mm AP<br />Projéteis: 20<br />Usado em: Mk18 ABR</Portuguese>
|
||||||
<Italian>Calibro: 7.62x51 mm AP<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
<Italian>Calibro: 7.62x51 mm AP<br />Munizioni: 20<br />In uso su: Mk18 ABR</Italian>
|
||||||
<Russian>Калибр: 7.62x51 мм дозвуковые<br />Патронов: 20<br />Применимы в: Mk18 ABR</Russian>
|
<Russian>Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- .338 Norma Magnum -->
|
<!-- .338 Norma Magnum -->
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_TracerName">
|
<Key ID="STR_ACE_130Rnd_338_Mag_TracerName">
|
||||||
@ -445,6 +444,7 @@
|
|||||||
<Polish>Taśma .338 NM 130rd Smugacz</Polish>
|
<Polish>Taśma .338 NM 130rd Smugacz</Polish>
|
||||||
<French>Bande .338 NM 130Cps Traçante</French>
|
<French>Bande .338 NM 130Cps Traçante</French>
|
||||||
<Spanish>Cinta de 130 balas trazadoras de .338 NM</Spanish>
|
<Spanish>Cinta de 130 balas trazadoras de .338 NM</Spanish>
|
||||||
|
<Russian>Лента из 130-ти .338 NM трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_TracerNameShort">
|
<Key ID="STR_ACE_130Rnd_338_Mag_TracerNameShort">
|
||||||
<English>.338 NM Tracer</English>
|
<English>.338 NM Tracer</English>
|
||||||
@ -453,6 +453,7 @@
|
|||||||
<Czech>.338 NM Svítící</Czech>
|
<Czech>.338 NM Svítící</Czech>
|
||||||
<French>.338 NM Traçante</French>
|
<French>.338 NM Traçante</French>
|
||||||
<Spanish>.338 NM trazadora</Spanish>
|
<Spanish>.338 NM trazadora</Spanish>
|
||||||
|
<Russian>.338 NM трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_TracerDescription">
|
<Key ID="STR_ACE_130Rnd_338_Mag_TracerDescription">
|
||||||
<English>Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG</English>
|
<English>Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG</English>
|
||||||
@ -460,6 +461,7 @@
|
|||||||
<Polish>Kaliber: .338 Norma Magnum Smugacz<br />Pociski: 130<br />Używany w: SPMG</Polish>
|
<Polish>Kaliber: .338 Norma Magnum Smugacz<br />Pociski: 130<br />Używany w: SPMG</Polish>
|
||||||
<French>Calibre: .338 Norma Magnum Traçante<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
<French>Calibre: .338 Norma Magnum Traçante<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
||||||
<Spanish>Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
|
<Russian>Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimName">
|
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimName">
|
||||||
<English>.338 NM 130Rnd IR-DIM Belt</English>
|
<English>.338 NM 130Rnd IR-DIM Belt</English>
|
||||||
@ -467,6 +469,7 @@
|
|||||||
<Polish>Taśma .338 NM 130rd IR-DIM</Polish>
|
<Polish>Taśma .338 NM 130rd IR-DIM</Polish>
|
||||||
<French>Bande .338 NM 130Cps IR-DIM</French>
|
<French>Bande .338 NM 130Cps IR-DIM</French>
|
||||||
<Spanish>Cinta de 130 balas IR-DIM de .338 NM</Spanish>
|
<Spanish>Cinta de 130 balas IR-DIM de .338 NM</Spanish>
|
||||||
|
<Russian>Лента из 130-ти .338 NM ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
|
||||||
<English>.338 NM IR-DIM</English>
|
<English>.338 NM IR-DIM</English>
|
||||||
@ -475,6 +478,7 @@
|
|||||||
<Czech>.338 NM IR-DIM</Czech>
|
<Czech>.338 NM IR-DIM</Czech>
|
||||||
<French>.338 NM IR-DIM</French>
|
<French>.338 NM IR-DIM</French>
|
||||||
<Spanish>.338 NM IR-DIM</Spanish>
|
<Spanish>.338 NM IR-DIM</Spanish>
|
||||||
|
<Russian>.338 NM ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimDescription">
|
||||||
<English>Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG</English>
|
<English>Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG</English>
|
||||||
@ -482,6 +486,7 @@
|
|||||||
<Polish>Kaliber: .338 Norma Magnum Smugacz IR-DIM<br />Pociski: 130<br />Używany w: SPMG</Polish>
|
<Polish>Kaliber: .338 Norma Magnum Smugacz IR-DIM<br />Pociski: 130<br />Używany w: SPMG</Polish>
|
||||||
<French>Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
<French>Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
||||||
<Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
|
<Russian>Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_APName">
|
<Key ID="STR_ACE_130Rnd_338_Mag_APName">
|
||||||
<English>.338 NM 130Rnd AP Belt</English>
|
<English>.338 NM 130Rnd AP Belt</English>
|
||||||
@ -489,6 +494,7 @@
|
|||||||
<Polish>Taśma .338 NM 130rd AP</Polish>
|
<Polish>Taśma .338 NM 130rd AP</Polish>
|
||||||
<French>Bande .338 NM 130Cps AP</French>
|
<French>Bande .338 NM 130Cps AP</French>
|
||||||
<Spanish>Cinta de 130 balas AP de .338 NM</Spanish>
|
<Spanish>Cinta de 130 balas AP de .338 NM</Spanish>
|
||||||
|
<Russian>Лента из 130-ти .338 NM бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_APNameShort">
|
<Key ID="STR_ACE_130Rnd_338_Mag_APNameShort">
|
||||||
<English>.338 NM AP</English>
|
<English>.338 NM AP</English>
|
||||||
@ -497,6 +503,7 @@
|
|||||||
<Czech>.338 NM AP</Czech>
|
<Czech>.338 NM AP</Czech>
|
||||||
<French>.338 NM AP</French>
|
<French>.338 NM AP</French>
|
||||||
<Spanish>.338 NM AP</Spanish>
|
<Spanish>.338 NM AP</Spanish>
|
||||||
|
<Russian>.338 NM бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_130Rnd_338_Mag_APDescription">
|
<Key ID="STR_ACE_130Rnd_338_Mag_APDescription">
|
||||||
<English>Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG</English>
|
<English>Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG</English>
|
||||||
@ -504,6 +511,7 @@
|
|||||||
<Polish>Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG</Polish>
|
<Polish>Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG</Polish>
|
||||||
<French>Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
<French>Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé dans: SPMG</French>
|
||||||
<Spanish>Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
<Spanish>Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG</Spanish>
|
||||||
|
<Russian>Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- 9.3x64mm 10Rnd -->
|
<!-- 9.3x64mm 10Rnd -->
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName">
|
||||||
@ -512,6 +520,7 @@
|
|||||||
<Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
|
<Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
|
||||||
<French>Chargeur 9.3mm 10Cps Traçante</French>
|
<French>Chargeur 9.3mm 10Cps Traçante</French>
|
||||||
<Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
|
<Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 9,3 мм трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort">
|
||||||
<English>9.3mm Tracer</English>
|
<English>9.3mm Tracer</English>
|
||||||
@ -520,6 +529,7 @@
|
|||||||
<Czech>9.3mm Svítící</Czech>
|
<Czech>9.3mm Svítící</Czech>
|
||||||
<French>9.3mm Traçante</French>
|
<French>9.3mm Traçante</French>
|
||||||
<Spanish>9.3mm trazadora</Spanish>
|
<Spanish>9.3mm trazadora</Spanish>
|
||||||
|
<Russian>9,3 мм трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription">
|
||||||
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus</English>
|
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||||
@ -527,6 +537,7 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
<Polish>Kaliber: 9,3x64 mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||||
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
||||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName">
|
||||||
<English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
|
<English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
|
||||||
@ -534,6 +545,7 @@
|
|||||||
<Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
|
||||||
<French>Chargeur 9.3mm 10Cps Traçante IR-DIM</French>
|
<French>Chargeur 9.3mm 10Cps Traçante IR-DIM</French>
|
||||||
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 9,3 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort">
|
||||||
<English>9.3mm IR-DIM</English>
|
<English>9.3mm IR-DIM</English>
|
||||||
@ -542,6 +554,7 @@
|
|||||||
<Czech>9.3mm IR-DIM</Czech>
|
<Czech>9.3mm IR-DIM</Czech>
|
||||||
<French>9.3mm IR-DIM</French>
|
<French>9.3mm IR-DIM</French>
|
||||||
<Spanish>9.3mm IR-DIM</Spanish>
|
<Spanish>9.3mm IR-DIM</Spanish>
|
||||||
|
<Russian>9,3 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus</English>
|
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||||
@ -549,6 +562,7 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
<Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||||
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
||||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
|
||||||
<English>9.3mm 10Rnd AP Mag</English>
|
<English>9.3mm 10Rnd AP Mag</English>
|
||||||
@ -556,6 +570,7 @@
|
|||||||
<Polish>Magazynek 9,3mm 10rd AP</Polish>
|
<Polish>Magazynek 9,3mm 10rd AP</Polish>
|
||||||
<French>Chargeur 9.3mm 10Cps AP</French>
|
<French>Chargeur 9.3mm 10Cps AP</French>
|
||||||
<Spanish>Cargador de 10 balas AP de 9.3mm</Spanish>
|
<Spanish>Cargador de 10 balas AP de 9.3mm</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 9,3 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
|
||||||
<English>9.3mm AP</English>
|
<English>9.3mm AP</English>
|
||||||
@ -564,6 +579,7 @@
|
|||||||
<Czech>9.3mm AP</Czech>
|
<Czech>9.3mm AP</Czech>
|
||||||
<French>9.3mm AP</French>
|
<French>9.3mm AP</French>
|
||||||
<Spanish>9.3mm AP</Spanish>
|
<Spanish>9.3mm AP</Spanish>
|
||||||
|
<Russian>9,3 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
|
<Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
|
||||||
<English>Caliber: 9.3x64mm AP<br />Rounds: 10<br />Used in: Cyrus</English>
|
<English>Caliber: 9.3x64mm AP<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||||
@ -571,6 +587,7 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm AP<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
<Polish>Kaliber: 9,3x64 mm AP<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||||
<French>Calibre: 9.3x64mm AP<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
<French>Calibre: 9.3x64mm AP<br />Cartouches: 10<br />Utilisé dans: Cyrus</French>
|
||||||
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<!-- 9.3x64mm 150Rnd Belt-->
|
<!-- 9.3x64mm 150Rnd Belt-->
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
|
||||||
@ -579,6 +596,7 @@
|
|||||||
<Polish>Taśma 9,3mm 150rd Smugacz</Polish>
|
<Polish>Taśma 9,3mm 150rd Smugacz</Polish>
|
||||||
<French>Bande 9.3mm 150Cps Traçante</French>
|
<French>Bande 9.3mm 150Cps Traçante</French>
|
||||||
<Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
|
<Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
|
||||||
|
<Russian>Лента из 150-ти 9,3 мм трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerNameShort">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerNameShort">
|
||||||
<English>9.3mm Tracer</English>
|
<English>9.3mm Tracer</English>
|
||||||
@ -587,6 +605,7 @@
|
|||||||
<Czech>9.3mm Svítící</Czech>
|
<Czech>9.3mm Svítící</Czech>
|
||||||
<French>9.3mm Traçante</French>
|
<French>9.3mm Traçante</French>
|
||||||
<Spanish>9.3mm trazadora</Spanish>
|
<Spanish>9.3mm trazadora</Spanish>
|
||||||
|
<Russian>9,3 мм трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerDescription">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_TracerDescription">
|
||||||
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid</English>
|
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid</English>
|
||||||
@ -594,6 +613,7 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm Smugacz<br />Pociski: 150<br />Używane w: Navid</Polish>
|
<Polish>Kaliber: 9,3x64 mm Smugacz<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||||
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
||||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimName">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimName">
|
||||||
<English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
|
<English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
|
||||||
@ -601,6 +621,7 @@
|
|||||||
<Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
|
<Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
|
||||||
<French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
|
<French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
|
||||||
<Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
<Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
||||||
|
<Russian>Лента из 150-ти 9,3 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort">
|
||||||
<English>9.3mm IR-DIM</English>
|
<English>9.3mm IR-DIM</English>
|
||||||
@ -609,6 +630,7 @@
|
|||||||
<Czech>9.3mm IR-DIM</Czech>
|
<Czech>9.3mm IR-DIM</Czech>
|
||||||
<French>9.3mm IR-DIM</French>
|
<French>9.3mm IR-DIM</French>
|
||||||
<Spanish>9.3mm IR-DIM</Spanish>
|
<Spanish>9.3mm IR-DIM</Spanish>
|
||||||
|
<Russian>9,3 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription">
|
||||||
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid</English>
|
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid</English>
|
||||||
@ -616,6 +638,7 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid</Polish>
|
<Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||||
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
||||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_APName">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_APName">
|
||||||
<English>9.3mm 150Rnd AP Belt</English>
|
<English>9.3mm 150Rnd AP Belt</English>
|
||||||
@ -623,6 +646,7 @@
|
|||||||
<Polish>Taśma 9,3mm 150rd AP</Polish>
|
<Polish>Taśma 9,3mm 150rd AP</Polish>
|
||||||
<French>Bande 9.3mm 150Cps AP</French>
|
<French>Bande 9.3mm 150Cps AP</French>
|
||||||
<Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
|
<Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
|
||||||
|
<Russian>Лента из 150-ти 9,3 мм бронебойных</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_APNameShort">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_APNameShort">
|
||||||
<English>9.3mm AP</English>
|
<English>9.3mm AP</English>
|
||||||
@ -631,6 +655,7 @@
|
|||||||
<Czech>9.3mm AP</Czech>
|
<Czech>9.3mm AP</Czech>
|
||||||
<French>9.3mm AP</French>
|
<French>9.3mm AP</French>
|
||||||
<Spanish>9.3mm AP</Spanish>
|
<Spanish>9.3mm AP</Spanish>
|
||||||
|
<Russian>9,3 мм бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_150Rnd_93x64_Mag_APDescription">
|
<Key ID="STR_ACE_150Rnd_93x64_Mag_APDescription">
|
||||||
<English>Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid</English>
|
<English>Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid</English>
|
||||||
@ -638,333 +663,406 @@
|
|||||||
<Polish>Kaliber: 9,3x64 mm AP<br />Pociski: 150<br />Używane w: Navid</Polish>
|
<Polish>Kaliber: 9,3x64 mm AP<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||||
<French>Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
<French>Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé dans: Navid</French>
|
||||||
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||||
|
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_16Rnd_9x19_mag_Name">
|
<Key ID="STR_ACE_16Rnd_9x19_mag_Name">
|
||||||
<English>9x19mm 16Rnd Mag</English>
|
<English>9x19mm 16Rnd Mag</English>
|
||||||
<Polish>Magazynek 9x19mm 16rd</Polish>
|
<Polish>Magazynek 9x19mm 16rd</Polish>
|
||||||
<French>Chargeur 9x19mm 16Cps</French>
|
<French>Chargeur 9x19mm 16Cps</French>
|
||||||
<Spanish>Cargador de 16 balas de 9x19mm</Spanish>
|
<Spanish>Cargador de 16 balas de 9x19mm</Spanish>
|
||||||
|
<Russian>Магазин из 16-ти 9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_16Rnd_9x19_mag_NameShort">
|
<Key ID="STR_ACE_16Rnd_9x19_mag_NameShort">
|
||||||
<English>9x19mm</English>
|
<English>9x19mm</English>
|
||||||
<Polish>9x19mm</Polish>
|
<Polish>9x19mm</Polish>
|
||||||
<French>9x19mm</French>
|
<French>9x19mm</French>
|
||||||
<Spanish>9x19mm</Spanish>
|
<Spanish>9x19mm</Spanish>
|
||||||
|
<Russian>9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_16Rnd_9x19_mag_Description">
|
<Key ID="STR_ACE_16Rnd_9x19_mag_Description">
|
||||||
<English>9x19mm 30Rnd Mag</English>
|
<English>9x19mm 30Rnd Mag</English>
|
||||||
<Polish>Magazynek 9x19mm 16rd</Polish>
|
<Polish>Magazynek 9x19mm 16rd</Polish>
|
||||||
<French>9x19mm 30Cps</French>
|
<French>9x19mm 30Cps</French>
|
||||||
<Spanish>Cargador de 16 balas de 9x19mm</Spanish>
|
<Spanish>Cargador de 16 balas de 9x19mm</Spanish>
|
||||||
|
<Russian>Магазин из 16-ти 9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_9x19_mag_Name">
|
<Key ID="STR_ACE_30Rnd_9x19_mag_Name">
|
||||||
<English>9x19mm 30Rnd Mag</English>
|
<English>9x19mm 30Rnd Mag</English>
|
||||||
<Polish>Magazynek 9x19mm 30rd</Polish>
|
<Polish>Magazynek 9x19mm 30rd</Polish>
|
||||||
<French>9x19mm 30Cps</French>
|
<French>9x19mm 30Cps</French>
|
||||||
<Spanish>Cargador de 30 balas de 9x19mm</Spanish>
|
<Spanish>Cargador de 30 balas de 9x19mm</Spanish>
|
||||||
|
<Russian>Магазин из 30-ти 9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_9x19_mag_NameShort">
|
<Key ID="STR_ACE_30Rnd_9x19_mag_NameShort">
|
||||||
<English>9x19mm</English>
|
<English>9x19mm</English>
|
||||||
<Polish>9x19mm</Polish>
|
<Polish>9x19mm</Polish>
|
||||||
<French>9x19mm</French>
|
<French>9x19mm</French>
|
||||||
<Spanish>9x19mm</Spanish>
|
<Spanish>9x19mm</Spanish>
|
||||||
|
<Russian>9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_9x19_mag_Description">
|
<Key ID="STR_ACE_30Rnd_9x19_mag_Description">
|
||||||
<English>9x19mm 30Rnd Mag</English>
|
<English>9x19mm 30Rnd Mag</English>
|
||||||
<Polish>Magazynek 9x19mm 30rd</Polish>
|
<Polish>Magazynek 9x19mm 30rd</Polish>
|
||||||
<French>9x19mm 30Cps</French>
|
<French>9x19mm 30Cps</French>
|
||||||
<Spanish>Cargador de 30 balas de 9x19mm</Spanish>
|
<Spanish>Cargador de 30 balas de 9x19mm</Spanish>
|
||||||
|
<Russian>Магазин из 30-ти 9х19 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Name">
|
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Name">
|
||||||
<English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
|
<English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
|
||||||
<Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
|
||||||
<French>Chargeur 7.62x54mm 10Rnd Traçante IR-DIM</French>
|
<French>Chargeur 7.62x54mm 10Rnd Traçante IR-DIM</French>
|
||||||
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
|
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_NameShort">
|
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_NameShort">
|
||||||
<English>7.62mm IR-DIM</English>
|
<English>7.62mm IR-DIM</English>
|
||||||
<Polish>7,62mm IR-DIM</Polish>
|
<Polish>7,62mm IR-DIM</Polish>
|
||||||
<French>7.62mm IR-DIM</French>
|
<French>7.62mm IR-DIM</French>
|
||||||
<Spanish>7.62mm IR-DIM</Spanish>
|
<Spanish>7.62mm IR-DIM</Spanish>
|
||||||
|
<Russian>7,62 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Description">
|
<Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Description">
|
||||||
<English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
|
<English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
|
||||||
<Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
|
||||||
<French>Chargeur 7.62x54mm 10Cps Traçante IR-DIM</French>
|
<French>Chargeur 7.62x54mm 10Cps Traçante IR-DIM</French>
|
||||||
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
|
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName">
|
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName">
|
||||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
||||||
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
||||||
<French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
|
<French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
|
||||||
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||||
|
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
|
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
|
||||||
<English>6.5mm IR-DIM</English>
|
<English>6.5mm IR-DIM</English>
|
||||||
<Polish>6,5mm IR-DIM</Polish>
|
<Polish>6,5mm IR-DIM</Polish>
|
||||||
<French>6.5mm IR-DIM</French>
|
<French>6.5mm IR-DIM</French>
|
||||||
<Spanish>6.5mm IR-DIM</Spanish>
|
<Spanish>6.5mm IR-DIM</Spanish>
|
||||||
|
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
<Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
||||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
||||||
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
||||||
<French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
|
<French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
|
||||||
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||||
|
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName">
|
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName">
|
||||||
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
||||||
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
||||||
<French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
|
<French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
|
||||||
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||||
|
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
|
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
|
||||||
<English>6.5mm IR-DIM</English>
|
<English>6.5mm IR-DIM</English>
|
||||||
<Polish>6,5mm IR-DIM</Polish>
|
<Polish>6,5mm IR-DIM</Polish>
|
||||||
<French>6.5mm IR-DIM</French>
|
<French>6.5mm IR-DIM</French>
|
||||||
<Spanish>6.5mm IR-DIM</Spanish>
|
<Spanish>6.5mm IR-DIM</Spanish>
|
||||||
|
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription">
|
<Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription">
|
||||||
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
||||||
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
||||||
<French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
|
<French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
|
||||||
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||||
|
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name">
|
||||||
<English>5.56mm 30Rnd Mag (Mk262)</English>
|
<English>5.56mm 30Rnd Mag (Mk262)</English>
|
||||||
<Polish>Magazynek 5,56mm 30rd Mk262</Polish>
|
<Polish>Magazynek 5,56mm 30rd Mk262</Polish>
|
||||||
<French>5.56mm 30Cps (Mk262)</French>
|
<French>5.56mm 30Cps (Mk262)</French>
|
||||||
<Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
|
<Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
|
||||||
|
<Russian>Магазин из 30-ти 5.56 мм Mk262</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
|
||||||
<English>5.56mm Mk262</English>
|
<English>5.56mm Mk262</English>
|
||||||
<Polish>5,56mm Mk262</Polish>
|
<Polish>5,56mm Mk262</Polish>
|
||||||
<French>5.56mm Mk262</French>
|
<French>5.56mm Mk262</French>
|
||||||
<Spanish>5.56mm (Mk262)</Spanish>
|
<Spanish>5.56mm (Mk262)</Spanish>
|
||||||
|
<Russian>5,56 мм Mk262</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description">
|
||||||
<English>Caliber: 5.56x45 mm NATO (Mk262)<br />Rounds: 30</English>
|
<English>Caliber: 5.56x45 mm NATO (Mk262)<br />Rounds: 30</English>
|
||||||
<Polish>Kaliber: 5,56x45 mm NATO (Mk262)<br />Pociski: 30</Polish>
|
<Polish>Kaliber: 5,56x45 mm NATO (Mk262)<br />Pociski: 30</Polish>
|
||||||
<French>Calibre: 5.56x45 mm NATO (Mk262)<br />Cartouches: 30</French>
|
<French>Calibre: 5.56x45 mm NATO (Mk262)<br />Cartouches: 30</French>
|
||||||
<Spanish>Calibre: 5.56x45 mm NATO (Mk262)<br />Balas: 30</Spanish>
|
<Spanish>Calibre: 5.56x45 mm NATO (Mk262)<br />Balas: 30</Spanish>
|
||||||
|
<Russian>Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
|
||||||
<English>5.56mm 30Rnd Mag (Mk318)</English>
|
<English>5.56mm 30Rnd Mag (Mk318)</English>
|
||||||
<Polish>Magazynek 5,56mm 30rd Mk318</Polish>
|
<Polish>Magazynek 5,56mm 30rd Mk318</Polish>
|
||||||
<French>5.56mm 30Cps (Mk318)</French>
|
<French>5.56mm 30Cps (Mk318)</French>
|
||||||
<Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
|
<Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
|
||||||
|
<Russian>Магазин из 30-ти 5.56 мм Mk318</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
|
||||||
<English>5.56mm Mk318</English>
|
<English>5.56mm Mk318</English>
|
||||||
<Polish>5,56mm Mk318</Polish>
|
<Polish>5,56mm Mk318</Polish>
|
||||||
<French>5.56mm Mk318</French>
|
<French>5.56mm Mk318</French>
|
||||||
<Spanish>5.56mm (Mk318)</Spanish>
|
<Spanish>5.56mm (Mk318)</Spanish>
|
||||||
|
<Russian>5.56 мм Mk318</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description">
|
<Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description">
|
||||||
<English>Caliber: 5.56x45 mm NATO (Mk318)<br />Rounds: 30</English>
|
<English>Caliber: 5.56x45 mm NATO (Mk318)<br />Rounds: 30</English>
|
||||||
<Polish>Kaliber: 5,56x45 mm NATO (Mk318)<br />Pociski: 30</Polish>
|
<Polish>Kaliber: 5,56x45 mm NATO (Mk318)<br />Pociski: 30</Polish>
|
||||||
<French>Calibre: 5.56x45 mm NATO (Mk318)<br />Cartouches: 30</French>
|
<French>Calibre: 5.56x45 mm NATO (Mk318)<br />Cartouches: 30</French>
|
||||||
<Spanish>Calibre: 5.56x45 mm NATO (Mk318)<br />Balas: 30</Spanish>
|
<Spanish>Calibre: 5.56x45 mm NATO (Mk318)<br />Balas: 30</Spanish>
|
||||||
|
<Russian>Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
|
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
|
||||||
<English>7.62mm 10Rnd Mag (M118LR)</English>
|
<English>7.62mm 10Rnd Mag (M118LR)</English>
|
||||||
<Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
|
<Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
|
||||||
<French>7.62mm 10Cps (M118LR)</French>
|
<French>7.62mm 10Cps (M118LR)</French>
|
||||||
<Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
|
<Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 7,62 мм (M118LR)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort">
|
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort">
|
||||||
<English>7.62mm M118LR</English>
|
<English>7.62mm M118LR</English>
|
||||||
<Polish>7,62mm M118LR</Polish>
|
<Polish>7,62mm M118LR</Polish>
|
||||||
<French>7.62mm M118LR</French>
|
<French>7.62mm M118LR</French>
|
||||||
<Spanish>7.62mm (M118LR)</Spanish>
|
<Spanish>7.62mm (M118LR)</Spanish>
|
||||||
|
<Russian>7,62 мм M118LR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Description">
|
<Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Description">
|
||||||
<English>Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 10</English>
|
<English>Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 10</English>
|
||||||
<Polish>Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 10</Polish>
|
<Polish>Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 10</Polish>
|
||||||
<French>Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 10</French>
|
<French>Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 10</French>
|
||||||
<Spanish>Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 10</Spanish>
|
<Spanish>Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 10</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Name">
|
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Name">
|
||||||
<English>7.62mm 20Rnd Mag (M118LR)</English>
|
<English>7.62mm 20Rnd Mag (M118LR)</English>
|
||||||
<Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
|
<Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
|
||||||
<French>7.62mm 20Cps (M118LR)</French>
|
<French>7.62mm 20Cps (M118LR)</French>
|
||||||
<Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
|
<Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
|
||||||
|
<Russian>Магазин из 20-ти 7,62 мм (M118LR)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort">
|
||||||
<English>7.62mm M118LR</English>
|
<English>7.62mm M118LR</English>
|
||||||
<Polish>7,62mm M118LR</Polish>
|
<Polish>7,62mm M118LR</Polish>
|
||||||
<French>7.62mm M118LR</French>
|
<French>7.62mm M118LR</French>
|
||||||
<Spanish>7.62mm (M118LR)</Spanish>
|
<Spanish>7.62mm (M118LR)</Spanish>
|
||||||
|
<Russian>7,62 мм M118LR</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Description">
|
<Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Description">
|
||||||
<English>Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 20</English>
|
<English>Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 20</English>
|
||||||
<Polish>Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 20</Polish>
|
<Polish>Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 20</Polish>
|
||||||
<French>Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 20</French>
|
<French>Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 20</French>
|
||||||
<Spanish>Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 20</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
||||||
<English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
|
<English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
|
||||||
<Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
|
<Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
|
||||||
<French>7.62mm 10Cps (Mk319 Mod 0)</French>
|
<French>7.62mm 10Cps (Mk319 Mod 0)</French>
|
||||||
<Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
<Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
||||||
|
<Russian>Магазин из 10-ти 7,62 мм (Mk319 Mod 0)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
||||||
<English>7.62mm Mk319</English>
|
<English>7.62mm Mk319</English>
|
||||||
<Polish>7,62mm Mk319</Polish>
|
<Polish>7,62mm Mk319</Polish>
|
||||||
<French>7.62mm Mk319</French>
|
<French>7.62mm Mk319</French>
|
||||||
<Spanish>7.62mm Mk319</Spanish>
|
<Spanish>7.62mm Mk319</Spanish>
|
||||||
|
<Russian>7,62mm Mk319</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
<Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
||||||
<English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 10</English>
|
<English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 10</English>
|
||||||
<Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 10</Polish>
|
<Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 10</Polish>
|
||||||
<French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 10</French>
|
<French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 10</French>
|
||||||
<Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Balas: 10</Spanish>
|
<Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Balas: 10</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
||||||
<English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
|
<English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
|
||||||
<Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
|
<Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
|
||||||
<French>7.62mm 20Cps (Mk319 Mod 0)</French>
|
<French>7.62mm 20Cps (Mk319 Mod 0)</French>
|
||||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
<Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
||||||
|
<Russian>Магазин из 20-ти 7,62 мм (Mk319 Mod 0)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
||||||
<English>7.62mm Mk319</English>
|
<English>7.62mm Mk319</English>
|
||||||
<Polish>7,62mm Mk319</Polish>
|
<Polish>7,62mm Mk319</Polish>
|
||||||
<French>7.62mm Mk319</French>
|
<French>7.62mm Mk319</French>
|
||||||
<Spanish>7.62mm Mk319</Spanish>
|
<Spanish>7.62mm Mk319</Spanish>
|
||||||
|
<Russian>7,62 мм Mk319</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
<Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
||||||
<English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 20</English>
|
<English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 20</English>
|
||||||
<Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 20</Polish>
|
<Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 20</Polish>
|
||||||
<French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 20</French>
|
<French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 20</French>
|
||||||
<Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Balas: 20</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
|
||||||
<English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
|
<English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
|
||||||
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
|
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
|
||||||
<French>7.62mm 20Cps (Mk248 Mod 0)</French>
|
<French>7.62mm 20Cps (Mk248 Mod 0)</French>
|
||||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
|
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
|
||||||
|
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 0)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
|
||||||
<English>7.62mm (Mk248 Mod 0)</English>
|
<English>7.62mm (Mk248 Mod 0)</English>
|
||||||
<Polish>7,62mm (Mk248 Mod 0)</Polish>
|
<Polish>7,62mm (Mk248 Mod 0)</Polish>
|
||||||
<French>7.62mm (Mk248 Mod 0)</French>
|
<French>7.62mm (Mk248 Mod 0)</French>
|
||||||
<Spanish>7.62mm (Mk248 Mod 0)</Spanish>
|
<Spanish>7.62mm (Mk248 Mod 0)</Spanish>
|
||||||
|
<Russian>7,62 мм (Mk248 Mod 0)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
|
||||||
<English>Caliber: 7.62x67 mm NATO (Mk248 Mod 0)<br />Rounds: 20</English>
|
<English>Caliber: 7.62x67 mm NATO (Mk248 Mod 0)<br />Rounds: 20</English>
|
||||||
<Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 0)<br />Pociski: 20</Polish>
|
<Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 0)<br />Pociski: 20</Polish>
|
||||||
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20</French>
|
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20</French>
|
||||||
<Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 0)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 0)<br />Balas: 20</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
|
||||||
<English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
|
<English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
|
||||||
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
|
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
|
||||||
<French>7.62mm 20Cps (Mk248 Mod 1)</French>
|
<French>7.62mm 20Cps (Mk248 Mod 1)</French>
|
||||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
|
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
|
||||||
|
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 1)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
|
||||||
<English>7.62mm (Mk248 Mod 1)</English>
|
<English>7.62mm (Mk248 Mod 1)</English>
|
||||||
<Polish>7,62mm (Mk248 Mod 1)</Polish>
|
<Polish>7,62mm (Mk248 Mod 1)</Polish>
|
||||||
<French>7.62mm (Mk248 Mod 1)</French>
|
<French>7.62mm (Mk248 Mod 1)</French>
|
||||||
<Spanish>7.62mm (Mk248 Mod 1)</Spanish>
|
<Spanish>7.62mm (Mk248 Mod 1)</Spanish>
|
||||||
|
<Russian>7,62 мм (Mk248 Mod 1)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
|
<Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
|
||||||
<English>Caliber: 7.62x67 mm NATO (Mk248 Mod 1)<br />Rounds: 20</English>
|
<English>Caliber: 7.62x67 mm NATO (Mk248 Mod 1)<br />Rounds: 20</English>
|
||||||
<Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 1)<br />Pociski: 20</Polish>
|
<Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 1)<br />Pociski: 20</Polish>
|
||||||
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20</French>
|
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20</French>
|
||||||
<Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 1)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 1)<br />Balas: 20</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
|
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
|
||||||
<English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
|
<English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
|
||||||
<Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
|
<Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
|
||||||
<French>7.62 20Cps (Berger Hybrid OTM)</French>
|
<French>7.62 20Cps (Berger Hybrid OTM)</French>
|
||||||
<Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
|
<Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
|
||||||
|
<Russian>Магазин из 20-ти 7,62 мм (Berger Hybrid OTM)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
|
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
|
||||||
<English>7.62mm (OTM)</English>
|
<English>7.62mm (OTM)</English>
|
||||||
<Polish>7,62mm (OTM)</Polish>
|
<Polish>7,62mm (OTM)</Polish>
|
||||||
<French>7.62mm (OTM)</French>
|
<French>7.62mm (OTM)</French>
|
||||||
<Spanish>7.62mm (OTM)</Spanish>
|
<Spanish>7.62mm (OTM)</Spanish>
|
||||||
|
<Russian>7,62 мм (OTM)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
|
<Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
|
||||||
<English>Caliber: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Rounds: 20</English>
|
<English>Caliber: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Rounds: 20</English>
|
||||||
<Polish>Kaliber: 7,62x67 mm NATO (Berger Hybrid OTM)<br />Pociski: 20</Polish>
|
<Polish>Kaliber: 7,62x67 mm NATO (Berger Hybrid OTM)<br />Pociski: 20</Polish>
|
||||||
<French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20</French>
|
<French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20</French>
|
||||||
<Spanish>Calibre: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Balas: 20</Spanish>
|
<Spanish>Calibre: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Balas: 20</Spanish>
|
||||||
|
<Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Name">
|
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Name">
|
||||||
<English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
|
<English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
|
||||||
<French>6.5x47mm 30Cps (HPBT Scenar)</French>
|
<French>6.5x47mm 30Cps (HPBT Scenar)</French>
|
||||||
<Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
|
<Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
|
||||||
|
<Polish>Magazynek 6,5x47 mm 30rd (HPBT Scenar)</Polish>
|
||||||
|
<Russian>Магазин из 30-ти 6,5x47 мм (HPBT Scenar)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
|
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
|
||||||
<English>6.5mm Scenar</English>
|
<English>6.5mm Scenar</English>
|
||||||
<French>6.5mm Scenar</French>
|
<French>6.5mm Scenar</French>
|
||||||
<Spanish>6.5mm Scenar</Spanish>
|
<Spanish>6.5mm Scenar</Spanish>
|
||||||
|
<Polish>6,5mm Scenar</Polish>
|
||||||
|
<Russian>6,5 мм Scenar</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
|
<Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
|
||||||
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30</English>
|
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30</English>
|
||||||
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30</French>
|
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30</French>
|
||||||
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30</Spanish>
|
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30</Spanish>
|
||||||
|
<Polish>Kaliber: 6,5x47 mm (HPBT Scenar)<br />Pociski: 30</Polish>
|
||||||
|
<Russian>Калибр: 6,5x47 мм (HPBT Scenar)<br />Патронов: 30</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
|
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
|
||||||
<English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
|
<English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
|
||||||
<French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
|
<French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
|
||||||
<Spanish>Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT)</Spanish>
|
<Spanish>Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT)</Spanish>
|
||||||
|
<Polish>Magazynek .338 10rd (300gr Sierra MatchKing HPBT)</Polish>
|
||||||
|
<Russian>Магазин из 10-ти .338 (300 гран Sierra MatchKing HPBT)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort">
|
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort">
|
||||||
<English>.338 (HPBT)</English>
|
<English>.338 (HPBT)</English>
|
||||||
<French>.338 (HPBT)</French>
|
<French>.338 (HPBT)</French>
|
||||||
<Spanish>.338 (HPBT)</Spanish>
|
<Spanish>.338 (HPBT)</Spanish>
|
||||||
|
<Polish>.338 (HPBT)</Polish>
|
||||||
|
<Russian>.338 (HPBT)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description">
|
<Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description">
|
||||||
<English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10</English>
|
<English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10</English>
|
||||||
<French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10</French>
|
<French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10</French>
|
||||||
<Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10</Spanish>
|
<Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10</Spanish>
|
||||||
|
<Polish>Kaliber: 8,6x70 mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10</Polish>
|
||||||
|
<Russian>Калибр: .338 (300 гран Sierra MatchKing HPBT)<br />Патронов: 10</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
|
<Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
|
||||||
<English>.338 10Rnd Mag (API526)</English>
|
<English>.338 10Rnd Mag (API526)</English>
|
||||||
<French>.338 10Cps (API526)</French>
|
<French>.338 10Cps (API526)</French>
|
||||||
<Spanish>Cargador de 10 balas de .338 (API526)</Spanish>
|
<Spanish>Cargador de 10 balas de .338 (API526)</Spanish>
|
||||||
|
<Polish>Magazynek .338 10rd (API526)</Polish>
|
||||||
|
<Russian>Магазин из 10-ти .338 (API526)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_API526_Mag_NameShort">
|
<Key ID="STR_ACE_10Rnd_338_API526_Mag_NameShort">
|
||||||
<English>.338 AP</English>
|
<English>.338 AP</English>
|
||||||
<French>.338 AP</French>
|
<French>.338 AP</French>
|
||||||
<Spanish>.338 AP</Spanish>
|
<Spanish>.338 AP</Spanish>
|
||||||
|
<Polish>.338 AP</Polish>
|
||||||
|
<Russian>.338 бронебойные</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_10Rnd_338_API526_Mag_Description">
|
<Key ID="STR_ACE_10Rnd_338_API526_Mag_Description">
|
||||||
<English>Caliber: 8.6x70mm (API526)<br />Rounds: 10</English>
|
<English>Caliber: 8.6x70mm (API526)<br />Rounds: 10</English>
|
||||||
<French>Calibre: 8.6x70mm (API526)<br />Cartouches: 10</French>
|
<French>Calibre: 8.6x70mm (API526)<br />Cartouches: 10</French>
|
||||||
<Spanish>Calibre: 8.6x70mm (API526)<br />Balas: 10</Spanish>
|
<Spanish>Calibre: 8.6x70mm (API526)<br />Balas: 10</Spanish>
|
||||||
|
<Polish>Kaliber: 8,6x70 mm (API526)<br />Pociski: 10</Polish>
|
||||||
|
<Russian>Калибр: .338 (API526)<br />Патронов: 10</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
|
<Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
|
||||||
<English>12.7x99mm 5Rnd Mag</English>
|
<English>12.7x99mm 5Rnd Mag</English>
|
||||||
<French>12.7x99mm 5Cps</French>
|
<French>12.7x99mm 5Cps</French>
|
||||||
<Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
|
<Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
|
||||||
|
<Polish>Magazynek 12,7x99 mm 5rd</Polish>
|
||||||
|
<Russian>Магазин из 5-ти 12,7x99 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_Mag_NameShort">
|
<Key ID="STR_ACE_5Rnd_127x99_Mag_NameShort">
|
||||||
<English>12.7mm</English>
|
<English>12.7mm</English>
|
||||||
<French>12.7mm</French>
|
<French>12.7mm</French>
|
||||||
<Spanish>12.7mm</Spanish>
|
<Spanish>12.7mm</Spanish>
|
||||||
|
<Polish>12,7mm</Polish>
|
||||||
|
<Russian>12,7 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_Mag_Description">
|
<Key ID="STR_ACE_5Rnd_127x99_Mag_Description">
|
||||||
<English>Caliber: 12.7x99mm<br />Rounds: 5</English>
|
<English>Caliber: 12.7x99mm<br />Rounds: 5</English>
|
||||||
<French>Calibre: 12.7x99mm<br />Cartouches: 5</French>
|
<French>Calibre: 12.7x99mm<br />Cartouches: 5</French>
|
||||||
<Spanish>Calibre: 12.7x99mm<br />Balas: 5</Spanish>
|
<Spanish>Calibre: 12.7x99mm<br />Balas: 5</Spanish>
|
||||||
|
<Polish>Kaliber: 12,7x99 mm<br />Pociski: 5</Polish>
|
||||||
|
<Russian>Калибр: 12,7x99 мм<br />Патронов: 5</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
|
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
|
||||||
<English>12.7x99mm 5Rnd Mag (AMAX)</English>
|
<English>12.7x99mm 5Rnd Mag (AMAX)</English>
|
||||||
<French>12.7x99mm 5Rnd Mag (AMAX)</French>
|
<French>12.7x99mm 5Rnd Mag (AMAX)</French>
|
||||||
<Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
|
<Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
|
||||||
|
<Polish>Magazynek 12,7x99 mm 5rd (AMAX)</Polish>
|
||||||
|
<Russian>Магазин из 5-ти 12,7x99 мм (A-MAX)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort">
|
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort">
|
||||||
<English>12.7mm</English>
|
<English>12.7mm</English>
|
||||||
<French>12.7mm</French>
|
<French>12.7mm</French>
|
||||||
<Spanish>12.7mm</Spanish>
|
<Spanish>12.7mm</Spanish>
|
||||||
|
<Polish>12,7mm</Polish>
|
||||||
|
<Russian>12,7 мм</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Description">
|
<Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Description">
|
||||||
<English>Caliber: 12.7x99mm (AMAX)<br />Rounds: 5</English>
|
<English>Caliber: 12.7x99mm (AMAX)<br />Rounds: 5</English>
|
||||||
<French>Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5</French>
|
<French>Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5</French>
|
||||||
<Spanish>Calibre: 12.7x99mm (AMAX)<br />Balas: 5</Spanish>
|
<Spanish>Calibre: 12.7x99mm (AMAX)<br />Balas: 5</Spanish>
|
||||||
|
<Polish>Kaliber: 12,7x99 mm (AMAX)<br />Pociski: 5</Polish>
|
||||||
|
<Russian>Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -95,7 +95,7 @@
|
|||||||
<Portuguese>Algema Plástica</Portuguese>
|
<Portuguese>Algema Plástica</Portuguese>
|
||||||
<Italian>Fascietta</Italian>
|
<Italian>Fascietta</Italian>
|
||||||
<Hungarian>Gyorskötöző</Hungarian>
|
<Hungarian>Gyorskötöző</Hungarian>
|
||||||
<Russian>Пластиковые наручники</Russian>
|
<Russian>Кабельная стяжка</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_CableTieDescription">
|
<Key ID="STR_ACE_Captives_CableTieDescription">
|
||||||
<English>Cable ties that allow you to restrain prisoners.</English>
|
<English>Cable ties that allow you to restrain prisoners.</English>
|
||||||
@ -107,7 +107,7 @@
|
|||||||
<Portuguese>A algema plástica permite que você contenha prisioneiros.</Portuguese>
|
<Portuguese>A algema plástica permite que você contenha prisioneiros.</Portuguese>
|
||||||
<Italian>Fascietta che ti consente di arrestare i prigionieri.</Italian>
|
<Italian>Fascietta che ti consente di arrestare i prigionieri.</Italian>
|
||||||
<Hungarian>Gyorskötöző, emberek foglyulejtéséhez használható.</Hungarian>
|
<Hungarian>Gyorskötöző, emberek foglyulejtéséhez használható.</Hungarian>
|
||||||
<Russian>Пластиковые наручники позволяют связывать пленников.</Russian>
|
<Russian>Кабельные стяжки позволяют связывать пленников.</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_FriskMenuHeader">
|
<Key ID="STR_ACE_Captives_FriskMenuHeader">
|
||||||
<English>Inventory of frisked person</English>
|
<English>Inventory of frisked person</English>
|
||||||
@ -134,7 +134,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_StartSurrendering">
|
<Key ID="STR_ACE_Captives_StartSurrendering">
|
||||||
<English>Surrender</English>
|
<English>Surrender</English>
|
||||||
<French>Capituler</French>
|
<French>Se rendre</French>
|
||||||
<German>Kapitulieren</German>
|
<German>Kapitulieren</German>
|
||||||
<Spanish>Rendirse</Spanish>
|
<Spanish>Rendirse</Spanish>
|
||||||
<Czech>Vzdát se</Czech>
|
<Czech>Vzdát se</Czech>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
|
<Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
|
||||||
<English>Only use on alive units</English>
|
<English>Only use on alive units</English>
|
||||||
<French>Utiliser uniquement sur unité vivante</French>
|
<French>Utiliser uniquement sur une unité vivante</French>
|
||||||
<German>Nur bei lebenden Einheiten verwendbar</German>
|
<German>Nur bei lebenden Einheiten verwendbar</German>
|
||||||
<Spanish>Utilizar solo en unidades vivas</Spanish>
|
<Spanish>Utilizar solo en unidades vivas</Spanish>
|
||||||
<Czech>Použitelné jen na živé jednotky</Czech>
|
<Czech>Použitelné jen na živé jednotky</Czech>
|
||||||
@ -167,7 +167,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
|
<Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
|
||||||
<English>Only use on dismounted inf</English>
|
<English>Only use on dismounted inf</English>
|
||||||
<French>Utiliser uniquement sur personnel à pied</French>
|
<French>Utiliser uniquement sur du personnel à pied</French>
|
||||||
<German>Nur bei abgesessener Infanterie verwendbar</German>
|
<German>Nur bei abgesessener Infanterie verwendbar</German>
|
||||||
<Spanish>Utilizar solo en infanteria desmontada</Spanish>
|
<Spanish>Utilizar solo en infanteria desmontada</Spanish>
|
||||||
<Czech>Použitelné jen na pěsích jednotkách</Czech>
|
<Czech>Použitelné jen na pěsích jednotkách</Czech>
|
||||||
@ -178,7 +178,7 @@
|
|||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Captives_Zeus_NothingSelected">
|
<Key ID="STR_ACE_Captives_Zeus_NothingSelected">
|
||||||
<English>Nothing under mouse</English>
|
<English>Nothing under mouse</English>
|
||||||
<French>Rien sous la souris</French>
|
<French>Rien sous le curseur</French>
|
||||||
<German>Es wurde nichts ausgewählt</German>
|
<German>Es wurde nichts ausgewählt</German>
|
||||||
<Spanish>Nada bajo el ratón</Spanish>
|
<Spanish>Nada bajo el ratón</Spanish>
|
||||||
<Czech>Nic není vybráno</Czech>
|
<Czech>Nic není vybráno</Czech>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
class GVAR(ProgressBar_Dialog) {
|
class GVAR(ProgressBar_Dialog) {
|
||||||
idd = -1;
|
idd = -1;
|
||||||
movingEnable = false;
|
movingEnable = false;
|
||||||
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 2)];);
|
onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBG)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 2)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 3)];);
|
||||||
objects[] = {};
|
objects[] = {};
|
||||||
|
|
||||||
class controlsBackground {
|
class controlsBackground {
|
||||||
@ -23,26 +23,31 @@ class GVAR(ProgressBar_Dialog) {
|
|||||||
w = "safezoneW";
|
w = "safezoneW";
|
||||||
h = "safezoneH";
|
h = "safezoneH";
|
||||||
};
|
};
|
||||||
class Progress: ACE_gui_RscProgress {
|
class TitleBackground: ACE_gui_staticBase {
|
||||||
idc = 1;
|
idc = 1;
|
||||||
x = "1.2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
style = ST_CENTER;
|
||||||
y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
sizeEx = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
w = "37.8 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
colorBackground[] = {0, 0, 0, 0.5};
|
||||||
h = ".8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
|
||||||
colorFrame[] = {0,0,0,0.0};
|
|
||||||
colorBar[] = {0.27,0.5,0.31,0.8};
|
|
||||||
texture = "#(argb,8,8,3)color(1,1,1,0.7)";
|
|
||||||
};
|
|
||||||
class Title_Bar : ACE_gui_staticBase {
|
|
||||||
idc = 2;
|
|
||||||
style = 0x22;
|
|
||||||
colorBackground[] = {0, 0, 0, 0};
|
|
||||||
colorText[] = {1, 1, 1, 1};
|
colorText[] = {1, 1, 1, 1};
|
||||||
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||||
y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||||
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||||
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
};
|
};
|
||||||
|
class Progress: ACE_gui_RscProgress {
|
||||||
|
idc = 2;
|
||||||
|
x = "1.2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
|
||||||
|
y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
|
||||||
|
w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
|
||||||
|
h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
|
||||||
|
colorFrame[] = {1,1,1,0.5};
|
||||||
|
colorBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"};
|
||||||
|
texture = "#(argb,8,8,3)color(1,1,1,0.7)";
|
||||||
|
};
|
||||||
|
class TitleText: TitleBackground {
|
||||||
|
idc = 3;
|
||||||
|
colorBackground[] = {0, 0, 0, 0};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
// Load settings from profile
|
// Load settings from profile
|
||||||
if (hasInterface) then {
|
if (hasInterface) then {
|
||||||
call FUNC(loadSettingsFromProfile);
|
call FUNC(loadSettingsFromProfile);
|
||||||
|
call FUNC(loadSettingsLocalizedText);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Listens for global "SettingChanged" events, to update the force status locally
|
// Listens for global "SettingChanged" events, to update the force status locally
|
||||||
@ -65,9 +66,31 @@ if (_currentVersion != _previousVersion) then {
|
|||||||
|
|
||||||
0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber);
|
0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber);
|
||||||
|
|
||||||
|
// ACE events
|
||||||
"ACEg" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
|
"ACEg" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
|
||||||
"ACEc" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
|
"ACEc" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
|
||||||
|
|
||||||
|
// Synced ACE events
|
||||||
|
// Handle JIP scenario
|
||||||
|
if(!isServer) then {
|
||||||
|
["PlayerJip", {
|
||||||
|
diag_log text format["[ACE] * JIP event synchronization initialized"];
|
||||||
|
["SEH_all", [player]] call FUNC(serverEvent);
|
||||||
|
}] call FUNC(addEventHandler);
|
||||||
|
} else {
|
||||||
|
["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call FUNC(addEventHandler);
|
||||||
|
};
|
||||||
|
["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
|
||||||
|
["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler);
|
||||||
|
[FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************/
|
||||||
|
/***************************************************************/
|
||||||
|
/***************************************************************/
|
||||||
|
/***************************************************************/
|
||||||
|
/***************************************************************/
|
||||||
|
|
||||||
// everything that only player controlled machines need, goes below this
|
// everything that only player controlled machines need, goes below this
|
||||||
if (!hasInterface) exitWith {};
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
@ -107,7 +130,6 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
|
|||||||
|
|
||||||
// PFH to raise varios events
|
// PFH to raise varios events
|
||||||
[{
|
[{
|
||||||
|
|
||||||
// "playerInventoryChanged" event
|
// "playerInventoryChanged" event
|
||||||
_newPlayerInventory = [ACE_player] call FUNC(getAllGear);
|
_newPlayerInventory = [ACE_player] call FUNC(getAllGear);
|
||||||
if !(_newPlayerInventory isEqualTo GVAR(OldPlayerInventory)) then {
|
if !(_newPlayerInventory isEqualTo GVAR(OldPlayerInventory)) then {
|
||||||
@ -174,6 +196,31 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
|
|||||||
|
|
||||||
}, 0, []] call cba_fnc_addPerFrameHandler;
|
}, 0, []] call cba_fnc_addPerFrameHandler;
|
||||||
|
|
||||||
|
|
||||||
|
// PFH to raise camera created event. Only works on these cams by BI.
|
||||||
|
#define ALL_CAMERAS [ \
|
||||||
|
missionNamespace getVariable ["BIS_DEBUG_CAM", objNull], \
|
||||||
|
missionNamespace getVariable ["BIS_fnc_camera_cam", objNull], \
|
||||||
|
uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull], \
|
||||||
|
uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull], \
|
||||||
|
missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull] \
|
||||||
|
]
|
||||||
|
|
||||||
|
GVAR(OldIsCamera) = false;
|
||||||
|
|
||||||
|
[{
|
||||||
|
|
||||||
|
// "activeCameraChanged" event
|
||||||
|
_isCamera = {!isNull _x} count ALL_CAMERAS > 0;
|
||||||
|
if !(_isCamera isEqualTo GVAR(OldIsCamera)) then {
|
||||||
|
// Raise ACE event locally
|
||||||
|
GVAR(OldIsCamera) = _isCamera;
|
||||||
|
["activeCameraChanged", [ACE_player, _isCamera]] call FUNC(localEvent);
|
||||||
|
};
|
||||||
|
|
||||||
|
}, 1, []] call cba_fnc_addPerFrameHandler; // feel free to decrease the sleep time if you need it.
|
||||||
|
|
||||||
|
|
||||||
[QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
|
[QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
|
||||||
|
|
||||||
["displayTextStructured", FUNC(displayTextStructured)] call FUNC(addEventhandler);
|
["displayTextStructured", FUNC(displayTextStructured)] call FUNC(addEventhandler);
|
||||||
@ -188,3 +235,18 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
|
|||||||
// Players can always interact with passengers of the same vehicle
|
// Players can always interact with passengers of the same vehicle
|
||||||
{!((_this select 0) isEqualTo (_this select 1)) && {vehicle (_this select 0) == vehicle (_this select 1)}}
|
{!((_this select 0) isEqualTo (_this select 1)) && {vehicle (_this select 0) == vehicle (_this select 1)}}
|
||||||
}] call FUNC(addCanInteractWithCondition);
|
}] call FUNC(addCanInteractWithCondition);
|
||||||
|
|
||||||
|
// Lastly, do JIP events
|
||||||
|
// JIP Detection and event trigger. Run this at the very end, just in case anything uses it
|
||||||
|
if(isMultiplayer && { time > 0 || isNull player } ) then {
|
||||||
|
// We are jipping! Get ready and wait, and throw the event
|
||||||
|
[{
|
||||||
|
if(!(isNull player)) then {
|
||||||
|
["PlayerJip", [player] ] call FUNC(localEvent);
|
||||||
|
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||||
|
};
|
||||||
|
}, 0, []] call cba_fnc_addPerFrameHandler;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ PREP(loadPerson);
|
|||||||
PREP(loadPersonLocal);
|
PREP(loadPersonLocal);
|
||||||
PREP(loadSettingsFromProfile);
|
PREP(loadSettingsFromProfile);
|
||||||
PREP(loadSettingsOnServer);
|
PREP(loadSettingsOnServer);
|
||||||
|
PREP(loadSettingsLocalizedText);
|
||||||
PREP(map);
|
PREP(map);
|
||||||
PREP(moduleCheckPBOs);
|
PREP(moduleCheckPBOs);
|
||||||
PREP(moduleLSDVehicles);
|
PREP(moduleLSDVehicles);
|
||||||
@ -269,6 +270,21 @@ PREP(hashListSelect);
|
|||||||
PREP(hashListSet);
|
PREP(hashListSet);
|
||||||
PREP(hashListPush);
|
PREP(hashListPush);
|
||||||
|
|
||||||
|
// Synchronized Events
|
||||||
|
PREP(syncedEventPFH);
|
||||||
|
PREP(addSyncedEventHandler);
|
||||||
|
PREP(removeSyncedEventHandler);
|
||||||
|
PREP(requestSyncedEvent);
|
||||||
|
PREP(syncedEvent);
|
||||||
|
|
||||||
|
PREP(_handleSyncedEvent);
|
||||||
|
PREP(_handleRequestSyncedEvent);
|
||||||
|
PREP(_handleRequestAllSyncedEvents);
|
||||||
|
|
||||||
|
GVAR(syncedEvents) = HASH_CREATE;
|
||||||
|
|
||||||
|
// @TODO: Generic local-managed global-synced objects (createVehicleLocal)
|
||||||
|
|
||||||
//Debug
|
//Debug
|
||||||
ACE_COUNTERS = [];
|
ACE_COUNTERS = [];
|
||||||
|
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Handles a server-side request for synchronization ALL events on JIP to a client.
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: client (object)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_1(_client);
|
||||||
|
|
||||||
|
{
|
||||||
|
private["_eventName", "_eventEntry", "_eventLog"];
|
||||||
|
_eventName = _x;
|
||||||
|
_eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
|
||||||
|
_eventLog = _eventEntry select 1;
|
||||||
|
|
||||||
|
["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
|
||||||
|
} forEach (GVAR(syncedEvents) select 0);
|
||||||
|
|
||||||
|
true
|
45
addons/common/functions/fnc__handleRequestSyncedEvent.sqf
Normal file
45
addons/common/functions/fnc__handleRequestSyncedEvent.sqf
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Receives either requests for synchronization from clients, or the synchronization data from the server.
|
||||||
|
*
|
||||||
|
* Arguments [Client] :
|
||||||
|
* 0: eventName (String)
|
||||||
|
* 1: eventLog (Array)
|
||||||
|
*
|
||||||
|
* Arguments [Server] :
|
||||||
|
* 0: eventName (String)
|
||||||
|
* 1: client (Object)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
//SEH_s
|
||||||
|
if(isServer) then {
|
||||||
|
// Find the event name, and shovel out the events to the client
|
||||||
|
PARAMS_2(_eventName,_client);
|
||||||
|
private["_eventEntry", "_eventLog"];
|
||||||
|
|
||||||
|
if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
|
||||||
|
diag_log text format["[ACE] Error, request for synced event - key not found."];
|
||||||
|
false
|
||||||
|
};
|
||||||
|
_eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
|
||||||
|
_eventLog = _eventEntry select 1;
|
||||||
|
|
||||||
|
["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
|
||||||
|
} else {
|
||||||
|
PARAMS_2(_eventName,_eventLog);
|
||||||
|
// This is the client handling the response from the server
|
||||||
|
// Start running the events
|
||||||
|
{
|
||||||
|
_eventArgs = _x select 1;
|
||||||
|
[_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent);
|
||||||
|
} forEach _eventLog;
|
||||||
|
diag_log text format["[ACE] + [%1] synchronized", _eventName];
|
||||||
|
};
|
||||||
|
|
||||||
|
true
|
36
addons/common/functions/fnc__handleSyncedEvent.sqf
Normal file
36
addons/common/functions/fnc__handleSyncedEvent.sqf
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Handles synced events being received. Server will log them, and server/client will execute them.
|
||||||
|
*
|
||||||
|
* Arguments [Client] :
|
||||||
|
* 0: eventName (String)
|
||||||
|
* 1: arguments (Array)
|
||||||
|
* 2: ttl (Scalar)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_3(_name,_args,_ttl);
|
||||||
|
private["_internalData", "_eventLog", "_eventCode"];
|
||||||
|
|
||||||
|
if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||||
|
diag_log text format["[ACE] Error, synced event key not found."];
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
_internalData = HASH_GET(GVAR(syncedEvents),_name);
|
||||||
|
|
||||||
|
if(isServer) then {
|
||||||
|
// Server needs to internally log it for synchronization
|
||||||
|
if(_ttl > -1) then {
|
||||||
|
_internalData = HASH_GET(GVAR(syncedEvents),_name);
|
||||||
|
_eventLog = _internalData select 1;
|
||||||
|
_eventLog pushback [diag_tickTime, _args, _ttl];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_eventCode = _internalData select 0;
|
||||||
|
_args call _eventCode;
|
32
addons/common/functions/fnc_addSyncedEventHandler.sqf
Normal file
32
addons/common/functions/fnc_addSyncedEventHandler.sqf
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Register an event handler for an ACE synced event
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: Name (String)
|
||||||
|
* 1: Handler (Code)
|
||||||
|
* 2: TTL (Number or Code) [Optional]
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_2(_name,_handler);
|
||||||
|
|
||||||
|
private["_ttl", "_eventId", "_data"];
|
||||||
|
if( (count _this) > 2) then {
|
||||||
|
_ttl = _this select 2;
|
||||||
|
} else {
|
||||||
|
_ttl = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||||
|
diag_log text format["[ACE] Error, duplicate synced event creation."];
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
_eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
|
||||||
|
_data = [_handler,[],_ttl,_eventId];
|
||||||
|
HASH_SET(GVAR(syncedEvents),_name,_data);
|
@ -13,6 +13,8 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_name", "_isClientSetable", "_isForced", "_profileValue"];
|
||||||
|
|
||||||
// Iterate through settings
|
// Iterate through settings
|
||||||
{
|
{
|
||||||
_name = _x select 0;
|
_name = _x select 0;
|
||||||
@ -34,4 +36,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
} forEach GVAR(settings);
|
} forEach GVAR(settings);
|
||||||
|
48
addons/common/functions/fnc_loadSettingsLocalizedText.sqf
Normal file
48
addons/common/functions/fnc_loadSettingsLocalizedText.sqf
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Author: Glowbal
|
||||||
|
* Parse all settings and load the localized displayName and description for all text
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_parseConfigForDisplayNames", "_name"];
|
||||||
|
|
||||||
|
_parseConfigForDisplayNames = {
|
||||||
|
private "_optionEntry";
|
||||||
|
_optionEntry = _this select 0;
|
||||||
|
if !(isClass _optionEntry) exitwith {false};
|
||||||
|
_x set [3, getText (_optionEntry >> "displayName")];
|
||||||
|
_x set [4, getText (_optionEntry >> "description")];
|
||||||
|
|
||||||
|
private "_values";
|
||||||
|
_values = _x select 5;
|
||||||
|
{
|
||||||
|
private "_text";
|
||||||
|
_text = _x;
|
||||||
|
if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
|
||||||
|
_text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
|
||||||
|
_values set [_forEachIndex, _text];
|
||||||
|
};
|
||||||
|
} forEach _values;
|
||||||
|
true;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Iterate through settings
|
||||||
|
{
|
||||||
|
_name = _x select 0;
|
||||||
|
|
||||||
|
if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
|
||||||
|
if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
|
||||||
|
[missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
} forEach GVAR(settings);
|
@ -38,12 +38,14 @@ createDialog QGVAR(ProgressBar_Dialog);
|
|||||||
//Adjust position based on user setting:
|
//Adjust position based on user setting:
|
||||||
_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
|
_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
|
||||||
_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
||||||
(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos;
|
|
||||||
(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0;
|
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos;
|
||||||
_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBar));
|
(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;
|
||||||
_ctrlPos set [1, ((0.1 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
|
|
||||||
(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos;
|
(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos;
|
||||||
(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0;
|
(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0;
|
||||||
|
(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos;
|
||||||
|
(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_perFrameFunction = {
|
_perFrameFunction = {
|
||||||
|
24
addons/common/functions/fnc_removeSyncedEventHandler.sqf
Normal file
24
addons/common/functions/fnc_removeSyncedEventHandler.sqf
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Remove a synced event handler
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: Name (String)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_1(_name);
|
||||||
|
|
||||||
|
if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||||
|
diag_log text format["[ACE] Error, synced event key not found."];
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
_data = HASH_GET(GVAR(syncedEvents),_name);
|
||||||
|
_eventId = _data select 3;
|
||||||
|
|
||||||
|
[_eventId] call ace_common_fnc_removeEventHandler;
|
||||||
|
HASH_REM(GVAR(syncedEvents),_name);
|
19
addons/common/functions/fnc_requestSyncedEvent.sqf
Normal file
19
addons/common/functions/fnc_requestSyncedEvent.sqf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Send a request to synchronize an event name from the client->server. Execute on client only.
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: eventName (String)
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_1(_eventName);
|
||||||
|
|
||||||
|
// Only JIP machines on initialization send this off, requesting sync on events with the serverCommand
|
||||||
|
if(isServer) exitWith { false };
|
||||||
|
|
||||||
|
["SEH_s", [_eventName, ACE_player] ] call ace_common_fnc_serverEvent;
|
@ -76,6 +76,18 @@ if (isNil _name) then {
|
|||||||
_value
|
_value
|
||||||
];
|
];
|
||||||
|
|
||||||
|
//Strings in the values array won't be localized from the config, so just do that now:
|
||||||
|
/*private "_values";
|
||||||
|
_values = _settingData select 5;
|
||||||
|
{
|
||||||
|
_text = _x;
|
||||||
|
if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
|
||||||
|
_text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
|
||||||
|
_values set [_forEachIndex, _text];
|
||||||
|
};
|
||||||
|
} forEach _values;*/
|
||||||
|
|
||||||
|
|
||||||
GVAR(settings) pushBack _settingData;
|
GVAR(settings) pushBack _settingData;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
31
addons/common/functions/fnc_syncedEvent.sqf
Normal file
31
addons/common/functions/fnc_syncedEvent.sqf
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Author: jaynus
|
||||||
|
*
|
||||||
|
* Call and propegate a synced event
|
||||||
|
*
|
||||||
|
* Argument:
|
||||||
|
* 0: Name (String)
|
||||||
|
* 1: Arguments (Array)
|
||||||
|
* 2: TTL (Number or Code) [Optional] for this specific event call
|
||||||
|
*
|
||||||
|
* Return value:
|
||||||
|
* Boolean of success
|
||||||
|
*/
|
||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
PARAMS_2(_name,_args);
|
||||||
|
private["_ttl", "_eventData", "_internalData", "_eventLog"];
|
||||||
|
|
||||||
|
if( (count _this) > 2) then {
|
||||||
|
_ttl = _this select 2;
|
||||||
|
} else {
|
||||||
|
_ttl = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||||
|
diag_log text format["[ACE] Error, synced event key not found."];
|
||||||
|
false
|
||||||
|
};
|
||||||
|
|
||||||
|
_eventData = [_name, _args,_ttl];
|
||||||
|
["SEH", _eventData] call FUNC(globalEvent);
|
52
addons/common/functions/fnc_syncedEventPFH.sqf
Normal file
52
addons/common/functions/fnc_syncedEventPFH.sqf
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
//#define DEBUG_MODE_FULL
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if(!isServer) exitWith { false };
|
||||||
|
|
||||||
|
// Walk through the local synced events and clean up anything thats already EOL
|
||||||
|
// @TODO: This should be iteration limited to prevent FPS lag
|
||||||
|
private["_data"];
|
||||||
|
{
|
||||||
|
private["_data", "_ttl", "_eventLog", "_newEventLog", "_name"];
|
||||||
|
_name = _x;
|
||||||
|
|
||||||
|
_data = HASH_GET(GVAR(syncedEvents),_name);
|
||||||
|
_eventLog = _data select 1;
|
||||||
|
_globalEventTTL = _data select 2;
|
||||||
|
_newEventLog = [];
|
||||||
|
|
||||||
|
// @TODO: This should be iteration limited to prevent FPS lag
|
||||||
|
{
|
||||||
|
private["_eventEntry", "_ttlReturn"];
|
||||||
|
_eventEntry = _x;
|
||||||
|
|
||||||
|
_ttlReturn = true;
|
||||||
|
if(typeName _globalEventTTL == "CODE") then {
|
||||||
|
_ttlReturn = [(_data select 0),_eventEntry] call _globalEventTTL;
|
||||||
|
} else {
|
||||||
|
_ttlReturn = call { _globalEventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _globalEventTTL} };
|
||||||
|
};
|
||||||
|
|
||||||
|
if(_ttlReturn) then {
|
||||||
|
// Do event based TTL check
|
||||||
|
private["_eventTTL"];
|
||||||
|
_eventTTL = _eventEntry select 2;
|
||||||
|
|
||||||
|
if(typeName _eventTTL == "CODE") then {
|
||||||
|
_ttlReturn = [(_data select 0),_eventEntry] call _eventTTL;
|
||||||
|
} else {
|
||||||
|
_ttlReturn = call { _eventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _eventTTL} };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// Finally drop it if the TTL check fails
|
||||||
|
if(_ttlReturn) then {
|
||||||
|
_newEventLog pushBack _x;
|
||||||
|
};
|
||||||
|
} forEach _eventLog;
|
||||||
|
|
||||||
|
_data set[1, _newEventLog];
|
||||||
|
} forEach (GVAR(syncedEvents) select 0);
|
||||||
|
|
||||||
|
|
||||||
|
// @TODO: Next, detect if we had a new request from a JIP player, and we need to continue syncing events
|
@ -40,12 +40,13 @@ if (true) then {
|
|||||||
|
|
||||||
{
|
{
|
||||||
_ppos = worldToScreen (_object modelToWorld _x);
|
_ppos = worldToScreen (_object modelToWorld _x);
|
||||||
_pposX = _ppos select 0;
|
if (count _ppos >= 2) then {
|
||||||
_pposY = _ppos select 1;
|
EXPLODE_2_PVT(_ppos,_pposX,_pposY);
|
||||||
if (_pposX < _minX) then {_minX = _pposX};
|
if (_pposX < _minX) then {_minX = _pposX};
|
||||||
if (_pposX > _maxX) then {_maxX = _pposX};
|
if (_pposX > _maxX) then {_maxX = _pposX};
|
||||||
if (_pposY < _minY) then {_minY = _pposY};
|
if (_pposY < _minY) then {_minY = _pposY};
|
||||||
if (_pposY > _maxY) then {_maxY = _pposY};
|
if (_pposY > _maxY) then {_maxY = _pposY};
|
||||||
|
}; //else - what to do if it is offscreen?
|
||||||
} forEach _boundsCorners;
|
} forEach _boundsCorners;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@
|
|||||||
<Spanish>Desactivar menú de mando</Spanish>
|
<Spanish>Desactivar menú de mando</Spanish>
|
||||||
<Polish>Wyłącz menu dowodzenia</Polish>
|
<Polish>Wyłącz menu dowodzenia</Polish>
|
||||||
<Czech>Vypnout velící menu</Czech>
|
<Czech>Vypnout velící menu</Czech>
|
||||||
<French>Désactiver Menu Commande</French>
|
<French>Désactiver menu commande</French>
|
||||||
<Russian>Выключить командное меню</Russian>
|
<Russian>Выключить командное меню</Russian>
|
||||||
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
<Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
|
||||||
<Italian>Disabilita Menù di comando</Italian>
|
<Italian>Disabilita Menù di comando</Italian>
|
||||||
@ -329,7 +329,7 @@
|
|||||||
<Italian>Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
<Italian>Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
||||||
<Czech>Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
|
<Czech>Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
|
||||||
<Russian>Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
|
<Russian>Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
|
||||||
<French>Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalistion d'actions.</French>
|
<French>Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions.</French>
|
||||||
<Hungarian>Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
|
<Hungarian>Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
<Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
|
||||||
@ -340,7 +340,7 @@
|
|||||||
<Italian>Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
<Italian>Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
|
||||||
<Czech>Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
|
<Czech>Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
|
||||||
<Russian>Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
|
<Russian>Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
|
||||||
<French>Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalistion d'actions.</French>
|
<French>Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions.</French>
|
||||||
<Hungarian>Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
|
<Hungarian>Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
<Key ID="STR_ACE_Common_SettingFeedbackIconsName">
|
||||||
@ -383,7 +383,7 @@
|
|||||||
<Italian>Modifica la posizione su schermo della barra di avanzamento.</Italian>
|
<Italian>Modifica la posizione su schermo della barra di avanzamento.</Italian>
|
||||||
<Russian>Установите желаемое положение строки состояния на экране.</Russian>
|
<Russian>Установите желаемое положение строки состояния на экране.</Russian>
|
||||||
<Polish>Ustaw pożądaną lokalizację paska postępu na ekranie</Polish>
|
<Polish>Ustaw pożądaną lokalizację paska postępu na ekranie</Polish>
|
||||||
<French>Appliquer la postion de la barre de progression sur l'écran</French>
|
<French>Appliquer la position de la barre de progression sur l'écran</French>
|
||||||
<Czech>Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce.</Czech>
|
<Czech>Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce.</Czech>
|
||||||
<Hungarian>Itt beállítható az állapotjelző sáv képernyődön lévő helyzete.</Hungarian>
|
<Hungarian>Itt beállítható az állapotjelző sáv képernyődön lévő helyzete.</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -405,7 +405,7 @@
|
|||||||
<Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian>
|
<Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian>
|
||||||
<Russian>Цвет фона всплывающих подсказок АСЕ.</Russian>
|
<Russian>Цвет фона всплывающих подсказок АСЕ.</Russian>
|
||||||
<Polish>Kolor tła dla powiadomień ACE</Polish>
|
<Polish>Kolor tła dla powiadomień ACE</Polish>
|
||||||
<French>Notifications ACE: couleur de l'arrière plan</French>
|
<French>Notification ACE: couleur de l'arrière plan</French>
|
||||||
<Czech>Barva pozadí ACE nápověd.</Czech>
|
<Czech>Barva pozadí ACE nápověd.</Czech>
|
||||||
<Hungarian>Az ACE-súgók hátterének színe.</Hungarian>
|
<Hungarian>Az ACE-súgók hátterének színe.</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
@ -427,7 +427,7 @@
|
|||||||
<Italian>Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se questo non è altrimenti specificato.</Italian>
|
<Italian>Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se questo non è altrimenti specificato.</Italian>
|
||||||
<Russian>Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок.</Russian>
|
<Russian>Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок.</Russian>
|
||||||
<Polish>Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru.</Polish>
|
<Polish>Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru.</Polish>
|
||||||
<French>Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte afficher dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications</French>
|
<French>Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications</French>
|
||||||
<Czech>Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu.</Czech>
|
<Czech>Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu.</Czech>
|
||||||
<Hungarian>Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt.</Hungarian>
|
<Hungarian>Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt.</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
<Spanish>Abrir inventario</Spanish>
|
<Spanish>Abrir inventario</Spanish>
|
||||||
<Russian>Открыть инвентарь</Russian>
|
<Russian>Открыть инвентарь</Russian>
|
||||||
<Italian>Apri l'inventario</Italian>
|
<Italian>Apri l'inventario</Italian>
|
||||||
|
<French>Ouvrir l'inventaire</French>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
@ -1,44 +1,28 @@
|
|||||||
class Extended_PreInit_EventHandlers {
|
class Extended_PreInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
|
init = QUOTE(call COMPILE_FILE(XEH_preInit));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Extended_PostInit_EventHandlers {
|
class Extended_PostInit_EventHandlers {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
clientInit = QUOTE( call COMPILE_FILE(XEH_postInitClient) );
|
init = QUOTE(call COMPILE_FILE(XEH_postInit));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
class Extended_FiredBIS_EventHandlers {
|
class Extended_FiredBIS_EventHandlers {
|
||||||
class CAManBase {
|
class CAManBase {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
firedBIS = QUOTE( _this call FUNC(replaceATWeapon) );
|
firedBIS = QUOTE(_this call FUNC(replaceATWeapon));
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
// handle preloaded missile
|
// handle preloaded missile
|
||||||
class Extended_Init_EventHandlers {
|
class Extended_InitPost_EventHandlers {
|
||||||
class CAManBase {
|
class CAManBase {
|
||||||
class ADDON {
|
class ADDON {
|
||||||
init = QUOTE( _this call FUNC(takeLoadedATWeapon) );
|
init = QUOTE([ARR_2(_this select 0, secondaryWeapon (_this select 0))] call FUNC(takeLoadedATWeapon));
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class Extended_Take_EventHandlers {
|
|
||||||
class CAManBase {
|
|
||||||
class ADDON {
|
|
||||||
take = QUOTE( _this call FUNC(takeLoadedATWeapon); [_this select 0] call FUNC(updateInventoryDisplay); );
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
class Extended_Put_EventHandlers {
|
|
||||||
class CAManBase {
|
|
||||||
class ADDON {
|
|
||||||
put = QUOTE( [_this select 0] call FUNC(updateInventoryDisplay); );
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -3,6 +3,7 @@ class CfgMagazines {
|
|||||||
class ACE_PreloadedMissileDummy: NLAW_F { // The dummy magazine
|
class ACE_PreloadedMissileDummy: NLAW_F { // The dummy magazine
|
||||||
author = "$STR_ACE_Common_ACETeam";
|
author = "$STR_ACE_Common_ACETeam";
|
||||||
scope = 1;
|
scope = 1;
|
||||||
|
scopeArsenal = 1;
|
||||||
displayName = "$STR_ACE_Disposable_PreloadedMissileDummy";
|
displayName = "$STR_ACE_Disposable_PreloadedMissileDummy";
|
||||||
picture = PATHTOEF(common,UI\blank_CO.paa);
|
picture = PATHTOEF(common,UI\blank_CO.paa);
|
||||||
weaponPoolAvailable = 0;
|
weaponPoolAvailable = 0;
|
||||||
|
10
addons/disposable/XEH_postInit.sqf
Normal file
10
addons/disposable/XEH_postInit.sqf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// by commy2
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (!hasInterface) exitWith {};
|
||||||
|
|
||||||
|
["inventoryDisplayLoaded", {[ACE_player, _this select 0] call FUNC(updateInventoryDisplay)}] call EFUNC(common,addEventHandler);
|
||||||
|
["playerInventoryChanged", {
|
||||||
|
[_this select 0, _this select 1 select 11] call FUNC(takeLoadedATWeapon);
|
||||||
|
[_this select 0] call FUNC(updateInventoryDisplay);
|
||||||
|
}] call EFUNC(common,addEventHandler);
|
@ -31,7 +31,7 @@
|
|||||||
<Polish>Wstępnie załadowana atrapa pocisku</Polish>
|
<Polish>Wstępnie załadowana atrapa pocisku</Polish>
|
||||||
<Spanish>Preloaded Missile Dummy</Spanish>
|
<Spanish>Preloaded Missile Dummy</Spanish>
|
||||||
<Hungarian>Előtöltött műrakéta</Hungarian>
|
<Hungarian>Előtöltött műrakéta</Hungarian>
|
||||||
<Russian>Заряженная ракетная пустышка</Russian>
|
<Russian>Предзаряженная ракетная болванка</Russian>
|
||||||
<Italian>Missile stupido precaricato</Italian>
|
<Italian>Missile stupido precaricato</Italian>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
|
@ -26,14 +26,14 @@
|
|||||||
<Hungarian>Elengedés</Hungarian>
|
<Hungarian>Elengedés</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Dragging_UnableToDrag">
|
<Key ID="STR_ACE_Dragging_UnableToDrag">
|
||||||
<English>Item to heavy</English>
|
<English>Item too heavy</English>
|
||||||
<German>Gegenstand ist zu schwer</German>
|
<German>Gegenstand ist zu schwer</German>
|
||||||
<Spanish>Articulo demasiado pesado</Spanish>
|
<Spanish>Articulo demasiado pesado</Spanish>
|
||||||
<Polish>Przedmiot zbyt ciężki</Polish>
|
<Polish>Przedmiot zbyt ciężki</Polish>
|
||||||
<French>Objet trop lourd</French>
|
<French>Objet trop lourd</French>
|
||||||
<Portuguese>Não é possível carregar o item devido a seu peso</Portuguese>
|
<Portuguese>Não é possível carregar o item devido a seu peso</Portuguese>
|
||||||
<Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
|
<Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
|
||||||
<Russian>Слишком тяжело</Russian>
|
<Russian>Предмет слишком тяжёлый</Russian>
|
||||||
<Czech>Moc težké</Czech>
|
<Czech>Moc težké</Czech>
|
||||||
<Hungarian>Az objektum túl nehéz</Hungarian>
|
<Hungarian>Az objektum túl nehéz</Hungarian>
|
||||||
</Key>
|
</Key>
|
||||||
|
@ -114,7 +114,7 @@
|
|||||||
<German>Mobiltelefon</German>
|
<German>Mobiltelefon</German>
|
||||||
<Spanish>Télefono móvil</Spanish>
|
<Spanish>Télefono móvil</Spanish>
|
||||||
<Polish>Telefon komórkowy</Polish>
|
<Polish>Telefon komórkowy</Polish>
|
||||||
<French>Téléphone Portable</French>
|
<French>Téléphone portable</French>
|
||||||
<Czech>Telefon</Czech>
|
<Czech>Telefon</Czech>
|
||||||
<Italian>Cellulare</Italian>
|
<Italian>Cellulare</Italian>
|
||||||
<Hungarian>Mobiltelefon</Hungarian>
|
<Hungarian>Mobiltelefon</Hungarian>
|
||||||
@ -203,7 +203,7 @@
|
|||||||
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
<Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
|
||||||
<Hungarian>Robbanóanyagok hatástalanítását teszi lehetővé</Hungarian>
|
<Hungarian>Robbanóanyagok hatástalanítását teszi lehetővé</Hungarian>
|
||||||
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
<Portuguese>Permite o desarme de explosivos</Portuguese>
|
||||||
<Russian>Позволяет обезвреживать ВУ</Russian>
|
<Russian>Позволяет обезвреживать взрывчатку</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
<Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
|
||||||
<English>Add to Speed Dial</English>
|
<English>Add to Speed Dial</English>
|
||||||
@ -215,7 +215,7 @@
|
|||||||
<Italian>Aggiungi alla selezione rapida</Italian>
|
<Italian>Aggiungi alla selezione rapida</Italian>
|
||||||
<Hungarian>Hozzáadás a gyorstárcsázóhoz</Hungarian>
|
<Hungarian>Hozzáadás a gyorstárcsázóhoz</Hungarian>
|
||||||
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
<Portuguese>Adicionar à ligação rápida</Portuguese>
|
||||||
<Russian>Добавить в ускоренный набор</Russian>
|
<Russian>Добавить в быстрый вызов</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Clear">
|
<Key ID="STR_ACE_Explosives_Clear">
|
||||||
<English>Clear</English>
|
<English>Clear</English>
|
||||||
@ -294,12 +294,12 @@
|
|||||||
<German>"Platzieren"-Menü</German>
|
<German>"Platzieren"-Menü</German>
|
||||||
<Spanish>Menú de colocación</Spanish>
|
<Spanish>Menú de colocación</Spanish>
|
||||||
<Polish>Menu umieszczania</Polish>
|
<Polish>Menu umieszczania</Polish>
|
||||||
<French>Menu Placement</French>
|
<French>Menu placement</French>
|
||||||
<Czech>Menu Umístění</Czech>
|
<Czech>Menu Umístění</Czech>
|
||||||
<Italian>Menù di collocamento</Italian>
|
<Italian>Menù di collocamento</Italian>
|
||||||
<Hungarian>Elhelyezési menü</Hungarian>
|
<Hungarian>Elhelyezési menü</Hungarian>
|
||||||
<Portuguese>Menu de posicionamento</Portuguese>
|
<Portuguese>Menu de posicionamento</Portuguese>
|
||||||
<Russian>Меню детонации</Russian>
|
<Russian>Меню установки</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_Defuse">
|
<Key ID="STR_ACE_Explosives_Defuse">
|
||||||
<English>Defuse</English>
|
<English>Defuse</English>
|
||||||
@ -395,7 +395,7 @@
|
|||||||
<Italian>Piastra a Pressione</Italian>
|
<Italian>Piastra a Pressione</Italian>
|
||||||
<Hungarian>Nyomólap</Hungarian>
|
<Hungarian>Nyomólap</Hungarian>
|
||||||
<Portuguese>Placa de pressão</Portuguese>
|
<Portuguese>Placa de pressão</Portuguese>
|
||||||
<Russian>Давление</Russian>
|
<Russian>Нажимная плита</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_TripWire">
|
<Key ID="STR_ACE_Explosives_TripWire">
|
||||||
<English>Tripwire</English>
|
<English>Tripwire</English>
|
||||||
@ -443,19 +443,19 @@
|
|||||||
<Italian>Sensore IR (Attacco laterale)</Italian>
|
<Italian>Sensore IR (Attacco laterale)</Italian>
|
||||||
<Hungarian>Infravörös szenzor (Side Attack)</Hungarian>
|
<Hungarian>Infravörös szenzor (Side Attack)</Hungarian>
|
||||||
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
<Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
|
||||||
<Russian>ИК (детонация вбок)</Russian>
|
<Russian>ИК сенсор (детонация вбок)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
<Key ID="STR_ACE_Explosives_SLAME_Magnetic">
|
||||||
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
<English>Magnetic Influence Sensor (Bottom Attack)</English>
|
||||||
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
<Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
|
||||||
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
<Spanish>Sensor IM (ataque inferior)</Spanish>
|
||||||
<German>Magnetfeldsensor (Bodenangriff)</German>
|
<German>Magnetfeldsensor (Bodenangriff)</German>
|
||||||
<French>Capteur Magnétique (par le bas)</French>
|
<French>Capteur magnétique (par le bas)</French>
|
||||||
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
<Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
|
||||||
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
<Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
|
||||||
<Hungarian>Mágneses mező érzékelő (Bottom Attack)</Hungarian>
|
<Hungarian>Mágneses mező érzékelő (Bottom Attack)</Hungarian>
|
||||||
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
<Portuguese>Influência magnética (ataque inferior)</Portuguese>
|
||||||
<Russian>Магнитный (детонация вверх)</Russian>
|
<Russian>Магнитный сенсор (детонация вверх)</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
<Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
|
||||||
<English>No explosives on trigger.</English>
|
<English>No explosives on trigger.</English>
|
||||||
@ -467,7 +467,7 @@
|
|||||||
<Hungarian>Nincs robbanóanyag a gyújtóeszközhöz kötve.</Hungarian>
|
<Hungarian>Nincs robbanóanyag a gyújtóeszközhöz kötve.</Hungarian>
|
||||||
<Polish>Brak ładunków na zapalnik.</Polish>
|
<Polish>Brak ładunków na zapalnik.</Polish>
|
||||||
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
<Portuguese>Nenhum explosivo no gatilho.</Portuguese>
|
||||||
<Russian>Нет доступных ВУ для взрывателя.</Russian>
|
<Russian>Взрыватель не подсоединён к взрывчатке</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
<Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
|
||||||
<English>Dead Man's Switch</English>
|
<English>Dead Man's Switch</English>
|
||||||
@ -477,7 +477,7 @@
|
|||||||
<Polish>Czuwak</Polish>
|
<Polish>Czuwak</Polish>
|
||||||
<Spanish>Detonador de hombre muerto</Spanish>
|
<Spanish>Detonador de hombre muerto</Spanish>
|
||||||
<Hungarian>Dead Man's Switch</Hungarian>
|
<Hungarian>Dead Man's Switch</Hungarian>
|
||||||
<Russian>Ловушка мертвеца</Russian>
|
<Russian>Кнопка мертвеца</Russian>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
<Key ID="STR_ACE_Explosives_DeadManSwitch_description">
|
||||||
<English>Used to remotely trigger explosives when released.</English>
|
<English>Used to remotely trigger explosives when released.</English>
|
||||||
|
@ -35,13 +35,6 @@ class RscInGameUI {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
class RscOptics_LaserDesignator {
|
|
||||||
class CA_IGUI_elements_group: RscControlsGroup {
|
|
||||||
class controls {
|
|
||||||
MACRO_RANGEFINDER
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
class RscWeaponRangeFinderMAAWS {
|
class RscWeaponRangeFinderMAAWS {
|
||||||
class CA_IGUI_elements_group: RscControlsGroup {
|
class CA_IGUI_elements_group: RscControlsGroup {
|
||||||
class controls {
|
class controls {
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
private ["_interval", "_player", "_newVel", "_accel", "_currentGForce", "_average", "_sum", "_classCoef", "_suitCoef", "_gBlackOut", "_gRedOut", "_g", "_gBO", "_coef", "_strength"];
|
||||||
|
|
||||||
EXPLODE_2_PVT(_this,_params,_pfhId);
|
EXPLODE_2_PVT(_this,_params,_pfhId);
|
||||||
|
|
||||||
_interval = time - GVAR(lastUpdateTime);
|
_interval = time - GVAR(lastUpdateTime);
|
||||||
|
@ -56,6 +56,7 @@ FUNC(CheckGlasses) = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
player addEventHandler ["Explosion", {
|
player addEventHandler ["Explosion", {
|
||||||
|
private "_effects";
|
||||||
if (alive ace_player) then {
|
if (alive ace_player) then {
|
||||||
call FUNC(ApplyDirtEffect);
|
call FUNC(ApplyDirtEffect);
|
||||||
if (GETBROKEN) exitWith {};
|
if (GETBROKEN) exitWith {};
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
if (cameraOn != ace_player || {call FUNC(externalCamera)}) exitWith{false};
|
if (cameraOn != ace_player || {call FUNC(externalCamera)}) exitWith{false};
|
||||||
private "_dirtImage";
|
private ["_dirtImage", "_applied", "_effects"];
|
||||||
_effects = GETGLASSES(ace_player);
|
_effects = GETGLASSES(ace_player);
|
||||||
_effects set [DIRT, true];
|
_effects set [DIRT, true];
|
||||||
SETGLASSES(ace_player,_effects);
|
SETGLASSES(ace_player,_effects);
|
||||||
|
@ -16,7 +16,8 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private "_broken";
|
private ["_broken", "_effects"];
|
||||||
|
|
||||||
_broken = GETBROKEN;
|
_broken = GETBROKEN;
|
||||||
_effects = GLASSESDEFAULT;
|
_effects = GLASSESDEFAULT;
|
||||||
_effects set [BROKEN, _broken];
|
_effects set [BROKEN, _broken];
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
* The rating [0-3] <NUMBER>
|
* The rating [0-3] <NUMBER>
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* _rating = 0.05 call ace_goggles_fnc_getExplosionIndex;
|
* 0.05 call ace_goggles_fnc_getExplosionIndex;
|
||||||
*
|
*
|
||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
@ -14,8 +14,10 @@
|
|||||||
* Public: Yes
|
* Public: Yes
|
||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
private ["_currentGlasses", "_result", "_unit"];
|
|
||||||
_unit = _this select 0;
|
PARAMS_1(_unit);
|
||||||
|
|
||||||
|
private ["_currentGlasses", "_result", "_position", "_visible"];
|
||||||
|
|
||||||
_currentGlasses = goggles _unit;
|
_currentGlasses = goggles _unit;
|
||||||
_result = false;
|
_result = false;
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light", "_losCount"];
|
private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light", "_losCount", "_dirToUnitVector", "_eyeDir", "_eyePos"];
|
||||||
|
|
||||||
PARAMS_1(_grenade);
|
PARAMS_1(_grenade);
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ PARAMS_1(_projectile);
|
|||||||
if (alive _projectile) then {
|
if (alive _projectile) then {
|
||||||
playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];
|
playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];
|
||||||
|
|
||||||
|
private "_affected";
|
||||||
_affected = _projectile nearEntities ["CAManBase", 50];
|
_affected = _projectile nearEntities ["CAManBase", 50];
|
||||||
["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent);
|
["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent);
|
||||||
};
|
};
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<Spanish>Lanzamiento normal</Spanish>
|
<Spanish>Lanzamiento normal</Spanish>
|
||||||
<Polish>Normalny rzut</Polish>
|
<Polish>Normalny rzut</Polish>
|
||||||
<Czech>Normální hod</Czech>
|
<Czech>Normální hod</Czech>
|
||||||
<French>Lancer Normal</French>
|
<French>Lancer normal</French>
|
||||||
<Russian>Нормальный бросок</Russian>
|
<Russian>Нормальный бросок</Russian>
|
||||||
<Hungarian>Normál dobás</Hungarian>
|
<Hungarian>Normál dobás</Hungarian>
|
||||||
<Italian>Lancio normale</Italian>
|
<Italian>Lancio normale</Italian>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
<Spanish>Lanzamiento alto</Spanish>
|
<Spanish>Lanzamiento alto</Spanish>
|
||||||
<Polish>Wysoki rzut</Polish>
|
<Polish>Wysoki rzut</Polish>
|
||||||
<Czech>Vysoký hod</Czech>
|
<Czech>Vysoký hod</Czech>
|
||||||
<French>Lancer Haut</French>
|
<French>Lancer haut</French>
|
||||||
<Russian>Высокий бросок</Russian>
|
<Russian>Высокий бросок</Russian>
|
||||||
<Hungarian>Magas dobás</Hungarian>
|
<Hungarian>Magas dobás</Hungarian>
|
||||||
<Italian>Lancio verso l'alto</Italian>
|
<Italian>Lancio verso l'alto</Italian>
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<Spanish>Lanzamiento preciso</Spanish>
|
<Spanish>Lanzamiento preciso</Spanish>
|
||||||
<Polish>Precyzyjny rzut</Polish>
|
<Polish>Precyzyjny rzut</Polish>
|
||||||
<Czech>Přesný hod</Czech>
|
<Czech>Přesný hod</Czech>
|
||||||
<French>Lancer Précis</French>
|
<French>Lancer précis</French>
|
||||||
<Russian>Точный бросок</Russian>
|
<Russian>Точный бросок</Russian>
|
||||||
<Hungarian>Pontos dobás</Hungarian>
|
<Hungarian>Pontos dobás</Hungarian>
|
||||||
<Italian>Lancio preciso</Italian>
|
<Italian>Lancio preciso</Italian>
|
||||||
@ -56,7 +56,7 @@
|
|||||||
<Spanish>Rodar granada</Spanish>
|
<Spanish>Rodar granada</Spanish>
|
||||||
<Polish>Po ziemi</Polish>
|
<Polish>Po ziemi</Polish>
|
||||||
<Czech>Po zemi</Czech>
|
<Czech>Po zemi</Czech>
|
||||||
<French>Lancer Roulé</French>
|
<French>Lancer roulé</French>
|
||||||
<Russian>Катить гранату</Russian>
|
<Russian>Катить гранату</Russian>
|
||||||
<Hungarian>Gránát gurítása</Hungarian>
|
<Hungarian>Gránát gurítása</Hungarian>
|
||||||
<Italian>Fai rotolare la granata</Italian>
|
<Italian>Fai rotolare la granata</Italian>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<English>M84 Stun Grenade</English>
|
<English>M84 Stun Grenade</English>
|
||||||
<German>M84 Blendgranate</German>
|
<German>M84 Blendgranate</German>
|
||||||
<Spanish>Granada aturdidora M84</Spanish>
|
<Spanish>Granada aturdidora M84</Spanish>
|
||||||
<French>M84 Grenade Incapacitante</French>
|
<French>M84 Grenade incapacitante</French>
|
||||||
<Polish>Granat hukowy M84</Polish>
|
<Polish>Granat hukowy M84</Polish>
|
||||||
<Czech>Omračující granát M84</Czech>
|
<Czech>Omračující granát M84</Czech>
|
||||||
<Russian>M84 светозвуковая граната</Russian>
|
<Russian>M84 светозвуковая граната</Russian>
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_silencer", "_audibleFireCoef", "_loudness", "_strength"];
|
private ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_silencer", "_audibleFireCoef", "_loudness", "_strength", "_audibleFire", "_audibleFireTime", "_audibleFireTimeCoef"];
|
||||||
|
|
||||||
_unit = _this select 0;
|
_unit = _this select 0;
|
||||||
_firer = _this select 1;
|
_firer = _this select 1;
|
||||||
|
@ -10,8 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
_logic = _this select 0;
|
PARAMS_3(_logic,_units,_activated);
|
||||||
_activated = _this select 2;
|
|
||||||
|
|
||||||
if !(_activated) exitWith {};
|
if !(_activated) exitWith {};
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#define STRENGHTODEAFNESS 3
|
#define STRENGHTODEAFNESS 3
|
||||||
#define MAXDEAFNESS 1.1
|
#define MAXDEAFNESS 1.1
|
||||||
|
|
||||||
|
private ["_recoverRate", "_volume"];
|
||||||
|
|
||||||
// Exit if combat deafness is disabled
|
// Exit if combat deafness is disabled
|
||||||
if !(GVAR(enableCombatDeafness)) exitWith {};
|
if !(GVAR(enableCombatDeafness)) exitWith {};
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
<Spanish>Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición.</Spanish>
|
<Spanish>Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición.</Spanish>
|
||||||
<Polish>Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu.</Polish>
|
<Polish>Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu.</Polish>
|
||||||
<Czech>Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní.</Czech>
|
<Czech>Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní.</Czech>
|
||||||
<Russian>Беруши позволяют избежать потери слуха при близкой громкой стрельбе.</Russian>
|
<Russian>Беруши позволяют носителю находиться возле громкого вооружения без потери слуха.</Russian>
|
||||||
<French>Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus.</French>
|
<French>Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus.</French>
|
||||||
<Hungarian>Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást.</Hungarian>
|
<Hungarian>Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást.</Hungarian>
|
||||||
<Portuguese>Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição.</Portuguese>
|
<Portuguese>Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição.</Portuguese>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<Spanish>Poner tapones</Spanish>
|
<Spanish>Poner tapones</Spanish>
|
||||||
<Polish>Włóż stopery</Polish>
|
<Polish>Włóż stopery</Polish>
|
||||||
<Czech>Dát špunty do uší</Czech>
|
<Czech>Dát špunty do uší</Czech>
|
||||||
<Russian>Беруши надеты</Russian>
|
<Russian>Надеть беруши</Russian>
|
||||||
<French>Bouchons mis</French>
|
<French>Bouchons mis</French>
|
||||||
<Hungarian>Füldugó berakva</Hungarian>
|
<Hungarian>Füldugó berakva</Hungarian>
|
||||||
<Portuguese>Protetores colocados</Portuguese>
|
<Portuguese>Protetores colocados</Portuguese>
|
||||||
@ -43,7 +43,7 @@
|
|||||||
<Spanish>Quitar tapones</Spanish>
|
<Spanish>Quitar tapones</Spanish>
|
||||||
<Polish>Wyjmij stopery</Polish>
|
<Polish>Wyjmij stopery</Polish>
|
||||||
<Czech>Vyndat špunty z uší</Czech>
|
<Czech>Vyndat špunty z uší</Czech>
|
||||||
<Russian>Беруши сняты</Russian>
|
<Russian>Снять беруши</Russian>
|
||||||
<French>Bouchons enlevés</French>
|
<French>Bouchons enlevés</French>
|
||||||
<Hungarian>Füldugó kivéve</Hungarian>
|
<Hungarian>Füldugó kivéve</Hungarian>
|
||||||
<Portuguese>Protetores retirados</Portuguese>
|
<Portuguese>Protetores retirados</Portuguese>
|
||||||
@ -80,7 +80,7 @@
|
|||||||
<Polish>Nie masz stoperów</Polish>
|
<Polish>Nie masz stoperów</Polish>
|
||||||
<Czech>Nemáš žádné špunty</Czech>
|
<Czech>Nemáš žádné špunty</Czech>
|
||||||
<Russian>У вас нет беруш</Russian>
|
<Russian>У вас нет беруш</Russian>
|
||||||
<French>Vous n'avez pas de Bouchons Anti-Bruits</French>
|
<French>Vous n'avez pas de bouchons anti-bruits</French>
|
||||||
<Hungarian>Nincsen füldugód</Hungarian>
|
<Hungarian>Nincsen füldugód</Hungarian>
|
||||||
<Portuguese>Você não possui protetores auriculares</Portuguese>
|
<Portuguese>Você não possui protetores auriculares</Portuguese>
|
||||||
<Italian>Non hai i tappi auricolari</Italian>
|
<Italian>Non hai i tappi auricolari</Italian>
|
||||||
|
@ -22,6 +22,13 @@ private ["_target","_player","_fullPath","_activeChildren","_dynamicChildren","_
|
|||||||
_target = _object;
|
_target = _object;
|
||||||
_player = ACE_player;
|
_player = ACE_player;
|
||||||
|
|
||||||
|
// Check if the function should be modified first
|
||||||
|
if !((_origActionData select 10) isEqualTo {}) then {
|
||||||
|
// It should, so make a copy and pass it to the modifierFunction
|
||||||
|
_origActionData = +_origActionData;
|
||||||
|
[_target, ACE_player, _origActionData select 6, _origActionData] call (_origActionData select 10);
|
||||||
|
};
|
||||||
|
|
||||||
// Return nothing if the action itself is not active
|
// Return nothing if the action itself is not active
|
||||||
if !([_target, ACE_player, _origActionData select 6] call (_origActionData select 4)) exitWith {
|
if !([_target, ACE_player, _origActionData select 6] call (_origActionData select 4)) exitWith {
|
||||||
[]
|
[]
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user