diff --git a/addons/advanced_throwing/functions/fnc_exitThrowMode.sqf b/addons/advanced_throwing/functions/fnc_exitThrowMode.sqf index c508d0a803..359bd946a5 100644 --- a/addons/advanced_throwing/functions/fnc_exitThrowMode.sqf +++ b/addons/advanced_throwing/functions/fnc_exitThrowMode.sqf @@ -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) diff --git a/addons/advanced_throwing/functions/fnc_prime.sqf b/addons/advanced_throwing/functions/fnc_prime.sqf index 727ace4e23..d52bee67f2 100644 --- a/addons/advanced_throwing/functions/fnc_prime.sqf +++ b/addons/advanced_throwing/functions/fnc_prime.sqf @@ -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"); diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index b86b2eb576..f5bcbb758a 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -4,7 +4,7 @@ 6.5x47mm 20Rnd Mag (HPBT Scenar) - Ch. 6.5x47mm 20Cps (HPBT Scenar) + Ch. 6,5x47mm 20Cps (HPBT Scenar) Cargador de 20 balas de 6.5x47mm (HPBT Scenar) Magazynek 6,5x47mm 20rd (HPBT Scenar) Магазин из 20-ти 6,5x47 мм (экспансивные Scenar) @@ -18,7 +18,7 @@ 6.5mm Lapua - 6.5mm Lapua + 6,5mm Lapua 6.5mm Lapua 6,5mm Lapua 6,5 мм Lapua @@ -32,7 +32,7 @@ Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 20<br />Used in: QBU-88 - Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 20 + Calibre: 6,5x47mm (HPBT Scenar)<br />Cartouches: 20 Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 20<br />Se usa en: QBU-88 Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 20 Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 20<br />Используются с: QBU-88 @@ -51,7 +51,7 @@ Магазин из 20-ти 6,5 мм Creedmor 6,5mm Creedmor 20-Patronen-Magazin Cargador de 20 balas Creedmor de 6.5mm - Ch. 6.5mm Creedmor 20Cps + Ch. 6,5mm Creedmor 20Cps 6.5mm Creedmor 20náb. Zásobník Carregador 6.5mm com 20 cartuchos Creedmor 6,5mm Creedmor 20-lövedékes tár @@ -60,7 +60,7 @@ 6.5mm CM - 6.5mm CM + 6,5mm CM 6.5mm CM 6,5mm CM 6,5 мм CM @@ -76,7 +76,7 @@ Caliber: 6.5x47mm Creedmor<br />Rounds: 20<br />Used in: QBU-88 Kaliber: 6,5x47mm Creedmor<br />Pociski: 20<br />Używany w: QBU-88 Kaliber: 6,5x47mm Creedmor<br />Patronen: 20<br />Eingesetzt von: QBU-88 - Calibre: 6.5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88 + Calibre: 6,5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88 Calibro: 6.5mm Creedmor<br />Munizioni: 20<br />In uso su: QBU-88 Calibre: 6.5mm Creedmor<br />Balas: 20<br />Se usa en: QBU-88 Калибр: 6,5x47мм Creedmor<br />Патронов: 20<br />Используются c: QBU-88 @@ -642,7 +642,7 @@ 9.3mm 10Rnd Tracer Mag 9,3mm 10-Patronen-Magazin Leuchtspur Magazynek 9.3mm 10rd Smugacz - Ch. 9.3mm 10Cps Traçante + Ch. 9,3mm 10Cps Traçante Cargador de 10 balas trazadoras de 9.3mm Магазин из 10-ти 9,3 мм трассирующих 9.3mm 10Rnd Tracer Mag @@ -657,7 +657,7 @@ 9,3mm Leuchtspur 9,3mm Smugacz 9.3mm Svítící - 9.3mm Traçante + 9,3mm Traçante 9.3mm Trazadora 9,3 мм трассирующие 9.3mm Tracer @@ -670,7 +670,7 @@ Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9,3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus @@ -684,7 +684,7 @@ 9.3mm 10Rnd Tracer IR-DIM Mag 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM Magazynek 9,3mm 10rd Smugacz IR-DIM - Ch. 9.3mm 10Cps Traçante IR-DIM + Ch. 9,3mm 10Cps Traçante IR-DIM Cargador de 10 balas trazadoras IR-DIM de 9.3mm Магазин из 10-ти 9,3 мм ИК-трассирующих 9.3mm 10Rnd Tracciante IR-DIM Mag @@ -699,7 +699,7 @@ 9,3mm IR-DIM 9,3mm IR-DIM 9.3mm IR-DIM - 9.3mm IR-DIM + 9,3mm IR-DIM 9.3mm IR-DIM 9,3 мм ИК-трассирующие 9.3mm IR-DIM @@ -712,7 +712,7 @@ Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9,3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus @@ -727,7 +727,7 @@ 9.3mm 150Rnd Tracer Belt 9,3mm 150-Patronen-Gurt Leuchtspur Taśma 9,3mm 150rd Smugacz - Bande 9.3mm 150Cps Traçante + Bande 9,3mm 150Cps Traçante Cinta de 150 balas trazadoras de 9.3mm Лента из 150-ти 9,3 мм трассирующих 9.3mm 150Rnd Tracer Belt @@ -742,7 +742,7 @@ 9,3mm Leuchtspur 9,3mm Smugacz 9.3mm Svítící - 9.3mm Traçante + 9,3mm Traçante 9.3mm Trazadora 9,3 мм трассирующие 9.3mm Tracciante @@ -755,7 +755,7 @@ Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9,3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid @@ -769,7 +769,7 @@ 9.3mm 150Rnd Tracer IR-DIM Belt 9,3mm 150-Patronen-Gurt Leuchtspur IR-DIM Taśma 9,3mm 150rd Smugacz IR-DIM - Bande 9.3mm 150Cps Traçante IR-DIM + Bande 9,3mm 150Cps Traçante IR-DIM Cinta de 150 balas trazadoras IR-DIM de 9.3mm Лента из 150-ти 9,3 мм ИК-трассирующих 9.3mm 150Rnd Tracciante IR-DIM Belt @@ -784,7 +784,7 @@ 9,3mm IR-DIM 9,3mm IR-DIM 9.3mm IR-DIM - 9.3mm IR-DIM + 9,3mm IR-DIM 9.3mm IR-DIM 9,3 мм ИК-трассирующие 9.3mm IR-DIM @@ -797,7 +797,7 @@ Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9,3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid @@ -811,7 +811,7 @@ 9.3mm 150Rnd AP Belt 9,3mm 150-Patronen-Gurt Hartkern Taśma 9,3mm 150rd AP - Bande 9.3mm 150Cps AP + Bande 9,3mm 150Cps AP Cinta de 150 balas AP de 9.3mm Лента из 150-ти 9,3 мм бронебойных 9.3mm 150Rnd AP Belt @@ -826,7 +826,7 @@ 9,3mm AP 9,3mm AP 9.3mm AP - 9.3mm AP + 9,3mm AP 9.3mm AP 9,3 мм бронебойные 9.3mm AP @@ -839,7 +839,7 @@ Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9,3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid @@ -936,7 +936,7 @@ 7.62x54mm 10Rnd Tracer Mag Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Rnd Traçante + Ch. 7,62x54mm 10Cps Traçante Cargador de 10 balas trazadoras de 7.62x54mm Магазин из 10-ти 7,62 мм ИК-трассирующих 7,62x54mm 10-Patronen-Magazin Leuchtspur @@ -950,7 +950,7 @@ 7.62mm 7,62mm - 7.62mm + 7,62mm 7.62mm 7,62 мм 7,62mm @@ -964,7 +964,7 @@ 7.62x54mm 10Rnd Tracer Mag Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Cps Traçante + Ch. 7,62x54mm 10Cps Traçante Cargador de 10 balas trazadoras de 7.62x54mm Магазин из 10-ти 7,62 мм ИК-трассирующих 7,62x54mm 10-Patronen-Magazin Leuchtspur @@ -978,7 +978,7 @@ 6.5mm 100Rnd Tracer IR-DIM Mag Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM + Ch. 6,5mm 100Cps Traçante IR-DIM Cargador de 100 balas trazadoras IR-DIM de 6.5mm Магазин из 100 6,5 мм ИК-трассирующих 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur @@ -992,7 +992,7 @@ 6.5mm IR-DIM 6,5mm IR-DIM - 6.5mm IR-DIM + 6,5mm IR-DIM 6.5mm IR-DIM 6,5 мм ИК-трассирующие 6,5mm IR-DIM @@ -1006,7 +1006,7 @@ 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW + Ch. 6,5mm 100Cps Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW Cargador de 100 balas trazadoras IR-DIM de 6.5mm Магазин из 100 6,5 мм ИК-трассирующих 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW @@ -1020,7 +1020,7 @@ 6.5mm 200Rnd Tracer IR-DIM Belt Magazynek 6,5mm 200rd Smugacz IR-DIM - Bande 6.5mm 200Rnd Traçante IR-DIM + Bande 6,5mm 200Cps Traçante IR-DIM Cinta de 200 balas trazadoras IR-DIM de 6.5mm Магазин из 200-т 6,5 мм ИК-трассирующих 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur @@ -1034,7 +1034,7 @@ 6.5mm IR-DIM 6,5mm IR-DIM - 6.5mm IR-DIM + 6,5mm IR-DIM 6.5mm IR-DIM 6,5 мм ИК-трассирующие 6,5mm IR-DIM @@ -1062,7 +1062,7 @@ 5.56mm 30Rnd Mag (Mk262) Magazynek 5,56mm 30rd Mk262 - 5.56mm 30Cps (Mk262) + 5,56mm 30Cps (Mk262) Cargador de 30 balas de 5.56mm (Mk262) Магазин из 30-ти 5.56 мм Mk262 5,56mm 30-Patronen-Magazin (Mk262) @@ -1076,7 +1076,7 @@ 5.56mm Mk262 5,56mm Mk262 - 5.56mm Mk262 + 5,56mm Mk262 5.56mm Mk262 5,56 мм Mk262 5,56mm Mk262 @@ -1090,7 +1090,7 @@ Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 + Calibre: 5,56x45mm NATO (Mk262)<br />Cartouches: 30 Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30 Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30 Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30 @@ -1104,7 +1104,7 @@ 5.56mm 30Rnd Mag (Mk318) Magazynek 5,56mm 30rd (Mk318) - Ch. 5.56mm 30Cps (Mk318) + Ch. 5,56mm 30Cps (Mk318) Cargador de 30 balas de 5.56mm (Mk318) Магазин из 30-ти 5.56 мм (Mk318) 5,56mm 30-Patronen-Magazin (Mk318) @@ -1118,7 +1118,7 @@ 5.56mm Mk318 5,56mm Mk318 - 5.56mm Mk318 + 5,56mm Mk318 5.56mm Mk318 5.56 мм Mk318 5,56mm Mk318 @@ -1132,7 +1132,7 @@ Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 + Calibre: 5,56x45mm NATO (Mk318)<br />Cartouches: 30 Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30 Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30 Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30 @@ -1146,7 +1146,7 @@ 5.56mm 30Rnd Mag (M995 AP) Magazynek 5,56mm 30rd (M995 AP) - Ch. 5.56mm 30Cps (M995 AP) + Ch. 5,56mm 30Cps (M995 AP) Cargador de 30 balas de 5.56mm (M995 AP) Магазин из 30-ти 5.56 мм (M995 бронебойные) 5,56mm 30-Patronen-Magazin (M995AP) @@ -1160,7 +1160,7 @@ 5.56mm AP 5,56mm AP - 5.56mm AP + 5,56mm AP 5.56mm AP 5.56 мм бронебойные 5,56mm AP @@ -1174,7 +1174,7 @@ Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 + Calibre: 5,56x45mm NATO (M995 AP)<br />Cartouches: 30 Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30 Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30 Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30 @@ -1188,7 +1188,7 @@ 7.62mm 10Rnd Mag (M118LR) Magazynek 7,62mm 10rd (M118LR) - Ch. 7.62mm 10Cps (M118LR) + Ch. 7,62mm 10Cps (M118LR) Cargador de 10 balas de 7.62mm (M118LR) Магазин из 10-ти 7,62 мм (M118LR) 7,62mm 10-Patronen-Magazin (M118LR) @@ -1202,7 +1202,7 @@ 7.62mm M118LR 7,62mm M118LR - 7.62mm M118LR + 7,62mm M118LR 7.62mm M118LR 7,62 мм M118LR 7,62mm M118LR @@ -1216,7 +1216,7 @@ Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 + Calibre: 7,62x51mm NATO (M118LR)<br />Cartouches: 10 Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10 Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10 Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10 @@ -1230,7 +1230,7 @@ 7.62mm 20Rnd Mag (M118LR) Magazynek 7,62mm 20rd (M118LR) - Ch. 7.62mm 20Cps (M118LR) + Ch. 7,62mm 20Cps (M118LR) Cargador de 20 balas de 7.62mm (M118LR) Магазин из 20-ти 7,62 мм (M118LR) 7,62mm 20-Patronen-Magazin (M118LR) @@ -1244,7 +1244,7 @@ 7.62mm M118LR 7,62mm M118LR - 7.62mm M118LR + 7,62mm M118LR 7.62mm M118LR 7,62 мм M118LR 7,62mm M118LR @@ -1272,7 +1272,7 @@ 7.62mm 10Rnd Mag (Mk316 Mod 0) Magazynek 7,62mm 10rd (Mk316 Mod 0) - Ch. 7.62mm 10Cps (Mk316 Mod 0) + Ch. 7,62mm 10Cps (Mk316 Mod 0) Cargador de 10 balas de 7.62mm (Mk316 Mod 0) Магазин из 10-ти 7,62 мм (Mk316 Mod 0) 7,62mm 10-Patronen-Magazin (Mk316 Mod 0) @@ -1286,7 +1286,7 @@ 7.62mm Mk316 7,62mm Mk316 - 7.62mm Mk316 + 7,62mm Mk316 7.62mm Mk316 7,62 мм Mk316 7,62mm Mk316 @@ -1300,7 +1300,7 @@ Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 + Calibre: 7,62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10 Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10 @@ -1314,7 +1314,7 @@ 7.62mm 20Rnd Mag (Mk316 Mod 0) Magazynek 7,62mm 20rd (Mk316 Mod 0) - Ch. 7.62mm 20Cps (Mk316 Mod 0) + Ch. 7,62mm 20Cps (Mk316 Mod 0) Cargador de 20 balas de 7.62mm (Mk316 Mod 0) Магазин из 20-ти 7,62 мм (Mk316 Mod 0) 7,62mm 20-Patronen-Magazin (Mk316 Mod 0) @@ -1328,7 +1328,7 @@ 7.62mm Mk316 7,62mm Mk316 - 7.62mm Mk316 + 7,62mm Mk316 7.62mm Mk316 7,62 мм Mk316 7,62mm Mk316 @@ -1342,7 +1342,7 @@ Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 + Calibre: 7,62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20 Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20 Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20 @@ -1356,7 +1356,7 @@ 7.62mm 10Rnd Mag (Mk319 Mod 0) Magazynek 7,62mm 10rd (Mk319 Mod 0) - Ch. 7.62mm 10Cps (Mk319 Mod 0) + Ch. 7,62mm 10Cps (Mk319 Mod 0) Cargador de 10 balas de 7.62mm (Mk319 Mod 0) Магазин из 10-ти 7,62 мм (Mk319 Mod 0) 7,62mm 10-Patronen-Magazin (Mk319 Mod 0) @@ -1370,7 +1370,7 @@ 7.62mm Mk319 7,62mm Mk319 - 7.62mm Mk319 + 7,62mm Mk319 7.62mm Mk319 7,62 мм Mk319 7,62mm Mk319 @@ -1384,7 +1384,7 @@ Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 + Calibre: 7,62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10 Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10 @@ -1398,7 +1398,7 @@ 7.62mm 20Rnd Mag (Mk319 Mod 0) Magazynek 7,62mm 20rd (Mk319 Mod 0) - Ch. 7.62mm 20Cps (Mk319 Mod 0) + Ch. 7,62mm 20Cps (Mk319 Mod 0) Cargador de 20 balas de 7.62mm (Mk319 Mod 0) Магазин из 20-ти 7,62 мм (Mk319 Mod 0) 7,62mm 20-Patronen-Magazin (Mk319 Mod 0) @@ -1412,7 +1412,7 @@ 7.62mm Mk319 7,62mm Mk319 - 7.62mm Mk319 + 7,62mm Mk319 7.62mm Mk319 7,62 мм Mk319 7,62mm Mk319 @@ -1426,7 +1426,7 @@ Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 + Calibre: 7,62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20 Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20 Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20 @@ -1440,7 +1440,7 @@ 7.62mm 10Rnd Mag (M993 AP) Magazynek 7,62mm 10rd (M993 AP) - Ch. 7.62mm 10Cps (M993 AP) + Ch. 7,62mm 10Cps (M993 AP) Cargador de 10 balas de 7.62mm (M993 AP) Магазин из 10-ти 7,62 мм (M993 бронебойные) 7,62mm 10-Patronen-Magazin (M993 AP) @@ -1454,7 +1454,7 @@ 7.62mm AP 7,62mm AP - 7.62mm AP + 7,62mm AP 7.62mm AP 7,62mm бронебойные 7,62mm AP @@ -1468,7 +1468,7 @@ Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 + Calibre: 7,62x51mm NATO (M993 AP)<br />Cartouches: 10 Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10 Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10 Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10 @@ -1482,7 +1482,7 @@ 7.62mm 20Rnd Mag (M993 AP) Magazynek 7,62mm 20rd (M993 AP) - Ch. 7.62mm 20Cps (M993 AP) + Ch. 7,62mm 20Cps (M993 AP) Cargador de 20 balas de 7.62mm (M993 AP) Магазин из 20-ти 7,62 мм (M993 бронебойные) 7,62mm 20-Patronen-Magazin (M993 AP) @@ -1496,7 +1496,7 @@ 7.62mm AP 7,62mm AP - 7.62mm AP + 7,62mm AP 7.62mm AP 7,62 мм бронебойные 7,62mm AP @@ -1510,7 +1510,7 @@ Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 + Calibre: 7,62x51mm NATO (M993 AP)<br />Cartouches: 20 Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20 Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20 Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20 @@ -1524,7 +1524,7 @@ 7.62mm 20Rnd Mag (Mk248 Mod 0) Magazynek 7,62mm 20rd (Mk248 Mod 0) - Ch. 7.62mm 20Cps (Mk248 Mod 0) + Ch. 7,62mm 20Cps (Mk248 Mod 0) Cargador de 20 balas de 7.62mm (Mk248 Mod 0) Магазин из 20-ти 7,62 мм (Mk248 Mod 0) 7,62mm 20-Patronen-Magazin (Mk248 Mod 0) @@ -1538,7 +1538,7 @@ 7.62mm Mk248 7,62mm Mk248 - 7.62mm Mk248 + 7,62mm Mk248 7.62mm Mk248 7,62 мм Mk248 7,62mm Mk248 @@ -1552,7 +1552,7 @@ Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 + Calibre: 7,62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20 Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20 Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20 @@ -1566,7 +1566,7 @@ 7.62mm 20Rnd Mag (Mk248 Mod 1) Magazynek 7,62mm 20rd (Mk248 Mod 1) - Ch. 7.62mm 20Cps (Mk248 Mod 1) + Ch. 7,62mm 20Cps (Mk248 Mod 1) Cargador de 20 balas de 7.62mm (Mk248 Mod 1) Магазин из 20-ти 7,62 мм (Mk248 Mod 1) 7,62mm 20-Patronen-Magazin (Mk248 Mod 1) @@ -1580,7 +1580,7 @@ 7.62mm Mk248 7,62mm Mk248 - 7.62mm Mk248 + 7,62mm Mk248 7.62mm Mk248 7,62 мм Mk248 7,62mm Mk248 @@ -1594,7 +1594,7 @@ Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 + Calibre: 7,62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20 Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20 Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20 @@ -1608,7 +1608,7 @@ 7.62mm 20Rnd Mag (Berger Hybrid OTM) Magazynek 7,62mm 20rd (Berger Hybrid OTM) - Ch. 7.62 20Cps (Berger Hybrid OTM) + Ch. 7,62 20Cps (Berger Hybrid OTM) Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) Магазин из 20-ти 7,62 мм (Berger Hybrid OTM) 7,62mm 20-Patronen-Magazin (Berger Hybrid OTM) @@ -1622,7 +1622,7 @@ 7.62mm OTM 7,62mm OTM - 7.62mm OTM + 7,62mm OTM 7.62mm OTM 7,62 мм OTM 7,62mm OTM @@ -1636,7 +1636,7 @@ Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 + Calibre: 7,62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20 Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20 Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20 @@ -1649,7 +1649,7 @@ 6.5x47mm 30Rnd Mag (HPBT Scenar) - Ch. 6.5x47mm 30Cps (HPBT Scenar) + Ch. 6,5x47mm 30Cps (HPBT Scenar) Cargador de 30 balas de 6.5x47mm (HPBT Scenar) Magazynek 6,5x47mm 30rd (HPBT Scenar) Магазин из 30-ти 6,5x47 мм (экспансивные Scenar) @@ -1663,7 +1663,7 @@ 6.5mm Lapua - 6.5mm Lapua + 6,5mm Lapua 6.5mm Lapua 6,5mm Lapua 6,5 мм Lapua @@ -1677,7 +1677,7 @@ Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM - Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 + Calibre: 6,5x47mm (HPBT Scenar)<br />Cartouches: 30 Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30 Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM @@ -1696,7 +1696,7 @@ Магазин из 30-ти 6,5 мм Creedmor 6,5mm Creedmor 30-Patronen-Magazin Cargador de 30 balas Creedmor de 6.5mm - Ch. 6.5mm Creedmor 30Cps + Ch. 6,5mm Creedmor 30Cps 6.5mm Creedmor 30náb. Zásobník Carregador 6.5mm com 30 cartuchos Creedmor 6,5mm Creedmor 30-lövedékes tár @@ -1705,7 +1705,7 @@ 6.5mm CM - 6.5mm CM + 6,5mm CM 6.5mm CM 6,5mm CM 6,5 мм CM @@ -1721,7 +1721,7 @@ Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM - Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM + Calibre: 6,5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM @@ -1761,7 +1761,7 @@ Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10 - Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10 + Calibre: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10 Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10 Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10 Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10 @@ -1803,7 +1803,7 @@ Caliber: 8.6x70mm (API526)<br />Rounds: 10 - Calibre: 8.6x70mm (API526)<br />Cartouches: 10 + Calibre: 8,6x70mm (API526)<br />Cartouches: 10 Calibre: 8.6x70mm (API526)<br />Balas: 10 Kaliber: 8,6x70mm (API526)<br />Pociski: 10 Калибр: 8,6x70 мм (API526)<br />Патронов: 10 @@ -1859,7 +1859,7 @@ 12.7x99mm 5Rnd Mag - Ch. 12.7x99mm 5Cps + Ch. 12,7x99mm 5Cps Cargador de 5 balas de 12.7x99mm Magazynek 12,7x99mm 5rd Магазин из 5-ти 12,7x99 мм @@ -1873,7 +1873,7 @@ 12.7mm - 12.7mm + 12,7mm 12.7mm 12,7mm 12,7 мм @@ -1901,7 +1901,7 @@ 12.7x99mm API 5Rnd Mag - Ch. 12.7x99mm API 5Cps + Ch. 12,7x99mm API 5Cps Cargador de 5 balas de 12.7x99mm API Magazynek 12,7x99mm API 5rd 12.7x99mm API 5Rnd Mag @@ -1915,7 +1915,7 @@ 12.7mm API - 12.7mm API + 12,7mm API 12.7mm API 12,7mm API 12.7mm API @@ -1929,7 +1929,7 @@ Caliber: 12.7x99mm API<br />Rounds: 5 - Calibre: 12.7x99mm API<br />Cartouches: 5 + Calibre: 12,7x99mm API<br />Cartouches: 5 Calibre: 12.7x99mm API<br />Balas: 5 Kaliber: 12,7x99mm API<br />Pociski: 5 Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5 @@ -1943,7 +1943,7 @@ 12.7x99mm 5Rnd Mag (AMAX) - Ch. 12.7x99mm 5Cps (AMAX) + Ch. 12,7x99mm 5Cps (AMAX) Cargador de 5 balas de 12.7x99mm (AMAX) Magazynek 12,7x99mm 5rd (AMAX) Магазин из 5-ти 12,7x99 мм (A-MAX) @@ -1957,7 +1957,7 @@ 12.7mm - 12.7mm + 12,7mm 12.7mm 12,7mm 12,7 мм @@ -1971,7 +1971,7 @@ Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 - Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 + Calibre: 12,7x99mm (AMAX)<br />Cartouches: 5 Calibre: 12.7x99mm (AMAX)<br />Balas: 5 Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5 Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5 diff --git a/addons/cargo/functions/fnc_canLoadItemIn.sqf b/addons/cargo/functions/fnc_canLoadItemIn.sqf index 77a230108c..092272f94f 100644 --- a/addons/cargo/functions/fnc_canLoadItemIn.sqf +++ b/addons/cargo/functions/fnc_canLoadItemIn.sqf @@ -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} diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 191e8929f1..c85d99b7f8 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -243,6 +243,7 @@ 空中投下 Zrzut zaopatrzenia 공중 투하 + Largage aérien Unlevel Flight @@ -250,6 +251,7 @@ 機体が水平ではありません Nierówny lot 기체가 수평이 아닙니다 + Rétablir l'assiette diff --git a/addons/chemlights/stringtable.xml b/addons/chemlights/stringtable.xml index 20bba14951..1cbf1183f4 100644 --- a/addons/chemlights/stringtable.xml +++ b/addons/chemlights/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -7,6 +7,7 @@ Świetliki Knicklichter 켐라이트 + Cyalumes Prepare %1 @@ -14,6 +15,7 @@ Przygotuj %1 %1 vorbereiten %1 준비 + Prépare %1 %1<br/>Prepared @@ -21,13 +23,14 @@ %1<br/>Przygotowany %1<br/>vorbereitet %1<br/>준비됨 + %1<br/>prêt No inventory space Kein Platz im Inventar Sin espacio en inventario Brak miejsca w ekwipunku - Pas de place dans l'inventaire + Pas de place Nedostatek místa v inventáři Sem espaço no inventário Non hai più spazio @@ -42,6 +45,7 @@ [ACE] Świetliki [ACE] Knicklichter [ACE] 켐라이트 + [ACE] Cyalume Chemlight (Orange) @@ -49,6 +53,7 @@ Świetlik (pomarańczowy) Knicklicht (orange) 켐라이트 (주황) + Cyalume (orange) Orange Light @@ -56,6 +61,7 @@ Pomarańczowe światło Oranges Knicklicht 주황색 + Lum. orange Type: Light - Orange<br />Rounds: 1<br />Used in: Hand @@ -63,6 +69,7 @@ Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - orange<br />Anzahl: 1<br />Benutzt in: Hand 종류:밝은 오렌지<br />수량: 1<br />사용처: 손 + Type: Lumière - orange<br />Nbre: 1<br /> À main Chemlight (White) @@ -70,6 +77,7 @@ Świetlik (biały) Knicklicht (weiß) 켐라이트 (하양) + Cyalume (blanc) White Light @@ -77,6 +85,7 @@ Białe światło Weißes Knicklicht 하얀색 + Lum. blanche Type: Light - White<br />Rounds: 1<br />Used in: Hand @@ -84,6 +93,7 @@ Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - weiß<br />Anzahl: 1<br />Benutzt in: Hand 종류:하얀색<br />수량: 1<br />사용처: 손 + Type: Lumière - blanche<br />Nbre: 1<br /> À main Chemlight (Hi Red) @@ -91,6 +101,7 @@ Świetlik (jaskrawy czerwony) Knicklicht (rot, hell) 켐라이트 (밝은 빨간색) + Cyalume (Hi rouge) Red Hi Light @@ -98,6 +109,7 @@ Jaskrawe czerwone światło Helles, rotes Knicklicht 밝은 빨간색 + Lum. rouge haute intensité Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -105,6 +117,7 @@ Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - rot, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 빨간색 (5분)<br />수량: 1<br />사용처: 손 + Type: Lumière - rouge Hi (5 minutes)<br />Nbre: 1<br /> À main Chemlight (Hi Yellow) @@ -112,6 +125,7 @@ Świetlik (jaskrawy żółty) Knicklicht (gelb, hell) 켐라이트 (밝은 노란색) + Cyalume (Hi jaune) Yellow Hi Light @@ -119,6 +133,7 @@ Jaskrawe żółte światło Helles, gelbes Knicklicht 밝은 노란색 + Lum. jaune haute intensité Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -126,6 +141,7 @@ Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - gelb, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류:밝은 노란색 (5분)<br />수량: 1<br />사용처: Hand + Type: Lumière - Jaune Hi (5 minutes)Nbre: 1<br /> À main Chemlight (Hi Orange) @@ -133,6 +149,7 @@ Świetlik (jaskrawy pomarańczowy) Knicklicht (orange, hell) 켐라이트 (밝은 주황색) + Cyalume (Hi orange) Orange Hi Light @@ -140,6 +157,7 @@ Jaskrawe pomarańczowe światło Helles, oranges Knicklicht 밝은 주황색 + Lum. orange haute intensité Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -147,6 +165,7 @@ Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - orange, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 주황색 (5분)<br />수량: 1<br />사용처: 손 + Type: Lumière - orange Hi (5 minutes)<br />Nbre: 1<br /> À main Chemlight (Hi White) @@ -154,6 +173,7 @@ Świetlik (jaskrawy biały) Knicklicht (weiß, hell) 켐라이트 (밝은 하얀색) + Cyalume (Hi blanc) White Hi Light @@ -161,6 +181,7 @@ Jaskrawe białe światło Helles, weißes Knicklicht 밝은 하얀색 + Lum. blanche haute intensité Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand @@ -168,6 +189,7 @@ Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - weiß, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand 종류: 밝은 하얀색 (5분)<br />수량: 1<br />사용처: 손 + Type: Lumière - blanche Hi (5 minutes)<br />Nbre: 1<br /> À main Chemlight (IR) @@ -175,6 +197,7 @@ Świetlik (podczerwony) Knicklicht (IR) 켐라이트 (적외선) + Cyalume (IR) IR Light @@ -182,6 +205,7 @@ Światło podczerwone IR-Knicklicht 적외선 켐라이트 + Lumière IR Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand @@ -189,6 +213,7 @@ Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce Typ: Licht - infrarot<br />Anzahl: 1<br />Benutzt in: Hand 종류: 적외선<br />수량: 1<br />사용처: 손 + Type: Lumière - infrarouge<br />Nbre: 1<br /> À main Chemlight Shield (Empty) @@ -196,6 +221,7 @@ Osłona na świetlik (pusta) Knicklicht-Abschirmung (leer) 켐라이트 쉴드 (비어있음) + Étui cyalume (vide) Shield for chemlights. Combine with chemlight to prepare reading light. @@ -203,6 +229,7 @@ Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania. Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten. 켐라이트를 위한 가림막입니다. 켐라이트와 같이 사용하여 읽을 때 씁니다. + Étui pour cyalume. Combiné avec un cyalume pour obtennir un lampe de lecture. Chemlight Shield (Green) @@ -210,6 +237,7 @@ Osłona na świetlik (zielona) Knicklicht-Abschirmung (grün) 켐라이트 쉴드 (초록) + Étui cyalume (vert) Green reading light. @@ -217,6 +245,7 @@ Zielona lampka. Grünes Leselicht. 초록빛 조명 + Lampe d'orientation verte. Chemlight Shield (Red) @@ -224,6 +253,7 @@ Osłona na świetlik (czerwona) Knicklicht-Abschirmung (rot) 켐라이트 쉴드 (빨강) + Étui cyalume (rouge) Red reading light. @@ -231,6 +261,7 @@ Czerwona lampka. Rotes Leselicht. 빨간색 조명 + Lampe d'orientation rouge. Chemlight Shield (Blue) @@ -238,6 +269,7 @@ Osłona na świetlik (niebieska) Knicklicht-Abschirmung (blau) 켐라이트 쉴드 (파랑) + Étui cyalume (bleu) Blue reading light. @@ -245,6 +277,7 @@ Niebieska lampka. Blaues Leselicht. 파란색 조명 + Lampe d'orientation bleue. Chemlight Shield (Yellow) @@ -252,6 +285,7 @@ Osłona na świetlik (żółta) Knicklicht-Abschirmung (gelb) 켐라이트 쉴드 (노랑) + Étui cyalume (jaune) Yellow reading light. @@ -259,6 +293,7 @@ Żółta lampka. Gelbes Leselicht. 노란색 조명 + Lampe d'orientation jaune. Chemlight Shield (Orange) @@ -266,6 +301,7 @@ Osłona na świetlik (pomarańczowa) Knicklicht-Abschirmung (orange) 켐라이트 쉴드 (주황) + Étui cyalume (orange) Orange reading light. @@ -273,6 +309,7 @@ Pomarańczowa lampka. Oranges Leselicht. 주황색 조명 + Lampe d'orientation orange. Chemlight Shield (White) @@ -280,6 +317,7 @@ Osłona na świetlik (biała) Knicklicht-Abschirmung (weiß) 켐라이트 쉴드 (하양) + Étui cyalume (blanc) White reading light. @@ -287,6 +325,7 @@ Biała lampka. Weißes Leselicht. 주황색 조명 + Lampe d'orientation blanche. diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 3b3fd51ef4..7c5dea2e68 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -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; diff --git a/addons/common/functions/fnc_interpolateFromArray.sqf b/addons/common/functions/fnc_interpolateFromArray.sqf index 07207071e7..aac21aab7a 100644 --- a/addons/common/functions/fnc_interpolateFromArray.sqf +++ b/addons/common/functions/fnc_interpolateFromArray.sqf @@ -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 diff --git a/addons/cookoff/functions/fnc_detonateAmmunition.sqf b/addons/cookoff/functions/fnc_detonateAmmunition.sqf index 20ec84cbbd..c5c0a64549 100644 --- a/addons/cookoff/functions/fnc_detonateAmmunition.sqf +++ b/addons/cookoff/functions/fnc_detonateAmmunition.sqf @@ -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; }; diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index 04fd809182..4aa9423b96 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -9,7 +9,7 @@ 誘爆を有効化 쿡오프 현상 활성화 Aktywuj efekty samozapłonu amunicji - Activer + Active le cook-off Enables cook off and related vehicle destruction effects. @@ -19,6 +19,7 @@ 誘爆を有効化し、車両が誘爆によって破壊されていきます。 쿡오프 현상을 활성화 하고 관련된 차량에 폭발 이펙트를 적용합니다. Aktywuje efekt samozapłonu amunicji na zniszczonych pojazdach. + Active le cook-off (autocombustion des munitions) et les effets de destruction liés. Wreck (Turret) @@ -40,6 +41,7 @@ Selbstzündung für Munitionskisten ermöglichen 탄약 상자 쿡오프 현상 활성화 Aktywuj samozapłon skrzyń z amunicją + Cook-off caisses de munitions Enables cooking off of ammo boxes. @@ -47,6 +49,7 @@ Ermöglicht Selbstzündung von Munitionskisten. 탄약 상자에 쿡오프 현상을 적용합니다. Aktywuje samozapłon skrzyń z amunicją + Active le cook-off sur toutes les caisses de munitions. Enable Ammunition cook off @@ -54,21 +57,24 @@ Selbstzündung für Munition ermöglichen 탄약 쿡오프 현상 활성화 Aktywuj samozapłon amunicji + Active le cook-off des munitions Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition. 弾薬が誘爆します。車両が燃えると、搭載している弾薬が激しく燃え上がりす。 Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt. Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję. + Mets à feu les munitions lorsqu'un véhicule est en feu et contient des munitions. Ammunition cook off duration Czas trwania samozapłonu amunicji 弾薬の誘爆持続時間 + Durée cook-off des munitions Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff] - Active le et les effets de destructions assosicée aux vehicules. + Multiplicateur de la durée du cook-off des munitions [Une valeur de 0 désactive l'effet] Mnożnik decydujący jak długo ma trwać samozapłon amunicji [Ustawienie na 0 spowoduje wyłącznie samozapłonu] 誘爆の持続時間を乗数で設定。[0 に設定で誘爆を無効化] diff --git a/addons/dagr/functions/fnc_outputWP.sqf b/addons/dagr/functions/fnc_outputWP.sqf index d36f222a51..2a877ba593 100644 --- a/addons/dagr/functions/fnc_outputWP.sqf +++ b/addons/dagr/functions/fnc_outputWP.sqf @@ -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]; diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index b477f93d6a..9c5c368307 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -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)); diff --git a/addons/frag/ACE_Settings.hpp b/addons/frag/ACE_Settings.hpp index eb0beea661..63a3d564d2 100644 --- a/addons/frag/ACE_Settings.hpp +++ b/addons/frag/ACE_Settings.hpp @@ -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; }; }; diff --git a/addons/frag/XEH_PREP.hpp b/addons/frag/XEH_PREP.hpp index a9a9d43c5b..a7fb8ff8c3 100644 --- a/addons/frag/XEH_PREP.hpp +++ b/addons/frag/XEH_PREP.hpp @@ -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); diff --git a/addons/frag/XEH_postInit.sqf b/addons/frag/XEH_postInit.sqf index 31f9515750..634212354c 100644 --- a/addons/frag/XEH_postInit.sqf +++ b/addons/frag/XEH_postInit.sqf @@ -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 diff --git a/addons/frag/XEH_preInit.sqf b/addons/frag/XEH_preInit.sqf index da87d01194..7cbd6092a1 100644 --- a/addons/frag/XEH_preInit.sqf +++ b/addons/frag/XEH_preInit.sqf @@ -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; diff --git a/addons/frag/functions/fnc_addBlackList.sqf b/addons/frag/functions/fnc_addBlackList.sqf index 9950cab2b0..79cb41adab 100644 --- a/addons/frag/functions/fnc_addBlackList.sqf +++ b/addons/frag/functions/fnc_addBlackList.sqf @@ -1,5 +1,21 @@ +/* + * Author: Jaynus, NouberNou + * Adds a round to the blacklist (will be ignored). + * + * Arguments: + * 0: Projectile + * + * 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; diff --git a/addons/frag/functions/fnc_addPfhRound.sqf b/addons/frag/functions/fnc_addPfhRound.sqf index f6cddbbd37..7c609f2146 100644 --- a/addons/frag/functions/fnc_addPfhRound.sqf +++ b/addons/frag/functions/fnc_addPfhRound.sqf @@ -1,27 +1,38 @@ +/* + * Author: Jaynus, NouberNou + * Starts tracking a round that will frag. + * Should only be called once per round. + * + * Arguments: + * 0: Shooter + * 1: Ammo classname + * 2: Projectile + * + * 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"; }; diff --git a/addons/frag/functions/fnc_addTrack.sqf b/addons/frag/functions/fnc_dev_addTrack.sqf similarity index 66% rename from addons/frag/functions/fnc_addTrack.sqf rename to addons/frag/functions/fnc_dev_addTrack.sqf index a93106d518..764627b60f 100644 --- a/addons/frag/functions/fnc_addTrack.sqf +++ b/addons/frag/functions/fnc_dev_addTrack.sqf @@ -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; diff --git a/addons/frag/functions/fnc_drawTraces.sqf b/addons/frag/functions/fnc_dev_drawTraces.sqf similarity index 82% rename from addons/frag/functions/fnc_drawTraces.sqf rename to addons/frag/functions/fnc_dev_drawTraces.sqf index 6dd710f61c..c6ab838e84 100644 --- a/addons/frag/functions/fnc_drawTraces.sqf +++ b/addons/frag/functions/fnc_dev_drawTraces.sqf @@ -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); diff --git a/addons/frag/functions/fnc_dev_startTracing.sqf b/addons/frag/functions/fnc_dev_startTracing.sqf new file mode 100644 index 0000000000..b58a491896 --- /dev/null +++ b/addons/frag/functions/fnc_dev_startTracing.sqf @@ -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; diff --git a/addons/frag/functions/fnc_stopTracing.sqf b/addons/frag/functions/fnc_dev_stopTracing.sqf similarity index 82% rename from addons/frag/functions/fnc_stopTracing.sqf rename to addons/frag/functions/fnc_dev_stopTracing.sqf index e06a9a2b46..c25021bb4e 100644 --- a/addons/frag/functions/fnc_stopTracing.sqf +++ b/addons/frag/functions/fnc_dev_stopTracing.sqf @@ -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; diff --git a/addons/frag/functions/fnc_trackTrace.sqf b/addons/frag/functions/fnc_dev_trackTrace.sqf similarity index 100% rename from addons/frag/functions/fnc_trackTrace.sqf rename to addons/frag/functions/fnc_dev_trackTrace.sqf diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index 97c52062d1..ee1bc37384 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -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 }; diff --git a/addons/frag/functions/fnc_fired.sqf b/addons/frag/functions/fnc_fired.sqf index 96841dd7ac..42885d55b0 100644 --- a/addons/frag/functions/fnc_fired.sqf +++ b/addons/frag/functions/fnc_fired.sqf @@ -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); }; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index 5481649b54..49f1a62237 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -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) + * 1: Velocity + * 2: Ammo Classname + * + * 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); diff --git a/addons/frag/functions/fnc_masterPFH.sqf b/addons/frag/functions/fnc_masterPFH.sqf index f6adb56161..10b7743102 100644 --- a/addons/frag/functions/fnc_masterPFH.sqf +++ b/addons/frag/functions/fnc_masterPFH.sqf @@ -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); diff --git a/addons/frag/functions/fnc_pfhRound.sqf b/addons/frag/functions/fnc_pfhRound.sqf index f233fa45a6..3c72a525c9 100644 --- a/addons/frag/functions/fnc_pfhRound.sqf +++ b/addons/frag/functions/fnc_pfhRound.sqf @@ -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]; diff --git a/addons/frag/functions/fnc_removePfhRound.sqf b/addons/frag/functions/fnc_removePfhRound.sqf deleted file mode 100644 index 9241c7aecb..0000000000 --- a/addons/frag/functions/fnc_removePfhRound.sqf +++ /dev/null @@ -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); diff --git a/addons/frag/functions/fnc_removeTrack.sqf b/addons/frag/functions/fnc_removeTrack.sqf deleted file mode 100644 index 8c0f7e3736..0000000000 --- a/addons/frag/functions/fnc_removeTrack.sqf +++ /dev/null @@ -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 diff --git a/addons/frag/functions/fnc_startTracing.sqf b/addons/frag/functions/fnc_startTracing.sqf deleted file mode 100644 index c697a8dca2..0000000000 --- a/addons/frag/functions/fnc_startTracing.sqf +++ /dev/null @@ -1,5 +0,0 @@ -#include "script_component.hpp" - -if (GVAR(tracesStarted)) exitWith {}; -GVAR(tracesStarted) = true; -GVAR(traceID) = [FUNC(drawTraces), 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/frag/script_component.hpp b/addons/frag/script_component.hpp index 59868e36cf..0215e9f4d7 100644 --- a/addons/frag/script_component.hpp +++ b/addons/frag/script_component.hpp @@ -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 diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index b7b5de9e1b..5b93a7a459 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -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) = ""; ["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; diff --git a/addons/goggles/functions/fnc_applyGlassesEffect.sqf b/addons/goggles/functions/fnc_applyGlassesEffect.sqf index 71a5b3b84c..71425ce6ca 100644 --- a/addons/goggles/functions/fnc_applyGlassesEffect.sqf +++ b/addons/goggles/functions/fnc_applyGlassesEffect.sqf @@ -5,23 +5,29 @@ * Sets dirt/rain overlay for glasses. * * Arguments: - * 0: Glasses classname to be applied + * 0: Player + * 1: Glasses classname to be applied * * 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; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index cd2a5aec16..17548a973b 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -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; diff --git a/addons/laser/stringtable.xml b/addons/laser/stringtable.xml index 786cb6ec55..4014441551 100644 --- a/addons/laser/stringtable.xml +++ b/addons/laser/stringtable.xml @@ -7,6 +7,7 @@ Laserstreuung-Simulationszähler 레이저 분산 시뮬레이션 수 Wskaźnik poziomu rozproszenia wiązki lasera + Compte de la simulation de la dispersion du laser Laser Code @@ -51,4 +52,4 @@ 레이저 - 코드 순환 아래 - \ No newline at end of file + diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index 110d07ee0c..f022e2c81e 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -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; diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 2c0349dc0d..f5eb043e80 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -444,6 +444,7 @@ BFTを無効化 GPS피아식별기 끄기 Wyłącz BFT + Désactive le BFT Always disable Blue Force Tracking for this group. @@ -451,6 +452,7 @@ このグループへのブルー フォース トラッキングを常に無効化します。 이 그룹에 한해 GPS피아식별기를 항상 끕니다. Zawsze wyłączaj Blue Force Tracking dla tej grupy. + Désactive en permanence le Blue Force Tracking pour ce groupe. - \ No newline at end of file + diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index f22d3b7ed4..8828aed603 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -179,6 +179,7 @@ Zeichne gerade Linien mit dem Kartenwerkzeug 독도용 도구로 직선 그리기 Rysuj proste linie przy użyciu narzędzi nawigacyjnych + Tracer des lignes droites Draw on the edge of maptools to draw straight lines. Note: Must hover at midpoint to delete. @@ -186,6 +187,7 @@ Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren 독도용 도구 가장자리에 직선을 그립니다. 주의: 삭제하기 위해선 선의 중앙에 가져다 대십시요 Przeciągnij po krawędzi narzędzi nawigacyjnych by narysować prostą linię. Uwaga: aby usunąć linię - nalezy ustawić kursor nad jej środkiem. + 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. - \ No newline at end of file + diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index a8bb43d324..51e536fc1b 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -118,7 +118,7 @@ Transfundir salino Transfúze fyziologického roztoku Przetocz sól fizjologiczną - Transfuser (liquide physiologique) + Transfuser (saline) Перелить физраствор Infúzió (sós víz) Trasfusione di soluzione salina @@ -313,7 +313,7 @@ Transfusión de salino... Probíha transfúze fyziologického roztoku... Przetaczanie soli fizjologicznej... - Transfusion (liquide physiologique)... + Transfusion (solution saline)... Переливание физраствора... Infúzió sós vizzel... Effettuo la rasfusione di soluzione salina @@ -426,7 +426,7 @@ QuikClot Opatrunek QuikClot QuikClot - Compresse hydrophile + Bandage hémostatique QuikClot QuikClot (polvere emostatica) QuikClot @@ -663,7 +663,7 @@ Dar Salino IV (1000ml) Перелить пакет физраствора (1000 мл) Podaj sól fizjologiczną IV (1000ml) - Liquide physiologique en IV (1000ml) + Solution saline en IV (1000ml) Podaz fyz. roztok (1000ml) Sós víz adása intravénásan (1000ml) Effettua trasfusione salina EV (1˙000ml) @@ -677,7 +677,7 @@ Dar Salino IV (500ml) Перелить пакет физраствора (500 мл) Podaj sól fizjologiczną IV (500ml) - Liquide physiologique en IV (500ml) + Solution saline en IV (500ml) Podaz fyz. roztok (500ml) Sós víz adása intravénásan (500ml) Effettua trasfusione salina EV (500ml) @@ -691,7 +691,7 @@ Dar Salino IV (250ml) Перелить пакет физраствора (250 мл) Podaj sól fizjologiczną IV (250ml) - Liquide physiologique en IV (250ml) + Solution saline en IV (250ml) Podaz fyz. roztok (250ml) Sós víz adása intravénásan (250ml) Effettua trasfusione salina EV (250ml) @@ -992,7 +992,7 @@ Bandage (Elastisch) Повязка (давящая) Vendaje (Elástico) - Bandage (Élastique) + Bande compressive Bandaż (elastyczny) Obvaz (Elastický) Rögzító kötszer @@ -1380,7 +1380,7 @@ Saline IV (1000ml) Физраствор для в/в вливания (1000 мл) Salino IV (1000ml) - Liquide physiologique IV (1000ml) + Solution saline IV (1000ml) Sól fizjologiczna IV (1000ml) Kochsalzlösung (1000ml) 0,9%-os sósvíz-infúzió (1000ml) @@ -1394,7 +1394,7 @@ Saline IV, for restoring a patients blood Пакет физраствора для возмещения объёма потерянной крови Solución salina intravenosa, para restaurar el volumen sanguíneo - Liquide physiologique, pour rétablir temporairement la tension artérielle + Solution saline, pour rétablir temporairement la tension artérielle 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). 0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására Soluzione salina, usata per ripristinare sangue nei pazienti. @@ -1422,7 +1422,7 @@ Saline IV (500ml) Физраствор для в/в вливания (500 мл) Salino IV (500ml) - Liquide physiologique IV (500ml) + Solution saline IV (500ml) Sól fizjologiczna IV (500ml) Kochsalzlösung (500ml) 0,9%-os sósvíz-infúzió (500ml) @@ -1436,7 +1436,7 @@ Saline IV (250ml) Физраствор для в/в вливания (250 мл) Salino IV (250ml) - Liquide physiologique IV (250ml) + Solution saline IV (250ml) Sól fizjologiczna IV (250ml) Kochsalzlösung (250ml) 0,9%-os sósvíz-infúzió (250ml) @@ -1464,7 +1464,7 @@ QuikClot bandage Гемостатический пакет QuikClot Vendaje QuikClot - Compresse hydrophile + Bandage hémostatique Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. Bandage mit Gerinnungsmittel QuikClot kötszer diff --git a/addons/medical_blood/stringtable.xml b/addons/medical_blood/stringtable.xml index a45dc29d90..8f4edbc9e2 100644 --- a/addons/medical_blood/stringtable.xml +++ b/addons/medical_blood/stringtable.xml @@ -7,6 +7,7 @@ Nur Spieler 오직 플레이어만 Tylko gracze + Joueurs seulement Enable Blood Drops @@ -14,12 +15,14 @@ Aktiviere Blutspritzer 피흘리기 활성화 Włącz ślady krwi na ziemi + Active les gouttes de sang Enable or disable Blood Drops created on bleeding and taking damage ダメージを受けたり、出血していると血が滴る様子の有効か無効化 Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen. Włącz lub wyłącz pozostawianie śladów krwi na ziemi kiedy postać odnosi obrażenia bądź krwawi + (Dés)active les gouttes de sang lors d'un saignement ou de blessure - \ No newline at end of file + diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index a239e55498..650f9eb74a 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -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" }; }; diff --git a/addons/optionsmenu/gui/pauseMenu.hpp b/addons/optionsmenu/gui/pauseMenu.hpp index 79aed168de..304cd7e8d1 100644 --- a/addons/optionsmenu/gui/pauseMenu.hpp +++ b/addons/optionsmenu/gui/pauseMenu.hpp @@ -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"; }; }; }; diff --git a/addons/optionsmenu/init_loadMainMenuBox.sqf b/addons/optionsmenu/init_loadMainMenuBox.sqf index a9b8f5a02a..894bd45124 100644 --- a/addons/optionsmenu/init_loadMainMenuBox.sqf +++ b/addons/optionsmenu/init_loadMainMenuBox.sqf @@ -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; }; /* diff --git a/addons/optionsmenu/script_component.hpp b/addons/optionsmenu/script_component.hpp index 8fac89ba9a..c13e915702 100644 --- a/addons/optionsmenu/script_component.hpp +++ b/addons/optionsmenu/script_component.hpp @@ -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 diff --git a/addons/overheating/functions/fnc_firedEH.sqf b/addons/overheating/functions/fnc_firedEH.sqf index d641e82d07..f46af66358 100644 --- a/addons/overheating/functions/fnc_firedEH.sqf +++ b/addons/overheating/functions/fnc_firedEH.sqf @@ -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 { diff --git a/addons/overheating/functions/fnc_swapBarrelCallback.sqf b/addons/overheating/functions/fnc_swapBarrelCallback.sqf index 0e4326cfea..99cf8298f5 100644 --- a/addons/overheating/functions/fnc_swapBarrelCallback.sqf +++ b/addons/overheating/functions/fnc_swapBarrelCallback.sqf @@ -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 diff --git a/addons/overheating/functions/fnc_updateTemperature.sqf b/addons/overheating/functions/fnc_updateTemperature.sqf index 51b4b13ae3..f56fc05e92 100644 --- a/addons/overheating/functions/fnc_updateTemperature.sqf +++ b/addons/overheating/functions/fnc_updateTemperature.sqf @@ -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); diff --git a/addons/overheating/script_component.hpp b/addons/overheating/script_component.hpp index 2eef9e2309..d7dde59da2 100644 --- a/addons/overheating/script_component.hpp +++ b/addons/overheating/script_component.hpp @@ -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); diff --git a/addons/overpressure/stringtable.xml b/addons/overpressure/stringtable.xml index 420c732b8d..89d8cf8b2d 100644 --- a/addons/overpressure/stringtable.xml +++ b/addons/overpressure/stringtable.xml @@ -6,12 +6,14 @@ 過圧の距離係数 초과압력 거리 계수 Mnożnik dystansu nadciśnienia + Coéfficient de distance pour la surpression Scales the overpressure effect [Default: 1] 過圧効果の範囲 [標準: 1] 초과압력의 효과 크기 [기본설정: 1] Skaluje efekt nadciśnienia [Domyślne: 1] + Échelonne les effets de la surpression [Par défaut : 1] - \ No newline at end of file + diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index 4a4a9094dc..ce815a49df 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -6,114 +6,133 @@ スコープ 조준경 Celowniki optyczne + Scopes Enable ACE Scope adjustment ACE スコープ調節を有効化 ACE 조준경 영점조작 활성화 Włącz ustawienia celowników optycznych ACE + Active ACE Scope adjustment Enable adjustmet turrets on high powered scopes 高倍率スコープでACE スコープ調節を有効化 고성능 조준경 조절 나사 활성화 Włącz pokrętła regulacyjne + Permet de régler la hausse et la dérive sur les optiques de visée à fort grossissement Force adjustment turrets ACE スコープ調節を有効化 조절 나사 강제 Wymuś użycie pokręteł regulacyjnych + Impose le réglage de la hausse/dérive Force usage of adjustmet turrets on high powered scopes 高倍率スコープで調整の使用を強制させます 고성능 조준경의 조절 나사 사용을 강제합니다 Wymuś użycie pokręteł regulacyjnych dla celowników o dużym powiększeniu + Impose le réglage de la hausse/dérive sur les optiques de visée à fort grossissement Correct zeroing ゼロイン調節 영점 고치기 Poprawka zerowania + Corrige le zérotage Corrects the zeroing of all small arms sights 全ての小口径用照準器のゼロインを調節します 모든 소화기의 영점을 고칩니다 Poprawia zerowanie wszystkich celowników broni ręcznej + Corrige le zérotage des optiques de visée des petites armes Overwrite zero distance ゼロイン距離を上書き 영점거리 덮어쓰기 Nadpisuje ustawienie dla zerowego dystansu + Remplace la distance de zérotage Uses the 'defaultZeroRange' setting to overwrite the zero range of high power scopes 'defaultZeroRange'設定を使う高倍率スコープのゼロイン距離を上書きします 기존 고성능 조준경의 영점거리에 '기본설정 영점거리' 를 덮어씌웁니다 Używa 'defaultZeroRange' zamiast ustawionej odległości zerowania dla celowników o duzym przybliżeniu + Utilise le paramètre 'defaultZeroRange' pour remplacer la distance de zérotage sur les optiques de visée à fort grossissement Default zero distance 標準のゼロイン距離 기본설정 영점거리 Domyślne zerowanie + Distance de zérotage par défaut High power scopes will be zeroed at this distance 高倍率スコープのゼロイン距離はこの設定になります 고성능 조준경이 정해진 수만큼 영점거리를 맞추게 됩니다. Celowniki o dużym powiększeniu będą zerowane dla tej odległości + Distance de zérotage par défaut des optiques de visée à fort grossissement Reference temperature 温度の参照 온도 기준 Referencyjna temperatura + Température de référence Temperature at which the scope was zeroed スコープがゼロインされる温度 조준경 영점조준시 온도 Temperatura, przy której celownik został wyzerowany + Température de référence pour le zérotage des optiques Reference barometric pressure 気圧の参照 기압 기준 Referencyjne ciśnienie barometryczne + Pression barométrique de référence Barometric pressure at which the scope was zeroed 気圧の参照 조준경 영점조준시 기압 Ciśnienie barometryczne, przy którym celownik został wyzerowany + Pression barométrique de référence pour le zérotage des optiques Reference humidity 湿度の参照 습도 기준 Referencyjna wilgotność + Humidité de référence Humidity at which the scope was zeroed スコープがゼロインされる湿度 조준경 영점조준시 습도 Wilgotność powietrza, przy której celownik został wyzerowany + Taux d'humidité de référence pour le zérotage des optiques Deduce pressure from altitude 高度により圧が減少 고도에 맞춰 기압 설정 Ciśnienie określone na podstawie wysokości + Pression selon l'altitude Deduce the barometric pressure from the terrain altitude 標高により気圧が減少されます 주변 고도에 맞춰 기압을 설정합니다 Określ ciśnienie barometryczne na podstawie wysokości terenu + Détermine la pression barométrique selon l'altitude du terrain Minor adjustment up @@ -246,6 +265,7 @@ モジュールは高倍率ライフル スコープにおいて横風と仰角の調節ができます。 이 모듈은 고성능 조준경에 조준 나사를 이용한 편차 및 고도 조절 기능을 더해줍니다. Ten moduł włącza pokrętła kalibracyjne poprawki na wiatr oraz poprawki wysokości dla celowników o dużym powiększeniu. + Ce module ajoute les tambours de correction de la hausse et de dérive sur les optiques de visée à fort grossissement. - \ No newline at end of file + diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index e8b5a1b223..2f5c13b383 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -60,7 +60,7 @@ Controllers Steuereinheit - Controleurs + Contrôleurs Kontroler Vezérlők Controles @@ -74,7 +74,7 @@ Controller object names, separated by commas if multiple. Objekte die als Steuereinheit fungieren. Werden ggf. durch Kommata getrennt. - Noms de controleur d'objets, séparation par virgule si plusieurs + Noms de contrôleur d'objets, séparation par virgule si plusieurs Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. Nome dos objetos de controle, separado por vírgula se mais de um. @@ -143,15 +143,17 @@ Set Name Ustaw nazwę 名前設定 + Définir le nom Name that will be used for main interaction entry (to distinguish multiple slideshows). Default: "Slides" Nazwa, która będzie użyta w głównym menu interakcji (w celu rozróżnienia różnych slajdów). Domyślnie: "Slides" メイン インタラクション エントリで使われる名前を設定します。(複数のスライドショーを区別するため)。標準: "Slides" + Un nom qui sera utilisé pour interagir avec plusieurs diaporamas. Par défaut : "Slides" Slide Duration - Durée d'une diapositive + Durée d'un diaporama Czas trwania slajdów Dia időtartam Duração do Slide @@ -165,7 +167,7 @@ Duration of each slide. Default: 0 (Automatic Transitions Disabled) - Durée de chaque diapositive. Dafaut: 0 (transition automatique désactivée) + Durée de chaque diaporama. Défaut: 0 (transition automatique désactivée) Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone) A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) Duração de cada slide. Padrão: 0 (Transição automática desabilitada) @@ -179,7 +181,7 @@ Slides - Diapositives + Diapo Slajdy Diák Slides diff --git a/addons/tagging/XEH_postInit.sqf b/addons/tagging/XEH_postInit.sqf index 6693bda2f6..1e7003281a 100644 --- a/addons/tagging/XEH_postInit.sqf +++ b/addons/tagging/XEH_postInit.sqf @@ -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]; }; }; }; diff --git a/addons/tagging/functions/fnc_checkTaggable.sqf b/addons/tagging/functions/fnc_checkTaggable.sqf index d739bbfec5..e4328687a9 100644 --- a/addons/tagging/functions/fnc_checkTaggable.sqf +++ b/addons/tagging/functions/fnc_checkTaggable.sqf @@ -9,16 +9,14 @@ * Is surface taggable * * 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 diff --git a/addons/tagging/functions/fnc_tag.sqf b/addons/tagging/functions/fnc_tag.sqf index 3aec5ec139..f90e09cd0a 100644 --- a/addons/tagging/functions/fnc_tag.sqf +++ b/addons/tagging/functions/fnc_tag.sqf @@ -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 diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index e0af181b3d..05a23e4cd1 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -75,6 +75,7 @@ Маркер タグ 뿌리기 + Tag X black @@ -195,4 +196,3 @@ - diff --git a/addons/zeus/functions/fnc_ui_teleportPlayers.sqf b/addons/zeus/functions/fnc_ui_teleportPlayers.sqf index cd5fd82d8d..94a734ab4e 100644 --- a/addons/zeus/functions/fnc_ui_teleportPlayers.sqf +++ b/addons/zeus/functions/fnc_ui_teleportPlayers.sqf @@ -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]); diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index c55371a41c..33276b33af 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -226,30 +226,35 @@ 編集可能なオブジェクトを更新 Aktualizuj edytowalne obiekty 수정 가능한 물체 갱신 + Màj les objets éditables All Curators 全キュレーター 모든 큐레이터 Wszyscy kuratorzy + Tous curateurs Apply changes to all curators 全キュレーターへ変更を適用 모든 큐레이터에 변화를 적용합니다 Zatwierdź zmiany dla wszystkich kuratorów + Applique les changements à tous les curateurs Remove Objects オブジェクトの削除 물체 삭제 Usuń obiekty + Enlève les objets Remove existing instead of adding new 新しく追加するために削除します 물체를 삭제합니다 Usuń istniejące zamiast dodawać nowe + Enlève les objets existants au lieu d'en ajouter de nouveaux Global AI Skill @@ -420,18 +425,21 @@ FRUES の追加と削除 패스트로프 추가/제거 Dodaj/usuń FRIES + Aj./Enlève FRIES %1 is not fastrope compatible. %1 はファストロープに対応していません。 %1은 패스트로프하기에 적합하지 않습니다. %1 nie jest kompatybilny ze zjazdem linowym. + %1 n'est pas compatible. Unable to remove FRIES, ropes are deployed. すでにロープが展開されているため、FRIES を削除できません。 패스트로프 제거 불가능, 줄이 이미 배치되었습니다. Nie można usunąć FRIES, liny są wypuszczone. + Pas en mesure d'enlever le FRIES, les cordes ne sont pas déployées. Teleport Players @@ -561,6 +569,7 @@ Przełącz symulację シミュレーションをトグル 재현 토글 + Bascule Simulation Add Spare Wheel @@ -814,4 +823,4 @@ 알 수 없는 반경 입력됨 - \ No newline at end of file + diff --git a/docs/_config.yml b/docs/_config.yml index 0e5fab26bc..22352d1375 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -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 diff --git a/docs/img/wiki/feature/abtools_inventory.png b/docs/img/wiki/feature/abtools_inventory.png new file mode 100644 index 0000000000..72e1607689 Binary files /dev/null and b/docs/img/wiki/feature/abtools_inventory.png differ diff --git a/docs/img/wiki/feature/scope_module.jpg b/docs/img/wiki/feature/scope_module.jpg new file mode 100644 index 0000000000..19629bddd7 Binary files /dev/null and b/docs/img/wiki/feature/scope_module.jpg differ diff --git a/docs/wiki/feature/atragmx.md b/docs/wiki/feature/atragmx.md index 1656b591f7..2060edd6d6 100644 --- a/docs/wiki/feature/atragmx.md +++ b/docs/wiki/feature/atragmx.md @@ -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 Ctrl + ⊞ Win +- Select `Equipment` +- Select `Open AtragMx` + +#### 3.1.2 Custom key + +- `OPTIONS` / `CONTROLS` / `CONFIGURE ADDONS` / `ACE3 Equipment` + +#### 3.1.3 Inventory + +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. -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`. +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`. - - 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. - - 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`. + +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. + +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`. - Default zero distance +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" %} diff --git a/docs/wiki/feature/scopes.md b/docs/wiki/feature/scopes.md index b51545b569..8f496a90d9 100644 --- a/docs/wiki/feature/scopes.md +++ b/docs/wiki/feature/scopes.md @@ -34,6 +34,7 @@ Please not that the following key combinations are ACE3 default key binds. - Major adjustment left Ctrl + ⇧ Shift + page Down. ### 2.3 Scopes Module + Editor's scopes module diff --git a/docs/wiki/feature/vector.md b/docs/wiki/feature/vector.md index ce3a3ebbf9..415d77643a 100644 --- a/docs/wiki/feature/vector.md +++ b/docs/wiki/feature/vector.md @@ -78,13 +78,19 @@ The Vector is controlled with 2 keys: the azimuth key and the range key; Ta - Sight the circle on the first object and tap R while further holding Tab ↹. The first measurement is confirmed ("1-P" = first point). - Sight the second object and release Tab ↹. -### 2.9 Fall of shot +#### 2.9 Fall of shot Measuring Fall of shot - Tap Tab ↹ once then press and hold it until the azimuth appears. - Sight the circle on the object and tap R while further holding Tab ↹. The first measurement is confirmed ("1-P" = first point). - Sight the Fall of shot and release Tab ↹. 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 R is tapped the height correction values will be displayed (`UP` and `dn`). +#### 2.10 Setting the measurement units (degrees/mils & meters/feet) + +- Tap Tab ↹ five times fast. "Unit SEtt" appears briefly. +- Press R until the desired units are displayed. +- Tap Tab ↹ five times fast to save the selection. + ## 3. Dependencies {% include dependencies_list.md component="vector" %}