Merge pull request #1 from acemod/master

Fork update from master
This commit is contained in:
[OMCB]kaban 2015-09-17 01:24:22 +03:00
commit 4b21d1f42c
462 changed files with 3557 additions and 8751 deletions

View File

@ -3,10 +3,10 @@
</p> </p>
<p align="center"> <p align="center">
<a href="https://github.com/acemod/ACE3/releases"> <a href="https://github.com/acemod/ACE3/releases">
<img src="https://img.shields.io/badge/Version-3.2.1-blue.svg" alt="ACE3 Version"> <img src="https://img.shields.io/badge/Version-3.3.1-blue.svg" alt="ACE3 Version">
</a> </a>
<a href="https://github.com/acemod/ACE3/releases/download/v3.2.1/ace3_3.2.1.zip"> <a href="https://github.com/acemod/ACE3/releases/download/v3.3.1/ace3_3.3.1.zip">
<img src="http://img.shields.io/badge/Download-56.5_MB-green.svg" alt="ACE3 Download"> <img src="http://img.shields.io/badge/Download-62.0_MB-green.svg" alt="ACE3 Download">
</a> </a>
<a href="https://github.com/acemod/ACE3/issues"> <a href="https://github.com/acemod/ACE3/issues">
<img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues" alt="ACE3 Issues"> <img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Issues" alt="ACE3 Issues">
@ -17,6 +17,9 @@
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE"> <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
<img src="http://img.shields.io/badge/License-GPLv2-red.svg" alt="ACE3 License"> <img src="http://img.shields.io/badge/License-GPLv2-red.svg" alt="ACE3 License">
</a> </a>
<a href="http://slackin.koffeinflummi.de">
<img src="http://slackin.koffeinflummi.de/badge.svg" alt="ACE3 Slack">
</a>
</p> </p>
<p align="center"><sup><strong>Requires the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Visit us on <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p> <p align="center"><sup><strong>Requires the latest version of <a href="https://github.com/CBATeam/CBA_A3/releases">CBA A3</a>. Visit us on <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>

View File

@ -14,10 +14,10 @@
private "_deleted"; private "_deleted";
_deleted = 0; _deleted = 0;
_aceTimeSecond = floor ACE_time;
{ {
private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"]; private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"];
_x params["_bullet","_caliber","_bulletTraceVisible","_index"]; _x params["_bullet","_caliber","_bulletTraceVisible","_index"];
@ -37,7 +37,6 @@ _deleted = 0;
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""]; drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
}; };
_aceTimeSecond = floor ACE_time;
call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, ACE_time - _aceTimeSecond]); call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, ACE_time - _aceTimeSecond]);
} forEach GVAR(allBullets); } forEach GVAR(allBullets);

View File

@ -53,7 +53,9 @@ if (!GVAR(simulateForEveryone) && !(local _unit)) then {
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; }; if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
if (_abort || !(GVAR(extensionAvailable))) exitWith { if (_abort || !(GVAR(extensionAvailable))) exitWith {
[_bullet, getNumber(configFile >> "CfgAmmo" >> _ammo >> "airFriction")] call EFUNC(winddeflection,updateTrajectoryPFH); if (missionNamespace getVariable [QEGVAR(windDeflection,enabled), false]) then {
EGVAR(windDeflection,trackedBullets) pushBack [_bullet, getNumber(configFile >> "cfgAmmo" >> _ammo >> "airFriction")];
};
}; };
// Get Weapon and Ammo Configurations // Get Weapon and Ammo Configurations

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Advanced_Ballistics"> <Package name="Advanced_Ballistics">
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey"> <Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
@ -32,6 +32,7 @@
<German>Erweiterte Ballistik</German> <German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech> <Czech>Pokročilá balistika</Czech>
<Portuguese>Balística avançada</Portuguese> <Portuguese>Balística avançada</Portuguese>
<French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
</Key> </Key>
@ -42,6 +43,7 @@
<German>Erweiterte Ballistik</German> <German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech> <Czech>Pokročilá balistika</Czech>
<Portuguese>Balística avançada</Portuguese> <Portuguese>Balística avançada</Portuguese>
<French>Balistique avancée</French>
<Hungarian>Fejlett ballisztika</Hungarian> <Hungarian>Fejlett ballisztika</Hungarian>
<Russian>Продвинутая баллистика</Russian> <Russian>Продвинутая баллистика</Russian>
</Key> </Key>
@ -52,6 +54,7 @@
<German>Aktiviert die erweiterte Ballistik</German> <German>Aktiviert die erweiterte Ballistik</German>
<Czech>Aktivuje pokročilou balistiku</Czech> <Czech>Aktivuje pokročilou balistiku</Czech>
<Portuguese>Ativa balística avançada</Portuguese> <Portuguese>Ativa balística avançada</Portuguese>
<French>Activer la balistique avancée</French>
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
<Russian>Включает продвинутую баллистику</Russian> <Russian>Включает продвинутую баллистику</Russian>
</Key> </Key>
@ -62,6 +65,7 @@
<German>Für Scharfschützen aktiviert</German> <German>Für Scharfschützen aktiviert</German>
<Czech>Povoleno pro odstřelovače</Czech> <Czech>Povoleno pro odstřelovače</Czech>
<Portuguese>Ativar para caçadores</Portuguese> <Portuguese>Ativar para caçadores</Portuguese>
<French>Activer pour les snipers</French>
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian> <Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
<Russian>Включена для снайперов</Russian> <Russian>Включена для снайперов</Russian>
</Key> </Key>
@ -72,6 +76,7 @@
<German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German> <German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)</Czech> <Czech>Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)</Czech>
<Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese> <Portuguese>Ativa balística avançada para caçadores não locais (quando usando miras telescópicas)</Portuguese>
<French>Active la balistique avancée pour les snipers non locaux (en utilisant les optiques avancées)</French>
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor)</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian> <Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian>
</Key> </Key>
@ -82,6 +87,7 @@
<German>Für Gruppenmitglieder aktiviert</German> <German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech> <Czech>Povoleno pro členy skupiny</Czech>
<Portuguese>Ativada para membros do grupo</Portuguese> <Portuguese>Ativada para membros do grupo</Portuguese>
<French>Activer pour les membres groupés</French>
<Hungarian>Csoporttagoknak engedélyezve</Hungarian> <Hungarian>Csoporttagoknak engedélyezve</Hungarian>
<Russian>Включена для группы</Russian> <Russian>Включена для группы</Russian>
</Key> </Key>
@ -92,6 +98,7 @@
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German> <German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech> <Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech>
<Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese> <Portuguese>Ativa balística avançada para membros de grupo não locais</Portuguese>
<French>Active la balistique avancée pour les membres groupés non locaux</French>
<Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak</Hungarian>
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian> <Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
</Key> </Key>
@ -102,6 +109,7 @@
<German>Für jeden aktiviert</German> <German>Für jeden aktiviert</German>
<Czech>Povoleno pro všechny</Czech> <Czech>Povoleno pro všechny</Czech>
<Portuguese>Ativada para todos</Portuguese> <Portuguese>Ativada para todos</Portuguese>
<French>Activer pour tout le monde</French>
<Hungarian>Mindenkinek engedélyezve</Hungarian> <Hungarian>Mindenkinek engedélyezve</Hungarian>
<Russian>Включена для всех</Russian> <Russian>Включена для всех</Russian>
</Key> </Key>
@ -112,6 +120,7 @@
<German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German> <German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
<Czech>Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru)</Czech> <Czech>Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru)</Czech>
<Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese> <Portuguese>Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer)</Portuguese>
<French>Active la balistique avancé pour tous les joueurs non locaux (activer cette option peut avoir un impact sur les performance en multi durant les grands échanges de tirs)</French>
<Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian> <Hungarian>Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt)</Hungarian>
<Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian> <Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
</Key> </Key>
@ -122,6 +131,7 @@
<German>Für Gruppenmitglieder immer aktiviert</German> <German>Für Gruppenmitglieder immer aktiviert</German>
<Czech>Vždy povoleno pro členy skupiny</Czech> <Czech>Vždy povoleno pro členy skupiny</Czech>
<Portuguese>Sempre ativada para membros do grupo</Portuguese> <Portuguese>Sempre ativada para membros do grupo</Portuguese>
<French>Toujours activer pour les membres groupés</French>
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian> <Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
<Russian>Всегда включена для членов группы</Russian> <Russian>Всегда включена для членов группы</Russian>
</Key> </Key>
@ -132,6 +142,7 @@
<German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German> <German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
<Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech> <Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech>
<Portuguese>Sempre ative balística avançada quando um membro do grupo disparar</Portuguese> <Portuguese>Sempre ative balística avançada quando um membro do grupo disparar</Portuguese>
<French>Active tout le temps la balistique avancée quand un membre du groupe ouvre le feu</French>
<Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian> <Hungarian>Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel</Hungarian>
<Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian> <Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian>
</Key> </Key>
@ -142,6 +153,7 @@
<German>Beim vollautomatischen Feuern deaktiviert</German> <German>Beim vollautomatischen Feuern deaktiviert</German>
<Czech>Zakázáno v automatickém režimu střelby</Czech> <Czech>Zakázáno v automatickém režimu střelby</Czech>
<Portuguese>Desabilitar no modo automático</Portuguese> <Portuguese>Desabilitar no modo automático</Portuguese>
<French>Désactiver en mode rafale libre</French>
<Hungarian>Automata módban letiltva</Hungarian> <Hungarian>Automata módban letiltva</Hungarian>
<Russian>Выкл. для автомат. режима</Russian> <Russian>Выкл. для автомат. режима</Russian>
</Key> </Key>
@ -152,6 +164,7 @@
<German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German> <German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
<Czech>Zákáže pokročilou balistiku během střelby v režimu automat</Czech> <Czech>Zákáže pokročilou balistiku během střelby v režimu automat</Czech>
<Portuguese>Desabilitar a balística avançada durante fogo automático</Portuguese> <Portuguese>Desabilitar a balística avançada durante fogo automático</Portuguese>
<French>Désactive la balistique avancée pour les tirs en rafale libre</French>
<Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian> <Hungarian>Letiltja a fejlett ballisztikát automata tüzelés folyamán</Hungarian>
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian> <Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
</Key> </Key>
@ -162,6 +175,7 @@
<German>Simulation der Munitionstemperatur aktivieren</German> <German>Simulation der Munitionstemperatur aktivieren</German>
<Czech>Povolit simulaci teploty munice</Czech> <Czech>Povolit simulaci teploty munice</Czech>
<Portuguese>Ativar simulação de temperatura de munição</Portuguese> <Portuguese>Ativar simulação de temperatura de munição</Portuguese>
<French>Activer la simulation de la température</French>
<Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian> <Hungarian>Lőszer-hő szimuláció engedélyezése</Hungarian>
<Russian>Симуляция температуры для боеприпасов</Russian> <Russian>Симуляция температуры для боеприпасов</Russian>
</Key> </Key>
@ -172,6 +186,7 @@
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German> <German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na teplotě munice</Czech> <Czech>Úsťová rychlost je závislá na teplotě munice</Czech>
<Portuguese>A velocidade de saída varia com a temperatura da munição</Portuguese> <Portuguese>A velocidade de saída varia com a temperatura da munição</Portuguese>
<French>La température de la munition influe sur la vélocité intiale</French>
<Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian> <Hungarian>A kezdősebesség a lőszer hőmérsékletétől függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от температуры</Russian> <Russian>Начальная скорость пули зависит от температуры</Russian>
</Key> </Key>
@ -182,6 +197,7 @@
<German>Simulation der Lauflänge aktivieren</German> <German>Simulation der Lauflänge aktivieren</German>
<Czech>Povolit simulaci délky hlavně</Czech> <Czech>Povolit simulaci délky hlavně</Czech>
<Portuguese>Ativar a simulação de comprimento do cano</Portuguese> <Portuguese>Ativar a simulação de comprimento do cano</Portuguese>
<French>Activer la simulation de la longueur de canon</French>
<Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian> <Hungarian>Csőhossz-szimuláció engedélyezése</Hungarian>
<Russian>Симуляция длины ствола</Russian> <Russian>Симуляция длины ствола</Russian>
</Key> </Key>
@ -192,6 +208,7 @@
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German> <German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na délce hlavně</Czech> <Czech>Úsťová rychlost je závislá na délce hlavně</Czech>
<Portuguese>A velocidade de saída caria com o comprimento do cano</Portuguese> <Portuguese>A velocidade de saída caria com o comprimento do cano</Portuguese>
<French>La longueur du canon influe sur la vélocité initale</French>
<Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian> <Hungarian>A kezdősebesség a cső hosszától függően változó</Hungarian>
<Russian>Начальная скорость пули зависит от длины ствола</Russian> <Russian>Начальная скорость пули зависит от длины ствола</Russian>
</Key> </Key>
@ -202,6 +219,7 @@
<German>Geschossspureffekt aktivieren</German> <German>Geschossspureffekt aktivieren</German>
<Czech>Povolit efekt trasírek</Czech> <Czech>Povolit efekt trasírek</Czech>
<Portuguese>Ativa efeito traçante de projétil</Portuguese> <Portuguese>Ativa efeito traçante de projétil</Portuguese>
<French>Activer l'effet traçante</French>
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian> <Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
<Russian>Следы пуль</Russian> <Russian>Следы пуль</Russian>
</Key> </Key>
@ -212,6 +230,7 @@
<German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German> <German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German>
<Czech>Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)</Czech> <Czech>Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)</Czech>
<Portuguese>Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas)</Portuguese> <Portuguese>Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas)</Portuguese>
<French>Active une tracante pour les munitions de gros calibre (seulement visible en utilisant des optiques avancées)</French>
<Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian> <Hungarian>Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható)</Hungarian>
<Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian> <Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
</Key> </Key>
@ -222,6 +241,7 @@
<German>Simulationsintervall</German> <German>Simulationsintervall</German>
<Czech>Interval simulace</Czech> <Czech>Interval simulace</Czech>
<Portuguese>Intervalo da simulação</Portuguese> <Portuguese>Intervalo da simulação</Portuguese>
<French>Intervalle de simulation</French>
<Hungarian>Szimuláció intervalluma</Hungarian> <Hungarian>Szimuláció intervalluma</Hungarian>
<Russian>Интервал симуляции</Russian> <Russian>Интервал симуляции</Russian>
</Key> </Key>
@ -232,6 +252,7 @@
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German> <German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
<Czech>Určuje interval mezi každým výpočtem</Czech> <Czech>Určuje interval mezi každým výpočtem</Czech>
<Portuguese>Define o intervalo entre cada cálculo</Portuguese> <Portuguese>Define o intervalo entre cada cálculo</Portuguese>
<French>Défini un intervalle de calcul entre deux simulations</French>
<Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian> <Hungarian>Meghatározza a számítási lépések közötti időintervallumot</Hungarian>
<Russian>Определяет временной интервал между вычислениями</Russian> <Russian>Определяет временной интервал между вычислениями</Russian>
</Key> </Key>
@ -242,6 +263,7 @@
<German>Simulationsradius</German> <German>Simulationsradius</German>
<Czech>Rozsah simulace</Czech> <Czech>Rozsah simulace</Czech>
<Portuguese>Raio de simulação</Portuguese> <Portuguese>Raio de simulação</Portuguese>
<French>Rayon de simulation</French>
<Hungarian>Szimuláció hatóköre</Hungarian> <Hungarian>Szimuláció hatóköre</Hungarian>
<Russian>Радиус симуляции</Russian> <Russian>Радиус симуляции</Russian>
</Key> </Key>
@ -252,6 +274,7 @@
<German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German> <German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
<Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech> <Czech>Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil</Czech>
<Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese> <Portuguese>Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis</Portuguese>
<French>Défini le rayon autour du joueur (en mètres) d'application de la balistique avancée</French>
<Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian> <Hungarian>Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak</Hungarian>
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian> <Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
</Key> </Key>
@ -260,8 +283,9 @@
<Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish> <Polish>Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki.</Polish>
<Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech> <Czech>Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice.</Czech>
<Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese> <Portuguese>Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa.</Portuguese>
<French>Ce module active la simulation de balistique avancée - ie les projectiles sont influencé par des varibles comme le vent, la température, la pression atmosphérique, l'humidité, la gravité, le type de munition et l'arme avec laquelles ils sont tirés</French>
<Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian> <Hungarian>Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket.</Hungarian>
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian> <Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Aircraft"> <Package name="Aircraft">
<Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name"> <Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="ATragMX"> <Package name="ATragMX">
<Key ID="STR_ACE_ATragMX_Name"> <Key ID="STR_ACE_ATragMX_Name">
@ -50,4 +50,4 @@
<Portuguese>Abrir ATragMX</Portuguese> <Portuguese>Abrir ATragMX</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -19,6 +19,8 @@
params ["_attachToVehicle", "_unit"]; params ["_attachToVehicle", "_unit"];
TRACE_2("params",_attachToVehicle,_unit); TRACE_2("params",_attachToVehicle,_unit);
if ((vehicle _unit) != _unit) exitWith {false};
_attachedList = _attachToVehicle getVariable [QGVAR(attached), []]; _attachedList = _attachToVehicle getVariable [QGVAR(attached), []];
if ((count _attachedList) == 0) exitWith {false}; if ((count _attachedList) == 0) exitWith {false};

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Attach"> <Package name="Attach">
<Key ID="STR_ACE_Attach_AttachDetach"> <Key ID="STR_ACE_Attach_AttachDetach">

View File

@ -6,23 +6,11 @@ class CfgAmmo {
timeToLive=6; timeToLive=6;
}; };
class B_20mm : BulletBase {
timeToLive=30;
};
class B_25mm : BulletBase {
timeToLive=30;
};
class B_35mm_AA : BulletBase {
timeToLive=30;
};
class B_30mm_AP : BulletBase {
timeToLive=30;
};
class B_556x45_Ball : BulletBase { class B_556x45_Ball : BulletBase {
airFriction=-0.00126466; airFriction=-0.00126466;
hit=8; hit=8;
typicalSpeed=750; typicalSpeed=750;
tracerScale = 1;
tracerStartTime=0.073; // M856 tracer burns out to 800m tracerStartTime=0.073; // M856 tracer burns out to 800m
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
ACE_caliber=5.69; ACE_caliber=5.69;
@ -128,9 +116,13 @@ class CfgAmmo {
ACE_muzzleVelocities[]={785, 883, 925}; ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0}; ACE_barrelLengths[]={254.0, 414.02, 508.0};
}; };
class B_56x15_dual: BulletBase {
tracerScale = 0.5;
};
class B_65x39_Caseless : BulletBase { class B_65x39_Caseless : BulletBase {
airFriction=-0.00075308; airFriction=-0.00075308;
typicalSpeed=800; typicalSpeed=800;
tracerScale = 1.1; //1.0;
ACE_caliber=6.706; ACE_caliber=6.706;
ACE_bulletLength=32.893; ACE_bulletLength=32.893;
ACE_bulletMass=7.9704; ACE_bulletMass=7.9704;
@ -180,10 +172,15 @@ class CfgAmmo {
ACE_muzzleVelocities[]={750, 820, 840, 852, 860}; ACE_muzzleVelocities[]={750, 820, 840, 852, 860};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
}; };
class SubmunitionBullet;
class B_65x39_Minigun_Caseless: SubmunitionBullet {
tracerScale = 1.1; //1.0;
};
class B_762x51_Ball : BulletBase { class B_762x51_Ball : BulletBase {
airFriction=-0.00100957; airFriction=-0.00100957;
typicalSpeed=833; typicalSpeed=833;
hit=9; hit=9;
tracerScale = 1.2; //0.6;
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
ACE_caliber=7.823; ACE_caliber=7.823;
@ -479,6 +476,7 @@ class CfgAmmo {
class B_9x21_Ball : BulletBase { class B_9x21_Ball : BulletBase {
airFriction=-0.00226847; airFriction=-0.00226847;
typicalSpeed=390; typicalSpeed=390;
tracerScale = 0.5;
hit=6; hit=6;
ACE_caliber=9.042; ACE_caliber=9.042;
ACE_bulletLength=15.494; ACE_bulletLength=15.494;
@ -491,6 +489,9 @@ class CfgAmmo {
ACE_muzzleVelocities[]={440, 460, 480}; ACE_muzzleVelocities[]={440, 460, 480};
ACE_barrelLengths[]={101.6, 127.0, 228.6}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
class B_9x21_Ball_Tracer_Green: B_9x21_Ball {
tracerScale = 0.5;
};
class ACE_9x18_Ball_57N181S : B_9x21_Ball { class ACE_9x18_Ball_57N181S : B_9x21_Ball {
hit=5; hit=5;
airFriction=-0.00190333; airFriction=-0.00190333;
@ -584,6 +585,7 @@ class CfgAmmo {
timeToLive=10; timeToLive=10;
airFriction=-0.00038944; airFriction=-0.00038944;
typicalSpeed=910; typicalSpeed=910;
tracerScale = 1.3; //1.2;
ACE_caliber=10.363; ACE_caliber=10.363;
ACE_bulletLength=54.0; ACE_bulletLength=54.0;
ACE_bulletMass=26.568; ACE_bulletMass=26.568;
@ -670,9 +672,13 @@ class CfgAmmo {
ACE_muzzleVelocities[]={880, 915, 925}; ACE_muzzleVelocities[]={880, 915, 925};
ACE_barrelLengths[]={508.0, 660.4, 711.2}; ACE_barrelLengths[]={508.0, 660.4, 711.2};
}; };
class B_127x33_Ball: BulletBase {
tracerScale = 1.3; //1.2;
};
class B_127x54_Ball : BulletBase { class B_127x54_Ball : BulletBase {
airFriction=-0.00019268; airFriction=-0.00019268;
typicalSpeed=300; typicalSpeed=300;
tracerScale = 1.3;//
ACE_caliber=12.954; ACE_caliber=12.954;
ACE_bulletLength=64.516; ACE_bulletLength=64.516;
ACE_bulletMass=48.6; ACE_bulletMass=48.6;
@ -688,6 +694,7 @@ class CfgAmmo {
timeToLive=10; timeToLive=10;
airFriction=-0.00057503; airFriction=-0.00057503;
typicalSpeed=900; typicalSpeed=900;
tracerScale = 1.3; //1.2;
ACE_caliber=12.954; ACE_caliber=12.954;
ACE_bulletLength=58.674; ACE_bulletLength=58.674;
ACE_bulletMass=41.9256; ACE_bulletMass=41.9256;
@ -703,6 +710,7 @@ class CfgAmmo {
timeToLive=10; timeToLive=10;
airFriction=-0.00057503; airFriction=-0.00057503;
typicalSpeed=900; typicalSpeed=900;
tracerScale = 1.3;//
hit=25; hit=25;
caliber=4.0; caliber=4.0;
ACE_caliber=12.954; ACE_caliber=12.954;
@ -736,6 +744,7 @@ class CfgAmmo {
timeToLive=10; timeToLive=10;
airFriction=-0.00063800; airFriction=-0.00063800;
typicalSpeed=820; typicalSpeed=820;
tracerScale = 1.3; //1.5;
ACE_caliber=12.979; ACE_caliber=12.979;
ACE_bulletLength=64.008; ACE_bulletLength=64.008;
ACE_bulletMass=48.276; ACE_bulletMass=48.276;
@ -750,6 +759,7 @@ class CfgAmmo {
class B_45ACP_Ball : BulletBase { class B_45ACP_Ball : BulletBase {
airFriction=-0.00081221; airFriction=-0.00081221;
typicalSpeed=250; typicalSpeed=250;
tracerScale = 0.6;
ACE_caliber=11.481; ACE_caliber=11.481;
ACE_bulletLength=17.272; ACE_bulletLength=17.272;
ACE_bulletMass=14.904; ACE_bulletMass=14.904;
@ -761,4 +771,36 @@ class CfgAmmo {
ACE_muzzleVelocities[]={230, 250, 285}; ACE_muzzleVelocities[]={230, 250, 285};
ACE_barrelLengths[]={101.6, 127.0, 228.6}; ACE_barrelLengths[]={101.6, 127.0, 228.6};
}; };
class B_19mm_HE: BulletBase {
tracerScale = 1;
};
class B_30mm_HE: B_19mm_HE {
tracerScale = 2.5;
};
class B_20mm: BulletBase {
timeToLive=30;
tracerScale = 1.5; //1;
};
class B_25mm: BulletBase {
timeToLive=30;
tracerScale = 2.0; //1;
};
class B_30mm_AP: BulletBase {
timeToLive=30;
tracerScale = 2.5;
};
class B_35mm_AA: BulletBase {
timeToLive=30;
tracerScale = 2.75; //1.85;
};
class ShellBase;
class Sh_120mm_HE: ShellBase {
tracerScale = 3;
};
class Sh_120mm_APFSDS: ShellBase {
tracerScale = 3;
};
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
tracerScale = 2.5;
};
}; };

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Ballistics"> <Package name="Ballistics">
<!-- MX --> <!-- MX -->
@ -1599,8 +1599,9 @@
<German>[ACE] Munitionskiste</German> <German>[ACE] Munitionskiste</German>
<Czech>[ACE] Bedna s municí</Czech> <Czech>[ACE] Bedna s municí</Czech>
<Portuguese>[ACE] Caixa com suprimentos de munição</Portuguese> <Portuguese>[ACE] Caixa com suprimentos de munição</Portuguese>
<French>[ACE] Caisse de munitions</French>
<Hungarian>[ACE] Lőszeres láda</Hungarian> <Hungarian>[ACE] Lőszeres láda</Hungarian>
<Russian>[ACE] Ящик с боеприпасами</Russian> <Russian>[ACE] Ящик с боеприпасами</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -25,14 +25,6 @@ class Extended_GetOut_EventHandlers {
}; };
}; };
}; };
//reset captivity and escorting status when getting killed
class Extended_Killed_EventHandlers {
class CAManBase {
class GVAR(AutoDetachCaptive) {
killed = QUOTE(_this call FUNC(handleKilled));
};
};
};
//mission start //mission start
class Extended_InitPost_EventHandlers { class Extended_InitPost_EventHandlers {
class CAManBase { class CAManBase {

View File

@ -35,6 +35,12 @@ class CfgMovesMaleSdr: CfgMovesBasic {
class CutSceneAnimationBase; class CutSceneAnimationBase;
#define MACRO_ANIMATION \
head = "headDefault"; \
aimingBody = "aimingNo"; \
forceAim = 1; \
static = 1;
//Handcuffed Anims: //Handcuffed Anims:
class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase {
actions = "ACE_CivilStandHandcuffedActions"; actions = "ACE_CivilStandHandcuffedActions";
@ -45,6 +51,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
canReload = 0; canReload = 0;
MACRO_ANIMATION
}; };
class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon {
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease";
@ -52,12 +59,14 @@ class CfgMovesMaleSdr: CfgMovesBasic {
ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01}; InterpolateTo[] = {"Unconscious",0.01};
looped = 1; looped = 1;
MACRO_ANIMATION
}; };
class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon {
actions = "CivilStandActions"; actions = "CivilStandActions";
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout";
ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1};
MACRO_ANIMATION
}; };
//Handcuffed-FFV: //Handcuffed-FFV:
@ -65,6 +74,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm"; file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm";
actions = "ACE_CivilHandCuffedFFVActions"; actions = "ACE_CivilHandCuffedFFVActions";
ConnectTo[] = {}; ConnectTo[] = {};
MACRO_ANIMATION
}; };
@ -78,6 +88,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon",0.1}; ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
canReload = 0; canReload = 0;
MACRO_ANIMATION
}; };
class ACE_AmovPercMstpSsurWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { class ACE_AmovPercMstpSsurWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon {
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon";
@ -85,6 +96,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
looped = 1; looped = 1;
ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01}; InterpolateTo[] = {"Unconscious",0.01};
MACRO_ANIMATION
}; };
class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon {
speed = 0.5; //for gameplay reasons, slow this down speed = 0.5; //for gameplay reasons, slow this down
@ -92,6 +104,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon";
ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1};
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1};
MACRO_ANIMATION
}; };
}; };
}; };

View File

@ -19,7 +19,6 @@ PREP(doUnloadCaptive);
PREP(findEmptyNonFFVCargoSeat); PREP(findEmptyNonFFVCargoSeat);
PREP(handleGetIn); PREP(handleGetIn);
PREP(handleGetOut); PREP(handleGetOut);
PREP(handleKilled);
PREP(handleOnUnconscious); PREP(handleOnUnconscious);
PREP(handlePlayerChanged); PREP(handlePlayerChanged);
PREP(handleRespawn); PREP(handleRespawn);

View File

@ -1,32 +0,0 @@
/*
* Author: PabstMirror
* Handles when a unit is kill. Reset captivity and escorting status
*
* Arguments:
* 0: _oldUnit <OBJECT>
*
* Return Value:
* None
*
* Example:
* [bob1] call ACE_captives_fnc_handleKilled
*
* Public: No
*/
#include "script_component.hpp"
params ["_oldUnit"];
if (!local _oldUnit) exitWith {};
if (_oldUnit getVariable [QGVAR(isHandcuffed), false]) then {
[_oldUnit, false] call FUNC(setHandcuffed);
};
if (_oldUnit getVariable [QGVAR(isEscorting), false]) then {
_oldUnit setVariable [QGVAR(isEscorting), false, true];
};
if (_oldUnit getVariable [QGVAR(isSurrendering), false]) then {
[_oldUnit, false] call FUNC(setSurrendered);
};

View File

@ -20,20 +20,34 @@ params ["_unit","_dead"];
if (!local _unit) exitWith {}; if (!local _unit) exitWith {};
//With respawn="group", we could be respawning into a unit that is handcuffed/captive // Group and side respawn can potentially respawn you as a captive unit
//If they are, reset and rerun the SET function // Base and instant respawn cannot, so captive should be entirely reset
//if not, make sure to explicity disable the setCaptivityStatus, because captiveNum does not work correctly on respawn // So we explicity account for the respawn type
private ["_respawn"];
_respawn = [0] call BIS_fnc_missionRespawnType;
if (_unit getVariable [QGVAR(isHandcuffed), false]) then { if (_respawn > 3) then {
_unit setVariable [QGVAR(isHandcuffed), false]; if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
[_unit, true] call FUNC(setHandcuffed); _unit setVariable [QGVAR(isHandcuffed), false];
[_unit, true] call FUNC(setHandcuffed);
};
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
_unit setVariable [QGVAR(isSurrendering), false];
[_unit, true] call FUNC(setSurrendered);
};
} else { } else {
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
[_unit, false] call FUNC(setHandcuffed);
};
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
};
if (_unit getVariable [QGVAR(isSurrendering), false]) then { if (_unit getVariable [QGVAR(isSurrendering), false]) then {
_unit setVariable [QGVAR(isSurrendering), false]; [_unit, false] call FUNC(setSurrendered);
[_unit, true] call FUNC(setSurrendered); };
} else {
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
if (_oldUnit getVariable [QGVAR(isEscorting), false]) then {
_oldUnit setVariable [QGVAR(isEscorting), false, true];
};
}; };

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Captives"> <Package name="Captives">
<Key ID="STR_ACE_Captives_SetCaptive"> <Key ID="STR_ACE_Captives_SetCaptive">
@ -164,6 +164,7 @@
<German>Einheit kapitulieren lassen</German> <German>Einheit kapitulieren lassen</German>
<Czech>Vzdávající se jednotka</Czech> <Czech>Vzdávající se jednotka</Czech>
<Portuguese>Fazer unidade se render</Portuguese> <Portuguese>Fazer unidade se render</Portuguese>
<French>Faire capituler l'unité</French>
<Hungarian>Egység kapitulálása</Hungarian> <Hungarian>Egység kapitulálása</Hungarian>
<Russian>Сделать юнита пленным</Russian> <Russian>Сделать юнита пленным</Russian>
</Key> </Key>
@ -174,6 +175,7 @@
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German> <German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German>
<Czech>Synchronizuj s jednotkou, která se má vzdát.&lt;br /&gt;Zdroj: ace_captives</Czech> <Czech>Synchronizuj s jednotkou, která se má vzdát.&lt;br /&gt;Zdroj: ace_captives</Czech>
<Portuguese>Sincroniza uma unidade para fazer com que ela se renda. &lt;br/&gt;Fonte: ace_captives</Portuguese> <Portuguese>Sincroniza uma unidade para fazer com que ela se renda. &lt;br/&gt;Fonte: ace_captives</Portuguese>
<French>Synchronise une unité pour la rendre captive. &lt;br/&gt;Source: ace_captives</French>
<Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian> <Hungarian>Egység szinkronizálása, hogy kapituláljon.&lt;br /&gt;Forrás: ace_captives</Hungarian>
<Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian> <Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.&lt;br /&gt;Источник: ace_captives</Russian>
</Key> </Key>
@ -184,6 +186,7 @@
<Czech>Nastavení zajatce</Czech> <Czech>Nastavení zajatce</Czech>
<German>Gefangenen-Einstellungen</German> <German>Gefangenen-Einstellungen</German>
<Portuguese>Ajustes de prisioneiros</Portuguese> <Portuguese>Ajustes de prisioneiros</Portuguese>
<French>Options de capitulation</French>
<Hungarian>Fogoly-beállítások</Hungarian> <Hungarian>Fogoly-beállítások</Hungarian>
<Russian>Настройки пленения</Russian> <Russian>Настройки пленения</Russian>
</Key> </Key>
@ -194,6 +197,7 @@
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech> <Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
<German>Einstellungen zur Kapitulation und Kabelbindern</German> <German>Einstellungen zur Kapitulation und Kabelbindern</German>
<Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese> <Portuguese>Controla as configurações de rendição e abraçadeiras</Portuguese>
<French>Contrôle les paramètres de la rédition et des Serflex</French>
<Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian> <Hungarian>Szabályozza a kapituláció és bilincselés beállításait</Hungarian>
<Russian>Управляет настройками сдачи в плен и связывания</Russian> <Russian>Управляет настройками сдачи в плен и связывания</Russian>
</Key> </Key>
@ -204,6 +208,7 @@
<Czech>Může spoutat spolubojovníky</Czech> <Czech>Může spoutat spolubojovníky</Czech>
<German>Kann Teamkollegen fesseln</German> <German>Kann Teamkollegen fesseln</German>
<Portuguese>Pode algemar o próprio lado</Portuguese> <Portuguese>Pode algemar o próprio lado</Portuguese>
<French>Peut libérer sa propre faction</French>
<Hungarian>Saját oldal megbilincselhető</Hungarian> <Hungarian>Saját oldal megbilincselhető</Hungarian>
<Russian>Связать союзника</Russian> <Russian>Связать союзника</Russian>
</Key> </Key>
@ -214,6 +219,7 @@
<Czech>Mohou hráči spoutat jednotky na své straně</Czech> <Czech>Mohou hráči spoutat jednotky na své straně</Czech>
<German>Können Spieler eigene Einheiten fesseln</German> <German>Können Spieler eigene Einheiten fesseln</German>
<Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese> <Portuguese>Os jogadores podem algemar unidades do seu lado</Portuguese>
<French>Les joueurs peuvent utiliser les Serflex sur leur propre camp</French>
<Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian> <Hungarian>A játékosok megkötözhetik-e a saját oldalukon lévő egységeket</Hungarian>
<Russian>Разрешить игрокам связывать юнитов своей стороны</Russian> <Russian>Разрешить игрокам связывать юнитов своей стороны</Russian>
</Key> </Key>
@ -224,6 +230,7 @@
<Czech>Povolit vzdávání</Czech> <Czech>Povolit vzdávání</Czech>
<German>Kapitulation erlauben</German> <German>Kapitulation erlauben</German>
<Portuguese>Permite rendição</Portuguese> <Portuguese>Permite rendição</Portuguese>
<French>Permettre la capitulation</French>
<Hungarian>Kapituláció engedélyezése</Hungarian> <Hungarian>Kapituláció engedélyezése</Hungarian>
<Russian>Сдаться в плен</Russian> <Russian>Сдаться в плен</Russian>
</Key> </Key>
@ -234,28 +241,33 @@
<Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech> <Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech>
<German>Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben</German> <German>Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben</German>
<Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese> <Portuguese>Jogadores podem se render depois de guardar sua arma</Portuguese>
<French>Les joueurs peuvent se rendre après avoir rangé leur arme</French>
<Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian> <Hungarian>A játékosok megadhatják magukat a fegyverük elrakása után</Hungarian>
<Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian> <Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name">
<English>Require surrendering</English> <English>Require surrendering</English>
<Polish>Wymagaj kapitulacji</Polish> <Polish>Wymagaj kapitulacji</Polish>
<Portuguese>Requer rendição</Portuguese>
<Russian>Требовать пленения</Russian> <Russian>Требовать пленения</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description"> <Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
<English>Require Players to surrender before they can be arrested</English> <English>Require Players to surrender before they can be arrested</English>
<Polish>Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować</Polish> <Polish>Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować</Polish>
<Portuguese>Requer que jogadores se rendam antes de poderem ser presos</Portuguese>
<Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian> <Russian>Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOnly"> <Key ID="STR_ACE_Captives_SurrenderOnly">
<English>Surrendering only</English> <English>Surrendering only</English>
<Polish>Tylko kapitulacja</Polish> <Polish>Tylko kapitulacja</Polish>
<Portuguese>Somente rendição </Portuguese>
<Russian>Только сдавшийся в плен</Russian> <Russian>Только сдавшийся в плен</Russian>
</Key> </Key>
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon"> <Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
<English>Surrendering or No weapon</English> <English>Surrendering or No weapon</English>
<Polish>Kapitulacja lub brak broni</Polish> <Polish>Kapitulacja lub brak broni</Polish>
<Portuguese>Rendição ou desarmado</Portuguese>
<Russian>Сдавшийся или безоружный</Russian> <Russian>Сдавшийся или безоружный</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -10,6 +10,7 @@ class CfgVehicles {
isGlobal = 1; isGlobal = 1;
isTriggerActivated = 0; isTriggerActivated = 0;
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
class Arguments { class Arguments {
class enable { class enable {
displayName = CSTRING(ModuleSettings_enable); displayName = CSTRING(ModuleSettings_enable);
@ -18,13 +19,13 @@ class CfgVehicles {
defaultValue = 1; defaultValue = 1;
}; };
}; };
class ModuleDescription { class ModuleDescription {
description = CSTRING(SettingsModule_Description); description = CSTRING(SettingsModule_Description);
sync[] = {}; sync[] = {};
}; };
}; };
class LandVehicle; class LandVehicle;
class Car: LandVehicle { class Car: LandVehicle {
GVAR(space) = 4; GVAR(space) = 4;
@ -39,6 +40,7 @@ class CfgVehicles {
};*/ };*/
}; };
}; };
class Tank: LandVehicle { class Tank: LandVehicle {
GVAR(space) = 4; GVAR(space) = 4;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
@ -50,27 +52,154 @@ class CfgVehicles {
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
}; };
// hemets
class Truck_01_base_F: Truck_F {
GVAR(space) = 8;
};
class B_Truck_01_transport_F: Truck_01_base_F {
GVAR(space) = 20;
};
class B_Truck_01_covered_F: B_Truck_01_transport_F {
GVAR(space) = 20;
};
class B_Truck_01_mover_F: B_Truck_01_transport_F {
GVAR(space) = 4;
};
class B_Truck_01_box_F: B_Truck_01_mover_F {
GVAR(space) = 40;
};
class B_Truck_01_Repair_F: B_Truck_01_mover_F {
GVAR(space) = 20;
};
class B_Truck_01_ammo_F: B_Truck_01_mover_F {
GVAR(space) = 8;
};
class B_Truck_01_fuel_F: B_Truck_01_mover_F {
GVAR(space) = 4;
};
class B_Truck_01_medical_F: B_Truck_01_transport_F {
GVAR(space) = 8;
};
// kamaz'
class Truck_02_base_F: Truck_F { //covers "covered" variants
GVAR(space) = 20;
};
class Truck_02_transport_base_F: Truck_02_base_F {
GVAR(space) = 20;
};
class Truck_02_box_base_F: Truck_02_base_F { // repair variant, not actually cargo box like hemet
GVAR(space) = 12;
};
class Truck_02_medical_base_F: Truck_02_box_base_F {
GVAR(space) = 8;
};
class Truck_02_Ammo_base_F: Truck_02_base_F {
GVAR(space) = 12;
};
class Truck_02_fuel_base_F: Truck_02_base_F {
GVAR(space) = 4;
};
// typhoon
class Truck_03_base_F: Truck_F {
GVAR(space) = 8;
};
class O_Truck_03_transport_F: Truck_03_base_F {
GVAR(space) = 20;
};
class O_Truck_03_covered_F: Truck_03_base_F {
GVAR(space) = 20;
};
class O_Truck_03_repair_F: Truck_03_base_F {
GVAR(space) = 12;
};
class O_Truck_03_ammo_F: Truck_03_base_F {
GVAR(space) = 8;
};
class O_Truck_03_fuel_F: Truck_03_base_F {
GVAR(space) = 4;
};
class O_Truck_03_medical_F: Truck_03_base_F {
GVAR(space) = 8;
};
class O_Truck_03_device_F: Truck_03_base_F {
GVAR(space) = 4;
};
// civ trucks
class Van_01_base_F: Truck_F {
GVAR(space) = 8;
};
class Van_01_transport_base_F: Van_01_base_F {
GVAR(space) = 8;
};
class Van_01_box_base_F: Van_01_base_F { // repair variant, not actually cargo box like hemet
GVAR(space) = 12;
};
class Van_01_fuel_base_F: Van_01_base_F {
GVAR(space) = 4;
};
// misc. vehicles
class Quadbike_01_base_F: Car_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
class Kart_01_Base_F: Car_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
// helicopters
class Air; class Air;
class Helicopter: Air { class Helicopter: Air {
GVAR(space) = 8; GVAR(space) = 8;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
}; };
class Heli_Transport_02_base_F; class Heli_Transport_02_base_F;
class I_Heli_Transport_02_F : Heli_Transport_02_base_F { class I_Heli_Transport_02_F : Heli_Transport_02_base_F {
GVAR(space) = 20; GVAR(space) = 20;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
}; };
// jets
class Plane: Air { class Plane: Air {
GVAR(space) = 4; GVAR(space) = 0;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 0;
}; };
// boats
class Ship; class Ship;
class Ship_F: Ship { class Ship_F: Ship {
GVAR(space) = 4; GVAR(space) = 4;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
}; };
class Boat_Civil_01_base_F: Ship_F {
GVAR(space) = 4;
GVAR(hasCargo) = 1;
};
class Boat_F: Ship_F {};
class Rubber_duck_base_F: Boat_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
class Boat_Armed_01_base_F: Boat_F {
GVAR(space) = 8;
GVAR(hasCargo) = 1;
};
// submarines
class SDV_01_base_F: Boat_F {
GVAR(space) = 0;
GVAR(hasCargo) = 0;
};
// Static weapons // Static weapons
class StaticWeapon: LandVehicle { class StaticWeapon: LandVehicle {
GVAR(size) = 2; // 1 = small, 2 = large GVAR(size) = 2; // 1 = small, 2 = large
@ -97,6 +226,7 @@ class CfgVehicles {
GVAR(size) = 11; GVAR(size) = 11;
GVAR(canLoad) = 1; GVAR(canLoad) = 1;
XEH_ENABLED; XEH_ENABLED;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
displayName = ECSTRING(interaction,MainAction); displayName = ECSTRING(interaction,MainAction);
@ -114,6 +244,7 @@ class CfgVehicles {
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
GVAR(size) = 4; GVAR(size) = 4;
GVAR(canLoad) = 1; GVAR(canLoad) = 1;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
displayName = ECSTRING(interaction,MainAction); displayName = ECSTRING(interaction,MainAction);
@ -165,12 +296,14 @@ class CfgVehicles {
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED; XEH_ENABLED;
}; };
class Ruins_F; class Ruins_F;
class Land_Cargo20_military_ruins_F: Ruins_F { class Land_Cargo20_military_ruins_F: Ruins_F {
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
XEH_ENABLED; XEH_ENABLED;
}; };
class Land_Cargo20_orange_F: Cargo_base_F { class Land_Cargo20_orange_F: Cargo_base_F {
GVAR(space) = 49; GVAR(space) = 49;
GVAR(size) = 50; GVAR(size) = 50;
@ -202,7 +335,6 @@ class CfgVehicles {
XEH_ENABLED; XEH_ENABLED;
}; };
class Land_Cargo40_blue_F: Cargo_base_F { class Land_Cargo40_blue_F: Cargo_base_F {
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
@ -238,11 +370,13 @@ class CfgVehicles {
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED; XEH_ENABLED;
}; };
class Land_Cargo40_military_ruins_F: Ruins_F { class Land_Cargo40_military_ruins_F: Ruins_F {
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED; XEH_ENABLED;
}; };
class Land_Cargo40_orange_F: Cargo_base_F { class Land_Cargo40_orange_F: Cargo_base_F {
GVAR(space) = 99; GVAR(space) = 99;
GVAR(size) = 100; GVAR(size) = 100;
@ -273,12 +407,14 @@ class CfgVehicles {
GVAR(size) = 100; GVAR(size) = 100;
XEH_ENABLED; XEH_ENABLED;
}; };
// small // small
class Land_CargoBox_V1_F: ThingX { class Land_CargoBox_V1_F: ThingX {
GVAR(space) = 7; GVAR(space) = 7;
GVAR(hasCargo) = 1; GVAR(hasCargo) = 1;
GVAR(size) = 7; GVAR(size) = 7;
XEH_ENABLED; XEH_ENABLED;
class ACE_Actions { class ACE_Actions {
class ACE_MainActions { class ACE_MainActions {
displayName = ECSTRING(interaction,MainAction); displayName = ECSTRING(interaction,MainAction);
@ -290,5 +426,4 @@ class CfgVehicles {
}; };
}; };
}; };
}; };

View File

@ -41,7 +41,7 @@ if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) ex
private ["_text", "_condition", "_statement", "_icon", "_action"]; private ["_text", "_condition", "_statement", "_icon", "_action"];
_condition = { _condition = {
params ["_target", "_player"]; params ["_target", "_player"];
GVAR(enable) && {[_player, _target, []] call EFUNC(common,canInteractWith)} GVAR(enable) && {locked _target < 2} && {[_player, _target, []] call EFUNC(common,canInteractWith)}
}; };
_text = localize LSTRING(openMenu); _text = localize LSTRING(openMenu);
_statement = {GVAR(interactionVehicle) = _target; createDialog QGVAR(menu);}; _statement = {GVAR(interactionVehicle) = _target; createDialog QGVAR(menu);};

View File

@ -25,4 +25,4 @@ if (!_activated) exitWith {};
[_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule);
diag_log text "[ACE]: Cargo Module Initialized."; ACE_LOGINFO("Cargo Module Initialized.");

View File

@ -4,47 +4,63 @@
<Key ID="STR_ACE_Cargo_loadObject"> <Key ID="STR_ACE_Cargo_loadObject">
<English>Load</English> <English>Load</English>
<Polish>Załaduj</Polish> <Polish>Załaduj</Polish>
<Portuguese>Carregar</Portuguese>
<Russian>Загрузить</Russian> <Russian>Загрузить</Russian>
<Czech>Naložit</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_unloadObject"> <Key ID="STR_ACE_Cargo_unloadObject">
<English>Unload</English> <English>Unload</English>
<Polish>Wyładuj</Polish> <Polish>Wyładuj</Polish>
<Portuguese>Descarregar</Portuguese>
<Russian>Выгрузить</Russian> <Russian>Выгрузить</Russian>
<Czech>Vyložit</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_openMenu"> <Key ID="STR_ACE_Cargo_openMenu">
<English>Cargo</English> <English>Cargo</English>
<Polish>Ładunek</Polish> <Polish>Ładunek</Polish>
<Portuguese>Carga</Portuguese>
<Russian>Грузовой отсек</Russian> <Russian>Грузовой отсек</Russian>
<Czech>Náklad</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_cargoMenu"> <Key ID="STR_ACE_Cargo_cargoMenu">
<English>Cargo Menu</English> <English>Cargo Menu</English>
<Polish>Menu ładunku</Polish> <Polish>Menu ładunku</Polish>
<Portuguese>Menu de carga</Portuguese>
<Russian>Грузовой отсек</Russian> <Russian>Грузовой отсек</Russian>
<Czech>Menu nákladu</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_labelSpace"> <Key ID="STR_ACE_Cargo_labelSpace">
<English>Cargo space left: %1</English> <English>Cargo space left: %1</English>
<Polish>Pozostałe miejsce: %1</Polish> <Polish>Pozostałe miejsce: %1</Polish>
<Portuguese>Espaço de carga restante: %1</Portuguese>
<Russian>Осталось мест: %1</Russian> <Russian>Осталось мест: %1</Russian>
<Czech>Volný prostor: %1</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable">
<English>Enable Cargo</English> <English>Enable Cargo</English>
<Polish>Aktywuj cargo</Polish> <Polish>Aktywuj cargo</Polish>
<Portuguese>Ativar carga</Portuguese>
<Russian>Включить модуль перевозки грузов</Russian> <Russian>Включить модуль перевозки грузов</Russian>
<Czech>Povolit náklad</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description"> <Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
<English>Enable the load in cargo module</English> <English>Enable the load in cargo module</English>
<Polish>Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów.</Polish> <Polish>Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów.</Polish>
<Portuguese>Ativar o módulo de carregamento de carga</Portuguese>
<Russian>Включает модуль погрузки и перевозки грузов</Russian> <Russian>Включает модуль погрузки и перевозки грузов</Russian>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName"> <Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
<English>Cargo Settings</English> <English>Cargo Settings</English>
<Polish>Ustawienia cargo</Polish> <Polish>Ustawienia cargo</Polish>
<Portuguese>Preferências de carregamento</Portuguese>
<Russian>Перевозка грузов</Russian> <Russian>Перевозка грузов</Russian>
<Czech>Nastavení nákladu</Czech>
</Key> </Key>
<Key ID="STR_ACE_Cargo_SettingsModule_Description"> <Key ID="STR_ACE_Cargo_SettingsModule_Description">
<English>Configure the cargo module settings</English> <English>Configure the cargo module settings</English>
<Polish>Skonfiguruj ustawienia modułu cargo.</Polish> <Polish>Skonfiguruj ustawienia modułu cargo.</Polish>
<Portuguese>Configura as preferências do módulo de carga</Portuguese>
<Russian>Конфигурирует настройки модуля перевозки грузов</Russian> <Russian>Конфигурирует настройки модуля перевозки грузов</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -42,7 +42,7 @@
["HeadbugFixUsed", { ["HeadbugFixUsed", {
PARAMS_2(_profileName,_animation); PARAMS_2(_profileName,_animation);
diag_log text format ["[ACE] Headbug Used: Name: %1, Animation: %2", _profileName, _animation]; ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation);
}] call FUNC(addEventHandler); }] call FUNC(addEventHandler);
@ -102,7 +102,7 @@ if (_currentVersion != _previousVersion) then {
// Handle JIP scenario // Handle JIP scenario
if(!isServer) then { if(!isServer) then {
["PlayerJip", { ["PlayerJip", {
diag_log text format["[ACE] * JIP event synchronization initialized"]; ACE_LOGINFO("JIP event synchronization initialized");
["SEH_all", [player]] call FUNC(serverEvent); ["SEH_all", [player]] call FUNC(serverEvent);
}] call FUNC(addEventHandler); }] call FUNC(addEventHandler);
} else { } else {
@ -128,13 +128,13 @@ call FUNC(checkFiles);
if (isNil QGVAR(settings) || {(!isServer) && (isNil QEGVAR(modules,serverModulesRead))}) exitWith { if (isNil QGVAR(settings) || {(!isServer) && (isNil QEGVAR(modules,serverModulesRead))}) exitWith {
if (!_waitingMsgSent) then { if (!_waitingMsgSent) then {
_args set [0, true]; _args set [0, true];
diag_log text format["[ACE] Waiting on settings from server"]; ACE_LOGINFO("Waiting on settings from server...");
}; };
}; };
[(_this select 1)] call cba_fnc_removePerFrameHandler; [(_this select 1)] call cba_fnc_removePerFrameHandler;
diag_log text format["[ACE] Settings received from server"]; ACE_LOGINFO("Settings received from server.");
// Event so that ACE_Modules have their settings loaded: // Event so that ACE_Modules have their settings loaded:
["InitSettingsFromModules", []] call FUNC(localEvent); ["InitSettingsFromModules", []] call FUNC(localEvent);
@ -145,11 +145,20 @@ call FUNC(checkFiles);
call FUNC(loadSettingsLocalizedText); call FUNC(loadSettingsLocalizedText);
}; };
diag_log text format["[ACE] Settings initialized"]; ACE_LOGINFO("Settings initialized.");
//Event that settings are safe to use: //Event that settings are safe to use:
["SettingsInitialized", []] call FUNC(localEvent); ["SettingsInitialized", []] call FUNC(localEvent);
//Set init finished and run all delayed functions:
GVAR(settingsInitFinished) = true;
diag_log text format ["[ACE] %1 delayed functions running", (count GVAR(runAtSettingsInitialized))];
{
_x params ["_func", "_params"];
_params call _func;
} forEach GVAR(runAtSettingsInitialized);
GVAR(runAtSettingsInitialized) = nil; //cleanup
}, 0, [false]] call CBA_fnc_addPerFrameHandler; }, 0, [false]] call CBA_fnc_addPerFrameHandler;
@ -275,7 +284,7 @@ GVAR(OldVisibleMap) = false;
GVAR(OldPlayerWeapon) = _newPlayerWeapon; GVAR(OldPlayerWeapon) = _newPlayerWeapon;
["playerWeaponChanged", [ACE_player, _newPlayerWeapon]] call FUNC(localEvent); ["playerWeaponChanged", [ACE_player, _newPlayerWeapon]] call FUNC(localEvent);
}; };
// "visibleMapChanged" event // "visibleMapChanged" event
_newVisibleMap = visibleMap; _newVisibleMap = visibleMap;
if (!_newVisibleMap isEqualTo GVAR(OldVisibleMap)) then { if (!_newVisibleMap isEqualTo GVAR(OldVisibleMap)) then {
@ -283,9 +292,9 @@ GVAR(OldVisibleMap) = false;
GVAR(OldVisibleMap) = _newVisibleMap; GVAR(OldVisibleMap) = _newVisibleMap;
["visibleMapChanged", [ACE_player, _newVisibleMap]] call FUNC(localEvent); ["visibleMapChanged", [ACE_player, _newVisibleMap]] call FUNC(localEvent);
}; };
END_COUNTER(stateChecker); END_COUNTER(stateChecker);
}, 0, []] call CBA_fnc_addPerFrameHandler; }, 0, []] call CBA_fnc_addPerFrameHandler;
@ -326,7 +335,7 @@ GVAR(OldIsCamera) = false;
if (didJip) then { if (didJip) then {
// We are jipping! Get ready and wait, and throw the event // We are jipping! Get ready and wait, and throw the event
[{ [{
if(!(isNull player)) then { if((!(isNull player)) && GVAR(settingsInitFinished)) then {
["PlayerJip", [player] ] call FUNC(localEvent); ["PlayerJip", [player] ] call FUNC(localEvent);
[(_this select 1)] call cba_fnc_removePerFrameHandler; [(_this select 1)] call cba_fnc_removePerFrameHandler;
}; };

View File

@ -157,6 +157,7 @@ PREP(requestCallback);
PREP(resetAllDefaults); PREP(resetAllDefaults);
PREP(restoreVariablesJIP); PREP(restoreVariablesJIP);
PREP(revertKeyCodeLocalized); PREP(revertKeyCodeLocalized);
PREP(runAfterSettingsInit);
PREP(sanitizeString); PREP(sanitizeString);
PREP(sendRequest); PREP(sendRequest);
PREP(serverLog); PREP(serverLog);
@ -303,6 +304,9 @@ GVAR(nextFrameNo) = diag_frameno;
GVAR(nextFrameBufferA) = []; GVAR(nextFrameBufferA) = [];
GVAR(nextFrameBufferB) = []; GVAR(nextFrameBufferB) = [];
GVAR(settingsInitFinished) = false;
GVAR(runAtSettingsInitialized) = [];
// @TODO: Generic local-managed global-synced objects (createVehicleLocal) // @TODO: Generic local-managed global-synced objects (createVehicleLocal)
//Debug //Debug

View File

@ -11,22 +11,22 @@ PARAMS_2(_eventType,_event);
if (_eventType == "ACEg") then { if (_eventType == "ACEg") then {
_eventName = _event select 0; _eventName = _event select 0;
_eventArgs = _event select 1; _eventArgs = _event select 1;
_eventNames = GVAR(events) select 0; _eventNames = GVAR(events) select 0;
_eventIndex = _eventNames find _eventName; _eventIndex = _eventNames find _eventName;
if (_eventIndex != -1) then { if (_eventIndex != -1) then {
_events = (GVAR(events) select 1) select _eventIndex; _events = (GVAR(events) select 1) select _eventIndex;
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
diag_log text format[ARR_2("* Net Event %1",_eventName)]; ACE_LOGINFO_1("* Net Event %1",_eventName);
diag_log text format[ARR_2(" args=%1",_eventArgs)]; ACE_LOGINFO_1(" args=%1",_eventArgs);
#endif #endif
{ {
if (!isNil "_x") then { if (!isNil "_x") then {
_eventArgs call CALLSTACK_NAMED(_x, format[ARR_3("Net Event %1 ID: %2",_eventName,_forEachIndex)]); _eventArgs call CALLSTACK_NAMED(_x, FORMAT_2("Net Event %1 ID: %2",_eventName,_forEachIndex));
#ifdef DEBUG_EVENTS_CALLSTACK #ifdef DEBUG_EVENTS_CALLSTACK
diag_log text format[ARR_2(" ID: %1",_forEachIndex)]; ACE_LOGINFO_1(" ID: %1",_forEachIndex);
#endif #endif
}; };
} forEach _events; } forEach _events;
@ -38,7 +38,7 @@ if (_eventType == "ACEc") then {
_eventName = _event select 0; _eventName = _event select 0;
_eventTargets = _event select 1; _eventTargets = _event select 1;
_eventArgs = _event select 2; _eventArgs = _event select 2;
_sentEvents = []; _sentEvents = [];
if (!IS_ARRAY(_eventTargets)) then { if (!IS_ARRAY(_eventTargets)) then {
_eventTargets = [_eventTargets]; _eventTargets = [_eventTargets];
@ -72,4 +72,4 @@ if (_eventType == "ACEc") then {
}; };
} forEach _eventTargets; } forEach _eventTargets;
}; };
}; };

View File

@ -1,16 +1,16 @@
/* /*
* Author: jaynus * Author: jaynus
* *
* Receives either requests for synchronization from clients, or the synchronization data from the server. * Receives either requests for synchronization from clients, or the synchronization data from the server.
* *
* Arguments [Client] : * Arguments [Client] :
* 0: eventName (String) * 0: eventName (String)
* 1: eventLog (Array) * 1: eventLog (Array)
* *
* Arguments [Server] : * Arguments [Server] :
* 0: eventName (String) * 0: eventName (String)
* 1: client (Object) * 1: client (Object)
* *
* Return value: * Return value:
* Boolean of success * Boolean of success
*/ */
@ -24,14 +24,14 @@ if(isServer) then {
// Find the event name, and shovel out the events to the client // Find the event name, and shovel out the events to the client
PARAMS_2(_eventName,_client); PARAMS_2(_eventName,_client);
private["_eventEntry", "_eventLog"]; private["_eventEntry", "_eventLog"];
if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
diag_log text format["[ACE] Error, request for synced event - key not found."]; ACE_LOGERROR("Request for synced event - key not found.");
false false
}; };
_eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
_eventLog = _eventEntry select 1; _eventLog = _eventEntry select 1;
["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent); ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
} else { } else {
PARAMS_2(_eventName,_eventLog); PARAMS_2(_eventName,_eventLog);
@ -42,7 +42,7 @@ if(isServer) then {
_eventArgs = _x select 1; _eventArgs = _x select 1;
[_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent); [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent);
} forEach _eventLog; } forEach _eventLog;
diag_log text format["[ACE] + [%1] synchronized", _eventName]; ACE_LOGINFO_1("[%1] synchronized",_eventName);
}; };
true true

View File

@ -1,13 +1,13 @@
/* /*
* Author: jaynus * Author: jaynus
* *
* Handles synced events being received. Server will log them, and server/client will execute them. * Handles synced events being received. Server will log them, and server/client will execute them.
* *
* Arguments [Client] : * Arguments [Client] :
* 0: eventName (String) * 0: eventName (String)
* 1: arguments (Array) * 1: arguments (Array)
* 2: ttl (Scalar) * 2: ttl (Scalar)
* *
* Return value: * Return value:
* Boolean of success * Boolean of success
*/ */
@ -17,7 +17,7 @@ PARAMS_3(_name,_args,_ttl);
private["_internalData", "_eventLog", "_eventCode"]; private["_internalData", "_eventLog", "_eventCode"];
if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
diag_log text format["[ACE] Error, synced event key not found."]; ACE_LOGERROR("Synced event key not found.");
false false
}; };
@ -33,4 +33,4 @@ if(isServer) then {
}; };
_eventCode = _internalData select 0; _eventCode = _internalData select 0;
_args call _eventCode; _args call _eventCode;

View File

@ -5,9 +5,9 @@
* *
* Argument: * Argument:
* 0: Name (String) * 0: Name (String)
* 1: Handler (Code) * 1: Handler (Code)
* 2: TTL (Number or Code) [Optional] * 2: TTL (Number or Code) [Optional]
* *
* Return value: * Return value:
* Boolean of success * Boolean of success
*/ */
@ -25,10 +25,10 @@ if( (count _this) > 2) then {
}; };
if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
diag_log text format["[ACE] Error, duplicate synced event creation."]; ACE_LOGERROR("Duplicate synced event creation.");
false false
}; };
_eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); _eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
_data = [_handler,[],_ttl,_eventId]; _data = [_handler,[],_ttl,_eventId];
HASH_SET(GVAR(syncedEvents),_name,_data); HASH_SET(GVAR(syncedEvents),_name,_data);

View File

@ -87,7 +87,9 @@ switch ((_type select 0)) do {
_unit setPosATL _pos; _unit setPosATL _pos;
}; };
}; };
default {diag_log format ["ACE: Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type];}; default {
ACE_LOGWARNING_2("Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type);
};
}; };
[_addedToPlayer,_unit] [_addedToPlayer,_unit]

View File

@ -10,6 +10,8 @@
#include "script_component.hpp" #include "script_component.hpp"
if (!hasInterface) exitWith {};
private ["_show"]; private ["_show"];
PARAMS_1(_id); PARAMS_1(_id);
_show = if (count _this > 1) then {_this select 1} else {false}; _show = if (count _this > 1) then {_this select 1} else {false};

View File

@ -40,7 +40,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then {
private ["_varName","_cacheList"]; private ["_varName","_cacheList"];
// _eventName is defined on the function that calls the event // _eventName is defined on the function that calls the event
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
diag_log text format ["ACE: Clear cached variables on event: %1", _eventName]; ACE_LOGINFO_1("Clear cached variables on event: %1",_eventName);
#endif #endif
// Get the list of caches to clear // Get the list of caches to clear
_varName = format [QGVAR(clearCache_%1),_eventName]; _varName = format [QGVAR(clearCache_%1),_eventName];
@ -58,9 +58,9 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then {
_cacheList pushBack [_namespace, _uid]; _cacheList pushBack [_namespace, _uid];
}; };
#ifdef DEBUG_MODE_FULL #ifdef DEBUG_MODE_FULL
diag_log format ["Calculated result: %1 %2", _namespace, _uid]; ACE_LOGINFO_2("Calculated result: %1 %2",_namespace,_uid);
} else { } else {
diag_log format ["Cached result : %1 %2", _namespace, _uid]; ACE_LOGINFO_2("Cached result: %1 %2",_namespace,_uid);
#endif #endif
}; };

View File

@ -17,7 +17,7 @@
private "_version"; private "_version";
_version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr");
diag_log text format ["[ACE]: ACE is version %1.", _version]; ACE_LOGINFO_1("ACE is version %1.",_version);
private "_addons"; private "_addons";
//_addons = activatedAddons; // broken with High-Command module, see #2134 //_addons = activatedAddons; // broken with High-Command module, see #2134
@ -30,7 +30,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
private "_errorMsg"; private "_errorMsg";
_errorMsg = format ["File %1.pbo is outdated.", _x]; _errorMsg = format ["File %1.pbo is outdated.", _x];
diag_log text format ["[ACE] ERROR: %1", _errorMsg]; ACE_LOGERROR(_errorMsg);
if (hasInterface) then { if (hasInterface) then {
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
@ -46,14 +46,14 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
private "_errorMsg"; private "_errorMsg";
_errorMsg = format ["Extension %1.dll not installed.", _x]; _errorMsg = format ["Extension %1.dll not installed.", _x];
diag_log text format ["[ACE] ERROR: %1", _errorMsg]; ACE_LOGERROR(_errorMsg);
if (hasInterface) then { if (hasInterface) then {
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
}; };
} else { } else {
// Print the current extension version // Print the current extension version
diag_log text format ["[ACE] Extension version: %1: %2", _x, (_x callExtension "version")]; ACE_LOGINFO_2("Extension version: %1: %2",_x,(_x callExtension "version"));
}; };
} forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); } forEach getArray (configFile >> "ACE_Extensions" >> "extensions");
@ -80,7 +80,7 @@ if (isMultiplayer) then {
private "_errorMsg"; private "_errorMsg";
_errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version];
diag_log text format ["[ACE] ERROR: %1", _errorMsg]; ACE_LOGERROR(_errorMsg);
if (hasInterface) then { if (hasInterface) then {
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
@ -91,7 +91,7 @@ if (isMultiplayer) then {
if !(_addons isEqualTo []) then { if !(_addons isEqualTo []) then {
_errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons]; _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons];
diag_log text format ["[ACE] ERROR: %1", _errorMsg]; ACE_LOGERROR(_errorMsg);
if (hasInterface) then { if (hasInterface) then {
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);

View File

@ -67,7 +67,7 @@ if (!isServer) then {
}; };
//[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
diag_log text _error; ACE_LOGERROR(_error);
if (_mode < 2) then { if (_mode < 2) then {
_text = composeText [lineBreak, parseText format ["<t align='center'>%1</t>", _text]]; _text = composeText [lineBreak, parseText format ["<t align='center'>%1</t>", _text]];

View File

@ -13,7 +13,7 @@
* *
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_3(_unit,_target,_lockTarget); PARAMS_3(_unit,_target,_lockTarget);
if (isNil "_lockTarget") then {_lockTarget = false}; if (isNil "_lockTarget") then {_lockTarget = false};
@ -22,7 +22,7 @@ private "_owner";
_owner = _target getVariable [QGVAR(owner), objNull]; _owner = _target getVariable [QGVAR(owner), objNull];
if (!isNull _owner && {!isNull _unit} && {_unit != _owner}) then { if (!isNull _owner && {!isNull _unit} && {_unit != _owner}) then {
diag_log text "[ACE] ERROR: Claiming already owned object."; ACE_LOGERROR("Claiming already owned object.");
}; };
// transfer this immediately // transfer this immediately

View File

@ -55,4 +55,4 @@ if (_level <= _defaultLoglevel) then {
// pass it onwards to the log function: // pass it onwards to the log function:
// [0, [], compile format["%1",_msg], true] call FUNC(log); // [0, [], compile format["%1",_msg], true] call FUNC(log);
}; };
true true

View File

@ -23,7 +23,7 @@ _force = False;
// no animation given // no animation given
if (isNil "_animation") exitWith { if (isNil "_animation") exitWith {
diag_log format ["[ACE] ERROR: No animation specified in %1", _fnc_scriptNameParent]; ACE_LOGERROR_1("No animation specified in %1.",_fnc_scriptNameParent);
}; };
if (isNil "_priority") then { if (isNil "_priority") then {

View File

@ -5,7 +5,7 @@ PARAMS_1(_target);
{ {
if (isNil "_x") then { if (isNil "_x") then {
diag_log text format ["[ACE] ERROR: No argument and function for remote function. ID: %1", _forEachIndex]; ACE_LOGERROR_1("No argument and function for remote function. ID: %1",_forEachIndex);
} else { } else {
if (typeName _x == "ARRAY") then { if (typeName _x == "ARRAY") then {
[_x select 0, _target] call (_x select 1); [_x select 0, _target] call (_x select 1);

View File

@ -20,7 +20,7 @@ private ["_newArray", "_index"];
PARAMS_2(_array,_code); PARAMS_2(_array,_code);
if (isNil "_array") exitWith { if (isNil "_array") exitWith {
diag_log text format ["[ACE] ERROR: No array for function filter in %1", _fnc_scriptNameParent]; ACE_LOGERROR_1("No array for function filter in %1.",_fnc_scriptNameParent);
[] []
}; };

View File

@ -44,7 +44,7 @@ _letterGrid = false;
if (((toLower _formatX) find "a") != -1) then {_letterGrid = true}; if (((toLower _formatX) find "a") != -1) then {_letterGrid = true};
if (((toLower _formatY) find "a") != -1) then {_letterGrid = true}; if (((toLower _formatY) find "a") != -1) then {_letterGrid = true};
if (_letterGrid) exitWith { if (_letterGrid) exitWith {
diag_log text format ["[ACE] Map Grid Warning (%1) - Map uses letter grids [%2,%3]", worldName, _formatX, _formatY]; ACE_LOGWARNING_3("Map Grid Warning (%1) - Map uses letter grids [%2, %3]",worldName,_formatX,_formatY);
}; };
//Start at [0, 500] and move north until we get a change in grid //Start at [0, 500] and move north until we get a change in grid
@ -64,13 +64,13 @@ _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5);
_stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5); _stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5);
if (_stepYat5 < 0) then { if (_stepYat5 < 0) then {
diag_log text format ["[ACE] Map Grid Warning (%1) - Northing is reversed", worldName]; ACE_LOGWARNING_1("Map Grid Warning (%1) - Northing is reversed.",worldName);
}; };
if (_stepXat5 != 1) then { if (_stepXat5 != 1) then {
diag_log text format ["[ACE] Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x", worldName, _stepXat5]; ACE_LOGWARNING_2("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.",worldName,_stepXat5);
}; };
if ((_stepYat5 != 1) && {_stepYat5 != -1}) then { if ((_stepYat5 != 1) && {_stepYat5 != -1}) then {
diag_log text format ["[ACE] Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y", worldName, _stepXat5]; ACE_LOGWARNING_2("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.",worldName,_stepXat5);
}; };
GVAR(mapGridData) = [_offsetX, _realOffsetY, _stepXat5, _stepYat5]; GVAR(mapGridData) = [_offsetX, _realOffsetY, _stepXat5, _stepYat5];

View File

@ -42,7 +42,7 @@ _parseConfigForDisplayNames = {
if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then { if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
if !([missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { if !([missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
diag_log text format ["[ACE] - Setting found, but couldn't localize [%1] (server has but we don't?)", _name]; ACE_LOGWARNING_1("Setting found, but couldn't localize [%1] (server has but we don't?)",_name);
}; };
}; };
}; };

View File

@ -21,16 +21,16 @@ _eventIndex = _eventNames find _eventName;
if(_eventIndex != -1) then { if(_eventIndex != -1) then {
_events = (GVAR(events) select 1) select _eventIndex; _events = (GVAR(events) select 1) select _eventIndex;
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
diag_log text format[ARR_2("* Local Event: %1",_eventName)]; ACE_LOGINFO_1("* Local Event: %1",_eventName);
diag_log text format[ARR_2(" args=%1",_eventArgs)]; ACE_LOGINFO_1(" args=%1",_eventArgs);
#endif #endif
{ {
if(!isNil "_x") then { if(!isNil "_x") then {
_eventArgs call CALLSTACK_NAMED(_x, format[ARR_3("Local Event %1 ID: %2",_eventName,_forEachIndex)]); _eventArgs call CALLSTACK_NAMED(_x, FORMAT_2("Local Event %1 ID: %2",_eventName,_forEachIndex));
#ifdef DEBUG_EVENTS_CALLSTACK #ifdef DEBUG_EVENTS_CALLSTACK
diag_log text format[ARR_2(" ID: %1",_forEachIndex)]; ACE_LOGINFO_1(" ID: %1",_forEachIndex);
#endif #endif
}; };
} forEach _events; } forEach _events;
}; };

View File

@ -21,7 +21,7 @@ _array = + _this select 0;
_code = _this select 1; _code = _this select 1;
if (isNil "_array") exitWith { if (isNil "_array") exitWith {
diag_log text format ["[ACE] ERROR: No array for function map in %1", _fnc_scriptNameParent]; ACE_LOGERROR_1("No array for function map in %1.",_fnc_scriptNameParent);
[] []
}; };

View File

@ -22,4 +22,4 @@ if !(_activated) exitWith {};
[_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule);
diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)]; ACE_LOGINFO_1("Check-PBOs Module Initialized. Mode: %1.",GVAR(checkPBOsAction));

View File

@ -44,4 +44,4 @@ if !(_activated) exitWith {};
}; };
} count _units; } count _units;
diag_log text "[ACE]: WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE."; ACE_LOGINFO("WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.");

View File

@ -20,7 +20,7 @@ PARAMS_3(_logic,_settingName,_moduleVariable);
// Check if the parameter is defined in the module // Check if the parameter is defined in the module
if (isNil {_logic getVariable _moduleVariable}) exitWith { if (isNil {_logic getVariable _moduleVariable}) exitWith {
diag_log text format["[ACE]: Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleVariable]; ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable);
}; };
// Set the setting globally and force it // Set the setting globally and force it

View File

@ -5,7 +5,7 @@
* *
* Argument: * Argument:
* 0: Name (String) * 0: Name (String)
* *
* Return value: * Return value:
* Boolean of success * Boolean of success
*/ */
@ -16,7 +16,7 @@ PARAMS_1(_name);
private ["_data", "_eventId"]; private ["_data", "_eventId"];
if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
diag_log text format["[ACE] Error, synced event key not found."]; ACE_LOGERROR("Synced event key not found.");
false false
}; };
@ -24,4 +24,4 @@ _data = HASH_GET(GVAR(syncedEvents),_name);
_eventId = _data select 3; _eventId = _data select 3;
[_eventId] call ace_common_fnc_removeEventHandler; [_eventId] call ace_common_fnc_removeEventHandler;
HASH_REM(GVAR(syncedEvents),_name); HASH_REM(GVAR(syncedEvents),_name);

View File

@ -0,0 +1,27 @@
/*
* Author: PabstMirror
* Executes code after setting are initilized.
*
* Argument:
* 0: Code to execute <CODE>
* 1: Parameters to run the code with <ANY>
*
* Return value:
* None
*
* Example:
* [{if (GVAR(setting) then {x} else {y};}, []] call ace_common_fnc_runAfterSettingsInit
*
* Public: No
*/
#include "script_component.hpp"
params ["_func", "_params"];
if (GVAR(settingsInitFinished)) then {
//Setting Already Finished, Direct Run the code
_params call _func;
} else {
//Waiting on settings, throw it on the delayed run array
GVAR(runAtSettingsInitialized) pushBack [_func, _params];
};

View File

@ -16,8 +16,8 @@
PARAMS_2(_eventName,_eventArgs); PARAMS_2(_eventName,_eventArgs);
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
diag_log text format[ARR_2("* Server Event: %1",_eventName)]; ACE_LOGINFO_1("* Server Event: %1",_eventName);
diag_log text format[ARR_2(" args=%1",_eventArgs)]; ACE_LOGINFO_1(" args=%1",_eventArgs);
#endif #endif
ACEg = [_eventName, _eventArgs]; ACEg = [_eventName, _eventArgs];

View File

@ -7,7 +7,7 @@
* 0: Name (String) * 0: Name (String)
* 1: Arguments (Array) * 1: Arguments (Array)
* 2: TTL (Number or Code) [Optional] for this specific event call * 2: TTL (Number or Code) [Optional] for this specific event call
* *
* Return value: * Return value:
* Boolean of success * Boolean of success
*/ */
@ -25,9 +25,9 @@ if( (count _this) > 2) then {
}; };
if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
diag_log text format["[ACE] Error, synced event key not found."]; ACE_LOGERROR("Synced event key not found.");
false false
}; };
_eventData = [_name, _args,_ttl]; _eventData = [_name, _args,_ttl];
["SEH", _eventData] call FUNC(globalEvent); ["SEH", _eventData] call FUNC(globalEvent);

View File

@ -21,8 +21,8 @@
PARAMS_3(_eventName,_eventTargets,_eventArgs); PARAMS_3(_eventName,_eventTargets,_eventArgs);
#ifdef DEBUG_EVENTS #ifdef DEBUG_EVENTS
diag_log text format[ARR_3("* Target Event: %1 - %2",_eventName,_eventTargets)]; ACE_LOGINFO_2("* Target Event: %1 - %2",_eventName,_eventTargets);
diag_log text format[ARR_2(" args=%1",_eventArgs)]; ACE_LOGINFO_1(" args=%1",_eventArgs);
#endif #endif
ACEc = [_eventName, _eventTargets, _eventArgs]; ACEc = [_eventName, _eventTargets, _eventArgs];
@ -30,4 +30,4 @@ if(!isServer) then {
publicVariableServer "ACEc"; publicVariableServer "ACEc";
} else { } else {
["ACEc", ACEc] call FUNC(_handleNetEvent); ["ACEc", ACEc] call FUNC(_handleNetEvent);
}; };

View File

@ -37,11 +37,15 @@ if (_vehicle isKindOf "Ship" ) then {
}; };
TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle); TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle);
if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]; false }; if (!_validVehiclestate) exitwith {
ACE_LOGWARNING_4("Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4",_vehicle,getPos _vehicle,isTouchingGround _vehicle,speed _vehicle);
false
};
diag_log str _emptyPos; if (count _emptyPos == 0) exitwith {
ACE_LOGWARNING_1("No safe empty spots to unload patient. %1",_emptyPos);
if (count _emptyPos == 0) exitwith {diag_log format["No safe empty spots to unload patient. %1", _emptyPos]; false}; //consider displaying text saying there are no safe places to exit the vehicle false
}; //consider displaying text saying there are no safe places to exit the vehicle
unassignVehicle _unit; unassignVehicle _unit;
@ -75,4 +79,4 @@ _loaded = _vehicle getvariable [QGVAR(loaded_persons),[]];
_loaded = _loaded - [_unit]; _loaded = _loaded - [_unit];
_vehicle setvariable [QGVAR(loaded_persons),_loaded,true]; _vehicle setvariable [QGVAR(loaded_persons),_loaded,true];
true true

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Common"> <Package name="Common">
<Key ID="STR_ACE_Common_ACETeam"> <Key ID="STR_ACE_Common_ACETeam">
@ -477,6 +477,7 @@
<German>Überprüfe PBOs</German> <German>Überprüfe PBOs</German>
<Czech>Zkontrolovat PBO</Czech> <Czech>Zkontrolovat PBO</Czech>
<Portuguese>Verificar PBOs</Portuguese> <Portuguese>Verificar PBOs</Portuguese>
<French>Vérifier les PBOs</French>
<Hungarian>PBO-k ellenőrzése</Hungarian> <Hungarian>PBO-k ellenőrzése</Hungarian>
<Russian>Проверка аддонов</Russian> <Russian>Проверка аддонов</Russian>
</Key> </Key>
@ -487,6 +488,7 @@
<Czech>Zjistit addon který je v souladu se serverem</Czech> <Czech>Zjistit addon který je v souladu se serverem</Czech>
<Portuguese>Este módulo verifica a integridade dos addons quando iniciamos a simulação</Portuguese> <Portuguese>Este módulo verifica a integridade dos addons quando iniciamos a simulação</Portuguese>
<Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian> <Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian>
<French>Ce module contrôle si les PBOs de chaque joueur sont corrects</French>
</Key> </Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName"> <Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
<English>Action</English> <English>Action</English>
@ -495,6 +497,7 @@
<German>Aktion</German> <German>Aktion</German>
<Czech>Akce</Czech> <Czech>Akce</Czech>
<Portuguese>Ação</Portuguese> <Portuguese>Ação</Portuguese>
<French>Action</French>
<Hungarian>Cselekvés</Hungarian> <Hungarian>Cselekvés</Hungarian>
<Russian>Действие</Russian> <Russian>Действие</Russian>
</Key> </Key>
@ -505,6 +508,7 @@
<German>Was soll mit Leuten passieren, die nicht die richtigen PBOs haben?</German> <German>Was soll mit Leuten passieren, die nicht die richtigen PBOs haben?</German>
<Czech>Co udělat s lidmi, co nemají správné addony?</Czech> <Czech>Co udělat s lidmi, co nemají správné addony?</Czech>
<Portuguese>O que fazer com pessoas que não tem os PBOs corretos?</Portuguese> <Portuguese>O que fazer com pessoas que não tem os PBOs corretos?</Portuguese>
<French>Que faire avec les personnes n'ayant pas les bon PBOs</French>
<Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian> <Hungarian>Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k?</Hungarian>
<Russian>Что делать с игроками с неправильными аддонами?</Russian> <Russian>Что делать с игроками с неправильными аддонами?</Russian>
</Key> </Key>
@ -515,6 +519,7 @@
<German>Einmal verwarnen</German> <German>Einmal verwarnen</German>
<Czech>Upozornit jednou</Czech> <Czech>Upozornit jednou</Czech>
<Portuguese>Avisar uma vez</Portuguese> <Portuguese>Avisar uma vez</Portuguese>
<French>Avertir une fois</French>
<Hungarian>Egyszeri figyelmeztetés</Hungarian> <Hungarian>Egyszeri figyelmeztetés</Hungarian>
<Russian>Предупредить один раз</Russian> <Russian>Предупредить один раз</Russian>
</Key> </Key>
@ -525,6 +530,7 @@
<German>Immer verwarnen</German> <German>Immer verwarnen</German>
<Czech>Upozornit (permanentně)</Czech> <Czech>Upozornit (permanentně)</Czech>
<Portuguese>Avisar (permanente)</Portuguese> <Portuguese>Avisar (permanente)</Portuguese>
<French>Avertir (permanent)</French>
<Hungarian>Figyelmeztetés (tartós)</Hungarian> <Hungarian>Figyelmeztetés (tartós)</Hungarian>
<Russian>Предупреждать (постоянно)</Russian> <Russian>Предупреждать (постоянно)</Russian>
</Key> </Key>
@ -535,6 +541,7 @@
<German>Kicken</German> <German>Kicken</German>
<Czech>Vyhodit</Czech> <Czech>Vyhodit</Czech>
<Portuguese>Chutar</Portuguese> <Portuguese>Chutar</Portuguese>
<French>Ejecter</French>
<Hungarian>Kirúgás</Hungarian> <Hungarian>Kirúgás</Hungarian>
<Russian>Кикнуть</Russian> <Russian>Кикнуть</Russian>
</Key> </Key>
@ -545,6 +552,7 @@
<German>Alle Addons überprüfen</German> <German>Alle Addons überprüfen</German>
<Czech>Zkontrolovat všechny addony</Czech> <Czech>Zkontrolovat všechny addony</Czech>
<Portuguese>Verificar todos addons</Portuguese> <Portuguese>Verificar todos addons</Portuguese>
<French>Vérifier tous les addons</French>
<Hungarian>Összes bővítmény ellenőrzése</Hungarian> <Hungarian>Összes bővítmény ellenőrzése</Hungarian>
<Russian>Проверять все аддоны</Russian> <Russian>Проверять все аддоны</Russian>
</Key> </Key>
@ -555,6 +563,7 @@
<German>Alle Addons anstatt nur ACE überprüfen?</German> <German>Alle Addons anstatt nur ACE überprüfen?</German>
<Czech>Zkontrolovat všechny addony namísto jen těch od ACE?</Czech> <Czech>Zkontrolovat všechny addony namísto jen těch od ACE?</Czech>
<Portuguese>Verificar todos addons invés de só os do ACE?</Portuguese> <Portuguese>Verificar todos addons invés de só os do ACE?</Portuguese>
<French>Vérifie tous les addons, même ceux qui ne sont pas liés à ACE</French>
<Hungarian>Az összes bővítmény ellenőrzése, csak az ACE helyett?</Hungarian> <Hungarian>Az összes bővítmény ellenőrzése, csak az ACE helyett?</Hungarian>
<Russian>Проверять все аддоны, а не только ACE?</Russian> <Russian>Проверять все аддоны, а не только ACE?</Russian>
</Key> </Key>
@ -565,6 +574,7 @@
<German>Whitelist</German> <German>Whitelist</German>
<Czech>Seznam povolených</Czech> <Czech>Seznam povolených</Czech>
<Portuguese>Lista branca</Portuguese> <Portuguese>Lista branca</Portuguese>
<French>Liste blanche</French>
<Hungarian>Fehérlista</Hungarian> <Hungarian>Fehérlista</Hungarian>
<Russian>Вайтлист доп. аддонов</Russian> <Russian>Вайтлист доп. аддонов</Russian>
</Key> </Key>
@ -575,6 +585,7 @@
<German>Welche Addons werden dennoch erlaubt?</German> <German>Welche Addons werden dennoch erlaubt?</German>
<Czech>Jaké addony jsou povoleny?</Czech> <Czech>Jaké addony jsou povoleny?</Czech>
<Portuguese>Quais addons são permitidos de qualquer maneira?</Portuguese> <Portuguese>Quais addons são permitidos de qualquer maneira?</Portuguese>
<French>Quels addons sont tolérés</French>
<Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian> <Hungarian>Milyen bővítmények vannak feltétlenül engedélyezve?</Hungarian>
<Russian>Какие аддоны дополнительно разрешены?</Russian> <Russian>Какие аддоны дополнительно разрешены?</Russian>
</Key> </Key>
@ -585,6 +596,7 @@
<German>LSD-Fahrzeuge</German> <German>LSD-Fahrzeuge</German>
<Czech>LSD vozidla</Czech> <Czech>LSD vozidla</Czech>
<Portuguese>Veículos LSD</Portuguese> <Portuguese>Veículos LSD</Portuguese>
<French>LSD - Véhicules</French>
<Hungarian>LSD járművek</Hungarian> <Hungarian>LSD járművek</Hungarian>
<Russian>Транспорт под LSD</Russian> <Russian>Транспорт под LSD</Russian>
</Key> </Key>
@ -595,6 +607,7 @@
<German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German> <German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
<Czech>Přidá LSD efekt pro synchronizované vozidla</Czech> <Czech>Přidá LSD efekt pro synchronizované vozidla</Czech>
<Portuguese>Adiciona efeito LSD ao veículo sincronizado</Portuguese> <Portuguese>Adiciona efeito LSD ao veículo sincronizado</Portuguese>
<French>Ajoute l'effet LSD aux véhicules synchronisés</French>
<Hungarian>LSD-effekt hozzáadása a szinkronizált járművekhez</Hungarian> <Hungarian>LSD-effekt hozzáadása a szinkronizált járművekhez</Hungarian>
<Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian> <Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian>
</Key> </Key>
@ -605,6 +618,7 @@
<Portuguese>Ativa dispositivo de mão</Portuguese> <Portuguese>Ativa dispositivo de mão</Portuguese>
<Polish>Przełącz urządzenie podręczne</Polish> <Polish>Przełącz urządzenie podręczne</Polish>
<Czech>Přepnout ruční zařízení</Czech> <Czech>Přepnout ruční zařízení</Czech>
<French>Allumer l'ordinateur de poche</French>
<Hungarian>Kézi eszköz kapcsolása</Hungarian> <Hungarian>Kézi eszköz kapcsolása</Hungarian>
<Russian>Включить портативное устройство</Russian> <Russian>Включить портативное устройство</Russian>
</Key> </Key>
@ -615,6 +629,7 @@
<Portuguese>Fecha dispositivo de mão</Portuguese> <Portuguese>Fecha dispositivo de mão</Portuguese>
<Polish>Zamknij urządzenie podręczne</Polish> <Polish>Zamknij urządzenie podręczne</Polish>
<Czech>Zavřít ruční zařízení</Czech> <Czech>Zavřít ruční zařízení</Czech>
<French>Fermer l'ordinateur de poche</French>
<Hungarian>Kézi eszköz bezárása</Hungarian> <Hungarian>Kézi eszköz bezárása</Hungarian>
<Russian>Закрыть портативное устройство</Russian> <Russian>Закрыть портативное устройство</Russian>
</Key> </Key>
@ -625,6 +640,7 @@
<Portuguese>Troca dispositivos de mão</Portuguese> <Portuguese>Troca dispositivos de mão</Portuguese>
<Polish>Następne urządzenie podręczne</Polish> <Polish>Następne urządzenie podręczne</Polish>
<Czech>Procházet ruční zařízení</Czech> <Czech>Procházet ruční zařízení</Czech>
<French>Changer (cycle) d'ordinateur de poche</French>
<Hungarian>Kézi eszköz váltása</Hungarian> <Hungarian>Kézi eszköz váltása</Hungarian>
<Russian>Следующее портативное устройство</Russian> <Russian>Следующее портативное устройство</Russian>
</Key> </Key>
@ -677,7 +693,9 @@
<Key ID="STR_ACE_Common_VehiclesOnly"> <Key ID="STR_ACE_Common_VehiclesOnly">
<English>Vehicles only</English> <English>Vehicles only</English>
<Polish>Tylko pojazdy</Polish> <Polish>Tylko pojazdy</Polish>
<Portuguese>Somente veículos</Portuguese>
<Russian>Только в транспорте</Russian> <Russian>Только в транспорте</Russian>
<Czech>Pouze vozidla</Czech>
</Key> </Key>
<Key ID="STR_ACE_Common_DoNotForce"> <Key ID="STR_ACE_Common_DoNotForce">
<English>Do Not Force</English> <English>Do Not Force</English>
@ -691,32 +709,42 @@
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
<English>ACE3 Equipment</English> <English>ACE3 Equipment</English>
<Polish>ACE3 Wyposażenie</Polish> <Polish>ACE3 Wyposażenie</Polish>
<Portuguese>Equipamentos ACE3</Portuguese>
<Russian>ACE3 Снаряжение</Russian> <Russian>ACE3 Снаряжение</Russian>
<Czech>ACE3 Vybavení</Czech>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon"> <Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
<English>ACE3 Common</English> <English>ACE3 Common</English>
<Polish>ACE3 Ogólne</Polish> <Polish>ACE3 Ogólne</Polish>
<Portuguese>Comum ACE3</Portuguese>
<Russian>ACE3 Общие</Russian> <Russian>ACE3 Общие</Russian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons"> <Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
<English>ACE3 Weapons</English> <English>ACE3 Weapons</English>
<Polish>ACE3 Broń</Polish> <Polish>ACE3 Broń</Polish>
<Portuguese>Armamento ACE3</Portuguese>
<Russian>ACE3 Оружие</Russian> <Russian>ACE3 Оружие</Russian>
<Czech>ACE3 Zbraně</Czech>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement"> <Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
<English>ACE3 Movement</English> <English>ACE3 Movement</English>
<Polish>ACE3 Ruch</Polish> <Polish>ACE3 Ruch</Polish>
<Portuguese>Movimento ACE3</Portuguese>
<Russian>ACE3 Перемещение</Russian> <Russian>ACE3 Перемещение</Russian>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment"> <Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
<English>ACE3 Scope Adjustment</English> <English>ACE3 Scope Adjustment</English>
<Polish>ACE3 Regulacja optyki</Polish> <Polish>ACE3 Regulacja optyki</Polish>
<Portuguese>Ajuste de luneta ACE3</Portuguese>
<Russian>ACE3 Прицелы</Russian> <Russian>ACE3 Прицелы</Russian>
<Czech>ACE3 Nastavení optiky</Czech>
</Key> </Key>
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles"> <Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
<English>ACE3 Vehicles</English> <English>ACE3 Vehicles</English>
<Polish>ACE3 Pojazdy</Polish> <Polish>ACE3 Pojazdy</Polish>
<Portuguese>Veículos ACE3</Portuguese>
<Russian>ACE3 Транспорт</Russian> <Russian>ACE3 Транспорт</Russian>
<Czech>ACE3 Vozidla</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="concertina_wire"> <Package name="concertina_wire">
<Key ID="STR_ACE_CONCERTINA_WIRE"> <Key ID="STR_ACE_CONCERTINA_WIRE">
@ -7,7 +7,7 @@
<Russian>Колючая проволока</Russian> <Russian>Колючая проволока</Russian>
<Polish>Koncentrina</Polish> <Polish>Koncentrina</Polish>
<Spanish>Alambre de espino</Spanish> <Spanish>Alambre de espino</Spanish>
<French>Concertina wire</French> <French>Fill barbelé</French>
<Czech>Ostnatý drát</Czech> <Czech>Ostnatý drát</Czech>
<Italian>Concertina wire</Italian> <Italian>Concertina wire</Italian>
<Hungarian>Concertina wire</Hungarian> <Hungarian>Concertina wire</Hungarian>
@ -19,7 +19,7 @@
<Russian>Колючая проволока (моток)</Russian> <Russian>Колючая проволока (моток)</Russian>
<Polish>Zwój koncentriny</Polish> <Polish>Zwój koncentriny</Polish>
<Spanish>Bobina de alambre de espino</Spanish> <Spanish>Bobina de alambre de espino</Spanish>
<French>Concertina wire coil</French> <French>Bobine de fil barbelé</French>
<Czech>Smyčka ostnatého drátu</Czech> <Czech>Smyčka ostnatého drátu</Czech>
<Italian>Concertina wire coil</Italian> <Italian>Concertina wire coil</Italian>
<Hungarian>Concertina wire coil</Hungarian> <Hungarian>Concertina wire coil</Hungarian>
@ -31,7 +31,7 @@
<Russian>Демонтировать колючую проволоку</Russian> <Russian>Демонтировать колючую проволоку</Russian>
<Polish>Zwiń koncentrinę</Polish> <Polish>Zwiń koncentrinę</Polish>
<Spanish>Desmontar alambre de espino</Spanish> <Spanish>Desmontar alambre de espino</Spanish>
<French>Dismount Concertina wire</French> <French>Descendre le fil barbelé</French>
<Czech>Svinout ostnatý drát</Czech> <Czech>Svinout ostnatý drát</Czech>
<Italian>Dismount Concertina wire</Italian> <Italian>Dismount Concertina wire</Italian>
<Hungarian>Dismount Concertina wire</Hungarian> <Hungarian>Dismount Concertina wire</Hungarian>
@ -43,7 +43,7 @@
<Russian>Монтировать колючую проволоку</Russian> <Russian>Монтировать колючую проволоку</Russian>
<Polish>Rozwiń koncentrinę</Polish> <Polish>Rozwiń koncentrinę</Polish>
<Spanish>Desplegar alambre de espino</Spanish> <Spanish>Desplegar alambre de espino</Spanish>
<French>Deploy Concertina wire</French> <French>Mettre en place le fil barbelé</French>
<Czech>Rozvinout ostnatý drát</Czech> <Czech>Rozvinout ostnatý drát</Czech>
<Italian>Deploy Concertina wire</Italian> <Italian>Deploy Concertina wire</Italian>
<Hungarian>Deploy Concertina wire</Hungarian> <Hungarian>Deploy Concertina wire</Hungarian>

View File

@ -4,7 +4,7 @@ class CfgVehicles {
class ACE_SelfActions { class ACE_SelfActions {
class ACE_Equipment { class ACE_Equipment {
class GVAR(menu) { class GVAR(menu) {
displayName = "Configure DAGR"; displayName = CSTRING(ConfigureDAGR);
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem)); condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
statement = QUOTE(call FUNC(menuInit)); statement = QUOTE(call FUNC(menuInit));
showDisabled = 0; showDisabled = 0;
@ -12,7 +12,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa)); icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
exceptions[] = {"isNotInside", "isNotSitting"}; exceptions[] = {"isNotInside", "isNotSitting"};
class GVAR(toggle) { class GVAR(toggle) {
displayName = "Toggle DAGR"; displayName = CSTRING(ToggleDAGR);
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem)); condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
statement = QUOTE(call FUNC(toggleOverlay)); statement = QUOTE(call FUNC(toggleOverlay));
showDisabled = 0; showDisabled = 0;
@ -30,7 +30,7 @@ class CfgVehicles {
author[] = {"Rosuto", "Ruthberg"}; author[] = {"Rosuto", "Ruthberg"};
scope = 2; scope = 2;
scopeCurator = 2; scopeCurator = 2;
displayName = "DAGR"; displayName = CSTRING(Name);
vehicleClass = "Items"; vehicleClass = "Items";
class TransportItems { class TransportItems {
MACRO_ADDITEM(ACE_DAGR,1); MACRO_ADDITEM(ACE_DAGR,1);

View File

@ -6,9 +6,9 @@ class CfgWeapons {
class ACE_DAGR: ACE_ItemCore { class ACE_DAGR: ACE_ItemCore {
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"}; author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
scope = 2; scope = 2;
displayName = "DAGR"; displayName = CSTRING(Name);
model = QUOTE(PATHTOF(data\DAGR.p3d)); model = QUOTE(PATHTOF(data\DAGR.p3d));
descriptionShort = ""; descriptionShort = CSTRING(Description);
picture = PATHTOF(UI\DAGR_Icon.paa); picture = PATHTOF(UI\DAGR_Icon.paa);
icon = "iconObject_circle"; icon = "iconObject_circle";
mapSize = 0.034; mapSize = 0.034;

View File

@ -1,5 +1,21 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="DAGR"> <Package name="DAGR">
<Key ID="STR_ACE_DAGR_Name">
<English>DAGR</English>
<Polish>DAGR</Polish>
</Key>
<Key ID="STR_ACE_DAGR_ConfigureDAGR">
<English>Configure DAGR</English>
<Polish>Konfiguruj DAGR</Polish>
</Key>
<Key ID="STR_ACE_DAGR_ToggleDAGR">
<English>Toggle DAGR</English>
<Polish>Przełącz DAGR</Polish>
</Key>
<Key ID="STR_ACE_DAGR_Description">
<English>Defense Advanced GPS Receiver</English>
<Polish>Defense Advanced GPS Receiver</Polish>
</Key>
</Package> </Package>
</Project> </Project>

View File

@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"];
if (_caller != ACE_player) exitWith {}; if (_caller != ACE_player) exitWith {};
systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg]; systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg];
diag_log text format ["[ACE_Disarming] %1 - eventCallerFinish: %2", ACE_time, _this]; ACE_LOGINFO_2("%1 - eventCallerFinish: %2",ACE_time,_this);

View File

@ -22,6 +22,6 @@
params ["_caller", "_target", "_errorMsg"]; params ["_caller", "_target", "_errorMsg"];
if (_errorMsg != "") then { if (_errorMsg != "") then {
diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", ACE_time, _this]; ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this);
["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent);
}; };

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Disarming"> <Package name="Disarming">
<Key ID="STR_ACE_Disarming_OpenInventory"> <Key ID="STR_ACE_Disarming_OpenInventory">
@ -14,4 +14,4 @@
<Portuguese>Abrir inventário</Portuguese> <Portuguese>Abrir inventário</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Disposable"> <Package name="Disposable">
<Key ID="STR_ACE_Disposable_UsedTube"> <Key ID="STR_ACE_Disposable_UsedTube">

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Dragging"> <Package name="Dragging">
<Key ID="STR_ACE_Dragging_Drag"> <Key ID="STR_ACE_Dragging_Drag">
@ -50,4 +50,4 @@
<Russian>Нести</Russian> <Russian>Нести</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -29,7 +29,7 @@ if (isServer) then {
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);
}; };
if !(hasInterface) exitWith {}; if (!hasInterface) exitWith {};
GVAR(PlacedCount) = 0; GVAR(PlacedCount) = 0;
GVAR(Setup) = objNull; GVAR(Setup) = objNull;

View File

@ -23,4 +23,4 @@ params ["_logic"];
[_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule); [_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule);
[_logic, QGVAR(ExplodeOnDefuse),"ExplodeOnDefuse"] call EFUNC(Common,readSettingFromModule); [_logic, QGVAR(ExplodeOnDefuse),"ExplodeOnDefuse"] call EFUNC(Common,readSettingFromModule);
diag_log text "[ACE]: Explosive Module Initialized."; ACE_LOGINFO("Explosive Module Initialized.");

View File

@ -36,7 +36,7 @@ if (!isNull _setupPlaceholderObject) then {
}; };
if (isNil "_triggerConfig") exitWith { if (isNil "_triggerConfig") exitWith {
diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this]; ACE_LOGERROR_1("Config not passed to PlaceExplosive: %1",_this);
objNull objNull
}; };
@ -44,7 +44,7 @@ _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Trigge
_triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig; _triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig;
if (isNil "_triggerConfig") exitWith { if (isNil "_triggerConfig") exitWith {
diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this]; ACE_LOGERROR_1("Config not found in PlaceExplosive: %1",_this);
objNull objNull
}; };

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Explosives"> <Package name="Explosives">
<Key ID="STR_ACE_Explosives_Menu"> <Key ID="STR_ACE_Explosives_Menu">
@ -76,7 +76,10 @@
<Key ID="STR_ACE_Explosives_BlockedAction"> <Key ID="STR_ACE_Explosives_BlockedAction">
<English>Blocked</English> <English>Blocked</English>
<Spanish>Obstruido</Spanish> <Spanish>Obstruido</Spanish>
<Portuguese>Bloqueado</Portuguese>
<Russian>Заблокировано</Russian> <Russian>Заблокировано</Russian>
<Czech>Blokováno</Czech>
<Polish>Zablokowany</Polish>
</Key> </Key>
<Key ID="STR_ACE_Explosives_CancelAction"> <Key ID="STR_ACE_Explosives_CancelAction">
<English>Cancel</English> <English>Cancel</English>
@ -529,6 +532,7 @@
<German>Sprengstoffsystem</German> <German>Sprengstoffsystem</German>
<Czech>Systém výbušnin</Czech> <Czech>Systém výbušnin</Czech>
<Portuguese>Sistema de explosivos</Portuguese> <Portuguese>Sistema de explosivos</Portuguese>
<French>Module explosifs</French>
<Hungarian>Robbanóanyag-rendszer</Hungarian> <Hungarian>Robbanóanyag-rendszer</Hungarian>
<Russian>Взрывные устройства</Russian> <Russian>Взрывные устройства</Russian>
</Key> </Key>
@ -539,6 +543,7 @@
<German>Benötigt Sprengstoffexperten?</German> <German>Benötigt Sprengstoffexperten?</German>
<Czech>Vyžadovat specialistu?</Czech> <Czech>Vyžadovat specialistu?</Czech>
<Portuguese>Requer especialista?</Portuguese> <Portuguese>Requer especialista?</Portuguese>
<French>Requiert un spécialiste?</French>
<Hungarian>Specialisták igénylése?</Hungarian> <Hungarian>Specialisták igénylése?</Hungarian>
<Russian>Требуется специалист?</Russian> <Russian>Требуется специалист?</Russian>
</Key> </Key>
@ -549,6 +554,7 @@
<German>Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein</German> <German>Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein</German>
<Czech>Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne</Czech> <Czech>Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne</Czech>
<Portuguese>Requer especialista em explosivos para desativar explosivos? Padrão: Não</Portuguese> <Portuguese>Requer especialista em explosivos para desativar explosivos? Padrão: Não</Portuguese>
<French>Le désarmoçage d'explosif requiert un spécialiste? Défaut: non</French>
<Hungarian>Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem</Hungarian> <Hungarian>Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem</Hungarian>
<Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian> <Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian>
</Key> </Key>
@ -559,6 +565,7 @@
<German>Bestrafe Nicht-Sprengstoffexperten?</German> <German>Bestrafe Nicht-Sprengstoffexperten?</German>
<Czech>Potrestat, pokud není specialista?</Czech> <Czech>Potrestat, pokud není specialista?</Czech>
<Portuguese>Punir não especialistas?</Portuguese> <Portuguese>Punir não especialistas?</Portuguese>
<French>Punir les non-spécialistes?</French>
<Hungarian>Nem-specialisták büntetése?</Hungarian> <Hungarian>Nem-specialisták büntetése?</Hungarian>
<Russian>Штраф не-специалистам?</Russian> <Russian>Штраф не-специалистам?</Russian>
</Key> </Key>
@ -569,6 +576,7 @@
<German>Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja</German> <German>Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja</German>
<Czech>Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano</Czech> <Czech>Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano</Czech>
<Portuguese>Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim</Portuguese> <Portuguese>Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim</Portuguese>
<French>Augmenter le temps nécessaire au désarmoçage pour les non-spécialistes? Défaut: oui</French>
<Hungarian>Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen</Hungarian> <Hungarian>Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen</Hungarian>
<Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian> <Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian>
</Key> </Key>
@ -578,6 +586,7 @@
<Polish>Eksplozja przy rozbrajaniu?</Polish> <Polish>Eksplozja przy rozbrajaniu?</Polish>
<Czech>Explodovat při zneškodňování?</Czech> <Czech>Explodovat při zneškodňování?</Czech>
<Spanish>Explotar al desactivar?</Spanish> <Spanish>Explotar al desactivar?</Spanish>
<French>Explosion si désamorçage?</French>
<Hungarian>Robbanás hatástalanításkor?</Hungarian> <Hungarian>Robbanás hatástalanításkor?</Hungarian>
<Russian>Взрыв при разминир.?</Russian> <Russian>Взрыв при разминир.?</Russian>
</Key> </Key>
@ -587,6 +596,7 @@
<Polish>Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak</Polish> <Polish>Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak</Polish>
<Czech>Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano</Czech> <Czech>Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano</Czech>
<Spanish>¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí</Spanish> <Spanish>¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí</Spanish>
<French>Permet à certains explosifs d'exploser au désamorçage? Défaut: oui</French>
<Hungarian>Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen</Hungarian> <Hungarian>Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen</Hungarian>
<Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian> <Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian>
</Key> </Key>
@ -596,8 +606,9 @@
<German>Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern.</German> <German>Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern.</German>
<Czech>Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin.</Czech> <Czech>Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin.</Czech>
<Portuguese>Este módulo permite personalizar as definições relacionadas a explosivos.</Portuguese> <Portuguese>Este módulo permite personalizar as definições relacionadas a explosivos.</Portuguese>
<French>Ce module ajuste les options relative aux explosifs</French>
<Hungarian>Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza.</Hungarian> <Hungarian>Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza.</Hungarian>
<Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian> <Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="FCS"> <Package name="FCS">
<Key ID="STR_ACE_FCS_LaseTarget"> <Key ID="STR_ACE_FCS_LaseTarget">
@ -74,4 +74,4 @@
<Russian>СУО обнулен.</Russian> <Russian>СУО обнулен.</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -4,62 +4,82 @@
<Key ID="STR_ACE_finger_indicatorForSelf_name"> <Key ID="STR_ACE_finger_indicatorForSelf_name">
<English>Show pointing indicator to self</English> <English>Show pointing indicator to self</English>
<Russian>Индикатор пальца для показывающего</Russian> <Russian>Индикатор пальца для показывающего</Russian>
<French>Afficher un indicateur de pointage pour soit même</French>
<Polish>Pokaż indykator wskazywania palcem dla siebie</Polish> <Polish>Pokaż indykator wskazywania palcem dla siebie</Polish>
<Hungarian>Saját mutatási indikátor megjelenítése</Hungarian> <Hungarian>Saját mutatási indikátor megjelenítése</Hungarian>
<Portuguese>Mostrar indicador para si mesmo</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorForSelf_description"> <Key ID="STR_ACE_finger_indicatorForSelf_description">
<English>Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator</English> <English>Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator</English>
<Russian>Отображать индикатор указания пальцем для показывающего игрока. Эта настройка не влияет на то, будут ли другие игроки видеть индикатор</Russian> <Russian>Отображать индикатор указания пальцем для показывающего игрока. Эта настройка не влияет на то, будут ли другие игроки видеть индикатор</Russian>
<French>Affiche l'indicateur pour le joueur qui pointe. Cette option n'affecte pas les autres joueurs</French>
<Polish> Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie.</Polish> <Polish> Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie.</Polish>
<Hungarian>Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort.</Hungarian> <Hungarian>Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort.</Hungarian>
<Portuguese>Renderizar o indicador para o jogador que está apontando. Esta opção não afeta se os outros jogadores verão ou não o indicador</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorColor_name"> <Key ID="STR_ACE_finger_indicatorColor_name">
<English>Pointing indicator</English> <English>Pointing indicator</English>
<Russian>Индикатор указания пальцем</Russian> <Russian>Индикатор указания пальцем</Russian>
<French>Indicateur de pointage</French>
<Polish>Indykator palca</Polish> <Polish>Indykator palca</Polish>
<Hungarian>Ujj-indikátor</Hungarian> <Hungarian>Ujj-indikátor</Hungarian>
<Portuguese>Indicador de apontamento</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_finger_indicatorColor_description"> <Key ID="STR_ACE_finger_indicatorColor_description">
<English>Color of the pointing indicator circle</English> <English>Color of the pointing indicator circle</English>
<Russian>Цвет индикатора указания пальцем</Russian> <Russian>Цвет индикатора указания пальцем</Russian>
<French>Couleur de l'indicateur</French>
<Polish>Kolor okręgu wyświetlanego przy wskazywaniu palcem</Polish> <Polish>Kolor okręgu wyświetlanego przy wskazywaniu palcem</Polish>
<Hungarian>Mutatási indikátor körének színe</Hungarian> <Hungarian>Mutatási indikátor körének színe</Hungarian>
<Portuguese>Cor do círculo de indicação</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_finger_keyComb"> <Key ID="STR_ACE_finger_keyComb">
<English>Action "point a finger at"</English> <English>Action "point a finger at"</English>
<Russian>Действие "показать пальцем на"</Russian> <Russian>Действие "показать пальцем на"</Russian>
<French>Action 'Pointer le doigt à"</French>
<Polish>Akcja "wskaż palcem"</Polish> <Polish>Akcja "wskaż palcem"</Polish>
<Hungarian>Cselekvés "ujj rámutatása"</Hungarian> <Hungarian>Cselekvés "ujj rámutatása"</Hungarian>
<Portuguese>Ação "Apontar um dedo para"</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_finger_keyComb_description"> <Key ID="STR_ACE_finger_keyComb_description">
<English>Points, and shows a virtual marker of where you are looking to nearby units. Can be held down.</English> <English>Points, and shows a virtual marker of where you are looking to nearby units. Can be held down.</English>
<French>Montre du doigt et affiche un marqueur virtuel de la direction pointée aux uinités proches. Peut être maintenu</French>
<Polish>Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany.</Polish> <Polish>Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany.</Polish>
<Hungarian>Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható.</Hungarian> <Hungarian>Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható.</Hungarian>
<Portuguese>Aponta e mostra um marcador virtual para onde você está olhando para unidades próximas. Pode ser utilizado para baixo.</Portuguese>
<Russian>Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать.</Russian> <Russian>Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать.</Russian>
</Key> </Key>
<Key ID="STR_ACE_finger_moduleSettings_displayName"> <Key ID="STR_ACE_finger_moduleSettings_displayName">
<English>Pointing Settings</English> <English>Pointing Settings</English>
<French>Option "Montrer du doigt"</French>
<Polish>Ustawienia wskazywania palcem</Polish> <Polish>Ustawienia wskazywania palcem</Polish>
<Hungarian>Ujj beállításai</Hungarian> <Hungarian>Ujj beállításai</Hungarian>
<Portuguese>Preferências de apontamento</Portuguese>
<Russian>Настройки указания пальцем</Russian> <Russian>Настройки указания пальцем</Russian>
</Key> </Key>
<Key ID="STR_ACE_finger_enabled_displayName"> <Key ID="STR_ACE_finger_enabled_displayName">
<English>Pointing Enabled</English> <English>Pointing Enabled</English>
<French>Activer "Montrer du doigt"</French>
<Polish>Aktywuj wskazywanie</Polish> <Polish>Aktywuj wskazywanie</Polish>
<Hungarian>Mutatás engedélyezése</Hungarian> <Hungarian>Mutatás engedélyezése</Hungarian>
<Portuguese>Apontamento ativado</Portuguese>
<Russian>Указание пальцем включено</Russian> <Russian>Указание пальцем включено</Russian>
</Key> </Key>
<Key ID="STR_ACE_finger_maxRange_displayName"> <Key ID="STR_ACE_finger_maxRange_displayName">
<English>Pointing Max Range</English> <English>Pointing Max Range</English>
<French>Distance maximale du pointage</French>
<Polish>Maks. zasięg wskazywania</Polish> <Polish>Maks. zasięg wskazywania</Polish>
<Hungarian>Ujj maximum hatótávja</Hungarian> <Hungarian>Ujj maximum hatótávja</Hungarian>
<Portuguese>Distância máxima do apontamento</Portuguese>
<Russian>Макс. дальность</Russian> <Russian>Макс. дальность</Russian>
</Key> </Key>
<Key ID="STR_ACE_finger_maxRange_description"> <Key ID="STR_ACE_finger_maxRange_description">
<English>Max range between players to show the pointing indicator [default: 4 meters]</English> <English>Max range between players to show the pointing indicator [default: 4 meters]</English>
<French>Distance maximale entre joueurs pour afficher l'indicateur (défaut: 4 mètres)</French>
<Polish>Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] </Polish> <Polish>Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] </Polish>
<Hungarian>A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter]</Hungarian> <Hungarian>A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter]</Hungarian>
<Portuguese>Distância máxima entre jogadores para mostrar o apontamento [padrão: 4 metros]</Portuguese>
<Russian>Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра]</Russian> <Russian>Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра]</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,7 +1,7 @@
#include "script_component.hpp" #include "script_component.hpp"
// Exit on Headless as well // Exit on Headless as well
if !(hasInterface) exitWith {}; if (!hasInterface) exitWith {};
LOG(MSG_INIT); LOG(MSG_INIT);

View File

@ -4,32 +4,44 @@
<Key ID="STR_ACE_Flashlights_MX991_DisplayName"> <Key ID="STR_ACE_Flashlights_MX991_DisplayName">
<English>Fulton MX-991</English> <English>Fulton MX-991</English>
<Polish>Fulton MX-991</Polish> <Polish>Fulton MX-991</Polish>
<Portuguese>Fulton MX-991</Portuguese>
<Russian>Fulton MX-991</Russian> <Russian>Fulton MX-991</Russian>
<Czech>Fulton MX-991</Czech>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_MX991_Description"> <Key ID="STR_ACE_Flashlights_MX991_Description">
<English>Flashlight with red filter. For use on map.</English> <English>Flashlight with red filter. For use on map.</English>
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish> <Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian> <Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_XL50_DisplayName"> <Key ID="STR_ACE_Flashlights_XL50_DisplayName">
<English>Maglite XL50</English> <English>Maglite XL50</English>
<Polish>Maglite XL50</Polish> <Polish>Maglite XL50</Polish>
<Portuguese>Maglite XL50</Portuguese>
<Russian>Maglite XL50</Russian> <Russian>Maglite XL50</Russian>
<Czech>Maglite XL50</Czech>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_XL50_Description"> <Key ID="STR_ACE_Flashlights_XL50_Description">
<English>White mini flashlight. For use on map.</English> <English>White mini flashlight. For use on map.</English>
<Polish>Mini latarka. Światło białe. Używana do podświetlania mapy.</Polish> <Polish>Mini latarka. Światło białe. Używana do podświetlania mapy.</Polish>
<Portuguese>Mini lanterna branca. Para uso no mapa.</Portuguese>
<Russian>Небольшой фонарик белого света. Для использования на карте.</Russian> <Russian>Небольшой фонарик белого света. Для использования на карте.</Russian>
<Czech>Bílá mini svítilna. Pro nahlédnutí do mapy.</Czech>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_KSF1_DisplayName"> <Key ID="STR_ACE_Flashlights_KSF1_DisplayName">
<English>KSF-1</English> <English>KSF-1</English>
<Polish>KSF-1</Polish> <Polish>KSF-1</Polish>
<Portuguese>KSF-1</Portuguese>
<Russian>KSF-1</Russian> <Russian>KSF-1</Russian>
<Czech>KSF-1</Czech>
</Key> </Key>
<Key ID="STR_ACE_Flashlights_KSF1_Description"> <Key ID="STR_ACE_Flashlights_KSF1_Description">
<English>Flashlight with red filter. For use on map.</English> <English>Flashlight with red filter. For use on map.</English>
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish> <Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian> <Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,6 +1,6 @@
//fnc_doSpall.sqf //fnc_doSpall.sqf
#include "script_component.hpp" #include "script_component.hpp"
// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; // ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA";
private ["_hitData", "_initialData", "_hpData", "_object", "_foundObjects", "_index", "_foundObjecsts", "_roundType", "_round", "_caliber", "_explosive", "_idh", "_alive", "_exit", "_vm", "_velocity", "_oldVelocity", "_curVelocity", "_diff", "_polar", "_unitDir", "_spallPos", "_pos1", "_i", "_pos2", "_blah", "_data", "_spallPolar", "_warn", "_c", "_m", "_k", "_gC", "_fragPower", "_fragTypes", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", "_fragType", "_fragment", "_pos"]; private ["_hitData", "_initialData", "_hpData", "_object", "_foundObjects", "_index", "_foundObjecsts", "_roundType", "_round", "_caliber", "_explosive", "_idh", "_alive", "_exit", "_vm", "_velocity", "_oldVelocity", "_curVelocity", "_diff", "_polar", "_unitDir", "_spallPos", "_pos1", "_i", "_pos2", "_blah", "_data", "_spallPolar", "_warn", "_c", "_m", "_k", "_gC", "_fragPower", "_fragTypes", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", "_fragType", "_fragment", "_pos"];
@ -86,7 +86,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_gC == 0) then { _gC = 2440; _warn = true;};
if(_warn) then { if(_warn) then {
diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]; //TODO: turn this off when we get closer to release ACE_LOGWARNING_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_roundType); //TODO: turn this off when we get closer to release
}; };
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC;

View File

@ -67,7 +67,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C");
if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_gC == 0) then { _gC = 2440; _warn = true;};
if(_warn) then { if(_warn) then {
diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]; //TODO: turn this off when we get closer to release ACE_LOGWARNING_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_shellType); //TODO: turn this off when we get closer to release
}; };
_fragPower = (((_m/_c)+_k)^-(1/2))*_gC; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC;
@ -187,9 +187,9 @@ if(_isArmed && (count _objects) > 0) then {
_sectorOffset = 360 * (_i - 1) / (_randomCount max 1); _sectorOffset = 360 * (_i - 1) / (_randomCount max 1);
_randomDir = random(_sectorSize); _randomDir = random(_sectorSize);
_vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))]; _vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))];
_fp = (_fragPower-(random (_fragPowerRandom))); _fp = (_fragPower-(random (_fragPowerRandom)));
_vel = _vec vectorMultiply _fp; _vel = _vec vectorMultiply _fp;
_fragType = round (random ((count _fragTypes)-1)); _fragType = round (random ((count _fragTypes)-1));
@ -197,7 +197,7 @@ if(_isArmed && (count _objects) > 0) then {
_fragObj setPosASL _lastPos; _fragObj setPosASL _lastPos;
_fragObj setVectorDir _vec; _fragObj setVectorDir _vec;
_fragObj setVelocity _vel; _fragObj setVelocity _vel;
if(GVAR(traceFrags)) then { if(GVAR(traceFrags)) then {
GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1; GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1;
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack); [ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
@ -205,7 +205,7 @@ if(_isArmed && (count _objects) > 0) then {
_fragCount = _fragCount + 1; _fragCount = _fragCount + 1;
}; };
}; };
}; };
// #ifdef DEBUG_MODE_FULL // #ifdef DEBUG_MODE_FULL
// ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)]; // ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Frag"> <Package name="Frag">
<Key ID="STR_ACE_Frag_EnableFrag"> <Key ID="STR_ACE_Frag_EnableFrag">
@ -8,6 +8,7 @@
<German>Splittersimulation</German> <German>Splittersimulation</German>
<Czech>Simulace fragmentace</Czech> <Czech>Simulace fragmentace</Czech>
<Portuguese>Simulação de fragmentação</Portuguese> <Portuguese>Simulação de fragmentação</Portuguese>
<French>Simulation de la fragmentation</French>
<Hungarian>Repesz-szimuláció</Hungarian> <Hungarian>Repesz-szimuláció</Hungarian>
<Russian>Симуляция осколков</Russian> <Russian>Симуляция осколков</Russian>
</Key> </Key>
@ -18,6 +19,7 @@
<German>Aktiviere die ACE-Splittersimulation</German> <German>Aktiviere die ACE-Splittersimulation</German>
<Czech>Povolit ACE simulaci fragmentace</Czech> <Czech>Povolit ACE simulaci fragmentace</Czech>
<Portuguese>Ativa a simulação de fragmentação do ACE</Portuguese> <Portuguese>Ativa a simulação de fragmentação do ACE</Portuguese>
<French>Active la simulation ACE de la fragmentation</French>
<Hungarian>Az ACE repesz-szimuláció engedélyezése</Hungarian> <Hungarian>Az ACE repesz-szimuláció engedélyezése</Hungarian>
<Russian>Включить симуляцию осколков ACE</Russian> <Russian>Включить симуляцию осколков ACE</Russian>
</Key> </Key>
@ -28,6 +30,7 @@
<German>Explosionssimulation</German> <German>Explosionssimulation</German>
<Czech>Simulace úlomků</Czech> <Czech>Simulace úlomků</Czech>
<Portuguese>Simulação de estilhaços</Portuguese> <Portuguese>Simulação de estilhaços</Portuguese>
<French>Simulation d'éclat</French>
<Hungarian>Pattogzás-szimuláció</Hungarian> <Hungarian>Pattogzás-szimuláció</Hungarian>
<Russian>Симуляция обломков</Russian> <Russian>Симуляция обломков</Russian>
</Key> </Key>
@ -38,6 +41,7 @@
<German>Aktiviere ACE-Explosionssimulation</German> <German>Aktiviere ACE-Explosionssimulation</German>
<Czech>Povolit ACE simulaci úlomků</Czech> <Czech>Povolit ACE simulaci úlomků</Czech>
<Portuguese>Ativa a simulação de estilhaços do ACE</Portuguese> <Portuguese>Ativa a simulação de estilhaços do ACE</Portuguese>
<French>Active la simulation d'éclat ACE</French>
<Hungarian>Az ACE pattogzás-szimuláció engedélyezése</Hungarian> <Hungarian>Az ACE pattogzás-szimuláció engedélyezése</Hungarian>
<Russian>Включить симуляцию обломков ACE</Russian> <Russian>Включить симуляцию обломков ACE</Russian>
</Key> </Key>
@ -48,6 +52,7 @@
<German>Maximalzahl der verfolgten Projektile</German> <German>Maximalzahl der verfolgten Projektile</German>
<Czech>Maximální počet sledovaných projektilů</Czech> <Czech>Maximální počet sledovaných projektilů</Czech>
<Portuguese>Máximo de projéteis rastreados</Portuguese> <Portuguese>Máximo de projéteis rastreados</Portuguese>
<French>Nombre maximum de projectile suivis</French>
<Hungarian>Maximum követett repeszek</Hungarian> <Hungarian>Maximum követett repeszek</Hungarian>
<Russian>Макс. количество отслеживаемых снарядов</Russian> <Russian>Макс. количество отслеживаемых снарядов</Russian>
</Key> </Key>
@ -58,6 +63,7 @@
<German>Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (&gt;200 Objekte gleichzeitig in der Luft)</German> <German>Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (&gt;200 Objekte gleichzeitig in der Luft)</German>
<Czech>Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( &gt;200 nábojů najednou ve vzduchu)</Czech> <Czech>Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( &gt;200 nábojů najednou ve vzduchu)</Czech>
<Portuguese>Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (&gt; 200 projéteis no ar ao mesmo tempo)</Portuguese> <Portuguese>Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (&gt; 200 projéteis no ar ao mesmo tempo)</Portuguese>
<French>Cette option controle le nombre maximum de projectile et d'éclat résultant de la fragmentation que le système suivra à un moment T. Si plus de projectiles sont générés, ils ne seront pas pris en compte. Baisser cette option si vous ne voulez pas de baisse de FPS en cas d'un nombre important de projectiles (&gt;200 éclats en même temps)</French>
<Hungarian>Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre)</Hungarian> <Hungarian>Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre)</Hungarian>
<Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (&gt; 200 одновременно летящих снарядов)</Russian> <Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (&gt; 200 одновременно летящих снарядов)</Russian>
</Key> </Key>
@ -68,6 +74,7 @@
<Polish>Maks. liczba pocisków na klatkę</Polish> <Polish>Maks. liczba pocisków na klatkę</Polish>
<Czech>Maximální počet projektilů ze jeden snímek</Czech> <Czech>Maximální počet projektilů ze jeden snímek</Czech>
<Portuguese>Projéteis máximos por quadro</Portuguese> <Portuguese>Projéteis máximos por quadro</Portuguese>
<French>Nombre maximal de projectile par image</French>
<Hungarian>Maximum repesz/képkocka</Hungarian> <Hungarian>Maximum repesz/képkocka</Hungarian>
<Russian>Макс. количество снарядов за кадр</Russian> <Russian>Макс. количество снарядов за кадр</Russian>
</Key> </Key>
@ -78,6 +85,7 @@
<Spanish>El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto.</Spanish> <Spanish>El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto.</Spanish>
<Czech>Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více.</Czech> <Czech>Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více.</Czech>
<Portuguese>O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais.</Portuguese> <Portuguese>O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais.</Portuguese>
<French>Le nombre d'éclat à calculer dans chaque images. Ceci permet de diffuser l'impact sur les FPS dans de multiples images, le limitant d'autant plus.</French>
<Hungarian>A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát.</Hungarian> <Hungarian>A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát.</Hungarian>
<Russian>Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS.</Russian> <Russian>Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS.</Russian>
</Key> </Key>
@ -88,6 +96,7 @@
<Czech>(Pouze SP) Debug sledování Frag/Úlomků</Czech> <Czech>(Pouze SP) Debug sledování Frag/Úlomků</Czech>
<German>(nur SP) Splitter-/Explosions-Debug-Verfolgung</German> <German>(nur SP) Splitter-/Explosions-Debug-Verfolgung</German>
<Portuguese>(Somente SP) Depuração de fragmentação e estilhaços traçantes</Portuguese> <Portuguese>(Somente SP) Depuração de fragmentação e estilhaços traçantes</Portuguese>
<French>(SP uniquement) Fragmentation/éclat debug</French>
<Hungarian>(Csak SP) Repesz/Pattogzás debug követés</Hungarian> <Hungarian>(Csak SP) Repesz/Pattogzás debug követés</Hungarian>
<Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian> <Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian>
</Key> </Key>
@ -98,6 +107,7 @@
<German>(nur SP) Splitter-/Explosions-Debugging</German> <German>(nur SP) Splitter-/Explosions-Debugging</German>
<Czech>(Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče.</Czech> <Czech>(Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče.</Czech>
<Portuguese>(Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP.</Portuguese> <Portuguese>(Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP.</Portuguese>
<French>(SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement</French>
<Hungarian>(Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt.</Hungarian> <Hungarian>(Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt.</Hungarian>
<Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian> <Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian>
</Key> </Key>

View File

@ -1,6 +1,6 @@
#include "script_component.hpp" #include "script_component.hpp"
if !(hasInterface) exitWith {}; if (!hasInterface) exitWith {};
// Setup ppEffect // Setup ppEffect
GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215]; GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215];

View File

@ -14,7 +14,7 @@
#include "script_component.hpp" #include "script_component.hpp"
private ["_interval", "_player", "_newVel", "_accel", "_currentGForce", "_average", "_sum", "_classCoef", "_suitCoef", "_gBlackOut", "_gRedOut", "_g", "_gBO", "_coef", "_strength"]; private ["_interval", "_player", "_newVel", "_accel", "_currentGForce", "_average", "_sum", "_classCoef", "_suitCoef", "_gBlackOut", "_gRedOut", "_g", "_gBO", "_coef", "_strength"];
EXPLODE_2_PVT(_this,_params,_pfhId); EXPLODE_2_PVT(_this,_params,_pfhId);
_interval = ACE_time - GVAR(lastUpdateTime); _interval = ACE_time - GVAR(lastUpdateTime);

View File

@ -14,6 +14,7 @@
* Public: Yes * Public: Yes
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (call FUNC(ExternalCamera)) exitWith {}; if (call FUNC(ExternalCamera)) exitWith {};
if ([ace_player] call FUNC(isGogglesVisible)) exitWith { if ([ace_player] call FUNC(isGogglesVisible)) exitWith {
100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false]; 100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false];

View File

@ -16,6 +16,7 @@
* Public: No * Public: No
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private["_postProcessColour", "_postProcessTintAmount", "_glassesClassname", "_glassImagePath"]; private["_postProcessColour", "_postProcessTintAmount", "_glassesClassname", "_glassImagePath"];
_glassesClassname = _this select 0; _glassesClassname = _this select 0;

View File

@ -18,7 +18,7 @@
if (!alive ace_player) exitWith {}; if (!alive ace_player) exitWith {};
if (true) then { if (true) then {
// Detect if curator interface is open and disable effects // Detect if curator interface is open and disable effects
if (!isNull(findDisplay 312)) exitWith { if !(isNull curatorCamera) exitWith {
if (GVAR(EffectsActive)) then { if (GVAR(EffectsActive)) then {
call FUNC(removeGlassesEffect); call FUNC(removeGlassesEffect);
}; };

View File

@ -15,17 +15,14 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
PARAMS_1(_unit); params ["_unit"];
private ["_currentGlasses", "_result", "_position", "_visible"]; private ["_currentGlasses", "_result", "_position", "_visible"];
_currentGlasses = goggles _unit; _currentGlasses = goggles _unit;
_result = false; _result = false;
if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")};
if (_currentGlasses != "") then { if (_currentGlasses != "") then {
_position =(getPosASLW _unit); _position = getPosASLW _unit;
if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith { if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith {
_result = ([_currentGlasses] call FUNC(isDivingGoggles)); _result = ([_currentGlasses] call FUNC(isDivingGoggles));
}; };

View File

@ -28,66 +28,67 @@ class CfgAmmo {
}; };
class ACE_F_Hand_White: F_20mm_White { class ACE_F_Hand_White: F_20mm_White {
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
timeToLive = 60; timeToLive = 60;
}; };
class F_20mm_Red; class F_20mm_Red;
class ACE_F_Hand_Red: F_20mm_Red { class ACE_F_Hand_Red: F_20mm_Red {
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
timeToLive = 60; timeToLive = 60;
}; };
class F_20mm_Green; class F_20mm_Green;
class ACE_F_Hand_Green: F_20mm_Green { class ACE_F_Hand_Green: F_20mm_Green {
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
timeToLive = 60; timeToLive = 60;
}; };
class F_20mm_Yellow; class F_20mm_Yellow;
class ACE_F_Hand_Yellow: F_20mm_Yellow { class ACE_F_Hand_Yellow: F_20mm_Yellow {
grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5};
soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5};
SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100};
SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100};
SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100};
SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70};
SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70};
timeToLive = 60; timeToLive = 60;
}; };
class SmokeShell; class SmokeShell;
class ACE_G_Handflare_White: SmokeShell {
GVAR(flare) = 1;
GVAR(color)[] = {0.5,0.5,0.5,0.5};
model = "\A3\weapons_f\ammo\flare_white";
dangerRadiusHit = -1;
suppressionRadiusHit = -1;
typicalSpeed = 22;
cost = 100;
deflecting = 30;
explosionTime = 3;
timeToLive = 60;
grenadeFireSound[] = {};
grenadeBurningSound[] = {};
aiAmmoUsageFlags = "4 + 2";
smokeColor[] = {0,0,0,0};
effectsSmoke = "ACE_HandFlareEffect";
whistleDist = 0;
};
class ACE_G_Handflare_Red: ACE_G_Handflare_White {
GVAR(color)[] = {0.5,0.25,0.25,0.5};
model = "\A3\weapons_f\ammo\flare_red";
};
class ACE_G_Handflare_Green: ACE_G_Handflare_White {
GVAR(color)[] = {0.25,0.5,0.25,0.5};
model = "\A3\weapons_f\ammo\flare_green";
};
class ACE_G_Handflare_Yellow: ACE_G_Handflare_White {
GVAR(color)[] = {0.5,0.5,0.25,0.5};
model = "\A3\weapons_f\ammo\flare_yellow";
};
class ACE_G_M84: SmokeShell { class ACE_G_M84: SmokeShell {
GVAR(flashbang) = 1;
model = PATHTOF(models\ACE_m84_thrown.p3d); model = PATHTOF(models\ACE_m84_thrown.p3d);
dangerRadiusHit = -1; dangerRadiusHit = -1;
suppressionRadiusHit = 20; suppressionRadiusHit = 20;
typicalSpeed = 22; typicalSpeed = 22;
cost = 40; cost = 40;
explosive = 1E-7;
deflecting = 15; deflecting = 15;
explosionTime = 2.3;
timeToLive = 6; timeToLive = 6;
fuseDistance = 2.3;
grenadeFireSound[] = {}; grenadeFireSound[] = {};
grenadeBurningSound[] = {}; grenadeBurningSound[] = {};
aiAmmoUsageFlags = "0"; aiAmmoUsageFlags = "0";

View File

@ -1,3 +1,4 @@
class CfgMagazines { class CfgMagazines {
class HandGrenade; class HandGrenade;
class ACE_HandFlare_Base: HandGrenade { class ACE_HandFlare_Base: HandGrenade {
@ -8,55 +9,60 @@ class CfgMagazines {
mass = 4; mass = 4;
initSpeed = 22; initSpeed = 22;
}; };
class ACE_HandFlare_White: ACE_HandFlare_Base { class ACE_HandFlare_White: ACE_HandFlare_Base {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
scope = 2; scope = 2;
ammo = "ACE_F_Hand_White";
displayname = CSTRING(M127A1_White_Name); displayname = CSTRING(M127A1_White_Name);
descriptionshort = CSTRING(M127A1_White_Description); descriptionshort = CSTRING(M127A1_White_Description);
displayNameShort = CSTRING(M127A1_White_NameShort); displayNameShort = CSTRING(M127A1_White_NameShort);
model = "\A3\weapons_f\ammo\flare_white"; model = "\A3\weapons_f\ammo\flare_white";
picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa";
ammo = "ACE_G_Handflare_White";
}; };
class ACE_HandFlare_Red: ACE_HandFlare_Base { class ACE_HandFlare_Red: ACE_HandFlare_Base {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
scope = 2; scope = 2;
ammo = "ACE_F_Hand_Red";
displayname = CSTRING(M127A1_Red_Name); displayname = CSTRING(M127A1_Red_Name);
descriptionshort = CSTRING(M127A1_Red_Description); descriptionshort = CSTRING(M127A1_Red_Description);
displayNameShort = CSTRING(M127A1_Red_NameShort); displayNameShort = CSTRING(M127A1_Red_NameShort);
model = "\A3\weapons_f\ammo\flare_red"; model = "\A3\weapons_f\ammo\flare_red";
picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa";
ammo = "ACE_G_Handflare_Red";
}; };
class ACE_HandFlare_Green: ACE_HandFlare_Base { class ACE_HandFlare_Green: ACE_HandFlare_Base {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
scope = 2; scope = 2;
ammo = "ACE_F_Hand_Green";
displayname = CSTRING(M127A1_Green_Name); displayname = CSTRING(M127A1_Green_Name);
descriptionshort = CSTRING(M127A1_Green_Description); descriptionshort = CSTRING(M127A1_Green_Description);
displayNameShort = CSTRING(M127A1_Green_NameShort); displayNameShort = CSTRING(M127A1_Green_NameShort);
model = "\A3\weapons_f\ammo\flare_green"; model = "\A3\weapons_f\ammo\flare_green";
picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa";
ammo = "ACE_G_Handflare_Green";
}; };
class ACE_HandFlare_Yellow: ACE_HandFlare_Base { class ACE_HandFlare_Yellow: ACE_HandFlare_Base {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
scope = 2; scope = 2;
ammo = "ACE_F_Hand_Yellow";
displayname = CSTRING(M127A1_Yellow_Name); displayname = CSTRING(M127A1_Yellow_Name);
descriptionshort = CSTRING(M127A1_Yellow_Description); descriptionshort = CSTRING(M127A1_Yellow_Description);
displayNameShort = CSTRING(M127A1_Yellow_NameShort); displayNameShort = CSTRING(M127A1_Yellow_NameShort);
model = "\A3\weapons_f\ammo\flare_yellow"; model = "\A3\weapons_f\ammo\flare_yellow";
picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa";
ammo = "ACE_G_Handflare_Yellow";
}; };
class ACE_M84: HandGrenade { class ACE_M84: HandGrenade {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
ammo = "ACE_G_M84";
displayname = CSTRING(M84_Name); displayname = CSTRING(M84_Name);
descriptionshort = CSTRING(M84_Description); descriptionshort = CSTRING(M84_Description);
displayNameShort = "M84"; displayNameShort = "M84";
mass = 4;
model = PATHTOF(models\ACE_m84.p3d); model = PATHTOF(models\ACE_m84.p3d);
picture = PATHTOF(UI\ACE_m84_x_ca.paa); picture = PATHTOF(UI\ACE_m84_x_ca.paa);
ammo = "ACE_G_M84";
mass = 4;
}; };
class 3Rnd_UGL_FlareGreen_F; class 3Rnd_UGL_FlareGreen_F;
@ -65,6 +71,7 @@ class CfgMagazines {
ammo = "F_40mm_Green"; ammo = "F_40mm_Green";
initSpeed = 120; initSpeed = 120;
}; };
class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F { class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F {
author = ECSTRING(common,ACETeam); author = ECSTRING(common,ACETeam);
ammo = "F_40mm_Red"; ammo = "F_40mm_Red";

View File

@ -2,3 +2,7 @@
class ACE_M84FlashbangEffect { class ACE_M84FlashbangEffect {
// empty // empty
}; };
class ACE_HandFlareEffect {
// empty
};

View File

@ -4,7 +4,7 @@
["flashbangExplosion", DFUNC(flashbangExplosionEH)] call EFUNC(common,addEventHandler); ["flashbangExplosion", DFUNC(flashbangExplosionEH)] call EFUNC(common,addEventHandler);
if !(hasInterface) exitWith {}; if (!hasInterface) exitWith {};
GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265]; GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265];
GVAR(flashbangPPEffectCC) ppEffectForceInNVG true; GVAR(flashbangPPEffectCC) ppEffectForceInNVG true;

View File

@ -2,6 +2,7 @@
ADDON = false; ADDON = false;
PREP(flare);
PREP(flashbangExplosionEH); PREP(flashbangExplosionEH);
PREP(flashbangThrownFuze); PREP(flashbangThrownFuze);
PREP(nextMode); PREP(nextMode);

View File

@ -0,0 +1,40 @@
/*
* Author: commy2
* Makes flare shine.
*
* Arguments:
* 0: The flare <OBJECT>
* 1: Color of flare <ARRAY>
* 2: Intensity of flare <NUMBER>
* 3: Flare lifetime <OBJECT>
*
* Return Value:
* None
*
* Example:
* [_nade, [0.5,0.5,0.5], 0.5, 60] call ace_grenades_fnc_flare
*
* Public: No
*/
#include "script_component.hpp"
params ["_projectile", "_color", "_intensity", "_timeToLive"];
private "_light";
_light = "#lightpoint" createVehicleLocal position _projectile;
_light setLightColor _color;
_light setLightAmbient _color;
_light setLightIntensity _intensity;
_light setLightBrightness 0.8;
_light setLightUseFlare true;
_light setLightFlareSize 3.0;
_light setLightFlareMaxDistance 1000;
_light setLightDayLight true;
_light lightAttachObject [_projectile, [0,0,0]];
//_light attachTo [_projectile, [0,0,0]];
[{deleteVehicle _this}, _light, _timeToLive, 1] call EFUNC(common,waitAndExecute);

View File

@ -94,7 +94,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
}, [_light], 0.1] call EFUNC(common,waitAndExecute); }, [_light], 0.1] call EFUNC(common,waitAndExecute);
// blind player // blind player
if (_strength > 0.1) then { if (_strength > 0.1 && hasInterface) then {
GVAR(flashbangPPEffectCC) ppEffectEnable true; GVAR(flashbangPPEffectCC) ppEffectEnable true;
GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]]; GVAR(flashbangPPEffectCC) ppEffectAdjust [1,1,(0.8 + _strength) min 1,[1,1,1,0],[0,0,0,1],[0,0,0,0]];
GVAR(flashbangPPEffectCC) ppEffectCommit 0.01; GVAR(flashbangPPEffectCC) ppEffectCommit 0.01;

View File

@ -21,22 +21,50 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
private ["_mode", "_fuzeTime"]; params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"];
params ["_unit", "_weapon", "", "", "", "", "_projectile"];
if (_unit != ACE_player) exitWith {};
if (_weapon != "Throw") exitWith {}; if (_weapon != "Throw") exitWith {};
// http://feedback.arma3.com/view.php?id=12340
if (isNull _projectile) then {
_projectile = nearestObject [_unit, _ammo];
};
// handle special grenades
if (local _unit) then {
if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then {
private "_fuzeTime";
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime");
[FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
};
};
if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then {
private ["_fuzeTime", "_timeToLive", "_color", "_intensity"];
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime");
_timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive");
_color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color));
_intensity = _color select 3;
_color resize 3;
[FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
};
// handle throw modes
if (_unit != ACE_player) exitWith {};
private "_mode";
_mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0];
if (_mode != 0) then { if (_mode != 0) then {
private "_velocity"; private "_velocity";
_velocity = velocity _projectile; _velocity = velocity _projectile;
switch (_mode) do { switch (_mode) do {
//high throw //high throw
case 1 : { case 1 : {
_velocity = [ _velocity = [
0.5 * (_velocity select 0), 0.5 * (_velocity select 0),
0.5 * (_velocity select 1), 0.5 * (_velocity select 1),
@ -44,24 +72,18 @@ if (_mode != 0) then {
]; ];
}; };
//precise throw //precise throw
case 2 : { case 2 : {
_velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity); _velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity);
}; };
//roll grande //roll grande
case 3 : { case 3 : {
//@todo //@todo
}; };
//drop grenade //drop grenade
case 4 : { case 4 : {
_velocity = [0, 0, 0]; _velocity = [0, 0, 0];
}; };
}; };
_projectile setVelocity _velocity; _projectile setVelocity _velocity;
}; };
if (typeOf _projectile == "ACE_G_M84") then {
_fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "fuseDistance");
// _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "explosionTime"); //@toDo pretty sure this should be explosionTime not fuseDistance
[FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute);
};

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Grenades"> <Package name="Grenades">
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode"> <Key ID="STR_ACE_Grenades_SwitchGrenadeMode">

View File

@ -20,5 +20,4 @@ if ((_logic getVariable "DisableEarRinging") != -1) then {
}; };
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
ACE_LOGINFO("Hearing Module Initialized.");
diag_log text "[ACE]: Hearing Module Initialized.";

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Hearing"> <Package name="Hearing">
<Key ID="STR_ACE_Hearing_EarPlugs_Name"> <Key ID="STR_ACE_Hearing_EarPlugs_Name">
@ -116,6 +116,7 @@
<German>Gehör</German> <German>Gehör</German>
<Czech>Sluch</Czech> <Czech>Sluch</Czech>
<Portuguese>Audição</Portuguese> <Portuguese>Audição</Portuguese>
<French>Audition</French>
<Hungarian>Hallás</Hungarian> <Hungarian>Hallás</Hungarian>
<Russian>Слух</Russian> <Russian>Слух</Russian>
</Key> </Key>
@ -126,6 +127,7 @@
<German>Aktiviere Taubheit im Gefecht?</German> <German>Aktiviere Taubheit im Gefecht?</German>
<Czech>Povolit ztrátu sluchu?</Czech> <Czech>Povolit ztrátu sluchu?</Czech>
<Portuguese>Ativar surdez em combate?</Portuguese> <Portuguese>Ativar surdez em combate?</Portuguese>
<French>Activer la surdité au combat?</French>
<Hungarian>Harci süketség engedélyezése?</Hungarian> <Hungarian>Harci süketség engedélyezése?</Hungarian>
<Russian>Оглушение</Russian> <Russian>Оглушение</Russian>
</Key> </Key>
@ -136,24 +138,28 @@
<German>Aktiviere Taubheit im Gefecht?</German> <German>Aktiviere Taubheit im Gefecht?</German>
<Czech>Povolit ztrátu sluchu?</Czech> <Czech>Povolit ztrátu sluchu?</Czech>
<Portuguese>Ativar surdez em combate?</Portuguese> <Portuguese>Ativar surdez em combate?</Portuguese>
<Hungarian>Harci süketség engedélyezése?</Hungarian>
<Russian>Уменьшает способность игроков слышать при повреждении слуха</Russian>
</Key> </Key>
<Key ID="STR_ACE_Hearing_Module_Description"> <Key ID="STR_ACE_Hearing_Module_Description">
<English>Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection</English> <English>Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection</English>
<Hungarian>Harci süketség engedélyezése?</Hungarian>
<Russian>Уменьшает способность игроков слышать при повреждении слуха</Russian>
<Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish> <Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish>
<German>Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.</German> <German>Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.</German>
<Czech>Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat.</Czech> <Czech>Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat.</Czech>
<Portuguese>Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva.</Portuguese> <Portuguese>Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva.</Portuguese>
<Russian>Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей.</Russian> <French>Ce module active / désactivé la surdité au combat. Si active, des joueurs peuvent devenir sourds sans protection d'oreille, si une arme est utilisée ou une explosion a lieu à proximité</French>
</Key> </Key>
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_DisplayName"> <Key ID="STR_ACE_Hearing_enabledForZeusUnits_DisplayName">
<English>Affects Zeus RC</English> <English>Effect Zeus RC</English>
<Polish>Wpływ na Zeus RC</Polish>
<Russian>Влияет на юнита Зевса</Russian> <Russian>Влияет на юнита Зевса</Russian>
<Portuguese>Afeta Zeus CR</Portuguese>
</Key> </Key>
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description"> <Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description">
<English>Allow zeus remote controlled units to be able to take hearing damage.</English> <English>Allow zeus remote controlled units to be able to take hearing damage.</English>
<Russian>Позволить юнитам, контролируемым Зевсом, получать повреждение слуха.</Russian> <Polish>Aktywuj efekty utraty słuchu dla jednostek kontrolowanych zdalnie przez Zeusa.</Polish>
<Russian>Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей.</Russian>
<Portuguese>Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos.</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -13,6 +13,7 @@
*/ */
#include "script_component.hpp" #include "script_component.hpp"
if (!hasInterface) exitWith {};
params ["_huntIR"]; params ["_huntIR"];
GVAR(huntIR) = _huntIR; GVAR(huntIR) = _huntIR;

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="HuntIR"> <Package name="HuntIR">
<Key ID="STR_DN_ACE_HUNTIRBOX"> <Key ID="STR_DN_ACE_HUNTIRBOX">
@ -194,4 +194,4 @@
<Portuguese>Esc - Sai do Ajuda</Portuguese> <Portuguese>Esc - Sai do Ajuda</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -104,3 +104,25 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
}]; }];
}; };
}] call EFUNC(common,addEventHandler); }] call EFUNC(common,addEventHandler);
//Debug to help end users identify mods that break CBA's XEH
["SettingsInitialized", {
private ["_badClassnames"];
_badClassnames = [];
{
if ((isNil (format [QGVAR(Act_%1), typeOf _x])) || {isNil (format [QGVAR(SelfAct_%1), typeOf _x])}) then {
if (!((typeOf _x) in _badClassnames)) then {
_badClassnames pushBack (typeOf _x);
ACE_LOGERROR_3("Compile checks bad for (classname: %1)(addon: %2) %3", (typeOf _x), (unitAddons (typeOf _x)), _x);
};
};
} forEach (allUnits + allDeadMen + vehicles);
if ((count _badClassnames) == 0) then {
ACE_LOGINFO("All compile checks passed");
} else {
ACE_LOGERROR_1("%1 Classnames failed compile check!!! (bad XEH / missing cba_enable_auto_xeh.pbo)", (count _badClassnames));
["ACE Interaction failed to compile for some units (try adding cba_enable_auto_xeh.pbo)"] call BIS_fnc_error;
};
}] call EFUNC(common,addEventHandler);

View File

@ -44,7 +44,7 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then {
_parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode);
if (isNil {_parentNode}) exitWith { if (isNil {_parentNode}) exitWith {
ERROR("Failed to add action"); ERROR("Failed to add action");
diag_log text format ["action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum]; ACE_LOGERROR_4("action (%1) to parent %2 on object %3 [%4]",(_action select 0),_parentPath,_objectType,_typeNum);
}; };
// Add action node as children of the correct node of action tree // Add action node as children of the correct node of action tree

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Interact_Menu"> <Package name="Interact_Menu">
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction"> <Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction">
@ -90,6 +90,7 @@
<Polish>Akcje Zeusa</Polish> <Polish>Akcje Zeusa</Polish>
<Czech>Akce Zeuse</Czech> <Czech>Akce Zeuse</Czech>
<Spanish>Acciones Zeus</Spanish> <Spanish>Acciones Zeus</Spanish>
<French>Actions Zeus</French>
<Hungarian>Zeus cselekvések</Hungarian> <Hungarian>Zeus cselekvések</Hungarian>
<Portuguese>Ações do Zeus</Portuguese> <Portuguese>Ações do Zeus</Portuguese>
<Russian>Действия Зевса</Russian> <Russian>Действия Зевса</Russian>
@ -233,6 +234,7 @@
<Czech>Pozadí menu interakce</Czech> <Czech>Pozadí menu interakce</Czech>
<German>Interaktionsmenü-Hintergrund</German> <German>Interaktionsmenü-Hintergrund</German>
<Portuguese>Fundo do menu de interação</Portuguese> <Portuguese>Fundo do menu de interação</Portuguese>
<French>Arrière plan du menu d'interaction</French>
<Hungarian>Cselekvő menü háttere</Hungarian> <Hungarian>Cselekvő menü háttere</Hungarian>
<Russian>Фон меню взаимодействия</Russian> <Russian>Фон меню взаимодействия</Russian>
</Key> </Key>
@ -240,9 +242,10 @@
<English>Blur the background while the interaction menu is open.</English> <English>Blur the background while the interaction menu is open.</English>
<Polish>Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji</Polish> <Polish>Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji</Polish>
<Spanish>Desenfocar el fondo mientras el menú de interacción está abierto.</Spanish> <Spanish>Desenfocar el fondo mientras el menú de interacción está abierto.</Spanish>
<Czech>Rozmazat obraz pokud je interakční menu otevřené.</Czech> <Czech>Rozmazat obraz při otevřeném interakčním menu.</Czech>
<German>Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist.</German> <German>Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist.</German>
<Portuguese>Desfocar o fundo enquanto o menu de interação está aberto.</Portuguese> <Portuguese>Desfocar o fundo enquanto o menu de interação está aberto.</Portuguese>
<French>Flouter l'arrière plan durant l'ouverture du menu d'interaction</French>
<Hungarian>A háttér elmosása a cselekvő menü használata alatt.</Hungarian> <Hungarian>A háttér elmosása a cselekvő menü használata alatt.</Hungarian>
<Russian>Размыть фон, пока открыто меню взаимодействия.</Russian> <Russian>Размыть фон, пока открыто меню взаимодействия.</Russian>
</Key> </Key>
@ -253,6 +256,7 @@
<Czech>Rozmazaný obraz</Czech> <Czech>Rozmazaný obraz</Czech>
<German>Verschwommenes Bild</German> <German>Verschwommenes Bild</German>
<Portuguese>Desfoque de tela</Portuguese> <Portuguese>Desfoque de tela</Portuguese>
<French>Flouter l'écran</French>
<Hungarian>Kép elmosása</Hungarian> <Hungarian>Kép elmosása</Hungarian>
<Russian>Размытый</Russian> <Russian>Размытый</Russian>
</Key> </Key>
@ -260,9 +264,10 @@
<English>Black</English> <English>Black</English>
<Polish>Przyciemnienie ekranu</Polish> <Polish>Przyciemnienie ekranu</Polish>
<Spanish>Negro</Spanish> <Spanish>Negro</Spanish>
<Czech>Černý obraz</Czech> <Czech>Tmavý</Czech>
<Portuguese>Preto</Portuguese> <Portuguese>Preto</Portuguese>
<German>Schwarz</German> <German>Schwarz</German>
<French>Noir</French>
<Hungarian>Fekete</Hungarian> <Hungarian>Fekete</Hungarian>
<Russian>Черный</Russian> <Russian>Черный</Russian>
</Key> </Key>
@ -271,6 +276,7 @@
<Polish>Pokazuj akcje dla budynków</Polish> <Polish>Pokazuj akcje dla budynków</Polish>
<Czech>Zobrazit akci pro budovy</Czech> <Czech>Zobrazit akci pro budovy</Czech>
<Spanish>Mostrar acciones para edificios</Spanish> <Spanish>Mostrar acciones para edificios</Spanish>
<French>Affiche les actions pour les batiments</French>
<Hungarian>Cselekvések mutatása épületeknél</Hungarian> <Hungarian>Cselekvések mutatása épületeknél</Hungarian>
<Portuguese>Mostrar ações para edifícios</Portuguese> <Portuguese>Mostrar ações para edifícios</Portuguese>
<Russian>Показывать действия для зданий</Russian> <Russian>Показывать действия для зданий</Russian>
@ -280,6 +286,7 @@
<Polish>Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach.</Polish> <Polish>Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach.</Polish>
<Czech>Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) </Czech> <Czech>Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) </Czech>
<Spanish>Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades)</Spanish> <Spanish>Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades)</Spanish>
<French>Ajoute des interactions pour ouvrir les portes et les échelles des batiments. (Note: l'ouverture du menu en ville dégrade les performances)</French>
<Hungarian>Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban)</Hungarian> <Hungarian>Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban)</Hungarian>
<Portuguese>Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades)</Portuguese> <Portuguese>Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades)</Portuguese>
<Russian>Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах)</Russian> <Russian>Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах)</Russian>
@ -287,7 +294,9 @@
<Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu"> <Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu">
<English>Interaction Menu</English> <English>Interaction Menu</English>
<Polish>Menu interakcji</Polish> <Polish>Menu interakcji</Polish>
<Portuguese>Menu de interação</Portuguese>
<Russian>Меню взаимодействия</Russian> <Russian>Меню взаимодействия</Russian>
<Czech>Menu interakce</Czech>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -26,4 +26,4 @@ if !(_activated) exitWith {};
[_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readSettingFromModule);
diag_log text "[ACE]: Interaction Module Initialized."; ACE_LOGINFO("Interaction Module Initialized.");

View File

@ -774,6 +774,7 @@
<Polish>Otwórz</Polish> <Polish>Otwórz</Polish>
<Czech>Otevřít</Czech> <Czech>Otevřít</Czech>
<Spanish>Abrir</Spanish> <Spanish>Abrir</Spanish>
<French>Ouvrir</French>
<Hungarian>Nyitás</Hungarian> <Hungarian>Nyitás</Hungarian>
<Portuguese>Abrir</Portuguese> <Portuguese>Abrir</Portuguese>
<Russian>Открыть</Russian> <Russian>Открыть</Russian>
@ -785,6 +786,7 @@
<German>Interaktionssystem</German> <German>Interaktionssystem</German>
<Czech>Systém interakce</Czech> <Czech>Systém interakce</Czech>
<Russian>Взаимодействие</Russian> <Russian>Взаимодействие</Russian>
<French>Système d'interaction</French>
<Hungarian>Interakciós rendszer</Hungarian> <Hungarian>Interakciós rendszer</Hungarian>
<Portuguese>Sistema de interação</Portuguese> <Portuguese>Sistema de interação</Portuguese>
</Key> </Key>
@ -795,6 +797,7 @@
<German>Aktiviere Gruppenverwaltung</German> <German>Aktiviere Gruppenverwaltung</German>
<Czech>Povolit správu týmu</Czech> <Czech>Povolit správu týmu</Czech>
<Russian>Управление группами</Russian> <Russian>Управление группами</Russian>
<French>Active la gestion d'équipe</French>
<Hungarian>Csapatkezelés engedélyezése</Hungarian> <Hungarian>Csapatkezelés engedélyezése</Hungarian>
<Portuguese>Habilitar gestão de equipes</Portuguese> <Portuguese>Habilitar gestão de equipes</Portuguese>
</Key> </Key>
@ -805,6 +808,7 @@
<German>Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja</German> <German>Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja</German>
<Czech>Mohou hráči použít menu správy týmu? Výchozí: Ano</Czech> <Czech>Mohou hráči použít menu správy týmu? Výchozí: Ano</Czech>
<Russian>Разрешить ли игрокам использовать меню управления группами? По-умолчани: Да</Russian> <Russian>Разрешить ли игрокам использовать меню управления группами? По-умолчани: Да</Russian>
<French>Permettre aux joueurs d'utiliser la gestion de groupe? Défaut: oui</French>
<Hungarian>A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen</Hungarian> <Hungarian>A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen</Hungarian>
<Portuguese>Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim</Portuguese> <Portuguese>Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim</Portuguese>
</Key> </Key>
@ -814,9 +818,10 @@
<German>Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe.</German> <German>Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe.</German>
<Czech>Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. </Czech> <Czech>Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. </Czech>
<Spanish>La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos.</Spanish> <Spanish>La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos.</Spanish>
<French>La gestion d'équipe permet l'allocation de couleur aux membres d'équipe, de prendre le commandement, de rejoindre ou quitter une équipe. </French>
<Hungarian>A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést.</Hungarian> <Hungarian>A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést.</Hungarian>
<Portuguese>O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes.</Portuguese> <Portuguese>O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes.</Portuguese>
<Russian>Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их.</Russian> <Russian>Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их.</Russian>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Inventory"> <Package name="Inventory">
<Key ID="STR_ACE_Inventory_SettingName"> <Key ID="STR_ACE_Inventory_SettingName">
@ -26,4 +26,4 @@
<Portuguese>Normalmente o tamanho da tela do inventário é ditada pelo tamanho da UI. Isso permite aumentar o tamanho da tela de inventário, mas não aumenta o tamanho da fonte, permitindo que mais linhas sejam visualizadas.</Portuguese> <Portuguese>Normalmente o tamanho da tela do inventário é ditada pelo tamanho da UI. Isso permite aumentar o tamanho da tela de inventário, mas não aumenta o tamanho da fonte, permitindo que mais linhas sejam visualizadas.</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project name="ACE"> <Project name="ACE">
<Package name="Javelin"> <Package name="Javelin">
<Key ID="STR_ACE_Javelin_LockTarget"> <Key ID="STR_ACE_Javelin_LockTarget">
@ -26,4 +26,4 @@
<Portuguese>Alterar Modo de Disparo</Portuguese> <Portuguese>Alterar Modo de Disparo</Portuguese>
</Key> </Key>
</Package> </Package>
</Project> </Project>

View File

@ -1,9 +1,9 @@
// This is a debug function for displaying visible lasers for ourselves // This is a debug function for displaying visible lasers for ourselves
#include "script_component.hpp" #include "script_component.hpp"
diag_log text format["[ACE]: Laser Emitter Dump"]; ACE_LOGINFO("Laser Emitter Dump");
{ {
diag_log text format[" %1", _x]; ACE_LOGINFO_1(" %1", _x);
diag_log text format[" %2", HASH_GET(GVAR(laserEmitters), _x)]; ACE_LOGINFO_1(" %1",HASH_GET(GVAR(laserEmitters),_x));
} forEach GVAR(laserEmitters) select 0; } forEach GVAR(laserEmitters) select 0;

View File

@ -4,7 +4,7 @@
// fixes laser when being captured. Needed, because the selectionPosition of the right hand is used // fixes laser when being captured. Needed, because the selectionPosition of the right hand is used
["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call EFUNC(common,addEventHandler); ["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call EFUNC(common,addEventHandler);
if !(hasInterface) exitWith {}; if (!hasInterface) exitWith {};
GVAR(nearUnits) = []; GVAR(nearUnits) = [];

View File

@ -84,6 +84,6 @@ switch (_currentWeaponType) do {
if (!_error) then { if (!_error) then {
[_description, _picture] call EFUNC(common,displayTextPicture); [_description, _picture] call EFUNC(common,displayTextPicture);
} else { } else {
diag_log text format ["Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer]; ACE_LOGERROR_3("Failed to add %1 to %2 - reverting to %3",_nextPointer,_weapon,_pointer);
}; };
playSound "ACE_Sound_Click"; playSound "ACE_Sound_Click";

View File

@ -4,9 +4,9 @@
#define PREFIX ace #define PREFIX ace
#define MAJOR 3 #define MAJOR 3
#define MINOR 2 #define MINOR 3
#define PATCHLVL 2 #define PATCHLVL 1
#define BUILD 0 #define BUILD 2
#define VERSION MAJOR.MINOR.PATCHLVL.BUILD #define VERSION MAJOR.MINOR.PATCHLVL.BUILD
#define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD #define VERSION_AR MAJOR,MINOR,PATCHLVL,BUILD

Some files were not shown because too many files have changed in this diff Show More