Merge branch 'master' into medical-rewrite

This commit is contained in:
PabstMirror 2017-04-15 10:09:50 -05:00
commit d93269304d
64 changed files with 675 additions and 499 deletions

View File

@ -32,6 +32,9 @@ if !(_unit getVariable [QGVAR(primed), false]) then {
_unit setVariable [QGVAR(lastThrownTime), CBA_missionTime];
// Fix floating for throwables without proper physics (eg. IR Grenade)
_activeThrowable setVelocity [0, 0, -0.1];
// Set thrower
[QEGVAR(common,setShotParents), [_activeThrowable, _unit, (getShotParents _activeThrowable) select 1]] call CBA_fnc_serverEvent;
};
// Restore muzzle ammo (setAmmo 1 has no impact if no appliccable throwable in inventory)

View File

@ -54,6 +54,9 @@ deleteVehicle _activeThrowableOld;
_activeThrowable // projectile
]] call CBA_fnc_globalEvent;
// Set prime instigator
[QEGVAR(common,setShotParents), [_activeThrowable, _unit, _unit]] call CBA_fnc_serverEvent;
if (_showHint) then {
// Show primed hint
private _displayNameShort = getText (configFile >> "CfgMagazines" >> _throwableMag >> "displayNameShort");

View File

@ -4,7 +4,7 @@
<!-- 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>
<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>
@ -18,7 +18,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_NameShort">
<English>6.5mm Lapua</English>
<French>6.5mm Lapua</French>
<French>6,5mm Lapua</French>
<Spanish>6.5mm Lapua</Spanish>
<Polish>6,5mm Lapua</Polish>
<Russian>6,5 мм Lapua</Russian>
@ -32,7 +32,7 @@
</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>
<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>
@ -51,7 +51,7 @@
<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>
<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>
@ -60,7 +60,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_NameShort">
<English>6.5mm CM</English>
<French>6.5mm CM</French>
<French>6,5mm CM</French>
<Spanish>6.5mm CM</Spanish>
<Polish>6,5mm CM</Polish>
<Russian>6,5 мм CM</Russian>
@ -76,7 +76,7 @@
<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>
<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>
@ -642,7 +642,7 @@
<English>9.3mm 10Rnd Tracer Mag</English>
<German>9,3mm 10-Patronen-Magazin Leuchtspur</German>
<Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
<French>Ch. 9.3mm 10Cps Traçante</French>
<French>Ch. 9,3mm 10Cps Traçante</French>
<Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
<Russian>Магазин из 10-ти 9,3 мм трассирующих</Russian>
<Italian>9.3mm 10Rnd Tracer Mag</Italian>
@ -657,7 +657,7 @@
<German>9,3mm Leuchtspur</German>
<Polish>9,3mm Smugacz</Polish>
<Czech>9.3mm Svítící</Czech>
<French>9.3mm Traçante</French>
<French>9,3mm Traçante</French>
<Spanish>9.3mm Trazadora</Spanish>
<Russian>9,3 мм трассирующие</Russian>
<Italian>9.3mm Tracer</Italian>
@ -670,7 +670,7 @@
<English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Leuchtspur&lt;br /&gt;Patronen: 10&lt;br /&gt;Eingesetzt von: Cyrus</German>
<Polish>Kaliber: 9,3x64mm Smugacz&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
<French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé avec: Cyrus</French>
<French>Calibre: 9,3x64mm Traçante&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé avec: Cyrus</French>
<Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
<Russian>Калибр: 9,3x64 мм трассирующие&lt;br /&gt;Патронов: 10&lt;br /&gt;Используются с: Cyrus</Russian>
<Italian>Calibro: 9.3x64mm Tracer&lt;br /&gt;Munizioni: 10&lt;br /&gt;In uso su: Cyrus</Italian>
@ -684,7 +684,7 @@
<English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
<German>9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM</German>
<Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
<French>Ch. 9.3mm 10Cps Traçante IR-DIM</French>
<French>Ch. 9,3mm 10Cps Traçante IR-DIM</French>
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
<Russian>Магазин из 10-ти 9,3 мм ИК-трассирующих</Russian>
<Italian>9.3mm 10Rnd Tracciante IR-DIM Mag</Italian>
@ -699,7 +699,7 @@
<German>9,3mm IR-DIM</German>
<Polish>9,3mm IR-DIM</Polish>
<Czech>9.3mm IR-DIM</Czech>
<French>9.3mm IR-DIM</French>
<French>9,3mm IR-DIM</French>
<Spanish>9.3mm IR-DIM</Spanish>
<Russian>9,3 мм ИК-трассирующие</Russian>
<Italian>9.3mm IR-DIM</Italian>
@ -712,7 +712,7 @@
<English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM&lt;br /&gt;Patronen: 10&lt;br /&gt;Eingesetzt von: Cyrus</German>
<Polish>Kaliber: 9,3x64mm Smugacz IR-DIM&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
<French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé avec: Cyrus</French>
<French>Calibre: 9,3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé avec: Cyrus</French>
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
<Russian>Калибр: 9,3x64 мм ИК-трассирующие&lt;br /&gt;Патронов: 10&lt;br /&gt;Используются с: Cyrus</Russian>
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM&lt;br /&gt;Munizioni: 10&lt;br /&gt;In uso su: Cyrus</Italian>
@ -727,7 +727,7 @@
<English>9.3mm 150Rnd Tracer Belt</English>
<German>9,3mm 150-Patronen-Gurt Leuchtspur</German>
<Polish>Taśma 9,3mm 150rd Smugacz</Polish>
<French>Bande 9.3mm 150Cps Traçante</French>
<French>Bande 9,3mm 150Cps Traçante</French>
<Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
<Russian>Лента из 150-ти 9,3 мм трассирующих</Russian>
<Italian>9.3mm 150Rnd Tracer Belt</Italian>
@ -742,7 +742,7 @@
<German>9,3mm Leuchtspur</German>
<Polish>9,3mm Smugacz</Polish>
<Czech>9.3mm Svítící</Czech>
<French>9.3mm Traçante</French>
<French>9,3mm Traçante</French>
<Spanish>9.3mm Trazadora</Spanish>
<Russian>9,3 мм трассирующие</Russian>
<Italian>9.3mm Tracciante</Italian>
@ -755,7 +755,7 @@
<English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Leuchtspur&lt;br /&gt;Patronen: 150&lt;br /&gt;Eingesetzt von: Navid</German>
<Polish>Kaliber: 9,3x64mm Smugacz&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
<French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<French>Calibre: 9,3x64mm Traçante&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
<Russian>Калибр: 9,3x64 мм трассирующие&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
<Italian>Calibro: 9.3x64mm Tracciante&lt;br /&gt;Munizioni: 150&lt;br /&gt;In uso su: Navid</Italian>
@ -769,7 +769,7 @@
<English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
<German>9,3mm 150-Patronen-Gurt Leuchtspur IR-DIM</German>
<Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
<French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
<French>Bande 9,3mm 150Cps Traçante IR-DIM</French>
<Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
<Russian>Лента из 150-ти 9,3 мм ИК-трассирующих</Russian>
<Italian>9.3mm 150Rnd Tracciante IR-DIM Belt</Italian>
@ -784,7 +784,7 @@
<German>9,3mm IR-DIM</German>
<Polish>9,3mm IR-DIM</Polish>
<Czech>9.3mm IR-DIM</Czech>
<French>9.3mm IR-DIM</French>
<French>9,3mm IR-DIM</French>
<Spanish>9.3mm IR-DIM</Spanish>
<Russian>9,3 мм ИК-трассирующие</Russian>
<Italian>9.3mm IR-DIM</Italian>
@ -797,7 +797,7 @@
<English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM&lt;br /&gt;Patronen: 150&lt;br /&gt;Eingesetzt von: Navid</German>
<Polish>Kaliber: 9,3x64mm Smugacz IR-DIM&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
<French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<French>Calibre: 9,3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
<Russian>Калибр: 9,3x64 мм ИК-трассирующие&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM&lt;br /&gt;Munizioni: 150&lt;br /&gt;In uso su: Navid</Italian>
@ -811,7 +811,7 @@
<English>9.3mm 150Rnd AP Belt</English>
<German>9,3mm 150-Patronen-Gurt Hartkern</German>
<Polish>Taśma 9,3mm 150rd AP</Polish>
<French>Bande 9.3mm 150Cps AP</French>
<French>Bande 9,3mm 150Cps AP</French>
<Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
<Russian>Лента из 150-ти 9,3 мм бронебойных</Russian>
<Italian>9.3mm 150Rnd AP Belt</Italian>
@ -826,7 +826,7 @@
<German>9,3mm AP</German>
<Polish>9,3mm AP</Polish>
<Czech>9.3mm AP</Czech>
<French>9.3mm AP</French>
<French>9,3mm AP</French>
<Spanish>9.3mm AP</Spanish>
<Russian>9,3 мм бронебойные</Russian>
<Italian>9.3mm AP</Italian>
@ -839,7 +839,7 @@
<English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
<German>Kaliber: 9,3x64mm Hartkern&lt;br /&gt;Patronen: 150&lt;br /&gt;Eingesetzt von: Navid</German>
<Polish>Kaliber: 9,3x64mm AP&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
<French>Calibre: 9.3x64mm AP&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<French>Calibre: 9,3x64mm AP&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé avec: Navid</French>
<Spanish>Calibre: 9.3x64mm AP&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
<Russian>Калибр: 9,3x64 мм бронебойные&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
<Italian>Calibro: 9.3x64mm AP&lt;br /&gt;Munizioni: 150&lt;br /&gt;In uso su: Navid</Italian>
@ -936,7 +936,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_Name">
<English>7.62x54mm 10Rnd Tracer Mag</English>
<Polish>Magazynek 7,62x54mm 10rd Smugacz</Polish>
<French>Ch. 7.62x54mm 10Rnd Traçante</French>
<French>Ch. 7,62x54mm 10Cps Traçante</French>
<Spanish>Cargador de 10 balas trazadoras de 7.62x54mm</Spanish>
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
<German>7,62x54mm 10-Patronen-Magazin Leuchtspur</German>
@ -950,7 +950,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_NameShort">
<English>7.62mm</English>
<Polish>7,62mm</Polish>
<French>7.62mm</French>
<French>7,62mm</French>
<Spanish>7.62mm</Spanish>
<Russian>7,62 мм</Russian>
<German>7,62mm</German>
@ -964,7 +964,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_Description">
<English>7.62x54mm 10Rnd Tracer Mag</English>
<Polish>Magazynek 7,62x54mm 10rd Smugacz</Polish>
<French>Ch. 7.62x54mm 10Cps Traçante</French>
<French>Ch. 7,62x54mm 10Cps Traçante</French>
<Spanish>Cargador de 10 balas trazadoras de 7.62x54mm</Spanish>
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
<German>7,62x54mm 10-Patronen-Magazin Leuchtspur</German>
@ -978,7 +978,7 @@
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimName">
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
<French>Ch. 6.5mm 100Rnd Traçante IR-DIM</French>
<French>Ch. 6,5mm 100Cps Traçante IR-DIM</French>
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur</German>
@ -992,7 +992,7 @@
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
<English>6.5mm IR-DIM</English>
<Polish>6,5mm IR-DIM</Polish>
<French>6.5mm IR-DIM</French>
<French>6,5mm IR-DIM</French>
<Spanish>6.5mm IR-DIM</Spanish>
<Russian>6,5 мм ИК-трассирующие</Russian>
<German>6,5mm IR-DIM </German>
@ -1006,7 +1006,7 @@
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
<English>6.5mm 100Rnd Tracer IR-DIM Mag&lt;br /&gt;Rounds: 100&lt;br /&gt;Used in: MX LSW</English>
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
<French>Ch. 6.5mm 100Rnd Traçante IR-DIM&lt;br /&gt;Cartouches: 100&lt;br /&gt;Utilisé avec: MX LSW</French>
<French>Ch. 6,5mm 100Cps Traçante IR-DIM&lt;br /&gt;Cartouches: 100&lt;br /&gt;Utilisé avec: MX LSW</French>
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur&lt;br /&gt;Patronen: 100&lt;br /&gt;Eingesetzt von: MXLSW</German>
@ -1020,7 +1020,7 @@
<Key ID="STR_ACE_Ballistics_200Rnd_65x39_cased_Box_Tracer_DimName">
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
<French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
<French>Bande 6,5mm 200Cps Traçante IR-DIM</French>
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
<German>6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur</German>
@ -1034,7 +1034,7 @@
<Key ID="STR_ACE_Ballistics_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
<English>6.5mm IR-DIM</English>
<Polish>6,5mm IR-DIM</Polish>
<French>6.5mm IR-DIM</French>
<French>6,5mm IR-DIM</French>
<Spanish>6.5mm IR-DIM</Spanish>
<Russian>6,5 мм ИК-трассирующие</Russian>
<German>6,5mm IR-DIM</German>
@ -1062,7 +1062,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_Name">
<English>5.56mm 30Rnd Mag (Mk262)</English>
<Polish>Magazynek 5,56mm 30rd Mk262</Polish>
<French>5.56mm 30Cps (Mk262)</French>
<French>5,56mm 30Cps (Mk262)</French>
<Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
<Russian>Магазин из 30-ти 5.56 мм Mk262</Russian>
<German>5,56mm 30-Patronen-Magazin (Mk262)</German>
@ -1076,7 +1076,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
<English>5.56mm Mk262</English>
<Polish>5,56mm Mk262</Polish>
<French>5.56mm Mk262</French>
<French>5,56mm Mk262</French>
<Spanish>5.56mm Mk262</Spanish>
<Russian>5,56 мм Mk262</Russian>
<German>5,56mm Mk262</German>
@ -1090,7 +1090,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_Description">
<English>Caliber: 5.56x45mm NATO (Mk262)&lt;br /&gt;Rounds: 30</English>
<Polish>Kaliber: 5,56x45mm NATO (Mk262)&lt;br /&gt;Pociski: 30</Polish>
<French>Calibre: 5.56x45mm NATO (Mk262)&lt;br /&gt;Cartouches: 30</French>
<French>Calibre: 5,56x45mm NATO (Mk262)&lt;br /&gt;Cartouches: 30</French>
<Spanish>Calibre: 5.56x45mm NATO (Mk262)&lt;br /&gt;Balas: 30</Spanish>
<Russian>Калибр: 5,56x45 мм NATO (Mk262)&lt;br /&gt;Патронов: 30</Russian>
<German>Kaliber: 5,56x45mm NATO (Mk262)&lt;br /&gt;Patronen: 30</German>
@ -1104,7 +1104,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_Name">
<English>5.56mm 30Rnd Mag (Mk318)</English>
<Polish>Magazynek 5,56mm 30rd (Mk318)</Polish>
<French>Ch. 5.56mm 30Cps (Mk318)</French>
<French>Ch. 5,56mm 30Cps (Mk318)</French>
<Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
<Russian>Магазин из 30-ти 5.56 мм (Mk318)</Russian>
<German>5,56mm 30-Patronen-Magazin (Mk318)</German>
@ -1118,7 +1118,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
<English>5.56mm Mk318</English>
<Polish>5,56mm Mk318</Polish>
<French>5.56mm Mk318</French>
<French>5,56mm Mk318</French>
<Spanish>5.56mm Mk318</Spanish>
<Russian>5.56 мм Mk318</Russian>
<German>5,56mm Mk318</German>
@ -1132,7 +1132,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_Description">
<English>Caliber: 5.56x45mm NATO (Mk318)&lt;br /&gt;Rounds: 30</English>
<Polish>Kaliber: 5,56x45mm NATO (Mk318)&lt;br /&gt;Pociski: 30</Polish>
<French>Calibre: 5.56x45mm NATO (Mk318)&lt;br /&gt;Cartouches: 30</French>
<French>Calibre: 5,56x45mm NATO (Mk318)&lt;br /&gt;Cartouches: 30</French>
<Spanish>Calibre: 5.56x45mm NATO (Mk318)&lt;br /&gt;Balas: 30</Spanish>
<Russian>Калибр: 5,56x45 мм NATO (Mk318)&lt;br /&gt;Патронов: 30</Russian>
<German>Kaliber: 5,56x45mm NATO (Mk318)&lt;br /&gt;Patronen: 30</German>
@ -1146,7 +1146,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_Name">
<English>5.56mm 30Rnd Mag (M995 AP)</English>
<Polish>Magazynek 5,56mm 30rd (M995 AP)</Polish>
<French>Ch. 5.56mm 30Cps (M995 AP)</French>
<French>Ch. 5,56mm 30Cps (M995 AP)</French>
<Spanish>Cargador de 30 balas de 5.56mm (M995 AP)</Spanish>
<Russian>Магазин из 30-ти 5.56 мм (M995 бронебойные)</Russian>
<German>5,56mm 30-Patronen-Magazin (M995AP)</German>
@ -1160,7 +1160,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_NameShort">
<English>5.56mm AP</English>
<Polish>5,56mm AP</Polish>
<French>5.56mm AP</French>
<French>5,56mm AP</French>
<Spanish>5.56mm AP</Spanish>
<Russian>5.56 мм бронебойные</Russian>
<German>5,56mm AP</German>
@ -1174,7 +1174,7 @@
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_Description">
<English>Caliber: 5.56x45mm NATO (M995 AP)&lt;br /&gt;Rounds: 30</English>
<Polish>Kaliber: 5,56x45mm NATO (M995 AP)&lt;br /&gt;Pociski: 30</Polish>
<French>Calibre: 5.56x45mm NATO (M995 AP)&lt;br /&gt;Cartouches: 30</French>
<French>Calibre: 5,56x45mm NATO (M995 AP)&lt;br /&gt;Cartouches: 30</French>
<Spanish>Calibre: 5.56x45mm NATO (M995 AP)&lt;br /&gt;Balas: 30</Spanish>
<Russian>Калибр: 5,56x45 мм NATO (M995 бронебойные)&lt;br /&gt;Патронов: 30</Russian>
<German>Kaliber: 5,56x45mm NATO (M995 AP)&lt;br /&gt;Patronen: 30</German>
@ -1188,7 +1188,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_Name">
<English>7.62mm 10Rnd Mag (M118LR)</English>
<Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
<French>Ch. 7.62mm 10Cps (M118LR)</French>
<French>Ch. 7,62mm 10Cps (M118LR)</French>
<Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
<Russian>Магазин из 10-ти 7,62 мм (M118LR)</Russian>
<German>7,62mm 10-Patronen-Magazin (M118LR)</German>
@ -1202,7 +1202,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_NameShort">
<English>7.62mm M118LR</English>
<Polish>7,62mm M118LR</Polish>
<French>7.62mm M118LR</French>
<French>7,62mm M118LR</French>
<Spanish>7.62mm M118LR</Spanish>
<Russian>7,62 мм M118LR</Russian>
<German>7,62mm M118LR</German>
@ -1216,7 +1216,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_Description">
<English>Caliber: 7.62x51mm NATO (M118LR)&lt;br /&gt;Rounds: 10</English>
<Polish>Kaliber: 7,62x51mm NATO (M118LR)&lt;br /&gt;Pociski: 10</Polish>
<French>Calibre: 7.62x51mm NATO (M118LR)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 7,62x51mm NATO (M118LR)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 7.62x51mm NATO (M118LR)&lt;br /&gt;Balas: 10</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (M118LR)&lt;br /&gt;Патронов: 10</Russian>
<German>Kaliber: 7,62x51mm NATO (M118LR)&lt;br /&gt;Patronen: 10</German>
@ -1230,7 +1230,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M118LR_Mag_Name">
<English>7.62mm 20Rnd Mag (M118LR)</English>
<Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
<French>Ch. 7.62mm 20Cps (M118LR)</French>
<French>Ch. 7,62mm 20Cps (M118LR)</French>
<Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (M118LR)</Russian>
<German>7,62mm 20-Patronen-Magazin (M118LR)</German>
@ -1244,7 +1244,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M118LR_Mag_NameShort">
<English>7.62mm M118LR</English>
<Polish>7,62mm M118LR</Polish>
<French>7.62mm M118LR</French>
<French>7,62mm M118LR</French>
<Spanish>7.62mm M118LR</Spanish>
<Russian>7,62 мм M118LR</Russian>
<German>7,62mm M118LR</German>
@ -1272,7 +1272,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_Name">
<English>7.62mm 10Rnd Mag (Mk316 Mod 0)</English>
<Polish>Magazynek 7,62mm 10rd (Mk316 Mod 0)</Polish>
<French>Ch. 7.62mm 10Cps (Mk316 Mod 0)</French>
<French>Ch. 7,62mm 10Cps (Mk316 Mod 0)</French>
<Spanish>Cargador de 10 balas de 7.62mm (Mk316 Mod 0)</Spanish>
<Russian>Магазин из 10-ти 7,62 мм (Mk316 Mod 0)</Russian>
<German>7,62mm 10-Patronen-Magazin (Mk316 Mod 0)</German>
@ -1286,7 +1286,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
<English>7.62mm Mk316</English>
<Polish>7,62mm Mk316</Polish>
<French>7.62mm Mk316</French>
<French>7,62mm Mk316</French>
<Spanish>7.62mm Mk316</Spanish>
<Russian>7,62 мм Mk316</Russian>
<German>7,62mm Mk316</German>
@ -1300,7 +1300,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_Description">
<English>Caliber: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Rounds: 10</English>
<Polish>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Pociski: 10</Polish>
<French>Calibre: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Balas: 10</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)&lt;br /&gt;Патронов: 10</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Patronen: 10</German>
@ -1314,7 +1314,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_Name">
<English>7.62mm 20Rnd Mag (Mk316 Mod 0)</English>
<Polish>Magazynek 7,62mm 20rd (Mk316 Mod 0)</Polish>
<French>Ch. 7.62mm 20Cps (Mk316 Mod 0)</French>
<French>Ch. 7,62mm 20Cps (Mk316 Mod 0)</French>
<Spanish>Cargador de 20 balas de 7.62mm (Mk316 Mod 0)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (Mk316 Mod 0)</Russian>
<German>7,62mm 20-Patronen-Magazin (Mk316 Mod 0)</German>
@ -1328,7 +1328,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
<English>7.62mm Mk316</English>
<Polish>7,62mm Mk316</Polish>
<French>7.62mm Mk316</French>
<French>7,62mm Mk316</French>
<Spanish>7.62mm Mk316</Spanish>
<Russian>7,62 мм Mk316</Russian>
<German>7,62mm Mk316</German>
@ -1342,7 +1342,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_Description">
<English>Caliber: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 7.62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)&lt;br /&gt;Patronen: 20</German>
@ -1356,7 +1356,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
<English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
<Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
<French>Ch. 7.62mm 10Cps (Mk319 Mod 0)</French>
<French>Ch. 7,62mm 10Cps (Mk319 Mod 0)</French>
<Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
<Russian>Магазин из 10-ти 7,62 мм (Mk319 Mod 0)</Russian>
<German>7,62mm 10-Patronen-Magazin (Mk319 Mod 0)</German>
@ -1370,7 +1370,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
<English>7.62mm Mk319</English>
<Polish>7,62mm Mk319</Polish>
<French>7.62mm Mk319</French>
<French>7,62mm Mk319</French>
<Spanish>7.62mm Mk319</Spanish>
<Russian>7,62 мм Mk319</Russian>
<German>7,62mm Mk319</German>
@ -1384,7 +1384,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
<English>Caliber: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 10</English>
<Polish>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 10</Polish>
<French>Calibre: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 10</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)&lt;br /&gt;Патронов: 10</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Patronen: 10</German>
@ -1398,7 +1398,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
<English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
<Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
<French>Ch. 7.62mm 20Cps (Mk319 Mod 0)</French>
<French>Ch. 7,62mm 20Cps (Mk319 Mod 0)</French>
<Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (Mk319 Mod 0)</Russian>
<German>7,62mm 20-Patronen-Magazin (Mk319 Mod 0)</German>
@ -1412,7 +1412,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
<English>7.62mm Mk319</English>
<Polish>7,62mm Mk319</Polish>
<French>7.62mm Mk319</French>
<French>7,62mm Mk319</French>
<Spanish>7.62mm Mk319</Spanish>
<Russian>7,62 мм Mk319</Russian>
<German>7,62mm Mk319</German>
@ -1426,7 +1426,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
<English>Caliber: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 7.62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)&lt;br /&gt;Patronen: 20</German>
@ -1440,7 +1440,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_Name">
<English>7.62mm 10Rnd Mag (M993 AP)</English>
<Polish>Magazynek 7,62mm 10rd (M993 AP)</Polish>
<French>Ch. 7.62mm 10Cps (M993 AP)</French>
<French>Ch. 7,62mm 10Cps (M993 AP)</French>
<Spanish>Cargador de 10 balas de 7.62mm (M993 AP)</Spanish>
<Russian>Магазин из 10-ти 7,62 мм (M993 бронебойные)</Russian>
<German>7,62mm 10-Patronen-Magazin (M993 AP)</German>
@ -1454,7 +1454,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_NameShort">
<English>7.62mm AP</English>
<Polish>7,62mm AP</Polish>
<French>7.62mm AP</French>
<French>7,62mm AP</French>
<Spanish>7.62mm AP</Spanish>
<Russian>7,62mm бронебойные</Russian>
<German>7,62mm AP</German>
@ -1468,7 +1468,7 @@
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_Description">
<English>Caliber: 7.62x51mm NATO (M993 AP)&lt;br /&gt;Rounds: 10</English>
<Polish>Kaliber: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Pociski: 10</Polish>
<French>Calibre: 7.62x51mm NATO (M993 AP)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 7.62x51mm NATO (M993 AP)&lt;br /&gt;Balas: 10</Spanish>
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)&lt;br /&gt;Патронов: 10</Russian>
<German>Kaliber: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Patronen: 10</German>
@ -1482,7 +1482,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_Name">
<English>7.62mm 20Rnd Mag (M993 AP)</English>
<Polish>Magazynek 7,62mm 20rd (M993 AP)</Polish>
<French>Ch. 7.62mm 20Cps (M993 AP)</French>
<French>Ch. 7,62mm 20Cps (M993 AP)</French>
<Spanish>Cargador de 20 balas de 7.62mm (M993 AP)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (M993 бронебойные)</Russian>
<German>7,62mm 20-Patronen-Magazin (M993 AP)</German>
@ -1496,7 +1496,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_NameShort">
<English>7.62mm AP</English>
<Polish>7,62mm AP</Polish>
<French>7.62mm AP</French>
<French>7,62mm AP</French>
<Spanish>7.62mm AP</Spanish>
<Russian>7,62 мм бронебойные</Russian>
<German>7,62mm AP</German>
@ -1510,7 +1510,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_Description">
<English>Caliber: 7.62x51mm NATO (M993 AP)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x51mm NATO (M993 AP)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Cartouches: 20</French>
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x51mm NATO (M993 AP)&lt;br /&gt;Patronen: 20</German>
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)&lt;br /&gt;Munizioni: 20</Italian>
@ -1524,7 +1524,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
<English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
<French>Ch. 7.62mm 20Cps (Mk248 Mod 0)</French>
<French>Ch. 7,62mm 20Cps (Mk248 Mod 0)</French>
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 0)</Russian>
<German>7,62mm 20-Patronen-Magazin (Mk248 Mod 0)</German>
@ -1538,7 +1538,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
<English>7.62mm Mk248</English>
<Polish>7,62mm Mk248</Polish>
<French>7.62mm Mk248</French>
<French>7,62mm Mk248</French>
<Spanish>7.62mm Mk248</Spanish>
<Russian>7,62 мм Mk248</Russian>
<German>7,62mm Mk248</German>
@ -1552,7 +1552,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
<English>Caliber: 7.62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 7.62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)&lt;br /&gt;Patronen: 20</German>
@ -1566,7 +1566,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
<English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
<French>Ch. 7.62mm 20Cps (Mk248 Mod 1)</French>
<French>Ch. 7,62mm 20Cps (Mk248 Mod 1)</French>
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 1)</Russian>
<German>7,62mm 20-Patronen-Magazin (Mk248 Mod 1)</German>
@ -1580,7 +1580,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
<English>7.62mm Mk248</English>
<Polish>7,62mm Mk248</Polish>
<French>7.62mm Mk248</French>
<French>7,62mm Mk248</French>
<Spanish>7.62mm Mk248</Spanish>
<Russian>7,62 мм Mk248</Russian>
<German>7,62mm Mk248</German>
@ -1594,7 +1594,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
<English>Caliber: 7.62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 7.62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Balas: 20</Spanish>
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)&lt;br /&gt;Patronen: 20</German>
@ -1608,7 +1608,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
<English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
<Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
<French>Ch. 7.62 20Cps (Berger Hybrid OTM)</French>
<French>Ch. 7,62 20Cps (Berger Hybrid OTM)</French>
<Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
<Russian>Магазин из 20-ти 7,62 мм (Berger Hybrid OTM)</Russian>
<German>7,62mm 20-Patronen-Magazin (Berger Hybrid OTM)</German>
@ -1622,7 +1622,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
<English>7.62mm OTM</English>
<Polish>7,62mm OTM</Polish>
<French>7.62mm OTM</French>
<French>7,62mm OTM</French>
<Spanish>7.62mm OTM</Spanish>
<Russian>7,62 мм OTM</Russian>
<German>7,62mm OTM</German>
@ -1636,7 +1636,7 @@
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
<English>Caliber: 7.62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Rounds: 20</English>
<Polish>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Pociski: 20</Polish>
<French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Cartouches: 20</French>
<French>Calibre: 7,62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Cartouches: 20</French>
<Spanish>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Balas: 20</Spanish>
<Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)&lt;br /&gt;Патронов: 20</Russian>
<German>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Patronen: 20</German>
@ -1649,7 +1649,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_Name">
<English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
<French>Ch. 6.5x47mm 30Cps (HPBT Scenar)</French>
<French>Ch. 6,5x47mm 30Cps (HPBT Scenar)</French>
<Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
<Polish>Magazynek 6,5x47mm 30rd (HPBT Scenar)</Polish>
<Russian>Магазин из 30-ти 6,5x47 мм (экспансивные Scenar)</Russian>
@ -1663,7 +1663,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_NameShort">
<English>6.5mm Lapua</English>
<French>6.5mm Lapua</French>
<French>6,5mm Lapua</French>
<Spanish>6.5mm Lapua</Spanish>
<Polish>6,5mm Lapua</Polish>
<Russian>6,5 мм Lapua</Russian>
@ -1677,7 +1677,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_Description">
<English>Caliber: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: MXM</English>
<French>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 30</French>
<French>Calibre: 6,5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 30</French>
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Balas: 30&lt;br /&gt;Se usa en: MXM</Spanish>
<Polish>Kaliber: 6,5x47mm (HPBT Scenar)&lt;br /&gt;Pociski: 30</Polish>
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MXM</Russian>
@ -1696,7 +1696,7 @@
<Russian>Магазин из 30-ти 6,5 мм Creedmor</Russian>
<German>6,5mm Creedmor 30-Patronen-Magazin</German>
<Spanish>Cargador de 30 balas Creedmor de 6.5mm</Spanish>
<French>Ch. 6.5mm Creedmor 30Cps</French>
<French>Ch. 6,5mm Creedmor 30Cps</French>
<Czech>6.5mm Creedmor 30náb. Zásobník</Czech>
<Portuguese>Carregador 6.5mm com 30 cartuchos Creedmor</Portuguese>
<Hungarian>6,5mm Creedmor 30-lövedékes tár</Hungarian>
@ -1705,7 +1705,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_30Rnd_65_Creedmor_mag_NameShort">
<English>6.5mm CM</English>
<French>6.5mm CM</French>
<French>6,5mm CM</French>
<Spanish>6.5mm CM</Spanish>
<Polish>6,5mm CM</Polish>
<Russian>6,5 мм CM</Russian>
@ -1721,7 +1721,7 @@
<English>Caliber: 6.5x47mm Creedmor&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: MXM</English>
<Polish>Kaliber: 6,5x47mm Creedmor&lt;br /&gt;Pociski: 30&lt;br /&gt;Używany w: MXM</Polish>
<German>Kaliber: 6,5x47mm Creedmor&lt;br /&gt;Patronen: 30&lt;br /&gt;Eingesetzt von: MXM</German>
<French>Calibre: 6.5x47mm Creedmor &lt;br /&gt;Cartouches: 30&lt;br /&gt;Utilisé avec: MXM</French>
<French>Calibre: 6,5x47mm Creedmor &lt;br /&gt;Cartouches: 30&lt;br /&gt;Utilisé avec: MXM</French>
<Italian>Calibro: 6.5mm Creedmor&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: MXM</Italian>
<Spanish>Calibre: 6.5mm Creedmor&lt;br /&gt;Balas: 30&lt;br /&gt;Se usa en: MXM</Spanish>
<Russian>Калибр: 6,5x47мм Creedmor&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются c: MXM</Russian>
@ -1761,7 +1761,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_10Rnd_338_300gr_HPBT_Mag_Description">
<English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Rounds: 10</English>
<French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 8,6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Balas: 10</Spanish>
<Polish>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Pociski: 10</Polish>
<Russian>Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)&lt;br /&gt;Патронов: 10</Russian>
@ -1803,7 +1803,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_10Rnd_338_API526_Mag_Description">
<English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
<French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
<French>Calibre: 8,6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
<Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
<Polish>Kaliber: 8,6x70mm (API526)&lt;br /&gt;Pociski: 10</Polish>
<Russian>Калибр: 8,6x70 мм (API526)&lt;br /&gt;Патронов: 10</Russian>
@ -1859,7 +1859,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_Name">
<English>12.7x99mm 5Rnd Mag</English>
<French>Ch. 12.7x99mm 5Cps</French>
<French>Ch. 12,7x99mm 5Cps</French>
<Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
<Polish>Magazynek 12,7x99mm 5rd</Polish>
<Russian>Магазин из 5-ти 12,7x99 мм</Russian>
@ -1873,7 +1873,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_NameShort">
<English>12.7mm</English>
<French>12.7mm</French>
<French>12,7mm</French>
<Spanish>12.7mm</Spanish>
<Polish>12,7mm</Polish>
<Russian>12,7 мм</Russian>
@ -1901,7 +1901,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_Name">
<English>12.7x99mm API 5Rnd Mag</English>
<French>Ch. 12.7x99mm API 5Cps</French>
<French>Ch. 12,7x99mm API 5Cps</French>
<Spanish>Cargador de 5 balas de 12.7x99mm API</Spanish>
<Polish>Magazynek 12,7x99mm API 5rd</Polish>
<Italian>12.7x99mm API 5Rnd Mag</Italian>
@ -1915,7 +1915,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_NameShort">
<English>12.7mm API</English>
<French>12.7mm API</French>
<French>12,7mm API</French>
<Spanish>12.7mm API</Spanish>
<Polish>12,7mm API</Polish>
<Italian>12.7mm API</Italian>
@ -1929,7 +1929,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_Description">
<English>Caliber: 12.7x99mm API&lt;br /&gt;Rounds: 5</English>
<French>Calibre: 12.7x99mm API&lt;br /&gt;Cartouches: 5</French>
<French>Calibre: 12,7x99mm API&lt;br /&gt;Cartouches: 5</French>
<Spanish>Calibre: 12.7x99mm API&lt;br /&gt;Balas: 5</Spanish>
<Polish>Kaliber: 12,7x99mm API&lt;br /&gt;Pociski: 5</Polish>
<Russian>Калибр: 12,7x99 мм бронебойно-зажигательные&lt;br /&gt;Патронов: 5</Russian>
@ -1943,7 +1943,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_Name">
<English>12.7x99mm 5Rnd Mag (AMAX)</English>
<French>Ch. 12.7x99mm 5Cps (AMAX)</French>
<French>Ch. 12,7x99mm 5Cps (AMAX)</French>
<Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
<Polish>Magazynek 12,7x99mm 5rd (AMAX)</Polish>
<Russian>Магазин из 5-ти 12,7x99 мм (A-MAX)</Russian>
@ -1957,7 +1957,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_NameShort">
<English>12.7mm</English>
<French>12.7mm</French>
<French>12,7mm</French>
<Spanish>12.7mm</Spanish>
<Polish>12,7mm</Polish>
<Russian>12,7 мм</Russian>
@ -1971,7 +1971,7 @@
</Key>
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_Description">
<English>Caliber: 12.7x99mm (AMAX)&lt;br /&gt;Rounds: 5</English>
<French>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Cartouches: 5</French>
<French>Calibre: 12,7x99mm (AMAX)&lt;br /&gt;Cartouches: 5</French>
<Spanish>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Balas: 5</Spanish>
<Polish>Kaliber: 12,7x99mm (AMAX)&lt;br /&gt;Pociski: 5</Polish>
<Russian>Калибр: 12,7x99 мм (A-MAX)&lt;br /&gt;Патронов: 5</Russian>

View File

@ -40,4 +40,5 @@ if (_item isEqualType "") then {
_validItem &&
{_itemSize > 0} &&
{alive _vehicle} &&
{_itemSize <= ([_vehicle] call FUNC(getCargoSpaceLeft))}
{_itemSize <= ([_vehicle] call FUNC(getCargoSpaceLeft))} &&
{locked _vehicle < 2}

View File

@ -243,6 +243,7 @@
<Japanese>空中投下</Japanese>
<Polish>Zrzut zaopatrzenia</Polish>
<Korean>공중 투하</Korean>
<French>Largage aérien</French>
</Key>
<Key ID="STR_ACE_Cargo_unlevelFlightWarning">
<English>Unlevel Flight</English>
@ -250,6 +251,7 @@
<Japanese>機体が水平ではありません</Japanese>
<Polish>Nierówny lot</Polish>
<Korean>기체가 수평이 아닙니다</Korean>
<French>Rétablir l'assiette</French>
</Key>
</Package>
</Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Chemlights">
<Key ID="STR_ACE_Chemlights_Action_Chemlights">
@ -7,6 +7,7 @@
<Polish>Świetliki</Polish>
<German>Knicklichter</German>
<Korean>켐라이트</Korean>
<French>Cyalumes</French>
</Key>
<Key ID="STR_ACE_Chemlights_Action_Prepare">
<English>Prepare %1</English>
@ -14,6 +15,7 @@
<Polish>Przygotuj %1</Polish>
<German>%1 vorbereiten</German>
<Korean>%1 준비</Korean>
<French>Prépare %1</French>
</Key>
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
<English>%1&lt;br/&gt;Prepared</English>
@ -21,13 +23,14 @@
<Polish>%1&lt;br/&gt;Przygotowany</Polish>
<German>%1&lt;br/&gt;vorbereitet</German>
<Korean>%1&lt;br/&gt;준비됨</Korean>
<French>%1&lt;br/&gt;prêt</French>
</Key>
<Key ID="STR_ACE_Chemlights_Inventory_Full">
<English>No inventory space</English>
<German>Kein Platz im Inventar</German>
<Spanish>Sin espacio en inventario</Spanish>
<Polish>Brak miejsca w ekwipunku</Polish>
<French>Pas de place dans l'inventaire</French>
<French>Pas de place</French>
<Czech>Nedostatek místa v inventáři</Czech>
<Portuguese>Sem espaço no inventário</Portuguese>
<Italian>Non hai più spazio</Italian>
@ -42,6 +45,7 @@
<Polish>[ACE] Świetliki</Polish>
<German>[ACE] Knicklichter</German>
<Korean>[ACE] 켐라이트</Korean>
<French>[ACE] Cyalume</French>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
<English>Chemlight (Orange)</English>
@ -49,6 +53,7 @@
<Polish>Świetlik (pomarańczowy)</Polish>
<German>Knicklicht (orange)</German>
<Korean>켐라이트 (주황)</Korean>
<French>Cyalume (orange)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
<English>Orange Light</English>
@ -56,6 +61,7 @@
<Polish>Pomarańczowe światło</Polish>
<German>Oranges Knicklicht</German>
<Korean>주황색</Korean>
<French>Lum. orange </French>
</Key>
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
<English>Type: Light - Orange&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -63,6 +69,7 @@
<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>
<Korean>종류:밝은 오렌지&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - orange&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_White_DisplayName">
<English>Chemlight (White)</English>
@ -70,6 +77,7 @@
<Polish>Świetlik (biały)</Polish>
<German>Knicklicht (weiß)</German>
<Korean>켐라이트 (하양)</Korean>
<French>Cyalume (blanc)</French>
</Key>
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
<English>White Light</English>
@ -77,6 +85,7 @@
<Polish>Białe światło</Polish>
<German>Weißes Knicklicht</German>
<Korean>하얀색</Korean>
<French>Lum. blanche </French>
</Key>
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
<English>Type: Light - White&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -84,6 +93,7 @@
<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>
<Korean>종류:하얀색&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - blanche&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
<English>Chemlight (Hi Red)</English>
@ -91,6 +101,7 @@
<Polish>Świetlik (jaskrawy czerwony)</Polish>
<German>Knicklicht (rot, hell)</German>
<Korean>켐라이트 (밝은 빨간색)</Korean>
<French>Cyalume (Hi rouge)</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
<English>Red Hi Light</English>
@ -98,6 +109,7 @@
<Polish>Jaskrawe czerwone światło</Polish>
<German>Helles, rotes Knicklicht</German>
<Korean>밝은 빨간색</Korean>
<French>Lum. rouge haute intensité</French>
</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>
@ -105,6 +117,7 @@
<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>
<Korean>종류: 밝은 빨간색 (5분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - rouge Hi (5 minutes)&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
<English>Chemlight (Hi Yellow)</English>
@ -112,6 +125,7 @@
<Polish>Świetlik (jaskrawy żółty)</Polish>
<German>Knicklicht (gelb, hell)</German>
<Korean>켐라이트 (밝은 노란색)</Korean>
<French>Cyalume (Hi jaune)</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
<English>Yellow Hi Light</English>
@ -119,6 +133,7 @@
<Polish>Jaskrawe żółte światło</Polish>
<German>Helles, gelbes Knicklicht</German>
<Korean>밝은 노란색</Korean>
<French>Lum. jaune haute intensité</French>
</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>
@ -126,6 +141,7 @@
<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>
<Korean>종류:밝은 노란색 (5분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: Hand</Korean>
<French>Type: Lumière - Jaune Hi (5 minutes)Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
<English>Chemlight (Hi Orange)</English>
@ -133,6 +149,7 @@
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
<German>Knicklicht (orange, hell)</German>
<Korean>켐라이트 (밝은 주황색)</Korean>
<French>Cyalume (Hi orange)</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
<English>Orange Hi Light</English>
@ -140,6 +157,7 @@
<Polish>Jaskrawe pomarańczowe światło</Polish>
<German>Helles, oranges Knicklicht</German>
<Korean>밝은 주황색</Korean>
<French>Lum. orange haute intensité</French>
</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>
@ -147,6 +165,7 @@
<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>
<Korean>종류: 밝은 주황색 (5분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - orange Hi (5 minutes)&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
<English>Chemlight (Hi White)</English>
@ -154,6 +173,7 @@
<Polish>Świetlik (jaskrawy biały)</Polish>
<German>Knicklicht (weiß, hell)</German>
<Korean>켐라이트 (밝은 하얀색)</Korean>
<French>Cyalume (Hi blanc)</French>
</Key>
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
<English>White Hi Light</English>
@ -161,6 +181,7 @@
<Polish>Jaskrawe białe światło</Polish>
<German>Helles, weißes Knicklicht</German>
<Korean>밝은 하얀색</Korean>
<French>Lum. blanche haute intensité</French>
</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>
@ -168,6 +189,7 @@
<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>
<Korean>종류: 밝은 하얀색 (5분)&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - blanche Hi (5 minutes)&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
<English>Chemlight (IR)</English>
@ -175,6 +197,7 @@
<Polish>Świetlik (podczerwony)</Polish>
<German>Knicklicht (IR)</German>
<Korean>켐라이트 (적외선)</Korean>
<French>Cyalume (IR)</French>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
<English>IR Light</English>
@ -182,6 +205,7 @@
<Polish>Światło podczerwone</Polish>
<German>IR-Knicklicht</German>
<Korean>적외선 켐라이트</Korean>
<French>Lumière IR</French>
</Key>
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
<English>Type: Light - Infrared&lt;br /&gt;Rounds: 1&lt;br /&gt;Used in: Hand</English>
@ -189,6 +213,7 @@
<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>
<Korean>종류: 적외선&lt;br /&gt;수량: 1&lt;br /&gt;사용처: 손</Korean>
<French>Type: Lumière - infrarouge&lt;br /&gt;Nbre: 1&lt;br /&gt; À main</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
<English>Chemlight Shield (Empty)</English>
@ -196,6 +221,7 @@
<Polish>Osłona na świetlik (pusta)</Polish>
<German>Knicklicht-Abschirmung (leer)</German>
<Korean>켐라이트 쉴드 (비어있음)</Korean>
<French>Étui cyalume (vide)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
@ -203,6 +229,7 @@
<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>
<Korean>켐라이트를 위한 가림막입니다. 켐라이트와 같이 사용하여 읽을 때 씁니다.</Korean>
<French>Étui pour cyalume. Combiné avec un cyalume pour obtennir un lampe de lecture.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
<English>Chemlight Shield (Green)</English>
@ -210,6 +237,7 @@
<Polish>Osłona na świetlik (zielona)</Polish>
<German>Knicklicht-Abschirmung (grün)</German>
<Korean>켐라이트 쉴드 (초록)</Korean>
<French>Étui cyalume (vert)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
<English>Green reading light.</English>
@ -217,6 +245,7 @@
<Polish>Zielona lampka.</Polish>
<German>Grünes Leselicht.</German>
<Korean>초록빛 조명</Korean>
<French>Lampe d'orientation verte.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
<English>Chemlight Shield (Red)</English>
@ -224,6 +253,7 @@
<Polish>Osłona na świetlik (czerwona)</Polish>
<German>Knicklicht-Abschirmung (rot)</German>
<Korean>켐라이트 쉴드 (빨강)</Korean>
<French>Étui cyalume (rouge)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
<English>Red reading light.</English>
@ -231,6 +261,7 @@
<Polish>Czerwona lampka.</Polish>
<German>Rotes Leselicht.</German>
<Korean>빨간색 조명</Korean>
<French>Lampe d'orientation rouge.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
<English>Chemlight Shield (Blue)</English>
@ -238,6 +269,7 @@
<Polish>Osłona na świetlik (niebieska)</Polish>
<German>Knicklicht-Abschirmung (blau)</German>
<Korean>켐라이트 쉴드 (파랑)</Korean>
<French>Étui cyalume (bleu)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
<English>Blue reading light.</English>
@ -245,6 +277,7 @@
<Polish>Niebieska lampka.</Polish>
<German>Blaues Leselicht.</German>
<Korean>파란색 조명</Korean>
<French>Lampe d'orientation bleue.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
<English>Chemlight Shield (Yellow)</English>
@ -252,6 +285,7 @@
<Polish>Osłona na świetlik (żółta)</Polish>
<German>Knicklicht-Abschirmung (gelb)</German>
<Korean>켐라이트 쉴드 (노랑)</Korean>
<French>Étui cyalume (jaune)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
<English>Yellow reading light.</English>
@ -259,6 +293,7 @@
<Polish>Żółta lampka.</Polish>
<German>Gelbes Leselicht.</German>
<Korean>노란색 조명</Korean>
<French>Lampe d'orientation jaune.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
<English>Chemlight Shield (Orange)</English>
@ -266,6 +301,7 @@
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
<German>Knicklicht-Abschirmung (orange)</German>
<Korean>켐라이트 쉴드 (주황)</Korean>
<French>Étui cyalume (orange)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
<English>Orange reading light.</English>
@ -273,6 +309,7 @@
<Polish>Pomarańczowa lampka.</Polish>
<German>Oranges Leselicht.</German>
<Korean>주황색 조명</Korean>
<French>Lampe d'orientation orange.</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
<English>Chemlight Shield (White)</English>
@ -280,6 +317,7 @@
<Polish>Osłona na świetlik (biała)</Polish>
<German>Knicklicht-Abschirmung (weiß)</German>
<Korean>켐라이트 쉴드 (하양)</Korean>
<French>Étui cyalume (blanc)</French>
</Key>
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
<English>White reading light.</English>
@ -287,6 +325,7 @@
<Polish>Biała lampka.</Polish>
<German>Weißes Leselicht.</German>
<Korean>주황색 조명</Korean>
<French>Lampe d'orientation blanche.</French>
</Key>
</Package>
</Project>

View File

@ -137,6 +137,7 @@ if (isServer) then {
if (isServer) then {
[QGVAR(hideObjectGlobal), {(_this select 0) hideObjectGlobal (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(enableSimulationGlobal), {(_this select 0) enableSimulationGlobal (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(setShotParents), {(_this select 0) setShotParents [_this select 1, _this select 2]}] call CBA_fnc_addEventHandler;
["ace_setOwner", {(_this select 0) setOwner (_this select 1)}] call CBA_fnc_addEventHandler;
[QGVAR(serverLog), FUNC(serverLog)] call CBA_fnc_addEventHandler;
};
@ -299,18 +300,10 @@ enableCamShake true;
// Set up numerous eventhanders for player controlled units
//////////////////////////////////////////////////
// It is possible that CBA_fnc_addPlayerEventHandler has allready been called and run
// We will NOT get any events for the initial state, so manually set ACE_player
if (!isNull (missionNamespace getVariable ["cba_events_oldUnit", objNull])) then {
// INFO("CBA_fnc_addPlayerEventHandler has already run - manually setting ace_player"); //ToDo CBA 3.1
diag_log text "[ACE-Common - CBA_fnc_addPlayerEventHandler has already run - manually setting ace_player";
ACE_player = cba_events_oldUnit;
};
// "playerChanged" event
TRACE_1("adding unit playerEH to set ace_player",isNull cba_events_oldUnit);
["unit", {
ACE_player = (_this select 0);
}] call CBA_fnc_addPlayerEventHandler;
}, true] call CBA_fnc_addPlayerEventHandler;
GVAR(OldIsCamera) = false;

View File

@ -18,4 +18,4 @@ params ["_array", "_value"];
private _min = _array select floor _value;
private _max = _array select ceil _value;
_min + (_max - _min) * (_value % 1) // return
linearConversion [0, 1, _value % 1, _min, _max] // return

View File

@ -65,7 +65,6 @@ if (_amountOfMagazines > 0) exitWith {
private _velVec = _vectorAmmo vectorMultiply _speed;
_projectile setVectorDir _velVec;
_projectile setVelocity _velVec;
// [ACE_player, _projectile, [1,0,0,1]] call EFUNC(frag,addTrack); // visual debuging from ace_frag
} else {
_projectile setDamage 1;
};

View File

@ -1,4 +1,4 @@
<?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">
@ -9,7 +9,7 @@
<Japanese>誘爆を有効化</Japanese>
<Korean>쿡오프 현상 활성화</Korean>
<Polish>Aktywuj efekty samozapłonu amunicji</Polish>
<French>Activer </French>
<French>Active le cook-off</French>
</Key>
<Key ID="STR_ACE_CookOff_enable_tooltip">
<English>Enables cook off and related vehicle destruction effects.</English>
@ -19,6 +19,7 @@
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
<Korean>쿡오프 현상을 활성화 하고 관련된 차량에 폭발 이펙트를 적용합니다.</Korean>
<Polish>Aktywuje efekt samozapłonu amunicji na zniszczonych pojazdach.</Polish>
<French>Active le cook-off (autocombustion des munitions) et les effets de destruction liés.</French>
</Key>
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
<Original>Wreck (Turret)</Original>
@ -40,6 +41,7 @@
<German>Selbstzündung für Munitionskisten ermöglichen</German>
<Korean>탄약 상자 쿡오프 현상 활성화</Korean>
<Polish>Aktywuj samozapłon skrzyń z amunicją</Polish>
<French>Cook-off caisses de munitions</French>
</Key>
<Key ID="STR_ACE_CookOff_enableBoxCookoff_tooltip">
<English>Enables cooking off of ammo boxes.</English>
@ -47,6 +49,7 @@
<German>Ermöglicht Selbstzündung von Munitionskisten.</German>
<Korean>탄약 상자에 쿡오프 현상을 적용합니다.</Korean>
<Polish>Aktywuje samozapłon skrzyń z amunicją</Polish>
<French>Active le cook-off sur toutes les caisses de munitions.</French>
</Key>
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_name">
<English>Enable Ammunition cook off</English>
@ -54,21 +57,24 @@
<German>Selbstzündung für Munition ermöglichen</German>
<Korean>탄약 쿡오프 현상 활성화</Korean>
<Polish>Aktywuj samozapłon amunicji</Polish>
<French>Active le cook-off des munitions</French>
</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>
<Polish>Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję.</Polish>
<French>Mets à feu les munitions lorsqu'un véhicule est en feu et contient des munitions.</French>
</Key>
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_name">
<English>Ammunition cook off duration</English>
<Polish>Czas trwania samozapłonu amunicji</Polish>
<Japanese>弾薬の誘爆持続時間</Japanese>
<French>Durée cook-off des munitions</French>
</Key>
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_tooltip">
<English>Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff]</English>
<French>Active le et les effets de destructions assosicée aux vehicules.</French>
<French>Multiplicateur de la durée du cook-off des munitions [Une valeur de 0 désactive l'effet]</French>
<Polish>Mnożnik decydujący jak długo ma trwać samozapłon amunicji [Ustawienie na 0 spowoduje wyłącznie samozapłonu]</Polish>
<Japanese>誘爆の持続時間を乗数で設定。[0 に設定で誘爆を無効化]</Japanese>
</Key>

View File

@ -79,7 +79,11 @@ GVAR(outputPFH) = [{
});
// WP Heading
_bearing = floor ((_WPpos vectorDiff _MYpos) call CBA_fnc_vectDir);
_bearing = floor (if (GVAR(useDegrees)) then {
((_WPpos vectorDiff _MYpos) call CBA_fnc_vectDir)
} else {
DEG_TO_MIL(((_WPpos vectorDiff _MYpos) call CBA_fnc_vectDir))
});
// Output
__gridControl ctrlSetText format ["%1", _dagrGrid];

View File

@ -17,7 +17,7 @@ class Extended_PostInit_EventHandlers {
};
};
class Extended_Init_EventHandlers {
class Extended_InitPost_EventHandlers {
class Tank {
class ADDON {
serverInit = QUOTE(_this call FUNC(vehicleInit));

View File

@ -25,20 +25,13 @@ class ACE_Settings {
displayName = CSTRING(MaxTrack);
description = CSTRING(MaxTrack_Desc);
typeName = "SCALAR";
value = 500;
value = 10;
};
class GVAR(maxTrackPerFrame) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(MaxTrackPerFrame);
description = CSTRING(MaxTrackPerFrame_Desc);
typeName = "SCALAR";
value = 50;
};
class GVAR(enableDebugTrace) {
category = CSTRING(Module_DisplayName);
displayName = CSTRING(EnableDebugTrace);
description = CSTRING(EnableDebugTrace_Desc);
typeName = "BOOL";
value = 0;
value = 10;
};
};

View File

@ -7,19 +7,17 @@ PREP(spallTrack);
// * Other */
PREP(addBlackList);
PREP(addTrack);
PREP(drawTraces);
PREP(removeTrack);
PREP(dev_addTrack);
PREP(dev_drawTraces);
PREP(spallHP);
PREP(startTracing);
PREP(stopTracing);
PREP(trackTrace);
PREP(dev_startTracing);
PREP(dev_stopTracing);
PREP(dev_trackTrace);
// New tracking mechanisms
PREP(masterPFH);
PREP(pfhRound);
PREP(addPfhRound);
PREP(removePfhRound); // THIS SHOULD ABE USED SPARINGLY
// Explosive Reflection
PREP(findReflections);

View File

@ -1,11 +1,7 @@
#include "script_component.hpp"
if (GVAR(enableDebugTrace) && {!isMultiplayer}) then {
GVAR(traceFrags) = true;
GVAR(autoTrace) = true;
};
if (isServer) then {
GVAR(lastFragTime) = -1;
[QGVAR(frag_eh), {_this call FUNC(frago);}] call CBA_fnc_addEventHandler;
};
@ -24,6 +20,13 @@ if (isServer) then {
// Cache for ammo type configs
GVAR(cacheRoundsTypesToTrack) = [false] call CBA_fnc_createNamespace;
#ifdef DEBUG_ENABLED_FRAG
// Debug stuff:
#ifdef DRAW_FRAG_INFO
[] call FUNC(dev_startTracing);
#endif
#ifdef DEBUG_MODE_FULL
[true, true, 30] call FUNC(dev_debugAmmo);
#endif

View File

@ -6,23 +6,18 @@ PREP_RECOMPILE_START;
#include "XEH_PREP.hpp"
PREP_RECOMPILE_END;
GVAR(replacedBisArtyWrapper) = true;
GVAR(blackList) = [];
GVAR(traceFrags) = false;
GVAR(totalFrags) = 0;
GVAR(spallHPData) = [];
GVAR(spallIsTrackingCount) = 0;
GVAR(autoTrace) = false;
GVAR(traceID) = -1;
GVAR(traces) = [];
GVAR(tracesStarted) = false;
GVAR(lastIterationIndex) = 0;
GVAR(objects) = [];
GVAR(objectTypes) = [];
GVAR(arguments) = [];
ADDON = true;

View File

@ -1,5 +1,21 @@
/*
* Author: Jaynus, NouberNou
* Adds a round to the blacklist (will be ignored).
*
* Arguments:
* 0: Projectile <OBJECT>
*
* Return Value:
* Nothing
*
* Example:
* [bullet] call ace_frag_fnc_addBlackList
*
* Public: No
*/
#include "script_component.hpp"
params ["_round"];
TRACE_1("addBlackList",_round);
GVAR(blackList) pushBack _round;

View File

@ -1,27 +1,38 @@
/*
* Author: Jaynus, NouberNou
* Starts tracking a round that will frag.
* Should only be called once per round.
*
* Arguments:
* 0: Shooter <OBJECT>
* 1: Ammo classname <STRING>
* 2: Projectile <OBJECT>
*
* Return Value:
* Nothing
*
* Example:
* [player, "handGrenade", bullet] call ace_frag_fnc_addPfhRound
*
* Public: No
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
params ["_gun", "_type", "_round", ["_doFragTrack", false]];
params ["_gun", "_type", "_round"];
TRACE_3("addPfhRound",_gun,_type,_round);
if (!GVAR(enabled)) exitWith {};
if (!GVAR(enabled)) exitWith {TRACE_1("setting disabled",_this);};
//_enabled = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(enabled));
//if (_enabled < 1) exitWith {};
if (!alive _round) exitWith {TRACE_1("round dead?",_this);};
if (_round in GVAR(blackList)) exitWith {
TRACE_1("round in blackList",_this);
REM(GVAR(blackList),_round);
};
// Exit on max track
if ((count GVAR(objects)) > GVAR(maxTrack)) exitWith {};
if (
_gun == ACE_player ||
{(gunner _gun) == ACE_player} ||
{local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}}
) then {
_doFragTrack = true;
};
if ((count GVAR(objects)) >= GVAR(maxTrack)) exitWith {TRACE_1("maxTrack limit",count GVAR(objects));};
private _doSpall = false;
if (GVAR(SpallEnabled)) then {
@ -29,23 +40,23 @@ if (GVAR(SpallEnabled)) then {
GVAR(spallHPData) = [];
};
if (GVAR(spallIsTrackingCount) > 5) then {
// ACE_player sideChat "LIMT!";
TRACE_1("At Spall Limit",GVAR(spallIsTrackingCount));
} else {
_doSpall = true;
INC(GVAR(spallIsTrackingCount));
};
TRACE_2("",_doSpall,GVAR(spallIsTrackingCount));
};
// ACE_player sideChat format ["c: %1", GVAR(spallIsTrackingCount)];
if (GVAR(autoTrace)) then {
[ACE_player, _round, [1, 0, 0, 1]] call FUNC(addTrack);
};
#ifdef DRAW_FRAG_INFO
[ACE_player, _round, [0, 1, 0, 1]] call FUNC(dev_addTrack);
#endif
// We only do the single track object check here.
// We should do an {!(_round in GVAR(objects))}
// But we leave that out here for optimization. So this cannot be a framework function
// Otherwise, it should only be added once and from the FiredEH
if (_doFragTrack && {alive _round}) then {
if (alive _round) then {
private _spallTrack = [];
private _spallTrackID = [];
@ -64,5 +75,4 @@ if (_doFragTrack && {alive _round}) then {
if (_doSpall) then {
[_round, 1, _spallTrack, _spallTrackID] call FUNC(spallTrack);
};
// ACE_player sideChat "WTF2";
};

View File

@ -1,10 +1,5 @@
#include "script_component.hpp"
if (GVAR(autoTrace)) then {
[] call FUNC(startTracing);
};
// setAccTime 0.05;
params ["_origin", "_obj", ["_color", [1, 0, 0, 1]]];
private _positions = [];
@ -13,4 +8,4 @@ _positions pushBack [getPos _obj, _objSpd];
private _data = [_origin, typeOf _origin, typeOf _obj, _objSpd, _positions, _color];
private _index = GVAR(traces) pushBack _data;
[DFUNC(trackTrace), 0, [_obj, _index, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;
[DFUNC(dev_trackTrace), 0, [_obj, _index, CBA_missionTime]] call CBA_fnc_addPerFrameHandler;

View File

@ -1,11 +1,10 @@
#include "script_component.hpp"
{
private _positions = _x select 4;
private _color = _x select 5;
_x params ["", "", "", "", "_positions", "_color"];
private _index = 0;
private _max = count _positions;
private _lastSpd = [];
// private _lastSpd = [];
private _lastPos = [];
while {_index < _max} do {
_data1 = _positions select _index;
@ -17,7 +16,7 @@
drawLine3D [_pos1, _pos2, _color];
_lastPos = _pos2;
_lastSpd = _data1 select 1;
// _lastSpd = _data1 select 1;
};
// drawIcon3D ["", [1,0,0,1], _lastPos, 0, 0, 0, format ["%1m/s", _lastSpd], 1, 0.05, "RobotoCondensed"];
} forEach GVAR(traces);

View File

@ -0,0 +1,8 @@
#include "script_component.hpp"
if (GVAR(tracesStarted)) exitWith {};
INFO("Starting Trace Drawing");
GVAR(tracesStarted) = true;
GVAR(traceID) = [LINKFUNC(dev_drawTraces), 0, []] call CBA_fnc_addPerFrameHandler;

View File

@ -1,5 +1,8 @@
#include "script_component.hpp"
if (!GVAR(tracesStarted)) exitWith {};
INFO("Ending Trace Drawing");
GVAR(tracesStarted) = false;
[GVAR(traceID)] call CBA_fnc_removePerFrameHandler;

View File

@ -99,9 +99,9 @@ for "_i" from 1 to _spallCount do {
_fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect;
if (GVAR(traceFrags)) then {
[ACE_player, _fragment, [1, 0.5, 0, 1]] call FUNC(addTrack);
};
#ifdef DRAW_FRAG_INFO
[ACE_player, _fragment, [1, 0.5, 0, 1]] call FUNC(dev_addTrack);
#endif
};
_spread = 5 + (random 5);
@ -122,7 +122,7 @@ for "_i" from 1 to _spallCount do {
_fragment setPosASL _spallPos;
_fragment setVelocity _spallFragVect;
if (GVAR(traceFrags)) then {
[ACE_player, _fragment, [1, 0, 0, 1]] call FUNC(addTrack);
};
#ifdef DRAW_FRAG_INFO
[ACE_player, _fragment, [1, 0, 0, 1]] call FUNC(dev_addTrack);
#endif
};

View File

@ -50,6 +50,14 @@ if (isNil "_shouldAdd") then {
};
if (_shouldAdd) then {
TRACE_3("Running Frag Tracking",_unit,_ammo,_projectile);
// firedMan will have nil "_gunner", so just check _unit; for firedVehicle we want to check _gunner
private _localShooter = if (isNil "_gunner") then {local _unit} else {local _gunner};
TRACE_4("",_localShooter,_unit,_ammo,_projectile);
if (!_localShooter) exitWith {};
// Skip if less than 0.5 second from last shot
if ((CBA_missionTime - (_unit getVariable [QGVAR(lastTrack), -1])) < 0.5) exitWith {};
_unit setVariable [QGVAR(lastTrack), CBA_missionTime];
[_unit, _ammo, _projectile] call FUNC(addPfhRound);
};

View File

@ -1,17 +1,35 @@
//fnc_frago.sqf
// #define DEBUG_MODE_FULL
/*
* Author: Jaynus, NouberNou
* Server func to create the fragmentation for a round.
*
* Arguments:
* 0: Last Position (ASL) <ARRAY>
* 1: Velocity <ARRAY>
* 2: Ammo Classname <STRING>
*
* Return Value:
* Nothing
*
* Example:
* [[], [], "handGrenade"] call ace_frag_fnc_frago
*
* Public: No
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
#define FRAG_VEC_VAR 0.004
#define MAX_FRAG_COUNT 50
if (!isServer) exitWith {};
BEGIN_COUNTER(frago);
// _startTime = diag_tickTime;
params ["_round", "_lastPos", "_lastVel", "_shellType", "_firedFrame", "_gun"];
params ["_lastPos", "_lastVel", "_shellType"];
TRACE_3("frago",_lastPos,_lastVel,_shellType);
// Limit max frag count if there was a recent frag
private _maxFrags = round (MAX_FRAG_COUNT * linearConversion [0.1, 1.5, (CBA_missionTime - GVAR(lastFragTime)), 0.1, 1, true]);
TRACE_2("",_maxFrags,CBA_missionTime - GVAR(lastFragTime));
GVAR(lastFragTime) = CBA_missionTime;
private _fragTypes = [
QGVAR(tiny), QGVAR(tiny), QGVAR(tiny),
@ -28,12 +46,6 @@ if (isArray (configFile >> "CfgAmmo" >> _shellType >> QGVAR(CLASSES))) then {
_warn = true;
};
private _isArmed = true;
if (!isNil "_gun") then {
private _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance");
_isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist);
};
private _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _shellType >> "indirecthitrange");
private _fragRange = 20 * _indirectHitRange * 4;
// _c = 185; // grams of comp-b
@ -69,104 +81,91 @@ if ((_atlPos select 2) < 0.5) then {
_lastPos vectorAdd [0, 0, 0.5];
};
// _manObjects = _atlPos nearEntities ["CaManBase", _fragRange];
// setAccTime 0.01;
//_objects = nearestObjects [_atlPos, ["AllVehicles"], _fragRange]; // Not sure if tracking "ReammoBox" is required, if so revert this change for _objects
private _objects = _atlPos nearEntities [["Car", "Motorcycle", "Tank", "StaticWeapon", "CAManBase", "Air", "Ship"], _fragRange];
// _objects = _manObjects;
// Add unique crews in faster way
{
{
_objects pushBackUnique _x;
} forEach (crew _x);
} forEach _objects;
TRACE_2("",_fragRange,count _objects);
private _fragCount = 0;
private _fragArcs = [];
_fragArcs set [360, 0];
#ifdef DEBUG_MODE_FULL
ACE_player sideChat format ["_fragRange: %1", _fragRange];
ACE_player sideChat format ["_objects: %1", _objects];
#endif
private _doRandom = true;
if (_isArmed && {!(_objects isEqualTo [])}) then {
if (!(_objects isEqualTo [])) then {
if (GVAR(reflectionsEnabled)) then {
[_lastPos, _shellType] call FUNC(doReflections);
};
{
//if (random(1) > 0.5) then {
private _target = _x;
if (alive _target) then {
(boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"];
private _target = _x;
if (alive _target) then {
(boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"];
private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2));
private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2));
if (_cubic <= 1) exitWith {};
_doRandom = true;
if (_cubic <= 1) exitWith {};
// _doRandom = true;
private _targetVel = velocity _target;
private _targetPos = getPosASL _target;
private _distance = _targetPos vectorDistance _lastPos;
private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
private _targetVel = velocity _target;
private _targetPos = getPosASL _target;
private _distance = _targetPos vectorDistance _lastPos;
private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
_targetPos = _targetPos vectorAdd [
(_targetVel select 0) * (_distance / _fragPower),
(_targetVel select 1) * (_distance / _fragPower),
_add
];
_targetPos = _targetPos vectorAdd [
(_targetVel select 0) * (_distance / _fragPower),
(_targetVel select 1) * (_distance / _fragPower),
_add
];
private _baseVec = _lastPos vectorFromTo _targetPos;
private _baseVec = _lastPos vectorFromTo _targetPos;
private _dir = floor (_baseVec call CBA_fnc_vectDir);
private _currentCount = RETDEF(_fragArcs select _dir,0);
if (_currentCount < 20) then {
private _count = ceil (random (sqrt (_m / 1000)));
private _vecVar = FRAG_VEC_VAR;
if (!(_target isKindOf "Man")) then {
ADD(_vecVar,(sqrt _cubic) / 2000);
if ((crew _target) isEqualTo [] && {_count > 0}) then {
_count = 0 max (_count / 2);
};
private _dir = floor (_baseVec call CBA_fnc_vectDir);
private _currentCount = RETDEF(_fragArcs select _dir,0);
if (_currentCount < 10) then {
private _count = ceil (random (sqrt (_m / 1000)));
private _vecVar = FRAG_VEC_VAR;
if (!(_target isKindOf "Man")) then {
ADD(_vecVar,(sqrt _cubic) / 2000);
if ((crew _target) isEqualTo [] && {_count > 0}) then {
_count = 0 max (_count / 2);
};
for "_i" from 1 to _count do {
private _vec = _baseVec vectorDiff [
(_vecVar / 2) + (random _vecVar),
(_vecVar / 2) + (random _vecVar),
(_vecVar / 2) + (random _vecVar)
];
private _fp = _fragPower - (random (_fragPowerRandom));
private _vel = _vec vectorMultiply _fp;
private _fragType = round (random ((count _fragTypes) - 1));
private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
// diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj];
_fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec;
_fragObj setVelocity _vel;
if (GVAR(traceFrags)) then {
INC(GVAR(totalFrags));
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
};
INC(_fragCount);
INC(_currentCount);
};
_fragArcs set [_dir, _currentCount];
};
for "_i" from 1 to _count do {
private _vec = _baseVec vectorDiff [
(_vecVar / 2) + (random _vecVar),
(_vecVar / 2) + (random _vecVar),
(_vecVar / 2) + (random _vecVar)
];
private _fp = _fragPower - (random (_fragPowerRandom));
private _vel = _vec vectorMultiply _fp;
private _fragObj = (selectRandom _fragTypes) createVehicleLocal [0,0,10000];
// TRACE_4("targeted",_fp, typeOf _fragObj,_lastPos vectorDistance _targetPos,typeOf _x);
_fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec;
_fragObj setVelocity _vel;
#ifdef DRAW_FRAG_INFO
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(dev_addTrack);
#endif
INC(_fragCount);
INC(_currentCount);
};
_fragArcs set [_dir, _currentCount];
};
//};
if (_fragCount > MAX_FRAG_COUNT) exitWith {};
};
if (_fragCount > _maxFrags) exitWith {};
} forEach _objects;
if (_fragCount > MAX_FRAG_COUNT) exitWith {};
private _randomCount = ((ceil ((MAX_FRAG_COUNT - _fragCount) * 0.1)) max 0) + 20;
TRACE_1("targeted",_fragCount);
if (_fragCount > _maxFrags) exitWith {};
private _randomCount = ceil ((_maxFrags - _fragCount) * 0.35);
TRACE_1("",_randomCount);
private _sectorSize = 360 / (_randomCount max 1);
// _doRandom = false;
if (_doRandom) then {
for "_i" from 1 to _randomCount do {
// Distribute evenly
@ -178,24 +177,19 @@ if (_isArmed && {!(_objects isEqualTo [])}) then {
_vel = _vec vectorMultiply _fp;
_fragType = round (random ((count _fragTypes) - 1));
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0, 0, 10000];
_fragObj = (selectRandom _fragTypes) createVehicleLocal [0, 0, 10000];
_fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec;
_fragObj setVelocity _vel;
if (GVAR(traceFrags)) then {
INC(GVAR(totalFrags));
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
};
#ifdef DRAW_FRAG_INFO
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(dev_addTrack);
#endif
INC(_fragCount);
};
};
};
// #ifdef DEBUG_MODE_FULL
// ACE_player sideChat format["total frags: %1", GVAR(totalFrags)];
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
// #endif
// _endTime = diag_tickTime;
TRACE_1("total created",_fragCount);
END_COUNTER(frago);

View File

@ -1,19 +1,20 @@
/*
* Author: jaynus
*
* Master single PFH abstraction for all rounds being tracked by frag/spall
* Master single PFH abstraction for all rounds being tracked by frag/spall.
*
* Arguments:
*
* None
*
* Return Value:
* None
*/
//#define DEBUG_MODE_FULL
#include "script_component.hpp"
//PARAMS_2(_pfhArgs,_handle);
if (!GVAR(enabled)) exitWith {};
BEGIN_COUNTER(PFH);
// Fast exit if nothing to do
if (GVAR(objects) isEqualTo []) exitWith {END_COUNTER(PFH);};
private _gcIndex = [];
@ -47,3 +48,5 @@ private _deletionCount = 0;
INC(_deletionCount);
} forEach _gcIndex;
END_COUNTER(PFH);

View File

@ -1,6 +1,6 @@
#include "script_component.hpp"
params ["_round", "_lastPos", "_lastVel", "_type", "_firedFrame", "_gun", "_doSpall", "_spallTrack", "_foundObjectHPIds", "_skip", "_explosive", "_indirectRange", "_force", "_fragPower"];
params ["_round", "_lastPos", "_lastVel", "_shellType", "_firedFrame", "_gun", "_doSpall", "_spallTrack", "_foundObjectHPIds", "_skip", "_explosive", "_indirectRange", "_force", "_fragPower"];
if (_round in GVAR(blackList)) exitWith {
false
@ -11,14 +11,22 @@ if (!alive _round) exitWith {
if (_skip == 0) then {
if ((_explosive > 0.5 && {_indirectRange >= 4.5} && {_fragPower >= 35}) || {_force == 1}) then {
// shotbullet, shotShell don't seem to explode when touching water, so don't create frags
if (((_lastPos select 2) < 0) && {(toLower getText (configFile >> "CfgAmmo" >> _type >> "simulation")) in ["shotbullet", "shotshell"]}) exitWith {};
[QGVAR(frag_eh), _this] call CBA_fnc_serverEvent;
if (((_lastPos select 2) < 0) && {(toLower getText (configFile >> "CfgAmmo" >> _shellType >> "simulation")) in ["shotbullet", "shotshell"]}) exitWith {};
private _isArmed = true;
if (!isNil "_gun") then {
private _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance");
_isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist);
TRACE_2("",_fuseDist,_isArmed);
};
if (!_isArmed) exitWith {TRACE_1("round not armed",_this);};
TRACE_3("Sending frag event to server",_lastPos,_lastVel,_shellType);
[QGVAR(frag_eh), [_lastPos,_lastVel,_shellType]] call CBA_fnc_serverEvent;
};
};
};
if (_doSpall) then {
DEC(GVAR(spallIsTrackingCount));
// diag_log text format ["F: %1", _foundObjectHPIds];
TRACE_1("doSpall",_foundObjectHPIds);
{
if (!isNil "_x") then {
_x removeEventHandler ["hitPart", _foundObjectHPIds select _forEachIndex];

View File

@ -1,11 +0,0 @@
#include "script_component.hpp"
// THIS FUNCTION SHOULD NOT BE USED BECAUSE IT CAUSES AN SEARCH AND REBUILD
params ["_round"];
if (_round in GVAR(blackList)) then {
REM(GVAR(blackList),_round);
};
REM(GVAR(objects),_round);

View File

@ -1,13 +0,0 @@
#include "script_component.hpp"
private _ret = true;
if (IS_ARRAY(_this select 0)) then {
_ret = false;
} else {
if ((_this select 0) in GVAR(trackedObjects)) then {
REM(GVAR(trackedObjects),_this select 0);
} else {
_ret = false;
};
};
_ret

View File

@ -1,5 +0,0 @@
#include "script_component.hpp"
if (GVAR(tracesStarted)) exitWith {};
GVAR(tracesStarted) = true;
GVAR(traceID) = [FUNC(drawTraces), 0, []] call CBA_fnc_addPerFrameHandler;

View File

@ -2,7 +2,7 @@
#define COMPONENT_BEAUTIFIED Frag
#include "\z\ace\addons\main\script_mod.hpp"
//#define DEBUG_ENABLED_FRAG
// #define DRAW_FRAG_INFO
// #define DEBUG_MODE_FULL
// #define DISABLE_COMPILE_CACHE
// #define ENABLE_PERFORMANCE_COUNTERS

View File

@ -20,7 +20,7 @@ if (!hasInterface) exitWith {};
if (GVAR(effects) == 0) exitWith {};
// ---Add the TINT Effect---
// make sure to stack effect layers in correct order
GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer;
GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer;
@ -29,6 +29,26 @@ if (!hasInterface) exitWith {};
GVAR(UsePP) = true;
};
// init pp effects
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
GVAR(EffectsActive) = false;
// add glasses eventhandlers
["ace_glassesChanged", {
params ["_unit", "_glasses"];
TRACE_2("ace_glassesChanged eh",_unit,_glasses);
SETGLASSES(_unit,GLASSESDEFAULT);
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
if ([_unit] call FUNC(isGogglesVisible)) then {
[_unit, _glasses] call FUNC(applyGlassesEffect);
} else {
call FUNC(removeGlassesEffect);
};
}] call CBA_fnc_addEventHandler;
// init GlassesChanged eventhandler
GVAR(OldGlasses) = "<null>";
["loadout", {
@ -40,12 +60,9 @@ if (!hasInterface) exitWith {};
["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent;
GVAR(OldGlasses) = _currentGlasses;
};
}] call CBA_fnc_addPlayerEventHandler;
}, true] call CBA_fnc_addPlayerEventHandler;
// init pp effects
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
GVAR(EffectsActive) = false;
// check goggles
private _fnc_checkGoggles = {
@ -57,7 +74,7 @@ if (!hasInterface) exitWith {};
};
} else {
if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then {
[goggles _unit] call FUNC(applyGlassesEffect);
[_unit, goggles _unit] call FUNC(applyGlassesEffect);
};
};
};
@ -66,21 +83,6 @@ if (!hasInterface) exitWith {};
["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler;
// add glasses eventhandlers
["ace_glassesChanged", {
params ["_unit", "_glasses"];
SETGLASSES(_unit,GLASSESDEFAULT);
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
if ([_unit] call FUNC(isGogglesVisible)) then {
_glasses call FUNC(applyGlassesEffect);
} else {
call FUNC(removeGlassesEffect);
};
}] call CBA_fnc_addEventHandler;
// // ---Add the Dust/Dirt/Rain Effects---
if (GVAR(effects) == 2) then {
@ -96,7 +98,7 @@ if (!hasInterface) exitWith {};
GVAR(PostProcessEyes) ppEffectCommit 0;
GVAR(PostProcessEyes) ppEffectEnable false;
GVAR(PostProcessEyes_Enabled) = false;
GVAR(FrameEvent) = [false, [false, 20]];
GVAR(DustHandler) = -1;
GVAR(RainDrops) = objNull;

View File

@ -5,23 +5,29 @@
* Sets dirt/rain overlay for glasses.
*
* Arguments:
* 0: Glasses classname to be applied <STRING>
* 0: Player <OBJECT>
* 1: Glasses classname to be applied <STRING>
*
* Return Value:
* None
*
* Example:
* [goggles ace_player] call ace_goggles_fnc_applyGlassesEffect
* [ace_player, goggles ace_player] call ace_goggles_fnc_applyGlassesEffect
*
* Public: No
*/
#include "script_component.hpp"
params ["_glasses"];
params ["_player", "_glasses"];
TRACE_2("applyGlassesEffect",_player,_glasses);
// remove old effect
call FUNC(removeGlassesEffect);
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _player) >> "isPlayableLogic")) == 1) exitWith {
TRACE_1("skipping playable logic",typeOf _player); // VirtualMan_F (placeable logic zeus / spectator)
};
private ["_config", "_postProcessColour", "_postProcessTintAmount", "_imagePath"];
_config = configFile >> "CfgGlasses" >> _glasses;

View File

@ -48,7 +48,7 @@ GVAR(lastPlayerVehicle) = objNull;
["unit", {
params ["_player", "_oldPlayer"];
TRACE_2("unit change",_player,_oldPlayer);
if (!isNull _oldPlayer) then {
private _firedEH = _oldPlayer getVariable [QGVAR(firedEH), -1];
_oldPlayer removeEventHandler ["FiredNear", _firedEH];
@ -60,6 +60,9 @@ GVAR(lastPlayerVehicle) = objNull;
};
// Don't add a new EH if the unit respawned
if ((_player getVariable [QGVAR(firedEH), -1]) == -1) then {
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _player) >> "isPlayableLogic")) == 1) exitWith {
TRACE_1("skipping playable logic",typeOf _player); // VirtualMan_F (placeable logic zeus / spectator)
};
private _firedEH = _player addEventHandler ["FiredNear", {call FUNC(firedNear)}];
_player setVariable [QGVAR(firedEH), _firedEH];
private _explosionEH = _player addEventHandler ["Explosion", {call FUNC(explosionNear)}];
@ -69,7 +72,6 @@ GVAR(lastPlayerVehicle) = objNull;
GVAR(deafnessDV) = 0;
GVAR(deafnessPrior) = 0;
ACE_player setVariable [QGVAR(deaf), false];
GVAR(time3) = 0;
[] call FUNC(updateHearingProtection);
}, true] call CBA_fnc_addPlayerEventHandler;

View File

@ -7,6 +7,7 @@
<German>Laserstreuung-Simulationszähler</German>
<Korean>레이저 분산 시뮬레이션 수</Korean>
<Polish>Wskaźnik poziomu rozproszenia wiązki lasera</Polish>
<French>Compte de la simulation de la dispersion du laser</French>
</Key>
<Key ID="STR_ACE_Laser_laserCode">
<English>Laser Code</English>
@ -51,4 +52,4 @@
<Korean>레이저 - 코드 순환 아래</Korean>
</Key>
</Package>
</Project>
</Project>

View File

@ -116,12 +116,13 @@ call FUNC(determineZoom);
GVAR(hasWatch) = true;
["loadout", {
if (isNull (_this select 0)) exitWith {
params ["_unit"];
if (isNull _unit) exitWith {
GVAR(hasWatch) = true;
};
GVAR(hasWatch) = false;
{
if (_x isKindOf ["ItemWatch", configFile >> "CfgWeapons"]) exitWith {GVAR(hasWatch) = true;};
false
} count (assignedItems ACE_player);
}] call CBA_fnc_addPlayerEventHandler;
} count (assignedItems _unit);
}, true] call CBA_fnc_addPlayerEventHandler;

View File

@ -444,6 +444,7 @@
<Japanese>BFTを無効化</Japanese>
<Korean>GPS피아식별기 끄기</Korean>
<Polish>Wyłącz BFT</Polish>
<French>Désactive le BFT</French>
</Key>
<Key ID="STR_ACE_Map_disableBFT_description">
<English>Always disable Blue Force Tracking for this group.</English>
@ -451,6 +452,7 @@
<Japanese>このグループへのブルー フォース トラッキングを常に無効化します。</Japanese>
<Korean>이 그룹에 한해 GPS피아식별기를 항상 끕니다.</Korean>
<Polish>Zawsze wyłączaj Blue Force Tracking dla tej grupy.</Polish>
<French>Désactive en permanence le Blue Force Tracking pour ce groupe.</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -179,6 +179,7 @@
<German>Zeichne gerade Linien mit dem Kartenwerkzeug</German>
<Korean>독도용 도구로 직선 그리기</Korean>
<Polish>Rysuj proste linie przy użyciu narzędzi nawigacyjnych</Polish>
<French>Tracer des lignes droites</French>
</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>
@ -186,6 +187,7 @@
<German>Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren</German>
<Korean>독도용 도구 가장자리에 직선을 그립니다. 주의: 삭제하기 위해선 선의 중앙에 가져다 대십시요</Korean>
<Polish>Przeciągnij po krawędzi narzędzi nawigacyjnych by narysować prostą linię. Uwaga: aby usunąć linię - nalezy ustawić kursor nad jej środkiem.</Polish>
<French>Utiliser le bord des outils de navigation pour tracer des lignes droites. Note: l'on doit survoler le milieu du trait pour pouvoir le supprimer.</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -118,7 +118,7 @@
<Spanish>Transfundir salino</Spanish>
<Czech>Transfúze fyziologického roztoku</Czech>
<Polish>Przetocz sól fizjologiczną</Polish>
<French>Transfuser (liquide physiologique)</French>
<French>Transfuser (saline)</French>
<Russian>Перелить физраствор</Russian>
<Hungarian>Infúzió (sós víz)</Hungarian>
<Italian>Trasfusione di soluzione salina</Italian>
@ -313,7 +313,7 @@
<Spanish>Transfusión de salino...</Spanish>
<Czech>Probíha transfúze fyziologického roztoku...</Czech>
<Polish>Przetaczanie soli fizjologicznej...</Polish>
<French>Transfusion (liquide physiologique)...</French>
<French>Transfusion (solution saline)...</French>
<Russian>Переливание физраствора...</Russian>
<Hungarian>Infúzió sós vizzel...</Hungarian>
<Italian>Effettuo la rasfusione di soluzione salina</Italian>
@ -426,7 +426,7 @@
<Russian>QuikClot</Russian>
<Polish>Opatrunek QuikClot</Polish>
<Czech>QuikClot</Czech>
<French>Compresse hydrophile</French>
<French>Bandage hémostatique</French>
<Hungarian>QuikClot</Hungarian>
<Italian>QuikClot (polvere emostatica)</Italian>
<Portuguese>QuikClot</Portuguese>
@ -663,7 +663,7 @@
<Spanish>Dar Salino IV (1000ml)</Spanish>
<Russian>Перелить пакет физраствора (1000 мл)</Russian>
<Polish>Podaj sól fizjologiczną IV (1000ml)</Polish>
<French>Liquide physiologique en IV (1000ml)</French>
<French>Solution saline en IV (1000ml)</French>
<Czech>Podaz fyz. roztok (1000ml)</Czech>
<Hungarian>Sós víz adása intravénásan (1000ml)</Hungarian>
<Italian>Effettua trasfusione salina EV (1˙000ml)</Italian>
@ -677,7 +677,7 @@
<Spanish>Dar Salino IV (500ml)</Spanish>
<Russian>Перелить пакет физраствора (500 мл)</Russian>
<Polish>Podaj sól fizjologiczną IV (500ml)</Polish>
<French>Liquide physiologique en IV (500ml)</French>
<French>Solution saline en IV (500ml)</French>
<Czech>Podaz fyz. roztok (500ml)</Czech>
<Hungarian>Sós víz adása intravénásan (500ml)</Hungarian>
<Italian>Effettua trasfusione salina EV (500ml)</Italian>
@ -691,7 +691,7 @@
<Spanish>Dar Salino IV (250ml)</Spanish>
<Russian>Перелить пакет физраствора (250 мл)</Russian>
<Polish>Podaj sól fizjologiczną IV (250ml)</Polish>
<French>Liquide physiologique en IV (250ml)</French>
<French>Solution saline en IV (250ml)</French>
<Czech>Podaz fyz. roztok (250ml)</Czech>
<Hungarian>Sós víz adása intravénásan (250ml)</Hungarian>
<Italian>Effettua trasfusione salina EV (250ml)</Italian>
@ -992,7 +992,7 @@
<German>Bandage (Elastisch)</German>
<Russian>Повязка (давящая)</Russian>
<Spanish>Vendaje (Elástico)</Spanish>
<French>Bandage (Élastique)</French>
<French>Bande compressive</French>
<Polish>Bandaż (elastyczny)</Polish>
<Czech>Obvaz (Elastický)</Czech>
<Hungarian>Rögzító kötszer</Hungarian>
@ -1380,7 +1380,7 @@
<English>Saline IV (1000ml)</English>
<Russian>Физраствор для в/в вливания (1000 мл)</Russian>
<Spanish>Salino IV (1000ml)</Spanish>
<French>Liquide physiologique IV (1000ml)</French>
<French>Solution saline IV (1000ml)</French>
<Polish>Sól fizjologiczna IV (1000ml)</Polish>
<German>Kochsalzlösung (1000ml)</German>
<Hungarian>0,9%-os sósvíz-infúzió (1000ml)</Hungarian>
@ -1394,7 +1394,7 @@
<English>Saline IV, for restoring a patients blood</English>
<Russian>Пакет физраствора для возмещения объёма потерянной крови</Russian>
<Spanish>Solución salina intravenosa, para restaurar el volumen sanguíneo</Spanish>
<French>Liquide physiologique, pour rétablir temporairement la tension artérielle</French>
<French>Solution saline, pour rétablir temporairement la tension artérielle</French>
<Polish>Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV).</Polish>
<Hungarian>0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására</Hungarian>
<Italian>Soluzione salina, usata per ripristinare sangue nei pazienti.</Italian>
@ -1422,7 +1422,7 @@
<English>Saline IV (500ml)</English>
<Russian>Физраствор для в/в вливания (500 мл)</Russian>
<Spanish>Salino IV (500ml)</Spanish>
<French>Liquide physiologique IV (500ml)</French>
<French>Solution saline IV (500ml)</French>
<Polish>Sól fizjologiczna IV (500ml)</Polish>
<German>Kochsalzlösung (500ml)</German>
<Hungarian>0,9%-os sósvíz-infúzió (500ml)</Hungarian>
@ -1436,7 +1436,7 @@
<English>Saline IV (250ml)</English>
<Russian>Физраствор для в/в вливания (250 мл)</Russian>
<Spanish>Salino IV (250ml)</Spanish>
<French>Liquide physiologique IV (250ml)</French>
<French>Solution saline IV (250ml)</French>
<Polish>Sól fizjologiczna IV (250ml)</Polish>
<German>Kochsalzlösung (250ml)</German>
<Hungarian>0,9%-os sósvíz-infúzió (250ml)</Hungarian>
@ -1464,7 +1464,7 @@
<English>QuikClot bandage</English>
<Russian>Гемостатический пакет QuikClot</Russian>
<Spanish>Vendaje QuikClot</Spanish>
<French>Compresse hydrophile</French>
<French>Bandage hémostatique</French>
<Polish>Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności.</Polish>
<German>Bandage mit Gerinnungsmittel</German>
<Hungarian>QuikClot kötszer</Hungarian>

View File

@ -7,6 +7,7 @@
<German>Nur Spieler</German>
<Korean>오직 플레이어만</Korean>
<Polish>Tylko gracze</Polish>
<French>Joueurs seulement</French>
</Key>
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_DisplayName">
<English>Enable Blood Drops</English>
@ -14,12 +15,14 @@
<German>Aktiviere Blutspritzer</German>
<Korean>피흘리기 활성화</Korean>
<Polish>Włącz ślady krwi na ziemi</Polish>
<French>Active les gouttes de sang</French>
</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>
<Polish>Włącz lub wyłącz pozostawianie śladów krwi na ziemi kiedy postać odnosi obrażenia bądź krwawi</Polish>
<French>(Dés)active les gouttes de sang lors d'un saignement ou de blessure</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -22,7 +22,6 @@ class CfgAddons {
};
};
#include "CfgEventHandlers.hpp"
#include "gui\define.hpp"
#include "gui\settingsMenu.hpp"
@ -35,9 +34,8 @@ class ACE_Extensions {
extensions[] += {"ace_clipboard"};
};
class CfgCommands {
allowedHTMLLoadURIs[] += {
"http://ace3mod.com/version.html"
"https://ace3mod.com/version.html"
};
};

View File

@ -45,7 +45,7 @@ class ACE_Open_SettingsMenu_BtnBase : ACE_gui_buttonBase {
colorDisabled[] = {1,1,1,0.25};
colorFocused[] = {0,0,0,1};
colorText[] = {1,1,1,1};
default = 0;
//default = 0;
font = "RobotoCondensed";
idc = -1;
period = 1.2;
@ -77,69 +77,63 @@ class ACE_Open_SettingsMenu_BtnBase : ACE_gui_buttonBase {
class RscStandardDisplay;
class RscDisplayMPInterrupt: RscStandardDisplay {
class controls {
class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase {};
class ACE_Open_settingsMenu_Btn: ACE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterruptEditorPreview: RscStandardDisplay {
class controls {
class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase {};
class ACE_Open_settingsMenu_Btn: ACE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterrupt: RscStandardDisplay {
class controls {
class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase {};
class ACE_Open_settingsMenu_Btn: ACE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayInterruptEditor3D: RscStandardDisplay {
class controls {
class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase {};
class ACE_Open_settingsMenu_Btn: ACE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayMovieInterrupt: RscStandardDisplay {
class controls {
class ACE_Open_settingsMenu_Btn : ACE_Open_SettingsMenu_BtnBase {};
class ACE_Open_settingsMenu_Btn: ACE_Open_SettingsMenu_BtnBase {};
};
};
class RscDisplayMain: RscStandardDisplay {
class controls {
class ACE_news_apex: RscControlsGroupNoHScrollbars {
idc = 80090;
x = "safezoneX + safezoneW - 10 * (pixelW * pixelGrid * 2) - (4 * pixelH)";
y = "safezoneY + safezoneH - (3 * 2 + 1) * (pixelH * pixelGrid * 2) - 3 * (4 * pixelH)";
w = "10 * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 2)";
class Controls {
class Background: RscPicture {
idc = 80091;
text = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\gradientMods_ca.paa";
colorText[] = {0,0,0,0.75};
x = "(10 - 4 * 2) * (pixelW * pixelGrid * 2)";
y = 0;
w = "4 * 2 * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 2)";
angle = 180;
};
class BackgroundIcon: RscPicture {
idc = 80092;
text = "\a3\Ui_f\data\GUI\Rsc\RscDisplayMain\backgroundModsIcon_ca.paa";
colorText[] = {0,0,0,0.75};
x = "(10 - 2 * 2) * (pixelW * pixelGrid * 2)";
y = 0;
w = "2 * 2 * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 2)";
angle = 180;
};
class Icon: RscPicture {
idc = 80093;
class InfoMods: RscControlsGroupNoHScrollbars {
class Controls;
};
class InfoNews: InfoMods {
class Controls: Controls {
class Background;
class BackgroundIcon;
class Icon;
class News;
class Notification;
class Button;
};
};
class ACE_news_apex: InfoNews {
idc = IDC_MAIN_INFO;
y = "safezoneY + safezoneH - (3 * 2 + 1) * (pixelH * pixelGrid * 2) - 4 * (4 * pixelH)";
class Controls: Controls {
class Background: Background {};
class BackgroundIcon: BackgroundIcon {};
class Icon: Icon {
text = QPATHTOF(gui\aceMenuIcon_ca.paa);
colorText[] = {1,1,1,0.5};
x = "(10 - 2) * (pixelW * pixelGrid * 2)";
y = 0;
w = "2 * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 2)";
};
class CurrentVersionInfo: RscText {
idc = 80094;
idc = IDC_MAIN_INFO_CURRENT_VERSION_INFO;
style = 1;
text = "";
sizeEx = "(pixelH * pixelGrid * 1.5)";
@ -149,12 +143,13 @@ class RscDisplayMain: RscStandardDisplay {
x = 0;
y = 0;
w = "(10 - 1.25 * 2) * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 1)";
h = "1 * (pixelH * pixelGrid * 2)";
onLoad = "(_this select 0) ctrlenable false;";
};
class HTTPVersionInfo: RscHTML {
idc = 80095;
idc = IDC_MAIN_INFO_NEWEST_VERSION_INFO;
shadow = 0;
class H1 {
sizeEx = "(pixelH * pixelGrid * 1.5)";
font = "RobotoCondensedLight";
@ -167,24 +162,16 @@ class RscDisplayMain: RscStandardDisplay {
class P: H1 {
sizeEx = "(pixelH * pixelGrid * 1.5)";
};
x = 0;
y = "2 * (pixelH * pixelGrid * 1)";
y = "1 * (pixelH * pixelGrid * 2)";
w = "(10 - 1.25 * 2) * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 1)";
h = "1 * (pixelH * pixelGrid * 2)";
onLoad = "(_this select 0) ctrlenable false;";
};
class Button: RscButtonMenu {
idc = 80096;
colorBackground[] = {0,0,0,0};
colorBackgroundFocused[] = {0,0,0,0};
colorBackground2[] = {0,0,0,0};
x = 0;
y = 0;
w = "10 * (pixelW * pixelGrid * 2)";
h = "2 * (pixelH * pixelGrid * 2)";
class Button: Button {
tooltip = "Download latest and report issues:";
url = "https://github.com/acemod/ACE3";
url = "https://github.com/acemod/ACE3/releases";
};
};
};

View File

@ -13,17 +13,47 @@
*
* Public: No
*/
#include "\a3\ui_f\hpp\defineResinclDesign.inc"
#include "script_component.hpp"
params ["_display"];
private _controlsGroup = _display displayCtrl IDC_MAIN_INFO;
//Need to load from profileNamespace because ace_settings might not be init if world = empty
if (profileNamespace getVariable [QGVAR(showNewsOnMainMenu), true]) then {
((_this select 0) displayCtrl 80090) ctrlShow true;
_controlsGroup ctrlShow true;
private _ace3VersionStr = (getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr")) select [0,5];
((_this select 0) displayCtrl 80094) ctrlSetText format ["Version: %1", _ace3VersionStr];
((_this select 0) displayCtrl 80095) htmlLoad "http://ace3mod.com/version.html";
private _fnc_onSetFocus = {
params ["_control"];
private _controlsGroup = ctrlParentControlsGroup _control;
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BACKGROUND) ctrlSetTextColor [1,1,1,1];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BACKGROUND_ICON) ctrlSetTextColor [1,1,1,1];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_ICON) ctrlSetTextColor [0,0,0,1];
};
private _fnc_onKillFocus = {
params ["_control"];
private _controlsGroup = ctrlParentControlsGroup _control;
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BACKGROUND) ctrlSetTextColor [0,0,0,0.75];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BACKGROUND_ICON) ctrlSetTextColor [0,0,0,0.75];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_ICON) ctrlSetTextColor [1,1,1,0.5];
};
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BUTTON) ctrlAddEventHandler ["MouseEnter", _fnc_onSetFocus];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BUTTON) ctrlAddEventHandler ["SetFocus", _fnc_onSetFocus];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BUTTON) ctrlAddEventHandler ["MouseExit", _fnc_onKillFocus];
(_controlsGroup controlsGroupCtrl IDC_MAIN_INFO_BUTTON) ctrlAddEventHandler ["KillFocus", _fnc_onKillFocus];
private _versionStr = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr") splitString ".";
_versionStr resize 3; // MAJOR, MINOR, PATCH
_versionStr = _versionStr joinString ".";
(_display displayCtrl IDC_MAIN_INFO_CURRENT_VERSION_INFO) ctrlSetText format ["Version: %1", _versionStr];
(_display displayCtrl IDC_MAIN_INFO_NEWEST_VERSION_INFO) htmlLoad "https://ace3mod.com/version.html";
} else {
((_this select 0) displayCtrl 80090) ctrlShow false;
_controlsGroup ctrlShow false;
};
/*

View File

@ -17,6 +17,10 @@
#include "\z\ace\addons\main\script_macros.hpp"
#define IDC_MAIN_INFO 80090
#define IDC_MAIN_INFO_CURRENT_VERSION_INFO 80091
#define IDC_MAIN_INFO_NEWEST_VERSION_INFO 80092
#define MENU_TAB_OPTIONS 0
#define MENU_TAB_COLORS 1

View File

@ -94,7 +94,7 @@ if (GVAR(showParticleEffects) && {(CBA_missionTime > ((_unit getVariable [QGVAR(
// Only compute jamming for the local player
if (_unit != ACE_player) exitWith {END_COUNTER(firedEH);};
_jamChance = _jamChance * ([[0.5, 1.5, 15, 150], 3 * _scaledTemperature] call EFUNC(common,interpolateFromArray));
_jamChance = _jamChance * ([[0.5, 1, 2, 8, 20, 150], 5 * _scaledTemperature] call EFUNC(common,interpolateFromArray));
// increase jam chance on dusty grounds if prone (and at ground level)
if ((stance _unit == "PRONE") && {((getPosATL _unit) select 2) < 1}) then {

View File

@ -31,7 +31,7 @@ if (_assistant isEqualTo _gunner) then {
[localize LSTRING(SwappedBarrel), QPATHTOF(UI\spare_barrel_ca.paa)] call EFUNC(common,displayTextPicture);
private _temp = _gunner getVariable [format [QGVAR(%1_temp), _weapon], 0];
private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0;
private _barrelMass = METAL_MASS_RATIO * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0;
// Instruct the server to load the coolest spare barrel into the weapon and
// store the removed barrel with the former weapon temperature. The server

View File

@ -27,7 +27,7 @@ private _timeVarName = format [QGVAR(%1_time), _weapon];
private _temperature = _unit getVariable [_tempVarName, 0];
private _lastTime = _unit getVariable [_timeVarName, 0];
private _barrelMass = 0.50 * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0;
private _barrelMass = METAL_MASS_RATIO * (getNumber (configFile >> "CfgWeapons" >> _weapon >> "WeaponSlotsInfo" >> "mass") / 22.0) max 1.0;
// Calculate cooling
_temperature = [_temperature, _barrelMass, CBA_missionTime - _lastTime] call FUNC(calculateCooling);

View File

@ -17,6 +17,7 @@
#include "\z\ace\addons\main\script_macros.hpp"
#define TEMP_TOLERANCE 50
#define METAL_MASS_RATIO 0.55
#ifdef DEBUG_MODE_FULL
#define TRACE_PROJECTILE_INFO(BULLET) _vdir = vectorNormalized velocity BULLET; _dir = (_vdir select 0) atan2 (_vdir select 1); _up = asin (_vdir select 2); _mv = vectorMagnitude velocity BULLET; TRACE_3("adjusted projectile",_dir,_up,_mv);

View File

@ -6,12 +6,14 @@
<Japanese>過圧の距離係数</Japanese>
<Korean>초과압력 거리 계수</Korean>
<Polish>Mnożnik dystansu nadciśnienia</Polish>
<French>Coéfficient de distance pour la surpression</French>
</Key>
<Key ID="STR_ACE_overpressure_distanceCoefficient_toolTip">
<English>Scales the overpressure effect [Default: 1]</English>
<Japanese>過圧効果の範囲 [標準: 1]</Japanese>
<Korean>초과압력의 효과 크기 [기본설정: 1]</Korean>
<Polish>Skaluje efekt nadciśnienia [Domyślne: 1]</Polish>
<French>Échelonne les effets de la surpression [Par défaut : 1]</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -6,114 +6,133 @@
<Japanese>スコープ</Japanese>
<Korean>조준경</Korean>
<Polish>Celowniki optyczne</Polish>
<French>Scopes</French>
</Key>
<Key ID="STR_ACE_Scopes_enabled_displayName">
<English>Enable ACE Scope adjustment</English>
<Japanese>ACE スコープ調節を有効化</Japanese>
<Korean>ACE 조준경 영점조작 활성화</Korean>
<Polish>Włącz ustawienia celowników optycznych ACE</Polish>
<French>Active ACE Scope adjustment</French>
</Key>
<Key ID="STR_ACE_Scopes_enabled_description">
<English>Enable adjustmet turrets on high powered scopes</English>
<Japanese>高倍率スコープでACE スコープ調節を有効化</Japanese>
<Korean>고성능 조준경 조절 나사 활성화</Korean>
<Polish>Włącz pokrętła regulacyjne </Polish>
<French>Permet de régler la hausse et la dérive sur les optiques de visée à fort grossissement</French>
</Key>
<Key ID="STR_ACE_Scopes_forceUseOfAdjustmentTurrets_displayName">
<English>Force adjustment turrets</English>
<Japanese>ACE スコープ調節を有効化</Japanese>
<Korean>조절 나사 강제</Korean>
<Polish>Wymuś użycie pokręteł regulacyjnych</Polish>
<French>Impose le réglage de la hausse/dérive</French>
</Key>
<Key ID="STR_ACE_Scopes_forceUseOfAdjustmentTurrets_description">
<English>Force usage of adjustmet turrets on high powered scopes</English>
<Japanese>高倍率スコープで調整の使用を強制させます</Japanese>
<Korean>고성능 조준경의 조절 나사 사용을 강제합니다</Korean>
<Polish>Wymuś użycie pokręteł regulacyjnych dla celowników o dużym powiększeniu</Polish>
<French>Impose le réglage de la hausse/dérive sur les optiques de visée à fort grossissement</French>
</Key>
<Key ID="STR_ACE_Scopes_correctZeroing_displayName">
<English>Correct zeroing</English>
<Japanese>ゼロイン調節</Japanese>
<Korean>영점 고치기</Korean>
<Polish>Poprawka zerowania </Polish>
<French>Corrige le zérotage</French>
</Key>
<Key ID="STR_ACE_Scopes_correctZeroing_description">
<English>Corrects the zeroing of all small arms sights</English>
<Japanese>全ての小口径用照準器のゼロインを調節します</Japanese>
<Korean>모든 소화기의 영점을 고칩니다</Korean>
<Polish>Poprawia zerowanie wszystkich celowników broni ręcznej</Polish>
<French>Corrige le zérotage des optiques de visée des petites armes</French>
</Key>
<Key ID="STR_ACE_Scopes_overwriteZeroRange_displayName">
<English>Overwrite zero distance</English>
<Japanese>ゼロイン距離を上書き</Japanese>
<Korean>영점거리 덮어쓰기</Korean>
<Polish>Nadpisuje ustawienie dla zerowego dystansu </Polish>
<French>Remplace la distance de zérotage</French>
</Key>
<Key ID="STR_ACE_Scopes_overwriteZeroRange_Description">
<English>Uses the 'defaultZeroRange' setting to overwrite the zero range of high power scopes</English>
<Japanese>'defaultZeroRange'設定を使う高倍率スコープのゼロイン距離を上書きします</Japanese>
<Korean>기존 고성능 조준경의 영점거리에 '기본설정 영점거리' 를 덮어씌웁니다</Korean>
<Polish>Używa 'defaultZeroRange' zamiast ustawionej odległości zerowania dla celowników o duzym przybliżeniu </Polish>
<French>Utilise le paramètre 'defaultZeroRange' pour remplacer la distance de zérotage sur les optiques de visée à fort grossissement</French>
</Key>
<Key ID="STR_ACE_Scopes_defaultZeroRange_displayName">
<English>Default zero distance</English>
<Japanese>標準のゼロイン距離</Japanese>
<Korean>기본설정 영점거리</Korean>
<Polish>Domyślne zerowanie</Polish>
<French>Distance de zérotage par défaut</French>
</Key>
<Key ID="STR_ACE_Scopes_defaultZeroRange_description">
<English>High power scopes will be zeroed at this distance</English>
<Japanese>高倍率スコープのゼロイン距離はこの設定になります</Japanese>
<Korean>고성능 조준경이 정해진 수만큼 영점거리를 맞추게 됩니다.</Korean>
<Polish>Celowniki o dużym powiększeniu będą zerowane dla tej odległości</Polish>
<French>Distance de zérotage par défaut des optiques de visée à fort grossissement</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceTemperature_displayName">
<English>Reference temperature</English>
<Japanese>温度の参照</Japanese>
<Korean>온도 기준</Korean>
<Polish>Referencyjna temperatura</Polish>
<French>Température de référence</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceTemperature_description">
<English>Temperature at which the scope was zeroed</English>
<Japanese>スコープがゼロインされる温度</Japanese>
<Korean>조준경 영점조준시 온도</Korean>
<Polish>Temperatura, przy której celownik został wyzerowany</Polish>
<French>Température de référence pour le zérotage des optiques</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceBarometricPressure_displayName">
<English>Reference barometric pressure</English>
<Japanese>気圧の参照</Japanese>
<Korean>기압 기준</Korean>
<Polish>Referencyjne ciśnienie barometryczne</Polish>
<French>Pression barométrique de référence</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceBarometricPressure_description">
<English>Barometric pressure at which the scope was zeroed</English>
<Japanese>気圧の参照</Japanese>
<Korean>조준경 영점조준시 기압</Korean>
<Polish>Ciśnienie barometryczne, przy którym celownik został wyzerowany</Polish>
<French>Pression barométrique de référence pour le zérotage des optiques</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceHumidity_displayName">
<English>Reference humidity</English>
<Japanese>湿度の参照</Japanese>
<Korean>습도 기준</Korean>
<Polish>Referencyjna wilgotność</Polish>
<French>Humidité de référence</French>
</Key>
<Key ID="STR_ACE_Scopes_zeroReferenceHumidity_description">
<English>Humidity at which the scope was zeroed</English>
<Japanese>スコープがゼロインされる湿度</Japanese>
<Korean>조준경 영점조준시 습도</Korean>
<Polish>Wilgotność powietrza, przy której celownik został wyzerowany</Polish>
<French>Taux d'humidité de référence pour le zérotage des optiques</French>
</Key>
<Key ID="STR_ACE_Scopes_deduceBarometricPressureFromTerrainAltitude_displayName">
<English>Deduce pressure from altitude</English>
<Japanese>高度により圧が減少</Japanese>
<Korean>고도에 맞춰 기압 설정</Korean>
<Polish>Ciśnienie określone na podstawie wysokości</Polish>
<French>Pression selon l'altitude</French>
</Key>
<Key ID="STR_ACE_Scopes_deduceBarometricPressureFromTerrainAltitude_description">
<English>Deduce the barometric pressure from the terrain altitude</English>
<Japanese>標高により気圧が減少されます</Japanese>
<Korean>주변 고도에 맞춰 기압을 설정합니다</Korean>
<Polish>Określ ciśnienie barometryczne na podstawie wysokości terenu</Polish>
<French>Détermine la pression barométrique selon l'altitude du terrain</French>
</Key>
<Key ID="STR_ACE_Scopes_AdjustUpMinor">
<English>Minor adjustment up</English>
@ -246,6 +265,7 @@
<Japanese>モジュールは高倍率ライフル スコープにおいて横風と仰角の調節ができます。</Japanese>
<Korean>이 모듈은 고성능 조준경에 조준 나사를 이용한 편차 및 고도 조절 기능을 더해줍니다.</Korean>
<Polish>Ten moduł włącza pokrętła kalibracyjne poprawki na wiatr oraz poprawki wysokości dla celowników o dużym powiększeniu.</Polish>
<French>Ce module ajoute les tambours de correction de la hausse et de dérive sur les optiques de visée à fort grossissement.</French>
</Key>
</Package>
</Project>
</Project>

View File

@ -60,7 +60,7 @@
<Key ID="STR_ACE_Slideshow_Controllers_DisplayName">
<English>Controllers</English>
<German>Steuereinheit</German>
<French>Controleurs</French>
<French>Contrôleurs</French>
<Polish>Kontroler</Polish>
<Hungarian>Vezérlők</Hungarian>
<Portuguese>Controles</Portuguese>
@ -74,7 +74,7 @@
<Key ID="STR_ACE_Slideshow_Controllers_Description">
<English>Controller object names, separated by commas if multiple.</English>
<German>Objekte die als Steuereinheit fungieren. Werden ggf. durch Kommata getrennt.</German>
<French>Noms de controleur d'objets, séparation par virgule si plusieurs</French>
<French>Noms de contrôleur d'objets, séparation par virgule si plusieurs</French>
<Polish>Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1.</Polish>
<Hungarian>Vezérlő objektum nevek, vesszővel elválasztva több darab esetén.</Hungarian>
<Portuguese>Nome dos objetos de controle, separado por vírgula se mais de um.</Portuguese>
@ -143,15 +143,17 @@
<English>Set Name</English>
<Polish>Ustaw nazwę</Polish>
<Japanese>名前設定</Japanese>
<French>Définir le nom</French>
</Key>
<Key ID="STR_ACE_Slideshow_SetName_Description">
<English>Name that will be used for main interaction entry (to distinguish multiple slideshows). Default: "Slides"</English>
<Polish>Nazwa, która będzie użyta w głównym menu interakcji (w celu rozróżnienia różnych slajdów). Domyślnie: "Slides"</Polish>
<Japanese>メイン インタラクション エントリで使われる名前を設定します。(複数のスライドショーを区別するため)。標準: "Slides"</Japanese>
<French>Un nom qui sera utilisé pour interagir avec plusieurs diaporamas. Par défaut : "Slides"</French>
</Key>
<Key ID="STR_ACE_Slideshow_Duration_DisplayName">
<English>Slide Duration</English>
<French>Durée d'une diapositive</French>
<French>Durée d'un diaporama</French>
<Polish>Czas trwania slajdów</Polish>
<Hungarian>Dia időtartam</Hungarian>
<Portuguese>Duração do Slide</Portuguese>
@ -165,7 +167,7 @@
</Key>
<Key ID="STR_ACE_Slideshow_Duration_Description">
<English>Duration of each slide. Default: 0 (Automatic Transitions Disabled)</English>
<French>Durée de chaque diapositive. Dafaut: 0 (transition automatique désactivée)</French>
<French>Durée de chaque diaporama. Défaut: 0 (transition automatique désactivée)</French>
<Polish>Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone)</Polish>
<Hungarian>A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva)</Hungarian>
<Portuguese>Duração de cada slide. Padrão: 0 (Transição automática desabilitada)</Portuguese>
@ -179,7 +181,7 @@
</Key>
<Key ID="STR_ACE_Slideshow_Interaction">
<English>Slides</English>
<French>Diapositives</French>
<French>Diapo</French>
<Polish>Slajdy</Polish>
<Hungarian>Diák</Hungarian>
<Portuguese>Slides</Portuguese>

View File

@ -16,7 +16,7 @@ for "_index" from 0 to (_countOptions - 1) do {
private _model = getText (_cfgClass >> "model");
if (_model != "") then {
private _array = _model splitString "\";
GVAR(cacheStaticModels) setVariable [toLower (_array select ((count _array) - 2)), _cfgClass];
GVAR(cacheStaticModels) setVariable [(_array select ((count _array) - 1)), true];
};
};
};
@ -32,7 +32,7 @@ for "_index" from 0 to (_countOptions - 1) do {
private _model = getText (_cfgClass >> "model");
if (_model != "") then {
private _array = _model splitString "\";
GVAR(cacheStaticModels) setVariable [toLower (_array select ((count _array) - 2)), _cfgClass];
GVAR(cacheStaticModels) setVariable [(_array select ((count _array) - 1)), true];
};
};
};

View File

@ -9,16 +9,14 @@
* Is surface taggable <BOOL>
*
* Example:
* [unit] call ace_tagging_fnc_checkTaggable
* [player] call ace_tagging_fnc_checkTaggable
*
* Public: No
*/
#include "script_component.hpp"
params ["_unit"];
[[_unit], {
[_this, {
params ["_unit"];
// Exit if no required item in inventory
@ -45,15 +43,11 @@ params ["_unit"];
if (_object isKindOf "Static") exitWith {false};
// If the class is not categorized correctly search the cache
private _array = str(_object) splitString " ";
private _str = toLower (_array select 1);
TRACE_1("Object:",_str);
private _objClass = GVAR(cacheStaticModels) getVariable _str;
private _modelName = (getModelInfo _object) select 0;
private _isStatic = GVAR(cacheStaticModels) getVariable [_modelName, false];
TRACE_2("Object:",_modelName,_isStatic);
// If the class in not on the cache, exit
if (isNil "_objClass") exitWith {
false
};
true
(!_isStatic)
}) exitWith {
TRACE_1("Pointed object is non static",_object);
false

View File

@ -49,15 +49,11 @@ if ((!isNull _object) && {
if (_object isKindOf "Static") exitWith {false};
// If the class is not categorized correctly search the cache
private _array = str(_object) splitString " ";
private _str = toLower (_array select 1);
TRACE_1("Object:",_str);
private _objClass = GVAR(cacheStaticModels) getVariable _str;
private _modelName = (getModelInfo _object) select 0;
private _isStatic = GVAR(cacheStaticModels) getVariable [_modelName, false];
TRACE_2("Object:",_modelName,_isStatic);
// If the class in not on the cache, exit
if (isNil "_objClass") exitWith {
false
};
true
(!_isStatic)
}) exitWith {
TRACE_1("Pointed object is non static",_object);
false

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="Tagging">
<Key ID="STR_ACE_Tagging_Tagging">
@ -75,6 +75,7 @@
<Russian>Маркер</Russian>
<Japanese>タグ</Japanese>
<Korean>뿌리기</Korean>
<French>Tag</French>
</Key>
<Key ID="STR_ACE_Tagging_XBlack">
<English>X black</English>
@ -195,4 +196,3 @@
</Key>
</Package>
</Project>

View File

@ -29,7 +29,7 @@ private _listbox = _display displayCtrl 16189;
if (alive _x) then {
_listbox lbSetData [_listbox lbAdd (name _x), getPlayerUID _x];
};
} forEach allPlayers;
} forEach ([] call CBA_fnc_players);
_listbox lbSetCurSel 0;
(_display displayCtrl 16188) cbSetChecked (_logic getVariable ["tpGroup",false]);

View File

@ -226,30 +226,35 @@
<Japanese>編集可能なオブジェクトを更新</Japanese>
<Polish>Aktualizuj edytowalne obiekty</Polish>
<Korean>수정 가능한 물체 갱신</Korean>
<French>Màj les objets éditables</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_curators">
<English>All Curators</English>
<Japanese>全キュレーター</Japanese>
<Korean>모든 큐레이터</Korean>
<Polish>Wszyscy kuratorzy</Polish>
<French>Tous curateurs</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_curators_desc">
<English>Apply changes to all curators</English>
<Japanese>全キュレーターへ変更を適用</Japanese>
<Korean>모든 큐레이터에 변화를 적용합니다</Korean>
<Polish>Zatwierdź zmiany dla wszystkich kuratorów</Polish>
<French>Applique les changements à tous les curateurs</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_removal">
<English>Remove Objects</English>
<Japanese>オブジェクトの削除</Japanese>
<Korean>물체 삭제</Korean>
<Polish>Usuń obiekty</Polish>
<French>Enlève les objets</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_removal_desc">
<English>Remove existing instead of adding new</English>
<Japanese>新しく追加するために削除します</Japanese>
<Korean>물체를 삭제합니다</Korean>
<Polish>Usuń istniejące zamiast dodawać nowe</Polish>
<French>Enlève les objets existants au lieu d'en ajouter de nouveaux</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_DisplayName">
<English>Global AI Skill</English>
@ -420,18 +425,21 @@
<Japanese>FRUES の追加と削除</Japanese>
<Korean>패스트로프 추가/제거</Korean>
<Polish>Dodaj/usuń FRIES</Polish>
<French>Aj./Enlève FRIES</French>
</Key>
<Key ID="STR_ACE_Zeus_NotFastRopeCompatible">
<English>%1 is not fastrope compatible.</English>
<Japanese>%1 はファストロープに対応していません。</Japanese>
<Korean>%1은 패스트로프하기에 적합하지 않습니다.</Korean>
<Polish>%1 nie jest kompatybilny ze zjazdem linowym.</Polish>
<French>%1 n'est pas compatible.</French>
</Key>
<Key ID="STR_ACE_Zeus_CantRemoveFRIES">
<English>Unable to remove FRIES, ropes are deployed.</English>
<Japanese>すでにロープが展開されているため、FRIES を削除できません。</Japanese>
<Korean>패스트로프 제거 불가능, 줄이 이미 배치되었습니다.</Korean>
<Polish>Nie można usunąć FRIES, liny są wypuszczone.</Polish>
<French>Pas en mesure d'enlever le FRIES, les cordes ne sont pas déployées.</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_DisplayName">
<English>Teleport Players</English>
@ -561,6 +569,7 @@
<Polish>Przełącz symulację</Polish>
<Japanese>シミュレーションをトグル</Japanese>
<Korean>재현 토글</Korean>
<French>Bascule Simulation</French>
</Key>
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName">
<English>Add Spare Wheel</English>
@ -814,4 +823,4 @@
<Korean>알 수 없는 반경 입력됨</Korean>
</Key>
</Package>
</Project>
</Project>

View File

@ -16,9 +16,9 @@ acex:
githubUrl: https://github.com/acemod/ACEX
version:
major: 3
minor: 1
patch: 1
build: 3
minor: 2
patch: 0
build: 4
markdown: kramdown

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

View File

@ -18,67 +18,120 @@ version:
Horus ATragMX software considers atmospheric conditions, gun data, ammunition, range, speed and muzzle velocity to calculate precise aiming solutions with "come-up" results and even accounts for Coriolis and spin drift effects. ATragMX, loaded on a handheld computer made by TDS Recon, is easy to use and lightning-fast. The Recon meets the rigorous MIL-STD-810F military standard for drops, vibration, humidity, altitude and extreme temperatures.
## 2. Usage
### 2.1 Example with M14 and default 7.62mm 20Rnd Mag
## 2. Requirement
- [Advanced Ballistics module enabled]({{ site.baseurl }}/wiki/feature/advanced-ballistics.html)
## 3. Usage
### 3.1 Opening the AtragMx
#### 3.1.1 Interaction Menu
- Open the self interaction menu <kbd>Ctrl</kbd> + <kbd>&nbsp;Win</kbd>
- Select `Equipment`
- Select `Open AtragMx`
#### 3.1.2 Custom key
- `OPTIONS` / `CONTROLS` / `CONFIGURE ADDONS` / `ACE3 Equipment`
#### 3.1.3 Inventory
<img src="{{ site.baseurl }}/img/wiki/feature/abtools_inventory.png" width="900" height="450" alt="Inventory management" />
### 3.2 Example with M14 and default 7.62mm 20Rnd Mag
**Start of the mission:**
- Open the Range Card and check the cartridge, the zeroed distance, the rifle twist, the muzzle velocity at 15°C and the bore height.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx1.png" width="1400" height="600" alt="RangeCard" />
- Open the [Range Card]({{ site.baseurl }}/wiki/feature/rangecard.html) and check the cartridge, the zeroed distance, the rifle twist, the muzzle velocity at 15°C and the bore height.
- Open the AtragMx and the `Atmsphr` column, select `Default` and `Done`. (cf manual, p 15)
- `Open Gun` the 7.62x51mm M80 in the `GunList`. (cf manual, p 25)
- Select `E` (English unit) at the top right. (cf manual, p 10)
- Open the `Gun` column, check and update the `Bore`, the `Rifle Twist` and `Done`.
- Select `M` (Metric unit) at the top right.
- Open the `Gun` column, check and update the `Muzzle Velocity`, the `Zero Range` and `Done`.
- *The Muzzle Velocity Table will be automatically updated.* (cf manual, p 22)
- Optionally, `Save Gun` and `Done` in the `GunList`.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx1.png" width="1400" height="600" alt="Range card" />
- Open the AtragMx and the `Atmsphr` column, select `Default` and `Done`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=15)
- `Open Gun` the 7.62x51mm M80 in the `GunList`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=25)
- Select `E` (English unit) at the top right. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=10)
- Open the `Gun` column, check and update the `Bore`, the `Rifle Twist` and `Done`.
- Select `M` (Metric unit) at the top right.
- Open the `Gun` column, check and update the `Muzzle Velocity`, the `Zero Range` and `Done`.
- *The Muzzle Velocity Table will be automatically updated.* [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=22)
- *(Must be edited manually for specific cartridges according with the range card)*
- Optionally, `Save Gun` and `Done` in the `GunList`.
**In position:**
- Update the `Atmsphr` column with the Kestrel and `Done`. (cf manual, p 15)
- *Check the new `Muzzle Velocity` in the `Gun` column.*
- Update the `Target` column. (cf manual, p 16, 30, 32, 33)
- Apply the vertical and horizontal elevations on the scope.
- Control the breath and press.
- Update the `Atmsphr` column with the [Kestrel 4500]({{ site.baseurl }}/wiki/feature/kestrel4500.html) and `Done`.
- *Check the new `Muzzle Velocity` in the `Gun` column.*
- Update the `Target` column (the [wind arrow]({{ site.baseurl }}/wiki/feature/weather.html) will also help). [[1]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=16) [[2]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=30) [[3]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=32) [[4]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=33)
- *The latitude for all common maps can be found in the [ACE3 Github]({{ site.ace.githubUrl }}/blob/master/addons/common/functions/fnc_getMapData.sqf).*
- Apply the vertical and horizontal elevations on the [scope]({{ site.baseurl }}/wiki/feature/scopes.html).
- Control the breath and press.
### 2.2 Example with Truing tool
### 3.3 Example with Truing tool
**Start of the mission:**
- Select `Drag Coef Table` in the `Options` menu. (cf manual, p 22)
- Add the `ZR` and the `C1` (`Gun` column) in the table and `Done`.
- Select `Drag Coef Table` in the `Options` menu.
- Add the `ZR` and the `C1` (`Gun` column) in the table and `Done`.
**In position:**
- Open the `Truing Drop` in the `Options` menu. (cf manual, p 23)
- Add the actual `Target Range` in the `SUPER` column and `Calc`.
- Add the same `Target Range` in the `SUB` column and `Calc`.
- Apply the actual scope elevation in the `Drop` field and `Calc`.
- `Accept` the new `C1`, `Gun` column and `Elev` are updated.
- *The Drag Coefficient Table will be automatically updated.*
- Optionally, `Save Gun` and `Done` in the `GunList`.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx2.png" width="1127" height="600" alt="Calculation" />
- If a new `Target Range` is applied in the `Target` column, select `Drag Coef Table` in the `Options` menu and `Done`.
- The ballistic coefficient `C1` and the elevation `Elev` will be recalculated.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx3.png" width="1123" height="600" alt="Interpolation" />
### 2.3 Example with overwritten zero distance
- Open the `Truing Drop` in the `Options` menu. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=23)
- Add the actual `Target Range` in the `SUPER` column and `Calc`.
- Add the same `Target Range` in the `SUB` column and `Calc`.
- Apply the actual scope elevation in the `Drop` field and `Calc`.
- `Accept` the new `C1`, `Gun` column and `Elev` are updated.
- *The Drag Coefficient Table will be automatically updated.* [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=22)
- Optionally, `Save Gun` and `Done` in the `GunList`.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx2.png" width="1127" height="600" alt="Calculation" />
- If a new `Target Range` is applied in the `Target` column, select `Drag Coef Table` in the `Options` menu and `Done`.
- The ballistic coefficient `C1` and the elevation `Elev` will be recalculated.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx3.png" width="1123" height="600" alt="Interpolation" />
- The `Default zero distance` can be overwritten with the `Scopes module` or the `serverconfig.hpp`.
- In this case, the Range Card will be automatically updated, NOT the AtragMx.
- Open the `Gun` column, check and update the `Zero Range` and `Done`.
### 3.4 Example with overwritten zero distance
- The `Default zero distance` can be overwritten with the [Scopes module]({{ site.baseurl }}/wiki/feature/scopes.html) or the [Settings Framework]({{ site.baseurl }}/wiki/framework/settings-framework.html).
- In this case, the [Range Card]({{ site.baseurl }}/wiki/feature/rangecard.html) will be automatically updated, NOT the AtragMx.
- Open the AtragMx and the `Atmsphr` column, select `Default` and `Done`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=15)
- Open the `Gun` column, check and update the `Zero Range` and `Done`.
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx4.png" width="1400" height="600" alt="Default zero distance" />
<img src="{{ site.baseurl }}/img/wiki/feature/atragmx4.png" width="1400" height="600" alt="Zero distance 300m" />
### 3.5 Example with `Add New Gun` in `GunList`
- Open the [Range Card]({{ site.baseurl }}/wiki/feature/rangecard.html) and check the cartridge, the caliber, the bullet weight and the muzzle velocities.
- Open the AtragMx and the `Atmsphr` column, select `Default` and `Done`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=15)
- Select `Add New Gun` in the `GunList`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=25)
- Add a `New Gun Name` and `Open Gun`.
- Select `E` (English unit) at the top right. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=10)
- Open the `Gun` column, check and update the `Bullet Weight (grains)`, the `Bullet Diam (inches)` and `Done`.
- Select `M` (Metric unit) at the top right.
- Open the `Muz Vel Table` in the `Options` menu or click on `MV` in the `Gun` column.
- Edit manually the `Muzzle Velocity Table` according with the [Range Card]({{ site.baseurl }}/wiki/feature/rangecard.html) and `Done`. [[Manual]](https://horusvision.com/download/manual_Horus_ATrag-v385.pdf#page=22)
- The `C1 coefficient` of the bullet can be found, for example, in the Eden Editor `Config Viewer`:
> configfile >> "CfgAmmo" >> "Range card cartridge" >> "ACE_ballisticCoefficients"
> configfile >> "CfgAmmo" >> "Range card cartridge" >> "ACE_dragModel"
- *The AtragMx accepts only **G1 ballistic coefficient**.*
- *G7 ballistic coefficient can be converted, for example, with the online [JBM Ballistics Calculators](http://www.jbmballistics.com/cgi-bin/jbmgf-5.1.cgi)*.
- Optionally, `Save Gun` and `Done` in the `GunList`.
For advanced users, the ballistic coefficient can be calculated by using the [360 Degree Training Course mission](https://forums.bistudio.com/forums/topic/171228-sp-360-degree-training-course/) as a chronograph at different distances and [JBM Ballistics Calculators](http://www.jbmballistics.com/cgi-bin/jbmbcv-5.1.cgi) for example, or an another ballistic software at your own convenience.
## 3. Official Manual and Horus Videos
- [Official Manual](https://github.com/acemod/ACE3/blob/master/extras/manual_Horus_ATrag-v385.pdf)
- [Horus video part1](https://www.youtube.com/watch?v=pg6oqT5jVds)
- [Horus video part2](https://www.youtube.com/watch?v=7SkRnbwoPmw)
## 4. Dependencies
## 4. Official Manual and Horus Videos
- [Official Manual]({{ site.ace.githubUrl }}/blob/master/extras/manual_Horus_ATrag-v385.pdf)
- [Horus video part1](https://www.youtube.com/watch?v=pg6oqT5jVds)
- [Horus video part2](https://www.youtube.com/watch?v=7SkRnbwoPmw)
## 5. Dependencies
{% include dependencies_list.md component="atragmx" %}

View File

@ -34,6 +34,7 @@ Please not that the following key combinations are ACE3 default key binds.
- Major adjustment left <kbd>Ctrl</kbd> + <kbd>&nbsp;Shift</kbd> + <kbd>page Down</kbd>.
### 2.3 Scopes Module
<img src="{{ site.baseurl }}/img/wiki/feature/scope_module.jpg" width="799" height="620" alt="Editor's scopes module" />

View File

@ -78,13 +78,19 @@ The Vector is controlled with 2 keys: the azimuth key and the range key; <kbd>Ta
- Sight the circle on the first object and tap <kbd>R</kbd> while further holding <kbd>Tab&nbsp;</kbd>. The first measurement is confirmed ("1-P" = first point).
- Sight the second object and release <kbd>Tab&nbsp;</kbd>.
### 2.9 Fall of shot
#### 2.9 Fall of shot
<img src="{{ site.baseurl }}/img/wiki/user/vector9.jpg" width="500" height="160" alt="Measuring Fall of shot"/>
- Tap <kbd>Tab&nbsp;</kbd> once then press and hold it until the azimuth appears.
- Sight the circle on the object and tap <kbd>R</kbd> while further holding <kbd>Tab&nbsp;</kbd>. The first measurement is confirmed ("1-P" = first point).
- Sight the Fall of shot and release <kbd>Tab&nbsp;</kbd>. The left digits display the left (`L`)/right (`r`) correction value in meter and the right digits display the longer (`A` = add)/shorter (`d` = drop) correction value in meter. If <kbd>R</kbd> is tapped the height correction values will be displayed (`UP` and `dn`).
#### 2.10 Setting the measurement units (degrees/mils &amp; meters/feet)
- Tap <kbd>Tab&nbsp;</kbd> five times fast. "Unit SEtt" appears briefly.
- Press <kbd>R</kbd> until the desired units are displayed.
- Tap <kbd>Tab&nbsp;</kbd> five times fast to save the selection.
## 3. Dependencies
{% include dependencies_list.md component="vector" %}