Merge branch 'master' into medical-rewrite

This commit is contained in:
PabstMirror 2016-11-09 13:12:42 -06:00
commit 5463e9dff8
84 changed files with 2506 additions and 176 deletions

View File

@ -6,126 +6,147 @@
<Russian>Улучшенный бросок гранат</Russian>
<Japanese>アドバンスド投てき</Japanese>
<Polish>Zaawansowane rzucanie</Polish>
<German>Erweitertes Wurfsystem</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Module_Description">
<English>Allows changing advanced throwing behaviour.</English>
<Russian>Позволяет настраивать поведение улучшенного броска гранат.</Russian>
<Japanese>アドバンスド投てきの挙動変更を許可します。</Japanese>
<Polish>Zezwala na zmianę zachowania zaawansowanego trybu rzucania.</Polish>
<German>Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern.</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Enable_DisplayName">
<English>Enable Advanced Throwing</English>
<Russian>Включить улучшенный бросок</Russian>
<Japanese>アドバンスド投てきを有効化</Japanese>
<Polish>Aktywuj zaawansowane rzucanie</Polish>
<German>Aktiviere erweitertes Wurfsystem</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Enable_Description">
<English>Enables advanced throwing system.</English>
<Russian>Включает систему улучшенного броска.</Russian>
<Japanese>アドバンスド投てきシステムを有効化</Japanese>
<Polish>Aktywuje system zaawansowanego rzucania.</Polish>
<German>Aktiviert das erweiterte Wurfsystem.</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_DisplayName">
<English>Show Throw Arc</English>
<Russian>Показать траекторию броска</Russian>
<Japanese>軌道を表示</Japanese>
<Polish>Pokaż trasę lotu</Polish>
<German>Zeige Wurfbogen</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_ShowThrowArc_Description">
<English>Enables visualization of the throw arc (where throwable will fly).</English>
<Russian>Включает визуализацию траектории броска (как полетит граната).</Russian>
<Japanese>投てき物の予測軌道の表示を有効化します。</Japanese>
<Polish>Wyświetla wizualizację trasy przelotu granatu.</Polish>
<German>Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird).</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_DisplayName">
<English>Show Throwing Mouse Controls</English>
<Russian>Показывать управление мышью</Russian>
<Japanese>投てきのマウス操作を表示</Japanese>
<Polish>Pokaż podpowiedzi sterowania myszą</Polish>
<German>Zeige Maussteuerung beim Werfen</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_ShowMouseControls_Description">
<English>Enables visual cues for mouse controls when throwable is prepared.</English>
<Russian>Включает отображение подсказок по управлению мышью, когда граната подготовлена.</Russian>
<Japanese>投てき物を投げるとき、マウス操作の説明表示を有効化します。</Japanese>
<Polish>Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku.</Polish>
<German>Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird.</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_DisplayName">
<English>Enable Throwables Pick Up</English>
<Russian>Включить подбор гранат</Russian>
<Japanese>投てき物の拾い上げを有効化</Japanese>
<Polish>Zezwól na podnoszenie obiektów miotanych</Polish>
<German>Aktiviere Aufheben von Wurfobjekten</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUp_Description">
<English>Enables ability to pick up throwables from the ground.</English>
<Russian>Включает возможность подбирать гранаты с земли.</Russian>
<Japanese>地面に落ちている投てき物の拾い上げ動作を有効化します。</Japanese>
<Polish>Umożliwia podnoszenie obiektów miotanych z ziemi.</Polish>
<German>Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben.</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_DisplayName">
<English>Enable Attached Throwables Pick Up</English>
<Russian>Включить подбор прикрепленных гранат</Russian>
<Japanese>拾い上げた投てき物の取り付けを有効化</Japanese>
<Polish>Zezwól na podnoszenie przyczepionych obiektów miotanych</Polish>
<German>Aktiviere erneute Aufnahme befestigter Wurfobjekte</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_EnablePickUpAttached_Description">
<English>Enables ability to pick up throwables from attached objects.</English>
<Russian>Включает возможность подбирать гранаты, прикрепленные к объектам.</Russian>
<Japanese>オブジェクトに取り付けられていた投てき物を拾い上げられるようにします。</Japanese>
<Polish>Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów.</Polish>
<German>Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen.</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Prepare">
<English>Prepare/Change Throwable</English>
<Russian>Подготовить/заменить гранату</Russian>
<Japanese>機能の起動/変更</Japanese>
<Polish>Przygotuj/zmień ob. miotany</Polish>
<German>Wurfobjekt vorbereiten/wechseln</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_dropModeHold">
<English>Throwable Drop Mode (Hold)</English>
<Russian>Режим броска гранаты (удерживать)</Russian>
<Japanese>投てきモード (押しっぱ)</Japanese>
<Polish>Tryb upuszczania ob. miotanego (przytrzymaj)</Polish>
<German>Wurfobjekt Fallmodus (halten)</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_DropModeToggle">
<English>Throwable Drop Mode (Toggle)</English>
<Russian>Режим броска гранаты (переключить)</Russian>
<Japanese>投てきモード (トグル)</Japanese>
<Polish>Tryb upuszczania ob. miotanego (przełącz)</Polish>
<German>Wurfobjekt Fallmodus (umschalten)</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Primed">
<English>Primed</English>
<Russian>Подготовлена</Russian>
<Japanese>起動した</Japanese>
<Polish>Odbezpieczony</Polish>
<German>Scharf gemacht</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Throw">
<English>Throw</English>
<Russian>Бросить</Russian>
<Japanese>投げる</Japanese>
<Polish>Rzuć</Polish>
<German>Werfen</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_ChangeMode">
<English>(Scroll) Change Mode</English>
<Russian>(Скролл) Изменить режим</Russian>
<Japanese>(スクロール) モード変更</Japanese>
<Polish>(Kółko m.) zmień tryb</Polish>
<German>(Scrollen) Modus wechseln</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Extend">
<English>(Scroll) Extend</English>
<Russian>(Скролл) Увеличить</Russian>
<Japanese>(スクロール) 遠くに</Japanese>
<Polish>(Kółko m.) przedłuż</Polish>
<German>(Scrollen) Erweitern</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_Cook">
<English>(Click) Cook</English>
<Russian>(Клик) Подготовить</Russian>
<Japanese>(クリック) 起爆</Japanese>
<Polish>(Kliknięcie) Odbezpiecz</Polish>
<German>(Klicken) Abkochen</German>
</Key>
<Key ID="STR_ACE_Advanced_Throwing_PickUp">
<English>Pick Up</English>
<Russian>Подобрать</Russian>
<Japanese>拾い上げる</Japanese>
<Polish>Podnieś</Polish>
<German>Aufheben</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -2,6 +2,8 @@
#define ST_RIGHT 1
#define ST_CENTER 2
#define ST_WITH_RECT 160
class ATragMX_RscText {
idc=-1;
type=0;
@ -350,6 +352,7 @@ class ATragMX_Display {
colorBackground[]={0.15,0.21,0.23,0.3};
colorFocused[]={0.15,0.21,0.23,0.2};
text="MV";
action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data));
};
class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
idc=130;
@ -383,18 +386,18 @@ class ATragMX_Display {
y=0.265*safezoneH+safezoneY+0.320;
text="";
};
class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION {
class TEXT_BAROMETRIC_PRESSURE: TEXT_TEMPERATURE {
idc=21;
x=0.550*safezoneW+safezoneX+0.20;
y=0.265*safezoneH+safezoneY+0.355;
text="BP";
};
class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
idc=210;
y=0.265*safezoneH+safezoneY+0.355;
};
class TEXT_RELATIVE_HUMIDITY: TEXT_AIR_FRICTION {
class TEXT_RELATIVE_HUMIDITY: TEXT_BAROMETRIC_PRESSURE {
idc=22;
x=0.550*safezoneW+safezoneX+0.20;
y=0.265*safezoneH+safezoneY+0.390;
text="RH";
};
@ -526,7 +529,7 @@ class ATragMX_Display {
};
class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscText {
idc=400;
style=160;
style=ST_WITH_RECT+ST_RIGHT;
sizeEx=0.025;
w=0.065;
h=0.032;
@ -606,17 +609,39 @@ class ATragMX_Display {
class TEXT_SCOPE_CLICK_NUMBER: TEXT_GUN_LIST {
idc=2001;
style=ST_CENTER;
w=0.03;
w=0.025;
x=0.550*safezoneW+safezoneX+0.27;
text="4";
action=QUOTE(call FUNC(toggle_solution_setup));
};
class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
class TEXT_OPTIONS: TEXT_GUN_LIST {
idc=3000;
style=ST_RIGHT;
x=0.550*safezoneW+safezoneX+0.3;
text="Calc";
action=QUOTE(call FUNC(calculate_target_solution));
text="Options";
action=QUOTE(false call FUNC(toggle_option_menu));
};
class TEXT_OPTIONS_BACKGROUND: ATragMX_RscButton {
idc=3001;
colorBackground[]={0.15,0.21,0.23,0.2};
colorBackgroundActive[]={0.15,0.21,0.23,0.2};
colorFocused[]={0.15,0.21,0.23,0.2};
x=0.550*safezoneW+safezoneX+0.105;
y=0.265*safezoneH+safezoneY+0.17;
w=0.3;
h=0.535;
offsetPressedX=0.0;
offsetPressedY=0.0;
action=QUOTE(false call FUNC(toggle_option_menu));
};
class TEXT_OPTIONS_LIST_OUTPUT: ATragMX_RscListBox {
idc=3002;
w=0.17;
h=0.28;
x=0.550*safezoneW+safezoneX+0.225;
y=0.265*safezoneH+safezoneY+0.355;
sizeEx=0.025;
onMouseButtonClick=QUOTE(true call FUNC(toggle_option_menu));
};
class TEXT_RANGE_CARD_SCOPE_UNIT: TEXT_GUN_PROFILE {
@ -766,8 +791,9 @@ class ATragMX_Display {
class TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE: TEXT_TARGET_RANGE_ASSIST_MEASUREMENT_METHOD {
idc=7003;
style=ST_RIGHT;
x=0.550*safezoneW+safezoneX+0.10;
x=0.550*safezoneW+safezoneX+0.092;
y=0.265*safezoneH+safezoneY+0.4;
w=0.128;
text="Target Size";
};
class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
@ -874,22 +900,22 @@ class ATragMX_Display {
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
idc=8000;
x=0.550*safezoneW+safezoneX+0.13;
x=0.550*safezoneW+safezoneX+0.12;
text="Target Range";
};
class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
idc=8001;
x=0.550*safezoneW+safezoneX+0.13;
x=0.550*safezoneW+safezoneX+0.12;
text="Num Ticks";
};
class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
idc=8002;
x=0.550*safezoneW+safezoneX+0.13;
x=0.550*safezoneW+safezoneX+0.12;
text="Time (secs)";
};
class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
idc=8003;
x=0.550*safezoneW+safezoneX+0.13;
x=0.550*safezoneW+safezoneX+0.12;
text="Est Speed";
};
class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
@ -1468,5 +1494,343 @@ class ATragMX_Display {
y=0.265*safezoneH+safezoneY+0.55;
action=QUOTE(0 call FUNC(toggle_solution_setup));
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE: TEXT_BORE_HEIGHT {
idc=16000;
w=0.22;
y=0.265*safezoneH+safezoneY+0.25;
sizeEx=0.022;
text="Temperature";
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE {
idc=16001;
x=0.550*safezoneW+safezoneX+0.215;
sizeEx=0.022;
text="Muzzle velocity";
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1: ATragMX_RscEdit {
idc=160021;
w=0.082;
h=0.035;
x=0.550*safezoneW+safezoneX+0.128;
y=0.265*safezoneH+safezoneY+0.29;
text="0";
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160022;
y=0.265*safezoneH+safezoneY+0.325;
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160023;
y=0.265*safezoneH+safezoneY+0.360;
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160024;
y=0.265*safezoneH+safezoneY+0.395;
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160025;
y=0.265*safezoneH+safezoneY+0.430;
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160026;
y=0.265*safezoneH+safezoneY+0.465;
};
class TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160027;
y=0.265*safezoneH+safezoneY+0.500;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_1: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_1 {
idc=160031;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_2: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_2 {
idc=160032;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_3: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_3 {
idc=160033;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_4: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_4 {
idc=160034;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_5: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_5 {
idc=160035;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_6: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_6 {
idc=160036;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_MUZZLE_VELOCITY_INPUT_7: TEXT_MUZZLE_VELOCITY_DATA_TEMPERATURE_INPUT_7 {
idc=160037;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_MUZZLE_VELOCITY_DATA_CLEAR: TEXT_TARGET_DATA_NEXT {
idc=16004;
style=ST_CENTER;
h=0.035;
y=0.265*safezoneH+safezoneY+0.3625;
text="Clear";
action=QUOTE(call FUNC(clear_muzzle_velocity_data));
};
class TEXT_MUZZLE_VELOCITY_DATA_QUESTIONMARK: TEXT_MUZZLE_VELOCITY_DATA_CLEAR {
idc=16005;
y=0.265*safezoneH+safezoneY+0.430;
text="?";
action="";
};
class TEXT_MUZZLE_VELOCITY_DATA_DONE: TEXT_TARGET_DATA_DONE {
idc=16006;
action=QUOTE(1 call FUNC(toggle_muzzle_velocity_data));
};
class TEXT_MUZZLE_VELOCITY_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL {
idc=16007;
action=QUOTE(0 call FUNC(toggle_muzzle_velocity_data));
};
class TEXT_MUZZLE_VELOCITY_DATA_PREV: TEXT_TARGET_DATA_PREV {
idc=16008;
};
class TEXT_MUZZLE_VELOCITY_DATA_NEXT: TEXT_TARGET_DATA_NEXT {
idc=16009;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE: TEXT_BORE_HEIGHT {
idc=17000;
w=0.22;
x=0.550*safezoneW+safezoneX+0.15;
y=0.265*safezoneH+safezoneY+0.25;
sizeEx=0.022;
text="Meters";
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE {
idc=17001;
x=0.550*safezoneW+safezoneX+0.235;
sizeEx=0.022;
text="BC-Coef";
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1: ATragMX_RscEdit {
idc=170021;
w=0.082;
h=0.035;
x=0.550*safezoneW+safezoneX+0.128;
y=0.265*safezoneH+safezoneY+0.29;
text="0";
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170022;
y=0.265*safezoneH+safezoneY+0.325;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170023;
y=0.265*safezoneH+safezoneY+0.360;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170024;
y=0.265*safezoneH+safezoneY+0.395;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170025;
y=0.265*safezoneH+safezoneY+0.430;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170026;
y=0.265*safezoneH+safezoneY+0.465;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170027;
y=0.265*safezoneH+safezoneY+0.500;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_1: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_1 {
idc=170031;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_2: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_2 {
idc=170032;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_3: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_3 {
idc=170033;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_4: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_4 {
idc=170034;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_5: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_5 {
idc=170035;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_6: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_6 {
idc=170036;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_C1_BALLISTIC_COEFFICIENT_INPUT_7: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DISTANCE_INPUT_7 {
idc=170037;
x=0.550*safezoneW+safezoneX+0.225;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK: TEXT_TARGET_DATA_NEXT {
idc=17004;
style=ST_CENTER;
w=0.04;
h=0.035;
y=0.265*safezoneH+safezoneY+0.35;
text="?";
action="";
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CLEAR: TEXT_C1_BALLISTIC_COEFFICIENT_DATA_QUESTIONMARK {
idc=17005;
w=0.07;
y=0.265*safezoneH+safezoneY+0.4175;
text="Clear";
action=QUOTE(call FUNC(clear_c1_ballistic_coefficient_data));
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_DONE: TEXT_TARGET_DATA_DONE {
idc=17006;
action=QUOTE(1 call FUNC(toggle_c1_ballistic_coefficient_data));
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_CANCEL: TEXT_TARGET_DATA_CANCEL {
idc=17007;
action=QUOTE(0 call FUNC(toggle_c1_ballistic_coefficient_data));
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_PREV: TEXT_TARGET_DATA_PREV {
idc=17008;
};
class TEXT_C1_BALLISTIC_COEFFICIENT_DATA_NEXT: TEXT_TARGET_DATA_NEXT {
idc=17009;
};
class TEXT_TRUING_DROP_ZERO_RANGE: ATragMX_RscText {
idc=18000;
style=ST_LEFT;
x=0.550*safezoneW+safezoneX+0.115;
y=0.265*safezoneH+safezoneY+0.220;
w=0.135;
h=0.03;
sizeEx=0.025;
text="ZR=100meters";
};
class TEXT_TRUING_DROP_DROP_UNIT: TEXT_TRUING_DROP_ZERO_RANGE {
idc=18001;
style=ST_LEFT;
x=0.550*safezoneW+safezoneX+0.25;
text="Drop=mil";
};
class TEXT_TRUING_DROP_TARGET_RANGE: TEXT_TRUING_DROP_ZERO_RANGE {
idc=18002;
y=0.265*safezoneH+safezoneY+0.35;
sizeEx=0.027;
text="Target Range";
};
class TEXT_TRUING_DROP_DROP: TEXT_TRUING_DROP_TARGET_RANGE {
idc=18003;
w=0.07;
y=0.265*safezoneH+safezoneY+0.40;
text="Drop";
};
class TEXT_TRUING_DROP_MUZZLE_VELOCITY: TEXT_TRUING_DROP_DROP {
idc=18004;
y=0.265*safezoneH+safezoneY+0.50;
text="MV";
};
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT: TEXT_TRUING_DROP_DROP {
idc=18005;
y=0.265*safezoneH+safezoneY+0.55;
text="C1";
};
class TEXT_TRUING_DROP_DROP_OUTPUT: ATragMX_RscEdit {
idc=18006;
style=ST_WITH_RECT+ST_RIGHT;
colorBackground[]={0.15,0.21,0.23,0.3};
colorDisabled[]={0,0,0,1};
w=0.06;
y=0.265*safezoneH+safezoneY+0.40;
x=0.550*safezoneW+safezoneX+0.17;
text="";
};
class TEXT_TRUING_DROP_MUZZLE_VELOCITY_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT {
idc=18007;
y=0.265*safezoneH+safezoneY+0.50;
text="";
};
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_OUTPUT: TEXT_TRUING_DROP_DROP_OUTPUT {
idc=18008;
y=0.265*safezoneH+safezoneY+0.55;
text="";
};
class TEXT_TRUING_DROP_SUPER: TEXT_TARGET_A {
idc=18009;
w=0.06;
x=0.550*safezoneW+safezoneX+0.25;
y=0.265*safezoneH+safezoneY+0.30;
text="SUPER";
action=QUOTE(GVAR(truingDropMode) = 0; call FUNC(update_truing_drop_selection));
};
class TEXT_TRUING_DROP_SUB: TEXT_TRUING_DROP_SUPER {
idc=18010;
x=0.550*safezoneW+safezoneX+0.32;
text="SUB";
action=QUOTE(GVAR(truingDropMode) = 1; call FUNC(update_truing_drop_selection));
};
class TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT: ATragMX_RscEdit {
idc=18011;
style=ST_WITH_RECT+ST_RIGHT;
colorDisabled[]={0,0,0,0.6};
w=0.06;
x=0.550*safezoneW+safezoneX+0.25;
y=0.265*safezoneH+safezoneY+0.35;
};
class TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
idc=18012;
x=0.550*safezoneW+safezoneX+0.32;
};
class TEXT_TRUING_DROP_DROP_SUPER_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
idc=18013;
y=0.265*safezoneH+safezoneY+0.40;
};
class TEXT_TRUING_DROP_DROP_SUB_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT {
idc=18014;
y=0.265*safezoneH+safezoneY+0.40;
};
class TEXT_TRUING_DROP_CALC: TEXT_GUN_LIST {
idc=18015;
style=ST_CENTER;
w=0.11;
x=0.550*safezoneW+safezoneX+0.26;
y=0.265*safezoneH+safezoneY+0.45;
text="Calc";
action=QUOTE(true call FUNC(calculate_truing_drop));
};
class TEXT_TRUING_DROP_MV_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUPER_INPUT {
idc=18016;
y=0.265*safezoneH+safezoneY+0.50;
};
class TEXT_TRUING_DROP_C1_BALLISTIC_COEFFICIENT_INPUT: TEXT_TRUING_DROP_TARGET_RANGE_SUB_INPUT {
idc=18017;
y=0.265*safezoneH+safezoneY+0.55;
};
class TEXT_TRUING_DROP_ACCEPT: TEXT_GUN_LIST {
idc=18018;
w=0.085;
h=0.04;
x=0.550*safezoneW+safezoneX+0.125;
y=0.265*safezoneH+safezoneY+0.60;
text="Accept";
action=QUOTE(1 call FUNC(toggle_truing_drop));
};
class TEXT_TRUING_DROP_CANCEL: TEXT_TRUING_DROP_ACCEPT {
idc=18019;
x=0.550*safezoneW+safezoneX+0.210;
text="Cancel";
action=QUOTE(0 call FUNC(toggle_truing_drop));
};
class TEXT_TRUING_DROP_RESTORE: TEXT_TRUING_DROP_CANCEL {
idc=18020;
x=0.550*safezoneW+safezoneX+0.29525;
text="Restore";
action=QUOTE(true call FUNC(restore_truing_drop));
};
};
};

View File

@ -1,13 +1,17 @@
PREP(add_new_gun);
PREP(calculate_distance_at_velocity);
PREP(calculate_range_card);
PREP(calculate_solution);
PREP(calculate_target_range_assist);
PREP(calculate_target_solution);
PREP(calculate_target_speed_assist);
PREP(calculate_truing_drop);
PREP(can_show);
PREP(change_gun);
PREP(change_target_slot);
PREP(clear_c1_ballistic_coefficient_data);
PREP(clear_muzzle_velocity_data);
PREP(clear_user_data);
PREP(create_dialog);
PREP(cycle_gun_list);
@ -18,17 +22,28 @@ PREP(cycle_scope_unit);
PREP(cycle_target_size_units);
PREP(cycle_target_speed_direction);
PREP(delete_gun);
PREP(evaluate_option_menu_input);
PREP(init);
PREP(insert_c1_ballistic_coefficient_data);
PREP(insert_muzzle_velocity_data);
PREP(parse_input);
PREP(read_gun_list_entries_from_config);
PREP(recalculate_c1_ballistic_coefficient);
PREP(recalculate_muzzle_velocity);
PREP(reset_relative_click_memory);
PREP(restore_atmo_default);
PREP(restore_truing_drop);
PREP(restore_user_data);
PREP(save_gun);
PREP(shift_c1_ballistic_coefficient_data);
PREP(shift_muzzle_velocity_data);
PREP(show_add_new_gun);
PREP(show_atmo_env_data);
PREP(show_c1_ballistic_coefficient_data);
PREP(show_gun_ammo_data);
PREP(show_gun_list);
PREP(show_main_page);
PREP(show_muzzle_velocity_data);
PREP(show_range_card);
PREP(show_range_card_setup);
PREP(show_solution_setup);
@ -36,24 +51,35 @@ PREP(show_target_data);
PREP(show_target_range_assist);
PREP(show_target_speed_assist);
PREP(show_target_speed_assist_timer);
PREP(show_truing_drop);
PREP(sord);
PREP(store_gun_list);
PREP(store_user_data);
PREP(target_speed_assist_timer);
PREP(toggle_atmo_env_data);
PREP(toggle_c1_ballistic_coefficient_data);
PREP(toggle_coriolis);
PREP(toggle_gun_ammo_data);
PREP(toggle_gun_list);
PREP(toggle_muzzle_velocity_data);
PREP(toggle_option_menu);
PREP(toggle_range_card);
PREP(toggle_range_card_setup);
PREP(toggle_solution_setup);
PREP(toggle_target_data);
PREP(toggle_target_range_assist);
PREP(toggle_target_speed_assist);
PREP(toggle_truing_drop);
PREP(true_c1_ballistic_coefficient);
PREP(true_muzzle_velocity);
PREP(update_atmosphere);
PREP(update_atmo_env_data);
PREP(update_atmo_selection);
PREP(update_c1_ballistic_coefficient_data);
PREP(update_gun);
PREP(update_gun_ammo_data);
PREP(update_inclination_angle);
PREP(update_muzzle_velocity_data);
PREP(update_range_card);
PREP(update_relative_click_memory);
PREP(update_result);
@ -62,6 +88,8 @@ PREP(update_solution_setup);
PREP(update_target);
PREP(update_target_data);
PREP(update_target_selection);
PREP(update_truing_drop_data);
PREP(update_truing_drop_selection);
PREP(update_unit_selection);
PREP(update_zero_range);
PREP(on_close_dialog);

View File

@ -5,44 +5,49 @@
if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
} else {
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0657485, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
["12.7x99mm API" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.99, 12.9, 38.10, 0.670, 1, "ASM" ],
["12.7x99mm AMAX" , 860, 100, 0.0611565, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x99mm" , 900, 100, 0.0582418, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
["12.7x54mm" , 300, 100, 0.3394630, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".50 Beowulf" , 563, 100, 0.0657485, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" ],
[".408 Chey Tac" , 910, 100, 0.0569400, -0.00038944, 3.81, 0, 2, 10, 120, 0, 0, 26.57, 10.4, 33.02, 0.970, 1, "ASM" , [[-15,883],[0,890],[10,897],[15,902],[25,916],[30,925],[35,936]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
["9.3×64mm" , 870, 100, 0.0619295, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
[".338LM API526" , 895, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.560, 1, "ASM" ],
[".338LM 250gr" , 880, 100, 0.0598469, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM 300gr" , 800, 100, 0.0677343, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".338LM API526" , 880, 100, 0.0588865, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.760, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.268, 7, "ICAO"],
[".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
[".300WM Mk248 Mod0" , 900, 100, 0.0584442, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Mk248 Mod1" , 867, 100, 0.0610738, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
[".300WM Berger OTM" , 853, 100, 0.0622179, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x54mmR" , 800, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
["7.62x54mmR" , 820, 100, 0.0691878, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.200, 7, "ICAO"],
["7.62x51mm M118LR" , 780, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk316" , 780, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
["7.62x51mm Mk319" , 910, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
["7.62x51mm M993" , 930, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO"],
["7.62x51mm Subsonic", 320, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
["7.62x51mm M80" , 810, 100, 0.0679374, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M118LR" , 765, 100, 0.0710319, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk316" , 782, 100, 0.0710319, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Mk319" , 901, 100, 0.0584524, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm M993" , 920, 100, 0.0570316, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["7.62x51mm Subsonic", 315, 100, 0.3059680, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x39mm" , 800, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
["6.5x47mm Lapua" , 800, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
["6.5mm Creedmor" , 840, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.317, 7, "ICAO"],
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ],
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" ]];
["6.5x39mm" , 774, 100, 0.0683482, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5x47mm Lapua" , 775, 100, 0.0682221, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["6.5mm Creedmor" , 830, 100, 0.0636501, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.8x42mm DBP87" , 950, 100, 0.0572574, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M855" , 870, 100, 0.0626386, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk262" , 820, 100, 0.0671481, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm Mk318" , 880, 100, 0.0615937, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.56x45mm M995" , 869, 100, 0.0626713, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
["5.45x39mm 7N6M" , 735, 100, 0.0787205, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
[] call FUNC(clear_user_data);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
@ -50,5 +55,6 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
[] call FUNC(init);
[] call FUNC(restore_user_data);
[] call FUNC(read_gun_list_entries_from_config);
[QEGVAR(vector,rangefinderData), {_this call FUNC(sord)}] call CBA_fnc_addEventHandler;

View File

@ -17,11 +17,11 @@
private _gunName = ctrlText 11001;
if (_gunName != "") then {
private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO"],
private _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO", [[-15,0],[0,0],[10,0],[15,0],[25,0],[30,0],[35,0]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true];
GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry];
lbAdd [6000, _gunProfileEntry select 0];
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
call FUNC(store_gun_list);
};

View File

@ -0,0 +1,41 @@
/*
* Author: Ruthberg
* Calculates distance at which the bullet velocity drops below the threshold velocity
*
* Arguments:
* theshold velocity <number>
*
* Return Value:
* distance <number
*
* Example:
* 403 call ace_atragmx_fnc_calculate_distance_at_velocity
*
* Public: No
*/
#include "script_component.hpp"
#define __DELTA_T 0.001
if (isNil QGVAR(targetSolutionInput)) exitWith { 0 };
private _thresholdVelocity = _this;
private _velocity = GVAR(targetSolutionInput) select 4;
if (_velocity <= _thresholdVelocity) exitWith { 0 };
private _distance = 0;
while {_velocity > _thresholdVelocity} do {
private _bc = GVAR(targetSolutionInput) select 14;
private _dragModel = GVAR(targetSolutionInput) select 15;
private _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _velocity]))
} else {
([_dragModel, _bc, _velocity] call EFUNC(advanced_ballistics,calculateRetardation))
};
_distance = _distance + _velocity * __DELTA_T;
_velocity = _velocity - (_drag * __DELTA_T);
};
_distance

View File

@ -16,7 +16,7 @@
#include "script_component.hpp"
private _angle = parseNumber(ctrlText 7012);
private _targetSize = parseNumber(ctrlText 7010);
private _targetSize = abs(parseNumber(ctrlText 7010));
if (GVAR(rangeAssistUseTargetHeight)) then {
_targetSize = _targetSize * cos(_angle);
};
@ -43,7 +43,7 @@ switch (GVAR(rangeAssistImageSizeUnit)) do {
_imageSize = _imageSize / 60 / 1.047;
};
};
private _estRange = parseNumber(ctrlText 7013);
private _estRange = abs(parseNumber(ctrlText 7013));
if (GVAR(currentUnit) == 1) then {
_estRange = _estRange / 1.0936133;
};
@ -52,7 +52,7 @@ switch (_this) do {
case 0: {
_targetSize = tan(_imageSize) * _estRange;
if (GVAR(rangeAssistUseTargetHeight)) then {
if (GVAR(rangeAssistUseTargetHeight) && cos(_angle) != 0) then {
_targetSize = _targetSize / cos(_angle);
};
@ -71,8 +71,10 @@ switch (_this) do {
ctrlSetText [7010, Str(Round(_targetSize * 100) / 100)];
};
case 1: {
_imageSize = atan(_targetSize / _estRange);
if (_estRange > 0) then {
_imageSize = atan(_targetSize / _estRange);
};
switch (GVAR(rangeAssistImageSizeUnit)) do {
case 0: {
_imageSize = _imageSize * 6400 / 360;
@ -88,8 +90,10 @@ switch (_this) do {
ctrlSetText [7011, Str(Round(_imageSize * 100) / 100)];
};
case 2: {
_estRange = _targetSize / tan(_imageSize);
if (tan(_imageSize) != 0) then {
_estRange = _targetSize / tan(_imageSize);
};
ctrlSetText [7013, Str(Round(_estRange))];
};
};

View File

@ -70,9 +70,10 @@ _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
_targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
_targetRange = GVAR(targetRange) select GVAR(currentTarget);
private ["_result"];
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
GVAR(targetSolutionInput) = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
[_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire];
private _result = GVAR(targetSolutionInput) call FUNC(calculate_solution);
GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
@ -80,5 +81,8 @@ GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1];
GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), _result select 6];
GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), _result select 7];
GVAR(spinDriftOutput) set [GVAR(currentTarget), _result select 8];
[] call FUNC(update_result);

View File

@ -0,0 +1,107 @@
/*
* Author: Ruthberg
* Calculates the truing drop and updates the output fields
*
* Arguments:
* parse input <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_calculate_truing_drop
*
* Public: No
*/
#include "script_component.hpp"
private _parseInput = _this;
private _transonicRange = GVAR(truingDropRangeData) select 0;
private _subsonicRange = GVAR(truingDropRangeData) select 1;
private _transonicDrop = GVAR(truingDropDropData) select 1;
private _subsonicDrop = GVAR(truingDropDropData) select 2;
if (_parseInput) then {
_transonicRange = 0 max abs(parseNumber(ctrlText 18011)) min 4000;
_subsonicRange = 0 max abs(parseNumber(ctrlText 18012)) min 4000;
if (GVAR(currentUnit) != 2) then {
_transonicRange = _transonicRange * 0.9144;
_subsonicRange = _subsonicRange * 0.9144;
};
_transonicRange = Round(_transonicRange);
_subsonicRange = Round(_subsonicRange);
_subsonicRange = _transonicRange max _subsonicRange;
_transonicDrop = 0 max abs(parseNumber(ctrlText 18013)) min 1000;
_subsonicDrop = 0 max abs(parseNumber(ctrlText 18014)) min 1000;
private _dropUnit = GVAR(currentScopeUnit);
if (_dropUnit == 3) then {
switch (GVAR(currentScopeClickUnit)) do {
case 0: { _dropUnit = 1; };
case 1: { _dropUnit = 2; };
case 2: { _dropUnit = 0; };
};
};
switch (_dropUnit) do {
case 0: {
_transonicDrop = _transonicDrop * 3.38;
_subsonicDrop = _subsonicDrop * 3.38;
};
case 2: {
_transonicDrop = _transonicDrop / 1.047;
_subsonicDrop = _subsonicDrop / 1.047;
};
};
_transonicDrop = Round(_transonicDrop * 100) / 100;
_subsonicDrop = Round(_subsonicDrop * 100) / 100;
_subsonicDrop = _transonicDrop max _subsonicDrop;
};
if ((GVAR(truingDropDropData) select 0) == 0 || {!([_transonicRange, _subsonicRange] isEqualTo GVAR(truingDropRangeData))}) then {
if (isNil QGVAR(targetSolutionInput)) then {
call FUNC(calculate_target_solution);
};
private _solutionInput = +GVAR(targetSolutionInput);
if (_transonicRange == 0) then {
_transonicRange = Round(403 call FUNC(calculate_distance_at_velocity));
};
_solutionInput set [13, _transonicRange];
private _result1 = _solutionInput call FUNC(calculate_solution);
_transonicDrop = Round((_result1 select 0) * 100) / 100;
GVAR(truingDropRangeData) set [0, _transonicRange];
GVAR(truingDropDropData) set [1, _transonicDrop];
GVAR(truingDropReferenceDropData) set [0, _transonicDrop];
private _speedOfSound = (_solutionInput select 5) call EFUNC(weather,calculateSpeedOfSound);
if (_subsonicRange == 0) then {
_subsonicRange = _speedOfSound call FUNC(calculate_distance_at_velocity);
if (GVAR(currentUnit) == 2) then {
_subsonicRange = _subsonicRange + 200;
} else {
_subsonicRange = _subsonicRange + 200 * 1.0936133;
};
_subsonicRange = Round(_subsonicRange);
};
_solutionInput set [13, _subsonicRange];
private _result2 = _solutionInput call FUNC(calculate_solution);
_subsonicDrop = Round((_result2 select 0) * 100) / 100;
GVAR(truingDropRangeData) set [1, _subsonicRange];
GVAR(truingDropDropData) set [2, _subsonicDrop];
GVAR(truingDropReferenceDropData) set [1, _subsonicDrop];
} else {
if (_transonicDrop != GVAR(truingDropDropData) select 1 || _subsonicDrop != GVAR(truingDropDropData) select 2) then {
GVAR(truingDropDropData) set [1, _transonicDrop];
GVAR(truingDropDropData) set [2, _subsonicDrop];
if (GVAR(truingDropMode) == 0) then {
call FUNC(true_muzzle_velocity);
} else {
call FUNC(true_c1_ballistic_coefficient);
};
};
};
call FUNC(update_truing_drop_data);

View File

@ -26,6 +26,12 @@ if (_restoreMemory) then {
};
GVAR(currentGun) = _gunID;
[false, false] call FUNC(recalculate_muzzle_velocity);
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
false call FUNC(restore_truing_drop);
[false, false] call FUNC(recalculate_c1_ballistic_coefficient);
};
if (_updateDisplay) then {
lbSetCurSel [6000, GVAR(currentGun)];
};
@ -37,6 +43,8 @@ GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10;
if (_updateDisplay) then {
[] call FUNC(update_gun);
[] call FUNC(update_gun_ammo_data);
[] call FUNC(update_muzzle_velocity_data);
[] call FUNC(update_c1_ballistic_coefficient_data);
};
GVAR(elevationOutput) set [GVAR(currentTarget), 0];
@ -45,6 +53,9 @@ GVAR(windage2Output) set [GVAR(currentTarget), 0];
GVAR(leadOutput) set [GVAR(currentTarget), 0];
GVAR(tofOutput) set [GVAR(currentTarget), 0];
GVAR(velocityOutput) set [GVAR(currentTarget), 0];
GVAR(verticalCoriolisOutput) set [GVAR(currentTarget), 0];
GVAR(horizontalCoriolisOutput) set [GVAR(currentTarget), 0];
GVAR(spinDriftOutput) set [GVAR(currentTarget), 0];
if (_updateDisplay) then {
[] call FUNC(calculate_target_solution);

View File

@ -17,9 +17,8 @@
private _target = 0 max _this min 3;
call FUNC(parse_input);
[] call FUNC(parse_input);
GVAR(currentTarget) = _target;
call FUNC(update_target_selection);
[] call FUNC(calculate_target_solution);
call FUNC(calculate_target_solution);

View File

@ -0,0 +1,21 @@
/*
* Author: Ruthberg
* Clears the c1 ballistic coefficient data fields
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_clear_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
// Distances
{ctrlSetText [_x, "0"]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
// Ballistic Coefficients
{ctrlSetText [_x, "0"]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];

View File

@ -0,0 +1,21 @@
/*
* Author: Ruthberg
* Clears the muzzle velocity data fields
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_clear_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
// Temperatures
{ctrlSetText [_x, "0"]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
// Muzzle velocities
{ctrlSetText [_x, "0"]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];

View File

@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_temperature", nil];
profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
profileNamespace setVariable ["ACE_ATragMX_showCoriolis", nil];
profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
profileNamespace setVariable ["ACE_ATragMX_latitude", nil];
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil];

View File

@ -30,8 +30,10 @@ GVAR(showMainPage) call FUNC(show_main_page);
GVAR(showAddNewGun) call FUNC(show_add_new_gun);
GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data);
GVAR(showC1BallisticCoefficientData) call FUNC(show_c1_ballistic_coefficient_data);
GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data);
GVAR(showGunList) call FUNC(show_gun_list);
GVAR(showMuzzleVelocityData) call FUNC(show_muzzle_velocity_data);
GVAR(showRangeCard) call FUNC(show_range_card);
if (GVAR(showRangeCard)) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
@ -43,6 +45,7 @@ GVAR(showTargetData) call FUNC(show_target_data);
GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
GVAR(showTruingDrop) call FUNC(show_truing_drop);
[GVAR(currentGun), false, true] call FUNC(change_gun);
@ -50,6 +53,13 @@ GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
lbAdd [6000, _x select 0];
} forEach GVAR(gunList);
ctrlShow [3001, false];
ctrlShow [3002, false];
{
(__dsp displayCtrl _x) ctrlEnable false;
} forEach [18006, 18007, 18008];
GVAR(active) = true;
GVAR(DialogPFH) = [{

View File

@ -15,10 +15,10 @@
*/
#include "script_component.hpp"
[] call FUNC(parse_input);
GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits));
GVAR(workingMemory) set [6, GVAR(currentScopeUnit)];
true call FUNC(show_main_page);
[] call FUNC(update_scope_unit);
[] call FUNC(update_result);

View File

@ -28,4 +28,4 @@ GVAR(gunList) = GVAR(gunList) - [0];
lbDelete [6000, _index];
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
call FUNC(store_gun_list);

View File

@ -0,0 +1,30 @@
/*
* Author: Ruthberg
* Evalutes input from the option menu
*
* Arguments:
* option menu id <number>
*
* Return Value:
* Nothing
*
* Example:
* 1 call ace_atragmx_fnc_evaluate_option_menu_input
*
* Public: No
*/
#include "script_component.hpp"
params ["_optionID"];
switch (_optionID) do {
case 0: {}; // Accuracy 1st
case 1: { 0 call FUNC(toggle_muzzle_velocity_data); }; // MuzVel Table
case 2: { 0 call FUNC(toggle_c1_ballistic_coefficient_data); }; // Bal Coef Table
case 3: { 0 call FUNC(toggle_target_speed_assist); }; // Target Speed Est
case 4: { 0 call FUNC(toggle_target_range_assist); }; // Target Range Est
case 5: { 0 call FUNC(toggle_truing_drop); }; // Truing Drop
case 6: { 0 call FUNC(toggle_coriolis); }; // Show Coriolis
case 7: { 0 call FUNC(toggle_solution_setup); }; // Set Clicks
case 8: {}; // Gun Note
};

View File

@ -65,18 +65,33 @@ GVAR(targetSpeedDirection) = [1, 1, 1, 1];
GVAR(targetRange) = [0, 0, 0, 0];
GVAR(showWind2) = false;
GVAR(showCoriolis) = false;
GVAR(elevationOutput) = [0, 0, 0, 0];
GVAR(windage1Output) = [0, 0, 0, 0];
GVAR(windage2Output) = [0, 0, 0, 0];
GVAR(leadOutput) = [0, 0, 0, 0];
GVAR(tofOutput) = [0, 0, 0, 0];
GVAR(velocityOutput) = [0, 0, 0, 0];
GVAR(verticalCoriolisOutput) = [0, 0, 0, 0];
GVAR(horizontalCoriolisOutput) = [0, 0, 0, 0];
GVAR(spinDriftOutput) = [0, 0, 0, 0];
GVAR(truingDropMode) = 0;
GVAR(truingDropRangeData) = [0, 0];
GVAR(truingDropDropData) = [0, 0, 0];
GVAR(truingDropReferenceDropData) = [0, 0, 0];
GVAR(truingDropC1) = 0;
GVAR(truingDropMuzzleVelocity) = 0;
GVAR(targetSolutionInput) = nil;
GVAR(showMainPage) = true;
GVAR(showAddNewGun) = false;
GVAR(showAtmoEnvData) = false;
GVAR(showC1BallisticCoefficientData) = false;
GVAR(showGunAmmoData) = false;
GVAR(showGunList) = false;
GVAR(showMuzzleVelocityData) = false;
GVAR(showRangeCard) = false;
GVAR(showRangeCardSetup) = false;
GVAR(showSolutionSetup) = false;
@ -84,3 +99,4 @@ GVAR(showTargetData) = false;
GVAR(showTargetRangeAssist) = false;
GVAR(showTargetSpeedAssist) = false;
GVAR(showTargetSpeedAssistTimer) = false;
GVAR(showTruingDrop) = false;

View File

@ -0,0 +1,55 @@
/*
* Author: Ruthberg
* Inserts entry in the c1 ballistic coefficient vs. distance interpolation table
*
* Arguments:
* transonic range - <NUMBER>
* subsonic range - <NUMBER>
* c1 ballistic coefficient - <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* [800, 0.485] call ace_atragmx_fnc_insert_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
params ["_transonicRange", "_subsonicRange", "_c1"];
private _entries = {(_x select 1) > 0} count (GVAR(workingMemory) select 19);
if (_entries > 0) then {
// Insert
private _insertIndex = 0;
private _minDiff = 10000;
{
if (_minDiff > 0 && {(((GVAR(workingMemory) select 19) select _forEachIndex) select 1) == 0}) then {
_insertIndex = _forEachIndex;
_minDiff = 0;
};
private _tr = ((GVAR(workingMemory) select 19) select _forEachIndex) select 0;
private _diff = abs(_subsonicRange - _tr);
if (_diff == 0) exitWith {
_insertIndex = _forEachIndex;
};
if (_diff < _minDiff) then {
_insertIndex = _forEachIndex;
_minDiff = _diff;
};
} forEach (GVAR(workingMemory) select 19);
(GVAR(workingMemory) select 19) set [_insertIndex, [_subsonicRange, 0.1 max _c1 min 2.0]];
} else {
// Reset
private _zeroRange = GVAR(workingMemory) select 2;
private _bc = GVAR(workingMemory) select 15;
GVAR(workingMemory) set [19, [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]]];
(GVAR(workingMemory) select 19) set [0, [_zeroRange, _bc]];
(GVAR(workingMemory) select 19) set [1, [_transonicRange + (_subsonicRange - _transonicRange) * 0.75, _bc]];
(GVAR(workingMemory) select 19) set [2, [_subsonicRange, 0.1 max _c1 min 2.0]];
};
call FUNC(update_c1_ballistic_coefficient_data);

View File

@ -0,0 +1,41 @@
/*
* Author: Ruthberg
* Inserts entry in the muzzle velocity vs. temperature interpolation table
*
* Arguments:
* temperature - <NUMBER>
* muzzle velocity - <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* [10, 800] call ace_atragmx_fnc_insert_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
params ["_temperature", "_muzzleVelocity"];
private _insertIndex = 0;
private _minDiff = 1000;
{
if (_minDiff > 0 && {(((GVAR(workingMemory) select 18) select _forEachIndex) select 1) == 0}) then {
_insertIndex = _forEachIndex;
_minDiff = 0;
};
private _t = ((GVAR(workingMemory) select 18) select _forEachIndex) select 0;
private _diff = abs(_temperature - _t);
if (_diff == 0) exitWith {
_insertIndex = _forEachIndex;
};
if (_diff < _minDiff) then {
_insertIndex = _forEachIndex;
_minDiff = _diff;
};
} forEach (GVAR(workingMemory) select 18);
(GVAR(workingMemory) select 18) set [_insertIndex, [_temperature, 0 max _muzzleVelocity min 1400]];
call FUNC(update_muzzle_velocity_data);

View File

@ -1,6 +1,6 @@
/*
* Author: Ruthberg
* Parses all input fields in the gun, atmosphere and target column and the result input fields
* Parses all input fields in the gun-, atmosphere- and target column, the result input fields and the muzzle velocity data input fields
*
* Arguments:
* Nothing
@ -15,6 +15,35 @@
*/
#include "script_component.hpp"
// Muzzle velocity vs. temperature interpolation data
{
private _temperature = -50 max parseNumber(ctrlText _x) min 160;
if (GVAR(currentUnit) == 1) then {
_temperature = (_temperature - 32) / 1.8;
};
((GVAR(workingMemory) select 18) select _forEachIndex) set [0, _temperature];
} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
{
private _muzzleVelocity = parseNumber(ctrlText _x);
if (GVAR(currentUnit) == 1) then {
_muzzleVelocity = _muzzleVelocity / 3.2808399;
};
((GVAR(workingMemory) select 18) select _forEachIndex) set [1, 0 max _muzzleVelocity min 1400];
} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
// C1 coefficient vs. distance interpolation data
{
private _distance = 0 max parseNumber(ctrlText _x) min 4000;
if (GVAR(currentUnit) != 2) then {
_distance = _distance * 0.9144;
};
((GVAR(workingMemory) select 19) select _forEachIndex) set [0, _distance];
} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
{
private _c1 = 0 max parseNumber(ctrlText _x) min 2.0;
((GVAR(workingMemory) select 19) select _forEachIndex) set [1, _c1];
} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];
GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
GVAR(barometricPressure) = 10 max parseNumber(ctrlText 130050) min 1350;
@ -49,11 +78,11 @@ if ((ctrlText 140051) == ">") then {
GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
if (GVAR(currentUnit) != 2) then {
GVAR(windSpeed1) set [GVAR(currentTarget), (GVAR(windSpeed1) select GVAR(currentTarget)) * 0.44704];
GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget)) * 0.44704];
GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget)) * 0.44704];
GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget)) * 0.44704];
GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget)) * 0.44704];
};
if (GVAR(currentUnit) == 1) then {
GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144];
GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget)) * 0.9144];
};
private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
@ -67,7 +96,7 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
};
_rifleTwist = parseNumber(ctrlText 120040);
_muzzleVelocity = parseNumber(ctrlText 120050);
_zeroRange = parseNumber (ctrlText 120060);
_zeroRange = parseNumber(ctrlText 120060);
if (GVAR(currentUnit) != 2) then {
_boreHeight = _boreHeight * 2.54;
_bulletMass = _bulletMass * 0.06479891;
@ -88,10 +117,16 @@ GVAR(workingMemory) set [12, _bulletMass];
GVAR(workingMemory) set [13, _bulletDiameter];
GVAR(workingMemory) set [14, _rifleTwist];
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
if (_airFriction != GVAR(workingMemory) select 15) then {
(_airFriction - (GVAR(workingMemory) select 15)) call FUNC(shift_c1_ballistic_coefficient_data);
};
GVAR(workingMemory) set [15, _airFriction];
} else {
GVAR(workingMemory) set [4, _airFriction];
};
if (_muzzleVelocity != GVAR(workingMemory) select 1) then {
(_muzzleVelocity - (GVAR(workingMemory) select 1)) call FUNC(shift_muzzle_velocity_data);
};
GVAR(workingMemory) set [1, _muzzleVelocity];
GVAR(workingMemory) set [2, _zeroRange];
@ -101,5 +136,7 @@ GVAR(workingMemory) set [2, _zeroRange];
[] call FUNC(update_atmo_env_data);
[] call FUNC(update_target);
[] call FUNC(update_target_data);
[] call FUNC(update_muzzle_velocity_data);
[] call FUNC(update_c1_ballistic_coefficient_data);
[] call FUNC(store_user_data);

View File

@ -0,0 +1,120 @@
/*
* Author: Ruthberg
* Reads gun list entries from the config and appends them to the gun list
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_read_gun_list_entries_from_config
*
* Public: No
*/
#include "script_component.hpp"
private _validate_preset = {
private _valid = true;
if (count _this != 20) then {
private _errorMsg = format ["Invalid preset array size: %1", count _this];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 0 == "") then {
ERROR("Invalid gun profile name");
_valid = false;
};
if (_this select 1 < 0 || _this select 1 > 1400) then {
private _errorMsg = format ["Invalid muzzle velocity: %1", _this select 1];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 2 < 25 || _this select 2 > 1000) then {
private _errorMsg = format ["Invalid zero range: %1", _this select 2];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 4 > 0) then {
private _errorMsg = format ["Invalid airFriction value: %1", _this select 4];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 5 < 0.1 || _this select 5 > 10) then {
private _errorMsg = format ["Invalid bore height value: %1", _this select 4];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 12 < 1 || _this select 12 > 100) then {
private _errorMsg = format ["Invalid bullet weight: %1", _this select 12];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 13 < 1 || _this select 13 > 25) then {
private _errorMsg = format ["Invalid bullet diameter: %1", _this select 13];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 14 < 1 || _this select 14 > 75) then {
private _errorMsg = format ["Invalid rifle twist: %1", _this select 14];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 15 < 0.1 || _this select 15 > 2.0) then {
private _errorMsg = format ["Invalid ballistic coefficient: %1", _this select 15];
ERROR(_errorMsg);
_valid = false;
};
if (_this select 16 != 1) then {
private _errorMsg = format ["Invalid drag model: %1", _this select 16];
ERROR(_errorMsg);
_valid = false;
};
if (!((_this select 17) in ["ASM", "ICAO"])) then {
private _errorMsg = format ["Invalid atmosphere model: %1", _this select 17];
ERROR(_errorMsg);
_valid = false;
};
if (count (_this select 18) != 7) then {
private _errorMsg = format ["Invalid muzzle velocity table array size: %1", count (_this select 18)];
ERROR(_errorMsg);
_valid = false;
} else {
{
if (count _x != 2) exitWith {
private _errorMsg = format ["Invalid muzzle velocity table subarray size: %1", count _x];
ERROR(_errorMsg);
_valid = false;
};
} forEach (_this select 18);
};
if (count (_this select 19) != 7) then {
private _errorMsg = format ["Invalid drag coefficient table array size: %1", count (_this select 19)];
ERROR(_errorMsg);
_valid = false;
} else {
{
if (count _x != 2) exitWith {
private _errorMsg = format ["Invalid drag coefficient table subarray size: %1", count _x];
ERROR(_errorMsg);
_valid = false;
};
} forEach (_this select 19);
};
_valid
};
{
private _preset = _x >> "preset";
if (isArray(_preset)) then {
private _gun = getArray _preset;
if (_gun call _validate_preset) then {
_gun set [20, false];
GVAR(gunList) = GVAR(gunList) + [_gun];
lbAdd [6000, _gunProfileEntry select 0];
};
};
} forEach ("true" configClasses (configFile >> "ACE_ATragMX_Presets"));

View File

@ -0,0 +1,57 @@
/*
* Author: Ruthberg
* Recalculates the c1 ballistic coefficient based on the c1 ballistic coefficient vs. distance interpolation input
*
* Arguments:
* parse input <BOOL>
* update display <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_recalculate_c1_ballistic_coefficient
*
* Public: No
*/
#include "script_component.hpp"
params ["_parseInput", "_updateDisplay"];
if (_parseInput) then {
[] call FUNC(parse_input);
};
private _lookupTable = [];
{
if ((_x select 1) > 0) then {
_lookupTable pushBack _x;
};
} forEach (GVAR(workingMemory) select 19);
private _lookupTableSize = count _lookupTable;
if (_lookupTableSize < 2) exitWith {};
_lookupTable sort true;
private ["_lowerIndex", "_upperIndex"];
for "_index" from 1 to (_lookupTableSize - 1) do {
_upperIndex = _index;
_lowerIndex = _upperIndex - 1;
if (((_lookupTable select _index) select 0) >= (GVAR(targetRange) select GVAR(currentTarget))) exitWith {}
};
private ["_lowerDistance", "_upperDistance", "_lowerC1", "_upperC1", "_slope", "_c1"];
_lowerDistance = (_lookupTable select _lowerIndex) select 0;
_upperDistance = (_lookupTable select _upperIndex) select 0;
_lowerC1 = (_lookupTable select _lowerIndex) select 1;
_upperC1 = (_lookupTable select _upperIndex) select 1;
_slope = (_upperC1 - _lowerC1) / (_upperDistance - _lowerDistance);
_c1 = 0.1 max (_lowerC1 + ((GVAR(targetRange) select GVAR(currentTarget)) - _lowerDistance) * _slope) min 2.0;
if (_c1 != GVAR(workingMemory) select 15) then {
GVAR(workingMemory) set [15, _c1];
if (_updateDisplay) then {
call FUNC(update_gun);
call FUNC(update_gun_ammo_data);
};
};

View File

@ -0,0 +1,57 @@
/*
* Author: Ruthberg
* Recalculates the muzzle velocity based on the muzzle velocity vs. temperature interpolation input
*
* Arguments:
* parse input <BOOL>
* update display <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_recalculate_muzzle_velocity
*
* Public: No
*/
#include "script_component.hpp"
params ["_parseInput", "_updateDisplay"];
if (_parseInput) then {
[] call FUNC(parse_input);
};
private _lookupTable = [];
{
if ((_x select 1) > 0) then {
_lookupTable pushBack _x;
};
} forEach (GVAR(workingMemory) select 18);
private _lookupTableSize = count _lookupTable;
if (_lookupTableSize < 2) exitWith {};
_lookupTable sort true;
private ["_lowerIndex", "_upperIndex"];
for "_index" from 1 to (_lookupTableSize - 1) do {
_upperIndex = _index;
_lowerIndex = _upperIndex - 1;
if (((_lookupTable select _index) select 0) >= GVAR(temperature)) exitWith {}
};
private ["_lowerTemperature", "_upperTemperature", "_lowerMuzzleVelocity", "_upperMuzzleVelocity", "_slope", "_muzzleVelocity"];
_lowerTemperature = (_lookupTable select _lowerIndex) select 0;
_upperTemperature = (_lookupTable select _upperIndex) select 0;
_lowerMuzzleVelocity = (_lookupTable select _lowerIndex) select 1;
_upperMuzzleVelocity = (_lookupTable select _upperIndex) select 1;
_slope = (_upperMuzzleVelocity - _lowerMuzzleVelocity) / (_upperTemperature - _lowerTemperature);
_muzzleVelocity = _lowerMuzzleVelocity + (GVAR(temperature) - _lowerTemperature) * _slope;
if (_muzzleVelocity != GVAR(workingMemory) select 1) then {
GVAR(workingMemory) set [1, _muzzleVelocity];
if (_updateDisplay) then {
call FUNC(update_gun);
call FUNC(update_gun_ammo_data);
};
};

View File

@ -0,0 +1,33 @@
/*
* Author: Ruthberg
* Restores the truing drop defaults
*
* Arguments:
* update display <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_restore_truing_drop
*
* Public: No
*/
#include "script_component.hpp"
private _updateDisplay = _this;
GVAR(truingDropMode) = 0;
GVAR(truingDropRangeData) = [0, 0];
GVAR(truingDropDropData) = [0, 0, 0];
GVAR(truingDropReferenceDropData) = [0, 0, 0];
GVAR(truingDropC1) = 0;
GVAR(truingDropMuzzleVelocity) = 0;
// Resets input fields
call FUNC(update_truing_drop_selection);
if (_updateDisplay) then {
// Repopulates input fields
false call FUNC(calculate_truing_drop);
};

View File

@ -26,6 +26,7 @@ GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_b
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true];
GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];

View File

@ -25,4 +25,4 @@ lbClear 6000;
lbAdd [6000, _x select 0];
} forEach GVAR(gunList);
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
call FUNC(store_gun_list);

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Shifts all c1 ballistic coefficient entries in the c1 ballistic coefficient vs. distance interpolation table
*
* Arguments:
* ballistic coefficient - <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* 10 call ace_atragmx_fnc_shift_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
if (_this == 0) exitWith {};
{
private _c1 = _x select 1;
if (_c1 > 0) then {
((GVAR(workingMemory) select 19) select _forEachIndex) set [1, 0.1 max (_c1 + _this) min 2];
}
} forEach (GVAR(workingMemory) select 19);

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Shifts all muzzle velocity entries in the muzzle velocity vs. temperature interpolation table
*
* Arguments:
* velocity - <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* 10 call ace_atragmx_fnc_shift_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
if (_this == 0) exitWith {};
{
private _velocity = _x select 1;
if (_velocity > 0) then {
((GVAR(workingMemory) select 18) select _forEachIndex) set [1, 0 max (_velocity + _this) min 1400];
}
} forEach (GVAR(workingMemory) select 18);

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Shows/Hides the c1 ballistic coefficient data controls
*
* Arguments:
* visible - <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* false call ace_atragmx_fnc_show_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
GVAR(showC1BallisticCoefficientData) = _this;
{ctrlShow [_x, _this]} forEach [17000, 17001, 170021, 170022, 170023, 170024, 170025, 170026, 170027, 170031, 170032, 170033, 170034, 170035, 170036, 170037, 17004, 17005, 17006, 17007, 17008, 17009];
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 170031);
[] call FUNC(update_c1_ballistic_coefficient_data);
};

View File

@ -21,6 +21,18 @@ GVAR(showMainPage) = _this;
500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 2001, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
if (_this) then {
if (GVAR(showCoriolis)) then {
ctrlSetText [4003, "Hold"];
ctrlSetText [4004, "Cor"];
ctrlSetText [4005, "Spin"];
{ctrlShow [_x, false]} forEach [402, 4006, 4007];
} else {
ctrlSetText [4003, "Abs"];
ctrlSetText [4004, "Rel"];
ctrlSetText [4005, "Cur"];
private _visible = (GVAR(currentScopeUnit) == 3);
{ctrlShow [_x, _visible]} forEach [401, 402, 411, 412, 4004, 4005, 4006, 4007];
};
if (GVAR(atmosphereModeTBH)) then {
{ctrlShow [_x, false]} forEach [23, 230];
} else {

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Shows/Hides the muzzle velocity data controls
*
* Arguments:
* visible - <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* false call ace_atragmx_fnc_show_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
GVAR(showMuzzleVelocityData) = _this;
{ctrlShow [_x, _this]} forEach [16000, 16001, 160021, 160022, 160023, 160024, 160025, 160026, 160027, 160031, 160032, 160033, 160034, 160035, 160036, 160037, 16004, 16005, 16006, 16007, 16008, 16009];
if (_this) then {
ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 160031);
[] call FUNC(update_muzzle_velocity_data);
};

View File

@ -0,0 +1,43 @@
/*
* Author: Ruthberg
* Shows/Hides the truing drop controls
*
* Arguments:
* visible - <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_show_truing_drop
*
* Public: No
*/
#include "script_component.hpp"
GVAR(showTruingDrop) = _this;
{ctrlShow [_x, _this]} forEach [18000, 18001, 18002, 18003, 18004, 18005, 18006, 18007, 18008, 18009, 18010, 18011, 18012, 18013, 18014, 18015, 18016, 18017, 18018, 18019, 18020];
if (_this) then {
if (GVAR(currentUnit) == 2) then {
ctrlSetText [18000, format["ZR=%1meters", Round(GVAR(workingMemory) select 2)]];
} else {
ctrlSetText [18000, format["ZR=%1yards", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
};
private _dropUnit = GVAR(currentScopeUnit);
if (_dropUnit == 3) then {
switch (GVAR(currentScopeClickUnit)) do {
case 0: { _dropUnit = 1; };
case 1: { _dropUnit = 2; };
case 2: { _dropUnit = 0; };
};
};
switch (_dropUnit) do {
case 0: { ctrlSetText [18001, "Drop=mils"]; };
case 1: { ctrlSetText [18001, "Drop=tmoa"]; };
case 2: { ctrlSetText [18001, "Drop=smoa"]; };
};
false call FUNC(calculate_truing_drop);
call FUNC(update_truing_drop_selection);
};

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Saves the persistent gun list entries into profileNamespace
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_store_user_data
*
* Public: No
*/
#include "script_component.hpp"
private _gunList = [];
{
if (_x select 20) then {
_gunList pushBack _x;
};
} forEach GVAR(gunList);
profileNamespace setVariable ["ACE_ATragMX_gunList", _gunList];

View File

@ -28,6 +28,7 @@ profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricP
profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
profileNamespace setVariable ["ACE_ATragMX_showCoriolis", GVAR(showCoriolis)];
profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)];
profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)];
profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];

View File

@ -20,7 +20,11 @@ if (ctrlVisible 13000) then {
true call FUNC(show_main_page);
if (_this == 1) then {
GVAR(truingDropDropData) set [0, 0];
[true, true] call FUNC(recalculate_muzzle_velocity);
call FUNC(calculate_target_solution);
} else {
call FUNC(update_atmo_env_data);
};
} else {
true call FUNC(show_atmo_env_data);

View File

@ -0,0 +1,33 @@
/*
* Author: Ruthberg
* Toggles the c1 ballistic coefficient data screen on/off
*
* Arguments:
* Apply new data? <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* 1 call ace_atragmx_fnc_toggle_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
if (ctrlVisible 17000) then {
false call FUNC(show_c1_ballistic_coefficient_data);
true call FUNC(show_main_page);
if (_this == 1) then {
[true, true] call FUNC(recalculate_c1_ballistic_coefficient);
call FUNC(calculate_target_solution);
} else {
call FUNC(update_c1_ballistic_coefficient_data);
};
} else {
true call FUNC(show_c1_ballistic_coefficient_data);
false call FUNC(show_main_page);
};

View File

@ -0,0 +1,19 @@
/*
* Author: Ruthberg
* Toggles the coriolis and spin drift output on/off
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_toggle_coriolis
*
* Public: No
*/
#include "script_component.hpp"
GVAR(showCoriolis) = !GVAR(showCoriolis);
true call FUNC(show_main_page);

View File

@ -20,8 +20,11 @@ if (ctrlVisible 12000) then {
true call FUNC(show_main_page);
if (_this == 1) then {
GVAR(truingDropDropData) set [0, 0];
call FUNC(update_zero_range);
call FUNC(calculate_target_solution);
} else {
call FUNC(update_gun_ammo_data);
};
} else {
true call FUNC(show_gun_ammo_data);

View File

@ -0,0 +1,33 @@
/*
* Author: Ruthberg
* Toggles the muzzle velocity data screen on/off
*
* Arguments:
* Apply new data? <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* 1 call ace_atragmx_fnc_toggle_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
if (ctrlVisible 16000) then {
false call FUNC(show_muzzle_velocity_data);
true call FUNC(show_main_page);
if (_this == 1) then {
[true, true] call FUNC(recalculate_muzzle_velocity);
call FUNC(calculate_target_solution);
} else {
call FUNC(update_muzzle_velocity_data);
};
} else {
true call FUNC(show_muzzle_velocity_data);
false call FUNC(show_main_page);
};

View File

@ -0,0 +1,51 @@
/*
* Author: Ruthberg
* Toggles the option menu on/off
*
* Arguments:
* open menu item <BOOL>
*
* Return Value:
* Nothing
*
* Example:
* 1 call ace_atragmx_fnc_toggle_option_menu
*
* Public: No
*/
#include "script_component.hpp"
if (ctrlVisible 3001) then {
if (_this) then {
private _optionID = lbCurSel 3002;
if (_optionID > 0) then {
ctrlShow [3001, false];
ctrlShow [3002, false];
[_optionID] call FUNC(evaluate_option_menu_input);
};
} else {
ctrlShow [3001, false];
ctrlShow [3002, false];
};
} else {
lbClear 3002;
lbAdd [3002, "Accuracy 1st"];
lbAdd [3002, "Muz Vel Table"];
lbAdd [3002, "Drag Coef Table"];
lbAdd [3002, "Target Speed Est"];
lbAdd [3002, "Target Range Est"];
lbAdd [3002, "Truing Drop"];
if (GVAR(showCoriolis)) then {
lbAdd [3002, "Show Coriolis *"];
} else {
lbAdd [3002, "Show Coriolis"];
};
lbAdd [3002, "Set Clicks"];
lbAdd [3002, "Gun Note"];
lbSetCurSel [3002, 0];
ctrlShow [3001, true];
ctrlShow [3002, true];
};

View File

@ -21,6 +21,8 @@ if (ctrlVisible 14000) then {
if (_this == 1) then {
call FUNC(calculate_target_solution);
} else {
call FUNC(update_target_data);
};
} else {
true call FUNC(show_target_data);

View File

@ -0,0 +1,39 @@
/*
* Author: Ruthberg
* Toggles the truing drop screen on/off
*
* Arguments:
* Apply new data? <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* 1 call ace_atragmx_fnc_toggle_truing_drop
*
* Public: No
*/
#include "script_component.hpp"
if (!(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) exitWith {};
if (ctrlVisible 18000) then {
false call FUNC(show_truing_drop);
true call FUNC(show_main_page);
if (_this == 1) then {
if (GVAR(truingDropMode) == 0) then {
[GVAR(temperature), GVAR(truingDropMuzzleVelocity)] call FUNC(insert_muzzle_velocity_data);
[false, true] call FUNC(recalculate_muzzle_velocity);
} else {
[GVAR(truingDropRangeData) select 0, GVAR(truingDropRangeData) select 1, GVAR(truingDropC1)] call FUNC(insert_c1_ballistic_coefficient_data);
[false, true] call FUNC(recalculate_c1_ballistic_coefficient);
};
call FUNC(calculate_target_solution);
} else {
call FUNC(update_truing_drop_data);
};
} else {
false call FUNC(show_main_page);
true call FUNC(show_truing_drop);
};

View File

@ -0,0 +1,42 @@
/*
* Author: Ruthberg
* Trues the c1 ballistic coefficient
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_true_c1_ballistic_coefficient
*
* Public: No
*/
#include "script_component.hpp"
private _referenceDrop = GVAR(truingDropDropData) select 0;
private _actualDrop = GVAR(truingDropDropData) select 2;
if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {};
private _step = 0.01;
if (_actualDrop > _referenceDrop) then {
_step = -0.01;
};
private _solutionInput = +GVAR(targetSolutionInput);
_solutionInput set [13, GVAR(truingDropRangeData) select 1];
private _c1 = _solutionInput select 14;
{
_step = _step * _x;
while { _actualDrop * _step < _referenceDrop * _step } do {
_c1 = _c1 + _step;
_solutionInput set [14, _c1];
private _result = _solutionInput call FUNC(calculate_solution);
_referenceDrop = (_result select 0);
};
} forEach [1, -0.1];
GVAR(truingDropC1) = _c1;

View File

@ -0,0 +1,42 @@
/*
* Author: Ruthberg
* Trues the muzzle velocity
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_true_muzzle_velocity
*
* Public: No
*/
#include "script_component.hpp"
private _referenceDrop = GVAR(truingDropDropData) select 0;
private _actualDrop = GVAR(truingDropDropData) select 1;
if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {};
private _step = 10;
if (_actualDrop > _referenceDrop) then {
_step = -10;
};
private _solutionInput = +GVAR(targetSolutionInput);
_solutionInput set [13, GVAR(truingDropRangeData) select 0];
private _muzzleVelocity = _solutionInput select 4;
{
_step = _step * _x;
while { _actualDrop * _step < _referenceDrop * _step } do {
_muzzleVelocity = _muzzleVelocity + _step;
_solutionInput set [4, _muzzleVelocity];
private _result = _solutionInput call FUNC(calculate_solution);
_referenceDrop = (_result select 0);
};
} forEach [1, -0.1];
GVAR(truingDropMuzzleVelocity) = _muzzleVelocity;

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
* Updates the c1 ballistic coefficient data fields
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_update_c1_ballistic_coefficient_data
*
* Public: No
*/
#include "script_component.hpp"
// Distances
if (GVAR(currentUnit) == 2) then {
{ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 19) select _forEachIndex) select 0))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
} else {
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 0) * 1.0936133))]} forEach [170021, 170022, 170023, 170024, 170025, 170026, 170027];
};
// Ballistic coefficients
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 19) select _forEachIndex) select 1) * 1000) / 1000)]} forEach [170031, 170032, 170033, 170034, 170035, 170036, 170037];

View File

@ -0,0 +1,28 @@
/*
* Author: Ruthberg
* Updates the muzzle velocity data fields
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_update_muzzle_velocity_data
*
* Public: No
*/
#include "script_component.hpp"
if (GVAR(currentUnit) == 2) then {
// Temperatures
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
// Muzzle velocities
{ctrlSetText [_x, Str(Round(((GVAR(workingMemory) select 18) select _forEachIndex) select 1))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
} else {
// Temperatures
{ctrlSetText [_x, Str(Round(((((GVAR(workingMemory) select 18) select _forEachIndex) select 0) * 1.8 + 32) * 10) / 10)]} forEach [160021, 160022, 160023, 160024, 160025, 160026, 160027];
// Muzzle velocities
{ctrlSetText [_x, Str(Round((((GVAR(workingMemory) select 18) select _forEachIndex) select 1) * 3.2808399))]} forEach [160031, 160032, 160033, 160034, 160035, 160036, 160037];
};

View File

@ -15,17 +15,28 @@
*/
#include "script_component.hpp"
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_clickSize", "_clickNumber", "_clickInterval"];
private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_wind2", "_lead", "_clickSize", "_clickNumber", "_clickInterval"];
_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
_elevationRel = 0;
_elevationCur = 0;
_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
_windageRel = 0;
_windageCur = 0;
_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
_elevationCur = GVAR(workingMemory) select 10;
_windageCur = GVAR(workingMemory) select 11;
if (GVAR(showCoriolis)) then {
_elevationRel = GVAR(verticalCoriolisOutput) select GVAR(currentTarget);
_windageRel = GVAR(horizontalCoriolisOutput) select GVAR(currentTarget);
_windageCur = GVAR(spinDriftOutput) select GVAR(currentTarget);
} else {
_elevationCur = GVAR(workingMemory) select 10;
_windageCur = GVAR(workingMemory) select 11;
_elevationRel = _elevationAbs - _elevationCur;
_windageRel = _windageAbs - _windageCur;
_elevationRel = _elevationAbs - _elevationCur;
_windageRel = _windageAbs - _windageCur;
};
_lead = GVAR(leadOutput) select GVAR(currentTarget);

View File

@ -0,0 +1,77 @@
/*
* Author: Ruthberg
* Updates the truing drop data fields
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_update_truing_drop_data
*
* Public: No
*/
#include "script_component.hpp"
if (GVAR(currentUnit) == 2) then {
ctrlSetText [18011, Str(Round(GVAR(truingDropRangeData) select 0))];
ctrlSetText [18012, Str(Round(GVAR(truingDropRangeData) select 1))];
} else {
ctrlSetText [18011, Str(Round((GVAR(truingDropRangeData) select 0) * 1.0936133))];
ctrlSetText [18012, Str(Round((GVAR(truingDropRangeData) select 1) * 1.0936133))];
};
if (GVAR(truingDropMode) == 0) then {
GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 0];
} else {
GVAR(truingDropDropData) set [0, GVAR(truingDropReferenceDropData) select 1];
};
private _dropUnit = GVAR(currentScopeUnit);
if (_dropUnit == 3) then {
switch (GVAR(currentScopeClickUnit)) do {
case 0: { _dropUnit = 1; };
case 1: { _dropUnit = 2; };
case 2: { _dropUnit = 0; };
};
};
private _dropData = +GVAR(truingDropDropData);
switch (_dropUnit) do {
case 0: {
_dropData set [0, (_dropData select 0) / 3.38];
_dropData set [1, (_dropData select 1) / 3.38];
_dropData set [2, (_dropData select 2) / 3.38];
};
case 2: {
_dropData set [0, (_dropData select 0) * 1.047];
_dropData set [1, (_dropData select 1) * 1.047];
_dropData set [2, (_dropData select 2) * 1.047];
};
};
ctrlSetText [18006, Str(Round((_dropData select 0) * 100) / 100)];
ctrlSetText [18013, Str(Round((_dropData select 1) * 100) / 100)];
ctrlSetText [18014, Str(Round((_dropData select 2) * 100) / 100)];
if (GVAR(currentUnit) != 2) then {
ctrlSetText [18007, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
ctrlSetText [18016, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
if (GVAR(truingDropMuzzleVelocity) > 0) then {
ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity) * 3.2808399))];
};
} else {
ctrlSetText [18007, Str(Round(GVAR(workingMemory) select 1))];
ctrlSetText [18016, Str(Round(GVAR(workingMemory) select 1))];
if (GVAR(truingDropMuzzleVelocity) > 0) then {
ctrlSetText [18016, Str(Round(GVAR(truingDropMuzzleVelocity)))];
};
};
ctrlSetText [18008, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
ctrlSetText [18017, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
if (GVAR(truingDropC1) > 0) then {
ctrlSetText [18017, Str(Round(GVAR(truingDropC1) * 1000) / 1000)];
};

View File

@ -0,0 +1,43 @@
/*
* Author: Ruthberg
* Updates the truing drop input method
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_update_truing_drop_selection
*
* Public: No
*/
#include "script_component.hpp"
#define __dsp (uiNamespace getVariable "ATragMX_Display")
(__dsp displayCtrl 18009) ctrlEnable true;
(__dsp displayCtrl 18010) ctrlEnable true;
if (GVAR(truingDropMode) == 0) then {
(__dsp displayCtrl 18009) ctrlEnable false;
{
(__dsp displayCtrl _x) ctrlEnable true;
} forEach [18011, 18013, 18016];
{
(__dsp displayCtrl _x) ctrlEnable false;
} forEach [18012, 18014, 18017];
ctrlSetFocus (__dsp displayCtrl 18011);
} else {
(__dsp displayCtrl 18010) ctrlEnable false;
{
(__dsp displayCtrl _x) ctrlEnable true;
} forEach [18012, 18014, 18017];
{
(__dsp displayCtrl _x) ctrlEnable false;
} forEach [18011, 18013, 18016];
ctrlSetFocus (__dsp displayCtrl 18012);
};
[] call FUNC(update_truing_drop_data);

View File

@ -15,6 +15,8 @@
*/
#include "script_component.hpp"
[] call FUNC(parse_input);
private ["_scopeBaseAngle"];
_scopeBaseAngle = (GVAR(workingMemory) select 3);
@ -28,10 +30,7 @@ _dragModel = GVAR(workingMemory) select 16;
_atmosphereModel = GVAR(workingMemory) select 17;
private ["_zeroRange"];
_zeroRange = Round(parseNumber(ctrlText 120060));
if (GVAR(currentUnit) == 1) then {
_zeroRange = _zeroRange / 1.0936133;
};
_zeroRange = GVAR(workingMemory) select 2;
if (_zeroRange < 10) exitWith {
GVAR(workingMemory) set [2, _zeroRange];
GVAR(workingMemory) set [3, 0];
@ -42,9 +41,17 @@ _altitude = GVAR(altitude);
_temperature = GVAR(temperature);
_barometricPressure = GVAR(barometricPressure);
_relativeHumidity = GVAR(relativeHumidity);
if (!GVAR(atmosphereModeTBH)) then {
_barometricPressure = 1013.25 * (1 - (0.0065 * _altitude) / (273.15 + _temperature + 0.0065 * _altitude)) ^ 5.255754495;
_relativeHumidity = 50;
};
private ["_result"];
_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
{
private _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
private _offset = (_result select 0) / 60;
_scopeBaseAngle = _scopeBaseAngle + _offset;
if (_offset < 0.01) exitWith {};
} forEach [1, 2, 3];
GVAR(workingMemory) set [2, _zeroRange];
GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];
GVAR(workingMemory) set [3, _scopeBaseAngle];

View File

@ -16,4 +16,4 @@
#include "\z\ace\addons\main\script_macros.hpp"
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.7
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.9

View File

@ -79,8 +79,8 @@ class CfgAmmo {
class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
nvgOnly = 1;
};
class ACE_545x39_Ball_7N6M : B_556x45_Ball {
airFriction=-0.00114744;
class B_545x39_Ball_F : BulletBase {
airFriction=-0.00116278;
caliber=0.6;
deflecting=18;
hit=7;
@ -93,12 +93,14 @@ class CfgAmmo {
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=7;
ACE_muzzleVelocities[]={780, 880, 920};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
ACE_muzzleVelocities[]={735, 883, 892};
ACE_barrelLengths[]={206.5, 414.02, 508.0};
};
class ACE_545x39_Ball_7N6M : B_545x39_Ball_F {
};
class B_556x45_Ball_Tracer_Green;
class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Green {
airFriction=-0.00114744;
airFriction=-0.00116278;
caliber=0.6;
deflecting=18;
hit=7;
@ -113,12 +115,26 @@ class CfgAmmo {
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
ACE_muzzleVelocities[]={740, 886, 897};
ACE_barrelLengths[]={206.5, 414.02, 508.0};
};
class B_56x15_dual: BulletBase {
tracerScale = 0.5;
};
class B_580x42_Ball_F: BulletBase {
airFriction=-0.00117956;
typicalSpeed=930;
ACE_caliber=5.9944;
ACE_bulletLength=24.2;
ACE_bulletMass=4.15;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.156};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=7;
ACE_muzzleVelocities[]={790, 930, 950};
ACE_barrelLengths[]={369.0, 463.0, 600.0};
};
class B_65x39_Caseless : BulletBase {
airFriction=-0.00075308;
typicalSpeed=800;
@ -439,7 +455,7 @@ class CfgAmmo {
ACE_muzzleVelocities[]={620, 655, 675};
ACE_barrelLengths[]={228.6, 406.4, 508.0};
};
class ACE_762x39_Ball : B_762x51_Ball {
class B_762x39_Ball_F : BulletBase {
airFriction=-0.00151621;
hit=12;
caliber=1.5;
@ -455,6 +471,8 @@ class CfgAmmo {
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
class ACE_762x39_Ball : B_762x39_Ball_F {
};
class ACE_762x39_Ball_57N231P : B_762x54_Tracer_Green {
airFriction=-0.00151621;
hit=12;
@ -474,7 +492,7 @@ class CfgAmmo {
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
class B_9x21_Ball : BulletBase {
airFriction=-0.00226847;
airFriction=-0.00208292;
typicalSpeed=390;
tracerScale = 0.5;
hit=6;
@ -486,8 +504,8 @@ class CfgAmmo {
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=1;
ACE_muzzleVelocities[]={440, 460, 480};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
ACE_muzzleVelocities[]={380, 390, 420, 435};
ACE_barrelLengths[]={93.5, 101.6, 127.0, 228.6};
};
class B_9x21_Ball_Tracer_Green: B_9x21_Ball {
tracerScale = 0.5;
@ -508,7 +526,7 @@ class CfgAmmo {
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
class ACE_9x19_Ball : B_9x21_Ball {
airFriction=-0.0018577;
airFriction=-0.0019835;
typicalSpeed=370;
hit=6;
ACE_caliber=9.017;
@ -649,7 +667,7 @@ class CfgAmmo {
ACE_bulletLength=43.18;
ACE_bulletMass=19.44;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.381};
ACE_ballisticCoefficients[]={0.368};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=7;
@ -665,12 +683,12 @@ class CfgAmmo {
ACE_bulletLength=38.989;
ACE_bulletMass=16.3941242;
ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
ACE_ballisticCoefficients[]={0.560};
ACE_ballisticCoefficients[]={0.290};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ICAO";
ACE_dragModel=1;
ACE_muzzleVelocities[]={880, 915, 925};
ACE_barrelLengths[]={508.0, 660.4, 711.2};
ACE_dragModel=7;
ACE_muzzleVelocities[]={880, 895, 900};
ACE_barrelLengths[]={508.0, 685.8, 711.2};
};
class B_127x33_Ball: BulletBase {
tracerScale = 1.3; //1.2;
@ -771,6 +789,20 @@ class CfgAmmo {
ACE_muzzleVelocities[]={230, 250, 285};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
class B_50BW_Ball_F : BulletBase {
airFriction=-0.00202645;
typicalSpeed=550;
ACE_caliber=12.7;
ACE_bulletLength=24.13;
ACE_bulletMass=21.7076;
ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
ACE_ballisticCoefficients[]={0.21};
ACE_velocityBoundaries[]={};
ACE_standardAtmosphere="ASM";
ACE_dragModel=1;
ACE_muzzleVelocities[]={510, 550, 596};
ACE_barrelLengths[]={304.8, 406.4, 609.6};
};
class B_19mm_HE: BulletBase {
tracerScale = 1;
};

View File

@ -2,6 +2,15 @@
class CfgMagazines {
class CA_Magazine;
class 30Rnd_580x42_Mag_F: CA_Magazine {
initSpeed = 930;
};
class 100Rnd_580x42_Mag_F: 30Rnd_580x42_Mag_F {
initSpeed = 930;
};
class 20Rnd_650x39_Cased_Mag_F: CA_Magazine {
initSpeed = 760;
};
class 30Rnd_65x39_caseless_mag: CA_Magazine {
initSpeed = 760;
};
@ -47,6 +56,10 @@ class CfgMagazines {
descriptionShort = CSTRING(30Rnd_65x39_caseless_green_mag_Tracer_DimDescription);
};
class 30Rnd_545x39_Mag_F: CA_Magazine {
initSpeed = 735;
};
class 30Rnd_556x45_Stanag: CA_Magazine {
};
class ACE_30Rnd_556x45_Stanag_M995_AP_mag: 30Rnd_556x45_Stanag {
@ -84,6 +97,14 @@ class CfgMagazines {
picture = "\A3\weapons_f\data\ui\m_20stanag_red_ca.paa";
};
class 200Rnd_556x45_Box_F: CA_Magazine {
initSpeed = 872;
};
class 30Rnd_762x39_Mag_F: CA_Magazine {
initSpeed = 715;
};
class 20Rnd_762x51_Mag: CA_Magazine {
initSpeed = 833;
};
@ -219,17 +240,35 @@ class CfgMagazines {
class ACE_30Rnd_65x47_Scenar_mag: 30Rnd_65x39_caseless_mag {
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x47_Ball_Scenar";
initSpeed = 761;
displayName = CSTRING(30Rnd_65x47_Scenar_mag_Name);
displayNameShort = CSTRING(30Rnd_65x47_Scenar_mag_NameShort);
descriptionShort = CSTRING(30Rnd_65x47_Scenar_mag_Description);
};
class ACE_20Rnd_65x47_Scenar_mag: 20Rnd_650x39_Cased_Mag_F {
author = ECSTRING(common,ACETeam);
ammo = "ACE_65x47_Ball_Scenar";
initSpeed = 779;
displayName = CSTRING(20Rnd_65x47_Scenar_mag_Name);
displayNameShort = CSTRING(20Rnd_65x47_Scenar_mag_NameShort);
descriptionShort = CSTRING(20Rnd_65x47_Scenar_mag_Description);
};
class ACE_30Rnd_65_Creedmor_mag: 30Rnd_65x39_caseless_mag {
author = ECSTRING(common,ACETeam);
ammo = "ACE_65_Creedmor_Ball";
initSpeed = 815;
displayName = CSTRING(30Rnd_65_Creedmor_mag_Name);
displayNameShort = CSTRING(30Rnd_65_Creedmor_mag_NameShort);
descriptionShort = CSTRING(30Rnd_65_Creedmor_mag_Description);
};
class ACE_20Rnd_65_Creedmor_mag: 20Rnd_650x39_Cased_Mag_F {
author = ECSTRING(common,ACETeam);
ammo = "ACE_65_Creedmor_Ball";
initSpeed = 808;
displayName = CSTRING(20Rnd_65_Creedmor_mag_Name);
displayNameShort = CSTRING(20Rnd_65_Creedmor_mag_NameShort);
descriptionShort = CSTRING(20Rnd_65_Creedmor_mag_Description);
};
class 10Rnd_338_Mag;
class ACE_10Rnd_338_300gr_HPBT_Mag: 10Rnd_338_Mag {
author = ECSTRING(common,ACETeam);
@ -276,7 +315,7 @@ class CfgMagazines {
class 30Rnd_9x21_Mag: CA_Magazine {
initSpeed = 450;
initSpeed = 390;
};
class ACE_30Rnd_9x19_mag: 30Rnd_9x21_Mag {
author = ECSTRING(common,ACETeam);
@ -287,6 +326,10 @@ class CfgMagazines {
initSpeed = 370;
};
class 10Rnd_50BW_Mag_F: CA_Magazine {
initSpeed = 552;
};
class 11Rnd_45ACP_Mag: CA_Magazine {
initSpeed = 250;
};
@ -308,7 +351,10 @@ class CfgMagazines {
};
class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
initSpeed = 450;
initSpeed = 390;
};
class 10Rnd_9x21_Mag: 16Rnd_9x21_Mag {
initSpeed = 390;
};
class ACE_16Rnd_9x19_mag: 16Rnd_9x21_Mag {
author = ECSTRING(common,ACETeam);

View File

@ -27,6 +27,17 @@ class CfgWeapons {
};
};
class DMR_07_base_F: Rifle_Long_Base_F {
initSpeed = -1.06051;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 640.0;
magazines[] = {
"20Rnd_650x39_Cased_Mag_F",
"ACE_20Rnd_65x47_Scenar_mag",
"ACE_20Rnd_65_Creedmor_mag"
};
};
class DMR_06_base_F: Rifle_Long_Base_F {
class Single: Mode_SemiAuto {
dispersion = 0.00029; // radians. Equal to 1.00 MOA.
@ -112,7 +123,7 @@ class CfgWeapons {
"ACE_30Rnd_65x47_Scenar_mag",
"ACE_30Rnd_65_Creedmor_mag"
};
initSpeed = -1.018;
initSpeed = -1.01842;
ACE_barrelTwist=228.6;
ACE_barrelLength=457.2;
class Single: Single {
@ -142,6 +153,14 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.859238;
ACE_barrelTwist=177.8;
ACE_barrelLength=264.0;
};
class arifle_SPAR_02_base_F: Rifle_Base_F {
initSpeed = -0.934282;
ACE_barrelTwist=177.8;
ACE_barrelLength=368.0;
};
class arifle_SPAR_03_base_F: Rifle_Base_F {
magazines[] = {
@ -154,6 +173,9 @@ class CfgWeapons {
"ACE_20Rnd_762x51_M993_AP_Mag",
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.984394;
ACE_barrelTwist=279.4;
ACE_barrelLength=508.0;
};
/* Other */
@ -163,21 +185,26 @@ class CfgWeapons {
"200Rnd_65x39_cased_Box_Tracer",
"ACE_200Rnd_65x39_cased_Box_Tracer_Dim"
};
initSpeed = -0.9763;
initSpeed = -0.976974;
ACE_barrelTwist=177.8;
ACE_barrelLength=317.5;
};
class LMG_Zafir_F: Rifle_Long_Base_F {
initSpeed = -1.0;
initSpeed = -1.00333;
ACE_barrelTwist=304.8;
ACE_barrelLength=459.74;
};
class LMG_03_base_F: Rifle_Long_Base_F {
initSpeed = -1.02002;
ACE_barrelTwist=177.8;
ACE_barrelLength=414.02;
};
class Tavor_base_F: Rifle_Base_F {};
class mk20_base_F: Rifle_Base_F {};
/* SMGs */
class SDAR_base_F: Rifle_Base_F {
initSpeed = -0.989;
initSpeed = -1.211;
class Single: Mode_SemiAuto {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
@ -190,9 +217,6 @@ class CfgWeapons {
dispersion = 0.0008727; // radians. Equal to 3 MOA.
};
};
class pdw2000_base_F: Rifle_Short_Base_F {};
class SMG_01_Base: Rifle_Short_Base_F {};
class SMG_02_base_F: Rifle_Base_F {};
/* Pistols */
@ -200,13 +224,13 @@ class CfgWeapons {
class Pistol_Base_F: Pistol {};
class hgun_P07_F: Pistol_Base_F {
initSpeed = -0.9778;
initSpeed = -1.0;
ACE_barrelTwist=254.0;
ACE_barrelLength=101.6;
};
class hgun_Rook40_F: Pistol_Base_F {
initSpeed = -1.0;
initSpeed = -1.03077;
ACE_barrelTwist=254.0;
ACE_barrelLength=111.76;
};
@ -228,18 +252,57 @@ class CfgWeapons {
ACE_barrelTwist=406.4;
ACE_barrelLength=76.2;
};
class hgun_PDW2000_F: pdw2000_base_F {
initSpeed = -1.157;
class hgun_Pistol_01_F: Pistol_Base_F {
initSpeed = -0.974359;
ACE_barrelTwist=254.0;
ACE_barrelLength=93.5;
};
class pdw2000_base_F: Rifle_Short_Base_F {
initSpeed = -1.09615;
ACE_barrelTwist=228.6;
ACE_barrelLength=177.8;
};
/* Rifles */
class arifle_AKS_base_F: Rifle_Base_F {
initSpeed = -1.0;
ACE_barrelTwist=160.02;
ACE_barrelLength=206.5;
};
class arifle_AKM_base_F: Rifle_Base_F {
initSpeed = -1.0014;
ACE_barrelTwist = 199.898;
ACE_barrelLength = 414.02;
};
class arifle_AK12_base_F: Rifle_Base_F {
initSpeed = -1.0014;
ACE_barrelTwist = 199.898;
ACE_barrelLength = 414.02;
};
class arifle_CTAR_base_F: Rifle_Base_F {
initSpeed = -1.0;
ACE_barrelTwist = 244.0;
ACE_barrelLength = 463.0;
};
class arifle_CTARS_base_F: Rifle_Base_F {
initSpeed = -1.04301;
ACE_barrelTwist = 244.0;
ACE_barrelLength = 600.0;
};
class arifle_ARX_base_F: Rifle_Base_F {
initSpeed = -1.02052;
ACE_barrelTwist = 228.6;
ACE_barrelLength = 463.0;
};
class arifle_Katiba_F: arifle_katiba_Base_F {
magazines[] = {
"30Rnd_65x39_caseless_green",
"30Rnd_65x39_caseless_green_mag_Tracer",
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.08;
initSpeed = -1.08355;
ACE_barrelTwist=203.2;
ACE_barrelLength=728.98;
};
@ -249,7 +312,7 @@ class CfgWeapons {
"30Rnd_65x39_caseless_green_mag_Tracer",
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.07;
initSpeed = -1.07105;
ACE_barrelTwist=203.2;
ACE_barrelLength=680.72;
};
@ -259,7 +322,7 @@ class CfgWeapons {
"30Rnd_65x39_caseless_green_mag_Tracer",
"ACE_30Rnd_65x39_caseless_green_mag_Tracer_Dim"
};
initSpeed = -1.08;
initSpeed = -1.08355;
ACE_barrelTwist=203.2;
ACE_barrelLength=728.98;
};
@ -269,7 +332,7 @@ class CfgWeapons {
"30Rnd_65x39_caseless_mag_Tracer",
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -0.99;
initSpeed = -0.990132;
ACE_barrelTwist=228.6;
ACE_barrelLength=368.3;
};
@ -295,7 +358,7 @@ class CfgWeapons {
"30Rnd_65x39_caseless_mag_Tracer",
"ACE_30Rnd_65x39_caseless_mag_Tracer_Dim"
};
initSpeed = -0.965;
initSpeed = -0.963816;
ACE_barrelTwist=203.2;
ACE_barrelLength=266.7;
};
@ -323,11 +386,16 @@ class CfgWeapons {
ACE_barrelTwist=285.75;
ACE_barrelLength=457.2;
};
class SMG_02_F: SMG_02_base_F {
initSpeed = -1.054;
class SMG_02_base_F: Rifle_Base_F {
initSpeed = -1.10288;
ACE_barrelTwist=254.0;
ACE_barrelLength=195.58;
};
class SMG_05_base_F: Rifle_Short_Base_F {
initSpeed = -1.04058;
ACE_barrelTwist=254.0;
ACE_barrelLength=115.0;
};
class arifle_TRG20_F: Tavor_base_F {
magazines[] = {
"30Rnd_556x45_Stanag",
@ -358,7 +426,7 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.989;
initSpeed = -0.988043;
ACE_barrelTwist=177.8;
ACE_barrelLength=459.74;
};
@ -375,7 +443,7 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.989;
initSpeed = -0.988043;
ACE_barrelTwist=177.8;
ACE_barrelLength=459.74;
};
@ -398,7 +466,7 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.98;
initSpeed = -0.980978;
ACE_barrelTwist=177.8;
ACE_barrelLength=441.96;
};
@ -415,7 +483,7 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.956;
initSpeed = -0.962648;
ACE_barrelTwist=177.8;
ACE_barrelLength=406.4;
};
@ -432,12 +500,12 @@ class CfgWeapons {
"ACE_30Rnd_556x45_Stanag_Mk318_mag",
"ACE_30Rnd_556x45_Stanag_Tracer_Dim"
};
initSpeed = -0.956;
initSpeed = -0.962648;
ACE_barrelTwist=177.8;
ACE_barrelLength=406.4;
};
class SMG_01_F: SMG_01_Base {
initSpeed = -1.016;
class SMG_01_Base: Rifle_Short_Base_F {
initSpeed = -1.0175;
ACE_barrelTwist=406.4;
ACE_barrelLength=139.7;
};
@ -461,7 +529,7 @@ class CfgWeapons {
"ACE_20Rnd_762x51_M993_AP_Mag",
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.9724;
initSpeed = -0.972389;
ACE_barrelTwist=304.8;
ACE_barrelLength=457.2;
};
@ -498,7 +566,7 @@ class CfgWeapons {
"ACE_20Rnd_762x67_Mk248_Mod_1_Mag",
"ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag"
};
initSpeed = -0.962;
initSpeed = -0.961749;
ACE_barrelTwist=254.0;
ACE_barrelLength=508.0;
};
@ -513,7 +581,7 @@ class CfgWeapons {
"ACE_20Rnd_762x51_M993_AP_Mag",
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.9843;
initSpeed = -0.984394;
ACE_barrelTwist=254.0;
ACE_barrelLength=508.0;
};
@ -538,12 +606,12 @@ class CfgWeapons {
"ACE_20Rnd_762x51_M993_AP_Mag",
"ACE_20Rnd_762x51_Mag_SD"
};
initSpeed = -0.9916;
initSpeed = -0.992197;
ACE_barrelTwist=304.8;
ACE_barrelLength=558.8;
};
class MMG_01_hex_F: MMG_01_base_F {
initSpeed = -1.0;
initSpeed = -0.997073;
ACE_barrelTwist=359.918;
ACE_barrelLength=549.91;
};

View File

@ -1,6 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Ballistics">
<!-- QBU -->
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Name">
<English>6.5x47mm 20Rnd Mag (HPBT Scenar)</English>
<French>Ch. 6.5x47mm 20Cps (HPBT Scenar)</French>
<Spanish>Cargador de 20 balas de 6.5x47mm (HPBT Scenar)</Spanish>
<Polish>Magazynek 6,5x47mm 20rd (HPBT Scenar)</Polish>
<Russian>Магазин из 20-ти 6,5x47 мм (экспансивные Scenar)</Russian>
<German>6,5x47mm 20-Patronen-Magazin (HPBT Scenar)</German>
<Italian>6.5x47mm 20Rnd Mag (HPBT Scenar)</Italian>
<Czech>6.5x47mm 20náb. Zásobník (HPBT Scenar)</Czech>
<Portuguese>Carregador 6.5x47mm com 20 cartuchos (HPBT Scenar)</Portuguese>
<Hungarian>6,5x47mm 20-lövedékes tár (HPBT Scenar)</Hungarian>
<Japanese>6.5x47mm 20発入り 弾倉 (HPBT Scenar)</Japanese>
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_NameShort">
<English>6.5mm Lapua</English>
<French>6.5mm Lapua</French>
<Spanish>6.5mm Lapua</Spanish>
<Polish>6,5mm Lapua</Polish>
<Russian>6,5 мм Lapua</Russian>
<German>6,5mm Lapua</German>
<Italian>6.5mm Lapua</Italian>
<Czech>6.5mm Lapua</Czech>
<Portuguese>6.5mm Lapua</Portuguese>
<Hungarian>6,5mm Lapua</Hungarian>
<Japanese>6.5mm Lapua</Japanese>
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Description">
<English>Caliber: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: QBU-88</English>
<French>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Balas: 20&lt;br /&gt;Se usa en: QBU-88</Spanish>
<Polish>Kaliber: 6,5x47mm (HPBT Scenar)&lt;br /&gt;Pociski: 20</Polish>
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: QBU-88</Russian>
<German>Kaliber: 6,5x47mm (HPBT Scenar)&lt;br /&gt;Patronen: 20&lt;br /&gt;Eingesetzt von: QBU-88</German>
<Italian>Calibro: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: QBU-88</Italian>
<Czech>Ráže: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Nábojů: 20&lt;br /&gt;Použití u: QBU-88</Czech>
<Portuguese>Calibre: 6.5x47mm (HPBT Scenar)&lt;br/&gt;Cartuchos: 20&lt;br/&gt;Usado em: QBU-88</Portuguese>
<Hungarian>Kaliber: 6,5x47mm (HPBT Scenar)&lt;br /&gt;Lövedékek: 20&lt;br /&gt;Használható: QBU-88</Hungarian>
<Japanese>口径: 6.5x47mm (HPBT Scenar)&amp;lt;br /&amp;gt;装填数: 20&amp;lt;br /&amp;gt;次で使用: QBU-88</Japanese>
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_Name">
<English>6.5mm Creedmor 20Rnd Mag</English>
<Polish>Magazynek 6,5mm Creedmor 20rd</Polish>
<Italian>6.5mm Creedmor 20Rnd Mag</Italian>
<Russian>Магазин из 20-ти 6,5 мм Creedmor</Russian>
<German>6,5mm Creedmor 20-Patronen-Magazin</German>
<Spanish>Cargador de 20 balas Creedmor de 6.5mm</Spanish>
<French>Ch. 6.5mm Creedmor 20Cps</French>
<Czech>6.5mm Creedmor 20náb. Zásobník</Czech>
<Portuguese>Carregador 6.5mm com 20 cartuchos Creedmor</Portuguese>
<Hungarian>6,5mm Creedmor 20-lövedékes tár</Hungarian>
<Japanese>6.5mm Creedmor 20発入り 弾倉</Japanese>
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_NameShort">
<English>6.5mm CM</English>
<French>6.5mm CM</French>
<Spanish>6.5mm CM</Spanish>
<Polish>6,5mm CM</Polish>
<Russian>6,5 мм CM</Russian>
<German>6,5mm CM</German>
<Italian>6.5mm CM</Italian>
<Czech>6.5mm CM</Czech>
<Portuguese>6.5mm CM</Portuguese>
<Hungarian>6,5mm CM</Hungarian>
<Japanese>6.5mm CM</Japanese>
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_Description">
<English>Caliber: 6.5x47mm Creedmor&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: QBU-88</English>
<Polish>Kaliber: 6,5x47mm Creedmor&lt;br /&gt;Pociski: 20&lt;br /&gt;Używany w: QBU-88</Polish>
<German>Kaliber: 6,5x47mm Creedmor&lt;br /&gt;Patronen: 20&lt;br /&gt;Eingesetzt von: QBU-88</German>
<French>Calibre: 6.5x47mm Creedmor &lt;br /&gt;Cartouches: 20&lt;br /&gt;Utilisé avec: QBU-88</French>
<Italian>Calibro: 6.5mm Creedmor&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: QBU-88</Italian>
<Spanish>Calibre: 6.5mm Creedmor&lt;br /&gt;Balas: 20&lt;br /&gt;Se usa en: QBU-88</Spanish>
<Russian>Калибр: 6,5x47мм Creedmor&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются c: QBU-88</Russian>
<Czech>Ráže: 6.5x47mm Creedmor&lt;br /&gt;Nábojů: 20&lt;br /&gt;Použití u: QBU-88</Czech>
<Portuguese>Calibre: 6.5x47mm Creedmor&lt;br/&gt;Cartuchos: 20&lt;br/&gt;Usado em: QBU-88</Portuguese>
<Hungarian>Kaliber: 6,5x47mm Creedmor&lt;br /&gt;Lövedékek: 20&lt;br /&gt;Használható: QBU-88</Hungarian>
<Japanese>口径: 6.5x47mm Creedmor&amp;lt;br /&amp;gt;装填数: 20&amp;lt;br /&amp;gt;次で使用: QBU-88</Japanese>
</Key>
<!-- MX -->
<Key ID="STR_ACE_Ballistics_30Rnd_65x39_caseless_mag_Tracer_DimName">
<English>6.5mm 30Rnd Tracer IR-DIM Mag</English>

View File

@ -5,16 +5,19 @@
<English>Chemlights</English>
<Japanese>ケミライト</Japanese>
<Polish>Świetliki</Polish>
<German>Knicklichter</German>
</Key>
<Key ID="STR_ACE_Chemlights_Action_Prepare">
<English>Prepare %1</English>
<Japanese>%1 をつかう</Japanese>
<Polish>Przygotuj %1</Polish>
<German>%1 vorbereiten</German>
</Key>
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
<English>%1&lt;br/&gt;Prepared</English>
<Japanese>%1&amp;lt;br/&amp;gt; をつかった</Japanese>
<Polish>%1&lt;br/&gt;Przygotowany</Polish>
<German>%1&lt;br/&gt;vorbereitet</German>
</Key>
<Key ID="STR_ACE_Chemlights_Inventory_Full">
<English>No inventory space</English>
@ -33,180 +36,216 @@
<English>[ACE] Chemlights</English>
<Japanese>[ACE] ケミライト</Japanese>
<Polish>[ACE] Świetliki</Polish>
<German>[ACE] Knicklichter</German>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
<English>Chemlight (Orange)</English>
<Japanese>ケミライト (オレンジ)</Japanese>
<Polish>Świetlik (pomarańczowy)</Polish>
<German>Knicklicht (orange)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
<English>Orange Light</English>
<Japanese>オレンジ色</Japanese>
<Polish>Pomarańczowe światło</Polish>
<German>Oranges Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
<English>Type: Light - Orange&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - オレンジ&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - pomarańczowe&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - orange&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_White_DisplayName">
<English>Chemlight (White)</English>
<Japanese>ケミライト (白)</Japanese>
<Polish>Świetlik (biały)</Polish>
<German>Knicklicht (weiß)</German>
</Key>
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
<English>White Light</English>
<Japanese>白色</Japanese>
<Polish>Białe światło</Polish>
<German>Weißes Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
<English>Type: Light - White&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 白&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - białe&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - weiß&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
<English>Chemlight (Hi Red)</English>
<Japanese>ケミライト (高輝度 赤)</Japanese>
<Polish>Świetlik (jaskrawy czerwony)</Polish>
<German>Knicklicht (rot, hell)</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
<English>Red Hi Light</English>
<Japanese>高輝度の赤色</Japanese>
<Polish>Jaskrawe czerwone światło</Polish>
<German>Helles, rotes Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
<English>Type: Light - Red Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 高輝度 赤 (5分間)&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - jaskrawe czerwone (5 minut)&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - rot, hell (5 Minuten)&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
<English>Chemlight (Hi Yellow)</English>
<Japanese>ケミライト (高輝度 黄)</Japanese>
<Polish>Świetlik (jaskrawy żółty)</Polish>
<German>Knicklicht (gelb, hell)</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
<English>Yellow Hi Light</English>
<Japanese>高輝度の黄色</Japanese>
<Polish>Jaskrawe żółte światło</Polish>
<German>Helles, gelbes Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
<English>Type: Light - Yellow Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 高輝度 黄 (5分間)&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - jaskrawe żółte (5 minut)&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - gelb, hell (5 Minuten)&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
<English>Chemlight (Hi Orange)</English>
<Japanese>ケミライト (高輝度 オレンジ)</Japanese>
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
<German>Knicklicht (orange, hell)</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
<English>Orange Hi Light</English>
<Japanese>高輝度のオレンジ</Japanese>
<Polish>Jaskrawe pomarańczowe światło</Polish>
<German>Helles, oranges Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiOrange_DescriptionShort">
<English>Type: Light - Orange Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 高輝度 オレンジ (5分間)&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - jaskrawe pomarańczowe (5 minut)&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - orange, hell (5 Minuten)&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
<English>Chemlight (Hi White)</English>
<Japanese>ケミライト (高輝度 白)</Japanese>
<Polish>Świetlik (jaskrawy biały)</Polish>
<German>Knicklicht (weiß, hell)</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
<English>White Hi Light</English>
<Japanese>高輝度の白色</Japanese>
<Polish>Jaskrawe białe światło</Polish>
<German>Helles, weißes Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
<English>Type: Light - White Hi (5 minute)&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 高輝度 白 (5分間)&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - jaskrawe białe (5 minut)&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - weiß, hell (5 Minuten)&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
<English>Chemlight (IR)</English>
<Japanese>ケミライト (IR)</Japanese>
<Polish>Świetlik (podczerwony)</Polish>
<German>Knicklicht (IR)</German>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
<English>IR Light</English>
<Japanese>赤外線光</Japanese>
<Polish>Światło podczerwone</Polish>
<German>IR-Knicklicht</German>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
<English>Type: Light - Infrared&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
<Japanese>種類: 照明 - 赤外線&amp;lt;br /&amp;gt;装填数: 1&amp;lt;br /&amp;gt;次で使用: 携帯</Japanese>
<Polish>Typ: Światło - podczerwone&lt;br/&gt;Pociski: 1&lt;br/&gt;Używany w: ręce</Polish>
<German>Typ: Licht - infrarot&lt;br /&gt;Anzahl: 1&lt;br /&gt;Benutzt in: Hand</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
<English>Chemlight Shield (Empty)</English>
<Japanese>ケミライト シールド (空)</Japanese>
<Polish>Osłona na świetlik (pusta)</Polish>
<German>Knicklicht-Abschirmung (leer)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
<Japanese>ケミライトを入れられます。シールドとケミライトを組み合わせることで、照明にもなりえます。</Japanese>
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
<German>Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
<English>Chemlight Shield (Green)</English>
<Japanese>ケミライト シールド (緑)</Japanese>
<Polish>Osłona na świetlik (zielona)</Polish>
<German>Knicklicht-Abschirmung (grün)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
<English>Green reading light.</English>
<Japanese>緑色の照明。</Japanese>
<Polish>Zielona lampka.</Polish>
<German>Grünes Leselicht.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
<English>Chemlight Shield (Red)</English>
<Japanese>ケミライト シールド (赤)</Japanese>
<Polish>Osłona na świetlik (czerwona)</Polish>
<German>Knicklicht-Abschirmung (rot)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
<English>Red reading light.</English>
<Japanese>赤色の照明。</Japanese>
<Polish>Czerwona lampka.</Polish>
<German>Rotes Leselicht.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
<English>Chemlight Shield (Blue)</English>
<Japanese>ケミライト シールド (青)</Japanese>
<Polish>Osłona na świetlik (niebieska)</Polish>
<German>Knicklicht-Abschirmung (blau)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
<English>Blue reading light.</English>
<Japanese>青色の照明。</Japanese>
<Polish>Niebieska lampka.</Polish>
<German>Blaues Leselicht.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
<English>Chemlight Shield (Yellow)</English>
<Japanese>ケミライト シールド (黄)</Japanese>
<Polish>Osłona na świetlik (żółta)</Polish>
<German>Knicklicht-Abschirmung (gelb)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
<English>Yellow reading light.</English>
<Japanese>黄色の照明。</Japanese>
<Polish>Żółta lampka.</Polish>
<German>Gelbes Leselicht.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
<English>Chemlight Shield (Orange)</English>
<Japanese>ケミライト シールド (オレンジ)</Japanese>
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
<German>Knicklicht-Abschirmung (orange)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
<English>Orange reading light.</English>
<Japanese>オレンジの照明。</Japanese>
<Polish>Pomarańczowa lampka.</Polish>
<German>Oranges Leselicht.</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
<English>Chemlight Shield (White)</English>
<Japanese>ケミライト シールド (白)</Japanese>
<Polish>Osłona na świetlik (biała)</Polish>
<German>Knicklicht-Abschirmung (weiß)</German>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
<English>White reading light.</English>
<Japanese>白の照明。</Japanese>
<German>Weißes Leselicht.</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="CookOff">
<Key ID="STR_ACE_CookOff_enable_name">
<English>Enable cook off</English>
<German>Cook-off ermöglichen</German>
<German>Selbstzündung ermöglichen</German>
<Czech>Povolit explozi munice</Czech>
<Russian>Включить воспламенение</Russian>
<Japanese>誘爆を有効化</Japanese>
@ -11,7 +11,7 @@
</Key>
<Key ID="STR_ACE_CookOff_enable_tooltip">
<English>Enables cook off and related vehicle destruction effects.</English>
<German>Ermöglicht Cook-off und zugehörige Fahrzeug-Zerstörungseffekte.</German>
<German>Ermöglicht Selbstzündung und zugehörige Fahrzeug-Zerstörungseffekte.</German>
<Czech>Povolí explozi munice a její následné ničivé efekty.</Czech>
<Russian>Включает воспламенение и сопутствующие эффекты повреждения техники.</Russian>
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
@ -34,18 +34,22 @@
<Key ID="STR_ACE_CookOff_enableBoxCookoff_name">
<English>Enable ammo box cook off</English>
<Japanese>弾薬箱に誘爆を有効化</Japanese>
<German>Selbstzündung für Munitionskisten ermöglichen</German>
</Key>
<Key ID="STR_ACE_CookOff_enableBoxCookoff_tooltip">
<English>Enables cooking off of ammo boxes.</English>
<Japanese>弾薬箱が誘爆するようになります。</Japanese>
<German>Ermöglicht Selbstzündung von Munitionskisten.</German>
</Key>
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_name">
<English>Enable Ammunition cook off</English>
<Japanese>弾薬の誘爆を有効化</Japanese>
<German>Selbstzündung für Munition ermöglichen</German>
</Key>
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_tooltip">
<English>Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition.</English>
<Japanese>弾薬が誘爆します。車両が燃えると、搭載している弾薬が激しく燃え上がりす。</Japanese>
<German>Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt.</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -7,6 +7,7 @@
<Russian>Жетон</Russian>
<Czech>Identifikační známka</Czech>
<Japanese>ドッグ タグ</Japanese>
<German>Hundemarke</German>
</Key>
<Key ID="STR_ACE_Dogtags_checkItem">
<English>Check Dog Tag</English>
@ -14,6 +15,7 @@
<Russian>Проверить жетон</Russian>
<Czech>Zkontrolovat známku</Czech>
<Japanese>ドッグ タグを見る</Japanese>
<German>Hundemarke prüfen</German>
</Key>
<Key ID="STR_ACE_Dogtags_checkDogtag">
<English>Check</English>
@ -21,6 +23,7 @@
<Russian>Проверить</Russian>
<Czech>Zkontroluj</Czech>
<Japanese>見る</Japanese>
<German>Prüfen</German>
</Key>
<Key ID="STR_ACE_Dogtags_takeDogtag">
<English>Take</English>
@ -28,6 +31,7 @@
<Russian>Взять</Russian>
<Czech>Vezmi</Czech>
<Japanese>取る</Japanese>
<German>Nehmen</German>
</Key>
<Key ID="STR_ACE_Dogtags_takeDogtagSuccess">
<English>Dogtag taken from %1...</English>
@ -35,6 +39,7 @@
<Russian>Жетон снят с %1...</Russian>
<Czech>Sebral jsem známku od %1...</Czech>
<Japanese>%1からドッグ タグを取っている・・・</Japanese>
<German>Hundemarke von %1 genommen ...</German>
</Key>
<Key ID="STR_ACE_Dogtags_dogtagAlreadyTaken">
<English>Somebody else has already taken the dogtag...</English>
@ -42,6 +47,7 @@
<Russian>Кто-то уже забрал жетон...</Russian>
<Czech>Někdo jiný už vzal identifikační známku...</Czech>
<Japanese>すでに誰かがドッグ タグを取っているようだ・・・</Japanese>
<German>Jemand anderes hat bereits die Hundemarke genommen ...</German>
</Key>
</Package>
</Project>

View File

@ -21,3 +21,5 @@ TRACE_3("Params",_posX,_posY,_posZ);
private _flare = "ACE_TripFlare_FlareEffect" createVehicle [_posX,_posY,_posZ];
TRACE_1("",_flare);
nil

View File

@ -820,12 +820,14 @@
<Russian>Сигнальная растяжка</Russian>
<Japanese>仕掛け型照明地雷</Japanese>
<Polish>Flara na linkę</Polish>
<German>Stolperdraht-Leuchtrakete</German>
</Key>
<Key ID="STR_ACE_Explosives_TripFlare_Description">
<English>Type: Tripwire flare - Ignites a non-lethal flare when triggered.&lt;br /&gt;Rounds: 1&lt;br /&gt;Used on: Ground</English>
<Russian>Тип: Сигнальная растяжка - При срабатывании выпускает несмертельную сгнальную вспышку.&lt;br /&gt;Зарядов: 1&lt;br /&gt;Используется на: Земле</Russian>
<Japanese>種類: 仕掛け型照明地雷 - 発動したとき、非致死性の照明を発炎します。&lt;br /&gt;装填数: 1&lt;br /&gt;次で使用: 地表</Japanese>
<Polish>Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.&lt;br/&gt;Pociski: 1&lt;br/&gt;Używane na: ziemia</Polish>
<German>Typ: Stolperdraht-Leuchtrakete - Schießt bei Auslösung eine nicht-tödliche Leuchtrakete ab.&lt;br /&gt;Ladungen: 1&lt;br /&gt;Benutzt auf: Boden</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -32,18 +32,21 @@
<Russian>Эффект очков</Russian>
<Japanese>ゴーグルによる効果</Japanese>
<Polish>Efekty gogli</Polish>
<German>Brilleneffekt</German>
</Key>
<Key ID="STR_ACE_Goggles_effects_tintOnly">
<English>Tint</English>
<Russian>Тонировка</Russian>
<Japanese>色彩のみ</Japanese>
<Polish>Winieta</Polish>
<German>Tönung</German>
</Key>
<Key ID="STR_ACE_Goggles_enabled_tintAndEffects">
<English>Tint + Effects</English>
<Russian>Тонировка + эффекты</Russian>
<Japanese>色彩 + 効果</Japanese>
<Polish>Winieta + Efekty</Polish>
<German>Tönung + Effekte</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -107,7 +107,7 @@ if (GVAR(referenceHeadingMenu) == 0) then {
};
case 2: { // Wind SPD
if (!GVAR(MinAvgMax)) then {
_textCenterBig = Str(round(abs(_windSpeed) * 10) / 10);
_textCenterBig = Str(round(_windSpeed * 10) / 10);
} else {
_textCenterLine1Left = "Max";
_textCenterLine2Left = "Avg";
@ -134,7 +134,7 @@ if (GVAR(referenceHeadingMenu) == 0) then {
if (!GVAR(MinAvgMax)) then {
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
_textCenterBig = Str(round(abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10);
_textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)];
_textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_playerDir)];
} else {
_textCenterBig = Str(round(abs(sin(GVAR(RefHeading)) * _windSpeed) * 10) / 10);
_textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)];
@ -166,7 +166,7 @@ if (GVAR(referenceHeadingMenu) == 0) then {
if (!GVAR(MinAvgMax)) then {
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
_textCenterBig = Str(round(cos(GVAR(RefHeading) - _playerDir) * _windSpeed * 10) / 10);
_textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)];
_textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_playerDir)];
} else {
_textCenterBig = Str(round(cos(GVAR(RefHeading)) * _windSpeed * 10) / 10);
_textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)];

View File

@ -4,6 +4,7 @@
<Key ID="STR_ACE_Laser_dispersionCount_displayName">
<English>Laser Dispersion Simulation Count</English>
<Japanese>レーザーの分散シミュレート数</Japanese>
<German>Laserstreuung-Simulationszähler</German>
</Key>
<Key ID="STR_ACE_Laser_laserCode">
<English>Laser Code</English>
@ -45,4 +46,4 @@
<Japanese>レーザ - コードの数値を減らす</Japanese>
</Key>
</Package>
</Project>
</Project>

View File

@ -150,6 +150,7 @@
<Russian>Клавиша поворота инструментов карты</Russian>
<Japanese>マップ ツールの回転キー</Japanese>
<Polish>Klawisz obrotu narzędzi nawigacyjnych</Polish>
<German>Taste zum Drehen des Kartenwerkzeugs</German>
</Key>
<Key ID="STR_ACE_MapTools_rotateModifierKey_description">
<English>Modifier key to allow rotating map tools</English>
@ -157,14 +158,17 @@
<Russian>Клавиша-модификатор, позволяющая поворачивать инструменты карты</Russian>
<Japanese>マップ ツールを回転させるキーを編集できます。</Japanese>
<Polish>Modyfikator pozwalający na obracanie narzędzi nawigacyjnych</Polish>
<German>Steuerungstaste, um Drehung des Kartenwerkzeugs zu ermöglichen.</German>
</Key>
<Key ID="STR_ACE_MapTools_drawStaightLines_displayName">
<English>Draw straight lines with maptools</English>
<Japanese>マップ ツールを使って直線を書く</Japanese>
<German>Zeichne gerade Linien mit dem Kartenwerkzeug</German>
</Key>
<Key ID="STR_ACE_MapTools_drawStaightLines_description">
<English>Draw on the edge of maptools to draw straight lines. Note: Must hover at midpoint to delete.</English>
<Japanese>マップ ツールの端から直線を書きます。メモ:線の中央ホバーすると削除します。</Japanese>
<German>Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -10,7 +10,7 @@ class Cfg3DEN {
};
class GVAR(isMedicControl): Title {
attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);";
attributeSave = "(missionnamespace getvariable ['ace_isMeidc_temp',0]) - 1;";
attributeSave = "(missionnamespace getvariable ['ace_isMedic_temp',0]) - 1;";
class Controls: Controls {
class Title: Title{};
class Value: ctrlToolbox {
@ -22,7 +22,7 @@ class Cfg3DEN {
rows = 1;
columns = 4;
strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)};
onToolboxSelChanged = "missionnamespace setvariable ['ace_isMeidc_temp',_this select 1];";
onToolboxSelChanged = "missionnamespace setvariable ['ace_isMedic_temp',_this select 1];";
};
};
};

View File

@ -32,7 +32,12 @@ if (stance _unit == "PRONE") then {
};
private _anim = getText (_animConfig >> _configProperty);
private _wpn = ["non", "rfl", "pst"] select (1 + ([primaryWeapon _unit, handgunWeapon _unit] find (currentWeapon _unit)));
private _wpn = switch (true) do {
case ((currentWeapon _unit) == ""): {"non"};
case ((currentWeapon _unit) == (primaryWeapon _unit)): {"rfl"};
case ((currentWeapon _unit) == (handgunWeapon _unit)): {"pst"};
default {"non"};
};
_anim = [_anim, "[wpn]", _wpn] call CBA_fnc_replace;
[_unit, _anim] call EFUNC(common,doAnimation);

View File

@ -4,14 +4,17 @@
<Key ID="STR_ACE_medical_blood_enabledFor_OnlyPlayers">
<English>Only Players</English>
<Japanese>プレイヤーのみ</Japanese>
<German>Nur Spieler</German>
</Key>
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_DisplayName">
<English>Enable Blood Drops</English>
<Japanese>血の滴下を有効化</Japanese>
<German>Aktiviere Blutspritzer</German>
</Key>
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_Description">
<English>Enable or disable Blood Drops created on bleeding and taking damage</English>
<Japanese>ダメージを受けたり、出血していると血が滴る様子の有効か無効化</Japanese>
<German>Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen.</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -8,6 +8,7 @@
<Czech>Detektor kovů</Czech>
<Japanese>地雷探知機</Japanese>
<Polish>Wykrywacz metali</Polish>
<German>Metalldetektor</German>
</Key>
<Key ID="STR_ACE_MineDetector_MetalDetector">
<English>Metal detector</English>
@ -16,6 +17,7 @@
<Czech>Detektor kovů</Czech>
<Japanese>地雷探知機</Japanese>
<Polish>Wykrywacz metali</Polish>
<German>Metalldetektor</German>
</Key>
<Key ID="STR_ACE_MineDetector_ActivateDetector">
<English>Activate</English>
@ -24,6 +26,7 @@
<Czech>Aktivovat</Czech>
<Japanese>起動</Japanese>
<Polish>Aktywuj</Polish>
<German>Aktivieren</German>
</Key>
<Key ID="STR_ACE_MineDetector_DeactivateDetector">
<English>Deactivate</English>
@ -32,6 +35,7 @@
<Czech>Deaktivovat</Czech>
<Japanese>停止</Japanese>
<Polish>Deaktywuj</Polish>
<German>Deaktivieren</German>
</Key>
<Key ID="STR_ACE_MineDetector_ConnectHeadphones">
<English>Connect Headphones</English>
@ -39,6 +43,7 @@
<Czech>Připojit sluchátka</Czech>
<Japanese>ヘッドホンへつなぐ</Japanese>
<Polish>Podłącz słuchawki</Polish>
<German>Kopfhörer verbinden</German>
</Key>
<Key ID="STR_ACE_MineDetector_DisconnectHeadphones">
<English>Disconnect Headphones</English>
@ -46,6 +51,7 @@
<Czech>Odpojit sluchátka</Czech>
<Japanese>ヘッドホンからはずす</Japanese>
<Polish>Odłącz słuchawki</Polish>
<German>Kopfhörer trennen</German>
</Key>
<Key ID="STR_ACE_MineDetector_HeadphonesConnected">
<English>Headphones Connected</English>
@ -53,6 +59,7 @@
<Czech>Sluchátka připojena</Czech>
<Japanese>ヘッドホンへ接続された</Japanese>
<Polish>Słuchawki podpięte</Polish>
<German>Kopfhörer verbunden</German>
</Key>
<Key ID="STR_ACE_MineDetector_HeadphonesDisconnected">
<English>Headphones Disconnected</English>
@ -60,6 +67,7 @@
<Czech>Sluchátka odpojena</Czech>
<Japanese>ヘッドホンから外された</Japanese>
<Polish>Słuchawki odpięte</Polish>
<German>Kopfhörer getrennt</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -239,7 +239,7 @@
</Key>
<Key ID="STR_ACE_Overheating_SwappingBarrel">
<English>Swapping barrel...</English>
<German>Lauf wird gewechselt...</German>
<German>Lauf wird gewechselt ...</German>
<Spanish>Cambiando el cañón...</Spanish>
<Polish>Wymienianie lufy...</Polish>
<Czech>Měním hlaveň...</Czech>
@ -291,7 +291,7 @@
</Key>
<Key ID="STR_ACE_Overheating_CheckingTemperature">
<English>Checking temperature...</English>
<German>Prüfe Temperatur...</German>
<German>Prüfe Temperatur ...</German>
<Spanish>Verificando temperatura...</Spanish>
<Polish>Sprawdzanie temperatury...</Polish>
<French>Vérification de la température...</French>
@ -310,6 +310,7 @@
<Czech>Zkontrolovat teplotu náhradní hlavně</Czech>
<Japanese>予備銃身の温度を測る</Japanese>
<Polish>Sprawdź temperaturę zapasowych luf</Polish>
<German>Temperatur der Wechselläufe prüfen</German>
</Key>
<Key ID="STR_ACE_Overheating_CheckingSpareBarrelsTemperatures">
<English>Checking spare barrels temperatures...</English>
@ -319,6 +320,7 @@
<Czech>Kontroluji teplotu náhradní hlavně...</Czech>
<Japanese>予備銃身の温度を測っている・・・</Japanese>
<Polish>Sprawdzanie temperatury zapasowych luf...</Polish>
<German>Prüfe Temperatur der Wechselläufe ...</German>
</Key>
<Key ID="STR_ACE_Overheating_Temperature">
<English>Temperature</English>
@ -341,6 +343,7 @@
<Czech>Studená náhrandí hlaveň</Czech>
<Japanese>予備銃身は冷たい</Japanese>
<Polish>Zimne zapasowe lufy</Polish>
<German>Kalte Wechselläufe</German>
</Key>
<Key ID="STR_ACE_Overheating_BarrelWarm">
<English>Warm Spare Barrel/s</English>
@ -350,6 +353,7 @@
<Czech>Teplá náhrandí hlaveň</Czech>
<Japanese>予備銃身は温かい</Japanese>
<Polish>Ciepłe zapasowe lufy</Polish>
<German>Warme Wechselläufe</German>
</Key>
<Key ID="STR_ACE_Overheating_BarrelHot">
<English>Hot Spare Barrel/s</English>
@ -359,6 +363,7 @@
<Czech>Horká náhrandí hlaveň</Czech>
<Japanese>予備銃身は熱い</Japanese>
<Polish>Gorące zapasowe lufy</Polish>
<German>Heiße Wechselläufe</German>
</Key>
<Key ID="STR_ACE_Overheating_BarrelVeryHot">
<English>Very Hot Spare Barrel/s</English>
@ -368,6 +373,7 @@
<Czech>Velmi horká náhrandí hlaveň</Czech>
<Japanese>予備銃身はとても熱い</Japanese>
<Polish>Bardzo gorące zapasowe lufy</Polish>
<German>Sehr heiße Wechselläufe</German>
</Key>
<Key ID="STR_ACE_Overheating_BarrelExtremelyHot">
<English>Extremely Hot Spare Barrel/s</English>
@ -377,10 +383,11 @@
<Czech>Extrémně horká náhrandí hlaveň</Czech>
<Japanese>予備銃身は極めて熱い</Japanese>
<Polish>Ekstremalnie gorące zapasowe lufy</Polish>
<German>Extrem heiße Wechselläufe</German>
</Key>
<Key ID="STR_ACE_Overheating_enabled_displayName">
<English>Overheating Enabled</English>
<German>Überhitzen Aktiviert</German>
<German>Überhitzung aktiviert</German>
<Spanish>Activada Sobrecalentamiento</Spanish>
<Portuguese>Superaquecimento ativado</Portuguese>
<French>Surchauffe activée</French>
@ -396,6 +403,7 @@
<Russian>Главный включатель для модуля перегрева/заклинивания</Russian>
<Japanese>過熱と弾詰まりモジュールを全て有効化します</Japanese>
<Polish>Główny włącznik modułu przegrzewania/zacinania się broni</Polish>
<German>Hauptschalter, um die Überhitzung-/Ladehemmung-Module zu aktivieren</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -586,14 +586,33 @@ class CfgWeapons {
class arifle_CTAR_blk_F: arifle_CTAR_base_F {
displayName = CSTRING(arifle_CTAR_blk);
};
class arifle_CTAR_ghex_F: arifle_CTAR_base_F {
displayName = CSTRING(arifle_CTAR_ghex);
};
class arifle_CTAR_hex_F: arifle_CTAR_base_F {
displayName = CSTRING(arifle_CTAR_hex);
};
class arifle_CTAR_GL_base_F;
class arifle_CTAR_GL_blk_F: arifle_CTAR_GL_base_F {
displayName = CSTRING(arifle_CTAR_GL_blk);
};
class arifle_CTAR_GL_ghex_F: arifle_CTAR_GL_base_F {
displayName = CSTRING(arifle_CTAR_GL_ghex);
};
class arifle_CTAR_GL_hex_F: arifle_CTAR_GL_base_F {
displayName = CSTRING(arifle_CTAR_GL_hex);
};
class arifle_CTARS_base_F;
class arifle_CTARS_blk_F: arifle_CTARS_base_F {
displayName = CSTRING(arifle_CTARS_blk);
};
class arifle_CTARS_ghex_F: arifle_CTARS_base_F {
displayName = CSTRING(arifle_CTARS_ghex);
};
class arifle_CTARS_hex_F: arifle_CTARS_base_F {
displayName = CSTRING(arifle_CTARS_hex);
};
// QBU-88
class DMR_07_base_F;

View File

@ -2223,6 +2223,32 @@
<Portuguese>QBZ-95-1 (Preto)</Portuguese>
<Japanese>QBZ-95-1 (黒)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_ghex">
<English>QBZ-95-1 (Green Hex)</English>
<German>QBZ-95-1 (Hex Grün)</German>
<Spanish>QBZ-95-1 (Hex Verde)</Spanish>
<Polish>QBZ-95-1 (zielony hex)</Polish>
<Czech>QBZ-95-1 (Zelený Hex)</Czech>
<French>QBZ-95-1 (Hex Verte)</French>
<Russian>QBZ-95-1 (Зелёный Hex)</Russian>
<Portuguese>QBZ-95-1 (Verde Hex)</Portuguese>
<Hungarian>QBZ-95-1 (Zöld Hex)</Hungarian>
<Italian>QBZ-95-1 (Hex Verde)</Italian>
<Japanese>QBZ-95-1 (緑蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_hex">
<English>QBZ-95-1 (Hex)</English>
<German>QBZ-95-1 (Hex)</German>
<Spanish>QBZ-95-1 (Hex)</Spanish>
<Polish>QBZ-95-1 (hex)</Polish>
<Czech>QBZ-95-1 (Hex)</Czech>
<French>QBZ-95-1 (Hex)</French>
<Russian>QBZ-95-1 (Hex)</Russian>
<Portuguese>QBZ-95-1 (Hex)</Portuguese>
<Hungarian>QBZ-95-1 (Hex)</Hungarian>
<Italian>QBZ-95-1 (Hex)</Italian>
<Japanese>QBZ-95-1 (蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_GL_blk">
<English>QBZ-95-1 GL (Black)</English>
<Czech>QBZ-95-1 GL (Černá)</Czech>
@ -2236,6 +2262,32 @@
<Portuguese>QBZ-95-1 GL (Preto)</Portuguese>
<Japanese>QBZ-95-1 GL (黒)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_GL_ghex">
<English>QBZ-95-1 GL (Green Hex)</English>
<German>QBZ-95-1 GL (Hex Grün)</German>
<Spanish>QBZ-95-1 GL (Hex Verde)</Spanish>
<Polish>QBZ-95-1 GL (zielony hex)</Polish>
<Czech>QBZ-95-1 GL (Zelený Hex)</Czech>
<French>QBZ-95-1 GL (Hex Verte)</French>
<Russian>QBZ-95-1 GL (Зелёный Hex)</Russian>
<Portuguese>QBZ-95-1 GL (Verde Hex)</Portuguese>
<Hungarian>QBZ-95-1 GL (Zöld Hex)</Hungarian>
<Italian>QBZ-95-1 GL (Hex Verde)</Italian>
<Japanese>QBZ-95-1 GL (緑蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTAR_GL_hex">
<English>QBZ-95-1 GL (Hex)</English>
<German>QBZ-95-1 GL (Hex)</German>
<Spanish>QBZ-95-1 GL (Hex)</Spanish>
<Polish>QBZ-95-1 GL (hex)</Polish>
<Czech>QBZ-95-1 GL (Hex)</Czech>
<French>QBZ-95-1 GL (Hex)</French>
<Russian>QBZ-95-1 GL (Hex)</Russian>
<Portuguese>QBZ-95-1 GL (Hex)</Portuguese>
<Hungarian>QBZ-95-1 GL (Hex)</Hungarian>
<Italian>QBZ-95-1 GL (Hex)</Italian>
<Japanese>QBZ-95-1 GL (蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTARS_blk">
<English>QBZ-95-1 LSW (Black)</English>
<Czech>QBZ-95-1 LSW (Černá)</Czech>
@ -2249,6 +2301,32 @@
<Portuguese>QBZ-95-1 LSW (Preto)</Portuguese>
<Japanese>QBZ-95-1 LSW (黒)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTARS_ghex">
<English>QBZ-95-1 LSW (Green Hex)</English>
<German>QBZ-95-1 LSW (Hex Grün)</German>
<Spanish>QBZ-95-1 LSW (Hex Verde)</Spanish>
<Polish>QBZ-95-1 LSW (zielony hex)</Polish>
<Czech>QBZ-95-1 LSW (Zelený Hex)</Czech>
<French>QBZ-95-1 LSW (Hex Verte)</French>
<Russian>QBZ-95-1 LSW (Зелёный Hex)</Russian>
<Portuguese>QBZ-95-1 LSW (Verde Hex)</Portuguese>
<Hungarian>QBZ-95-1 LSW (Zöld Hex)</Hungarian>
<Italian>QBZ-95-1 LSW (Hex Verde)</Italian>
<Japanese>QBZ-95-1 LSW (緑蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_arifle_CTARS_hex">
<English>QBZ-95-1 LSW (Hex)</English>
<German>QBZ-95-1 LSW (Hex)</German>
<Spanish>QBZ-95-1 LSW (Hex)</Spanish>
<Polish>QBZ-95-1 LSW (hex)</Polish>
<Czech>QBZ-95-1 LSW (Hex)</Czech>
<French>QBZ-95-1 LSW (Hex)</French>
<Russian>QBZ-95-1 LSW (Hex)</Russian>
<Portuguese>QBZ-95-1 LSW (Hex)</Portuguese>
<Hungarian>QBZ-95-1 LSW (Hex)</Hungarian>
<Italian>QBZ-95-1 LSW (Hex)</Italian>
<Japanese>QBZ-95-1 LSW (蜂巣)</Japanese>
</Key>
<Key ID="STR_ACE_RealisticNames_srifle_DMR_07_blk">
<English>QBU-88 (Black)</English>
<Czech>QBU-88 (Černá)</Czech>

View File

@ -72,7 +72,7 @@ class ACE_Repair {
requiredEngineer = QGVAR(engineerSetting_fullRepair);
repairLocations[] = {QGVAR(fullRepairLocation)};
repairingTime = 30;
condition = "damage _target > 0";
condition = "0 < ({_x>0} count (getAllHitPointsDamage _target param [2,[]]))";
callbackSuccess = QUOTE(call FUNC(doFullRepair));
itemConsumed = QGVAR(consumeItem_ToolKit);
};

View File

@ -6,42 +6,49 @@
<Russian>Маркировка</Russian>
<Japanese>タグ付け</Japanese>
<Polish>Tagowanie</Polish>
<German>Markierungssystem</German>
</Key>
<Key ID="STR_ACE_Tagging_ModuleDesc">
<English>Configure how the tagging system will operate by default.</English>
<Russian>Настройка работы системы спрей-маркеров по-умолчанию.</Russian>
<Japanese>標準で開くタグ付けシステムの設定を行います。</Japanese>
<Polish>Skonfiguruj zachowanie systemu tagowania.</Polish>
<German>Konfiguriert, wie das Markierungssystem standardmäßig funktioniert.</German>
</Key>
<Key ID="STR_ACE_Tagging_QuickTag">
<English>Quick Tag</English>
<Russian>Быстрый маркер</Russian>
<Japanese>クイック タグ</Japanese>
<Polish>Szybkie tagowanie</Polish>
<German>Schnelle Markierung</German>
</Key>
<Key ID="STR_ACE_Tagging_QuickTagDesc">
<English>Action performed on main tag interaction point.</English>
<Russian>Действие, выполняемое при выборе главного пункта меню маркировки.</Russian>
<Japanese>インタラクション ポインにむけてタグ付けをします。</Japanese>
<Polish>Akcja wykonywana na głównym punkcie interakcji tagu.</Polish>
<German>Aktion, die am Haupt-Interaktionspunkt ausgeführt werden soll.</German>
</Key>
<Key ID="STR_ACE_Tagging_LastUsed">
<English>Last Used</English>
<Russian>Повторить последний</Russian>
<Japanese>最後の使用</Japanese>
<Polish>Ostatnio użyte</Polish>
<German>Zuletzt benutzt</German>
</Key>
<Key ID="STR_ACE_Tagging_RandomX">
<English>Random X</English>
<Russian>Случайный Х</Russian>
<Japanese>無作為な X印</Japanese>
<Polish>Losowy X</Polish>
<German>Zufällig X</German>
</Key>
<Key ID="STR_ACE_Tagging_Random">
<English>Random</English>
<Russian>Случайный</Russian>
<Japanese>無作為</Japanese>
<Polish>Losowy</Polish>
<German>Zufällig</German>
</Key>
<Key ID="STR_ACE_Tagging_Tag">
<English>Tag</English>
@ -164,4 +171,4 @@
<Japanese>スプレー缶は壁にタグ付できます。</Japanese>
</Key>
</Package>
</Project>
</Project>

View File

@ -152,6 +152,7 @@
<Russian>Продолжить копание окопа</Russian>
<Czech>Pokračovat v kopání</Czech>
<Japanese>塹壕を掘りつづける</Japanese>
<German>Graben fortsetzen</German>
</Key>
<Key ID="STR_ACE_Trenches_RemoveEnvelope">
<English>Remove Trench</English>
@ -161,6 +162,7 @@
<Russian>Убрать окоп</Russian>
<Czech>Odstranit zákop</Czech>
<Japanese>塹壕を消す</Japanese>
<German>Schützengraben entfernen</German>
</Key>
<Key ID="STR_ACE_Trenches_RemovingTrench">
<English>Removing Trench</English>
@ -170,6 +172,7 @@
<Russian>Убирание окопа</Russian>
<Czech>Odstraňuji zákop</Czech>
<Japanese>塹壕を消している</Japanese>
<German>Entferne Schützengraben</German>
</Key>
</Package>
</Project>

View File

@ -9,6 +9,7 @@
<Russian>Интерфейс</Russian>
<Japanese>ユーザ インタフェイス</Japanese>
<Polish>Interfejs użytkownika</Polish>
<German>Benutzeroberfläche</German>
</Key>
<Key ID="STR_ACE_UI_ModuleName">
<English>User Interface</English>
@ -18,6 +19,7 @@
<Russian>Пользовательский интерфейс</Russian>
<Japanese>ユーザ インタフェイス</Japanese>
<Polish>Interfejs użytkownika</Polish>
<German>Benutzeroberfläche</German>
</Key>
<Key ID="STR_ACE_UI_ModuleDescription">
<English>This module allows toggling visible user interface parts.</English>
@ -26,6 +28,7 @@
<Russian>Этот модуль позволяет переключать видимость элементов пользовательского интерфейса.</Russian>
<Japanese>モジュールではユーザ インタフェイスの一部をトグル表示できます。</Japanese>
<Polish>Moduł ten pozwala zmienić stan widoczności poszczególnych elementów UI.</Polish>
<German>Dieses Modul erlaubt es, Teile der Benutzeroberfläche (UI) an- oder auszuschalten.</German>
</Key>
<Key ID="STR_ACE_UI_AllowSelectiveUI">
<English>Allow Selective UI</English>
@ -35,6 +38,7 @@
<Russian>Включить настраиваемый интерфейс</Russian>
<Japanese>選択できるユーザ インタフェイスを有効化します</Japanese>
<Polish>Zezwól na selektywne UI</Polish>
<German>Erlaube selektives UI</German>
</Key>
<Key ID="STR_ACE_UI_AllowSelectiveUI_Description">
<English>Allow client to modify their UI.</English>
@ -44,6 +48,7 @@
<Russian>Позволить клиентам изменять их пользовательский интерфейс.</Russian>
<Japanese>クライアントがユーザ インタフェイスを編集できるようにします。</Japanese>
<Polish>Zezwól klientowi na modyfikację UI.</Polish>
<German>Erlaube Clients, ihr UI zu modifizieren.</German>
</Key>
<Key ID="STR_ACE_UI_SoldierVehicleWeaponInfo">
<English>Soldier/Vehicle/Weapon Information</English>
@ -53,6 +58,7 @@
<Russian>Информация о Солдате/Технике/Оружии</Russian>
<Japanese>兵士/車両/武器の情報</Japanese>
<Polish>Informacje o żołnierzu/pojeździe/broni</Polish>
<German>Soldat/Fahrzeug/Waffe Information</German>
</Key>
<Key ID="STR_ACE_UI_VehicleRadar">
<English>Vehicle Radar</English>
@ -62,6 +68,7 @@
<Russian>Радар в технике</Russian>
<Japanese>車両のレーダ</Japanese>
<Polish>Radar w pojeździe</Polish>
<German>Fahrzeugradar</German>
</Key>
<Key ID="STR_ACE_UI_VehicleCompass">
<English>Vehicle Compass</English>
@ -71,6 +78,7 @@
<Russian>Компас в технике</Russian>
<Japanese>車両のレーダ</Japanese>
<Polish>Kompas w pojeździe</Polish>
<German>Fahrzeugkompass</German>
</Key>
<Key ID="STR_ACE_UI_CommandMenu">
<English>Command Menu</English>
@ -80,6 +88,7 @@
<Russian>Командное меню</Russian>
<Japanese>指揮メニュー</Japanese>
<Polish>Menu dowodzenia</Polish>
<German>Kommandomenü</German>
</Key>
<Key ID="STR_ACE_UI_GroupBar">
<English>Group Bar</English>
@ -89,6 +98,7 @@
<Russian>Панель командира</Russian>
<Japanese>指揮メニュー</Japanese>
<Polish>Pasek grupy</Polish>
<German>Gruppenleiste</German>
</Key>
<Key ID="STR_ACE_UI_WeaponName">
<English>Weapon Name</English>
@ -98,6 +108,7 @@
<Russian>Название оружия</Russian>
<Japanese>武器名</Japanese>
<Polish>Nazwa broni</Polish>
<German>Waffenname</German>
</Key>
<Key ID="STR_ACE_UI_WeaponNameBackground">
<English>Weapon Name Background</English>
@ -107,6 +118,7 @@
<Russian>Фон названия оружия</Russian>
<Japanese>武器名の背景表示</Japanese>
<Polish>Tło nazwy broni</Polish>
<German>Waffenname Hintergrund</German>
</Key>
<Key ID="STR_ACE_UI_FiringMode">
<English>Firing Mode</English>
@ -116,6 +128,7 @@
<Russian>Режим стрельбы</Russian>
<Japanese>射撃モード</Japanese>
<Polish>Tryb ognia</Polish>
<German>Feuermodus</German>
</Key>
<Key ID="STR_ACE_UI_AmmoType">
<English>Ammo Type</English>
@ -125,6 +138,7 @@
<Russian>Тип боеприпасов</Russian>
<Japanese>弾種</Japanese>
<Polish>Typ amunicji</Polish>
<German>Munitionstyp</German>
</Key>
<Key ID="STR_ACE_UI_AmmoCount">
<English>Ammo Count</English>
@ -134,6 +148,7 @@
<Russian>Количество боеприпасов</Russian>
<Japanese>弾薬数</Japanese>
<Polish>Ilość amunicji</Polish>
<German>Munitionsanzahl</German>
</Key>
<Key ID="STR_ACE_UI_MagCount">
<English>Magazine Count</English>
@ -143,6 +158,7 @@
<Russian>Количество магазинов</Russian>
<Japanese>弾倉装填数</Japanese>
<Polish>Ilość magazynków</Polish>
<German>Magazinanzahl</German>
</Key>
<Key ID="STR_ACE_UI_ThrowableName">
<English>Throwable Type</English>
@ -152,6 +168,7 @@
<Russian>Тип гранаты</Russian>
<Japanese>投げる種類</Japanese>
<Polish>Typ granatu</Polish>
<German>Wurfobjekt-Typ</German>
</Key>
<Key ID="STR_ACE_UI_ThrowableCount">
<English>Throwable Count</English>
@ -161,6 +178,7 @@
<Russian>Количество гранат</Russian>
<Japanese>投げられる数</Japanese>
<Polish>Ilość granatów</Polish>
<German>Wurfobjekt-Anzahl</German>
</Key>
<Key ID="STR_ACE_UI_Zeroing">
<English>Zeroing</English>
@ -170,6 +188,7 @@
<Russian>Дальность стрельбы</Russian>
<Japanese>ゼロイン</Japanese>
<Polish>Wyzerowanie broni</Polish>
<German>Nullung</German>
</Key>
<Key ID="STR_ACE_UI_WeaponLowerInfoBackground">
<English>Weapon Lower Info Background</English>
@ -178,6 +197,7 @@
<Russian>Фон ниформации об оружии снизу</Russian>
<Japanese>武器名の背景表示 (下側)</Japanese>
<Polish>Tło dolnej części informacji o broni</Polish>
<German>Hintergrund der unteren Waffen-Info-Leiste</German>
</Key>
<Key ID="STR_ACE_UI_Stance">
<English>Stance</English>
@ -187,6 +207,7 @@
<Russian>Стойка</Russian>
<Japanese>姿勢</Japanese>
<Polish>Postura</Polish>
<German>Haltung</German>
</Key>
<Key ID="STR_ACE_UI_StaminaBar">
<English>Stamina Bar</English>
@ -196,6 +217,7 @@
<Russian>Полоса выносливости</Russian>
<Japanese>体力バー</Japanese>
<Polish>Pasek staminy</Polish>
<German>Ausdaueranzeige</German>
</Key>
<Key ID="STR_ACE_UI_GunnerWeaponName">
<English>Gunner Weapon Name</English>
@ -204,6 +226,7 @@
<Russian>Название орудия наводчика</Russian>
<Japanese>射手用の武器名</Japanese>
<Polish>Nazwa broni strzelca</Polish>
<German>Richtschütze Waffenname</German>
</Key>
<Key ID="STR_ACE_UI_GunnerWeaponNameBackground">
<English>Gunner Weapon Name Background</English>
@ -212,6 +235,7 @@
<Russian>Фон названия орудия наводчика</Russian>
<Japanese>射手用の武器名の背景表示</Japanese>
<Polish>Tło nazwy broni strzelca</Polish>
<German>Richtschütze Waffenname Hintergrund</German>
</Key>
<Key ID="STR_ACE_UI_GunnerFiringMode">
<English>Gunner Firing Mode</English>
@ -220,6 +244,7 @@
<Russian>Режим стрельбы наводчика</Russian>
<Japanese>射手用の発射モード</Japanese>
<Polish>Tryb ognia strzelca</Polish>
<German>Richtschütze Feuermodus</German>
</Key>
<Key ID="STR_ACE_UI_GunnerAmmoType">
<English>Gunner Ammo Type</English>
@ -228,6 +253,7 @@
<Russian>Тип боеприпасов наводчика</Russian>
<Japanese>射手用の弾種</Japanese>
<Polish>Typ amunicji strzelca</Polish>
<German>Richtschütze Munitionstyp</German>
</Key>
<Key ID="STR_ACE_UI_GunnerAmmoCount">
<English>Gunner Ammo Count</English>
@ -236,6 +262,7 @@
<Russian>Количество боеприпасов наводчика</Russian>
<Japanese>射手用の弾数</Japanese>
<Polish>Ilość amunicji strzelca</Polish>
<German>Richtschütze Munitionsanzahl</German>
</Key>
<Key ID="STR_ACE_UI_GunnerMagCount">
<English>Gunner Magazine Count</English>
@ -244,6 +271,7 @@
<Russian>Количество магазинов наводчика</Russian>
<Japanese>射手用の弾倉数</Japanese>
<Polish>Ilość magazynków strzelca</Polish>
<German>Richtschütze Magazinanzahl</German>
</Key>
<Key ID="STR_ACE_UI_GunnerLaunchableName">
<English>Gunner Launchable Type</English>
@ -252,6 +280,7 @@
<Russian>Тип пусковой установки наводчика</Russian>
<Japanese>射手用のランチャーの種類</Japanese>
<Polish>Typ rakiet strzelca</Polish>
<German>Richtschütze Raketentyp</German>
</Key>
<Key ID="STR_ACE_UI_GunnerLaunchableCount">
<English>Gunner Launchable Count</English>
@ -260,6 +289,7 @@
<Russian>Количество снарядов пусковой установки наводчика</Russian>
<Japanese>射手用のランチャー弾薬数</Japanese>
<Polish>Ilość rakiet strzelca</Polish>
<German>Richtschütze Raketenanzahl</German>
</Key>
<Key ID="STR_ACE_UI_GunnerZeroing">
<English>Gunner Zeroing</English>
@ -268,6 +298,7 @@
<Russian>Дальность стрельбы наводчика</Russian>
<Japanese>射手用ゼロイン</Japanese>
<Polish>Wyzerowanie broni strzelca</Polish>
<German>Richtschütze Nullung</German>
</Key>
<Key ID="STR_ACE_UI_GunnerWeaponLowerInfoBackground">
<English>Gunner Weapon Lower Info Background</English>
@ -276,6 +307,7 @@
<Russian>Фон ниформации об орудии наводчика снизу</Russian>
<Japanese>射手用の武器名の背景表示 (下側)</Japanese>
<Polish>Tło dolnej części informacji o broni strzelca</Polish>
<German>Hintergrund der unteren Waffen-Info-Leiste (Richtschütze)</German>
</Key>
<Key ID="STR_ACE_UI_VehicleName">
<English>Vehicle Name</English>
@ -285,6 +317,7 @@
<Russian>Название техники</Russian>
<Japanese>車両名</Japanese>
<Polish>Nazwa pojazdu</Polish>
<German>Fahrzeugname</German>
</Key>
<Key ID="STR_ACE_UI_VehicleNameBackground">
<English>Vehicle Name Background</English>
@ -294,6 +327,7 @@
<Russian>Фон названия техники</Russian>
<Japanese>車両名の背景</Japanese>
<Polish>Tło nazwy pojazdu</Polish>
<German>Fahrzeugname Hintergrund</German>
</Key>
<Key ID="STR_ACE_UI_VehicleFuelBar">
<English>Vehicle Fuel Bar</English>
@ -303,6 +337,7 @@
<Russian>Полоса топлива</Russian>
<Japanese>車両の給油計</Japanese>
<Polish>Pasek paliwa</Polish>
<German>Fahrzeug-Treibstoffleiste</German>
</Key>
<Key ID="STR_ACE_UI_VehicleSpeed">
<English>Vehicle Speed</English>
@ -312,6 +347,7 @@
<Russian>Скорость техники</Russian>
<Japanese>車両の速度計</Japanese>
<Polish>Prędkościomierz</Polish>
<German>Fahrzeuggeschwindigkeit</German>
</Key>
<Key ID="STR_ACE_UI_VehicleAltitude">
<English>Vehicle Altitude</English>
@ -321,6 +357,7 @@
<Russian>Высота полета</Russian>
<Japanese>車両の高度計</Japanese>
<Polish>Wysokościomierz radarowy</Polish>
<German>Fahrzeughöhe</German>
</Key>
<Key ID="STR_ACE_UI_VehicleDamage">
<English>Vehicle Damage</English>
@ -330,6 +367,7 @@
<Russian>Повреждение техники</Russian>
<Japanese>車両の損傷表示</Japanese>
<Polish>Uszkodzenia pojazdu</Polish>
<German>Fahrzeugschaden</German>
</Key>
<Key ID="STR_ACE_UI_VehicleInfoBackground">
<English>Vehicle Info Background</English>
@ -339,6 +377,7 @@
<Russian>Фон информации о технике</Russian>
<Japanese>車両状態の背景</Japanese>
<Polish>Tło informacji o pojeździe</Polish>
<German>Fahrzeug Info Hintergrund</German>
</Key>
<Key ID="STR_ACE_UI_RequiresSoldierVehicleWeaponInfo">
<English>Requires Soldier/Vehicle/Weapon Information.</English>
@ -348,6 +387,7 @@
<Russian>Требуется Информация о Солдате/Технике/Оружии.</Russian>
<Japanese>兵士/車両/武器の情報を必要とします。</Japanese>
<Polish>Wymaga informacji o żołnierzu/pojeździe/broni.</Polish>
<German>Benötigt Soldat/Fahrzeug/Waffe Information.</German>
</Key>
<Key ID="STR_ACE_UI_Disallowed">
<English>Modifying User Interface is disabled.</English>
@ -357,6 +397,7 @@
<Russian>Изменение пользовательского интерфейса запрещено.</Russian>
<Japanese>変更されたユーザ インタフェイスを無効化します。</Japanese>
<Polish>Modyfikacja interfejsu użytkownika jest wyłączona.</Polish>
<German>Die Modifizierung des UI ist deaktiviert.</German>
</Key>
<Key ID="STR_ACE_UI_Disabled">
<English>Cannot modify a forced User Interface element.</English>
@ -365,6 +406,7 @@
<Russian>Невозможно изменить зафиксированный элемент пользовательского интерфейса.</Russian>
<Japanese>ユーザー インタフェイス要素は変更できません。</Japanese>
<Polish>Nie można modyfikować wymuszonego elementu interfejsu użytkownika.</Polish>
<German>Gesperrte UI-Elemente können nicht modifiziert werden.</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -203,6 +203,7 @@
<Czech>Bránit oblast</Czech>
<Japanese>防衛範囲</Japanese>
<Polish>Osłaniaj obszar</Polish>
<German>Verteidige Gebiet</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_DisplayName">
<English>Global AI Skill</English>
@ -211,6 +212,7 @@
<Czech>Globální zkušenosti AI</Czech>
<Japanese>総合的な AI スキル</Japanese>
<Polish>Globalne umiejętności AI</Polish>
<German>Globale KI-Fähigkeit</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_general">
<English>General Skill</English>
@ -219,6 +221,7 @@
<Czech>Primární zkušenosti</Czech>
<Japanese>総合スキル</Japanese>
<Polish>Ogólne umiejętności</Polish>
<German>Allgemeine Fähigkeit</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_general_desc">
<English>Changes: general, commanding, courage</English>
@ -227,6 +230,7 @@
<Czech>Upravuje: general, commanding, courage</Czech>
<Japanese>変更general, commanding, courage</Japanese>
<Polish>Zmienia: ogólne, dowodzenie, odwaga</Polish>
<German>Ändert: general, commanding, courage</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_accuracy">
<English>Accuracy</English>
@ -235,6 +239,7 @@
<Czech>Přesnost</Czech>
<Japanese>精度</Japanese>
<Polish>Precyzja</Polish>
<German>Genauigkeit</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_accuracy_desc">
<English>Changes: aimingAccuracy</English>
@ -243,6 +248,7 @@
<Czech>Upravuje: aimingAccuracy</Czech>
<Japanese>変更aimingAccuracy</Japanese>
<Polish>Zmienia: precyzję celowania</Polish>
<German>Ändert: aimingAccuracy</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_handling">
<English>Weapon Handling</English>
@ -251,6 +257,7 @@
<Czech>Zacházení se zbraní</Czech>
<Japanese>武器の扱い</Japanese>
<Polish>Obsługa broni</Polish>
<German>Waffenhandhabung</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_handling_desc">
<English>Changes: aimingShake, aimingSpeed, reloadSpeed</English>
@ -259,6 +266,7 @@
<Czech>Upravuje: aimingShake, aimingSpeed, reloadSpeed</Czech>
<Japanese>変更aimingShake, aimingSpeed, reloadSpeed</Japanese>
<Polish>Zmienia: drżenie broni, szybkość celowania, szybkość przeładowania</Polish>
<German>Ändert: aimingShake, aimingSpeed, reloadSpeed</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_spotting">
<English>Spotting</English>
@ -267,6 +275,7 @@
<Czech>Vnímavost</Czech>
<Japanese>索敵</Japanese>
<Polish>Rozpoznanie</Polish>
<German>Aufklärung</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_spotting_desc">
<English>Changes: spotDistance, spotTime</English>
@ -275,6 +284,7 @@
<Czech>Upravuje: spotDistance, spotTime</Czech>
<Japanese>変更spotDistance, spotTime</Japanese>
<Polish>Zmienia: zasięg rozpoznawania, czas rozpoznawania</Polish>
<German>Ändert: spotDistance, spotTime</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_cover">
<English>Seek Cover</English>
@ -283,6 +293,7 @@
<Czech>Vyhledávat krytí</Czech>
<Japanese>遮蔽</Japanese>
<Polish>Szukaj osłon</Polish>
<German>Deckungssuche</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_cover_desc">
<English>Should AI seek cover</English>
@ -291,6 +302,7 @@
<Czech>AI se bude snažit vyhledávat krytí</Czech>
<Japanese>AI は遮蔽を取るようになります</Japanese>
<Polish>Czy AI powinno szukać osłon</Polish>
<German>Soll KI nach Deckung suchen</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_combat">
<English>Auto Combat</English>
@ -299,6 +311,7 @@
<Czech>Automatický režim boje</Czech>
<Japanese>自動戦闘</Japanese>
<Polish>Auto walka</Polish>
<German>Automatischer Kampfmodus</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_combat_desc">
<English>Should AI automatically switch to combat mode</English>
@ -307,6 +320,7 @@
<Czech>AI se automaticky přepne do bojového režimu</Czech>
<Japanese>AI は自動的に戦闘状態へ切り替えます</Japanese>
<Polish>Czy AI powinno automatycznie przechodzić w tryb walki</Polish>
<German>Soll KI automatisch in Kampfmodus umschalten</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGroupSide_DisplayName">
<English>Group Side</English>
@ -315,6 +329,7 @@
<Czech>Strana skupiny</Czech>
<Japanese>グループ側</Japanese>
<Polish>Strona grupy</Polish>
<German>Gruppenseite</German>
</Key>
<Key ID="STR_ACE_Zeus_ModulePatrolArea_DisplayName">
<English>Patrol Area</English>
@ -323,6 +338,7 @@
<Czech>Oblast hlídkování</Czech>
<Japanese>哨戒範囲</Japanese>
<Polish>Patrol obszaru</Polish>
<German>Patrouillengebiet</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSurrender_DisplayName">
<English>Toggle Surrender</English>
@ -344,6 +360,7 @@
<Czech>Teleportovat hráče</Czech>
<Japanese>プレイヤーを移動</Japanese>
<Polish>Teleportuj graczy</Polish>
<German>Spieler teleportieren</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_player">
<English>Player</English>
@ -352,6 +369,7 @@
<Czech>Hráč</Czech>
<Japanese>プレイヤー</Japanese>
<Polish>Gracz</Polish>
<German>Spieler</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_player_desc">
<English>Teleport selected player to module position</English>
@ -360,6 +378,7 @@
<Czech>Teleportuje vybraného hráče na pozici modulu</Czech>
<Japanese>選択したプレイヤーをプレイヤーをモジュール位置へ移動します</Japanese>
<Polish>Teleportuje wybranego gracza na pozycję modułu</Polish>
<German>Teleportiert ausgewählten Spieler zur Position des Moduls</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_group">
<English>Teleport Group</English>
@ -368,6 +387,7 @@
<Czech>Teleportovat skupinu</Czech>
<Japanese>グループを移動</Japanese>
<Polish>Teleport grupy</Polish>
<German>Gruppe teleportieren</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_group_desc">
<English>Teleports all units in group</English>
@ -376,6 +396,7 @@
<Czech>Teleportuje všechny jednotky ve skupině</Czech>
<Japanese>グループ内の全ユニットを移動させます</Japanese>
<Polish>Teleportuje wszystkie jednostki w grupie</Polish>
<German>Teleportiert alle Einheiten der Gruppe</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleUnconscious_DisplayName">
<English>Toggle Unconscious</English>
@ -397,6 +418,7 @@
<Czech>Prohledat oblast</Czech>
<Japanese>捜索範囲</Japanese>
<Polish>Przeszukaj teren</Polish>
<German>Durchsuche Gebiet</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSearchNearby_DisplayName">
<English>Search Nearby Building</English>
@ -405,6 +427,7 @@
<Czech>Prohledat nejbližší budovu</Czech>
<Japanese>近くの建物を創作します</Japanese>
<Polish>Przeszukaj najbliższy budynek</Polish>
<German>Durchsuche nahegelegenes Gebäude</German>
</Key>
<Key ID="STR_ACE_Zeus_ModuleSetMedic_DisplayName">
<English>Assign Medic</English>
@ -560,6 +583,7 @@
<Czech>Jednotka musí patřit k příslušné straně</Czech>
<Japanese>ユニットを適切な陣営にします</Japanese>
<Polish>Jednostka musi należeć do odpowiedniej strony</Polish>
<German>Einheit muss einer passenden Seite angehören</German>
</Key>
<Key ID="STR_ACE_Zeus_BuildingTooFar">
<English>Nearest building is too far away</English>
@ -568,6 +592,7 @@
<Czech>Nejbližší budova je příliš daleko</Czech>
<Japanese>近くに建物がありません。</Japanese>
<Polish>Najbliższy budynek jest zbyt daleko</Polish>
<German>Nächstgelegenes Gebäude ist zu weit entfernt</German>
</Key>
<Key ID="STR_ACE_Zeus_NothingSelected">
<English>Place on a unit</English>
@ -626,6 +651,7 @@
<Czech>Náklad:</Czech>
<Japanese>カーゴ:</Japanese>
<Polish>Ładunek:</Polish>
<German>Ladung:</German>
</Key>
<Key ID="STR_ACE_Zeus_AttributePosition">
<English>Task Position</English>
@ -634,6 +660,7 @@
<Czech>Pozice úkolu</Czech>
<Japanese>タスクの位置</Japanese>
<Polish>Pozycja zadania</Polish>
<German>Position der Aufgabe</German>
</Key>
<Key ID="STR_ACE_Zeus_AttributePosition_desc">
<English>Select a position to perform the task at</English>
@ -641,6 +668,7 @@
<Russian>Выбрать местоположение для выполнения задания</Russian>
<Japanese>次の選択位置をタスクとして実行</Japanese>
<Polish>Wybierz pozycję na której wykonać zadanie</Polish>
<German>Wähle eine Position, an der die Aufgabe ausgeführt werden soll</German>
</Key>
<Key ID="STR_ACE_Zeus_AttributeRadius">
<English>Task Radius</English>
@ -648,6 +676,7 @@
<Russian>Радиус задания</Russian>
<Japanese>タスク範囲</Japanese>
<Polish>Obszar zadania</Polish>
<German>Radius der Aufgabe</German>
</Key>
<Key ID="STR_ACE_Zeus_AttributeRadius_desc">
<English>Radius to perform the task within</English>
@ -655,6 +684,7 @@
<Russian>Радиус выполнения задания</Russian>
<Japanese>次の範囲をタスクとして実行</Japanese>
<Polish>Obszar na którym zadanie powinno zostać wykonane</Polish>
<German>Radius, in dem die Aufgabe ausgeführt werden soll</German>
</Key>
<Key ID="STR_ACE_Zeus_AttributeRadiusInvalid">
<English>Invalid radius entered</English>
@ -663,6 +693,7 @@
<Czech>Vložen neplatný parametr</Czech>
<Japanese>無効な半径が入力されました</Japanese>
<Polish>Wpisano nieprawidłowy promień</Polish>
<German>Ungültiger Radius eingegeben</German>
</Key>
</Package>
</Project>
</Project>

View File

@ -2,7 +2,10 @@
# docker build -t ace3mod/jekyll .
#
# Run:
# docker run -p 4000:4000 -it ace3mod/jekyll
# docker run -it -p 4000:4000 -v $(pwd):/usr/src/app ace3mod/jekyll
#
# Run with --incremental flag:
# docker run -it -p 4000:4000 -v $(pwd):/usr/src/app ace3mod/jekyll --incremental
FROM starefossen/github-pages:latest
MAINTAINER bux
@ -11,4 +14,4 @@ COPY . /usr/src/app
VOLUME "/usr/src/app"
CMD ["jekyll", "serve", "--future", "--incremental", "--config", "_config_dev.yml", "-H", "0.0.0.0", "-P", "4000"]
ENTRYPOINT ["jekyll", "serve", "--future", "--config", "_config_dev.yml", "-H", "0.0.0.0", "-P", "4000"]

View File

@ -0,0 +1,60 @@
---
title: ACEREP &#35;00007
description: Status report on ACE3 version 3.8.1
parent: posts
image: /img/news/161104_blood.jpg
author: bux
layout: post
---
Just about two month ago we've released 3.7.0. A version that had most of the bugs fixed even before the official release. For the first time we were actively supplying users interested in helping us with pre release versions of the mod - so called release candidates. Quite a lot of communities tested the several release candidates and provided us with very valuable feedback. Especially on bugs and quirks that are near impossible to test alone.
<!--more-->
A big shoutout to those who helped testing! Thank you.
We've used this approach for 3.8.0 as well and hope that again most of the bugs have been fixed already and that you can enjoy ACE3 without annoying interruptions.
We will keep this approach for the future and invite you to join to test the release candidates. All information will be posted in our public chat to which you're invited too. You can access it here: [http://slackin.ace3mod.com](http://slackin.ace3mod.com){:target="_blank"}
So, why didn't we release any minor releases for 3.7.0 (e.g. 3.7.1)? In short: We didn't feel that it was necessary. During and directly after the release we had already added new and awesome features so that we had to do a major release.
Two new features have made it into 3.8.0 which are "blood splatters" and "ammo box cook off".
Wounded units will now leave more visible trails of blood on the ground which could make for interesting missions like escaping as a wounded soldier who is being tracked down by enemy combatants.
When ammo boxes are destroyed the contained ammunition now will cook off in a multitude of small explosions and the boxes won't just sink into the ground.
<div class="row">
<div class="small-12 columns">
<img src="{{site.baseUrl}}/img/news/161104_blood.jpg" alt="A wounded insurgent in front of a damaged truck."/>
</div>
</div>
With 3.8.0 the map tools will allow you to draw straight lines again. A feature that sadly is missing in vanilla Arma 3.
## The Future things
### Medical rewrite
If you're following ACE3 development on GitHub closely you might already have spotted it: The medical system gets a huge rewrite. That's true, we're completely redoing the medical system. Until now the medical system has been a merge of the AGM and CSE medical systems. The AGM one kind of became what you know as the "basic system" and CSE's respectively the "advanced system". Being two separate systems it was always hard for us to improve one or the other without reworking the other one too. Not an ideal situation. Another issue we will address with this rewrite is the amount of influence a medical condition has on gameplay. An issue we've often heard from different communities as well. There's an [interesting discussion going on GitHub with a lot of different ideas and feature requests](https://github.com/acemod/ACE3/issues/3134){:target="_blank"}. Worth a read.
With the state machine system that has been introduced in CBA we are now able to strictly define various health states of players such as unconsciousness or cardiac arrest and what can happen in those states. This allows us to massively declutter the code which will not only reduce the possibility of bugs, but also enable us to add more features and gameplay elements to the medical system - with no performance loss at all.
We're really looking forward to the result and how you will like it.
### Night Vision Googles Improvements
If you've [watched dslyecxi's recent YouTube videos](https://www.youtube.com/user/Dslyecxi){:target="_blank"} or if you're [following us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} you might already have seen that dslyecxi has put together a mod vastly improving night vision googles and the resulting very limiting view. Check out his video with the explanation why vanilla Arma 3 <abbr title="Night Vision Goggles">NVG</abbr>s are a bad representation of real life NVGs and what he has done to improve that.
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">A look at my take on enhanced nightvision in <a href="https://twitter.com/hashtag/Arma3?src=hash">#Arma3</a>, hopefully coming to <a href="https://twitter.com/ACE3Mod">@ACE3Mod</a> in some form in the future: <a href="https://t.co/bqVTfa8FU5">https://t.co/bqVTfa8FU5</a></p>&mdash; dslyecxi (@Dslyecxi) <a href="https://twitter.com/Dslyecxi/status/791738476450447360">October 27, 2016</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
dslyecxi has donated his mod to ACE3 and we're looking into integrating it for a future release.
## The End Things
The full changelog for ACE3 v3.8.1 can be found here: [https://github.com/acemod/ACE3/releases/v3.8.1](https://github.com/acemod/ACE3/releases/v3.8.1){:target="_blank"}
We are still in need for translations for some languages within the ACE3 project. Please have a look at [this GitHub issue to track the progress and what languages lack translations](https://github.com/acemod/ACE3/issues/367){:target="_blank"}. Any and all help with this is very appreciated.
Make sure to [follow us on twitter](https://twitter.com/intent/follow?screen_name=ace3mod&tw_p=followbutton){:target="_blank"} and to [like our facebook page](https://www.facebook.com/ACE3Mod/){:target="_blank"}.

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

View File

@ -72,21 +72,24 @@ To start the game using this build, you can use the following modline:
## 4.3 Creating a Release Build
To create a complete build of ACE3 that you can use without the source files you will need to:
- Ensure `.hpp` is **NOT** in pboProject's "Exclude From Pbo" list
When the requirements are met:
- Execute `make.py version increment_build <other-increment-args> force check_external release` in the `tools` folder, replacing `<other-increment-args>` with the part of version you want to increment (options described below)
- Execute `make.py version increment_build <other-increment-args> force checkexternal release` in the `tools` folder, replacing `<other-increment-args>` with the part of version you want to increment (options described below)
This will populate the `release` folder with binarized PBOs, compiled extensions, copied extras, bisigns and a bikey. Additionally, an archive file will also be created in the folder. The folder and archive handle like those of any other mod.
Different `make.py` command line options include:
- `version` - update version number in all files and leave them in working directory (leaving this out will still update the version in all files present in the `release` folder, but they will be reverted to not disturb the working directory)
- `increment_build` - increments _build_ version number
- `increment_patch` - increments _patch_ version number (ignored with `increment_minor` or `increment_major`)
- `increment_minor` - increments _minor_ version number and resets _patch_ version number to `0` (ignored with `increment_major`)
- `increment_major` - increments _major_ version number and resets _minor_ and _patch_ version numbers to `0`
- `force` - force rebuild all PBOs, even those already present in the `release` directory (combined with `compile` it will also rebuild all extensions)
- `check_external` - check external references (incompatible only with `<component1> <component2>` and `force <component1> <component2>`)
- `checkexternal` - check external references (incompatible only with `<component1> <component2>` and `force <component1> <component2>`)
- `release` - create release packages/archives
- `<component1> <component2>` - build only specified component(s) (incompatible with `release`)
- `force <component1> <component2>` - force rebuild specified component(s) (incompatible with `release`)

View File

@ -31,13 +31,21 @@ Max. drop difference (cm): 1.25
Max. tof difference (ms): 7.0
Optimal airFriction: 0.00123272
##########################################
Ammo Class: ACE_545x39_Ball_7N6M
Ammo Class: B_545x39_Ball_F
MaxRanges (m): [400, 500]
MuzzleVelocities (m/s): [780, 880, 920]
Max. velocity difference (m/s): 19.71
Max. drop difference (cm): 2.04
MuzzleVelocities (m/s): [735, 892]
Max. velocity difference (m/s): 23.07
Max. drop difference (cm): 3.76
Max. tof difference (ms): 12.0
Optimal airFriction: 0.00116278
##########################################
Ammo Class: B_580x42_Ball_F
MaxRanges (m): [500, 500]
MuzzleVelocities (m/s): [930, 970]
Max. velocity difference (m/s): 24.7
Max. drop difference (cm): 1.51
Max. tof difference (ms): 8.0
Optimal airFriction: 0.00114744
Optimal airFriction: 0.00117956
##########################################
Ammo Class: B_65x39_Caseless
MaxRanges (m): [400, 800, 800]
@ -247,6 +255,14 @@ Max. drop difference (cm): 14.52
Max. tof difference (ms): 29.0
Optimal airFriction: 0.00069611
##########################################
Ammo Class: B_50BW_Ball_F
MaxRanges (m): [300, 400]
MuzzleVelocities (m/s): [510, 596]
Max. velocity difference (m/s): 29.6
Max. drop difference (cm): 2.19
Max. tof difference (ms): 18.0
Optimal airFriction: 0.00202645
##########################################
Ammo Class: B_127x99_Ball
MaxRanges (m): [1300, 1300]
MuzzleVelocities (m/s): [895, 905]
@ -280,12 +296,12 @@ Max. tof difference (ms): 9.0
Optimal airFriction: 0.00049899
##########################################
Ammo Class: B_9x21_Ball
MaxRanges (m): [200, 300, 300]
MuzzleVelocities (m/s): [440, 460, 480]
Max. velocity difference (m/s): 37.94
Max. drop difference (cm): 5.27
MaxRanges (m): [200, 300]
MuzzleVelocities (m/s): [380, 420]
Max. velocity difference (m/s): 34.77
Max. drop difference (cm): 4.7
Max. tof difference (ms): 31.0
Optimal airFriction: 0.00226847
Optimal airFriction: 0.00208292
##########################################
Ammo Class: ACE_9x18_Ball_57N181S
MaxRanges (m): [100, 200, 200]
@ -298,10 +314,10 @@ Optimal airFriction: 0.00190333
Ammo Class: ACE_9x19_Ball
MaxRanges (m): [100, 200, 200]
MuzzleVelocities (m/s): [340, 370, 400]
Max. velocity difference (m/s): 17.59
Max. drop difference (cm): 6.56
Max. tof difference (ms): 10.0
Optimal airFriction: 0.0018577
Max. velocity difference (m/s): 23.95
Max. drop difference (cm): 3.75
Max. tof difference (ms): 17.0
Optimal airFriction: 0.0019835
##########################################
Ammo Class: ACE_10x25_Ball
MaxRanges (m): [200, 300, 300]

View File

@ -142,7 +142,7 @@ Author:
#define LOG_SYS(LEVEL,MESSAGE) LOG_SYS_FORMAT(LEVEL,MESSAGE) call CBA_fnc_log
#endif
#define LOG_SYS_FILELINENUMBERS(LEVEL,MESSAGE) LOG_SYS(LEVEL,format [ARR_4('%1 File: %2 Line: %3',MESSAGE,__FILE__,__LINE__ + 1)])
#define LOG_SYS_FILELINENUMBERS(LEVEL,MESSAGE) LOG_SYS(LEVEL,format [ARR_4('%1 %2:%3',MESSAGE,__FILE__,__LINE__ + 1)])
/* -------------------------------------------
Macro: LOG()
@ -270,7 +270,7 @@ Example:
Author:
Spooner
------------------------------------------- */
#define ERROR(MESSAGE) ['PREFIX', 'COMPONENT', MESSAGE, nil, __FILE__, __LINE__ + 1] call CBA_fnc_error
#define ERROR(MESSAGE) LOG_SYS_FILELINENUMBERS('ERROR',MESSAGE)
#define ERROR_1(MESSAGE,ARG1) ERROR(FORMAT_1(MESSAGE,ARG1))
#define ERROR_2(MESSAGE,ARG1,ARG2) ERROR(FORMAT_2(MESSAGE,ARG1,ARG2))
#define ERROR_3(MESSAGE,ARG1,ARG2,ARG3) ERROR(FORMAT_3(MESSAGE,ARG1,ARG2,ARG3))
@ -280,6 +280,33 @@ Author:
#define ERROR_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR(FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7))
#define ERROR_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR(FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8))
/* -------------------------------------------
Macro: ERROR_MSG()
Record a critical error in the RPT log and display on screen error message.
Newlines (\n) in the MESSAGE will be put on separate lines.
Parameters:
MESSAGE - Message to record <STRING>
Example:
(begin example)
ERROR_MSG("value of frog not found in config ...yada...yada...");
(end)
Author:
commy2
------------------------------------------- */
#define ERROR_MSG(MESSAGE) ['PREFIX', 'COMPONENT', nil, MESSAGE, __FILE__, __LINE__ + 1] call CBA_fnc_error
#define ERROR_MSG_1(MESSAGE,ARG1) ERROR_MSG(FORMAT_1(MESSAGE,ARG1))
#define ERROR_MSG_2(MESSAGE,ARG1,ARG2) ERROR_MSG(FORMAT_2(MESSAGE,ARG1,ARG2))
#define ERROR_MSG_3(MESSAGE,ARG1,ARG2,ARG3) ERROR_MSG(FORMAT_3(MESSAGE,ARG1,ARG2,ARG3))
#define ERROR_MSG_4(MESSAGE,ARG1,ARG2,ARG3,ARG4) ERROR_MSG(FORMAT_4(MESSAGE,ARG1,ARG2,ARG3,ARG4))
#define ERROR_MSG_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5) ERROR_MSG(FORMAT_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5))
#define ERROR_MSG_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) ERROR_MSG(FORMAT_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6))
#define ERROR_MSG_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR_MSG(FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7))
#define ERROR_MSG_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR_MSG(FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8))
/* -------------------------------------------
Macro: ERROR_WITH_TITLE()
Record a critical error in the RPT log.
@ -287,8 +314,6 @@ Macro: ERROR_WITH_TITLE()
The title can be specified (in <ERROR()> the heading is always just "ERROR")
Newlines (\n) in the MESSAGE will be put on separate lines.
TODO: Popup an error dialog & throw an exception.
Parameters:
TITLE - Title of error message <STRING>
MESSAGE - Body of error message <STRING>
@ -302,6 +327,14 @@ Author:
Spooner
------------------------------------------- */
#define ERROR_WITH_TITLE(TITLE,MESSAGE) ['PREFIX', 'COMPONENT', TITLE, MESSAGE, __FILE__, __LINE__ + 1] call CBA_fnc_error
#define ERROR_WITH_TITLE_1(TITLE,MESSAGE,ARG1) ERROR_WITH_TITLE(TITLE,FORMAT_1(MESSAGE,ARG1))
#define ERROR_WITH_TITLE_2(TITLE,MESSAGE,ARG1,ARG2) ERROR_WITH_TITLE(TITLE,FORMAT_2(MESSAGE,ARG1,ARG2))
#define ERROR_WITH_TITLE_3(TITLE,MESSAGE,ARG1,ARG2,ARG3) ERROR_WITH_TITLE(TITLE,FORMAT_3(MESSAGE,ARG1,ARG2,ARG3))
#define ERROR_WITH_TITLE_4(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4) ERROR_WITH_TITLE(TITLE,FORMAT_4(MESSAGE,ARG1,ARG2,ARG3,ARG4))
#define ERROR_WITH_TITLE_5(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5) ERROR_WITH_TITLE(TITLE,FORMAT_5(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5))
#define ERROR_WITH_TITLE_6(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6) ERROR_WITH_TITLE(TITLE,FORMAT_6(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6))
#define ERROR_WITH_TITLE_7(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7) ERROR_WITH_TITLE(TITLE,FORMAT_7(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7))
#define ERROR_WITH_TITLE_8(TITLE,MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8) ERROR_WITH_TITLE(TITLE,FORMAT_8(MESSAGE,ARG1,ARG2,ARG3,ARG4,ARG5,ARG6,ARG7,ARG8))
/* -------------------------------------------
Macro: MESSAGE_WITH_TITLE()