@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases/latest">
|
||||
<img src="https://img.shields.io/badge/Version-3.9.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.9.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Issues">
|
||||
|
@ -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)
|
||||
|
@ -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");
|
||||
|
@ -1,28 +0,0 @@
|
||||
|
||||
/*
|
||||
* Documentation:
|
||||
* https://community.bistudio.com/wiki/AI_Sub-skills
|
||||
*
|
||||
* The idea here is to reduce the AI's godlike aiming
|
||||
* capabilties while retaining it's high intelligence.
|
||||
* The AI should be smart enough to move through a town,
|
||||
* but also be 'human' in their reaction time and aim.
|
||||
*
|
||||
* Note: All these values can still be adjusted via
|
||||
* scripts, these arrays just change what 0 & 1
|
||||
* are for setSkill.
|
||||
*/
|
||||
|
||||
class CfgAISkill {
|
||||
aimingAccuracy[] = {0,0, 1,0.8}; // {0,0,1,1}; v1.26 defaults
|
||||
aimingShake[] = {0,0, 1,0.6}; // {0,0,1,1};
|
||||
aimingSpeed[] = {0,0, 1,0.7}; // {0,0.5,1,1};
|
||||
commanding[] = {0,0, 1,0.8}; // {0,0,1,1};
|
||||
courage[] = {0,0, 1,0.7}; // {0,0,1,1};
|
||||
endurance[] = {0,0, 1,0.7}; // {0,0,1,1};
|
||||
general[] = {0,0, 1,0.9}; // {0,0,1,1};
|
||||
// apparently breaks rapid firing in single fire mode for players
|
||||
//reloadSpeed[] = {0,0, 1,0.8}; // {0,0,1,1};
|
||||
spotDistance[] = {0,0, 1,0.9}; // {0,0.2,1,0.4};
|
||||
spotTime[] = {0,0, 1,0.7}; // {0,0,1,0.7};
|
||||
};
|
@ -1,7 +1,7 @@
|
||||
ace_ai
|
||||
======
|
||||
|
||||
Minor changes of AI skill and overhaul of AI firing modes of vanilla weapons, encouraging the AI to use full-auto and bursts more often.
|
||||
Overhaul of AI firing modes of vanilla weapons, encouraging the AI to use full-auto and bursts more often.
|
||||
|
||||
|
||||
## Maintainers
|
||||
|
@ -14,5 +14,4 @@ class CfgPatches {
|
||||
};
|
||||
};
|
||||
|
||||
#include "CfgAISkill.hpp"
|
||||
#include "CfgWeapons.hpp"
|
||||
|
@ -4,7 +4,7 @@
|
||||
<!-- QBU -->
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Name">
|
||||
<English>6.5x47mm 20Rnd Mag (HPBT Scenar)</English>
|
||||
<French>Ch. 6.5x47mm 20Cps (HPBT Scenar)</French>
|
||||
<French>Ch. 6,5x47mm 20Cps (HPBT Scenar)</French>
|
||||
<Spanish>Cargador de 20 balas de 6.5x47mm (HPBT Scenar)</Spanish>
|
||||
<Polish>Magazynek 6,5x47mm 20rd (HPBT Scenar)</Polish>
|
||||
<Russian>Магазин из 20-ти 6,5x47 мм (экспансивные Scenar)</Russian>
|
||||
@ -18,7 +18,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_NameShort">
|
||||
<English>6.5mm Lapua</English>
|
||||
<French>6.5mm Lapua</French>
|
||||
<French>6,5mm Lapua</French>
|
||||
<Spanish>6.5mm Lapua</Spanish>
|
||||
<Polish>6,5mm Lapua</Polish>
|
||||
<Russian>6,5 мм Lapua</Russian>
|
||||
@ -32,7 +32,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_65x47_Scenar_mag_Description">
|
||||
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 20<br />Used in: QBU-88</English>
|
||||
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 6,5x47mm (HPBT Scenar)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 20<br />Se usa en: QBU-88</Spanish>
|
||||
<Polish>Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 20</Polish>
|
||||
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 20<br />Используются с: QBU-88</Russian>
|
||||
@ -51,7 +51,7 @@
|
||||
<Russian>Магазин из 20-ти 6,5 мм Creedmor</Russian>
|
||||
<German>6,5mm Creedmor 20-Patronen-Magazin</German>
|
||||
<Spanish>Cargador de 20 balas Creedmor de 6.5mm</Spanish>
|
||||
<French>Ch. 6.5mm Creedmor 20Cps</French>
|
||||
<French>Ch. 6,5mm Creedmor 20Cps</French>
|
||||
<Czech>6.5mm Creedmor 20náb. Zásobník</Czech>
|
||||
<Portuguese>Carregador 6.5mm com 20 cartuchos Creedmor</Portuguese>
|
||||
<Hungarian>6,5mm Creedmor 20-lövedékes tár</Hungarian>
|
||||
@ -60,7 +60,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_65_Creedmor_mag_NameShort">
|
||||
<English>6.5mm CM</English>
|
||||
<French>6.5mm CM</French>
|
||||
<French>6,5mm CM</French>
|
||||
<Spanish>6.5mm CM</Spanish>
|
||||
<Polish>6,5mm CM</Polish>
|
||||
<Russian>6,5 мм CM</Russian>
|
||||
@ -76,7 +76,7 @@
|
||||
<English>Caliber: 6.5x47mm Creedmor<br />Rounds: 20<br />Used in: QBU-88</English>
|
||||
<Polish>Kaliber: 6,5x47mm Creedmor<br />Pociski: 20<br />Używany w: QBU-88</Polish>
|
||||
<German>Kaliber: 6,5x47mm Creedmor<br />Patronen: 20<br />Eingesetzt von: QBU-88</German>
|
||||
<French>Calibre: 6.5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88</French>
|
||||
<French>Calibre: 6,5x47mm Creedmor <br />Cartouches: 20<br />Utilisé avec: QBU-88</French>
|
||||
<Italian>Calibro: 6.5mm Creedmor<br />Munizioni: 20<br />In uso su: QBU-88</Italian>
|
||||
<Spanish>Calibre: 6.5mm Creedmor<br />Balas: 20<br />Se usa en: QBU-88</Spanish>
|
||||
<Russian>Калибр: 6,5x47мм Creedmor<br />Патронов: 20<br />Используются c: QBU-88</Russian>
|
||||
@ -642,7 +642,7 @@
|
||||
<English>9.3mm 10Rnd Tracer Mag</English>
|
||||
<German>9,3mm 10-Patronen-Magazin Leuchtspur</German>
|
||||
<Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
|
||||
<French>Ch. 9.3mm 10Cps Traçante</French>
|
||||
<French>Ch. 9,3mm 10Cps Traçante</French>
|
||||
<Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
|
||||
<Russian>Магазин из 10-ти 9,3 мм трассирующих</Russian>
|
||||
<Italian>9.3mm 10Rnd Tracer Mag</Italian>
|
||||
@ -657,7 +657,7 @@
|
||||
<German>9,3mm Leuchtspur</German>
|
||||
<Polish>9,3mm Smugacz</Polish>
|
||||
<Czech>9.3mm Svítící</Czech>
|
||||
<French>9.3mm Traçante</French>
|
||||
<French>9,3mm Traçante</French>
|
||||
<Spanish>9.3mm Trazadora</Spanish>
|
||||
<Russian>9,3 мм трассирующие</Russian>
|
||||
<Italian>9.3mm Tracer</Italian>
|
||||
@ -670,7 +670,7 @@
|
||||
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||
<German>Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus</German>
|
||||
<Polish>Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus</French>
|
||||
<French>Calibre: 9,3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus</French>
|
||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||
<Italian>Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
||||
@ -684,7 +684,7 @@
|
||||
<English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
|
||||
<German>9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM</German>
|
||||
<Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
|
||||
<French>Ch. 9.3mm 10Cps Traçante IR-DIM</French>
|
||||
<French>Ch. 9,3mm 10Cps Traçante IR-DIM</French>
|
||||
<Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
||||
<Russian>Магазин из 10-ти 9,3 мм ИК-трассирующих</Russian>
|
||||
<Italian>9.3mm 10Rnd Tracciante IR-DIM Mag</Italian>
|
||||
@ -699,7 +699,7 @@
|
||||
<German>9,3mm IR-DIM</German>
|
||||
<Polish>9,3mm IR-DIM</Polish>
|
||||
<Czech>9.3mm IR-DIM</Czech>
|
||||
<French>9.3mm IR-DIM</French>
|
||||
<French>9,3mm IR-DIM</French>
|
||||
<Spanish>9.3mm IR-DIM</Spanish>
|
||||
<Russian>9,3 мм ИК-трассирующие</Russian>
|
||||
<Italian>9.3mm IR-DIM</Italian>
|
||||
@ -712,7 +712,7 @@
|
||||
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus</English>
|
||||
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus</German>
|
||||
<Polish>Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus</Polish>
|
||||
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus</French>
|
||||
<French>Calibre: 9,3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus</French>
|
||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus</Russian>
|
||||
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus</Italian>
|
||||
@ -727,7 +727,7 @@
|
||||
<English>9.3mm 150Rnd Tracer Belt</English>
|
||||
<German>9,3mm 150-Patronen-Gurt Leuchtspur</German>
|
||||
<Polish>Taśma 9,3mm 150rd Smugacz</Polish>
|
||||
<French>Bande 9.3mm 150Cps Traçante</French>
|
||||
<French>Bande 9,3mm 150Cps Traçante</French>
|
||||
<Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
|
||||
<Russian>Лента из 150-ти 9,3 мм трассирующих</Russian>
|
||||
<Italian>9.3mm 150Rnd Tracer Belt</Italian>
|
||||
@ -742,7 +742,7 @@
|
||||
<German>9,3mm Leuchtspur</German>
|
||||
<Polish>9,3mm Smugacz</Polish>
|
||||
<Czech>9.3mm Svítící</Czech>
|
||||
<French>9.3mm Traçante</French>
|
||||
<French>9,3mm Traçante</French>
|
||||
<Spanish>9.3mm Trazadora</Spanish>
|
||||
<Russian>9,3 мм трассирующие</Russian>
|
||||
<Italian>9.3mm Tracciante</Italian>
|
||||
@ -755,7 +755,7 @@
|
||||
<English>Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid</English>
|
||||
<German>Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid</German>
|
||||
<Polish>Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||
<French>Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<French>Calibre: 9,3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<Spanish>Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||
<Italian>Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||
@ -769,7 +769,7 @@
|
||||
<English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
|
||||
<German>9,3mm 150-Patronen-Gurt Leuchtspur IR-DIM</German>
|
||||
<Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
|
||||
<French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
|
||||
<French>Bande 9,3mm 150Cps Traçante IR-DIM</French>
|
||||
<Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
|
||||
<Russian>Лента из 150-ти 9,3 мм ИК-трассирующих</Russian>
|
||||
<Italian>9.3mm 150Rnd Tracciante IR-DIM Belt</Italian>
|
||||
@ -784,7 +784,7 @@
|
||||
<German>9,3mm IR-DIM</German>
|
||||
<Polish>9,3mm IR-DIM</Polish>
|
||||
<Czech>9.3mm IR-DIM</Czech>
|
||||
<French>9.3mm IR-DIM</French>
|
||||
<French>9,3mm IR-DIM</French>
|
||||
<Spanish>9.3mm IR-DIM</Spanish>
|
||||
<Russian>9,3 мм ИК-трассирующие</Russian>
|
||||
<Italian>9.3mm IR-DIM</Italian>
|
||||
@ -797,7 +797,7 @@
|
||||
<English>Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid</English>
|
||||
<German>Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid</German>
|
||||
<Polish>Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||
<French>Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<French>Calibre: 9,3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<Spanish>Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||
<Italian>Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||
@ -811,7 +811,7 @@
|
||||
<English>9.3mm 150Rnd AP Belt</English>
|
||||
<German>9,3mm 150-Patronen-Gurt Hartkern</German>
|
||||
<Polish>Taśma 9,3mm 150rd AP</Polish>
|
||||
<French>Bande 9.3mm 150Cps AP</French>
|
||||
<French>Bande 9,3mm 150Cps AP</French>
|
||||
<Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
|
||||
<Russian>Лента из 150-ти 9,3 мм бронебойных</Russian>
|
||||
<Italian>9.3mm 150Rnd AP Belt</Italian>
|
||||
@ -826,7 +826,7 @@
|
||||
<German>9,3mm AP</German>
|
||||
<Polish>9,3mm AP</Polish>
|
||||
<Czech>9.3mm AP</Czech>
|
||||
<French>9.3mm AP</French>
|
||||
<French>9,3mm AP</French>
|
||||
<Spanish>9.3mm AP</Spanish>
|
||||
<Russian>9,3 мм бронебойные</Russian>
|
||||
<Italian>9.3mm AP</Italian>
|
||||
@ -839,7 +839,7 @@
|
||||
<English>Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid</English>
|
||||
<German>Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid</German>
|
||||
<Polish>Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid</Polish>
|
||||
<French>Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<French>Calibre: 9,3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid</French>
|
||||
<Spanish>Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid</Spanish>
|
||||
<Russian>Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид</Russian>
|
||||
<Italian>Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid</Italian>
|
||||
@ -936,7 +936,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_Name">
|
||||
<English>7.62x54mm 10Rnd Tracer Mag</English>
|
||||
<Polish>Magazynek 7,62x54mm 10rd Smugacz</Polish>
|
||||
<French>Ch. 7.62x54mm 10Rnd Traçante</French>
|
||||
<French>Ch. 7,62x54mm 10Cps Traçante</French>
|
||||
<Spanish>Cargador de 10 balas trazadoras de 7.62x54mm</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
|
||||
<German>7,62x54mm 10-Patronen-Magazin Leuchtspur</German>
|
||||
@ -950,7 +950,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_NameShort">
|
||||
<English>7.62mm</English>
|
||||
<Polish>7,62mm</Polish>
|
||||
<French>7.62mm</French>
|
||||
<French>7,62mm</French>
|
||||
<Spanish>7.62mm</Spanish>
|
||||
<Russian>7,62 мм</Russian>
|
||||
<German>7,62mm</German>
|
||||
@ -964,7 +964,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x54_Tracer_mag_Description">
|
||||
<English>7.62x54mm 10Rnd Tracer Mag</English>
|
||||
<Polish>Magazynek 7,62x54mm 10rd Smugacz</Polish>
|
||||
<French>Ch. 7.62x54mm 10Cps Traçante</French>
|
||||
<French>Ch. 7,62x54mm 10Cps Traçante</French>
|
||||
<Spanish>Cargador de 10 balas trazadoras de 7.62x54mm</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
|
||||
<German>7,62x54mm 10-Patronen-Magazin Leuchtspur</German>
|
||||
@ -978,7 +978,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimName">
|
||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
|
||||
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
||||
<French>Ch. 6.5mm 100Rnd Traçante IR-DIM</French>
|
||||
<French>Ch. 6,5mm 100Cps Traçante IR-DIM</French>
|
||||
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
||||
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur</German>
|
||||
@ -992,7 +992,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
|
||||
<English>6.5mm IR-DIM</English>
|
||||
<Polish>6,5mm IR-DIM</Polish>
|
||||
<French>6.5mm IR-DIM</French>
|
||||
<French>6,5mm IR-DIM</French>
|
||||
<Spanish>6.5mm IR-DIM</Spanish>
|
||||
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||
<German>6,5mm IR-DIM </German>
|
||||
@ -1006,7 +1006,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
|
||||
<English>6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW</English>
|
||||
<Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
|
||||
<French>Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW</French>
|
||||
<French>Ch. 6,5mm 100Cps Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW</French>
|
||||
<Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||
<Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
|
||||
<German>6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW</German>
|
||||
@ -1020,7 +1020,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_200Rnd_65x39_cased_Box_Tracer_DimName">
|
||||
<English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
|
||||
<Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
|
||||
<French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
|
||||
<French>Bande 6,5mm 200Cps Traçante IR-DIM</French>
|
||||
<Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
|
||||
<Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
|
||||
<German>6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur</German>
|
||||
@ -1034,7 +1034,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
|
||||
<English>6.5mm IR-DIM</English>
|
||||
<Polish>6,5mm IR-DIM</Polish>
|
||||
<French>6.5mm IR-DIM</French>
|
||||
<French>6,5mm IR-DIM</French>
|
||||
<Spanish>6.5mm IR-DIM</Spanish>
|
||||
<Russian>6,5 мм ИК-трассирующие</Russian>
|
||||
<German>6,5mm IR-DIM</German>
|
||||
@ -1062,7 +1062,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_Name">
|
||||
<English>5.56mm 30Rnd Mag (Mk262)</English>
|
||||
<Polish>Magazynek 5,56mm 30rd Mk262</Polish>
|
||||
<French>5.56mm 30Cps (Mk262)</French>
|
||||
<French>5,56mm 30Cps (Mk262)</French>
|
||||
<Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
|
||||
<Russian>Магазин из 30-ти 5.56 мм Mk262</Russian>
|
||||
<German>5,56mm 30-Patronen-Magazin (Mk262)</German>
|
||||
@ -1076,7 +1076,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
|
||||
<English>5.56mm Mk262</English>
|
||||
<Polish>5,56mm Mk262</Polish>
|
||||
<French>5.56mm Mk262</French>
|
||||
<French>5,56mm Mk262</French>
|
||||
<Spanish>5.56mm Mk262</Spanish>
|
||||
<Russian>5,56 мм Mk262</Russian>
|
||||
<German>5,56mm Mk262</German>
|
||||
@ -1090,7 +1090,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk262_mag_Description">
|
||||
<English>Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30</English>
|
||||
<Polish>Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30</Polish>
|
||||
<French>Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30</French>
|
||||
<French>Calibre: 5,56x45mm NATO (Mk262)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30</Spanish>
|
||||
<Russian>Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30</Russian>
|
||||
<German>Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30</German>
|
||||
@ -1104,7 +1104,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_Name">
|
||||
<English>5.56mm 30Rnd Mag (Mk318)</English>
|
||||
<Polish>Magazynek 5,56mm 30rd (Mk318)</Polish>
|
||||
<French>Ch. 5.56mm 30Cps (Mk318)</French>
|
||||
<French>Ch. 5,56mm 30Cps (Mk318)</French>
|
||||
<Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
|
||||
<Russian>Магазин из 30-ти 5.56 мм (Mk318)</Russian>
|
||||
<German>5,56mm 30-Patronen-Magazin (Mk318)</German>
|
||||
@ -1118,7 +1118,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
|
||||
<English>5.56mm Mk318</English>
|
||||
<Polish>5,56mm Mk318</Polish>
|
||||
<French>5.56mm Mk318</French>
|
||||
<French>5,56mm Mk318</French>
|
||||
<Spanish>5.56mm Mk318</Spanish>
|
||||
<Russian>5.56 мм Mk318</Russian>
|
||||
<German>5,56mm Mk318</German>
|
||||
@ -1132,7 +1132,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_Mk318_mag_Description">
|
||||
<English>Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30</English>
|
||||
<Polish>Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30</Polish>
|
||||
<French>Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30</French>
|
||||
<French>Calibre: 5,56x45mm NATO (Mk318)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30</Spanish>
|
||||
<Russian>Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30</Russian>
|
||||
<German>Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30</German>
|
||||
@ -1146,7 +1146,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_Name">
|
||||
<English>5.56mm 30Rnd Mag (M995 AP)</English>
|
||||
<Polish>Magazynek 5,56mm 30rd (M995 AP)</Polish>
|
||||
<French>Ch. 5.56mm 30Cps (M995 AP)</French>
|
||||
<French>Ch. 5,56mm 30Cps (M995 AP)</French>
|
||||
<Spanish>Cargador de 30 balas de 5.56mm (M995 AP)</Spanish>
|
||||
<Russian>Магазин из 30-ти 5.56 мм (M995 бронебойные)</Russian>
|
||||
<German>5,56mm 30-Patronen-Magazin (M995AP)</German>
|
||||
@ -1160,7 +1160,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_NameShort">
|
||||
<English>5.56mm AP</English>
|
||||
<Polish>5,56mm AP</Polish>
|
||||
<French>5.56mm AP</French>
|
||||
<French>5,56mm AP</French>
|
||||
<Spanish>5.56mm AP</Spanish>
|
||||
<Russian>5.56 мм бронебойные</Russian>
|
||||
<German>5,56mm AP</German>
|
||||
@ -1174,7 +1174,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_556x45_Stanag_M995_AP_mag_Description">
|
||||
<English>Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30</English>
|
||||
<Polish>Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30</Polish>
|
||||
<French>Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30</French>
|
||||
<French>Calibre: 5,56x45mm NATO (M995 AP)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30</Spanish>
|
||||
<Russian>Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30</Russian>
|
||||
<German>Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30</German>
|
||||
@ -1188,7 +1188,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (M118LR)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
|
||||
<French>Ch. 7.62mm 10Cps (M118LR)</French>
|
||||
<French>Ch. 7,62mm 10Cps (M118LR)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (M118LR)</Russian>
|
||||
<German>7,62mm 10-Patronen-Magazin (M118LR)</German>
|
||||
@ -1202,7 +1202,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_NameShort">
|
||||
<English>7.62mm M118LR</English>
|
||||
<Polish>7,62mm M118LR</Polish>
|
||||
<French>7.62mm M118LR</French>
|
||||
<French>7,62mm M118LR</French>
|
||||
<Spanish>7.62mm M118LR</Spanish>
|
||||
<Russian>7,62 мм M118LR</Russian>
|
||||
<German>7,62mm M118LR</German>
|
||||
@ -1216,7 +1216,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M118LR_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 7,62x51mm NATO (M118LR)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10</German>
|
||||
@ -1230,7 +1230,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M118LR_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (M118LR)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (M118LR)</French>
|
||||
<French>Ch. 7,62mm 20Cps (M118LR)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (M118LR)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (M118LR)</German>
|
||||
@ -1244,7 +1244,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M118LR_Mag_NameShort">
|
||||
<English>7.62mm M118LR</English>
|
||||
<Polish>7,62mm M118LR</Polish>
|
||||
<French>7.62mm M118LR</French>
|
||||
<French>7,62mm M118LR</French>
|
||||
<Spanish>7.62mm M118LR</Spanish>
|
||||
<Russian>7,62 мм M118LR</Russian>
|
||||
<German>7,62mm M118LR</German>
|
||||
@ -1272,7 +1272,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (Mk316 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (Mk316 Mod 0)</Polish>
|
||||
<French>Ch. 7.62mm 10Cps (Mk316 Mod 0)</French>
|
||||
<French>Ch. 7,62mm 10Cps (Mk316 Mod 0)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (Mk316 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (Mk316 Mod 0)</Russian>
|
||||
<German>7,62mm 10-Patronen-Magazin (Mk316 Mod 0)</German>
|
||||
@ -1286,7 +1286,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk316</English>
|
||||
<Polish>7,62mm Mk316</Polish>
|
||||
<French>7.62mm Mk316</French>
|
||||
<French>7,62mm Mk316</French>
|
||||
<Spanish>7.62mm Mk316</Spanish>
|
||||
<Russian>7,62 мм Mk316</Russian>
|
||||
<German>7,62mm Mk316</German>
|
||||
@ -1300,7 +1300,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk316_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 7,62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10</German>
|
||||
@ -1314,7 +1314,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk316 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk316 Mod 0)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (Mk316 Mod 0)</French>
|
||||
<French>Ch. 7,62mm 20Cps (Mk316 Mod 0)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk316 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Mk316 Mod 0)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (Mk316 Mod 0)</German>
|
||||
@ -1328,7 +1328,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk316</English>
|
||||
<Polish>7,62mm Mk316</Polish>
|
||||
<French>7.62mm Mk316</French>
|
||||
<French>7,62mm Mk316</French>
|
||||
<Spanish>7.62mm Mk316</Spanish>
|
||||
<Russian>7,62 мм Mk316</Russian>
|
||||
<German>7,62mm Mk316</German>
|
||||
@ -1342,7 +1342,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk316_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20</German>
|
||||
@ -1356,7 +1356,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
|
||||
<French>Ch. 7.62mm 10Cps (Mk319 Mod 0)</French>
|
||||
<French>Ch. 7,62mm 10Cps (Mk319 Mod 0)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (Mk319 Mod 0)</Russian>
|
||||
<German>7,62mm 10-Patronen-Magazin (Mk319 Mod 0)</German>
|
||||
@ -1370,7 +1370,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk319</English>
|
||||
<Polish>7,62mm Mk319</Polish>
|
||||
<French>7.62mm Mk319</French>
|
||||
<French>7,62mm Mk319</French>
|
||||
<Spanish>7.62mm Mk319</Spanish>
|
||||
<Russian>7,62 мм Mk319</Russian>
|
||||
<German>7,62mm Mk319</German>
|
||||
@ -1384,7 +1384,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 7,62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10</German>
|
||||
@ -1398,7 +1398,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (Mk319 Mod 0)</French>
|
||||
<French>Ch. 7,62mm 20Cps (Mk319 Mod 0)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Mk319 Mod 0)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (Mk319 Mod 0)</German>
|
||||
@ -1412,7 +1412,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk319</English>
|
||||
<Polish>7,62mm Mk319</Polish>
|
||||
<French>7.62mm Mk319</French>
|
||||
<French>7,62mm Mk319</French>
|
||||
<Spanish>7.62mm Mk319</Spanish>
|
||||
<Russian>7,62 мм Mk319</Russian>
|
||||
<German>7,62mm Mk319</German>
|
||||
@ -1426,7 +1426,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20</German>
|
||||
@ -1440,7 +1440,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_Name">
|
||||
<English>7.62mm 10Rnd Mag (M993 AP)</English>
|
||||
<Polish>Magazynek 7,62mm 10rd (M993 AP)</Polish>
|
||||
<French>Ch. 7.62mm 10Cps (M993 AP)</French>
|
||||
<French>Ch. 7,62mm 10Cps (M993 AP)</French>
|
||||
<Spanish>Cargador de 10 balas de 7.62mm (M993 AP)</Spanish>
|
||||
<Russian>Магазин из 10-ти 7,62 мм (M993 бронебойные)</Russian>
|
||||
<German>7,62mm 10-Patronen-Magazin (M993 AP)</German>
|
||||
@ -1454,7 +1454,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_NameShort">
|
||||
<English>7.62mm AP</English>
|
||||
<Polish>7,62mm AP</Polish>
|
||||
<French>7.62mm AP</French>
|
||||
<French>7,62mm AP</French>
|
||||
<Spanish>7.62mm AP</Spanish>
|
||||
<Russian>7,62mm бронебойные</Russian>
|
||||
<German>7,62mm AP</German>
|
||||
@ -1468,7 +1468,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_762x51_M993_AP_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 7,62x51mm NATO (M993 AP)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10</Spanish>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10</German>
|
||||
@ -1482,7 +1482,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (M993 AP)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (M993 AP)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (M993 AP)</French>
|
||||
<French>Ch. 7,62mm 20Cps (M993 AP)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (M993 AP)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (M993 бронебойные)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (M993 AP)</German>
|
||||
@ -1496,7 +1496,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_NameShort">
|
||||
<English>7.62mm AP</English>
|
||||
<Polish>7,62mm AP</Polish>
|
||||
<French>7.62mm AP</French>
|
||||
<French>7,62mm AP</French>
|
||||
<Spanish>7.62mm AP</Spanish>
|
||||
<Russian>7,62 мм бронебойные</Russian>
|
||||
<German>7,62mm AP</German>
|
||||
@ -1510,7 +1510,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x51_M993_AP_Mag_Description">
|
||||
<English>Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x51mm NATO (M993 AP)<br />Cartouches: 20</French>
|
||||
<Russian>Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20</German>
|
||||
<Italian>Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20</Italian>
|
||||
@ -1524,7 +1524,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (Mk248 Mod 0)</French>
|
||||
<French>Ch. 7,62mm 20Cps (Mk248 Mod 0)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 0)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (Mk248 Mod 0)</German>
|
||||
@ -1538,7 +1538,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
|
||||
<English>7.62mm Mk248</English>
|
||||
<Polish>7,62mm Mk248</Polish>
|
||||
<French>7.62mm Mk248</French>
|
||||
<French>7,62mm Mk248</French>
|
||||
<Spanish>7.62mm Mk248</Spanish>
|
||||
<Russian>7,62 мм Mk248</Russian>
|
||||
<German>7,62mm Mk248</German>
|
||||
@ -1552,7 +1552,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
|
||||
<English>Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20</German>
|
||||
@ -1566,7 +1566,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
|
||||
<French>Ch. 7.62mm 20Cps (Mk248 Mod 1)</French>
|
||||
<French>Ch. 7,62mm 20Cps (Mk248 Mod 1)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 1)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (Mk248 Mod 1)</German>
|
||||
@ -1580,7 +1580,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
|
||||
<English>7.62mm Mk248</English>
|
||||
<Polish>7,62mm Mk248</Polish>
|
||||
<French>7.62mm Mk248</French>
|
||||
<French>7,62mm Mk248</French>
|
||||
<Spanish>7.62mm Mk248</Spanish>
|
||||
<Russian>7,62 мм Mk248</Russian>
|
||||
<German>7,62mm Mk248</German>
|
||||
@ -1594,7 +1594,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
|
||||
<English>Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20</German>
|
||||
@ -1608,7 +1608,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
|
||||
<English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
|
||||
<Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
|
||||
<French>Ch. 7.62 20Cps (Berger Hybrid OTM)</French>
|
||||
<French>Ch. 7,62 20Cps (Berger Hybrid OTM)</French>
|
||||
<Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
|
||||
<Russian>Магазин из 20-ти 7,62 мм (Berger Hybrid OTM)</Russian>
|
||||
<German>7,62mm 20-Patronen-Magazin (Berger Hybrid OTM)</German>
|
||||
@ -1622,7 +1622,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
|
||||
<English>7.62mm OTM</English>
|
||||
<Polish>7,62mm OTM</Polish>
|
||||
<French>7.62mm OTM</French>
|
||||
<French>7,62mm OTM</French>
|
||||
<Spanish>7.62mm OTM</Spanish>
|
||||
<Russian>7,62 мм OTM</Russian>
|
||||
<German>7,62mm OTM</German>
|
||||
@ -1636,7 +1636,7 @@
|
||||
<Key ID="STR_ACE_Ballistics_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
|
||||
<English>Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20</English>
|
||||
<Polish>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20</Polish>
|
||||
<French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20</French>
|
||||
<French>Calibre: 7,62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20</French>
|
||||
<Spanish>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20</Spanish>
|
||||
<Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20</Russian>
|
||||
<German>Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20</German>
|
||||
@ -1649,7 +1649,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_Name">
|
||||
<English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
|
||||
<French>Ch. 6.5x47mm 30Cps (HPBT Scenar)</French>
|
||||
<French>Ch. 6,5x47mm 30Cps (HPBT Scenar)</French>
|
||||
<Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
|
||||
<Polish>Magazynek 6,5x47mm 30rd (HPBT Scenar)</Polish>
|
||||
<Russian>Магазин из 30-ти 6,5x47 мм (экспансивные Scenar)</Russian>
|
||||
@ -1663,7 +1663,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_NameShort">
|
||||
<English>6.5mm Lapua</English>
|
||||
<French>6.5mm Lapua</French>
|
||||
<French>6,5mm Lapua</French>
|
||||
<Spanish>6.5mm Lapua</Spanish>
|
||||
<Polish>6,5mm Lapua</Polish>
|
||||
<Russian>6,5 мм Lapua</Russian>
|
||||
@ -1677,7 +1677,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_65x47_Scenar_mag_Description">
|
||||
<English>Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM</English>
|
||||
<French>Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30</French>
|
||||
<French>Calibre: 6,5x47mm (HPBT Scenar)<br />Cartouches: 30</French>
|
||||
<Spanish>Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM</Spanish>
|
||||
<Polish>Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30</Polish>
|
||||
<Russian>Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM</Russian>
|
||||
@ -1696,7 +1696,7 @@
|
||||
<Russian>Магазин из 30-ти 6,5 мм Creedmor</Russian>
|
||||
<German>6,5mm Creedmor 30-Patronen-Magazin</German>
|
||||
<Spanish>Cargador de 30 balas Creedmor de 6.5mm</Spanish>
|
||||
<French>Ch. 6.5mm Creedmor 30Cps</French>
|
||||
<French>Ch. 6,5mm Creedmor 30Cps</French>
|
||||
<Czech>6.5mm Creedmor 30náb. Zásobník</Czech>
|
||||
<Portuguese>Carregador 6.5mm com 30 cartuchos Creedmor</Portuguese>
|
||||
<Hungarian>6,5mm Creedmor 30-lövedékes tár</Hungarian>
|
||||
@ -1705,7 +1705,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_30Rnd_65_Creedmor_mag_NameShort">
|
||||
<English>6.5mm CM</English>
|
||||
<French>6.5mm CM</French>
|
||||
<French>6,5mm CM</French>
|
||||
<Spanish>6.5mm CM</Spanish>
|
||||
<Polish>6,5mm CM</Polish>
|
||||
<Russian>6,5 мм CM</Russian>
|
||||
@ -1721,7 +1721,7 @@
|
||||
<English>Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM</English>
|
||||
<Polish>Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM</Polish>
|
||||
<German>Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM</German>
|
||||
<French>Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM</French>
|
||||
<French>Calibre: 6,5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM</French>
|
||||
<Italian>Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM</Italian>
|
||||
<Spanish>Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM</Spanish>
|
||||
<Russian>Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM</Russian>
|
||||
@ -1761,7 +1761,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_338_300gr_HPBT_Mag_Description">
|
||||
<English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10</English>
|
||||
<French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10</Spanish>
|
||||
<Polish>Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10</Polish>
|
||||
<Russian>Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10</Russian>
|
||||
@ -1803,7 +1803,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_10Rnd_338_API526_Mag_Description">
|
||||
<English>Caliber: 8.6x70mm (API526)<br />Rounds: 10</English>
|
||||
<French>Calibre: 8.6x70mm (API526)<br />Cartouches: 10</French>
|
||||
<French>Calibre: 8,6x70mm (API526)<br />Cartouches: 10</French>
|
||||
<Spanish>Calibre: 8.6x70mm (API526)<br />Balas: 10</Spanish>
|
||||
<Polish>Kaliber: 8,6x70mm (API526)<br />Pociski: 10</Polish>
|
||||
<Russian>Калибр: 8,6x70 мм (API526)<br />Патронов: 10</Russian>
|
||||
@ -1859,7 +1859,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_Name">
|
||||
<English>12.7x99mm 5Rnd Mag</English>
|
||||
<French>Ch. 12.7x99mm 5Cps</French>
|
||||
<French>Ch. 12,7x99mm 5Cps</French>
|
||||
<Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
|
||||
<Polish>Magazynek 12,7x99mm 5rd</Polish>
|
||||
<Russian>Магазин из 5-ти 12,7x99 мм</Russian>
|
||||
@ -1873,7 +1873,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_Mag_NameShort">
|
||||
<English>12.7mm</English>
|
||||
<French>12.7mm</French>
|
||||
<French>12,7mm</French>
|
||||
<Spanish>12.7mm</Spanish>
|
||||
<Polish>12,7mm</Polish>
|
||||
<Russian>12,7 мм</Russian>
|
||||
@ -1901,7 +1901,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_Name">
|
||||
<English>12.7x99mm API 5Rnd Mag</English>
|
||||
<French>Ch. 12.7x99mm API 5Cps</French>
|
||||
<French>Ch. 12,7x99mm API 5Cps</French>
|
||||
<Spanish>Cargador de 5 balas de 12.7x99mm API</Spanish>
|
||||
<Polish>Magazynek 12,7x99mm API 5rd</Polish>
|
||||
<Italian>12.7x99mm API 5Rnd Mag</Italian>
|
||||
@ -1915,7 +1915,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_NameShort">
|
||||
<English>12.7mm API</English>
|
||||
<French>12.7mm API</French>
|
||||
<French>12,7mm API</French>
|
||||
<Spanish>12.7mm API</Spanish>
|
||||
<Polish>12,7mm API</Polish>
|
||||
<Italian>12.7mm API</Italian>
|
||||
@ -1929,7 +1929,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_API_Mag_Description">
|
||||
<English>Caliber: 12.7x99mm API<br />Rounds: 5</English>
|
||||
<French>Calibre: 12.7x99mm API<br />Cartouches: 5</French>
|
||||
<French>Calibre: 12,7x99mm API<br />Cartouches: 5</French>
|
||||
<Spanish>Calibre: 12.7x99mm API<br />Balas: 5</Spanish>
|
||||
<Polish>Kaliber: 12,7x99mm API<br />Pociski: 5</Polish>
|
||||
<Russian>Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5</Russian>
|
||||
@ -1943,7 +1943,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_Name">
|
||||
<English>12.7x99mm 5Rnd Mag (AMAX)</English>
|
||||
<French>Ch. 12.7x99mm 5Cps (AMAX)</French>
|
||||
<French>Ch. 12,7x99mm 5Cps (AMAX)</French>
|
||||
<Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
|
||||
<Polish>Magazynek 12,7x99mm 5rd (AMAX)</Polish>
|
||||
<Russian>Магазин из 5-ти 12,7x99 мм (A-MAX)</Russian>
|
||||
@ -1957,7 +1957,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_NameShort">
|
||||
<English>12.7mm</English>
|
||||
<French>12.7mm</French>
|
||||
<French>12,7mm</French>
|
||||
<Spanish>12.7mm</Spanish>
|
||||
<Polish>12,7mm</Polish>
|
||||
<Russian>12,7 мм</Russian>
|
||||
@ -1971,7 +1971,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Ballistics_5Rnd_127x99_AMAX_Mag_Description">
|
||||
<English>Caliber: 12.7x99mm (AMAX)<br />Rounds: 5</English>
|
||||
<French>Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5</French>
|
||||
<French>Calibre: 12,7x99mm (AMAX)<br />Cartouches: 5</French>
|
||||
<Spanish>Calibre: 12.7x99mm (AMAX)<br />Balas: 5</Spanish>
|
||||
<Polish>Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5</Polish>
|
||||
<Russian>Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5</Russian>
|
||||
|
@ -6,4 +6,11 @@ class ACE_Settings {
|
||||
value = 1;
|
||||
category = ECSTRING(OptionsMenu,CategoryLogistics);
|
||||
};
|
||||
class GVAR(paradropTimeCoefficent) {
|
||||
displayName = CSTRING(paradropTimeCoefficent);
|
||||
description = CSTRING(paradropTimeCoefficent_description);
|
||||
typeName = "SCALAR";
|
||||
value = 2.5;
|
||||
category = ECSTRING(OptionsMenu,CategoryLogistics);
|
||||
};
|
||||
};
|
||||
|
@ -26,6 +26,12 @@ class CfgVehicles {
|
||||
typeName = "BOOL";
|
||||
defaultValue = 1;
|
||||
};
|
||||
class paradropTimeCoefficent {
|
||||
displayName = CSTRING(paradropTimeCoefficent);
|
||||
description = CSTRING(paradropTimeCoefficent_description);
|
||||
typeName = "SCALAR";
|
||||
defaultValue = 2.5;
|
||||
};
|
||||
};
|
||||
|
||||
class ModuleDescription {
|
||||
|
@ -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}
|
||||
|
@ -24,5 +24,6 @@ params ["_logic", "", "_activated"];
|
||||
if (!_activated) exitWith {};
|
||||
|
||||
[_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule);
|
||||
[_logic, QGVAR(paradropTimeCoefficent), "paradropTimeCoefficent"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
INFO("Cargo Module Initialized.");
|
||||
|
@ -44,7 +44,13 @@ if (GVAR(interactionParadrop)) then {
|
||||
lbClear _ctrl;
|
||||
{
|
||||
private _class = if (_x isEqualType "") then {_x} else {typeOf _x};
|
||||
_ctrl lbAdd (getText(configfile >> "CfgVehicles" >> _class >> "displayName"));
|
||||
private _displayName = getText (configfile >> "CfgVehicles" >> _class >> "displayName");
|
||||
if (GVAR(interactionParadrop)) then {
|
||||
_ctrl lbAdd format ["%1 (%2s)", _displayName, GVAR(paradropTimeCoefficent) * ([_class] call FUNC(getSizeItem))];
|
||||
} else {
|
||||
_ctrl lbAdd _displayName;
|
||||
};
|
||||
|
||||
true
|
||||
} count _loaded;
|
||||
|
||||
|
@ -90,6 +90,15 @@ _itemObject setVelocity ((velocity _vehicle) vectorAdd ((vectorNormalized (vecto
|
||||
|
||||
}, 1, [_itemObject]] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
[
|
||||
[
|
||||
LSTRING(UnloadedItem),
|
||||
getText (configFile >> "CfgVehicles" >> typeOf _itemObject >> "displayName"),
|
||||
getText (configFile >> "CfgVehicles" >> typeOf _vehicle >> "displayName")
|
||||
],
|
||||
3
|
||||
] call EFUNC(common,displayTextStructured);
|
||||
|
||||
// Invoke listenable event
|
||||
["ace_cargoUnloaded", [_item, _vehicle, "paradrop"]] call CBA_fnc_globalEvent;
|
||||
|
||||
|
@ -28,13 +28,18 @@ private _ctrl = _display displayCtrl 100;
|
||||
private _selected = (lbCurSel _ctrl) max 0;
|
||||
|
||||
if (count _loaded <= _selected) exitWith {};
|
||||
private _item = _loaded select _selected; //This can be an object or a classname string
|
||||
private _item = _loaded select _selected; // This can be an object or a classname string
|
||||
|
||||
if (GVAR(interactionParadrop)) exitWith {
|
||||
// If drop time is 0 don't show a progress bar
|
||||
if (GVAR(paradropTimeCoefficent) == 0) exitWith {
|
||||
[QGVAR(paradropItem), [_item, GVAR(interactionVehicle)]] call CBA_fnc_localEvent;
|
||||
};
|
||||
|
||||
// Start progress bar - paradrop
|
||||
private _size = [_item] call FUNC(getSizeItem);
|
||||
[
|
||||
2.5 * _size,
|
||||
GVAR(paradropTimeCoefficent) * _size,
|
||||
[_item, GVAR(interactionVehicle), ACE_player],
|
||||
{
|
||||
(_this select 0) params ["_item", "_target", "_player"];
|
||||
|
@ -243,6 +243,7 @@
|
||||
<Japanese>空中投下</Japanese>
|
||||
<Polish>Zrzut zaopatrzenia</Polish>
|
||||
<Korean>공중 투하</Korean>
|
||||
<French>Largage aérien</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unlevelFlightWarning">
|
||||
<English>Unlevel Flight</English>
|
||||
@ -250,6 +251,13 @@
|
||||
<Japanese>機体が水平ではありません</Japanese>
|
||||
<Polish>Nierówny lot</Polish>
|
||||
<Korean>기체가 수평이 아닙니다</Korean>
|
||||
<French>Rétablir l'assiette</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_paradropTimeCoefficent">
|
||||
<English>Paradrop Time Coffecient</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_paradropTimeCoefficent_description">
|
||||
<English>Modifier for how long it takes to paradrop a cargo item.</English>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Chemlights">
|
||||
<Key ID="STR_ACE_Chemlights_Action_Chemlights">
|
||||
@ -7,6 +7,7 @@
|
||||
<Polish>Świetliki</Polish>
|
||||
<German>Knicklichter</German>
|
||||
<Korean>켐라이트</Korean>
|
||||
<French>Cyalumes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare">
|
||||
<English>Prepare %1</English>
|
||||
@ -14,6 +15,7 @@
|
||||
<Polish>Przygotuj %1</Polish>
|
||||
<German>%1 vorbereiten</German>
|
||||
<Korean>%1 준비</Korean>
|
||||
<French>Prépare %1</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Action_Prepare_Done">
|
||||
<English>%1<br/>Prepared</English>
|
||||
@ -21,13 +23,14 @@
|
||||
<Polish>%1<br/>Przygotowany</Polish>
|
||||
<German>%1<br/>vorbereitet</German>
|
||||
<Korean>%1<br/>준비됨</Korean>
|
||||
<French>%1<br/>prêt</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Inventory_Full">
|
||||
<English>No inventory space</English>
|
||||
<German>Kein Platz im Inventar</German>
|
||||
<Spanish>Sin espacio en inventario</Spanish>
|
||||
<Polish>Brak miejsca w ekwipunku</Polish>
|
||||
<French>Pas de place dans l'inventaire</French>
|
||||
<French>Pas de place</French>
|
||||
<Czech>Nedostatek místa v inventáři</Czech>
|
||||
<Portuguese>Sem espaço no inventário</Portuguese>
|
||||
<Italian>Non hai più spazio</Italian>
|
||||
@ -42,6 +45,7 @@
|
||||
<Polish>[ACE] Świetliki</Polish>
|
||||
<German>[ACE] Knicklichter</German>
|
||||
<Korean>[ACE] 켐라이트</Korean>
|
||||
<French>[ACE] Cyalume</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayName">
|
||||
<English>Chemlight (Orange)</English>
|
||||
@ -49,6 +53,7 @@
|
||||
<Polish>Świetlik (pomarańczowy)</Polish>
|
||||
<German>Knicklicht (orange)</German>
|
||||
<Korean>켐라이트 (주황)</Korean>
|
||||
<French>Cyalume (orange)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DisplayNameShort">
|
||||
<English>Orange Light</English>
|
||||
@ -56,6 +61,7 @@
|
||||
<Polish>Pomarańczowe światło</Polish>
|
||||
<German>Oranges Knicklicht</German>
|
||||
<Korean>주황색</Korean>
|
||||
<French>Lum. orange </French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Orange_DescriptionShort">
|
||||
<English>Type: Light - Orange<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -63,6 +69,7 @@
|
||||
<Polish>Typ: Światło - pomarańczowe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - orange<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류:밝은 오렌지<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - orange<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayName">
|
||||
<English>Chemlight (White)</English>
|
||||
@ -70,6 +77,7 @@
|
||||
<Polish>Świetlik (biały)</Polish>
|
||||
<German>Knicklicht (weiß)</German>
|
||||
<Korean>켐라이트 (하양)</Korean>
|
||||
<French>Cyalume (blanc)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DisplayNameShort">
|
||||
<English>White Light</English>
|
||||
@ -77,6 +85,7 @@
|
||||
<Polish>Białe światło</Polish>
|
||||
<German>Weißes Knicklicht</German>
|
||||
<Korean>하얀색</Korean>
|
||||
<French>Lum. blanche </French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_White_DescriptionShort">
|
||||
<English>Type: Light - White<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -84,6 +93,7 @@
|
||||
<Polish>Typ: Światło - białe<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - weiß<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류:하얀색<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - blanche<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayName">
|
||||
<English>Chemlight (Hi Red)</English>
|
||||
@ -91,6 +101,7 @@
|
||||
<Polish>Świetlik (jaskrawy czerwony)</Polish>
|
||||
<German>Knicklicht (rot, hell)</German>
|
||||
<Korean>켐라이트 (밝은 빨간색)</Korean>
|
||||
<French>Cyalume (Hi rouge)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DisplayNameShort">
|
||||
<English>Red Hi Light</English>
|
||||
@ -98,6 +109,7 @@
|
||||
<Polish>Jaskrawe czerwone światło</Polish>
|
||||
<German>Helles, rotes Knicklicht</German>
|
||||
<Korean>밝은 빨간색</Korean>
|
||||
<French>Lum. rouge haute intensité</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiRed_DescriptionShort">
|
||||
<English>Type: Light - Red Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -105,6 +117,7 @@
|
||||
<Polish>Typ: Światło - jaskrawe czerwone (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - rot, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류: 밝은 빨간색 (5분)<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - rouge Hi (5 minutes)<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayName">
|
||||
<English>Chemlight (Hi Yellow)</English>
|
||||
@ -112,6 +125,7 @@
|
||||
<Polish>Świetlik (jaskrawy żółty)</Polish>
|
||||
<German>Knicklicht (gelb, hell)</German>
|
||||
<Korean>켐라이트 (밝은 노란색)</Korean>
|
||||
<French>Cyalume (Hi jaune)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DisplayNameShort">
|
||||
<English>Yellow Hi Light</English>
|
||||
@ -119,6 +133,7 @@
|
||||
<Polish>Jaskrawe żółte światło</Polish>
|
||||
<German>Helles, gelbes Knicklicht</German>
|
||||
<Korean>밝은 노란색</Korean>
|
||||
<French>Lum. jaune haute intensité</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiYellow_DescriptionShort">
|
||||
<English>Type: Light - Yellow Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -126,6 +141,7 @@
|
||||
<Polish>Typ: Światło - jaskrawe żółte (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - gelb, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류:밝은 노란색 (5분)<br />수량: 1<br />사용처: Hand</Korean>
|
||||
<French>Type: Lumière - Jaune Hi (5 minutes)Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayName">
|
||||
<English>Chemlight (Hi Orange)</English>
|
||||
@ -133,6 +149,7 @@
|
||||
<Polish>Świetlik (jaskrawy pomarańczowy)</Polish>
|
||||
<German>Knicklicht (orange, hell)</German>
|
||||
<Korean>켐라이트 (밝은 주황색)</Korean>
|
||||
<French>Cyalume (Hi orange)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DisplayNameShort">
|
||||
<English>Orange Hi Light</English>
|
||||
@ -140,6 +157,7 @@
|
||||
<Polish>Jaskrawe pomarańczowe światło</Polish>
|
||||
<German>Helles, oranges Knicklicht</German>
|
||||
<Korean>밝은 주황색</Korean>
|
||||
<French>Lum. orange haute intensité</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiOrange_DescriptionShort">
|
||||
<English>Type: Light - Orange Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -147,6 +165,7 @@
|
||||
<Polish>Typ: Światło - jaskrawe pomarańczowe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - orange, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류: 밝은 주황색 (5분)<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - orange Hi (5 minutes)<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayName">
|
||||
<English>Chemlight (Hi White)</English>
|
||||
@ -154,6 +173,7 @@
|
||||
<Polish>Świetlik (jaskrawy biały)</Polish>
|
||||
<German>Knicklicht (weiß, hell)</German>
|
||||
<Korean>켐라이트 (밝은 하얀색)</Korean>
|
||||
<French>Cyalume (Hi blanc)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DisplayNameShort">
|
||||
<English>White Hi Light</English>
|
||||
@ -161,6 +181,7 @@
|
||||
<Polish>Jaskrawe białe światło</Polish>
|
||||
<German>Helles, weißes Knicklicht</German>
|
||||
<Korean>밝은 하얀색</Korean>
|
||||
<French>Lum. blanche haute intensité</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_HiWhite_DescriptionShort">
|
||||
<English>Type: Light - White Hi (5 minute)<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -168,6 +189,7 @@
|
||||
<Polish>Typ: Światło - jaskrawe białe (5 minut)<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - weiß, hell (5 Minuten)<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류: 밝은 하얀색 (5분)<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - blanche Hi (5 minutes)<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayName">
|
||||
<English>Chemlight (IR)</English>
|
||||
@ -175,6 +197,7 @@
|
||||
<Polish>Świetlik (podczerwony)</Polish>
|
||||
<German>Knicklicht (IR)</German>
|
||||
<Korean>켐라이트 (적외선)</Korean>
|
||||
<French>Cyalume (IR)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DisplayNameShort">
|
||||
<English>IR Light</English>
|
||||
@ -182,6 +205,7 @@
|
||||
<Polish>Światło podczerwone</Polish>
|
||||
<German>IR-Knicklicht</German>
|
||||
<Korean>적외선 켐라이트</Korean>
|
||||
<French>Lumière IR</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_IR_DescriptionShort">
|
||||
<English>Type: Light - Infrared<br />Rounds: 1<br />Used in: Hand</English>
|
||||
@ -189,6 +213,7 @@
|
||||
<Polish>Typ: Światło - podczerwone<br/>Pociski: 1<br/>Używany w: ręce</Polish>
|
||||
<German>Typ: Licht - infrarot<br />Anzahl: 1<br />Benutzt in: Hand</German>
|
||||
<Korean>종류: 적외선<br />수량: 1<br />사용처: 손</Korean>
|
||||
<French>Type: Lumière - infrarouge<br />Nbre: 1<br /> À main</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DisplayName">
|
||||
<English>Chemlight Shield (Empty)</English>
|
||||
@ -196,6 +221,7 @@
|
||||
<Polish>Osłona na świetlik (pusta)</Polish>
|
||||
<German>Knicklicht-Abschirmung (leer)</German>
|
||||
<Korean>켐라이트 쉴드 (비어있음)</Korean>
|
||||
<French>Étui cyalume (vide)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Empty_DescriptionShort">
|
||||
<English>Shield for chemlights. Combine with chemlight to prepare reading light.</English>
|
||||
@ -203,6 +229,7 @@
|
||||
<Polish>Osłona na świetliki. Połącz ją ze świetlikiem by stworzyć lampkę do czytania.</Polish>
|
||||
<German>Abschirmung für Knicklichter. Mit Knicklicht kombinieren, um Leselicht zu erhalten.</German>
|
||||
<Korean>켐라이트를 위한 가림막입니다. 켐라이트와 같이 사용하여 읽을 때 씁니다.</Korean>
|
||||
<French>Étui pour cyalume. Combiné avec un cyalume pour obtennir un lampe de lecture.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DisplayName">
|
||||
<English>Chemlight Shield (Green)</English>
|
||||
@ -210,6 +237,7 @@
|
||||
<Polish>Osłona na świetlik (zielona)</Polish>
|
||||
<German>Knicklicht-Abschirmung (grün)</German>
|
||||
<Korean>켐라이트 쉴드 (초록)</Korean>
|
||||
<French>Étui cyalume (vert)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Green_DescriptionShort">
|
||||
<English>Green reading light.</English>
|
||||
@ -217,6 +245,7 @@
|
||||
<Polish>Zielona lampka.</Polish>
|
||||
<German>Grünes Leselicht.</German>
|
||||
<Korean>초록빛 조명</Korean>
|
||||
<French>Lampe d'orientation verte.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DisplayName">
|
||||
<English>Chemlight Shield (Red)</English>
|
||||
@ -224,6 +253,7 @@
|
||||
<Polish>Osłona na świetlik (czerwona)</Polish>
|
||||
<German>Knicklicht-Abschirmung (rot)</German>
|
||||
<Korean>켐라이트 쉴드 (빨강)</Korean>
|
||||
<French>Étui cyalume (rouge)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Red_DescriptionShort">
|
||||
<English>Red reading light.</English>
|
||||
@ -231,6 +261,7 @@
|
||||
<Polish>Czerwona lampka.</Polish>
|
||||
<German>Rotes Leselicht.</German>
|
||||
<Korean>빨간색 조명</Korean>
|
||||
<French>Lampe d'orientation rouge.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DisplayName">
|
||||
<English>Chemlight Shield (Blue)</English>
|
||||
@ -238,6 +269,7 @@
|
||||
<Polish>Osłona na świetlik (niebieska)</Polish>
|
||||
<German>Knicklicht-Abschirmung (blau)</German>
|
||||
<Korean>켐라이트 쉴드 (파랑)</Korean>
|
||||
<French>Étui cyalume (bleu)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Blue_DescriptionShort">
|
||||
<English>Blue reading light.</English>
|
||||
@ -245,6 +277,7 @@
|
||||
<Polish>Niebieska lampka.</Polish>
|
||||
<German>Blaues Leselicht.</German>
|
||||
<Korean>파란색 조명</Korean>
|
||||
<French>Lampe d'orientation bleue.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DisplayName">
|
||||
<English>Chemlight Shield (Yellow)</English>
|
||||
@ -252,6 +285,7 @@
|
||||
<Polish>Osłona na świetlik (żółta)</Polish>
|
||||
<German>Knicklicht-Abschirmung (gelb)</German>
|
||||
<Korean>켐라이트 쉴드 (노랑)</Korean>
|
||||
<French>Étui cyalume (jaune)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Yellow_DescriptionShort">
|
||||
<English>Yellow reading light.</English>
|
||||
@ -259,6 +293,7 @@
|
||||
<Polish>Żółta lampka.</Polish>
|
||||
<German>Gelbes Leselicht.</German>
|
||||
<Korean>노란색 조명</Korean>
|
||||
<French>Lampe d'orientation jaune.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DisplayName">
|
||||
<English>Chemlight Shield (Orange)</English>
|
||||
@ -266,6 +301,7 @@
|
||||
<Polish>Osłona na świetlik (pomarańczowa)</Polish>
|
||||
<German>Knicklicht-Abschirmung (orange)</German>
|
||||
<Korean>켐라이트 쉴드 (주황)</Korean>
|
||||
<French>Étui cyalume (orange)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_Orange_DescriptionShort">
|
||||
<English>Orange reading light.</English>
|
||||
@ -273,6 +309,7 @@
|
||||
<Polish>Pomarańczowa lampka.</Polish>
|
||||
<German>Oranges Leselicht.</German>
|
||||
<Korean>주황색 조명</Korean>
|
||||
<French>Lampe d'orientation orange.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DisplayName">
|
||||
<English>Chemlight Shield (White)</English>
|
||||
@ -280,6 +317,7 @@
|
||||
<Polish>Osłona na świetlik (biała)</Polish>
|
||||
<German>Knicklicht-Abschirmung (weiß)</German>
|
||||
<Korean>켐라이트 쉴드 (하양)</Korean>
|
||||
<French>Étui cyalume (blanc)</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Chemlights_Shield_White_DescriptionShort">
|
||||
<English>White reading light.</English>
|
||||
@ -287,6 +325,7 @@
|
||||
<Polish>Biała lampka.</Polish>
|
||||
<German>Weißes Leselicht.</German>
|
||||
<Korean>주황색 조명</Korean>
|
||||
<French>Lampe d'orientation blanche.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -133,6 +133,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;
|
||||
};
|
||||
@ -295,18 +296,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;
|
||||
|
||||
|
@ -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
|
||||
|
@ -940,6 +940,20 @@
|
||||
<Portuguese>Sem espaço para descarregar</Portuguese>
|
||||
<Russian>Нет места для выгрузки</Russian>
|
||||
<Japanese>降ろすための空間がありません</Japanese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_KeybindToggle">
|
||||
<English>Toggle</English>
|
||||
<Polish>переключить</Polish>
|
||||
<Russian>переключить</Russian>
|
||||
<French>Basculer</French>
|
||||
<Spanish>Cambiar</Spanish>
|
||||
<Italian>camb.</Italian>
|
||||
<German>Umschalten</German>
|
||||
<Hungarian>pecek</Hungarian>
|
||||
<Czech>přep.</Czech>
|
||||
<Portuguese>alternar</Portuguese>
|
||||
<Japanese>トグル</Japanese>
|
||||
<Korean>토글</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -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;
|
||||
};
|
||||
|
@ -9,7 +9,7 @@
|
||||
<Japanese>誘爆を有効化</Japanese>
|
||||
<Korean>쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuj efekty samozapłonu amunicji</Polish>
|
||||
<French>Activer </French>
|
||||
<French>Active le cook-off</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enable_tooltip">
|
||||
<English>Enables cook off and related vehicle destruction effects.</English>
|
||||
@ -19,6 +19,7 @@
|
||||
<Japanese>誘爆を有効化し、車両が誘爆によって破壊されていきます。</Japanese>
|
||||
<Korean>쿡오프 현상을 활성화 하고 관련된 차량에 폭발 이펙트를 적용합니다.</Korean>
|
||||
<Polish>Aktywuje efekt samozapłonu amunicji na zniszczonych pojazdach.</Polish>
|
||||
<French>Active le cook-off (autocombustion des munitions) et les effets de destruction liés.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_generic_turret_wreck">
|
||||
<Original>Wreck (Turret)</Original>
|
||||
@ -40,6 +41,7 @@
|
||||
<German>Selbstzündung für Munitionskisten ermöglichen</German>
|
||||
<Korean>탄약 상자 쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuj samozapłon skrzyń z amunicją</Polish>
|
||||
<French>Cook-off caisses de munitions</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableBoxCookoff_tooltip">
|
||||
<English>Enables cooking off of ammo boxes.</English>
|
||||
@ -47,6 +49,7 @@
|
||||
<German>Ermöglicht Selbstzündung von Munitionskisten.</German>
|
||||
<Korean>탄약 상자에 쿡오프 현상을 적용합니다.</Korean>
|
||||
<Polish>Aktywuje samozapłon skrzyń z amunicją</Polish>
|
||||
<French>Active le cook-off sur toutes les caisses de munitions.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_name">
|
||||
<English>Enable Ammunition cook off</English>
|
||||
@ -54,21 +57,26 @@
|
||||
<German>Selbstzündung für Munition ermöglichen</German>
|
||||
<Korean>탄약 쿡오프 현상 활성화</Korean>
|
||||
<Polish>Aktywuj samozapłon amunicji</Polish>
|
||||
<French>Active le cook-off des munitions</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_enableAmmoCookoff_tooltip">
|
||||
<English>Enables Ammunition cook off. Fires ammunition projectiles while vehicle is on fire and has ammunition.</English>
|
||||
<Japanese>弾薬が誘爆します。車両が燃えると、搭載している弾薬が激しく燃え上がりす。</Japanese>
|
||||
<German>Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt.</German>
|
||||
<Polish>Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję.</Polish>
|
||||
<French>Mets à feu les munitions lorsqu'un véhicule est en feu et contient des munitions.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_name">
|
||||
<English>Ammunition cook off duration</English>
|
||||
<Polish>Czas trwania samozapłonu amunicji</Polish>
|
||||
<Japanese>弾薬の誘爆持続時間</Japanese>
|
||||
<French>Durée cook-off des munitions</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_CookOff_ammoCookoffDuration_tooltip">
|
||||
<English>Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff]</English>
|
||||
<French>Active le et les effets de destructions assosicée aux vehicules.</French>
|
||||
<French>Multiplicateur de la durée du cook-off des munitions [Une valeur de 0 désactive l'effet]</French>
|
||||
<Polish>Mnożnik decydujący jak długo ma trwać samozapłon amunicji [Ustawienie na 0 spowoduje wyłącznie samozapłonu]</Polish>
|
||||
<Japanese>誘爆の持続時間を乗数で設定。[0 に設定で誘爆を無効化]</Japanese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -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];
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -1,5 +1,21 @@
|
||||
/*
|
||||
* Author: Jaynus, NouberNou
|
||||
* Adds a round to the blacklist (will be ignored).
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Projectile <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [bullet] call ace_frag_fnc_addBlackList
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_round"];
|
||||
TRACE_1("addBlackList",_round);
|
||||
|
||||
GVAR(blackList) pushBack _round;
|
||||
|
@ -1,27 +1,38 @@
|
||||
/*
|
||||
* Author: Jaynus, NouberNou
|
||||
* Starts tracking a round that will frag.
|
||||
* Should only be called once per round.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Shooter <OBJECT>
|
||||
* 1: Ammo classname <STRING>
|
||||
* 2: Projectile <OBJECT>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [player, "handGrenade", bullet] call ace_frag_fnc_addPfhRound
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_gun", "_type", "_round", ["_doFragTrack", false]];
|
||||
params ["_gun", "_type", "_round"];
|
||||
TRACE_3("addPfhRound",_gun,_type,_round);
|
||||
|
||||
if (!GVAR(enabled)) exitWith {};
|
||||
if (!GVAR(enabled)) exitWith {TRACE_1("setting disabled",_this);};
|
||||
|
||||
//_enabled = getNumber (configFile >> "CfgAmmo" >> _type >> QGVAR(enabled));
|
||||
//if (_enabled < 1) exitWith {};
|
||||
if (!alive _round) exitWith {TRACE_1("round dead?",_this);};
|
||||
|
||||
if (_round in GVAR(blackList)) exitWith {
|
||||
TRACE_1("round in blackList",_this);
|
||||
REM(GVAR(blackList),_round);
|
||||
};
|
||||
|
||||
// Exit on max track
|
||||
if ((count GVAR(objects)) > GVAR(maxTrack)) exitWith {};
|
||||
|
||||
if (
|
||||
_gun == ACE_player ||
|
||||
{(gunner _gun) == ACE_player} ||
|
||||
{local _gun && {!(isPlayer (gunner _gun))} && {!(isPlayer _gun)}}
|
||||
) then {
|
||||
_doFragTrack = true;
|
||||
};
|
||||
if ((count GVAR(objects)) >= GVAR(maxTrack)) exitWith {TRACE_1("maxTrack limit",count GVAR(objects));};
|
||||
|
||||
private _doSpall = false;
|
||||
if (GVAR(SpallEnabled)) then {
|
||||
@ -29,23 +40,23 @@ if (GVAR(SpallEnabled)) then {
|
||||
GVAR(spallHPData) = [];
|
||||
};
|
||||
if (GVAR(spallIsTrackingCount) > 5) then {
|
||||
// ACE_player sideChat "LIMT!";
|
||||
TRACE_1("At Spall Limit",GVAR(spallIsTrackingCount));
|
||||
} else {
|
||||
_doSpall = true;
|
||||
INC(GVAR(spallIsTrackingCount));
|
||||
};
|
||||
TRACE_2("",_doSpall,GVAR(spallIsTrackingCount));
|
||||
};
|
||||
// ACE_player sideChat format ["c: %1", GVAR(spallIsTrackingCount)];
|
||||
|
||||
if (GVAR(autoTrace)) then {
|
||||
[ACE_player, _round, [1, 0, 0, 1]] call FUNC(addTrack);
|
||||
};
|
||||
#ifdef DRAW_FRAG_INFO
|
||||
[ACE_player, _round, [0, 1, 0, 1]] call FUNC(dev_addTrack);
|
||||
#endif
|
||||
|
||||
// We only do the single track object check here.
|
||||
// We should do an {!(_round in GVAR(objects))}
|
||||
// But we leave that out here for optimization. So this cannot be a framework function
|
||||
// Otherwise, it should only be added once and from the FiredEH
|
||||
if (_doFragTrack && {alive _round}) then {
|
||||
if (alive _round) then {
|
||||
private _spallTrack = [];
|
||||
private _spallTrackID = [];
|
||||
|
||||
@ -64,5 +75,4 @@ if (_doFragTrack && {alive _round}) then {
|
||||
if (_doSpall) then {
|
||||
[_round, 1, _spallTrack, _spallTrackID] call FUNC(spallTrack);
|
||||
};
|
||||
// ACE_player sideChat "WTF2";
|
||||
};
|
||||
|
@ -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;
|
@ -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);
|
8
addons/frag/functions/fnc_dev_startTracing.sqf
Normal file
@ -0,0 +1,8 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (GVAR(tracesStarted)) exitWith {};
|
||||
|
||||
INFO("Starting Trace Drawing");
|
||||
|
||||
GVAR(tracesStarted) = true;
|
||||
GVAR(traceID) = [LINKFUNC(dev_drawTraces), 0, []] call CBA_fnc_addPerFrameHandler;
|
@ -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;
|
@ -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
|
||||
};
|
||||
|
@ -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);
|
||||
};
|
||||
|
@ -1,17 +1,35 @@
|
||||
//fnc_frago.sqf
|
||||
// #define DEBUG_MODE_FULL
|
||||
/*
|
||||
* Author: Jaynus, NouberNou
|
||||
* Server func to create the fragmentation for a round.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Last Position (ASL) <ARRAY>
|
||||
* 1: Velocity <ARRAY>
|
||||
* 2: Ammo Classname <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* Nothing
|
||||
*
|
||||
* Example:
|
||||
* [[], [], "handGrenade"] call ace_frag_fnc_frago
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
//#define DEBUG_MODE_FULL
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define FRAG_VEC_VAR 0.004
|
||||
|
||||
#define MAX_FRAG_COUNT 50
|
||||
|
||||
if (!isServer) exitWith {};
|
||||
|
||||
BEGIN_COUNTER(frago);
|
||||
// _startTime = diag_tickTime;
|
||||
|
||||
params ["_round", "_lastPos", "_lastVel", "_shellType", "_firedFrame", "_gun"];
|
||||
params ["_lastPos", "_lastVel", "_shellType"];
|
||||
TRACE_3("frago",_lastPos,_lastVel,_shellType);
|
||||
|
||||
// Limit max frag count if there was a recent frag
|
||||
private _maxFrags = round (MAX_FRAG_COUNT * linearConversion [0.1, 1.5, (CBA_missionTime - GVAR(lastFragTime)), 0.1, 1, true]);
|
||||
TRACE_2("",_maxFrags,CBA_missionTime - GVAR(lastFragTime));
|
||||
GVAR(lastFragTime) = CBA_missionTime;
|
||||
|
||||
private _fragTypes = [
|
||||
QGVAR(tiny), QGVAR(tiny), QGVAR(tiny),
|
||||
@ -28,12 +46,6 @@ if (isArray (configFile >> "CfgAmmo" >> _shellType >> QGVAR(CLASSES))) then {
|
||||
_warn = true;
|
||||
};
|
||||
|
||||
private _isArmed = true;
|
||||
if (!isNil "_gun") then {
|
||||
private _fuseDist = getNumber(configFile >> "CfgAmmo" >> _shellType >> "fuseDistance");
|
||||
_isArmed = ((getPosASL _gun) distance _lastPos > _fuseDist);
|
||||
};
|
||||
|
||||
private _indirectHitRange = getNumber(configFile >> "CfgAmmo" >> _shellType >> "indirecthitrange");
|
||||
private _fragRange = 20 * _indirectHitRange * 4;
|
||||
// _c = 185; // grams of comp-b
|
||||
@ -69,104 +81,91 @@ if ((_atlPos select 2) < 0.5) then {
|
||||
_lastPos vectorAdd [0, 0, 0.5];
|
||||
};
|
||||
|
||||
// _manObjects = _atlPos nearEntities ["CaManBase", _fragRange];
|
||||
|
||||
// setAccTime 0.01;
|
||||
|
||||
//_objects = nearestObjects [_atlPos, ["AllVehicles"], _fragRange]; // Not sure if tracking "ReammoBox" is required, if so revert this change for _objects
|
||||
private _objects = _atlPos nearEntities [["Car", "Motorcycle", "Tank", "StaticWeapon", "CAManBase", "Air", "Ship"], _fragRange];
|
||||
|
||||
// _objects = _manObjects;
|
||||
// Add unique crews in faster way
|
||||
{
|
||||
{
|
||||
_objects pushBackUnique _x;
|
||||
} forEach (crew _x);
|
||||
} forEach _objects;
|
||||
TRACE_2("",_fragRange,count _objects);
|
||||
|
||||
private _fragCount = 0;
|
||||
|
||||
private _fragArcs = [];
|
||||
_fragArcs set [360, 0];
|
||||
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
ACE_player sideChat format ["_fragRange: %1", _fragRange];
|
||||
ACE_player sideChat format ["_objects: %1", _objects];
|
||||
#endif
|
||||
|
||||
private _doRandom = true;
|
||||
if (_isArmed && {!(_objects isEqualTo [])}) then {
|
||||
if (!(_objects isEqualTo [])) then {
|
||||
if (GVAR(reflectionsEnabled)) then {
|
||||
[_lastPos, _shellType] call FUNC(doReflections);
|
||||
};
|
||||
{
|
||||
//if (random(1) > 0.5) then {
|
||||
private _target = _x;
|
||||
if (alive _target) then {
|
||||
(boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"];
|
||||
private _target = _x;
|
||||
if (alive _target) then {
|
||||
(boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"];
|
||||
|
||||
private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2));
|
||||
private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2));
|
||||
|
||||
if (_cubic <= 1) exitWith {};
|
||||
_doRandom = true;
|
||||
if (_cubic <= 1) exitWith {};
|
||||
// _doRandom = true;
|
||||
|
||||
private _targetVel = velocity _target;
|
||||
private _targetPos = getPosASL _target;
|
||||
private _distance = _targetPos vectorDistance _lastPos;
|
||||
private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
|
||||
private _targetVel = velocity _target;
|
||||
private _targetPos = getPosASL _target;
|
||||
private _distance = _targetPos vectorDistance _lastPos;
|
||||
private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10);
|
||||
|
||||
_targetPos = _targetPos vectorAdd [
|
||||
(_targetVel select 0) * (_distance / _fragPower),
|
||||
(_targetVel select 1) * (_distance / _fragPower),
|
||||
_add
|
||||
];
|
||||
_targetPos = _targetPos vectorAdd [
|
||||
(_targetVel select 0) * (_distance / _fragPower),
|
||||
(_targetVel select 1) * (_distance / _fragPower),
|
||||
_add
|
||||
];
|
||||
|
||||
private _baseVec = _lastPos vectorFromTo _targetPos;
|
||||
private _baseVec = _lastPos vectorFromTo _targetPos;
|
||||
|
||||
private _dir = floor (_baseVec call CBA_fnc_vectDir);
|
||||
private _currentCount = RETDEF(_fragArcs select _dir,0);
|
||||
if (_currentCount < 20) then {
|
||||
private _count = ceil (random (sqrt (_m / 1000)));
|
||||
private _vecVar = FRAG_VEC_VAR;
|
||||
if (!(_target isKindOf "Man")) then {
|
||||
ADD(_vecVar,(sqrt _cubic) / 2000);
|
||||
if ((crew _target) isEqualTo [] && {_count > 0}) then {
|
||||
_count = 0 max (_count / 2);
|
||||
};
|
||||
private _dir = floor (_baseVec call CBA_fnc_vectDir);
|
||||
private _currentCount = RETDEF(_fragArcs select _dir,0);
|
||||
if (_currentCount < 10) then {
|
||||
private _count = ceil (random (sqrt (_m / 1000)));
|
||||
private _vecVar = FRAG_VEC_VAR;
|
||||
if (!(_target isKindOf "Man")) then {
|
||||
ADD(_vecVar,(sqrt _cubic) / 2000);
|
||||
if ((crew _target) isEqualTo [] && {_count > 0}) then {
|
||||
_count = 0 max (_count / 2);
|
||||
};
|
||||
for "_i" from 1 to _count do {
|
||||
private _vec = _baseVec vectorDiff [
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar)
|
||||
];
|
||||
|
||||
private _fp = _fragPower - (random (_fragPowerRandom));
|
||||
private _vel = _vec vectorMultiply _fp;
|
||||
|
||||
private _fragType = round (random ((count _fragTypes) - 1));
|
||||
private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000];
|
||||
// diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj];
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
if (GVAR(traceFrags)) then {
|
||||
INC(GVAR(totalFrags));
|
||||
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
INC(_fragCount);
|
||||
INC(_currentCount);
|
||||
};
|
||||
_fragArcs set [_dir, _currentCount];
|
||||
};
|
||||
for "_i" from 1 to _count do {
|
||||
private _vec = _baseVec vectorDiff [
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar),
|
||||
(_vecVar / 2) + (random _vecVar)
|
||||
];
|
||||
|
||||
private _fp = _fragPower - (random (_fragPowerRandom));
|
||||
private _vel = _vec vectorMultiply _fp;
|
||||
|
||||
private _fragObj = (selectRandom _fragTypes) createVehicleLocal [0,0,10000];
|
||||
// TRACE_4("targeted",_fp, typeOf _fragObj,_lastPos vectorDistance _targetPos,typeOf _x);
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
#ifdef DRAW_FRAG_INFO
|
||||
[ACE_player, _fragObj, [1,0,0,1]] call FUNC(dev_addTrack);
|
||||
#endif
|
||||
INC(_fragCount);
|
||||
INC(_currentCount);
|
||||
};
|
||||
_fragArcs set [_dir, _currentCount];
|
||||
};
|
||||
//};
|
||||
if (_fragCount > MAX_FRAG_COUNT) exitWith {};
|
||||
};
|
||||
if (_fragCount > _maxFrags) exitWith {};
|
||||
} forEach _objects;
|
||||
if (_fragCount > MAX_FRAG_COUNT) exitWith {};
|
||||
private _randomCount = ((ceil ((MAX_FRAG_COUNT - _fragCount) * 0.1)) max 0) + 20;
|
||||
TRACE_1("targeted",_fragCount);
|
||||
if (_fragCount > _maxFrags) exitWith {};
|
||||
private _randomCount = ceil ((_maxFrags - _fragCount) * 0.35);
|
||||
TRACE_1("",_randomCount);
|
||||
private _sectorSize = 360 / (_randomCount max 1);
|
||||
// _doRandom = false;
|
||||
|
||||
if (_doRandom) then {
|
||||
for "_i" from 1 to _randomCount do {
|
||||
// Distribute evenly
|
||||
@ -178,24 +177,19 @@ if (_isArmed && {!(_objects isEqualTo [])}) then {
|
||||
|
||||
_vel = _vec vectorMultiply _fp;
|
||||
|
||||
_fragType = round (random ((count _fragTypes) - 1));
|
||||
_fragObj = (_fragTypes select _fragType) createVehicleLocal [0, 0, 10000];
|
||||
_fragObj = (selectRandom _fragTypes) createVehicleLocal [0, 0, 10000];
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
|
||||
if (GVAR(traceFrags)) then {
|
||||
INC(GVAR(totalFrags));
|
||||
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
};
|
||||
#ifdef DRAW_FRAG_INFO
|
||||
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(dev_addTrack);
|
||||
#endif
|
||||
INC(_fragCount);
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
// #ifdef DEBUG_MODE_FULL
|
||||
// ACE_player sideChat format["total frags: %1", GVAR(totalFrags)];
|
||||
// ACE_player sideChat format["tracks: %1", (count GVAR(trackedObjects))];
|
||||
// #endif
|
||||
// _endTime = diag_tickTime;
|
||||
|
||||
TRACE_1("total created",_fragCount);
|
||||
|
||||
END_COUNTER(frago);
|
||||
|
@ -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);
|
||||
|
@ -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];
|
||||
|
@ -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);
|
@ -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
|
@ -1,5 +0,0 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (GVAR(tracesStarted)) exitWith {};
|
||||
GVAR(tracesStarted) = true;
|
||||
GVAR(traceID) = [FUNC(drawTraces), 0, []] call CBA_fnc_addPerFrameHandler;
|
@ -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
|
||||
|
@ -20,7 +20,7 @@ if (!hasInterface) exitWith {};
|
||||
if (GVAR(effects) == 0) exitWith {};
|
||||
|
||||
// ---Add the TINT Effect---
|
||||
|
||||
|
||||
// make sure to stack effect layers in correct order
|
||||
GVAR(GogglesEffectsLayer) = QGVAR(GogglesEffectsLayer) call BIS_fnc_RSCLayer;
|
||||
GVAR(GogglesLayer) = QGVAR(GogglesLayer) call BIS_fnc_RSCLayer;
|
||||
@ -29,6 +29,26 @@ if (!hasInterface) exitWith {};
|
||||
GVAR(UsePP) = true;
|
||||
};
|
||||
|
||||
// init pp effects
|
||||
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
|
||||
GVAR(EffectsActive) = false;
|
||||
|
||||
// add glasses eventhandlers
|
||||
["ace_glassesChanged", {
|
||||
params ["_unit", "_glasses"];
|
||||
TRACE_2("ace_glassesChanged eh",_unit,_glasses);
|
||||
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
|
||||
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
|
||||
|
||||
if ([_unit] call FUNC(isGogglesVisible)) then {
|
||||
[_unit, _glasses] call FUNC(applyGlassesEffect);
|
||||
} else {
|
||||
call FUNC(removeGlassesEffect);
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
// init GlassesChanged eventhandler
|
||||
GVAR(OldGlasses) = "<null>";
|
||||
["loadout", {
|
||||
@ -40,12 +60,9 @@ if (!hasInterface) exitWith {};
|
||||
["ace_glassesChanged", [_unit, _currentGlasses]] call CBA_fnc_localEvent;
|
||||
GVAR(OldGlasses) = _currentGlasses;
|
||||
};
|
||||
}] call CBA_fnc_addPlayerEventHandler;
|
||||
}, true] call CBA_fnc_addPlayerEventHandler;
|
||||
|
||||
|
||||
// init pp effects
|
||||
GVAR(PostProcess) = ppEffectCreate ["ColorCorrections", 1995];
|
||||
GVAR(EffectsActive) = false;
|
||||
|
||||
// check goggles
|
||||
private _fnc_checkGoggles = {
|
||||
@ -57,7 +74,7 @@ if (!hasInterface) exitWith {};
|
||||
};
|
||||
} else {
|
||||
if (!(call FUNC(externalCamera)) && {[_unit] call FUNC(isGogglesVisible)}) then {
|
||||
[goggles _unit] call FUNC(applyGlassesEffect);
|
||||
[_unit, goggles _unit] call FUNC(applyGlassesEffect);
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -66,21 +83,6 @@ if (!hasInterface) exitWith {};
|
||||
["ace_activeCameraChanged", _fnc_checkGoggles] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// add glasses eventhandlers
|
||||
["ace_glassesChanged", {
|
||||
params ["_unit", "_glasses"];
|
||||
|
||||
SETGLASSES(_unit,GLASSESDEFAULT);
|
||||
|
||||
if (call FUNC(ExternalCamera)) exitWith {call FUNC(RemoveGlassesEffect)};
|
||||
|
||||
if ([_unit] call FUNC(isGogglesVisible)) then {
|
||||
_glasses call FUNC(applyGlassesEffect);
|
||||
} else {
|
||||
call FUNC(removeGlassesEffect);
|
||||
};
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
|
||||
// // ---Add the Dust/Dirt/Rain Effects---
|
||||
if (GVAR(effects) == 2) then {
|
||||
@ -96,7 +98,7 @@ if (!hasInterface) exitWith {};
|
||||
GVAR(PostProcessEyes) ppEffectCommit 0;
|
||||
GVAR(PostProcessEyes) ppEffectEnable false;
|
||||
GVAR(PostProcessEyes_Enabled) = false;
|
||||
|
||||
|
||||
GVAR(FrameEvent) = [false, [false, 20]];
|
||||
GVAR(DustHandler) = -1;
|
||||
GVAR(RainDrops) = objNull;
|
||||
|
@ -5,23 +5,29 @@
|
||||
* Sets dirt/rain overlay for glasses.
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Glasses classname to be applied <STRING>
|
||||
* 0: Player <OBJECT>
|
||||
* 1: Glasses classname to be applied <STRING>
|
||||
*
|
||||
* Return Value:
|
||||
* None
|
||||
*
|
||||
* Example:
|
||||
* [goggles ace_player] call ace_goggles_fnc_applyGlassesEffect
|
||||
* [ace_player, goggles ace_player] call ace_goggles_fnc_applyGlassesEffect
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_glasses"];
|
||||
params ["_player", "_glasses"];
|
||||
TRACE_2("applyGlassesEffect",_player,_glasses);
|
||||
|
||||
// remove old effect
|
||||
call FUNC(removeGlassesEffect);
|
||||
|
||||
if ((getNumber (configFile >> "CfgVehicles" >> (typeOf _player) >> "isPlayableLogic")) == 1) exitWith {
|
||||
TRACE_1("skipping playable logic",typeOf _player); // VirtualMan_F (placeable logic zeus / spectator)
|
||||
};
|
||||
|
||||
private ["_config", "_postProcessColour", "_postProcessTintAmount", "_imagePath"];
|
||||
|
||||
_config = configFile >> "CfgGlasses" >> _glasses;
|
||||
|
@ -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;
|
||||
|
@ -42,6 +42,27 @@ GVAR(ParsedTextCached) = [];
|
||||
[219, [false, true, false]], false] call CBA_fnc_addKeybind; //Left Windows Key + Ctrl/Strg
|
||||
|
||||
|
||||
["ACE3 Common", QGVAR(InteractKey_Toggle),
|
||||
format ["%1 (%2)", (localize LSTRING(InteractKey)), localize ELSTRING(common,KeybindToggle)],
|
||||
{
|
||||
if (GVAR(openedMenuType) != 0) then {
|
||||
[0] call FUNC(keyDown)
|
||||
} else {
|
||||
[0,false] call FUNC(keyUp)
|
||||
};
|
||||
}, {}, [-1, [false, false, false]], false] call CBA_fnc_addKeybind; // UNBOUND
|
||||
|
||||
["ACE3 Common", QGVAR(SelfInteractKey_Toggle),
|
||||
format ["%1 (%2)", (localize LSTRING(SelfInteractKey)), localize ELSTRING(common,KeybindToggle)],
|
||||
{
|
||||
if (GVAR(openedMenuType) != 1) then {
|
||||
[1] call FUNC(keyDown)
|
||||
} else {
|
||||
[1, false] call FUNC(keyUp)
|
||||
};
|
||||
}, {}, [-1, [false, false, false]], false] call CBA_fnc_addKeybind; // UNBOUND
|
||||
|
||||
|
||||
// Listens for the falling unconscious event, just in case the menu needs to be closed
|
||||
["ace_unconscious", {
|
||||
// If no menu is open just quit
|
||||
|
@ -7,6 +7,7 @@
|
||||
<German>Laserstreuung-Simulationszähler</German>
|
||||
<Korean>레이저 분산 시뮬레이션 수</Korean>
|
||||
<Polish>Wskaźnik poziomu rozproszenia wiązki lasera</Polish>
|
||||
<French>Compte de la simulation de la dispersion du laser</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Laser_laserCode">
|
||||
<English>Laser Code</English>
|
||||
@ -51,4 +52,4 @@
|
||||
<Korean>레이저 - 코드 순환 아래</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
#define MAJOR 3
|
||||
#define MINOR 9
|
||||
#define PATCHLVL 0
|
||||
#define BUILD 16
|
||||
#define PATCHLVL 1
|
||||
#define BUILD 17
|
||||
|
@ -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;
|
||||
|
@ -444,6 +444,7 @@
|
||||
<Japanese>BFTを無効化</Japanese>
|
||||
<Korean>GPS피아식별기 끄기</Korean>
|
||||
<Polish>Wyłącz BFT</Polish>
|
||||
<French>Désactive le BFT</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Map_disableBFT_description">
|
||||
<English>Always disable Blue Force Tracking for this group.</English>
|
||||
@ -451,6 +452,7 @@
|
||||
<Japanese>このグループへのブルー フォース トラッキングを常に無効化します。</Japanese>
|
||||
<Korean>이 그룹에 한해 GPS피아식별기를 항상 끕니다.</Korean>
|
||||
<Polish>Zawsze wyłączaj Blue Force Tracking dla tej grupy.</Polish>
|
||||
<French>Désactive en permanence le Blue Force Tracking pour ce groupe.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -179,6 +179,7 @@
|
||||
<German>Zeichne gerade Linien mit dem Kartenwerkzeug</German>
|
||||
<Korean>독도용 도구로 직선 그리기</Korean>
|
||||
<Polish>Rysuj proste linie przy użyciu narzędzi nawigacyjnych</Polish>
|
||||
<French>Tracer des lignes droites</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_MapTools_drawStaightLines_description">
|
||||
<English>Draw on the edge of maptools to draw straight lines. Note: Must hover at midpoint to delete.</English>
|
||||
@ -186,6 +187,7 @@
|
||||
<German>Zeichne gerade Linien am Rand des Kartenwerkzeugs. Hinweis: zum Löschen über den Mittelpunkt der Linie fahren</German>
|
||||
<Korean>독도용 도구 가장자리에 직선을 그립니다. 주의: 삭제하기 위해선 선의 중앙에 가져다 대십시요</Korean>
|
||||
<Polish>Przeciągnij po krawędzi narzędzi nawigacyjnych by narysować prostą linię. Uwaga: aby usunąć linię - nalezy ustawić kursor nad jej środkiem.</Polish>
|
||||
<French>Utiliser le bord des outils de navigation pour tracer des lignes droites. Note: l'on doit survoler le milieu du trait pour pouvoir le supprimer.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -7,6 +7,7 @@
|
||||
<German>Nur Spieler</German>
|
||||
<Korean>오직 플레이어만</Korean>
|
||||
<Polish>Tylko gracze</Polish>
|
||||
<French>Joueurs seulement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_DisplayName">
|
||||
<English>Enable Blood Drops</English>
|
||||
@ -14,12 +15,14 @@
|
||||
<German>Aktiviere Blutspritzer</German>
|
||||
<Korean>피흘리기 활성화</Korean>
|
||||
<Polish>Włącz ślady krwi na ziemi</Polish>
|
||||
<French>Active les gouttes de sang</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_medical_blood_MedicalBloodSettings_enabledFor_Description">
|
||||
<English>Enable or disable Blood Drops created on bleeding and taking damage</English>
|
||||
<Japanese>ダメージを受けたり、出血していると血が滴る様子の有効か無効化</Japanese>
|
||||
<German>Aktiviere oder deaktiviere Blutspritzer, die durch Blutungen oder bei Schadensnahme entstehen.</German>
|
||||
<Polish>Włącz lub wyłącz pozostawianie śladów krwi na ziemi kiedy postać odnosi obrażenia bądź krwawi</Polish>
|
||||
<French>(Dés)active les gouttes de sang lors d'un saignement ou de blessure</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Medical Menu">
|
||||
<Key ID="STR_ACE_Medical_Menu_OpenMenu">
|
||||
@ -305,7 +305,7 @@
|
||||
<German>Setze Status auf der Triagekarte</German>
|
||||
<Russian>Сортировка</Russian>
|
||||
<Spanish>Seleccionar estado de Triage</Spanish>
|
||||
<French>Selectioner l'état de triage</French>
|
||||
<French>Sélectionner l'état de triage</French>
|
||||
<Polish>Wybierz priorytet</Polish>
|
||||
<Portuguese>Selecionar estado de triagem</Portuguese>
|
||||
<Czech>Vybrat prioritu</Czech>
|
||||
@ -318,7 +318,7 @@
|
||||
<German>Wähle Kopf</German>
|
||||
<Russian>Выбрать голову</Russian>
|
||||
<Spanish>Seleccionar Cabeza</Spanish>
|
||||
<French>Selectioner la tête</French>
|
||||
<French>Sélectionner la tête</French>
|
||||
<Polish>Wybierz głowę</Polish>
|
||||
<Portuguese>Selecionar Cabeça</Portuguese>
|
||||
<Czech>Vybrat Hlavu</Czech>
|
||||
@ -331,7 +331,7 @@
|
||||
<German>Wähle Torso</German>
|
||||
<Russian>Выбрать торс</Russian>
|
||||
<Spanish>Seleccionar Torso</Spanish>
|
||||
<French>Selectioner le torse</French>
|
||||
<French>Sélectionner le torse</French>
|
||||
<Polish>Wybierz tors</Polish>
|
||||
<Portuguese>Selecionar Torso</Portuguese>
|
||||
<Czech>Vybrat Trup</Czech>
|
||||
@ -344,7 +344,7 @@
|
||||
<German>Wähle linken Arm</German>
|
||||
<Russian>Выбрать левую руку</Russian>
|
||||
<Spanish>Seleccionar Brazo Izquierdo</Spanish>
|
||||
<French>Selectioner le bras gauche</French>
|
||||
<French>Sélectionner le bras gauche</French>
|
||||
<Polish>Wybierz lewą rękę</Polish>
|
||||
<Portuguese>Selecionar Braço Esquerdo</Portuguese>
|
||||
<Czech>Vybrat Levou ruku</Czech>
|
||||
@ -357,7 +357,7 @@
|
||||
<German>Wähle rechten Arm</German>
|
||||
<Russian>Выбрать правую руку</Russian>
|
||||
<Spanish>Seleccionar Brazo Derecho</Spanish>
|
||||
<French>Selectioner le bras droit</French>
|
||||
<French>Sélectionner le bras droit</French>
|
||||
<Polish>Wybierz prawą rękę</Polish>
|
||||
<Portuguese>Selecionar Braço Direito</Portuguese>
|
||||
<Czech>Vybrat Pravou ruku</Czech>
|
||||
@ -370,7 +370,7 @@
|
||||
<German>Wähle linkes Bein</German>
|
||||
<Russian>Выбрать левую ногу</Russian>
|
||||
<Spanish>Seleccionar Pierna Izquierda</Spanish>
|
||||
<French>Selectioner la jambe gauche</French>
|
||||
<French>Sélectionner la jambe gauche</French>
|
||||
<Polish>Wybierz lewą nogę</Polish>
|
||||
<Portuguese>Selecionar Perna Esquerda</Portuguese>
|
||||
<Czech>Vybrat Levou nohu</Czech>
|
||||
@ -383,7 +383,7 @@
|
||||
<German>Wähle rechtes Bein</German>
|
||||
<Russian>Выбрать правую ногу</Russian>
|
||||
<Spanish>Seleccionar Pierna Derecha</Spanish>
|
||||
<French>Selectioner la jambe droite</French>
|
||||
<French>Sélectionner la jambe droite</French>
|
||||
<Polish>Wybierz prawą nogę</Polish>
|
||||
<Portuguese>Selecionar Perna Direita</Portuguese>
|
||||
<Czech>Vybrat Pravou nohu</Czech>
|
||||
@ -717,4 +717,4 @@
|
||||
<Korean>비-인두 기도기 [NPA]</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
21
addons/microdagr/CfgUIGrids.hpp
Normal file
@ -0,0 +1,21 @@
|
||||
class CfgUIGrids {
|
||||
class IGUI {
|
||||
class Presets {
|
||||
class Arma3 {
|
||||
class Variables {
|
||||
grid_ACE_microDagr[] = {{"(safezoneX + safezoneW - 11 * (((safezoneW / safezoneH) min 1.2) / 40))","(safezoneY + safezoneH - 15 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))","(10 * (((safezoneW / safezoneH) min 1.2) / 40))","(10 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))"},"(((safezoneW / safezoneH) min 1.2) / 40)","((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
class Variables {
|
||||
class grid_ACE_microDagr {
|
||||
displayName = COMPONENT_NAME;
|
||||
description = "ACE MicroDagr";
|
||||
preview = QPATHTOF(ui\IGUI_preview_ca.paa);
|
||||
saveToProfile[] = {0,1,2,3};
|
||||
canResize = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
BIN
addons/microdagr/UI/IGUI_preview_ca.paa
Normal file
@ -18,4 +18,5 @@ class CfgPatches {
|
||||
#include "CfgWeapons.hpp"
|
||||
#include "CfgVehicles.hpp"
|
||||
#include "gui.hpp"
|
||||
#include "CfgUIGrids.hpp"
|
||||
#include "ACE_Settings.hpp"
|
||||
|
@ -59,10 +59,10 @@ class GVAR(TheDialog) {
|
||||
|
||||
|
||||
//Redfine Scaling for the RscTitle
|
||||
#define PROFILE_X (profilenamespace getVariable ['IGUI_GRID_GPS_X', 0])
|
||||
#define PROFILE_Y (profilenamespace getVariable ['IGUI_GRID_GPS_Y', 0])
|
||||
#define PROFILE_W (profilenamespace getVariable ['IGUI_GRID_GPS_W', 1])
|
||||
#define PROFILE_H ((16/9) * (profilenamespace getVariable ['IGUI_GRID_GPS_W', 1]))
|
||||
#define PROFILE_X (profilenamespace getVariable ['IGUI_grid_ACE_microDagr_X', 0])
|
||||
#define PROFILE_Y (profilenamespace getVariable ['IGUI_grid_ACE_microDagr_Y', 0])
|
||||
#define PROFILE_W (profilenamespace getVariable ['IGUI_grid_ACE_microDagr_W', 1])
|
||||
#define PROFILE_H ((16/9) * (profilenamespace getVariable ['IGUI_grid_ACE_microDagr_W', 1]))
|
||||
|
||||
//Need undef's for pboProject
|
||||
#undef X_PART
|
||||
|
@ -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"
|
||||
};
|
||||
};
|
||||
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -6,12 +6,14 @@
|
||||
<Japanese>過圧の距離係数</Japanese>
|
||||
<Korean>초과압력 거리 계수</Korean>
|
||||
<Polish>Mnożnik dystansu nadciśnienia</Polish>
|
||||
<French>Coéfficient de distance pour la surpression</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_overpressure_distanceCoefficient_toolTip">
|
||||
<English>Scales the overpressure effect [Default: 1]</English>
|
||||
<Japanese>過圧効果の範囲 [標準: 1]</Japanese>
|
||||
<Korean>초과압력의 효과 크기 [기본설정: 1]</Korean>
|
||||
<Polish>Skaluje efekt nadciśnienia [Domyślne: 1]</Polish>
|
||||
<French>Échelonne les effets de la surpression [Par défaut : 1]</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -19,13 +19,26 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
params [["_unit", objNull, [objNull]], ["_nozzle", objNull, [objNull]], ["_disconnectOnly", false, [false]]];
|
||||
TRACE_3("dropNozzle",_unit,_nozzle,_disconnectOnly);
|
||||
|
||||
detach _nozzle;
|
||||
_nozzle setVariable [QGVAR(isRefueling), false, true];
|
||||
|
||||
if (_disconnectOnly) exitWith {};
|
||||
_nozzle setVelocity [0, 0, 0];
|
||||
_nozzle setPosATL [(getPosATL _nozzle) select 0, (getPosATL _nozzle) select 1, 0.05];
|
||||
|
||||
private _groundPosition = getPosASL _nozzle;
|
||||
private _posA = (getPosASL _nozzle) vectorAdd [0,0,0.05];
|
||||
private _posB = (getPosASL _nozzle) vectorAdd [0,0,-1000];
|
||||
private _intersections = lineIntersectsSurfaces [_posA, _posB, _unit, _nozzle, true, 1, "GEOM"];
|
||||
TRACE_1("",_intersections);
|
||||
if (_intersections isEqualTo []) then {
|
||||
_groundPosition set [2, (getTerrainHeightASL _groundPosition) vectorAdd [0,0,0.005]];
|
||||
} else {
|
||||
_groundPosition = ((_intersections select 0) select 0) vectorAdd [0,0,0.005];
|
||||
};
|
||||
_nozzle setPosASL _groundPosition;
|
||||
TRACE_1("finalPos",getPosATL _nozzle);
|
||||
|
||||
if (isNull _unit) exitWith {};
|
||||
_unit setVariable [QGVAR(isRefueling), false, true];
|
||||
|
@ -36,7 +36,7 @@ private _action = [QGVAR(Refuel),
|
||||
[],
|
||||
[0, 0, 0],
|
||||
REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction);
|
||||
[_target, 0, [], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
[_target, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
|
||||
// Add pickup
|
||||
_action = [QGVAR(PickUpNozzle),
|
||||
@ -48,7 +48,7 @@ _action = [QGVAR(PickUpNozzle),
|
||||
[],
|
||||
[0, 0, 0],
|
||||
REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction);
|
||||
[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
[_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
|
||||
// Add turnOn
|
||||
_action = [QGVAR(TurnOn),
|
||||
@ -60,7 +60,7 @@ _action = [QGVAR(TurnOn),
|
||||
[],
|
||||
[0, 0, 0],
|
||||
REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction);
|
||||
[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
[_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
|
||||
// Add turnOff
|
||||
_action = [QGVAR(TurnOff),
|
||||
@ -72,7 +72,7 @@ _action = [QGVAR(TurnOff),
|
||||
[],
|
||||
[0, 0, 0],
|
||||
REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction);
|
||||
[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
[_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
|
||||
// Add disconnect
|
||||
_action = [QGVAR(Disconnect),
|
||||
@ -84,4 +84,4 @@ _action = [QGVAR(Disconnect),
|
||||
[],
|
||||
[0, 0, 0],
|
||||
REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction);
|
||||
[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
[_target, 0, ["ACE_MainActions", QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject);
|
||||
|
@ -6,114 +6,133 @@
|
||||
<Japanese>スコープ</Japanese>
|
||||
<Korean>조준경</Korean>
|
||||
<Polish>Celowniki optyczne</Polish>
|
||||
<French>Scopes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_enabled_displayName">
|
||||
<English>Enable ACE Scope adjustment</English>
|
||||
<Japanese>ACE スコープ調節を有効化</Japanese>
|
||||
<Korean>ACE 조준경 영점조작 활성화</Korean>
|
||||
<Polish>Włącz ustawienia celowników optycznych ACE</Polish>
|
||||
<French>Active ACE Scope adjustment</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_enabled_description">
|
||||
<English>Enable adjustmet turrets on high powered scopes</English>
|
||||
<Japanese>高倍率スコープでACE スコープ調節を有効化</Japanese>
|
||||
<Korean>고성능 조준경 조절 나사 활성화</Korean>
|
||||
<Polish>Włącz pokrętła regulacyjne </Polish>
|
||||
<French>Permet de régler la hausse et la dérive sur les optiques de visée à fort grossissement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_forceUseOfAdjustmentTurrets_displayName">
|
||||
<English>Force adjustment turrets</English>
|
||||
<Japanese>ACE スコープ調節を有効化</Japanese>
|
||||
<Korean>조절 나사 강제</Korean>
|
||||
<Polish>Wymuś użycie pokręteł regulacyjnych</Polish>
|
||||
<French>Impose le réglage de la hausse/dérive</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_forceUseOfAdjustmentTurrets_description">
|
||||
<English>Force usage of adjustmet turrets on high powered scopes</English>
|
||||
<Japanese>高倍率スコープで調整の使用を強制させます</Japanese>
|
||||
<Korean>고성능 조준경의 조절 나사 사용을 강제합니다</Korean>
|
||||
<Polish>Wymuś użycie pokręteł regulacyjnych dla celowników o dużym powiększeniu</Polish>
|
||||
<French>Impose le réglage de la hausse/dérive sur les optiques de visée à fort grossissement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_correctZeroing_displayName">
|
||||
<English>Correct zeroing</English>
|
||||
<Japanese>ゼロイン調節</Japanese>
|
||||
<Korean>영점 고치기</Korean>
|
||||
<Polish>Poprawka zerowania </Polish>
|
||||
<French>Corrige le zérotage</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_correctZeroing_description">
|
||||
<English>Corrects the zeroing of all small arms sights</English>
|
||||
<Japanese>全ての小口径用照準器のゼロインを調節します</Japanese>
|
||||
<Korean>모든 소화기의 영점을 고칩니다</Korean>
|
||||
<Polish>Poprawia zerowanie wszystkich celowników broni ręcznej</Polish>
|
||||
<French>Corrige le zérotage des optiques de visée des petites armes</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_overwriteZeroRange_displayName">
|
||||
<English>Overwrite zero distance</English>
|
||||
<Japanese>ゼロイン距離を上書き</Japanese>
|
||||
<Korean>영점거리 덮어쓰기</Korean>
|
||||
<Polish>Nadpisuje ustawienie dla zerowego dystansu </Polish>
|
||||
<French>Remplace la distance de zérotage</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_overwriteZeroRange_Description">
|
||||
<English>Uses the 'defaultZeroRange' setting to overwrite the zero range of high power scopes</English>
|
||||
<Japanese>'defaultZeroRange'設定を使う高倍率スコープのゼロイン距離を上書きします</Japanese>
|
||||
<Korean>기존 고성능 조준경의 영점거리에 '기본설정 영점거리' 를 덮어씌웁니다</Korean>
|
||||
<Polish>Używa 'defaultZeroRange' zamiast ustawionej odległości zerowania dla celowników o duzym przybliżeniu </Polish>
|
||||
<French>Utilise le paramètre 'defaultZeroRange' pour remplacer la distance de zérotage sur les optiques de visée à fort grossissement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_defaultZeroRange_displayName">
|
||||
<English>Default zero distance</English>
|
||||
<Japanese>標準のゼロイン距離</Japanese>
|
||||
<Korean>기본설정 영점거리</Korean>
|
||||
<Polish>Domyślne zerowanie</Polish>
|
||||
<French>Distance de zérotage par défaut</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_defaultZeroRange_description">
|
||||
<English>High power scopes will be zeroed at this distance</English>
|
||||
<Japanese>高倍率スコープのゼロイン距離はこの設定になります</Japanese>
|
||||
<Korean>고성능 조준경이 정해진 수만큼 영점거리를 맞추게 됩니다.</Korean>
|
||||
<Polish>Celowniki o dużym powiększeniu będą zerowane dla tej odległości</Polish>
|
||||
<French>Distance de zérotage par défaut des optiques de visée à fort grossissement</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceTemperature_displayName">
|
||||
<English>Reference temperature</English>
|
||||
<Japanese>温度の参照</Japanese>
|
||||
<Korean>온도 기준</Korean>
|
||||
<Polish>Referencyjna temperatura</Polish>
|
||||
<French>Température de référence</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceTemperature_description">
|
||||
<English>Temperature at which the scope was zeroed</English>
|
||||
<Japanese>スコープがゼロインされる温度</Japanese>
|
||||
<Korean>조준경 영점조준시 온도</Korean>
|
||||
<Polish>Temperatura, przy której celownik został wyzerowany</Polish>
|
||||
<French>Température de référence pour le zérotage des optiques</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceBarometricPressure_displayName">
|
||||
<English>Reference barometric pressure</English>
|
||||
<Japanese>気圧の参照</Japanese>
|
||||
<Korean>기압 기준</Korean>
|
||||
<Polish>Referencyjne ciśnienie barometryczne</Polish>
|
||||
<French>Pression barométrique de référence</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceBarometricPressure_description">
|
||||
<English>Barometric pressure at which the scope was zeroed</English>
|
||||
<Japanese>気圧の参照</Japanese>
|
||||
<Korean>조준경 영점조준시 기압</Korean>
|
||||
<Polish>Ciśnienie barometryczne, przy którym celownik został wyzerowany</Polish>
|
||||
<French>Pression barométrique de référence pour le zérotage des optiques</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceHumidity_displayName">
|
||||
<English>Reference humidity</English>
|
||||
<Japanese>湿度の参照</Japanese>
|
||||
<Korean>습도 기준</Korean>
|
||||
<Polish>Referencyjna wilgotność</Polish>
|
||||
<French>Humidité de référence</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_zeroReferenceHumidity_description">
|
||||
<English>Humidity at which the scope was zeroed</English>
|
||||
<Japanese>スコープがゼロインされる湿度</Japanese>
|
||||
<Korean>조준경 영점조준시 습도</Korean>
|
||||
<Polish>Wilgotność powietrza, przy której celownik został wyzerowany</Polish>
|
||||
<French>Taux d'humidité de référence pour le zérotage des optiques</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_deduceBarometricPressureFromTerrainAltitude_displayName">
|
||||
<English>Deduce pressure from altitude</English>
|
||||
<Japanese>高度により圧が減少</Japanese>
|
||||
<Korean>고도에 맞춰 기압 설정</Korean>
|
||||
<Polish>Ciśnienie określone na podstawie wysokości</Polish>
|
||||
<French>Pression selon l'altitude</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_deduceBarometricPressureFromTerrainAltitude_description">
|
||||
<English>Deduce the barometric pressure from the terrain altitude</English>
|
||||
<Japanese>標高により気圧が減少されます</Japanese>
|
||||
<Korean>주변 고도에 맞춰 기압을 설정합니다</Korean>
|
||||
<Polish>Określ ciśnienie barometryczne na podstawie wysokości terenu</Polish>
|
||||
<French>Détermine la pression barométrique selon l'altitude du terrain</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Scopes_AdjustUpMinor">
|
||||
<English>Minor adjustment up</English>
|
||||
@ -246,6 +265,7 @@
|
||||
<Japanese>モジュールは高倍率ライフル スコープにおいて横風と仰角の調節ができます。</Japanese>
|
||||
<Korean>이 모듈은 고성능 조준경에 조준 나사를 이용한 편차 및 고도 조절 기능을 더해줍니다.</Korean>
|
||||
<Polish>Ten moduł włącza pokrętła kalibracyjne poprawki na wiatr oraz poprawki wysokości dla celowników o dużym powiększeniu.</Polish>
|
||||
<French>Ce module ajoute les tambours de correction de la hausse et de dérive sur les optiques de visée à fort grossissement.</French>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -60,7 +60,7 @@
|
||||
<Key ID="STR_ACE_Slideshow_Controllers_DisplayName">
|
||||
<English>Controllers</English>
|
||||
<German>Steuereinheit</German>
|
||||
<French>Controleurs</French>
|
||||
<French>Contrôleurs</French>
|
||||
<Polish>Kontroler</Polish>
|
||||
<Hungarian>Vezérlők</Hungarian>
|
||||
<Portuguese>Controles</Portuguese>
|
||||
@ -74,7 +74,7 @@
|
||||
<Key ID="STR_ACE_Slideshow_Controllers_Description">
|
||||
<English>Controller object names, separated by commas if multiple.</English>
|
||||
<German>Objekte die als Steuereinheit fungieren. Werden ggf. durch Kommata getrennt.</German>
|
||||
<French>Noms de controleur d'objets, séparation par virgule si plusieurs</French>
|
||||
<French>Noms de contrôleur d'objets, séparation par virgule si plusieurs</French>
|
||||
<Polish>Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1.</Polish>
|
||||
<Hungarian>Vezérlő objektum nevek, vesszővel elválasztva több darab esetén.</Hungarian>
|
||||
<Portuguese>Nome dos objetos de controle, separado por vírgula se mais de um.</Portuguese>
|
||||
@ -142,14 +142,18 @@
|
||||
<Key ID="STR_ACE_Slideshow_SetName_DisplayName">
|
||||
<English>Set Name</English>
|
||||
<Polish>Ustaw nazwę</Polish>
|
||||
<Japanese>名前設定</Japanese>
|
||||
<French>Définir le nom</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_SetName_Description">
|
||||
<English>Name that will be used for main interaction entry (to distinguish multiple slideshows). Default: "Slides"</English>
|
||||
<Polish>Nazwa, która będzie użyta w głównym menu interakcji (w celu rozróżnienia różnych slajdów). Domyślnie: "Slides"</Polish>
|
||||
<Japanese>メイン インタラクション エントリで使われる名前を設定します。(複数のスライドショーを区別するため)。標準: "Slides"</Japanese>
|
||||
<French>Un nom qui sera utilisé pour interagir avec plusieurs diaporamas. Par défaut : "Slides"</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Duration_DisplayName">
|
||||
<English>Slide Duration</English>
|
||||
<French>Durée d'une diapositive</French>
|
||||
<French>Durée d'un diaporama</French>
|
||||
<Polish>Czas trwania slajdów</Polish>
|
||||
<Hungarian>Dia időtartam</Hungarian>
|
||||
<Portuguese>Duração do Slide</Portuguese>
|
||||
@ -163,7 +167,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Duration_Description">
|
||||
<English>Duration of each slide. Default: 0 (Automatic Transitions Disabled)</English>
|
||||
<French>Durée de chaque diapositive. Dafaut: 0 (transition automatique désactivée)</French>
|
||||
<French>Durée de chaque diaporama. Défaut: 0 (transition automatique désactivée)</French>
|
||||
<Polish>Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone)</Polish>
|
||||
<Hungarian>A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva)</Hungarian>
|
||||
<Portuguese>Duração de cada slide. Padrão: 0 (Transição automática desabilitada)</Portuguese>
|
||||
@ -177,7 +181,7 @@
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Slideshow_Interaction">
|
||||
<English>Slides</English>
|
||||
<French>Diapositives</French>
|
||||
<French>Diapo</French>
|
||||
<Polish>Slajdy</Polish>
|
||||
<Hungarian>Diák</Hungarian>
|
||||
<Portuguese>Slides</Portuguese>
|
||||
@ -190,4 +194,4 @@
|
||||
<Korean>슬라이드</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -190,7 +190,7 @@ class GVAR(interface) {
|
||||
1
|
||||
};
|
||||
multiselectEnabled = 0;
|
||||
maxHistoryDelay = 10e10;
|
||||
disableKeyboardSearch = 1;
|
||||
onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface));
|
||||
};
|
||||
class unitFrame: RscFrame {
|
||||
|
@ -21,7 +21,9 @@ class CfgPatches {
|
||||
|
||||
class CfgRespawnTemplates {
|
||||
class ADDON {
|
||||
displayName = CSTRING(DisplayName);
|
||||
onPlayerKilled = QFUNC(respawnTemplate);
|
||||
onPlayerRespawn = QFUNC(respawnTemplate);
|
||||
respawnTypes[] = {2,3};
|
||||
};
|
||||
};
|
||||
|
@ -46,19 +46,12 @@ _positions = [
|
||||
[_compassW + _offset, 0]
|
||||
];
|
||||
|
||||
_sequence = if (_heading < 90) then {
|
||||
[_SW, _WN, _NE, _ES]
|
||||
} else {
|
||||
if (_heading < 180) then {
|
||||
[_WN, _NE, _ES, _SW]
|
||||
} else {
|
||||
if (_heading < 270) then {
|
||||
[_NE, _ES, _SW, _WN]
|
||||
} else {
|
||||
[_ES, _SW, _WN, _NE]
|
||||
};
|
||||
};
|
||||
};
|
||||
_sequence = [
|
||||
[_SW, _WN, _NE, _ES],
|
||||
[_WN, _NE, _ES, _SW],
|
||||
[_NE, _ES, _SW, _WN],
|
||||
[_ES, _SW, _WN, _NE]
|
||||
] select floor(_heading/90);
|
||||
|
||||
|
||||
{
|
||||
|
@ -21,6 +21,10 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
if !(EGVAR(common,settingsInitFinished)) exitWith {
|
||||
EGVAR(common,runAtSettingsInitialized) pushBack [DFUNC(updateCameraModes),_this];
|
||||
};
|
||||
|
||||
params [["_addModes",[],[[]]], ["_removeModes",[],[[]]]];
|
||||
private ["_newModes","_currentModes"];
|
||||
|
||||
|
@ -33,43 +33,37 @@ if !(_newUnits isEqualTo []) exitWith {
|
||||
};
|
||||
};
|
||||
|
||||
private ["_sides","_cond","_filteredUnits","_filteredGroups"];
|
||||
|
||||
// Unit setting filter
|
||||
_newUnits = [[],allPlayers,playableUnits,allUnits] select GVAR(filterUnits);
|
||||
private _newUnits = [[],allPlayers,playableUnits,allUnits] select GVAR(filterUnits);
|
||||
|
||||
// Side setting filter
|
||||
_sides = [];
|
||||
_cond = [{_this == (side group player)},{(_this getFriend (side group player)) >= 0.6},{(_this getFriend (side group player)) < 0.6},{true}] select GVAR(filterSides);
|
||||
{
|
||||
if (_x call _cond) then {
|
||||
_sides pushBack _x;
|
||||
};
|
||||
} forEach GVAR(availableSides);
|
||||
private _sideFilter = [
|
||||
{_x == (side group player)},
|
||||
{(_x getFriend (side group player)) >= 0.6},
|
||||
{(_x getFriend (side group player)) < 0.6},
|
||||
{true}
|
||||
] select GVAR(filterSides);
|
||||
|
||||
private _filteredSides = GVAR(availableSides) select _sideFilter;
|
||||
|
||||
// Filter units and append to list
|
||||
_filteredUnits = [];
|
||||
{
|
||||
if (
|
||||
(alive _x) &&
|
||||
{(_x isKindOf "CAManBase")} &&
|
||||
{(side group _x) in _sides} && // Side filter
|
||||
{simulationEnabled _x} &&
|
||||
{!(_x getVariable [QGVAR(isStaged), false])} // Who watches the watchmen?
|
||||
) then {
|
||||
_filteredUnits pushBack _x;
|
||||
};
|
||||
} forEach (_newUnits - GVAR(unitBlacklist));
|
||||
private _filteredUnits = (_newUnits - GVAR(unitBlacklist)) select {
|
||||
(alive _x) &&
|
||||
{(_x isKindOf "CAManBase")} &&
|
||||
{(side group _x) in _filteredSides} && // Side filter
|
||||
{simulationEnabled _x} &&
|
||||
{!(_x getVariable [QGVAR(isStaged), false])} // Who watches the watchmen?
|
||||
};
|
||||
_filteredUnits append GVAR(unitWhitelist);
|
||||
|
||||
// Cache icons and colour for drawing
|
||||
_filteredGroups = [];
|
||||
private _filteredGroups = [];
|
||||
{
|
||||
// Intentionally re-applied to units in case their status changes
|
||||
[_x] call FUNC(cacheUnitInfo);
|
||||
_filteredGroups pushBack (group _x);
|
||||
_filteredGroups pushBackUnique (group _x);
|
||||
} forEach _filteredUnits;
|
||||
|
||||
// Replace previous lists entirely (removes any no longer valid)
|
||||
GVAR(groupList) = _filteredGroups;
|
||||
GVAR(unitList) = _filteredUnits arrayIntersect _filteredUnits;
|
||||
GVAR(groupList) = _filteredGroups arrayIntersect _filteredGroups;
|
||||
|
@ -29,6 +29,10 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
if !(EGVAR(common,settingsInitFinished)) exitWith {
|
||||
EGVAR(common,runAtSettingsInitialized) pushBack [DFUNC(updateVisionModes),_this];
|
||||
};
|
||||
|
||||
params [["_addModes",[],[[]]], ["_removeModes",[],[[]]]];
|
||||
private ["_newModes","_currentModes"];
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Spectator">
|
||||
<Key ID="STR_ACE_Spectator_DisplayName">
|
||||
<English>ACE Spectator</English>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Spectator_Settings_DisplayName">
|
||||
<English>Spectator Settings</English>
|
||||
<German>Zuschauer Einstellungen</German>
|
||||
|
@ -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];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -9,16 +9,14 @@
|
||||
* Is surface taggable <BOOL>
|
||||
*
|
||||
* Example:
|
||||
* [unit] call ace_tagging_fnc_checkTaggable
|
||||
* [player] call ace_tagging_fnc_checkTaggable
|
||||
*
|
||||
* Public: No
|
||||
*/
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
params ["_unit"];
|
||||
|
||||
[[_unit], {
|
||||
[_this, {
|
||||
params ["_unit"];
|
||||
|
||||
// Exit if no required item in inventory
|
||||
@ -45,15 +43,11 @@ params ["_unit"];
|
||||
if (_object isKindOf "Static") exitWith {false};
|
||||
|
||||
// If the class is not categorized correctly search the cache
|
||||
private _array = str(_object) splitString " ";
|
||||
private _str = toLower (_array select 1);
|
||||
TRACE_1("Object:",_str);
|
||||
private _objClass = GVAR(cacheStaticModels) getVariable _str;
|
||||
private _modelName = (getModelInfo _object) select 0;
|
||||
private _isStatic = GVAR(cacheStaticModels) getVariable [_modelName, false];
|
||||
TRACE_2("Object:",_modelName,_isStatic);
|
||||
// If the class in not on the cache, exit
|
||||
if (isNil "_objClass") exitWith {
|
||||
false
|
||||
};
|
||||
true
|
||||
(!_isStatic)
|
||||
}) exitWith {
|
||||
TRACE_1("Pointed object is non static",_object);
|
||||
false
|
||||
|
@ -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
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Tagging">
|
||||
<Key ID="STR_ACE_Tagging_Tagging">
|
||||
@ -68,16 +68,14 @@
|
||||
<English>Tag</English>
|
||||
<German>Markieren</German>
|
||||
<Spanish>Marcar</Spanish>
|
||||
<Polish>Taguj</Polish>
|
||||
<French>Tag</French>
|
||||
<Polish>Oznakuj</Polish>
|
||||
<French>Marque</French>
|
||||
<Italian>Marca</Italian>
|
||||
<Czech>Označit</Czech>
|
||||
<Portuguese>Marcar</Portuguese>
|
||||
<Russian>Маркер</Russian>
|
||||
<Japanese>タグ</Japanese>
|
||||
<Korean>뿌리기</Korean>
|
||||
<French>Tag</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Tagging_XBlack">
|
||||
<English>X black</English>
|
||||
@ -198,4 +196,3 @@
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
||||
|
@ -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]);
|
||||
|
@ -226,30 +226,35 @@
|
||||
<Japanese>編集可能なオブジェクトを更新</Japanese>
|
||||
<Polish>Aktualizuj edytowalne obiekty</Polish>
|
||||
<Korean>수정 가능한 물체 갱신</Korean>
|
||||
<French>Màj les objets éditables</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_curators">
|
||||
<English>All Curators</English>
|
||||
<Japanese>全キュレーター</Japanese>
|
||||
<Korean>모든 큐레이터</Korean>
|
||||
<Polish>Wszyscy kuratorzy</Polish>
|
||||
<French>Tous curateurs</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_curators_desc">
|
||||
<English>Apply changes to all curators</English>
|
||||
<Japanese>全キュレーターへ変更を適用</Japanese>
|
||||
<Korean>모든 큐레이터에 변화를 적용합니다</Korean>
|
||||
<Polish>Zatwierdź zmiany dla wszystkich kuratorów</Polish>
|
||||
<French>Applique les changements à tous les curateurs</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_removal">
|
||||
<English>Remove Objects</English>
|
||||
<Japanese>オブジェクトの削除</Japanese>
|
||||
<Korean>물체 삭제</Korean>
|
||||
<Polish>Usuń obiekty</Polish>
|
||||
<French>Enlève les objets</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleEditableObjects_removal_desc">
|
||||
<English>Remove existing instead of adding new</English>
|
||||
<Japanese>新しく追加するために削除します</Japanese>
|
||||
<Korean>물체를 삭제합니다</Korean>
|
||||
<Polish>Usuń istniejące zamiast dodawać nowe</Polish>
|
||||
<French>Enlève les objets existants au lieu d'en ajouter de nouveaux</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleGlobalSetSkill_DisplayName">
|
||||
<English>Global AI Skill</English>
|
||||
@ -420,18 +425,21 @@
|
||||
<Japanese>FRUES の追加と削除</Japanese>
|
||||
<Korean>패스트로프 추가/제거</Korean>
|
||||
<Polish>Dodaj/usuń FRIES</Polish>
|
||||
<French>Aj./Enlève FRIES</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_NotFastRopeCompatible">
|
||||
<English>%1 is not fastrope compatible.</English>
|
||||
<Japanese>%1 はファストロープに対応していません。</Japanese>
|
||||
<Korean>%1은 패스트로프하기에 적합하지 않습니다.</Korean>
|
||||
<Polish>%1 nie jest kompatybilny ze zjazdem linowym.</Polish>
|
||||
<French>%1 n'est pas compatible.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_CantRemoveFRIES">
|
||||
<English>Unable to remove FRIES, ropes are deployed.</English>
|
||||
<Japanese>すでにロープが展開されているため、FRIES を削除できません。</Japanese>
|
||||
<Korean>패스트로프 제거 불가능, 줄이 이미 배치되었습니다.</Korean>
|
||||
<Polish>Nie można usunąć FRIES, liny są wypuszczone.</Polish>
|
||||
<French>Pas en mesure d'enlever le FRIES, les cordes ne sont pas déployées.</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleTeleportPlayers_DisplayName">
|
||||
<English>Teleport Players</English>
|
||||
@ -561,6 +569,7 @@
|
||||
<Polish>Przełącz symulację</Polish>
|
||||
<Japanese>シミュレーションをトグル</Japanese>
|
||||
<Korean>재현 토글</Korean>
|
||||
<French>Bascule Simulation</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Zeus_ModuleAddSpareWheel_DisplayName">
|
||||
<English>Add Spare Wheel</English>
|
||||
@ -814,4 +823,4 @@
|
||||
<Korean>알 수 없는 반경 입력됨</Korean>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Version-3.9.0-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
<img src="https://img.shields.io/badge/Version-3.9.1-blue.svg?style=flat-square" alt="ACE3 Version">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat-square&label=Issues" alt="ACE3 Fehlermeldungen">
|
||||
|
@ -3,7 +3,7 @@
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/acemod/ACE3/releases">
|
||||
<img src="https://img.shields.io/badge/Wersja-3.9.0-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
||||
<img src="https://img.shields.io/badge/Wersja-3.9.1-blue.svg?style=flat-square" alt="ACE3 Wersja">
|
||||
</a>
|
||||
<a href="https://github.com/acemod/ACE3/issues">
|
||||
<img src="https://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia&style=flat-square" alt="ACE3 Zagadnienia">
|
||||
|
@ -9,16 +9,16 @@ ace:
|
||||
version:
|
||||
major: 3
|
||||
minor: 9
|
||||
patch: 0
|
||||
build: 16
|
||||
patch: 1
|
||||
build: 17
|
||||
|
||||
acex:
|
||||
githubUrl: https://github.com/acemod/ACEX
|
||||
version:
|
||||
major: 3
|
||||
minor: 1
|
||||
patch: 1
|
||||
build: 3
|
||||
minor: 2
|
||||
patch: 0
|
||||
build: 4
|
||||
|
||||
|
||||
markdown: kramdown
|
||||
|
@ -11,8 +11,8 @@ ace:
|
||||
version:
|
||||
major: 3
|
||||
minor: 9
|
||||
patch: 0
|
||||
build: 16
|
||||
patch: 1
|
||||
build: 17
|
||||
|
||||
acex:
|
||||
githubUrl: https://github.com/acemod/ACEX
|
||||
|
BIN
docs/img/scope_module.jpg
Normal file
After Width: | Height: | Size: 199 KiB |
BIN
docs/img/wiki/feature/ab_ingame.png
Normal file
After Width: | Height: | Size: 463 KiB |
BIN
docs/img/wiki/feature/ab_module.jpg
Normal file
After Width: | Height: | Size: 210 KiB |
BIN
docs/img/wiki/feature/abtools_inventory.png
Normal file
After Width: | Height: | Size: 184 KiB |
Before Width: | Height: | Size: 129 KiB |
BIN
docs/img/wiki/feature/atragmx1.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
docs/img/wiki/feature/atragmx4.png
Normal file
After Width: | Height: | Size: 881 KiB |
BIN
docs/img/wiki/feature/rangecard_menu.jpg
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
docs/img/wiki/feature/scope_module.jpg
Normal file
After Width: | Height: | Size: 199 KiB |
@ -9,7 +9,7 @@ order: 3
|
||||
|
||||
Name | Responsibilities
|
||||
--- | ---
|
||||
[bux](https://github.com/bux578){:target="_blank"} | Scripting, Testing
|
||||
[bux](https://github.com/bux){:target="_blank"} | Scripting, Testing
|
||||
[Felix Wiegand](https://github.com/koffeinflummi){:target="_blank"} | Scripting, Model Import
|
||||
[Glowbal](https://github.com/glowbal){:target="_blank"} | Scripting, UI
|
||||
[NouberNou](https://github.com/Noubernou){:target="_blank"} | Coding, Modeling, Performance, SME
|
||||
|
@ -15,7 +15,7 @@ version:
|
||||
## 1. Overview
|
||||
The Advanced Ballistics module improves internal and external ballistics.
|
||||
|
||||
## 1.1 Features
|
||||
### 1.1 Features
|
||||
- Drag modelling based on real-world ballistic coefficients.
|
||||
- Ambient air density (air pressure, temperature, humidity) affects drag.
|
||||
- Wind affects drag and deflects the trajectory.
|
||||
@ -31,7 +31,19 @@ The Advanced Ballistics module improves internal and external ballistics.
|
||||
|
||||
## 2. Usage
|
||||
|
||||
### 2.1 Protractor
|
||||
### 2.1 Enabling Advanced Ballistics
|
||||
|
||||
#### 2.1.1 Editor
|
||||
<img src="{{ site.baseurl }}/img/wiki/feature/ab_module.jpg" width="799" height="620" alt="Advanced Ballistics module" />
|
||||
|
||||
#### 2.1.2 Settings Framework
|
||||
- [Settings Framework]({{ site.baseurl }}/wiki/framework/settings-framework.html)
|
||||
|
||||
#### 2.1.3 Enabled in-game ?
|
||||
- Pick up a [Range Card]({{ site.baseurl }}/wiki/feature/rangecard.html) and open it.
|
||||
<img src="{{ site.baseurl }}/img/wiki/feature/ab_ingame.png" width="1400" height="280" alt="Advanced Ballistics vs Default Ballistic" />
|
||||
|
||||
### 2.2 Protractor
|
||||
- You need a compatible weapon.
|
||||
- Press <kbd>Ctrl</kbd>+<kbd>⇧ Shift</kbd>+<kbd>K</kbd>.
|
||||
- Red line indicates the current inclination angle in degrees.
|
||||
|