mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
commit
4b21d1f42c
@ -3,10 +3,10 @@
|
||||
</p>
|
||||
<p align="center">
|
||||
<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 href="https://github.com/acemod/ACE3/releases/download/v3.2.1/ace3_3.2.1.zip">
|
||||
<img src="http://img.shields.io/badge/Download-56.5_MB-green.svg" alt="ACE3 Download">
|
||||
<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-62.0_MB-green.svg" alt="ACE3 Download">
|
||||
</a>
|
||||
<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">
|
||||
@ -17,6 +17,9 @@
|
||||
<a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
|
||||
<img src="http://img.shields.io/badge/License-GPLv2-red.svg" alt="ACE3 License">
|
||||
</a>
|
||||
<a href="http://slackin.koffeinflummi.de">
|
||||
<img src="http://slackin.koffeinflummi.de/badge.svg" alt="ACE3 Slack">
|
||||
</a>
|
||||
</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>
|
||||
|
||||
|
@ -14,10 +14,10 @@
|
||||
|
||||
private "_deleted";
|
||||
|
||||
|
||||
|
||||
_deleted = 0;
|
||||
|
||||
_aceTimeSecond = floor ACE_time;
|
||||
|
||||
{
|
||||
private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"];
|
||||
_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,"","",""];
|
||||
};
|
||||
|
||||
_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]);
|
||||
} forEach GVAR(allBullets);
|
||||
|
||||
|
@ -53,7 +53,9 @@ if (!GVAR(simulateForEveryone) && !(local _unit)) then {
|
||||
if (GVAR(disabledInFullAutoMode) && getNumber(configFile >> "CfgWeapons" >> _weapon >> _mode >> "autoFire") == 1) then { _abort = true; };
|
||||
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Advanced_Ballistics">
|
||||
<Key ID="STR_ACE_Advanced_Ballistics_WindInfoKey">
|
||||
@ -32,6 +32,7 @@
|
||||
<German>Erweiterte Ballistik</German>
|
||||
<Czech>Pokročilá balistika</Czech>
|
||||
<Portuguese>Balística avançada</Portuguese>
|
||||
<French>Balistique avancée</French>
|
||||
<Hungarian>Fejlett ballisztika</Hungarian>
|
||||
<Russian>Продвинутая баллистика</Russian>
|
||||
</Key>
|
||||
@ -42,6 +43,7 @@
|
||||
<German>Erweiterte Ballistik</German>
|
||||
<Czech>Pokročilá balistika</Czech>
|
||||
<Portuguese>Balística avançada</Portuguese>
|
||||
<French>Balistique avancée</French>
|
||||
<Hungarian>Fejlett ballisztika</Hungarian>
|
||||
<Russian>Продвинутая баллистика</Russian>
|
||||
</Key>
|
||||
@ -52,6 +54,7 @@
|
||||
<German>Aktiviert die erweiterte Ballistik</German>
|
||||
<Czech>Aktivuje pokročilou balistiku</Czech>
|
||||
<Portuguese>Ativa balística avançada</Portuguese>
|
||||
<French>Activer la balistique avancée</French>
|
||||
<Hungarian>Engedélyezi a fejlett ballisztikát</Hungarian>
|
||||
<Russian>Включает продвинутую баллистику</Russian>
|
||||
</Key>
|
||||
@ -62,6 +65,7 @@
|
||||
<German>Für Scharfschützen aktiviert</German>
|
||||
<Czech>Povoleno pro odstřelovače</Czech>
|
||||
<Portuguese>Ativar para caçadores</Portuguese>
|
||||
<French>Activer pour les snipers</French>
|
||||
<Hungarian>Mesterlövészeknek engedélyezve</Hungarian>
|
||||
<Russian>Включена для снайперов</Russian>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики)</Russian>
|
||||
</Key>
|
||||
@ -82,6 +87,7 @@
|
||||
<German>Für Gruppenmitglieder aktiviert</German>
|
||||
<Czech>Povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Ativada para membros do grupo</Portuguese>
|
||||
<French>Activer pour les membres groupés</French>
|
||||
<Hungarian>Csoporttagoknak engedélyezve</Hungarian>
|
||||
<Russian>Включена для группы</Russian>
|
||||
</Key>
|
||||
@ -92,6 +98,7 @@
|
||||
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Включает продвинутую баллистику для нелокальных членов группы</Russian>
|
||||
</Key>
|
||||
@ -102,6 +109,7 @@
|
||||
<German>Für jeden aktiviert</German>
|
||||
<Czech>Povoleno pro všechny</Czech>
|
||||
<Portuguese>Ativada para todos</Portuguese>
|
||||
<French>Activer pour tout le monde</French>
|
||||
<Hungarian>Mindenkinek engedélyezve</Hungarian>
|
||||
<Russian>Включена для всех</Russian>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере)</Russian>
|
||||
</Key>
|
||||
@ -122,6 +131,7 @@
|
||||
<German>Für Gruppenmitglieder immer aktiviert</German>
|
||||
<Czech>Vždy povoleno pro členy skupiny</Czech>
|
||||
<Portuguese>Sempre ativada para membros do grupo</Portuguese>
|
||||
<French>Toujours activer pour les membres groupés</French>
|
||||
<Hungarian>Mindig engedélyezve csoporttagoknak</Hungarian>
|
||||
<Russian>Всегда включена для членов группы</Russian>
|
||||
</Key>
|
||||
@ -132,6 +142,7 @@
|
||||
<German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
|
||||
<Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech>
|
||||
<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>
|
||||
<Russian>Всегда включает продвинутую баллистику когда стреляет член группы</Russian>
|
||||
</Key>
|
||||
@ -142,6 +153,7 @@
|
||||
<German>Beim vollautomatischen Feuern deaktiviert</German>
|
||||
<Czech>Zakázáno v automatickém režimu střelby</Czech>
|
||||
<Portuguese>Desabilitar no modo automático</Portuguese>
|
||||
<French>Désactiver en mode rafale libre</French>
|
||||
<Hungarian>Automata módban letiltva</Hungarian>
|
||||
<Russian>Выкл. для автомат. режима</Russian>
|
||||
</Key>
|
||||
@ -152,6 +164,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме</Russian>
|
||||
</Key>
|
||||
@ -162,6 +175,7 @@
|
||||
<German>Simulation der Munitionstemperatur aktivieren</German>
|
||||
<Czech>Povolit simulaci teploty munice</Czech>
|
||||
<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>
|
||||
<Russian>Симуляция температуры для боеприпасов</Russian>
|
||||
</Key>
|
||||
@ -172,6 +186,7 @@
|
||||
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Начальная скорость пули зависит от температуры</Russian>
|
||||
</Key>
|
||||
@ -182,6 +197,7 @@
|
||||
<German>Simulation der Lauflänge aktivieren</German>
|
||||
<Czech>Povolit simulaci délky hlavně</Czech>
|
||||
<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>
|
||||
<Russian>Симуляция длины ствола</Russian>
|
||||
</Key>
|
||||
@ -192,6 +208,7 @@
|
||||
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Начальная скорость пули зависит от длины ствола</Russian>
|
||||
</Key>
|
||||
@ -202,6 +219,7 @@
|
||||
<German>Geschossspureffekt aktivieren</German>
|
||||
<Czech>Povolit efekt trasírek</Czech>
|
||||
<Portuguese>Ativa efeito traçante de projétil</Portuguese>
|
||||
<French>Activer l'effet traçante</French>
|
||||
<Hungarian>Nyomkövető-effekt engedélyezése</Hungarian>
|
||||
<Russian>Следы пуль</Russian>
|
||||
</Key>
|
||||
@ -212,6 +230,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Включает эффект следов пуль для больших калибров (видны только через мощную оптику)</Russian>
|
||||
</Key>
|
||||
@ -222,6 +241,7 @@
|
||||
<German>Simulationsintervall</German>
|
||||
<Czech>Interval simulace</Czech>
|
||||
<Portuguese>Intervalo da simulação</Portuguese>
|
||||
<French>Intervalle de simulation</French>
|
||||
<Hungarian>Szimuláció intervalluma</Hungarian>
|
||||
<Russian>Интервал симуляции</Russian>
|
||||
</Key>
|
||||
@ -232,6 +252,7 @@
|
||||
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
|
||||
<Czech>Určuje interval mezi každým výpočtem</Czech>
|
||||
<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>
|
||||
<Russian>Определяет временной интервал между вычислениями</Russian>
|
||||
</Key>
|
||||
@ -242,6 +263,7 @@
|
||||
<German>Simulationsradius</German>
|
||||
<Czech>Rozsah simulace</Czech>
|
||||
<Portuguese>Raio de simulação</Portuguese>
|
||||
<French>Rayon de simulation</French>
|
||||
<Hungarian>Szimuláció hatóköre</Hungarian>
|
||||
<Russian>Радиус симуляции</Russian>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам</Russian>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Aircraft">
|
||||
<Key ID="STR_ACE_Aircraft_CMFlareLauncher_Burst_Name">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="ATragMX">
|
||||
<Key ID="STR_ACE_ATragMX_Name">
|
||||
@ -50,4 +50,4 @@
|
||||
<Portuguese>Abrir ATragMX</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -19,6 +19,8 @@
|
||||
params ["_attachToVehicle", "_unit"];
|
||||
TRACE_2("params",_attachToVehicle,_unit);
|
||||
|
||||
if ((vehicle _unit) != _unit) exitWith {false};
|
||||
|
||||
_attachedList = _attachToVehicle getVariable [QGVAR(attached), []];
|
||||
if ((count _attachedList) == 0) exitWith {false};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Attach">
|
||||
<Key ID="STR_ACE_Attach_AttachDetach">
|
||||
|
@ -6,23 +6,11 @@ class CfgAmmo {
|
||||
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 {
|
||||
airFriction=-0.00126466;
|
||||
hit=8;
|
||||
typicalSpeed=750;
|
||||
tracerScale = 1;
|
||||
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
||||
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=5.69;
|
||||
@ -128,9 +116,13 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={785, 883, 925};
|
||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
||||
};
|
||||
class B_56x15_dual: BulletBase {
|
||||
tracerScale = 0.5;
|
||||
};
|
||||
class B_65x39_Caseless : BulletBase {
|
||||
airFriction=-0.00075308;
|
||||
typicalSpeed=800;
|
||||
tracerScale = 1.1; //1.0;
|
||||
ACE_caliber=6.706;
|
||||
ACE_bulletLength=32.893;
|
||||
ACE_bulletMass=7.9704;
|
||||
@ -180,10 +172,15 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={750, 820, 840, 852, 860};
|
||||
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 {
|
||||
airFriction=-0.00100957;
|
||||
typicalSpeed=833;
|
||||
hit=9;
|
||||
tracerScale = 1.2; //0.6;
|
||||
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
||||
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
||||
ACE_caliber=7.823;
|
||||
@ -479,6 +476,7 @@ class CfgAmmo {
|
||||
class B_9x21_Ball : BulletBase {
|
||||
airFriction=-0.00226847;
|
||||
typicalSpeed=390;
|
||||
tracerScale = 0.5;
|
||||
hit=6;
|
||||
ACE_caliber=9.042;
|
||||
ACE_bulletLength=15.494;
|
||||
@ -491,6 +489,9 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={440, 460, 480};
|
||||
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 {
|
||||
hit=5;
|
||||
airFriction=-0.00190333;
|
||||
@ -584,6 +585,7 @@ class CfgAmmo {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00038944;
|
||||
typicalSpeed=910;
|
||||
tracerScale = 1.3; //1.2;
|
||||
ACE_caliber=10.363;
|
||||
ACE_bulletLength=54.0;
|
||||
ACE_bulletMass=26.568;
|
||||
@ -670,9 +672,13 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={880, 915, 925};
|
||||
ACE_barrelLengths[]={508.0, 660.4, 711.2};
|
||||
};
|
||||
class B_127x33_Ball: BulletBase {
|
||||
tracerScale = 1.3; //1.2;
|
||||
};
|
||||
class B_127x54_Ball : BulletBase {
|
||||
airFriction=-0.00019268;
|
||||
typicalSpeed=300;
|
||||
tracerScale = 1.3;//
|
||||
ACE_caliber=12.954;
|
||||
ACE_bulletLength=64.516;
|
||||
ACE_bulletMass=48.6;
|
||||
@ -688,6 +694,7 @@ class CfgAmmo {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00057503;
|
||||
typicalSpeed=900;
|
||||
tracerScale = 1.3; //1.2;
|
||||
ACE_caliber=12.954;
|
||||
ACE_bulletLength=58.674;
|
||||
ACE_bulletMass=41.9256;
|
||||
@ -703,6 +710,7 @@ class CfgAmmo {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00057503;
|
||||
typicalSpeed=900;
|
||||
tracerScale = 1.3;//
|
||||
hit=25;
|
||||
caliber=4.0;
|
||||
ACE_caliber=12.954;
|
||||
@ -736,6 +744,7 @@ class CfgAmmo {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00063800;
|
||||
typicalSpeed=820;
|
||||
tracerScale = 1.3; //1.5;
|
||||
ACE_caliber=12.979;
|
||||
ACE_bulletLength=64.008;
|
||||
ACE_bulletMass=48.276;
|
||||
@ -750,6 +759,7 @@ class CfgAmmo {
|
||||
class B_45ACP_Ball : BulletBase {
|
||||
airFriction=-0.00081221;
|
||||
typicalSpeed=250;
|
||||
tracerScale = 0.6;
|
||||
ACE_caliber=11.481;
|
||||
ACE_bulletLength=17.272;
|
||||
ACE_bulletMass=14.904;
|
||||
@ -761,4 +771,36 @@ class CfgAmmo {
|
||||
ACE_muzzleVelocities[]={230, 250, 285};
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Ballistics">
|
||||
<!-- MX -->
|
||||
@ -1599,8 +1599,9 @@
|
||||
<German>[ACE] Munitionskiste</German>
|
||||
<Czech>[ACE] Bedna s municí</Czech>
|
||||
<Portuguese>[ACE] Caixa com suprimentos de munição</Portuguese>
|
||||
<French>[ACE] Caisse de munitions</French>
|
||||
<Hungarian>[ACE] Lőszeres láda</Hungarian>
|
||||
<Russian>[ACE] Ящик с боеприпасами</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -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
|
||||
class Extended_InitPost_EventHandlers {
|
||||
class CAManBase {
|
||||
|
@ -35,6 +35,12 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
|
||||
class CutSceneAnimationBase;
|
||||
|
||||
#define MACRO_ANIMATION \
|
||||
head = "headDefault"; \
|
||||
aimingBody = "aimingNo"; \
|
||||
forceAim = 1; \
|
||||
static = 1;
|
||||
|
||||
//Handcuffed Anims:
|
||||
class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase {
|
||||
actions = "ACE_CivilStandHandcuffedActions";
|
||||
@ -45,6 +51,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1};
|
||||
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
|
||||
canReload = 0;
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon {
|
||||
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};
|
||||
InterpolateTo[] = {"Unconscious",0.01};
|
||||
looped = 1;
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon {
|
||||
actions = "CivilStandActions";
|
||||
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout";
|
||||
ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1};
|
||||
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1};
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
|
||||
//Handcuffed-FFV:
|
||||
@ -65,6 +74,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm";
|
||||
actions = "ACE_CivilHandCuffedFFVActions";
|
||||
ConnectTo[] = {};
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
|
||||
|
||||
@ -78,6 +88,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon",0.1};
|
||||
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
|
||||
canReload = 0;
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
class ACE_AmovPercMstpSsurWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon {
|
||||
file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon";
|
||||
@ -85,6 +96,7 @@ class CfgMovesMaleSdr: CfgMovesBasic {
|
||||
looped = 1;
|
||||
ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1};
|
||||
InterpolateTo[] = {"Unconscious",0.01};
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon {
|
||||
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";
|
||||
ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1};
|
||||
InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1};
|
||||
MACRO_ANIMATION
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -19,7 +19,6 @@ PREP(doUnloadCaptive);
|
||||
PREP(findEmptyNonFFVCargoSeat);
|
||||
PREP(handleGetIn);
|
||||
PREP(handleGetOut);
|
||||
PREP(handleKilled);
|
||||
PREP(handleOnUnconscious);
|
||||
PREP(handlePlayerChanged);
|
||||
PREP(handleRespawn);
|
||||
|
@ -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);
|
||||
};
|
@ -20,20 +20,34 @@ params ["_unit","_dead"];
|
||||
|
||||
if (!local _unit) exitWith {};
|
||||
|
||||
//With respawn="group", we could be respawning into a unit that is handcuffed/captive
|
||||
//If they are, reset and rerun the SET function
|
||||
//if not, make sure to explicity disable the setCaptivityStatus, because captiveNum does not work correctly on respawn
|
||||
// Group and side respawn can potentially respawn you as a captive unit
|
||||
// Base and instant respawn cannot, so captive should be entirely reset
|
||||
// So we explicity account for the respawn type
|
||||
private ["_respawn"];
|
||||
_respawn = [0] call BIS_fnc_missionRespawnType;
|
||||
|
||||
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
|
||||
_unit setVariable [QGVAR(isHandcuffed), false];
|
||||
[_unit, true] call FUNC(setHandcuffed);
|
||||
if (_respawn > 3) then {
|
||||
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
|
||||
_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 {
|
||||
if (_unit getVariable [QGVAR(isHandcuffed), false]) then {
|
||||
[_unit, false] call FUNC(setHandcuffed);
|
||||
};
|
||||
[_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
|
||||
};
|
||||
|
||||
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
|
||||
_unit setVariable [QGVAR(isSurrendering), false];
|
||||
[_unit, true] call FUNC(setSurrendered);
|
||||
} else {
|
||||
if (_unit getVariable [QGVAR(isSurrendering), false]) then {
|
||||
[_unit, false] call FUNC(setSurrendered);
|
||||
};
|
||||
[_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
|
||||
|
||||
if (_oldUnit getVariable [QGVAR(isEscorting), false]) then {
|
||||
_oldUnit setVariable [QGVAR(isEscorting), false, true];
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Captives">
|
||||
<Key ID="STR_ACE_Captives_SetCaptive">
|
||||
@ -164,6 +164,7 @@
|
||||
<German>Einheit kapitulieren lassen</German>
|
||||
<Czech>Vzdávající se jednotka</Czech>
|
||||
<Portuguese>Fazer unidade se render</Portuguese>
|
||||
<French>Faire capituler l'unité</French>
|
||||
<Hungarian>Egység kapitulálása</Hungarian>
|
||||
<Russian>Сделать юнита пленным</Russian>
|
||||
</Key>
|
||||
@ -174,6 +175,7 @@
|
||||
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives</German>
|
||||
<Czech>Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives</Czech>
|
||||
<Portuguese>Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives</Portuguese>
|
||||
<French>Synchronise une unité pour la rendre captive. <br/>Source: ace_captives</French>
|
||||
<Hungarian>Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives</Hungarian>
|
||||
<Russian>Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives</Russian>
|
||||
</Key>
|
||||
@ -184,6 +186,7 @@
|
||||
<Czech>Nastavení zajatce</Czech>
|
||||
<German>Gefangenen-Einstellungen</German>
|
||||
<Portuguese>Ajustes de prisioneiros</Portuguese>
|
||||
<French>Options de capitulation</French>
|
||||
<Hungarian>Fogoly-beállítások</Hungarian>
|
||||
<Russian>Настройки пленения</Russian>
|
||||
</Key>
|
||||
@ -194,6 +197,7 @@
|
||||
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
|
||||
<German>Einstellungen zur Kapitulation und Kabelbindern</German>
|
||||
<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>
|
||||
<Russian>Управляет настройками сдачи в плен и связывания</Russian>
|
||||
</Key>
|
||||
@ -204,6 +208,7 @@
|
||||
<Czech>Může spoutat spolubojovníky</Czech>
|
||||
<German>Kann Teamkollegen fesseln</German>
|
||||
<Portuguese>Pode algemar o próprio lado</Portuguese>
|
||||
<French>Peut libérer sa propre faction</French>
|
||||
<Hungarian>Saját oldal megbilincselhető</Hungarian>
|
||||
<Russian>Связать союзника</Russian>
|
||||
</Key>
|
||||
@ -214,6 +219,7 @@
|
||||
<Czech>Mohou hráči spoutat jednotky na své straně</Czech>
|
||||
<German>Können Spieler eigene Einheiten fesseln</German>
|
||||
<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>
|
||||
<Russian>Разрешить игрокам связывать юнитов своей стороны</Russian>
|
||||
</Key>
|
||||
@ -224,6 +230,7 @@
|
||||
<Czech>Povolit vzdávání</Czech>
|
||||
<German>Kapitulation erlauben</German>
|
||||
<Portuguese>Permite rendição</Portuguese>
|
||||
<French>Permettre la capitulation</French>
|
||||
<Hungarian>Kapituláció engedélyezése</Hungarian>
|
||||
<Russian>Сдаться в плен</Russian>
|
||||
</Key>
|
||||
@ -234,28 +241,33 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Игроки могут сдаться в плен после того, как уберут оружие</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_name">
|
||||
<English>Require surrendering</English>
|
||||
<Polish>Wymagaj kapitulacji</Polish>
|
||||
<Portuguese>Requer rendição</Portuguese>
|
||||
<Russian>Требовать пленения</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_ModuleSettings_requireSurrender_description">
|
||||
<English>Require Players to surrender before they can be arrested</English>
|
||||
<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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOnly">
|
||||
<English>Surrendering only</English>
|
||||
<Polish>Tylko kapitulacja</Polish>
|
||||
<Portuguese>Somente rendição </Portuguese>
|
||||
<Russian>Только сдавшийся в плен</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Captives_SurrenderOrNoWeapon">
|
||||
<English>Surrendering or No weapon</English>
|
||||
<Polish>Kapitulacja lub brak broni</Polish>
|
||||
<Portuguese>Rendição ou desarmado</Portuguese>
|
||||
<Russian>Сдавшийся или безоружный</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -10,6 +10,7 @@ class CfgVehicles {
|
||||
isGlobal = 1;
|
||||
isTriggerActivated = 0;
|
||||
author = ECSTRING(common,ACETeam);
|
||||
|
||||
class Arguments {
|
||||
class enable {
|
||||
displayName = CSTRING(ModuleSettings_enable);
|
||||
@ -18,13 +19,13 @@ class CfgVehicles {
|
||||
defaultValue = 1;
|
||||
};
|
||||
};
|
||||
|
||||
class ModuleDescription {
|
||||
description = CSTRING(SettingsModule_Description);
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
class LandVehicle;
|
||||
class Car: LandVehicle {
|
||||
GVAR(space) = 4;
|
||||
@ -39,6 +40,7 @@ class CfgVehicles {
|
||||
};*/
|
||||
};
|
||||
};
|
||||
|
||||
class Tank: LandVehicle {
|
||||
GVAR(space) = 4;
|
||||
GVAR(hasCargo) = 1;
|
||||
@ -50,27 +52,154 @@ class CfgVehicles {
|
||||
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 Helicopter: Air {
|
||||
GVAR(space) = 8;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
class Heli_Transport_02_base_F;
|
||||
class I_Heli_Transport_02_F : Heli_Transport_02_base_F {
|
||||
GVAR(space) = 20;
|
||||
GVAR(hasCargo) = 1;
|
||||
};
|
||||
|
||||
// jets
|
||||
class Plane: Air {
|
||||
GVAR(space) = 4;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(space) = 0;
|
||||
GVAR(hasCargo) = 0;
|
||||
};
|
||||
|
||||
// boats
|
||||
class Ship;
|
||||
class Ship_F: Ship {
|
||||
GVAR(space) = 4;
|
||||
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
|
||||
class StaticWeapon: LandVehicle {
|
||||
GVAR(size) = 2; // 1 = small, 2 = large
|
||||
@ -97,6 +226,7 @@ class CfgVehicles {
|
||||
GVAR(size) = 11;
|
||||
GVAR(canLoad) = 1;
|
||||
XEH_ENABLED;
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = ECSTRING(interaction,MainAction);
|
||||
@ -114,6 +244,7 @@ class CfgVehicles {
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 4;
|
||||
GVAR(canLoad) = 1;
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = ECSTRING(interaction,MainAction);
|
||||
@ -165,12 +296,14 @@ class CfgVehicles {
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Ruins_F;
|
||||
class Land_Cargo20_military_ruins_F: Ruins_F {
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo20_orange_F: Cargo_base_F {
|
||||
GVAR(space) = 49;
|
||||
GVAR(size) = 50;
|
||||
@ -202,7 +335,6 @@ class CfgVehicles {
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
|
||||
class Land_Cargo40_blue_F: Cargo_base_F {
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
@ -238,11 +370,13 @@ class CfgVehicles {
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo40_military_ruins_F: Ruins_F {
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
class Land_Cargo40_orange_F: Cargo_base_F {
|
||||
GVAR(space) = 99;
|
||||
GVAR(size) = 100;
|
||||
@ -273,12 +407,14 @@ class CfgVehicles {
|
||||
GVAR(size) = 100;
|
||||
XEH_ENABLED;
|
||||
};
|
||||
|
||||
// small
|
||||
class Land_CargoBox_V1_F: ThingX {
|
||||
GVAR(space) = 7;
|
||||
GVAR(hasCargo) = 1;
|
||||
GVAR(size) = 7;
|
||||
XEH_ENABLED;
|
||||
|
||||
class ACE_Actions {
|
||||
class ACE_MainActions {
|
||||
displayName = ECSTRING(interaction,MainAction);
|
||||
@ -290,5 +426,4 @@ class CfgVehicles {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -41,7 +41,7 @@ if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) ex
|
||||
private ["_text", "_condition", "_statement", "_icon", "_action"];
|
||||
_condition = {
|
||||
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);
|
||||
_statement = {GVAR(interactionVehicle) = _target; createDialog QGVAR(menu);};
|
||||
|
@ -25,4 +25,4 @@ if (!_activated) exitWith {};
|
||||
|
||||
[_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
diag_log text "[ACE]: Cargo Module Initialized.";
|
||||
ACE_LOGINFO("Cargo Module Initialized.");
|
||||
|
@ -4,47 +4,63 @@
|
||||
<Key ID="STR_ACE_Cargo_loadObject">
|
||||
<English>Load</English>
|
||||
<Polish>Załaduj</Polish>
|
||||
<Portuguese>Carregar</Portuguese>
|
||||
<Russian>Загрузить</Russian>
|
||||
<Czech>Naložit</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_unloadObject">
|
||||
<English>Unload</English>
|
||||
<Polish>Wyładuj</Polish>
|
||||
<Portuguese>Descarregar</Portuguese>
|
||||
<Russian>Выгрузить</Russian>
|
||||
<Czech>Vyložit</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_openMenu">
|
||||
<English>Cargo</English>
|
||||
<Polish>Ładunek</Polish>
|
||||
<Portuguese>Carga</Portuguese>
|
||||
<Russian>Грузовой отсек</Russian>
|
||||
<Czech>Náklad</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_cargoMenu">
|
||||
<English>Cargo Menu</English>
|
||||
<Polish>Menu ładunku</Polish>
|
||||
<Portuguese>Menu de carga</Portuguese>
|
||||
<Russian>Грузовой отсек</Russian>
|
||||
<Czech>Menu nákladu</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_labelSpace">
|
||||
<English>Cargo space left: %1</English>
|
||||
<Polish>Pozostałe miejsce: %1</Polish>
|
||||
<Portuguese>Espaço de carga restante: %1</Portuguese>
|
||||
<Russian>Осталось мест: %1</Russian>
|
||||
<Czech>Volný prostor: %1</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable">
|
||||
<English>Enable Cargo</English>
|
||||
<Polish>Aktywuj cargo</Polish>
|
||||
<Portuguese>Ativar carga</Portuguese>
|
||||
<Russian>Включить модуль перевозки грузов</Russian>
|
||||
<Czech>Povolit náklad</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_ModuleSettings_enable_Description">
|
||||
<English>Enable the load in cargo module</English>
|
||||
<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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_DisplayName">
|
||||
<English>Cargo Settings</English>
|
||||
<Polish>Ustawienia cargo</Polish>
|
||||
<Portuguese>Preferências de carregamento</Portuguese>
|
||||
<Russian>Перевозка грузов</Russian>
|
||||
<Czech>Nastavení nákladu</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Cargo_SettingsModule_Description">
|
||||
<English>Configure the cargo module settings</English>
|
||||
<Polish>Skonfiguruj ustawienia modułu cargo.</Polish>
|
||||
<Portuguese>Configura as preferências do módulo de carga</Portuguese>
|
||||
<Russian>Конфигурирует настройки модуля перевозки грузов</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
["HeadbugFixUsed", {
|
||||
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);
|
||||
|
||||
|
||||
@ -102,7 +102,7 @@ if (_currentVersion != _previousVersion) then {
|
||||
// Handle JIP scenario
|
||||
if(!isServer) then {
|
||||
["PlayerJip", {
|
||||
diag_log text format["[ACE] * JIP event synchronization initialized"];
|
||||
ACE_LOGINFO("JIP event synchronization initialized");
|
||||
["SEH_all", [player]] call FUNC(serverEvent);
|
||||
}] call FUNC(addEventHandler);
|
||||
} else {
|
||||
@ -128,13 +128,13 @@ call FUNC(checkFiles);
|
||||
if (isNil QGVAR(settings) || {(!isServer) && (isNil QEGVAR(modules,serverModulesRead))}) exitWith {
|
||||
if (!_waitingMsgSent) then {
|
||||
_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;
|
||||
|
||||
diag_log text format["[ACE] Settings received from server"];
|
||||
ACE_LOGINFO("Settings received from server.");
|
||||
|
||||
// Event so that ACE_Modules have their settings loaded:
|
||||
["InitSettingsFromModules", []] call FUNC(localEvent);
|
||||
@ -145,11 +145,20 @@ call FUNC(checkFiles);
|
||||
call FUNC(loadSettingsLocalizedText);
|
||||
};
|
||||
|
||||
diag_log text format["[ACE] Settings initialized"];
|
||||
ACE_LOGINFO("Settings initialized.");
|
||||
|
||||
//Event that settings are safe to use:
|
||||
["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;
|
||||
|
||||
|
||||
@ -275,7 +284,7 @@ GVAR(OldVisibleMap) = false;
|
||||
GVAR(OldPlayerWeapon) = _newPlayerWeapon;
|
||||
["playerWeaponChanged", [ACE_player, _newPlayerWeapon]] call FUNC(localEvent);
|
||||
};
|
||||
|
||||
|
||||
// "visibleMapChanged" event
|
||||
_newVisibleMap = visibleMap;
|
||||
if (!_newVisibleMap isEqualTo GVAR(OldVisibleMap)) then {
|
||||
@ -283,9 +292,9 @@ GVAR(OldVisibleMap) = false;
|
||||
GVAR(OldVisibleMap) = _newVisibleMap;
|
||||
["visibleMapChanged", [ACE_player, _newVisibleMap]] call FUNC(localEvent);
|
||||
};
|
||||
|
||||
|
||||
END_COUNTER(stateChecker);
|
||||
|
||||
|
||||
}, 0, []] call CBA_fnc_addPerFrameHandler;
|
||||
|
||||
|
||||
@ -326,7 +335,7 @@ GVAR(OldIsCamera) = false;
|
||||
if (didJip) then {
|
||||
// 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);
|
||||
[(_this select 1)] call cba_fnc_removePerFrameHandler;
|
||||
};
|
||||
|
@ -157,6 +157,7 @@ PREP(requestCallback);
|
||||
PREP(resetAllDefaults);
|
||||
PREP(restoreVariablesJIP);
|
||||
PREP(revertKeyCodeLocalized);
|
||||
PREP(runAfterSettingsInit);
|
||||
PREP(sanitizeString);
|
||||
PREP(sendRequest);
|
||||
PREP(serverLog);
|
||||
@ -303,6 +304,9 @@ GVAR(nextFrameNo) = diag_frameno;
|
||||
GVAR(nextFrameBufferA) = [];
|
||||
GVAR(nextFrameBufferB) = [];
|
||||
|
||||
GVAR(settingsInitFinished) = false;
|
||||
GVAR(runAtSettingsInitialized) = [];
|
||||
|
||||
// @TODO: Generic local-managed global-synced objects (createVehicleLocal)
|
||||
|
||||
//Debug
|
||||
|
@ -11,22 +11,22 @@ PARAMS_2(_eventType,_event);
|
||||
if (_eventType == "ACEg") then {
|
||||
_eventName = _event select 0;
|
||||
_eventArgs = _event select 1;
|
||||
|
||||
|
||||
_eventNames = GVAR(events) select 0;
|
||||
_eventIndex = _eventNames find _eventName;
|
||||
if (_eventIndex != -1) then {
|
||||
_events = (GVAR(events) select 1) select _eventIndex;
|
||||
|
||||
|
||||
#ifdef DEBUG_EVENTS
|
||||
diag_log text format[ARR_2("* Net Event %1",_eventName)];
|
||||
diag_log text format[ARR_2(" args=%1",_eventArgs)];
|
||||
ACE_LOGINFO_1("* Net Event %1",_eventName);
|
||||
ACE_LOGINFO_1(" args=%1",_eventArgs);
|
||||
#endif
|
||||
|
||||
|
||||
{
|
||||
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
|
||||
diag_log text format[ARR_2(" ID: %1",_forEachIndex)];
|
||||
ACE_LOGINFO_1(" ID: %1",_forEachIndex);
|
||||
#endif
|
||||
};
|
||||
} forEach _events;
|
||||
@ -38,7 +38,7 @@ if (_eventType == "ACEc") then {
|
||||
_eventName = _event select 0;
|
||||
_eventTargets = _event select 1;
|
||||
_eventArgs = _event select 2;
|
||||
|
||||
|
||||
_sentEvents = [];
|
||||
if (!IS_ARRAY(_eventTargets)) then {
|
||||
_eventTargets = [_eventTargets];
|
||||
@ -72,4 +72,4 @@ if (_eventType == "ACEc") then {
|
||||
};
|
||||
} forEach _eventTargets;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,16 +1,16 @@
|
||||
/*
|
||||
* Author: jaynus
|
||||
*
|
||||
*
|
||||
* Receives either requests for synchronization from clients, or the synchronization data from the server.
|
||||
*
|
||||
* Arguments [Client] :
|
||||
* 0: eventName (String)
|
||||
* 1: eventLog (Array)
|
||||
*
|
||||
*
|
||||
* Arguments [Server] :
|
||||
* 0: eventName (String)
|
||||
* 1: client (Object)
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Boolean of success
|
||||
*/
|
||||
@ -24,14 +24,14 @@ if(isServer) then {
|
||||
// Find the event name, and shovel out the events to the client
|
||||
PARAMS_2(_eventName,_client);
|
||||
private["_eventEntry", "_eventLog"];
|
||||
|
||||
|
||||
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
|
||||
};
|
||||
_eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
|
||||
_eventLog = _eventEntry select 1;
|
||||
|
||||
|
||||
["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
|
||||
} else {
|
||||
PARAMS_2(_eventName,_eventLog);
|
||||
@ -42,7 +42,7 @@ if(isServer) then {
|
||||
_eventArgs = _x select 1;
|
||||
[_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent);
|
||||
} forEach _eventLog;
|
||||
diag_log text format["[ACE] + [%1] synchronized", _eventName];
|
||||
ACE_LOGINFO_1("[%1] synchronized",_eventName);
|
||||
};
|
||||
|
||||
true
|
||||
true
|
||||
|
@ -1,13 +1,13 @@
|
||||
/*
|
||||
* Author: jaynus
|
||||
*
|
||||
*
|
||||
* Handles synced events being received. Server will log them, and server/client will execute them.
|
||||
*
|
||||
* Arguments [Client] :
|
||||
* 0: eventName (String)
|
||||
* 1: arguments (Array)
|
||||
* 2: ttl (Scalar)
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Boolean of success
|
||||
*/
|
||||
@ -17,7 +17,7 @@ PARAMS_3(_name,_args,_ttl);
|
||||
private["_internalData", "_eventLog", "_eventCode"];
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
@ -33,4 +33,4 @@ if(isServer) then {
|
||||
};
|
||||
|
||||
_eventCode = _internalData select 0;
|
||||
_args call _eventCode;
|
||||
_args call _eventCode;
|
||||
|
@ -5,9 +5,9 @@
|
||||
*
|
||||
* Argument:
|
||||
* 0: Name (String)
|
||||
* 1: Handler (Code)
|
||||
* 1: Handler (Code)
|
||||
* 2: TTL (Number or Code) [Optional]
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Boolean of success
|
||||
*/
|
||||
@ -25,10 +25,10 @@ if( (count _this) > 2) then {
|
||||
};
|
||||
|
||||
if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
|
||||
diag_log text format["[ACE] Error, duplicate synced event creation."];
|
||||
ACE_LOGERROR("Duplicate synced event creation.");
|
||||
false
|
||||
};
|
||||
|
||||
_eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
|
||||
_data = [_handler,[],_ttl,_eventId];
|
||||
HASH_SET(GVAR(syncedEvents),_name,_data);
|
||||
HASH_SET(GVAR(syncedEvents),_name,_data);
|
||||
|
@ -87,7 +87,9 @@ switch ((_type select 0)) do {
|
||||
_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]
|
||||
|
@ -10,6 +10,8 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
private ["_show"];
|
||||
PARAMS_1(_id);
|
||||
_show = if (count _this > 1) then {_this select 1} else {false};
|
||||
|
@ -40,7 +40,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then {
|
||||
private ["_varName","_cacheList"];
|
||||
// _eventName is defined on the function that calls the event
|
||||
#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
|
||||
// Get the list of caches to clear
|
||||
_varName = format [QGVAR(clearCache_%1),_eventName];
|
||||
@ -58,9 +58,9 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then {
|
||||
_cacheList pushBack [_namespace, _uid];
|
||||
};
|
||||
#ifdef DEBUG_MODE_FULL
|
||||
diag_log format ["Calculated result: %1 %2", _namespace, _uid];
|
||||
ACE_LOGINFO_2("Calculated result: %1 %2",_namespace,_uid);
|
||||
} else {
|
||||
diag_log format ["Cached result : %1 %2", _namespace, _uid];
|
||||
ACE_LOGINFO_2("Cached result: %1 %2",_namespace,_uid);
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
private "_version";
|
||||
_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";
|
||||
//_addons = activatedAddons; // broken with High-Command module, see #2134
|
||||
@ -30,7 +30,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter);
|
||||
private "_errorMsg";
|
||||
_errorMsg = format ["File %1.pbo is outdated.", _x];
|
||||
|
||||
diag_log text format ["[ACE] ERROR: %1", _errorMsg];
|
||||
ACE_LOGERROR(_errorMsg);
|
||||
|
||||
if (hasInterface) then {
|
||||
["[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";
|
||||
_errorMsg = format ["Extension %1.dll not installed.", _x];
|
||||
|
||||
diag_log text format ["[ACE] ERROR: %1", _errorMsg];
|
||||
ACE_LOGERROR(_errorMsg);
|
||||
|
||||
if (hasInterface) then {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
};
|
||||
} else {
|
||||
// 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");
|
||||
|
||||
@ -80,7 +80,7 @@ if (isMultiplayer) then {
|
||||
private "_errorMsg";
|
||||
_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 {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
@ -91,7 +91,7 @@ if (isMultiplayer) then {
|
||||
if !(_addons isEqualTo []) then {
|
||||
_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 {
|
||||
["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
|
||||
|
@ -67,7 +67,7 @@ if (!isServer) then {
|
||||
};
|
||||
|
||||
//[_error, "{systemChat _this}"] call FUNC(execRemoteFnc);
|
||||
diag_log text _error;
|
||||
ACE_LOGERROR(_error);
|
||||
|
||||
if (_mode < 2) then {
|
||||
_text = composeText [lineBreak, parseText format ["<t align='center'>%1</t>", _text]];
|
||||
|
@ -13,7 +13,7 @@
|
||||
*
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
|
||||
PARAMS_3(_unit,_target,_lockTarget);
|
||||
|
||||
if (isNil "_lockTarget") then {_lockTarget = false};
|
||||
@ -22,7 +22,7 @@ private "_owner";
|
||||
_owner = _target getVariable [QGVAR(owner), objNull];
|
||||
|
||||
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
|
||||
|
@ -55,4 +55,4 @@ if (_level <= _defaultLoglevel) then {
|
||||
// pass it onwards to the log function:
|
||||
// [0, [], compile format["%1",_msg], true] call FUNC(log);
|
||||
};
|
||||
true
|
||||
true
|
||||
|
@ -23,7 +23,7 @@ _force = False;
|
||||
|
||||
// no animation given
|
||||
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 {
|
||||
|
@ -5,7 +5,7 @@ PARAMS_1(_target);
|
||||
|
||||
{
|
||||
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 {
|
||||
if (typeName _x == "ARRAY") then {
|
||||
[_x select 0, _target] call (_x select 1);
|
||||
|
@ -20,7 +20,7 @@ private ["_newArray", "_index"];
|
||||
PARAMS_2(_array,_code);
|
||||
|
||||
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);
|
||||
[]
|
||||
};
|
||||
|
||||
|
@ -44,7 +44,7 @@ _letterGrid = false;
|
||||
if (((toLower _formatX) find "a") != -1) then {_letterGrid = true};
|
||||
if (((toLower _formatY) find "a") != -1) then {_letterGrid = true};
|
||||
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
|
||||
@ -64,13 +64,13 @@ _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5);
|
||||
_stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5);
|
||||
|
||||
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 {
|
||||
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 {
|
||||
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];
|
||||
|
@ -42,7 +42,7 @@ _parseConfigForDisplayNames = {
|
||||
if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
|
||||
if !([configFile >> "ACE_ServerSettings" >> _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);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -21,16 +21,16 @@ _eventIndex = _eventNames find _eventName;
|
||||
if(_eventIndex != -1) then {
|
||||
_events = (GVAR(events) select 1) select _eventIndex;
|
||||
#ifdef DEBUG_EVENTS
|
||||
diag_log text format[ARR_2("* Local Event: %1",_eventName)];
|
||||
diag_log text format[ARR_2(" args=%1",_eventArgs)];
|
||||
ACE_LOGINFO_1("* Local Event: %1",_eventName);
|
||||
ACE_LOGINFO_1(" args=%1",_eventArgs);
|
||||
#endif
|
||||
|
||||
|
||||
{
|
||||
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
|
||||
diag_log text format[ARR_2(" ID: %1",_forEachIndex)];
|
||||
ACE_LOGINFO_1(" ID: %1",_forEachIndex);
|
||||
#endif
|
||||
};
|
||||
} forEach _events;
|
||||
};
|
||||
};
|
||||
|
@ -21,7 +21,7 @@ _array = + _this select 0;
|
||||
_code = _this select 1;
|
||||
|
||||
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);
|
||||
[]
|
||||
};
|
||||
|
||||
|
@ -22,4 +22,4 @@ if !(_activated) exitWith {};
|
||||
[_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] 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));
|
||||
|
@ -44,4 +44,4 @@ if !(_activated) exitWith {};
|
||||
};
|
||||
} count _units;
|
||||
|
||||
diag_log text "[ACE]: WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.";
|
||||
ACE_LOGINFO("WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.");
|
||||
|
@ -20,7 +20,7 @@ PARAMS_3(_logic,_settingName,_moduleVariable);
|
||||
|
||||
// Check if the parameter is defined in the module
|
||||
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
|
||||
|
@ -5,7 +5,7 @@
|
||||
*
|
||||
* Argument:
|
||||
* 0: Name (String)
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Boolean of success
|
||||
*/
|
||||
@ -16,7 +16,7 @@ PARAMS_1(_name);
|
||||
private ["_data", "_eventId"];
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
@ -24,4 +24,4 @@ _data = HASH_GET(GVAR(syncedEvents),_name);
|
||||
_eventId = _data select 3;
|
||||
|
||||
[_eventId] call ace_common_fnc_removeEventHandler;
|
||||
HASH_REM(GVAR(syncedEvents),_name);
|
||||
HASH_REM(GVAR(syncedEvents),_name);
|
||||
|
27
addons/common/functions/fnc_runAfterSettingsInit.sqf
Normal file
27
addons/common/functions/fnc_runAfterSettingsInit.sqf
Normal 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];
|
||||
};
|
@ -16,8 +16,8 @@
|
||||
PARAMS_2(_eventName,_eventArgs);
|
||||
|
||||
#ifdef DEBUG_EVENTS
|
||||
diag_log text format[ARR_2("* Server Event: %1",_eventName)];
|
||||
diag_log text format[ARR_2(" args=%1",_eventArgs)];
|
||||
ACE_LOGINFO_1("* Server Event: %1",_eventName);
|
||||
ACE_LOGINFO_1(" args=%1",_eventArgs);
|
||||
#endif
|
||||
|
||||
ACEg = [_eventName, _eventArgs];
|
||||
|
@ -7,7 +7,7 @@
|
||||
* 0: Name (String)
|
||||
* 1: Arguments (Array)
|
||||
* 2: TTL (Number or Code) [Optional] for this specific event call
|
||||
*
|
||||
*
|
||||
* Return value:
|
||||
* Boolean of success
|
||||
*/
|
||||
@ -25,9 +25,9 @@ if( (count _this) > 2) then {
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
_eventData = [_name, _args,_ttl];
|
||||
["SEH", _eventData] call FUNC(globalEvent);
|
||||
["SEH", _eventData] call FUNC(globalEvent);
|
||||
|
@ -21,8 +21,8 @@
|
||||
PARAMS_3(_eventName,_eventTargets,_eventArgs);
|
||||
|
||||
#ifdef DEBUG_EVENTS
|
||||
diag_log text format[ARR_3("* Target Event: %1 - %2",_eventName,_eventTargets)];
|
||||
diag_log text format[ARR_2(" args=%1",_eventArgs)];
|
||||
ACE_LOGINFO_2("* Target Event: %1 - %2",_eventName,_eventTargets);
|
||||
ACE_LOGINFO_1(" args=%1",_eventArgs);
|
||||
#endif
|
||||
|
||||
ACEc = [_eventName, _eventTargets, _eventArgs];
|
||||
@ -30,4 +30,4 @@ if(!isServer) then {
|
||||
publicVariableServer "ACEc";
|
||||
} else {
|
||||
["ACEc", ACEc] call FUNC(_handleNetEvent);
|
||||
};
|
||||
};
|
||||
|
@ -37,11 +37,15 @@ if (_vehicle isKindOf "Ship" ) then {
|
||||
};
|
||||
|
||||
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 {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
|
||||
if (count _emptyPos == 0) exitwith {
|
||||
ACE_LOGWARNING_1("No safe empty spots to unload patient. %1",_emptyPos);
|
||||
false
|
||||
}; //consider displaying text saying there are no safe places to exit the vehicle
|
||||
|
||||
|
||||
unassignVehicle _unit;
|
||||
@ -75,4 +79,4 @@ _loaded = _vehicle getvariable [QGVAR(loaded_persons),[]];
|
||||
_loaded = _loaded - [_unit];
|
||||
_vehicle setvariable [QGVAR(loaded_persons),_loaded,true];
|
||||
|
||||
true
|
||||
true
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Common">
|
||||
<Key ID="STR_ACE_Common_ACETeam">
|
||||
@ -477,6 +477,7 @@
|
||||
<German>Überprüfe PBOs</German>
|
||||
<Czech>Zkontrolovat PBO</Czech>
|
||||
<Portuguese>Verificar PBOs</Portuguese>
|
||||
<French>Vérifier les PBOs</French>
|
||||
<Hungarian>PBO-k ellenőrzése</Hungarian>
|
||||
<Russian>Проверка аддонов</Russian>
|
||||
</Key>
|
||||
@ -487,6 +488,7 @@
|
||||
<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>
|
||||
<Russian>Выполняет проверку версий аддонов ACE у подключаемых игроков</Russian>
|
||||
<French>Ce module contrôle si les PBOs de chaque joueur sont corrects</French>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
|
||||
<English>Action</English>
|
||||
@ -495,6 +497,7 @@
|
||||
<German>Aktion</German>
|
||||
<Czech>Akce</Czech>
|
||||
<Portuguese>Ação</Portuguese>
|
||||
<French>Action</French>
|
||||
<Hungarian>Cselekvés</Hungarian>
|
||||
<Russian>Действие</Russian>
|
||||
</Key>
|
||||
@ -505,6 +508,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Что делать с игроками с неправильными аддонами?</Russian>
|
||||
</Key>
|
||||
@ -515,6 +519,7 @@
|
||||
<German>Einmal verwarnen</German>
|
||||
<Czech>Upozornit jednou</Czech>
|
||||
<Portuguese>Avisar uma vez</Portuguese>
|
||||
<French>Avertir une fois</French>
|
||||
<Hungarian>Egyszeri figyelmeztetés</Hungarian>
|
||||
<Russian>Предупредить один раз</Russian>
|
||||
</Key>
|
||||
@ -525,6 +530,7 @@
|
||||
<German>Immer verwarnen</German>
|
||||
<Czech>Upozornit (permanentně)</Czech>
|
||||
<Portuguese>Avisar (permanente)</Portuguese>
|
||||
<French>Avertir (permanent)</French>
|
||||
<Hungarian>Figyelmeztetés (tartós)</Hungarian>
|
||||
<Russian>Предупреждать (постоянно)</Russian>
|
||||
</Key>
|
||||
@ -535,6 +541,7 @@
|
||||
<German>Kicken</German>
|
||||
<Czech>Vyhodit</Czech>
|
||||
<Portuguese>Chutar</Portuguese>
|
||||
<French>Ejecter</French>
|
||||
<Hungarian>Kirúgás</Hungarian>
|
||||
<Russian>Кикнуть</Russian>
|
||||
</Key>
|
||||
@ -545,6 +552,7 @@
|
||||
<German>Alle Addons überprüfen</German>
|
||||
<Czech>Zkontrolovat všechny addony</Czech>
|
||||
<Portuguese>Verificar todos addons</Portuguese>
|
||||
<French>Vérifier tous les addons</French>
|
||||
<Hungarian>Összes bővítmény ellenőrzése</Hungarian>
|
||||
<Russian>Проверять все аддоны</Russian>
|
||||
</Key>
|
||||
@ -555,6 +563,7 @@
|
||||
<German>Alle Addons anstatt nur ACE überprüfen?</German>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Проверять все аддоны, а не только ACE?</Russian>
|
||||
</Key>
|
||||
@ -565,6 +574,7 @@
|
||||
<German>Whitelist</German>
|
||||
<Czech>Seznam povolených</Czech>
|
||||
<Portuguese>Lista branca</Portuguese>
|
||||
<French>Liste blanche</French>
|
||||
<Hungarian>Fehérlista</Hungarian>
|
||||
<Russian>Вайтлист доп. аддонов</Russian>
|
||||
</Key>
|
||||
@ -575,6 +585,7 @@
|
||||
<German>Welche Addons werden dennoch erlaubt?</German>
|
||||
<Czech>Jaké addony jsou povoleny?</Czech>
|
||||
<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>
|
||||
<Russian>Какие аддоны дополнительно разрешены?</Russian>
|
||||
</Key>
|
||||
@ -585,6 +596,7 @@
|
||||
<German>LSD-Fahrzeuge</German>
|
||||
<Czech>LSD vozidla</Czech>
|
||||
<Portuguese>Veículos LSD</Portuguese>
|
||||
<French>LSD - Véhicules</French>
|
||||
<Hungarian>LSD járművek</Hungarian>
|
||||
<Russian>Транспорт под LSD</Russian>
|
||||
</Key>
|
||||
@ -595,6 +607,7 @@
|
||||
<German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
|
||||
<Czech>Přidá LSD efekt pro synchronizované vozidla</Czech>
|
||||
<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>
|
||||
<Russian>Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам</Russian>
|
||||
</Key>
|
||||
@ -605,6 +618,7 @@
|
||||
<Portuguese>Ativa dispositivo de mão</Portuguese>
|
||||
<Polish>Przełącz urządzenie podręczne</Polish>
|
||||
<Czech>Přepnout ruční zařízení</Czech>
|
||||
<French>Allumer l'ordinateur de poche</French>
|
||||
<Hungarian>Kézi eszköz kapcsolása</Hungarian>
|
||||
<Russian>Включить портативное устройство</Russian>
|
||||
</Key>
|
||||
@ -615,6 +629,7 @@
|
||||
<Portuguese>Fecha dispositivo de mão</Portuguese>
|
||||
<Polish>Zamknij urządzenie podręczne</Polish>
|
||||
<Czech>Zavřít ruční zařízení</Czech>
|
||||
<French>Fermer l'ordinateur de poche</French>
|
||||
<Hungarian>Kézi eszköz bezárása</Hungarian>
|
||||
<Russian>Закрыть портативное устройство</Russian>
|
||||
</Key>
|
||||
@ -625,6 +640,7 @@
|
||||
<Portuguese>Troca dispositivos de mão</Portuguese>
|
||||
<Polish>Następne urządzenie podręczne</Polish>
|
||||
<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>
|
||||
<Russian>Следующее портативное устройство</Russian>
|
||||
</Key>
|
||||
@ -677,7 +693,9 @@
|
||||
<Key ID="STR_ACE_Common_VehiclesOnly">
|
||||
<English>Vehicles only</English>
|
||||
<Polish>Tylko pojazdy</Polish>
|
||||
<Portuguese>Somente veículos</Portuguese>
|
||||
<Russian>Только в транспорте</Russian>
|
||||
<Czech>Pouze vozidla</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_DoNotForce">
|
||||
<English>Do Not Force</English>
|
||||
@ -691,32 +709,42 @@
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryEquipment">
|
||||
<English>ACE3 Equipment</English>
|
||||
<Polish>ACE3 Wyposażenie</Polish>
|
||||
<Portuguese>Equipamentos ACE3</Portuguese>
|
||||
<Russian>ACE3 Снаряжение</Russian>
|
||||
<Czech>ACE3 Vybavení</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryCommon">
|
||||
<English>ACE3 Common</English>
|
||||
<Polish>ACE3 Ogólne</Polish>
|
||||
<Portuguese>Comum ACE3</Portuguese>
|
||||
<Russian>ACE3 Общие</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryWeapons">
|
||||
<English>ACE3 Weapons</English>
|
||||
<Polish>ACE3 Broń</Polish>
|
||||
<Portuguese>Armamento ACE3</Portuguese>
|
||||
<Russian>ACE3 Оружие</Russian>
|
||||
<Czech>ACE3 Zbraně</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryMovement">
|
||||
<English>ACE3 Movement</English>
|
||||
<Polish>ACE3 Ruch</Polish>
|
||||
<Portuguese>Movimento ACE3</Portuguese>
|
||||
<Russian>ACE3 Перемещение</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryScopeAdjustment">
|
||||
<English>ACE3 Scope Adjustment</English>
|
||||
<Polish>ACE3 Regulacja optyki</Polish>
|
||||
<Portuguese>Ajuste de luneta ACE3</Portuguese>
|
||||
<Russian>ACE3 Прицелы</Russian>
|
||||
<Czech>ACE3 Nastavení optiky</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Common_ACEKeybindCategoryVehicles">
|
||||
<English>ACE3 Vehicles</English>
|
||||
<Polish>ACE3 Pojazdy</Polish>
|
||||
<Portuguese>Veículos ACE3</Portuguese>
|
||||
<Russian>ACE3 Транспорт</Russian>
|
||||
<Czech>ACE3 Vozidla</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="concertina_wire">
|
||||
<Key ID="STR_ACE_CONCERTINA_WIRE">
|
||||
@ -7,7 +7,7 @@
|
||||
<Russian>Колючая проволока</Russian>
|
||||
<Polish>Koncentrina</Polish>
|
||||
<Spanish>Alambre de espino</Spanish>
|
||||
<French>Concertina wire</French>
|
||||
<French>Fill barbelé</French>
|
||||
<Czech>Ostnatý drát</Czech>
|
||||
<Italian>Concertina wire</Italian>
|
||||
<Hungarian>Concertina wire</Hungarian>
|
||||
@ -19,7 +19,7 @@
|
||||
<Russian>Колючая проволока (моток)</Russian>
|
||||
<Polish>Zwój koncentriny</Polish>
|
||||
<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>
|
||||
<Italian>Concertina wire coil</Italian>
|
||||
<Hungarian>Concertina wire coil</Hungarian>
|
||||
@ -31,7 +31,7 @@
|
||||
<Russian>Демонтировать колючую проволоку</Russian>
|
||||
<Polish>Zwiń koncentrinę</Polish>
|
||||
<Spanish>Desmontar alambre de espino</Spanish>
|
||||
<French>Dismount Concertina wire</French>
|
||||
<French>Descendre le fil barbelé</French>
|
||||
<Czech>Svinout ostnatý drát</Czech>
|
||||
<Italian>Dismount Concertina wire</Italian>
|
||||
<Hungarian>Dismount Concertina wire</Hungarian>
|
||||
@ -43,7 +43,7 @@
|
||||
<Russian>Монтировать колючую проволоку</Russian>
|
||||
<Polish>Rozwiń koncentrinę</Polish>
|
||||
<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>
|
||||
<Italian>Deploy Concertina wire</Italian>
|
||||
<Hungarian>Deploy Concertina wire</Hungarian>
|
||||
|
@ -4,7 +4,7 @@ class CfgVehicles {
|
||||
class ACE_SelfActions {
|
||||
class ACE_Equipment {
|
||||
class GVAR(menu) {
|
||||
displayName = "Configure DAGR";
|
||||
displayName = CSTRING(ConfigureDAGR);
|
||||
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
|
||||
statement = QUOTE(call FUNC(menuInit));
|
||||
showDisabled = 0;
|
||||
@ -12,7 +12,7 @@ class CfgVehicles {
|
||||
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
|
||||
exceptions[] = {"isNotInside", "isNotSitting"};
|
||||
class GVAR(toggle) {
|
||||
displayName = "Toggle DAGR";
|
||||
displayName = CSTRING(ToggleDAGR);
|
||||
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
|
||||
statement = QUOTE(call FUNC(toggleOverlay));
|
||||
showDisabled = 0;
|
||||
@ -30,7 +30,7 @@ class CfgVehicles {
|
||||
author[] = {"Rosuto", "Ruthberg"};
|
||||
scope = 2;
|
||||
scopeCurator = 2;
|
||||
displayName = "DAGR";
|
||||
displayName = CSTRING(Name);
|
||||
vehicleClass = "Items";
|
||||
class TransportItems {
|
||||
MACRO_ADDITEM(ACE_DAGR,1);
|
||||
|
@ -6,9 +6,9 @@ class CfgWeapons {
|
||||
class ACE_DAGR: ACE_ItemCore {
|
||||
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
|
||||
scope = 2;
|
||||
displayName = "DAGR";
|
||||
displayName = CSTRING(Name);
|
||||
model = QUOTE(PATHTOF(data\DAGR.p3d));
|
||||
descriptionShort = "";
|
||||
descriptionShort = CSTRING(Description);
|
||||
picture = PATHTOF(UI\DAGR_Icon.paa);
|
||||
icon = "iconObject_circle";
|
||||
mapSize = 0.034;
|
||||
|
@ -1,5 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<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>
|
||||
</Project>
|
@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"];
|
||||
if (_caller != ACE_player) exitWith {};
|
||||
|
||||
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);
|
||||
|
@ -22,6 +22,6 @@
|
||||
params ["_caller", "_target", "_errorMsg"];
|
||||
|
||||
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);
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disarming">
|
||||
<Key ID="STR_ACE_Disarming_OpenInventory">
|
||||
@ -14,4 +14,4 @@
|
||||
<Portuguese>Abrir inventário</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Disposable">
|
||||
<Key ID="STR_ACE_Disposable_UsedTube">
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Dragging">
|
||||
<Key ID="STR_ACE_Dragging_Drag">
|
||||
@ -50,4 +50,4 @@
|
||||
<Russian>Нести</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -29,7 +29,7 @@ if (isServer) then {
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
};
|
||||
|
||||
if !(hasInterface) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(PlacedCount) = 0;
|
||||
GVAR(Setup) = objNull;
|
||||
|
@ -23,4 +23,4 @@ params ["_logic"];
|
||||
[_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule);
|
||||
[_logic, QGVAR(ExplodeOnDefuse),"ExplodeOnDefuse"] call EFUNC(Common,readSettingFromModule);
|
||||
|
||||
diag_log text "[ACE]: Explosive Module Initialized.";
|
||||
ACE_LOGINFO("Explosive Module Initialized.");
|
||||
|
@ -36,7 +36,7 @@ if (!isNull _setupPlaceholderObject) then {
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
@ -44,7 +44,7 @@ _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Trigge
|
||||
_triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig;
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Explosives">
|
||||
<Key ID="STR_ACE_Explosives_Menu">
|
||||
@ -76,7 +76,10 @@
|
||||
<Key ID="STR_ACE_Explosives_BlockedAction">
|
||||
<English>Blocked</English>
|
||||
<Spanish>Obstruido</Spanish>
|
||||
<Portuguese>Bloqueado</Portuguese>
|
||||
<Russian>Заблокировано</Russian>
|
||||
<Czech>Blokováno</Czech>
|
||||
<Polish>Zablokowany</Polish>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Explosives_CancelAction">
|
||||
<English>Cancel</English>
|
||||
@ -529,6 +532,7 @@
|
||||
<German>Sprengstoffsystem</German>
|
||||
<Czech>Systém výbušnin</Czech>
|
||||
<Portuguese>Sistema de explosivos</Portuguese>
|
||||
<French>Module explosifs</French>
|
||||
<Hungarian>Robbanóanyag-rendszer</Hungarian>
|
||||
<Russian>Взрывные устройства</Russian>
|
||||
</Key>
|
||||
@ -539,6 +543,7 @@
|
||||
<German>Benötigt Sprengstoffexperten?</German>
|
||||
<Czech>Vyžadovat specialistu?</Czech>
|
||||
<Portuguese>Requer especialista?</Portuguese>
|
||||
<French>Requiert un spécialiste?</French>
|
||||
<Hungarian>Specialisták igénylése?</Hungarian>
|
||||
<Russian>Требуется специалист?</Russian>
|
||||
</Key>
|
||||
@ -549,6 +554,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет</Russian>
|
||||
</Key>
|
||||
@ -559,6 +565,7 @@
|
||||
<German>Bestrafe Nicht-Sprengstoffexperten?</German>
|
||||
<Czech>Potrestat, pokud není specialista?</Czech>
|
||||
<Portuguese>Punir não especialistas?</Portuguese>
|
||||
<French>Punir les non-spécialistes?</French>
|
||||
<Hungarian>Nem-specialisták büntetése?</Hungarian>
|
||||
<Russian>Штраф не-специалистам?</Russian>
|
||||
</Key>
|
||||
@ -569,6 +576,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет</Russian>
|
||||
</Key>
|
||||
@ -578,6 +586,7 @@
|
||||
<Polish>Eksplozja przy rozbrajaniu?</Polish>
|
||||
<Czech>Explodovat při zneškodňování?</Czech>
|
||||
<Spanish>Explotar al desactivar?</Spanish>
|
||||
<French>Explosion si désamorçage?</French>
|
||||
<Hungarian>Robbanás hatástalanításkor?</Hungarian>
|
||||
<Russian>Взрыв при разминир.?</Russian>
|
||||
</Key>
|
||||
@ -587,6 +596,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да</Russian>
|
||||
</Key>
|
||||
@ -596,8 +606,9 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Этот модуль управляет настройками, связанными со взрывными устройствами</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="FCS">
|
||||
<Key ID="STR_ACE_FCS_LaseTarget">
|
||||
@ -74,4 +74,4 @@
|
||||
<Russian>СУО обнулен.</Russian>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -4,62 +4,82 @@
|
||||
<Key ID="STR_ACE_finger_indicatorForSelf_name">
|
||||
<English>Show pointing indicator to self</English>
|
||||
<Russian>Индикатор пальца для показывающего</Russian>
|
||||
<French>Afficher un indicateur de pointage pour soit même</French>
|
||||
<Polish>Pokaż indykator wskazywania palcem dla siebie</Polish>
|
||||
<Hungarian>Saját mutatási indikátor megjelenítése</Hungarian>
|
||||
<Portuguese>Mostrar indicador para si mesmo</Portuguese>
|
||||
</Key>
|
||||
<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>
|
||||
<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>
|
||||
<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 ID="STR_ACE_finger_indicatorColor_name">
|
||||
<English>Pointing indicator</English>
|
||||
<Russian>Индикатор указания пальцем</Russian>
|
||||
<French>Indicateur de pointage</French>
|
||||
<Polish>Indykator palca</Polish>
|
||||
<Hungarian>Ujj-indikátor</Hungarian>
|
||||
<Portuguese>Indicador de apontamento</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_indicatorColor_description">
|
||||
<English>Color of the pointing indicator circle</English>
|
||||
<Russian>Цвет индикатора указания пальцем</Russian>
|
||||
<French>Couleur de l'indicateur</French>
|
||||
<Polish>Kolor okręgu wyświetlanego przy wskazywaniu palcem</Polish>
|
||||
<Hungarian>Mutatási indikátor körének színe</Hungarian>
|
||||
<Portuguese>Cor do círculo de indicação</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_keyComb">
|
||||
<English>Action "point a finger at"</English>
|
||||
<Russian>Действие "показать пальцем на"</Russian>
|
||||
<French>Action 'Pointer le doigt à"</French>
|
||||
<Polish>Akcja "wskaż palcem"</Polish>
|
||||
<Hungarian>Cselekvés "ujj rámutatása"</Hungarian>
|
||||
<Portuguese>Ação "Apontar um dedo para"</Portuguese>
|
||||
</Key>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_moduleSettings_displayName">
|
||||
<English>Pointing Settings</English>
|
||||
<French>Option "Montrer du doigt"</French>
|
||||
<Polish>Ustawienia wskazywania palcem</Polish>
|
||||
<Hungarian>Ujj beállításai</Hungarian>
|
||||
<Portuguese>Preferências de apontamento</Portuguese>
|
||||
<Russian>Настройки указания пальцем</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_enabled_displayName">
|
||||
<English>Pointing Enabled</English>
|
||||
<French>Activer "Montrer du doigt"</French>
|
||||
<Polish>Aktywuj wskazywanie</Polish>
|
||||
<Hungarian>Mutatás engedélyezése</Hungarian>
|
||||
<Portuguese>Apontamento ativado</Portuguese>
|
||||
<Russian>Указание пальцем включено</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_maxRange_displayName">
|
||||
<English>Pointing Max Range</English>
|
||||
<French>Distance maximale du pointage</French>
|
||||
<Polish>Maks. zasięg wskazywania</Polish>
|
||||
<Hungarian>Ujj maximum hatótávja</Hungarian>
|
||||
<Portuguese>Distância máxima do apontamento</Portuguese>
|
||||
<Russian>Макс. дальность</Russian>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_finger_maxRange_description">
|
||||
<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>
|
||||
<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>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
// Exit on Headless as well
|
||||
if !(hasInterface) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
LOG(MSG_INIT);
|
||||
|
||||
|
@ -4,32 +4,44 @@
|
||||
<Key ID="STR_ACE_Flashlights_MX991_DisplayName">
|
||||
<English>Fulton MX-991</English>
|
||||
<Polish>Fulton MX-991</Polish>
|
||||
<Portuguese>Fulton MX-991</Portuguese>
|
||||
<Russian>Fulton MX-991</Russian>
|
||||
<Czech>Fulton MX-991</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_MX991_Description">
|
||||
<English>Flashlight with red filter. For use on map.</English>
|
||||
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
|
||||
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
|
||||
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
|
||||
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_XL50_DisplayName">
|
||||
<English>Maglite XL50</English>
|
||||
<Polish>Maglite XL50</Polish>
|
||||
<Portuguese>Maglite XL50</Portuguese>
|
||||
<Russian>Maglite XL50</Russian>
|
||||
<Czech>Maglite XL50</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_XL50_Description">
|
||||
<English>White mini flashlight. For use on map.</English>
|
||||
<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>
|
||||
<Czech>Bílá mini svítilna. Pro nahlédnutí do mapy.</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_KSF1_DisplayName">
|
||||
<English>KSF-1</English>
|
||||
<Polish>KSF-1</Polish>
|
||||
<Portuguese>KSF-1</Portuguese>
|
||||
<Russian>KSF-1</Russian>
|
||||
<Czech>KSF-1</Czech>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Flashlights_KSF1_Description">
|
||||
<English>Flashlight with red filter. For use on map.</English>
|
||||
<Polish>Latarka z czerwonym filtrem. Używana do podświetlania mapy.</Polish>
|
||||
<Portuguese>Lanterna com filtro vermelho. Para uso no mapa.</Portuguese>
|
||||
<Russian>Фонарь с красным светофильтром. Для использования на карте.</Russian>
|
||||
<Czech>Svítilna s červeným filtrem. Pro nahlédnutí do mapy.</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,6 +1,6 @@
|
||||
//fnc_doSpall.sqf
|
||||
#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"];
|
||||
|
||||
@ -86,7 +86,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then {
|
||||
if(_gC == 0) then { _gC = 2440; _warn = true;};
|
||||
|
||||
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;
|
||||
|
@ -67,7 +67,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C");
|
||||
if(_gC == 0) then { _gC = 2440; _warn = true;};
|
||||
|
||||
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;
|
||||
@ -187,9 +187,9 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
_sectorOffset = 360 * (_i - 1) / (_randomCount max 1);
|
||||
_randomDir = random(_sectorSize);
|
||||
_vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))];
|
||||
|
||||
|
||||
_fp = (_fragPower-(random (_fragPowerRandom)));
|
||||
|
||||
|
||||
_vel = _vec vectorMultiply _fp;
|
||||
|
||||
_fragType = round (random ((count _fragTypes)-1));
|
||||
@ -197,7 +197,7 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
_fragObj setPosASL _lastPos;
|
||||
_fragObj setVectorDir _vec;
|
||||
_fragObj setVelocity _vel;
|
||||
|
||||
|
||||
if(GVAR(traceFrags)) then {
|
||||
GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1;
|
||||
[ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack);
|
||||
@ -205,7 +205,7 @@ if(_isArmed && (count _objects) > 0) then {
|
||||
_fragCount = _fragCount + 1;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
};
|
||||
// #ifdef DEBUG_MODE_FULL
|
||||
// ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)];
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Frag">
|
||||
<Key ID="STR_ACE_Frag_EnableFrag">
|
||||
@ -8,6 +8,7 @@
|
||||
<German>Splittersimulation</German>
|
||||
<Czech>Simulace fragmentace</Czech>
|
||||
<Portuguese>Simulação de fragmentação</Portuguese>
|
||||
<French>Simulation de la fragmentation</French>
|
||||
<Hungarian>Repesz-szimuláció</Hungarian>
|
||||
<Russian>Симуляция осколков</Russian>
|
||||
</Key>
|
||||
@ -18,6 +19,7 @@
|
||||
<German>Aktiviere die ACE-Splittersimulation</German>
|
||||
<Czech>Povolit ACE simulaci fragmentace</Czech>
|
||||
<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>
|
||||
<Russian>Включить симуляцию осколков ACE</Russian>
|
||||
</Key>
|
||||
@ -28,6 +30,7 @@
|
||||
<German>Explosionssimulation</German>
|
||||
<Czech>Simulace úlomků</Czech>
|
||||
<Portuguese>Simulação de estilhaços</Portuguese>
|
||||
<French>Simulation d'éclat</French>
|
||||
<Hungarian>Pattogzás-szimuláció</Hungarian>
|
||||
<Russian>Симуляция обломков</Russian>
|
||||
</Key>
|
||||
@ -38,6 +41,7 @@
|
||||
<German>Aktiviere ACE-Explosionssimulation</German>
|
||||
<Czech>Povolit ACE simulaci úlomků</Czech>
|
||||
<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>
|
||||
<Russian>Включить симуляцию обломков ACE</Russian>
|
||||
</Key>
|
||||
@ -48,6 +52,7 @@
|
||||
<German>Maximalzahl der verfolgten Projektile</German>
|
||||
<Czech>Maximální počet sledovaných projektilů</Czech>
|
||||
<Portuguese>Máximo de projéteis rastreados</Portuguese>
|
||||
<French>Nombre maximum de projectile suivis</French>
|
||||
<Hungarian>Maximum követett repeszek</Hungarian>
|
||||
<Russian>Макс. количество отслеживаемых снарядов</Russian>
|
||||
</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 (>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ů ( >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 (> 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 (>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>
|
||||
<Russian>Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов)</Russian>
|
||||
</Key>
|
||||
@ -68,6 +74,7 @@
|
||||
<Polish>Maks. liczba pocisków na klatkę</Polish>
|
||||
<Czech>Maximální počet projektilů ze jeden snímek</Czech>
|
||||
<Portuguese>Projéteis máximos por quadro</Portuguese>
|
||||
<French>Nombre maximal de projectile par image</French>
|
||||
<Hungarian>Maximum repesz/képkocka</Hungarian>
|
||||
<Russian>Макс. количество снарядов за кадр</Russian>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS.</Russian>
|
||||
</Key>
|
||||
@ -88,6 +96,7 @@
|
||||
<Czech>(Pouze SP) Debug sledování Frag/Úlomků</Czech>
|
||||
<German>(nur SP) Splitter-/Explosions-Debug-Verfolgung</German>
|
||||
<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>
|
||||
<Russian>(Только для одиночной игры) Отслеживаение/отладка осколков</Russian>
|
||||
</Key>
|
||||
@ -98,6 +107,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Russian>(Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры.</Russian>
|
||||
</Key>
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
if !(hasInterface) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
// Setup ppEffect
|
||||
GVAR(GForces_CC) = ppEffectCreate ["ColorCorrections", 4215];
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_interval", "_player", "_newVel", "_accel", "_currentGForce", "_average", "_sum", "_classCoef", "_suitCoef", "_gBlackOut", "_gRedOut", "_g", "_gBO", "_coef", "_strength"];
|
||||
|
||||
|
||||
EXPLODE_2_PVT(_this,_params,_pfhId);
|
||||
|
||||
_interval = ACE_time - GVAR(lastUpdateTime);
|
||||
|
@ -14,6 +14,7 @@
|
||||
* Public: Yes
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (call FUNC(ExternalCamera)) exitWith {};
|
||||
if ([ace_player] call FUNC(isGogglesVisible)) exitWith {
|
||||
100 cutRsc["RscACE_GogglesEffects", "PLAIN",2,false];
|
||||
|
@ -16,6 +16,7 @@
|
||||
* Public: No
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private["_postProcessColour", "_postProcessTintAmount", "_glassesClassname", "_glassImagePath"];
|
||||
|
||||
_glassesClassname = _this select 0;
|
||||
|
@ -18,7 +18,7 @@
|
||||
if (!alive ace_player) exitWith {};
|
||||
if (true) then {
|
||||
// Detect if curator interface is open and disable effects
|
||||
if (!isNull(findDisplay 312)) exitWith {
|
||||
if !(isNull curatorCamera) exitWith {
|
||||
if (GVAR(EffectsActive)) then {
|
||||
call FUNC(removeGlassesEffect);
|
||||
};
|
||||
|
@ -15,17 +15,14 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
PARAMS_1(_unit);
|
||||
|
||||
params ["_unit"];
|
||||
private ["_currentGlasses", "_result", "_position", "_visible"];
|
||||
|
||||
_currentGlasses = goggles _unit;
|
||||
_result = false;
|
||||
|
||||
if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")};
|
||||
|
||||
if (_currentGlasses != "") then {
|
||||
_position =(getPosASLW _unit);
|
||||
_position = getPosASLW _unit;
|
||||
if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith {
|
||||
_result = ([_currentGlasses] call FUNC(isDivingGoggles));
|
||||
};
|
||||
|
@ -28,66 +28,67 @@ class CfgAmmo {
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
class 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;
|
||||
};
|
||||
|
||||
class 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;
|
||||
};
|
||||
|
||||
class 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;
|
||||
};
|
||||
|
||||
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 {
|
||||
GVAR(flashbang) = 1;
|
||||
model = PATHTOF(models\ACE_m84_thrown.p3d);
|
||||
dangerRadiusHit = -1;
|
||||
suppressionRadiusHit = 20;
|
||||
typicalSpeed = 22;
|
||||
cost = 40;
|
||||
explosive = 1E-7;
|
||||
deflecting = 15;
|
||||
explosionTime = 2.3;
|
||||
timeToLive = 6;
|
||||
fuseDistance = 2.3;
|
||||
grenadeFireSound[] = {};
|
||||
grenadeBurningSound[] = {};
|
||||
aiAmmoUsageFlags = "0";
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
class CfgMagazines {
|
||||
class HandGrenade;
|
||||
class ACE_HandFlare_Base: HandGrenade {
|
||||
@ -8,55 +9,60 @@ class CfgMagazines {
|
||||
mass = 4;
|
||||
initSpeed = 22;
|
||||
};
|
||||
|
||||
class ACE_HandFlare_White: ACE_HandFlare_Base {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_White";
|
||||
displayname = CSTRING(M127A1_White_Name);
|
||||
descriptionshort = CSTRING(M127A1_White_Description);
|
||||
displayNameShort = CSTRING(M127A1_White_NameShort);
|
||||
model = "\A3\weapons_f\ammo\flare_white";
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa";
|
||||
ammo = "ACE_G_Handflare_White";
|
||||
};
|
||||
|
||||
class ACE_HandFlare_Red: ACE_HandFlare_Base {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Red";
|
||||
displayname = CSTRING(M127A1_Red_Name);
|
||||
descriptionshort = CSTRING(M127A1_Red_Description);
|
||||
displayNameShort = CSTRING(M127A1_Red_NameShort);
|
||||
model = "\A3\weapons_f\ammo\flare_red";
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa";
|
||||
ammo = "ACE_G_Handflare_Red";
|
||||
};
|
||||
|
||||
class ACE_HandFlare_Green: ACE_HandFlare_Base {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Green";
|
||||
displayname = CSTRING(M127A1_Green_Name);
|
||||
descriptionshort = CSTRING(M127A1_Green_Description);
|
||||
displayNameShort = CSTRING(M127A1_Green_NameShort);
|
||||
model = "\A3\weapons_f\ammo\flare_green";
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa";
|
||||
ammo = "ACE_G_Handflare_Green";
|
||||
};
|
||||
|
||||
class ACE_HandFlare_Yellow: ACE_HandFlare_Base {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
scope = 2;
|
||||
ammo = "ACE_F_Hand_Yellow";
|
||||
displayname = CSTRING(M127A1_Yellow_Name);
|
||||
descriptionshort = CSTRING(M127A1_Yellow_Description);
|
||||
displayNameShort = CSTRING(M127A1_Yellow_NameShort);
|
||||
model = "\A3\weapons_f\ammo\flare_yellow";
|
||||
picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa";
|
||||
ammo = "ACE_G_Handflare_Yellow";
|
||||
};
|
||||
|
||||
class ACE_M84: HandGrenade {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
ammo = "ACE_G_M84";
|
||||
displayname = CSTRING(M84_Name);
|
||||
descriptionshort = CSTRING(M84_Description);
|
||||
displayNameShort = "M84";
|
||||
mass = 4;
|
||||
model = PATHTOF(models\ACE_m84.p3d);
|
||||
picture = PATHTOF(UI\ACE_m84_x_ca.paa);
|
||||
ammo = "ACE_G_M84";
|
||||
mass = 4;
|
||||
};
|
||||
|
||||
class 3Rnd_UGL_FlareGreen_F;
|
||||
@ -65,6 +71,7 @@ class CfgMagazines {
|
||||
ammo = "F_40mm_Green";
|
||||
initSpeed = 120;
|
||||
};
|
||||
|
||||
class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
ammo = "F_40mm_Red";
|
||||
|
@ -2,3 +2,7 @@
|
||||
class ACE_M84FlashbangEffect {
|
||||
// empty
|
||||
};
|
||||
|
||||
class ACE_HandFlareEffect {
|
||||
// empty
|
||||
};
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
["flashbangExplosion", DFUNC(flashbangExplosionEH)] call EFUNC(common,addEventHandler);
|
||||
|
||||
if !(hasInterface) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(flashbangPPEffectCC) = ppEffectCreate ["ColorCorrections", 4265];
|
||||
GVAR(flashbangPPEffectCC) ppEffectForceInNVG true;
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
ADDON = false;
|
||||
|
||||
PREP(flare);
|
||||
PREP(flashbangExplosionEH);
|
||||
PREP(flashbangThrownFuze);
|
||||
PREP(nextMode);
|
||||
|
40
addons/grenades/functions/fnc_flare.sqf
Normal file
40
addons/grenades/functions/fnc_flare.sqf
Normal 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);
|
@ -94,7 +94,7 @@ _affected = _grenade nearEntities ["CAManBase", 20];
|
||||
}, [_light], 0.1] call EFUNC(common,waitAndExecute);
|
||||
|
||||
// blind player
|
||||
if (_strength > 0.1) then {
|
||||
if (_strength > 0.1 && hasInterface) then {
|
||||
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) ppEffectCommit 0.01;
|
||||
|
@ -21,22 +21,50 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_mode", "_fuzeTime"];
|
||||
params ["_unit", "_weapon", "", "", "", "", "_projectile"];
|
||||
params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"];
|
||||
|
||||
if (_unit != ACE_player) 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];
|
||||
|
||||
if (_mode != 0) then {
|
||||
private "_velocity";
|
||||
|
||||
_velocity = velocity _projectile;
|
||||
|
||||
switch (_mode) do {
|
||||
//high throw
|
||||
case 1 : {
|
||||
case 1 : {
|
||||
_velocity = [
|
||||
0.5 * (_velocity select 0),
|
||||
0.5 * (_velocity select 1),
|
||||
@ -44,24 +72,18 @@ if (_mode != 0) then {
|
||||
];
|
||||
};
|
||||
//precise throw
|
||||
case 2 : {
|
||||
case 2 : {
|
||||
_velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity);
|
||||
};
|
||||
//roll grande
|
||||
case 3 : {
|
||||
case 3 : {
|
||||
//@todo
|
||||
};
|
||||
//drop grenade
|
||||
case 4 : {
|
||||
case 4 : {
|
||||
_velocity = [0, 0, 0];
|
||||
};
|
||||
};
|
||||
|
||||
_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);
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Grenades">
|
||||
<Key ID="STR_ACE_Grenades_SwitchGrenadeMode">
|
||||
|
@ -20,5 +20,4 @@ if ((_logic getVariable "DisableEarRinging") != -1) then {
|
||||
};
|
||||
|
||||
[_logic, QGVAR(enabledForZeusUnits), "enabledForZeusUnits"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
diag_log text "[ACE]: Hearing Module Initialized.";
|
||||
ACE_LOGINFO("Hearing Module Initialized.");
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Hearing">
|
||||
<Key ID="STR_ACE_Hearing_EarPlugs_Name">
|
||||
@ -116,6 +116,7 @@
|
||||
<German>Gehör</German>
|
||||
<Czech>Sluch</Czech>
|
||||
<Portuguese>Audição</Portuguese>
|
||||
<French>Audition</French>
|
||||
<Hungarian>Hallás</Hungarian>
|
||||
<Russian>Слух</Russian>
|
||||
</Key>
|
||||
@ -126,6 +127,7 @@
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<Czech>Povolit ztrátu sluchu?</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
<French>Activer la surdité au combat?</French>
|
||||
<Hungarian>Harci süketség engedélyezése?</Hungarian>
|
||||
<Russian>Оглушение</Russian>
|
||||
</Key>
|
||||
@ -136,24 +138,28 @@
|
||||
<German>Aktiviere Taubheit im Gefecht?</German>
|
||||
<Czech>Povolit ztrátu sluchu?</Czech>
|
||||
<Portuguese>Ativar surdez em combate?</Portuguese>
|
||||
<Hungarian>Harci süketség engedélyezése?</Hungarian>
|
||||
<Russian>Уменьшает способность игроков слышать при повреждении слуха</Russian>
|
||||
</Key>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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 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>
|
||||
<Portuguese>Afeta Zeus CR</Portuguese>
|
||||
</Key>
|
||||
<Key ID="STR_ACE_Hearing_enabledForZeusUnits_Description">
|
||||
<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>
|
||||
</Package>
|
||||
</Project>
|
||||
|
@ -13,6 +13,7 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
params ["_huntIR"];
|
||||
|
||||
GVAR(huntIR) = _huntIR;
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="HuntIR">
|
||||
<Key ID="STR_DN_ACE_HUNTIRBOX">
|
||||
@ -194,4 +194,4 @@
|
||||
<Portuguese>Esc - Sai do Ajuda</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -104,3 +104,25 @@ addMissionEventHandler ["Draw3D", DFUNC(render)];
|
||||
}];
|
||||
};
|
||||
}] 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);
|
||||
|
||||
|
@ -44,7 +44,7 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then {
|
||||
_parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode);
|
||||
if (isNil {_parentNode}) exitWith {
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Interact_Menu">
|
||||
<Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction">
|
||||
@ -90,6 +90,7 @@
|
||||
<Polish>Akcje Zeusa</Polish>
|
||||
<Czech>Akce Zeuse</Czech>
|
||||
<Spanish>Acciones Zeus</Spanish>
|
||||
<French>Actions Zeus</French>
|
||||
<Hungarian>Zeus cselekvések</Hungarian>
|
||||
<Portuguese>Ações do Zeus</Portuguese>
|
||||
<Russian>Действия Зевса</Russian>
|
||||
@ -233,6 +234,7 @@
|
||||
<Czech>Pozadí menu interakce</Czech>
|
||||
<German>Interaktionsmenü-Hintergrund</German>
|
||||
<Portuguese>Fundo do menu de interação</Portuguese>
|
||||
<French>Arrière plan du menu d'interaction</French>
|
||||
<Hungarian>Cselekvő menü háttere</Hungarian>
|
||||
<Russian>Фон меню взаимодействия</Russian>
|
||||
</Key>
|
||||
@ -240,9 +242,10 @@
|
||||
<English>Blur the background while the interaction menu is open.</English>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<Russian>Размыть фон, пока открыто меню взаимодействия.</Russian>
|
||||
</Key>
|
||||
@ -253,6 +256,7 @@
|
||||
<Czech>Rozmazaný obraz</Czech>
|
||||
<German>Verschwommenes Bild</German>
|
||||
<Portuguese>Desfoque de tela</Portuguese>
|
||||
<French>Flouter l'écran</French>
|
||||
<Hungarian>Kép elmosása</Hungarian>
|
||||
<Russian>Размытый</Russian>
|
||||
</Key>
|
||||
@ -260,9 +264,10 @@
|
||||
<English>Black</English>
|
||||
<Polish>Przyciemnienie ekranu</Polish>
|
||||
<Spanish>Negro</Spanish>
|
||||
<Czech>Černý obraz</Czech>
|
||||
<Czech>Tmavý</Czech>
|
||||
<Portuguese>Preto</Portuguese>
|
||||
<German>Schwarz</German>
|
||||
<French>Noir</French>
|
||||
<Hungarian>Fekete</Hungarian>
|
||||
<Russian>Черный</Russian>
|
||||
</Key>
|
||||
@ -271,6 +276,7 @@
|
||||
<Polish>Pokazuj akcje dla budynków</Polish>
|
||||
<Czech>Zobrazit akci pro budovy</Czech>
|
||||
<Spanish>Mostrar acciones para edificios</Spanish>
|
||||
<French>Affiche les actions pour les batiments</French>
|
||||
<Hungarian>Cselekvések mutatása épületeknél</Hungarian>
|
||||
<Portuguese>Mostrar ações para edifícios</Portuguese>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
@ -287,7 +294,9 @@
|
||||
<Key ID="STR_ACE_Interact_Menu_Category_InteractionMenu">
|
||||
<English>Interaction Menu</English>
|
||||
<Polish>Menu interakcji</Polish>
|
||||
<Portuguese>Menu de interação</Portuguese>
|
||||
<Russian>Меню взаимодействия</Russian>
|
||||
<Czech>Menu interakce</Czech>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -26,4 +26,4 @@ if !(_activated) exitWith {};
|
||||
|
||||
[_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readSettingFromModule);
|
||||
|
||||
diag_log text "[ACE]: Interaction Module Initialized.";
|
||||
ACE_LOGINFO("Interaction Module Initialized.");
|
||||
|
@ -774,6 +774,7 @@
|
||||
<Polish>Otwórz</Polish>
|
||||
<Czech>Otevřít</Czech>
|
||||
<Spanish>Abrir</Spanish>
|
||||
<French>Ouvrir</French>
|
||||
<Hungarian>Nyitás</Hungarian>
|
||||
<Portuguese>Abrir</Portuguese>
|
||||
<Russian>Открыть</Russian>
|
||||
@ -785,6 +786,7 @@
|
||||
<German>Interaktionssystem</German>
|
||||
<Czech>Systém interakce</Czech>
|
||||
<Russian>Взаимодействие</Russian>
|
||||
<French>Système d'interaction</French>
|
||||
<Hungarian>Interakciós rendszer</Hungarian>
|
||||
<Portuguese>Sistema de interação</Portuguese>
|
||||
</Key>
|
||||
@ -795,6 +797,7 @@
|
||||
<German>Aktiviere Gruppenverwaltung</German>
|
||||
<Czech>Povolit správu týmu</Czech>
|
||||
<Russian>Управление группами</Russian>
|
||||
<French>Active la gestion d'équipe</French>
|
||||
<Hungarian>Csapatkezelés engedélyezése</Hungarian>
|
||||
<Portuguese>Habilitar gestão de equipes</Portuguese>
|
||||
</Key>
|
||||
@ -805,6 +808,7 @@
|
||||
<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>
|
||||
<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>
|
||||
<Portuguese>Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim</Portuguese>
|
||||
</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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Inventory">
|
||||
<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>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project name="ACE">
|
||||
<Package name="Javelin">
|
||||
<Key ID="STR_ACE_Javelin_LockTarget">
|
||||
@ -26,4 +26,4 @@
|
||||
<Portuguese>Alterar Modo de Disparo</Portuguese>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
</Project>
|
||||
|
@ -1,9 +1,9 @@
|
||||
// This is a debug function for displaying visible lasers for ourselves
|
||||
#include "script_component.hpp"
|
||||
|
||||
diag_log text format["[ACE]: Laser Emitter Dump"];
|
||||
ACE_LOGINFO("Laser Emitter Dump");
|
||||
|
||||
{
|
||||
diag_log text format[" %1", _x];
|
||||
diag_log text format[" %2", HASH_GET(GVAR(laserEmitters), _x)];
|
||||
} forEach GVAR(laserEmitters) select 0;
|
||||
{
|
||||
ACE_LOGINFO_1(" %1", _x);
|
||||
ACE_LOGINFO_1(" %1",HASH_GET(GVAR(laserEmitters),_x));
|
||||
} forEach GVAR(laserEmitters) select 0;
|
||||
|
@ -4,7 +4,7 @@
|
||||
// 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);
|
||||
|
||||
if !(hasInterface) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
GVAR(nearUnits) = [];
|
||||
|
||||
|
@ -84,6 +84,6 @@ switch (_currentWeaponType) do {
|
||||
if (!_error) then {
|
||||
[_description, _picture] call EFUNC(common,displayTextPicture);
|
||||
} 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";
|
||||
|
@ -4,9 +4,9 @@
|
||||
#define PREFIX ace
|
||||
|
||||
#define MAJOR 3
|
||||
#define MINOR 2
|
||||
#define PATCHLVL 2
|
||||
#define BUILD 0
|
||||
#define MINOR 3
|
||||
#define PATCHLVL 1
|
||||
#define BUILD 2
|
||||
|
||||
#define VERSION 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
Loading…
Reference in New Issue
Block a user