Merge branch 'master' into laserPointerSetting

Conflicts:
	addons/laserpointer/XEH_postInit.sqf
This commit is contained in:
PabstMirror 2015-06-13 11:02:00 -05:00
commit 2efc095c93
130 changed files with 4034 additions and 137 deletions

View File

@ -30,142 +30,166 @@
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_DisplayName">
<English>Advanced Ballistics</English>
<Polish>Zaawansowana balistyka</Polish>
<Spanish>Balística avanzada</Spanish>
<German>Erweiterte Ballistik</German>
<Czech>Pokročilá balistika</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_enabled_Description">
<English>Enables advanced ballistics</English>
<Polish>Aktywuje zaawansowaną balistykę</Polish>
<Spanish>Activa la balística avanzada</Spanish>
<German>Aktiviert die erweiterte Ballistik</German>
<Czech>Aktivuje pokročilou balistiku</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_DisplayName">
<English>Enabled For Snipers</English>
<Spanish>Activada para francotiradores</Spanish>
<Polish>Akt. dla snajperów</Polish>
<German>Für Scharfschützen aktiviert</German>
<Czech>Povoleno pro odstřelovače</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForSnipers_Description">
<English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
<Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_DisplayName">
<English>Enabled For Group Members</English>
<Spanish>Activada para miembros de grupo</Spanish>
<Polish>Akt. dla czł. grupy</Polish>
<German>Für Gruppenmitglieder aktiviert</German>
<Czech>Povoleno pro členy skupiny</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForGroupMembers_Description">
<English>Enables advanced ballistics for non local group members</English>
<Spanish>Activada la balística avanzada para miembros de grupo no locales</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy</Polish>
<German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
<Czech>Aktivuje pokročilou balistiku pro nelokální členy skupiny</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_DisplayName">
<English>Enabled For Everyone</English>
<Spanish>Activada para todos</Spanish>
<Polish>Akt. dla wszystkich</Polish>
<German>Für jeden aktiviert</German>
<Czech>Povoleno pro všechny</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulateForEveryone_Description">
<English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English>
<Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_DisplayName">
<English>Always Enabled For Group Members</English>
<Polish>Zawsze akt. dla czł. grupy</Polish>
<Spanish>Siempre activada para miembros de grupo</Spanish>
<German>Für Gruppenmitglieder immer aktiviert</German>
<Czech>Vždy povoleno pro členy skupiny</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_alwaysSimulateForGroupMembers_Description">
<English>Always enables advanced ballistics when a group member fires</English>
<Polish>Aktywuje zaawansowaną balistykę dla wszystkich członków grupy</Polish>
<Spanish>Activada la balística avanzada siempre cuando miembros de grupo disparan</Spanish>
<German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
<Czech>Aktivuje pokročilou balistiku pro členy skupiny</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_DisplayName">
<English>Disabled In FullAuto Mode</English>
<Polish>Wył. podczas ognia auto.</Polish>
<Spanish>Desactivada en modo automático</Spanish>
<German>Beim vollautomatischen Feuern deaktiviert</German>
<Czech>Zakázáno v automatickém režimu střelby</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_disabledInFullAutoMod_Description">
<English>Disables the advanced ballistics during full auto fire</English>
<Polish>Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego</Polish>
<Spanish>Desactivada la balística avanzada durante el fuego automático</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_DisplayName">
<English>Enable Ammo Temperature Simulation</English>
<Polish>Symulacja temp. amunicji</Polish>
<Spanish>Activar simulación de temperatura de munición</Spanish>
<German>Simulation der Munitionstemperatur aktivieren</German>
<Czech>Povolit simulaci teploty munice</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_ammoTemperatureEnabled_Description">
<English>Muzzle velocity varies with ammo temperature</English>
<Polish>Prędkość wylotowa pocisku jest zależna od temperatury amunicji</Polish>
<Spanish>La velocidad de salida varía con la temperatura de la munición</Spanish>
<German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na teplotě munice</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_DisplayName">
<English>Enable Barrel Length Simulation</English>
<Polish>Symulacja długości lufy</Polish>
<Spanish>Habilitar la simulación de longitud del cañón</Spanish>
<German>Simulation der Lauflänge aktivieren</German>
<Czech>Povolit simulaci délky hlavně</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_barrelLengthInfluenceEnabled_Description">
<English>Muzzle velocity varies with barrel length</English>
<Polish>Prędkość wylotowa pocisku jest zależna od długości lufy</Polish>
<Spanish>La velocidad de salidal varía con la longitud del cañón</Spanish>
<German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
<Czech>Úsťová rychlost je závislá na délce hlavně</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_DisplayName">
<English>Enable Bullet Trace Effect</English>
<Polish>Efekt smugi pocisku</Polish>
<Spanish>Activar el efecto trazador de la bala</Spanish>
<German>Geschossspureffekt aktivieren</German>
<Czech>Povolit efekt trasírek</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_bulletTraceEnabled_Description">
<English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
<Polish>Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)</Polish>
<Spanish>Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica)</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_DisplayName">
<English>Simulation Interval</English>
<Polish>Interwał symulacji</Polish>
<Spanish>Intervalo de simulación</Spanish>
<German>Simulationsintervall</German>
<Czech>Interval simulace</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationInterval_Description">
<English>Defines the interval between every calculation step</English>
<Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
<Spanish>Define el intervalo entre cada cálculo</Spanish>
<German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
<Czech>Určuje interval mezi každým výpočtem</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_DisplayName">
<English>Simulation Radius</English>
<Polish>Zasięg symulacji</Polish>
<Spanish>Radio de simulación</Spanish>
<German>Simulationsradius</German>
<Czech>Rozsah simulace</Czech>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_simulationRadius_Description">
<English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
<Polish>Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków</Polish>
<Spanish>Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Advanced_Ballistics_Description">
<English></English>
<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>
</Key>
</Package>
</Project>
</Project>

View File

@ -0,0 +1,79 @@
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={1.000000,1.000000,1.000000,1.000000};
specularPower=83.900002;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
texture="z\ace\addons\apl\data\jezek_texture_NOHQ.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2 {
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3 {
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4 {
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5 {
texture="z\ace\addons\apl\data\jezek_texture_SMDI.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6 {
texture="#(ai,32,128,1)fresnel(1.85,0.64)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage7 {
texture="a3\data_f\env_land_co.paa";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,78 @@
ambient[]={1.000000,1.000000,1.000000,1.000000};
diffuse[]={1.000000,1.000000,1.000000,1.000000};
forcedDiffuse[]={0.000000,0.000000,0.000000,0.000000};
emmisive[]={0.000000,0.000000,0.000000,1.000000};
specular[]={1.000000,1.000000,1.000000,0.000000};
specularPower=16.000000;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1 {
texture="z\ace\addons\apl\data\BarbWire_A_NOHQ.tga";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage2 {
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage3 {
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage4 {
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage5 {
texture="#(argb,8,8,3)color(0,0,1,1,SMDI)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage6 {
texture="#(ai,32,128,1)fresnel(0.01,0.01)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};
class Stage7 {
texture="#(argb,8,8,3)color(0,0,0,1,CO)";
uvSource="tex";
class uvTransform {
aside[]={1.000000,0.000000,0.000000};
up[]={0.000000,1.000000,0.000000};
dir[]={0.000000,0.000000,0.000000};
pos[]={0.000000,0.000000,0.000000};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
addons/apl/data/plech.paa Normal file

Binary file not shown.

View File

@ -1597,6 +1597,7 @@
<Polish>[ACE] Skrzynka z amunicją</Polish>
<Spanish>[ACE] Caja de suministros de munición</Spanish>
<German>[ACE] Munitionskiste</German>
<Czech>[ACE] Bedna s municí</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -162,42 +162,50 @@
<Polish>Skapituluj jednostkę</Polish>
<Spanish>Hacer que la unidad se rinda</Spanish>
<German>Einheit kapitulieren lassen</German>
<Czech>Vzdávající se jednotka</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSurrender_Description">
<English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English>
<Polish>Zsynchronizuj z jednostką, aby skapitulowała.&lt;br /&gt;Źródło: ace_captives</Polish>
<Spanish>Sincroniza una unidad para hacer que se rinda.&lt;br /&gt;Fuente: ace_captives</Spanish>
<German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German>
<Czech>Synchronizuj s jednotkou, která se má vzdát.&lt;br /&gt;Zdroj: ace_captives</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_DisplayName">
<English>Captives Settings</English>
<Polish>Ustawienia więźniów</Polish>
<Spanish>Ajustes de prisioneros</Spanish>
<Czech>Nastavení zajatce</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_Description">
<English>Controls settings for surrender and cable ties</English>
<Polish>Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych</Polish>
<Spanish>Ajustes de control para rendición y precintos</Spanish>
<Czech>Toto kontroluje nastavení kapitulace a pout</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_name">
<English>Can handcuff own side</English>
<Polish>Skuwanie sojuszników</Polish>
<Spanish>Se puede esposar el bando propio</Spanish>
<Czech>Může spoutat spolubojovníky</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_handcuffSide_description">
<English>Can players cabletie units on their own side</English>
<Polish>Czy gracze mogą skuwać sojuszników?</Polish>
<Spanish>Pueden los jugadores esposar unidades en su propio bando</Spanish>
<Czech>Mohou hráči spoutat jednotky na své straně</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_name">
<English>Allow surrendering</English>
<Polish>Pozwól kapitulować</Polish>
<Spanish>Permitir rendición</Spanish>
<Czech>Povolit vzdávání</Czech>
</Key>
<Key ID="STR_ACE_Captives_ModuleSettings_allowSurrender_description">
<English>Players can surrender after holstering their weapon</English>
<Polish>Gracze mogą skapitulować po schowaniu swojej broni do kabury</Polish>
<Spanish>Los jugadores pueden rendirse después de enfundar su arma</Spanish>
<Czech>Hráč se může vzdát poté, co si skryje zbraň</Czech>
</Key>
</Package>
</Project>

View File

@ -101,6 +101,43 @@ if(!isServer) then {
call FUNC(checkFiles);
// Create a pfh to wait until all postinits are ready and settings are initialized
[{
PARAMS_1(_args);
EXPLODE_1_PVT(_args,_waitingMsgSent);
// If post inits are not ready then wait
if !(SLX_XEH_MACHINE select 8) exitWith {};
// If settings are not initialized then wait
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"];
};
};
[(_this select 1)] call cba_fnc_removePerFrameHandler;
diag_log text format["[ACE] Settings received from server"];
// Event so that ACE_Modules have their settings loaded:
["InitSettingsFromModules", []] call FUNC(localEvent);
// Load user settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
call FUNC(loadSettingsLocalizedText);
};
diag_log text format["[ACE] Settings initialized"];
//Event that settings are safe to use:
["SettingsInitialized", []] call FUNC(localEvent);
}, 0, [false]] call cba_fnc_addPerFrameHandler;
/***************************************************************/
/***************************************************************/
/***************************************************************/
@ -278,38 +315,3 @@ if(isMultiplayer && { ACE_time > 0 || isNull player } ) then {
}] call FUNC(addEventHandler);
GVAR(commonPostInited) = true;
// Create a pfh to wait until all postinits are ready and settings are initialized
[{
PARAMS_1(_args);
EXPLODE_1_PVT(_args,_waitingMsgSent);
// If post inits are not ready then wait
if !(SLX_XEH_MACHINE select 8) exitWith {};
// If settings are not initialized then wait
if (isNil QGVAR(settings)) exitWith {
if (!_waitingMsgSent) then {
_args set [0, true];
diag_log text format["[ACE] Waiting on settings from server"];
};
};
[(_this select 1)] call cba_fnc_removePerFrameHandler;
diag_log text format["[ACE] Settings received from server"];
// Event so that ACE_Modules have their settings loaded:
["InitSettingsFromModules", []] call FUNC(localEvent);
// Load user settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
call FUNC(loadSettingsLocalizedText);
};
diag_log text format["[ACE] Settings initialized"];
//Event that settings are safe to use:
["SettingsInitialized", []] call FUNC(localEvent);
}, 0, [false]] call cba_fnc_addPerFrameHandler;

View File

@ -475,78 +475,91 @@
<Polish>Sprawdzaj PBO</Polish>
<Spanish>Comprobar PBOs</Spanish>
<German>Überprüfe PBOs</German>
<Czech>Zkontrolovat PBO</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Description">
<English></English>
<Polish>Sprawdzaj spójność addonów z serwerem</Polish>
<Spanish>Este módulo verifica la integridad de los addons con los que iniciamos el simulador</Spanish>
<German>Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat.</German>
<Czech>Zjistit addon který je v souladu se serverem</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
<English>Action</English>
<Polish>Akcja</Polish>
<Spanish>Acción</Spanish>
<German>Aktion</German>
<Czech>Akce</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Description">
<English>What to do with people who do not have the right PBOs?</English>
<Polish>Co zrobić z graczami, którzy nie mają właściwych PBO?</Polish>
<Spanish>¿Qué hacer con la gente que no tiene correctamente los PBOs?</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
<English>Warn once</English>
<Polish>Ostrzeż raz</Polish>
<Spanish>Avisar una vez</Spanish>
<German>Einmal verwarnen</German>
<Czech>Upozornit jednou</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
<English>Warn (permanent)</English>
<Polish>Ostrzeżenie (permanentne)</Polish>
<Spanish>Avisar (permanente)</Spanish>
<German>Immer verwarnen</German>
<Czech>Upozornit (permanentně)</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
<English>Kick</English>
<Polish>Kick</Polish>
<Spanish>Expulsar</Spanish>
<German>Kicken</German>
<Czech>Vyhodit</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
<English>Check all addons</English>
<Polish>Sprawdź wsz. addony</Polish>
<Spanish>Comprobar todos los addons</Spanish>
<German>Alle Addons überprüfen</German>
<Czech>Zkontrolovat všechny addony</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
<English>Check all addons instead of only those of ACE?</English>
<Polish>Sprawdzaj wszystkie addony czy tylko te z ACE?</Polish>
<Spanish>Comprobar todos los addons en vez de solo los del ACE</Spanish>
<German>Alle Addons anstatt nur ACE überprüfen?</German>
<Czech>Zkontrolovat všechny addony namísto jen těch od ACE?</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
<English>Whitelist</English>
<Polish>Biała lista</Polish>
<Spanish>Lista blanca</Spanish>
<German>Whitelist</German>
<Czech>Seznam povolených</Czech>
</Key>
<Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
<English>What addons are allowed regardless?</English>
<Polish>Jakie addony są dozwolone?</Polish>
<Spanish>Qué addons están permitidos igualmente</Spanish>
<German>Welche Addons werden dennoch erlaubt?</German>
<Czech>Jaké addony jsou povoleny?</Czech>
</Key>
<Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
<English>LSD Vehicles</English>
<Polish>Pojazdy LSD</Polish>
<Spanish>Vehículos LSD</Spanish>
<German>LSD-Fahrzeuge</German>
<Czech>LSD vozidla</Czech>
</Key>
<Key ID="STR_ACE_Common_LSDVehicles_Description">
<English>Adds LSD effect to synchronized vehicle</English>
<Polish>Dodaje efekt LSD pod zsynchronizowany pojazd</Polish>
<Spanish>Añade el efecto LSD al vehículo sincronizado</Spanish>
<German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
<Czech>Přidá LSD efekt pro synchronizované vozidla</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -0,0 +1 @@
z\ace\addons\concertina_wire

View File

@ -0,0 +1,44 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
};
};
class Extended_Killed_EventHandlers {
// TODO: Probably needs handledamage eh for better tracking what killed the wire
// Also disallow wire becoming destroyed by small explosives e.g. 40mm
class ACE_ConcertinaWire {
class ADDON {
killed = QUOTE(call FUNC(handleKilled));
};
};
class Land_Razorwire_F {
class ADDON {
killed = QUOTE(call FUNC(handleKilled));
};
};
};
class Extended_Init_EventHandlers {
class ACE_ConcertinaWireCoil {
class ADDON {
init = QUOTE(_this call DEFUNC(dragging,initObject));
};
};
class ACE_ConcertinaWire {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_init));
};
};
class Land_Razorwire_F {
class ADDON {
init = QUOTE(call COMPILE_FILE(XEH_init));
};
};
};

View File

@ -0,0 +1,139 @@
class CfgVehicles {
class Fence;
class thingX;
class NonStrategic;
class ACE_ConcertinaWireNoGeo: Fence {
XEH_ENABLED;
scope = 1;
displayName = "";
model = PATHTOF(data\ACE_ConcertinaWireNoGeo.p3d);
destrType = "DestructTent";
accuracy = 0.3;
mapSize = 2.8;
animated = 1;
autocenter = 0;
armor = 200;
class AnimationSources {
class fix1 {
source = "user";
animPeriod = 1e-007;
initPhase = 0;
};
class fix2: fix1 {};
class fix3: fix1 {};
class fix4: fix1 {};
class rotate {
source = "user";
animPeriod = 1e-007;
};
class wire_2 {
source = "user";
animPeriod = 1e-007;
};
class wire_3: wire_2{};
class wire_4: wire_2{};
class wire_5: wire_2{};
class wire_6: wire_2{};
class wire_7: wire_2{};
class wire_8: wire_2{};
class wire_9: wire_2{};
class wire_10: wire_2{};
class wire_11: wire_2{};
class wire_12: wire_2{};
class wire_13: wire_2{};
class wire_14: wire_2{};
class wire_15: wire_2{};
class wire_16: wire_2{};
class wire_17: wire_2{};
class wire_18: wire_2{};
class wire_2_1: wire_2 {
animPeriod = 8;
};
class wire_3_1: wire_2_1 {};
class wire_4_1: wire_2_1 {};
class wire_5_1: wire_2_1 {};
class wire_6_1: wire_2_1 {};
class wire_7_1: wire_2_1 {};
class wire_8_1: wire_2_1 {};
class wire_9_1: wire_2_1 {};
class wire_10_1: wire_2_1 {};
class wire_11_1: wire_2_1 {};
class wire_12_1: wire_2_1 {};
class wire_13_1: wire_2_1 {};
class wire_14_1: wire_2_1 {};
class wire_15_1: wire_2_1 {};
class wire_16_1: wire_2_1 {};
class wire_17_1: wire_2_1 {};
class wire_18_1: wire_2_1 {};
};
};
class ACE_ConcertinaWire: ACE_ConcertinaWireNoGeo {
scope = 2;
displayName = $STR_ACE_CONCERTINA_WIRE;
model = PATHTOF(data\ACE_ConcertinaWire.p3d);
class ACE_Actions {
class ACE_MainActions {
selection = "";
distance = 5;
condition = "true";
class ACE_Dismount {
selection = "";
displayName = "$STR_ACE_UNROLLWIRE";
distance = 5;
condition = "true";
statement = QUOTE([ARR_2(_target,_player)] call FUNC(dismount));
showDisabled = 0;
exceptions[] = {};
priority = 5;
icon = PATHTOF(UI\icon_sandbag_ca.paa);
};
};
};
};
class ACE_ConcertinaWireCoil: thingX {
XEH_ENABLED;
scope = 2;
displayName = $STR_ACE_CONCERTINA_WIRECOIL;
model = PATHTOF(data\ACE_ConcertinaWireCoil.p3d);
mapsize = 0.5;
animated = 0;
nameSound = "fence";
typicalCargo[] = {};
transportAmmo = 0;
transportRepair = 0;
transportFuel = 0;
cost = 0;
armor = 1000;
destrType = "DestructNo";
accuracy = 1000;
autocenter = 0;
EGVAR(dragging,canDrag) = 1;
EGVAR(dragging,dragPosition[]) = {0,0.5,0.5};
EGVAR(dragging,dragDirection) = 0;
class ACE_Actions {
class ACE_MainActions {
selection = "";
distance = 4;
condition = "true";
class ACE_Deploy {
selection = "";
displayName = "$STR_ACE_ROLLWIRE";
distance = 4;
condition = "true";
statement = QUOTE([ARR_2(_target,_player)] call FUNC(deploy));
showDisabled = 0;
exceptions[] = {};
priority = 5;
icon = PATHTOF(UI\icon_sandbag_ca.paa);
};
};
};
};
class Land_Razorwire_F: NonStrategic {
XEH_ENABLED;
};
};

View File

@ -0,0 +1,10 @@
ace_concertina_wire
===============
Adds concertina wire.
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Ruthberg] (http://github.com/Ulteq)

Binary file not shown.

View File

@ -0,0 +1,4 @@
#include "script_component.hpp"
PARAMS_1(_wire);
_wire addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];

View File

@ -0,0 +1,11 @@
#include "script_component.hpp"
GVAR(placer) = objNull;
GVAR(deployPFH) = -1;
// Deploy concertina wire if interact menu is opened
["interactMenuOpened", {
if (GVAR(deployPFH) != -1) then {
GVAR(placer) setVariable [QGVAR(wireDeployed), true];
};
}] call EFUNC(common,addEventHandler);

View File

@ -0,0 +1,11 @@
#include "script_component.hpp"
ADDON = false;
PREP(deploy);
PREP(dismount);
PREP(dismountSuccess);
PREP(handleDamage);
PREP(handleKilled);
ADDON = true;

View File

@ -0,0 +1,15 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {"ACE_ConcertinaWire", "ACE_ConcertinaWireNoGeo", "ACE_ConcertinaWireCoil"};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_apl", "ace_interaction"};
author[] = {"Rocko", "Ruthberg"};
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,290 @@
class CfgSkeletons {
class Default {
isDiscrete = 1;
skeletonInherit = "";
skeletonBones[] = {};
};
class ACE_SB_Skeleton: Default {};
class ACE_ConcertinaSkeleton {
isDiscrete = 0;
skeletonInherit = "";
skeletonBones[] = {
"1","",
"2","1",
"3","2",
"4","3",
"5","4",
"6","5",
"7","6",
"8","7",
"9","8",
"10","9",
"11","10",
"12","11",
"13","12",
"14","13",
"15","14",
"16","15",
"17","16",
"18","17",
"fix1","",
"fix2","",
"fix3","",
"fix4",""
};
};
class ace_tacticalladder_skeleton: Default {
isDiscrete = 0;
skeletonInherit = "";
skeletonBones[] = {
"base","",
"1","base",
"2","1",
"3","2",
"4","3",
"5","4",
"6","5",
"7","6",
"8","7",
"9","8",
"10","9",
"11","10",
"step","11"
};
};
};
class CfgModels {
class Default {
sectionsInherit="";
sections[] = {""};
skeletonName = "";
};
class ace_sandbag_build {
sectionsInherit = "Default";
sections[] = {"zbytek"};
skeletonName = "ACE_SB_Skeleton";
};
class ACE_ConcertinaWire {
skeletonName = "ACE_ConcertinaSkeleton";
sections[] = {};
sectionsInherit = "";
class Animations {
class fix1 {
type="hide";
source="user";
selection="fix1";
minValue = 0;
maxValue = 1;
minPhase = 0;
maxPhase = 1;
hideValue = 1;
};
class fix2: fix1 {
selection="fix2";
};
class fix3: fix1 {
selection="fix3";
};
class fix4: fix1 {
selection="fix4";
};
class rotate {
type = "rotation";
source = "";
sourceAddress = "loop";
selection = "1";
axis = "rotate_axis";
minValue = 0;
maxValue = 360;
angle0="rad -360";
angle1="rad +360";
};
class wire_2 {
type = "translation";
source = "";
selection = "2";
axis = "2_axis";
animPeriod = 0;
minValue = 0;
maxValue = 1;
minPhase = 0;
maxPhase = 1;
offset0 = 0;
offset1 = -1;
};
class wire_3: wire_2 {
selection = "3"; axis = "3_axis";
};
class wire_4: wire_2 {
selection = "4"; axis = "4_axis";
};
class wire_5: wire_2 {
selection = "5"; axis = "5_axis";
};
class wire_6: wire_2 {
selection = "6"; axis = "6_axis";
};
class wire_7: wire_2 {
selection = "7"; axis = "7_axis";
};
class wire_8: wire_2 {
selection = "8"; axis = "8_axis";
};
class wire_9: wire_2 {
selection = "9"; axis = "9_axis";
};
class wire_10: wire_2 {
selection = "10"; axis = "10_axis";
};
class wire_11: wire_2 {
selection = "11"; axis = "11_axis";
};
class wire_12: wire_2 {
selection = "12"; axis = "12_axis";
};
class wire_13: wire_2 {
selection = "13"; axis = "13_axis";
};
class wire_14: wire_2 {
selection = "14"; axis = "14_axis";
};
class wire_15: wire_2 {
selection = "15"; axis = "15_axis";
};
class wire_16: wire_2 {
selection = "16"; axis = "16_axis";
};
class wire_17: wire_2 {
selection = "17"; axis = "17_axis";
};
class wire_18: wire_2 {
selection = "18"; axis = "18_axis";
};
class wire_2_1: wire_2 {
selection = "2";axis = "2_axis";offset1 = -1;
};
class wire_3_1: wire_2_1 {
selection = "3"; axis = "3_axis";
};
class wire_4_1: wire_2_1 {
selection = "4"; axis = "4_axis";
};
class wire_5_1: wire_2_1 {
selection = "5"; axis = "5_axis";
};
class wire_6_1: wire_2_1 {
selection = "6"; axis = "6_axis";
};
class wire_7_1: wire_2_1 {
selection = "7"; axis = "7_axis";
};
class wire_8_1: wire_2_1 {
selection = "8"; axis = "8_axis";
};
class wire_9_1: wire_2_1 {
selection = "9"; axis = "9_axis";
};
class wire_10_1: wire_2_1 {
selection = "10"; axis = "10_axis";
};
class wire_11_1: wire_2_1 {
selection = "11"; axis = "11_axis";
};
class wire_12_1: wire_2_1 {
selection = "12"; axis = "12_axis";
};
class wire_13_1: wire_2_1 {
selection = "13"; axis = "13_axis";
};
class wire_14_1: wire_2_1 {
selection = "14"; axis = "14_axis";
};
class wire_15_1: wire_2_1 {
selection = "15"; axis = "15_axis";
};
class wire_16_1: wire_2_1 {
selection = "16"; axis = "16_axis";
};
class wire_17_1: wire_2_1 {
selection = "17"; axis = "17_axis";
};
class wire_18_1: wire_2_1 {
selection = "18"; axis = "18_axis";
};
};
};
class ACE_ConcertinaWireNoGeo: ACE_ConcertinaWire {};
class ace_tacticalladder {
skeletonName = "ace_tacticalladder_skeleton";
sections[] = { "roadway" };
sectionsInherit = "";
class Animations {
class rotate {
type = "rotation";
source = "";
sourceAddress = "clamp";
selection = "base";
axis = "axis_rotate";
minValue = 0;
maxValue = 90;
angle0="rad 0";
angle1="rad +90";
};
class extract_1 {
type = "translation";
source = "";
selection = "1";
axis = "axis_1";
animPeriod = 0;
minValue = 0;
maxValue = 1;
minPhase = 0;
maxPhase = 1;
offset0 = 0;
offset1 = 0.82;
};
class extract_2: extract_1 {
selection = "2";
axis = "axis_2";
};
class extract_3: extract_1 {
selection = "3";
axis = "axis_3";
};
class extract_4: extract_1 {
selection = "4";
axis = "axis_4";
};
class extract_5: extract_1 {
selection = "5";
axis = "axis_5";
};
class extract_6: extract_1 {
selection = "6";
axis = "axis_6";
};
class extract_7: extract_1 {
selection = "7";
axis = "axis_7";
};
class extract_8: extract_1 {
selection = "8";
axis = "axis_8";
};
class extract_9: extract_1 {
selection = "9";
axis = "axis_9";
};
class extract_10: extract_1 {
selection = "10";
axis = "axis_10";
};
class extract_11: extract_1 {
selection = "11";
axis = "axis_11";
};
};
};
};

View File

@ -0,0 +1,84 @@
/*
* Author: Rocko, Ruthberg
*
* Deploys the concertina wire
*
* Arguments:
* 0: wire coil <OBJECT>
* 1: unit <OBJECT>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_2(_wirecoil,_unit);
private ["_wireNoGeo", "_dir", "_pos", "_wireNoGeoPos"];
_wireNoGeo = "ACE_ConcertinaWireNoGeo" createVehicle [0,0,0];
{
_wireNoGeo animate [_x, 1];
} foreach WIRE_FAST;
GVAR(placer) = _unit;
_dir = getDir _unit;
_pos = getPosASL _unit;
_wireNoGeoPos = _pos vectorAdd [1.1 * sin(_dir), 1.1 * cos(_dir), 0];
_wireNoGeo setDir _dir;
_wireNoGeo setPosASL _wireNoGeoPos;
deleteVehicle _wirecoil;
_unit setVariable [QGVAR(wireDeployed), false];
GVAR(deployPFH) = [{
EXPLODE_4_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit,_action);
private ["_range", "_posStart", "_posEnd", "_dirVect", "_dir", "_anim", "_wire"];
_posStart = (_wireNoGeo modelToWorldVisual (_wireNoGeo selectionPosition "start")) call EFUNC(common,positionToASL);
_posEnd = (getPosASL _unit) vectorAdd (vectorDir _unit);
_dirVect = _posStart vectorDiff _posEnd;
_dir = _dirVect call CBA_fnc_vectDir;
_range = vectorMagnitude _dirVect;
_anim = 0 max (1 - (_range / 12));
if (!(alive _unit) || _range >= 12 || (_unit getVariable [QGVAR(wireDeployed), false])) exitWith {
_wire = "ACE_ConcertinaWire" createvehicle [0, 0, 0];
{
_wire animate [_x, _anim];
} foreach WIRE_FAST;
[{
EXPLODE_5_PVT(_this select 0,_wireNoGeo,_wire,_anim,_dir,_wireNoGeoPos);
if (_wire animationPhase "wire_2" == _anim) then {
deleteVehicle _wireNoGeo;
_wire setDir _dir;
_wire setPosASL _wireNoGeoPos;
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
}, 0, [_wireNoGeo, _wire, _anim, _dir, _wireNoGeoPos]] call CBA_fnc_addPerFrameHandler;
[_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler);
call EFUNC(interaction,hideMouseHint);
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
_wireNoGeo setDir _dir;
{
_wireNoGeo animate [_x, _anim];
} foreach WIRE_FAST;
}, 0, [_wireNoGeo, _wireNoGeoPos, _unit, _action]] call CBA_fnc_addPerFrameHandler;
[localize "STR_ACE_ROLLWIRE", "", ""] call EFUNC(interaction,showMouseHint);
GVAR(placer) setVariable [QGVAR(Deploy),
[GVAR(placer), "DefaultAction",
{GVAR(deployPFH) != -1},
{GVAR(placer) setVariable [QGVAR(wireDeployed), true]}
] call EFUNC(common,AddActionEventHandler)];

View File

@ -0,0 +1,41 @@
/*
* Author: Ruthberg
*
* Start dismounting the concertina wire
*
* Arguments:
* 0: wire <OBJECT>
* 1: unit <OBJECT>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
// If the cursorMenu is open, the loading bar will fail. If we execute the function one frame later, it will work fine
if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith {
[{
_this call FUNC(dismount);
}, _this] call EFUNC(common,execNextFrame);
};
PARAMS_2(_wire,_unit);
private ["_config", "_delay"];
_config = (configFile >> "CfgVehicles" >> typeOf _unit);
_delay = if (getNumber(_config >> "engineer") == 1 || getNumber(_config >> "canDeactivateMines") == 1) then {60} else {120};
// TODO: Animation?
[
_delay,
[_wire],
{(_this select 0) call FUNC(dismountSuccess)},
{},
localize "STR_ACE_UNROLLWIRE",
{true},
["isnotinside"]
] call EFUNC(common,progressBar);

View File

@ -0,0 +1,42 @@
/*
* Author: Rocko, Ruthberg
*
* Dismounts the concertina wire
*
* Arguments:
* 0: wire <OBJECT>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_1(_wire);
{
_wire animate [_x, 1];
} foreach WIRE_FAST;
[{
EXPLODE_1_PVT(_this select 0,_wire);
if (_wire animationPhase "wire_2" == 1) then {
private ["_dir", "_pos", "_wirecoil"];
_dir = getDir _wire;
_pos = getPosASL _wire;
_wirecoil = "ACE_ConcertinaWireCoil" createvehicle [0, 0, 0];
deleteVehicle _wire;
_wirecoil setDir _dir;
_wirecoil setPosASL _pos;
_wirecoil setVelocity [0, 0, 0];
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
}, 0, [_wire]] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,29 @@
/*
* Author: Ruthberg
*
* Handles wire damage
*
* Arguments:
* 0: wire <OBJECT>
* 1: selectionName <STRING>
* 2: damage <NUMBER>
* 3: source <OBJECT>
* 4: projectile <STRING>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_5(_wire,_selectionName,_damage,_source,_projectile);
if (_damage < 0.5) exitWith { 0 };
if (!(isNull _source)) then {
_wire setVariable [QGVAR(lastDamager), _source];
};
_damage

View File

@ -0,0 +1,135 @@
/*
* Author: Rocko
*
* Handles wire and vehicle damage
*
* Arguments:
* 0: wire <OBJECT>
* 1: killer (vehicle) <OBJECT>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_2(_wire,_killer);
if (isNull _killer) then {
_killer = _wire getVariable ["ace_concertina_wire_lastDamager", objNull];
if (isNull _killer) then {
_killer = nearestObject [_wire, "car"];
};
};
if (isNull _killer || {_killer == _wire} || {_killer == gunner (vehicle _killer)}) exitWith {};
private ["_type", "_mode", "_distance", "_anim", "_parts", "_selectionPart", "_selection", "_pos_w", "_dir_w", "_vehicle"];
_type = typeOf _wire;
_mode = switch (_type) do {
case "ACE_ConcertinaWire": { 0 };
case "Land_Razorwire_F": { 1 };
default { -1 };
};
if (_mode == -1) exitWith {};
// _mode = 0 = Single Coil
// _mode = 1 = Triple Coil
// --------------------------------
// L M R
// 4.54929 (4)
// 6.13564 (6)
//9.78744 (10)
_distance = _wire distance _killer;
if (_distance > 14 || {_distance < 2}) exitWith {}; // Fix if shooting wire
_type = typeOf _wire;
_anim = _wire animationPhase "wire_2";
_pos_w = getPos _wire;
_dir_w = getDir _wire;
_vehicle = vehicle _killer;
if (_mode == 0) then {
private ["_x", "_y", "_found", "_wireCheckPosAr", "_no"];
_x = _pos_w select 0;
_y = _pos_w select 1;
// Check if two Single coils are placed next to each other (i.e playes have built a big wire obstacle)
_wireCheckPosAr = [
[_x + (sin (_dir_w+90) * 1.5),_y + (cos (_dir_w+90) * 1.5)],
[(_x-(sin _dir_w)) + (sin (_dir_w+90) * 1.5),(_y-(cos _dir_w)) + (cos (_dir_w+90) * 1.5)],
[_x + (sin (_dir_w-90) * 1.5),_y + (cos (_dir_w-90) * 1.5)],
[(_x-(sin _dir_w)) + (sin (_dir_w-90) * 1.5),(_y-(cos _dir_w)) + (cos (_dir_w-90) * 1.5)]
];
{
_found = false;
_no = nearestObjects [_x, [typeOf _wire], 3]; //diag_log _no; diag_log ".....";
_no = _no - [_wire]; //diag_log _no;
if (count _no > 0) exitWith {
_found = true; //diag_log "found";
};
} foreach _wireCheckPosAr;
// Double coil found!
if (_found) then {
_mode = 1;
} else {
// Randomly make a single coil also catch tanks, if speed is high
if (_vehicle isKindOf "Tank" && {20 > random 100} && {speed _vehicle > 30}) then {
_mode = 1;
} else {
if !(_vehicle isKindOf "Tank") then {
_mode = 1;
};
};
};
};
if (_mode == 1) then {
switch (true) do {
case (_vehicle isKindOf "Tank"): {
_parts = ["ltrack","rtrack"];
};
case (_vehicle isKindOf "Wheeled_APC" || {_vehicle isKindOf "Car"}): {
_parts = ["lfwheel","lf2wheel","lmwheel","lbwheel","rfwheel","rf2wheel","rmwheel","rbwheel"];
};
};
} else {
switch (true) do {
case (_vehicle isKindOf "Wheeled_APC" || {_vehicle isKindOf "Car"}): {
_parts = ["lfwheel","lf2wheel","lmwheel","lbwheel","rfwheel","rf2wheel","rmwheel","rbwheel"];
};
};
};
if (canMove _vehicle) then {
{
_selectionPart = "hit" + _x;
if (isText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "hitpoints" >> _selectionPart >> "name")) then {
_selection = getText(configFile >> "CfgVehicles" >> typeOf _vehicle >> "hitpoints" >> _selectionPart >> "name");
// TODO: Only the tires that have touched the wire should burst.
_vehicle setHit [_selection, 1];
};
} forEach _parts;
};
if (_mode == 1) then {
if (_vehicle isKindOf "StaticWeapon") exitWith {};
[{
PARAMS_2(_vehicle,_wire);
_vehicle setVelocity ((velocity _vehicle) vectorMultiply 0.75);
private ["_vPos", "_vDir"];
// Set vehicle back in front of wire, since the wire will make the vehicle jump, and a wire with no geometry lod is undestructible and not recognizeable
_vPos = getPosASL _vehicle;
_vDir = getDir _vehicle;
_vehicle setPosASL (_vPos vectorAdd [-0.35 * sin(_vDir), -0.35 * cos(_vDir), 0]);
// TODO: Needs to be placed in safe distance to wire, so we do not constantly re-spawn new wires
}, [_vehicle, _wire], 0.1, 0] call EFUNC(common,waitAndExecute);
};
//TODO: Create broken geoless wire (two version)
//TODO: Make wire remains stop vehicles

View File

@ -0,0 +1 @@
#include "\z\ace\addons\concertina_wire\script_component.hpp"

View File

@ -0,0 +1,15 @@
#define COMPONENT concertina_wire
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_CONCERTINA_WIRE
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_CONCERTINA_WIRE
#define DEBUG_SETTINGS DEBUG_SETTINGS_CONCERTINA_WIRE
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#define WIRE_FAST ["wire_2","wire_3","wire_4","wire_5","wire_6","wire_7","wire_8","wire_9","wire_10","wire_11","wire_12","wire_13","wire_14","wire_15","wire_16","wire_17","wire_18"]
#define WIRE_SLOW ["wire_2_1","wire_3_1","wire_4_1","wire_5_1","wire_6_1","wire_7_1","wire_8_1","wire_9_1","wire_10_1","wire_11_1","wire_12_1","wire_13_1","wire_14_1","wire_15_1","wire_16_1","wire_17_1","wire_18_1"]

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="concertina_wire">
<Key ID="STR_ACE_CONCERTINA_WIRE">
<English>Concertina Wire</English>
<German>NATO-Draht</German>
<Russian>Проволочная спираль</Russian>
<Polish>Drut kolczasty</Polish>
<Spanish>Concertina wire</Spanish>
<French>Concertina wire</French>
<Czech>Ostnatý drát</Czech>
<Italian>Concertina wire</Italian>
<Hungarian>Concertina wire</Hungarian>
</Key>
<Key ID="STR_ACE_CONCERTINA_WIRECOIL">
<English>Concertina Wire Coil</English>
<German>NATO-Draht Rolle</German>
<Russian>Проволочная спираль (моток)</Russian>
<Polish>Zwój drutu kolczastego</Polish>
<Spanish>Concertina wire coil</Spanish>
<French>Concertina wire coil</French>
<Czech>Smyčka ostnatého drátu</Czech>
<Italian>Concertina wire coil</Italian>
<Hungarian>Concertina wire coil</Hungarian>
</Key>
<Key ID="STR_ACE_UNROLLWIRE">
<English>Dismount Concertina Wire</English>
<German>NATO-Draht abbauen</German>
<Russian>Демонтировать проволочную спираль</Russian>
<Polish>Zwiń drut kolczasty</Polish>
<Spanish>Dismount Concertina wire</Spanish>
<French>Dismount Concertina wire</French>
<Czech>Svinout ostnatý drát</Czech>
<Italian>Dismount Concertina wire</Italian>
<Hungarian>Dismount Concertina wire</Hungarian>
</Key>
<Key ID="STR_ACE_ROLLWIRE">
<English>Deploy Concertina Wire</English>
<German>NATO-Draht verlegen</German>
<Russian>Монтировать проволочную спираль</Russian>
<Polish>Rozwiń drut kolczasty</Polish>
<Spanish>Deploy Concertina wire</Spanish>
<French>Deploy Concertina wire</French>
<Czech>Rozvinout ostnatý drát</Czech>
<Italian>Deploy Concertina wire</Italian>
<Hungarian>Deploy Concertina wire</Hungarian>
</Key>
</Package>
</Project>

1
addons/dagr/$PBOPREFIX$ Normal file
View File

@ -0,0 +1 @@
z\ace\addons\dagr

View File

@ -0,0 +1,11 @@
class Extended_PreInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_preInit) );
};
};
class Extended_PostInit_EventHandlers {
class ADDON {
init = QUOTE( call COMPILE_FILE(XEH_postInit) );
};
};

View File

@ -0,0 +1,49 @@
class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_SelfActions {
class ACE_Equipment {
class GVAR(menu) {
displayName = "Configure DAGR";
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
statement = QUOTE(call FUNC(menuInit));
showDisabled = 0;
priority = 0.1;
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
exceptions[] = {"isNotInside"};
class GVAR(toggle) {
displayName = "Toggle DAGR";
condition = QUOTE([ARR_2(_player,'ACE_DAGR')] call EFUNC(common,hasItem));
statement = QUOTE(call FUNC(toggleOverlay));
showDisabled = 0;
priority = 0.2;
icon = QUOTE(PATHTOF(UI\DAGR_Icon.paa));
exceptions[] = {"notOnMap", "isNotInside"};
};
};
};
};
};
class Item_Base_F;
class ACE_Item_DAGR: Item_Base_F {
author[] = {"Rosuto", "Ruthberg"};
scope = 2;
scopeCurator = 2;
displayName = "DAGR";
vehicleClass = "Items";
class TransportItems {
class ACE_DAGR {
name = "ACE_DAGR";
count = 1;
};
};
};
class Box_NATO_Support_F;
class ACE_Box_Misc: Box_NATO_Support_F {
class TransportItems {
MACRO_ADDITEM(ACE_DAGR,6);
};
};
};

View File

@ -0,0 +1,19 @@
class CfgWeapons {
class ACE_ItemCore;
class InventoryItem_Base_F;
class ACE_DAGR: ACE_ItemCore {
author[] = {$STR_ACE_Common_ACETeam, "Ruthberg"};
scope = 2;
displayName = "DAGR";
descriptionShort = "";
picture = PATHTOF(UI\DAGR_Icon.paa);
icon = "iconObject_circle";
mapSize = 0.034;
class ItemInfo: InventoryItem_Base_F {
mass = 10;
};
};
};

424
addons/dagr/Dialog.hpp Normal file
View File

@ -0,0 +1,424 @@
// Control types
#define CT_STATIC 0
#define CT_BUTTON 1
#define CT_EDIT 2
#define CT_SLIDER 3
#define CT_COMBO 4
#define CT_LISTBOX 5
#define CT_TOOLBOX 6
#define CT_CHECKBOXES 7
#define CT_PROGRESS 8
#define CT_HTML 9
#define CT_STATIC_SKEW 10
#define CT_ACTIVETEXT 11
#define CT_TREE 12
#define CT_STRUCTURED_TEXT 13
#define CT_CONTEXT_MENU 14
#define CT_CONTROLS_GROUP 15
#define CT_SHORTCUT_BUTTON 16 // Arma 2 - textured button
#define CT_XKEYDESC 40
#define CT_XBUTTON 41
#define CT_XLISTBOX 42
#define CT_XSLIDER 43
#define CT_XCOMBO 44
#define CT_ANIMATED_TEXTURE 45
#define CT_OBJECT 80
#define CT_OBJECT_ZOOM 81
#define CT_OBJECT_CONTAINER 82
#define CT_OBJECT_CONT_ANIM 83
#define CT_LINEBREAK 98
#define CT_USER 99
#define CT_MAP 100
#define CT_MAP_MAIN 101
#define CT_List_N_Box 102 // Arma 2 - N columns list box
// Static styles
#define ST_POS 0x0F
#define ST_HPOS 0x03
#define ST_VPOS 0x0C
#define ST_LEFT 0x00
#define ST_RIGHT 0x01
#define ST_CENTER 0x02
#define ST_DOWN 0x04
#define ST_UP 0x08
#define ST_VCENTER 0x0c
#define ST_TYPE 0xF0
#define ST_SINGLE 0
#define ST_MULTI 16
#define ST_TITLE_BAR 32
#define ST_PICTURE 48
#define ST_FRAME 64
#define ST_BACKGROUND 80
#define ST_GROUP_BOX 96
#define ST_GROUP_BOX2 112
#define ST_HUD_BACKGROUND 128
#define ST_TILE_PICTURE 144
#define ST_WITH_RECT 160
#define ST_LINE 176
#define ST_SHADOW 0x100
#define ST_NO_RECT 0x200
#define ST_KEEP_ASPECT_RATIO 0x800
#define ST_TITLE ST_TITLE_BAR + ST_CENTER
// Slider styles
#define SL_DIR 0x400
#define SL_VERT 0
#define SL_HORZ 0x400
#define SL_TEXTURES 0x10
// Listbox styles
#define LB_TEXTURES 0x10
#define LB_MULTI 0x20
#define FontM "PuristaMedium"
class RscText;
class DAGR_Button {
idc = -1;
type = CT_BUTTON;
style = ST_LEFT;
font = "PuristaMedium";
sizeEx = 0.02;
colorText[] = { 0, 1, 0, 1 };
colorFocused[] = { 0, 0, 0, 0 }; // border color for focused state
colorDisabled[] = { 0, 0, 0, 0 }; // text color for disabled state
colorBackground[] = { 0, 0, 0, 0 };
colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // background color for disabled state
colorBackgroundActive[] = { 0, 0, 0, 0 }; // background color for active state
offsetX = 0;
offsetY = 0;
offsetPressedX = 0;
offsetPressedY = 0;
colorShadow[] = { 0, 0, 0, 0 };
colorBorder[] = { 0, 0, 0, 0 };
borderSize = 0;
soundEnter[] = { "", 0, 1 }; // no sound
soundPush[] = { "", 0, 1 };
soundClick[] = { "", 0, 1 }; // no sound
soundEscape[] = { "", 0, 1 }; // no sound
x = 0.5;
y = 0.5;
w = 0.07;
h = 0.05;
text = "";
action = "";
};
class DAGR_Menu_Pic {
type = 0;
idc = -1;
style = 48;
x = 0;
y = 0;
w = 0.7;
h = 1.4;
text = "";
colorBackground[] = {};
colorText[] = {};
font = "PuristaMedium";
sizeEx = 0.04;
waitForLoad = 0;
};
class DAGR_Menu_Text {
type = 0;
idc = -1;
style = 0x00;
x = 0.5;
y = 0.5;
w = 0.15;
h = 0.15;
colorBackground[] = { 0, 0, 0, 0 };
colorText[] = { 0.239, 0.216, 0.153, 1 };
font = "PuristaMedium";
sizeEx = 0.03;
waitForLoad = 0;
text = "";
};
class DAGR_Menu {
idd = 266860;
movingEnable = false;
duration = 100000;
fadein = 0;
fadeout = 0;
name = "Dagr_Menu";
onLoad = "uiNamespace setVariable ['DAGR_Menu', _this select 0]";
onUnload = QUOTE(GVAR(PWR) = true); // Simulate pressing the power button
controls[] = {"DAGR_MENU_UI", "DAGR_PWR_Button", "DAGR_UP_Button", "DAGR_DOWN_Button", "DAGR_LEFT_Button", "DAGR_RIGHT_Button", "DAGR_NEXT_Button",
"DAGR_SEL_Button", "DAGR_MENU_Button", "DAGR_F1_Button", "DAGR_F2_Button", "DAGR_F3_Button", "DAGR_F1_Text", "DAGR_F2_Text", "DAGR_F3_Text", "DAGR_MENU_OPTION0",
"DAGR_MENU_OPTION1", "DAGR_MENU_OPTION2", "DAGR_MENU_OPTION3", "DAGR_MENU_OPTION4", "DAGR_MENU_SELECTION0", "DAGR_MENU_SELECTION1", "DAGR_MENU_SELECTION2",
"DAGR_MENU_SELECTION3", "DAGR_MENU_SELECTION4", "DAGR_MENU_Main_Text", "DAGR_MENU_PSELECTION1", "DAGR_MENU_PSELECTION2", "DAGR_MENU_PSELECTION3",
"DAGR_MENU_PSELECTION4", "DAGR_MENU_PSELECTION5", "DAGR_MENU_PSELECTION6","DAGR_MENU_PSELECTION7", "DAGR_MENU_PSELECTION8"};
class DAGR_MENU_UI : DAGR_Menu_Pic {
idc = 266861;
x = 0.175;
y = -0.173;
text = QUOTE(PATHTOF(UI\dagr_menu.paa));
sizeEx = 0.1;
};
class DAGR_PWR_Button : DAGR_Button {
idc = 266863;
action = QUOTE(GVAR(PWR) = true);
x = 0.40;
y = 0.65;
};
class DAGR_UP_Button : DAGR_Button {
idc = 266864;
action = QUOTE(GVAR(UP) = true);
x = 0.50;
y = 0.675;
};
class DAGR_DOWN_Button : DAGR_Button {
idc = 266865;
action = QUOTE(GVAR(DOWN) = true);
x = 0.50;
y = 0.81;
};
class DAGR_LEFT_Button : DAGR_Button {
idc = 266866;
action = QUOTE(GVAR(LEFT) = true);
x = 0.40;
y = 0.735;
w = 0.05;
h = 0.07;
};
class DAGR_RIGHT_Button : DAGR_Button {
idc = 266867;
action = QUOTE(GVAR(RIGHT) = true);
x = 0.62;
y = 0.735;
w = 0.05;
h = 0.07;
};
class DAGR_NEXT_Button : DAGR_Button {
idc = 266868;
action = QUOTE(DAGR_NEXT = true);
x = 0.60;
y = 0.65;
};
class DAGR_SEL_Button : DAGR_Button {
idc = 266869;
action = QUOTE(GVAR(SEL) = true);
x = 0.54;
y = 0.735;
w = 0.06;
h = 0.06;
};
class DAGR_MENU_Button : DAGR_Button {
idc = 266870;
action = QUOTE(GVAR(MENU_B) = true);
x = 0.46;
y = 0.735;
w = 0.06;
h = 0.06;
};
class DAGR_F1_Button : DAGR_Button {
idc = 266871;
action = QUOTE(GVAR(F1) = true);
x = 0.40;
y = 0.575;
};
class DAGR_F2_Button : DAGR_Button {
idc = 266872;
action = QUOTE(GVAR(F2) = true);
x = 0.495;
y = 0.575;
};
class DAGR_F3_Button : DAGR_Button {
idc = 266873;
action = QUOTE(GVAR(F3) = true);
x = 0.59;
y = 0.575;
};
class DAGR_F1_Text : DAGR_Menu_Text {
idc = 266874;
x = 0.388;
y = 0.38;
text = "";
};
class DAGR_F2_Text : DAGR_Menu_Text {
idc = 266875;
x = 0.506;
y = 0.38;
};
class DAGR_F3_Text : DAGR_Menu_Text {
idc = 266876;
x = 0.612;
y = 0.38;
};
class DAGR_MENU_OPTION0 : DAGR_Menu_Text {
idc = 2668777;
style = 0x02;
sizeEx = 0.035;
x = 0.43;
y = 0.19;
};
class DAGR_MENU_OPTION1 : DAGR_Menu_Text {
idc = 2668778;
style = 0x02;
sizeEx = 0.035;
x = 0.43;
y = 0.225;
};
class DAGR_MENU_OPTION2 : DAGR_Menu_Text {
idc = 2668779;
style = 0x02;
sizeEx = 0.035;
x = 0.43;
y = 0.26;
};
class DAGR_MENU_OPTION3 : DAGR_Menu_Text {
idc = 2668780;
style = 0x02;
sizeEx = 0.035;
x = 0.43;
y = 0.295;
};
class DAGR_MENU_OPTION4 : DAGR_Menu_Text {
idc = 2668781;
style = 0x02;
sizeEx = 0.035;
x = 0.43;
y = 0.33;
};
class DAGR_MENU_SELECTION0 : DAGR_Menu_Pic {
idc = 2668783;
x = 0.42;
y = 0.246;
w = 0.17;
h = 0.035;
sizeEx = 0.05;
};
class DAGR_MENU_SELECTION1 : DAGR_Menu_Pic {
idc = 2668784;
x = 0.42;
y = 0.281;
w = 0.17;
h = 0.035;
sizeEx = 0.05;
};
class DAGR_MENU_SELECTION2 : DAGR_Menu_Pic {
idc = 2668785;
x = 0.42;
y = 0.316;
w = 0.17;
h = 0.035;
sizeEx = 0.05;
};
class DAGR_MENU_SELECTION3 : DAGR_Menu_Pic {
idc = 2668786;
x = 0.42;
y = 0.351;
w = 0.17;
h = 0.035;
sizeEx = 0.05;
};
class DAGR_MENU_SELECTION4 : DAGR_Menu_Pic {
idc = 2668787;
x = 0.42;
y = 0.386;
w = 0.17;
h = 0.035;
sizeEx = 0.05;
};
class DAGR_MENU_Main_Text : DAGR_Menu_Text {
idc = 2668782;
style = ST_CENTER;
x = 0.38;
y = 0.32;
w = 0.25;
h = 0.035;
sizeEx = 0.04;
};
class DAGR_MENU_PSELECTION1 : DAGR_Menu_Pic {
idc = 2668788;
x = 0.451;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION2 : DAGR_Menu_Pic {
idc = 2668789;
x = 0.465;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION3 : DAGR_Menu_Pic {
idc = 2668790;
x = 0.479;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION4 : DAGR_Menu_Pic {
idc = 2668791;
x = 0.493;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION5 : DAGR_Menu_Pic {
idc = 2668792;
x = 0.507;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION6 : DAGR_Menu_Pic {
idc = 2668793;
x = 0.521;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION7 : DAGR_Menu_Pic {
idc = 2668794;
x = 0.535;
y = 0.352;
w = 0.01;
h = 0.003;
};
class DAGR_MENU_PSELECTION8 : DAGR_Menu_Pic {
idc = 2668795;
x = 0.549;
y = 0.352;
w = 0.01;
h = 0.003;
};
};

10
addons/dagr/README.md Normal file
View File

@ -0,0 +1,10 @@
ace_dagr
===============
Defense Advanced GPS Receiver
## Maintainers
The people responsible for merging changes to this component or answering potential questions.
- [Ruthberg] (http://github.com/Ulteq)

95
addons/dagr/RscTitles.hpp Normal file
View File

@ -0,0 +1,95 @@
class RscTitles {
class DAGR_Text {
type = 0;
idc = -1;
style = 0x01;
x = 0;
y = 0;
w = 0.15;
h = 0.050;
text = "";
colorBackground[] = { 0, 0, 0, 0 };
colorText[] = { 0.239, 0.216, 0.153, 1 };
font = "PuristaMedium";
sizeEx = 0.04;
waitForLoad = 0;
};
class DAGR_Pic {
type = 0;
idc = -1;
style = 48;
x = 0;
y = 0;
w = 0.50;
h = 0.50;
text = "";
colorBackground[] = {};
colorText[] = {};
font = "PuristaMedium";
sizeEx = 0.02;
waitForLoad = 0;
};
class DAGR_Display {
idd = 266850;
movingEnable = false;
duration = 100000;
fadein = 0;
fadeout = 0;
name = "Dagr_Display";
onLoad="uiNamespace setVariable ['DAGR_Display', _this select 0]";
controls[] = {"DAGR_UI", "DAGR_Grid", "DAGR_Speed", "DAGR_Elevation", "DAGR_Heading", "DAGR_Time", "DAGR_WP", "DAGR_Bearing", "DAGR_DIST"};
class DAGR_UI : DAGR_Pic {
idc = 266856;
x = "(SafeZoneW + SafeZoneX) - 0.45";
y = "(SafeZoneH + SafeZoneY) - 0.47";
};
class DAGR_Grid : DAGR_Text {
idc = 266851;
x = "(SafeZoneW + SafeZoneX) - 0.370";// 0.830
y = "(SafeZoneH + SafeZoneY)- 0.250";// 0.845
w = 0.25;
h = 0.06;
sizeEx = 0.07;
};
class DAGR_Speed : DAGR_Text {
idc = 266852;
x = "(SafeZoneW + SafeZoneX) - 0.388"; //0.812
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
};
class DAGR_Elevation : DAGR_Text {
idc = 266853;
x = "(SafeZoneW + SafeZoneX) - 0.270"; //0.930
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
};
class DAGR_Heading : DAGR_Text {
idc = 266854;
x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
y = "(SafeZoneH + SafeZoneY) - 0.1294"; //0.9656
};
class DAGR_Time : DAGR_Text {
idc = 266855;
x = "(SafeZoneW + SafeZoneX) - 0.275"; //0.925
y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
};
class DAGR_WP : DAGR_Text {
idc = 266857;
x = "(SafeZoneW + SafeZoneX) - 0.235"; //0.965
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
};
class DAGR_Bearing : DAGR_Text {
idc = 266858;
x = "(SafeZoneW + SafeZoneX) - 0.413"; //0.787
y = "(SafeZoneH + SafeZoneY) - 0.181"; //0.914
};
class DAGR_DIST : DAGR_Text {
idc = 266859;
x = "(SafeZoneW + SafeZoneX) - 0.265"; //0.935
y = "(SafeZoneH + SafeZoneY) - 0.129"; //0.965
};
};
};

Binary file not shown.

BIN
addons/dagr/UI/DAGR_GPS.paa Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
addons/dagr/UI/DAGR_WP.paa Normal file

Binary file not shown.

View File

@ -0,0 +1,31 @@
#include "script_component.hpp"
#include "initKeybinds.sqf"
GVAR(outputPFH) = -1;
GVAR(run) = false;
GVAR(hidden) = true;
GVAR(menuRun) = false;
GVAR(useDegrees) = true;
GVAR(updateInterval) = 0.5;
GVAR(numWaypoints) = 0;
GVAR(wpString0) = "";
GVAR(wpString1) = "";
GVAR(wpString2) = "";
GVAR(wpString3) = "";
GVAR(wpString4) = "";
GVAR(wp0) = 0;
GVAR(wp1) = 0;
GVAR(wp2) = 0;
GVAR(wp3) = 0;
GVAR(wp4) = 0;
GVAR(displaySelection) = "DATA";
GVAR(vectorConnected) = false;
GVAR(noVectorData) = true;
GVAR(vectorGrid) = "00000000";
["RangerfinderData", {_this call FUNC(handleRangeFinderData)}] call EFUNC(common,addEventHandler);

View File

@ -0,0 +1,12 @@
#include "script_component.hpp"
ADDON = false;
PREP(handleRangeFinderData);
PREP(menuInit);
PREP(outputData);
PREP(outputVector);
PREP(outputWP);
PREP(toggleOverlay);
ADDON = true;

18
addons/dagr/config.cpp Normal file
View File

@ -0,0 +1,18 @@
#include "script_component.hpp"
class CfgPatches {
class ADDON {
units[] = {"ACE_Item_DAGR"};
weapons[] = {"ACE_DAGR"};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_weather"};
author[] = {"Rosuto", "Ruthberg"};
VERSION_CONFIG;
};
};
#include "CfgEventHandlers.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
#include "Dialog.hpp"
#include "RscTitles.hpp"

View File

@ -0,0 +1,30 @@
/*
* Author: Rosuto, Ruthberg
* Handles incoming data packets from the Vectronix Vector LRF
*
* Arguments:
* 0: Slope distance (Meters) <NUMBER>
* 1: Azimuth (Degrees) <NUMBER>
* 2: Inclination (Degrees) <NUMBER>
*
* Return Value:
* Nothing
*
* Example:
* [1000, 45, 1] call ace_dagr_fnc_handleRangeFinderData
*
* Public: No
*/
#include "script_component.hpp"
#define EMP_RF_ACC 5 // Rangefinder Accuracy
PARAMS_3(_slopeDistance,_azimuth,_inclination);
if (GVAR(vectorConnected)) then {
GVAR(LAZPOS) = (eyePos player) vectorAdd ([_slopeDistance, _azimuth, _inclination] call CBA_fnc_polar2vect);
GVAR(LAZDIST) = _slopeDistance * cos(_inclination);
GVAR(LAZDIST) = floor (GVAR(LAZDIST) / EMP_RF_ACC) * EMP_RF_ACC;
GVAR(LAZHEADING) = _azimuth;
GVAR(noVectorData) = false;
};

View File

@ -0,0 +1,607 @@
/*
* Author: Rosuto, Ruthberg
* Creates the DAGR menu dialog
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
*
* Public: No
*/
#include "script_component.hpp"
#define __dsp (uiNamespace getVariable "DAGR_MENU")
#define __F1 266874
#define __F2 266875
#define __F3 266876
#define __Option0 2668777
#define __Option1 2668778
#define __Option2 2668779
#define __Option3 2668780
#define __Option4 2668781
#define __Selection0 2668783
#define __Selection1 2668784
#define __Selection2 2668785
#define __Selection3 2668786
#define __Selection4 2668787
#define __mainText 2668782
#define __PSelection1 2668788
#define __PSelection2 2668789
#define __PSelection3 2668790
#define __PSelection4 2668791
#define __PSelection5 2668792
#define __PSelection6 2668793
#define __PSelection7 2668794
#define __PSelection8 2668795
135471 cutText ["", "PLAIN"];
closeDialog 0;
createDialog "DAGR_MENU";
GVAR(menu) = "main";
GVAR(selection) = 0;
GVAR(numSelections) = 5;
GVAR(tmpUpdateRate) = GVAR(updateInterval);
GVAR(edit) = false;
GVAR(add) = false;
GVAR(pointer) = 0;
GVAR(digit1) = 0;
GVAR(digit2) = 0;
GVAR(digit3) = 0;
GVAR(digit4) = 0;
GVAR(digit5) = 0;
GVAR(digit6) = 0;
GVAR(digit7) = 0;
GVAR(digit8) = 0;
GVAR(busy) = false;
GVAR(busyTimer) = 0;
GVAR(showNoWaypointsFound) = false;
GVAR(showInfoUpdatin) = false;
GVAR(showDeleting) = false;
GVAR(showOutOfSpace) = false;
GVAR(PWR) = false;
GVAR(menuRun) = true;
[{
if (!dialog || GVAR(PWR)) exitWith {
closeDialog 266860;
GVAR(menuRun) = false;
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
if (GVAR(MENU_B)) then {
GVAR(menu) = "main";
GVAR(selection) = 0;
GVAR(numSelections) = 5;
};
if (!GVAR(add) && !GVAR(edit)) then {
if (GVAR(DOWN)) then {
GVAR(selection) = (GVAR(numSelections) + GVAR(selection) + 1);
};
if (GVAR(UP)) then {
GVAR(selection) = (GVAR(numSelections) + GVAR(selection) - 1);
};
GVAR(selection) = if (GVAR(numSelections) > 0) then { GVAR(selection) % GVAR(numSelections) } else { 0 };
};
if (GVAR(LEFT)) then {
GVAR(pointer) = (8 + GVAR(pointer) - 1);
};
if (GVAR(RIGHT)) then {
GVAR(pointer) = (8 + GVAR(pointer) + 1);
};
GVAR(pointer) = GVAR(pointer) % 8;
(__dsp displayCtrl __PSelection1) ctrlSetText "";
(__dsp displayCtrl __PSelection2) ctrlSetText "";
(__dsp displayCtrl __PSelection3) ctrlSetText "";
(__dsp displayCtrl __PSelection4) ctrlSetText "";
(__dsp displayCtrl __PSelection5) ctrlSetText "";
(__dsp displayCtrl __PSelection6) ctrlSetText "";
(__dsp displayCtrl __PSelection7) ctrlSetText "";
(__dsp displayCtrl __PSelection8) ctrlSetText "";
(__dsp displayCtrl __Selection0) ctrlSetText "";
(__dsp displayCtrl __Selection1) ctrlSetText "";
(__dsp displayCtrl __Selection2) ctrlSetText "";
(__dsp displayCtrl __Selection3) ctrlSetText "";
(__dsp displayCtrl __Selection4) ctrlSetText "";
(__dsp displayCtrl __F1) ctrlSetText "";
(__dsp displayCtrl __F2) ctrlSetText "";
(__dsp displayCtrl __F3) ctrlSetText "";
(__dsp displayCtrl __mainText) ctrlSetText "";
(__dsp displayCtrl __Option0) ctrlSetText "";
(__dsp displayCtrl __Option1) ctrlSetText "";
(__dsp displayCtrl __Option2) ctrlSetText "";
(__dsp displayCtrl __Option3) ctrlSetText "";
(__dsp displayCtrl __Option4) ctrlSetText "";
switch (GVAR(menu)) do {
case "main": {
if (GVAR(SEL)) then {
switch (GVAR(selection)) do {
case 0: {
GVAR(displaySelection) = "DATA";
GVAR(vectorConnected) = false;
if (!GVAR(busy)) then {
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data.";
if (ACE_time - GVAR(busyTimer) > 0.5) then {
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data..";
};
if (ACE_time - GVAR(busyTimer) > 1.0) then {
(__dsp displayCtrl __mainText) ctrlSetText "Acquiring Data...";
};
if (ACE_time - GVAR(busyTimer) > 1.5) then {
(__dsp displayCtrl __mainText) ctrlSetText "Position Acquired";
};
if (ACE_time - GVAR(busyTimer) > 3.0) then {
GVAR(busy) = false;
};
};
case 1: {
if (GVAR(numWaypoints) < 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "No Waypoints Found";
if (!GVAR(busy)) then {
GVAR(showNoWaypointsFound) = true;
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
} else {
GVAR(menu) = "goto_wp"; GVAR(numSelections) = GVAR(numWaypoints); GVAR(selection) = 0;
};
};
case 2: { GVAR(menu) = "wp_list"; GVAR(numSelections) = GVAR(numWaypoints); GVAR(selection) = 0 };
case 3: { GVAR(menu) = "connect"; GVAR(numSelections) = 1; };
case 4: { GVAR(menu) = "options"; GVAR(numSelections) = 2; };
};
};
if (GVAR(busy) && GVAR(showNoWaypointsFound)) then {
if (ACE_time - GVAR(busyTimer) > 2) then {
GVAR(showNoWaypointsFound) = false;
GVAR(busy) = false;
};
};
if (!GVAR(busy)) then {
(__dsp displayCtrl __Option0) ctrlSetText "DATA VIEW";
(__dsp displayCtrl __Option1) ctrlSetText "GOTO WP";
(__dsp displayCtrl __Option2) ctrlSetText "WP LIST";
(__dsp displayCtrl __Option3) ctrlSetText "CONNECT TO";
(__dsp displayCtrl __Option4) ctrlSetText "OPTIONS";
(__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
};
};
case "goto_wp": {
if (!GVAR(busy)) then {
(__dsp displayCtrl __Option0) ctrlSetText GVAR(wpString0);
(__dsp displayCtrl __Option1) ctrlSetText GVAR(wpString1);
(__dsp displayCtrl __Option2) ctrlSetText GVAR(wpString2);
(__dsp displayCtrl __Option3) ctrlSetText GVAR(wpString3);
(__dsp displayCtrl __Option4) ctrlSetText GVAR(wpString4);
if (GVAR(numSelections) > 0) then {
(__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
};
};
if (GVAR(SEL)) then {
GVAR(vectorConnected) = false;
GVAR(displaySelection) = "WP";
switch (GVAR(selection)) do {
case 0: { DAGR_WP_INFO = GVAR(wp0); };
case 1: { DAGR_WP_INFO = GVAR(wp1); };
case 2: { DAGR_WP_INFO = GVAR(wp2); };
case 3: { DAGR_WP_INFO = GVAR(wp3); };
case 4: { DAGR_WP_INFO = GVAR(wp4); };
};
if (!GVAR(busy)) then {
GVAR(showInfoUpdating) = true;
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
};
if (GVAR(busy) && GVAR(showInfoUpdating)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update.";
if (ACE_time - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update..";
};
if (ACE_time - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Update...";
};
if (ACE_time - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Info Updated";
};
if (ACE_time - GVAR(busyTimer) > 2.9) then {
GVAR(showInfoUpdating) = false;
GVAR(busy) = false;
};
};
};
case "wp_list": {
if (!GVAR(add) && !GVAR(edit)) then {
if (!GVAR(busy)) then {
(__dsp displayCtrl __Option0) ctrlSetText GVAR(wpString0);
(__dsp displayCtrl __Option1) ctrlSetText GVAR(wpString1);
(__dsp displayCtrl __Option2) ctrlSetText GVAR(wpString2);
(__dsp displayCtrl __Option3) ctrlSetText GVAR(wpString3);
(__dsp displayCtrl __Option4) ctrlSetText GVAR(wpString4);
(__dsp displayCtrl __F1) ctrlSetText "Add";
(__dsp displayCtrl __F2) ctrlSetText "Edit";
(__dsp displayCtrl __F3) ctrlSetText "Delete";
if (GVAR(numSelections) > 0) then {
(__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
};
};
if (GVAR(F3) && GVAR(numWaypoints) > 0) then {
if (!GVAR(busy)) then {
switch (GVAR(selection)) do {
case 0: {
GVAR(wpString0) = GVAR(wpString1);
GVAR(wp0) = GVAR(wp1);
GVAR(wpString1) = GVAR(wpString2);
GVAR(wp1) = GVAR(wp2);
GVAR(wpString2) = GVAR(wpString3);
GVAR(wp2) = GVAR(wp3);
GVAR(wpString3) = GVAR(wpString4);
GVAR(wp3) = GVAR(wp4);
GVAR(wpString4) = "";
GVAR(wp4) = "";
};
case 1: {
GVAR(wpString1) = GVAR(wpString2);
GVAR(wp1) = GVAR(wp2);
GVAR(wpString2) = GVAR(wpString3);
GVAR(wp2) = GVAR(wp3);
GVAR(wpString3) = GVAR(wpString4);
GVAR(wp3) = GVAR(wp4);
GVAR(wpString4) = "";
GVAR(wp4) = "";
};
case 2: {
GVAR(wpString2) = GVAR(wpString3);
GVAR(wp2) = GVAR(wp3);
GVAR(wpString3) = GVAR(wpString4);
GVAR(wp3) = GVAR(wp4);
GVAR(wpString4) = "";
GVAR(wp4) = "";
};
case 3: {
GVAR(wpString3) = GVAR(wpString4);
GVAR(wp3) = GVAR(wp4);
GVAR(wpString4) = "";
GVAR(wp4) = "";
};
case 4: {
GVAR(wpString4) = "";
GVAR(wp4) = "";
};
};
GVAR(numWaypoints) = GVAR(numWaypoints) - 1;
GVAR(numSelections) = GVAR(numWaypoints);
GVAR(showDeleting) = true;
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
};
if (GVAR(busy) && GVAR(showDeleting)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting.";
if (ACE_time - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting..";
};
if (ACE_time - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Deleting...";
};
if (ACE_time - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Waypoint Deleted";
};
if (ACE_time - GVAR(busyTimer) > 2.9) then {
GVAR(showDeleting) = false;
GVAR(busy) = false;
};
};
if (GVAR(F1)) then {
if (GVAR(numWaypoints) == 5) then {
if (!GVAR(busy)) then {
GVAR(showOutOfSpace) = true;
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
} else {
GVAR(digit1) = 0;
GVAR(digit2) = 0;
GVAR(digit3) = 0;
GVAR(digit4) = 0;
GVAR(digit5) = 0;
GVAR(digit6) = 0;
GVAR(digit7) = 0;
GVAR(digit8) = 0;
GVAR(pointer) = 0;
GVAR(add) = true;
};
};
if (GVAR(busy) && GVAR(showOutOfSpace)) then {
(__dsp displayCtrl __mainText) ctrlSetText "Out of Space";
if (ACE_time - GVAR(busyTimer) > 2.5) then {
GVAR(showOutOfSpace) = false;
GVAR(busy) = false;
};
};
if (GVAR(F2) && GVAR(numWaypoints) > 0) then {
GVAR(pointer) = 0;
GVAR(edit) = true;
GVAR(add) = false;
switch (GVAR(selection)) do {
case 0: {
GVAR(digit1) = floor (GVAR(wp0) / 10000000);
GVAR(digit2) = floor (GVAR(wp0) / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor (GVAR(wp0) / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor (GVAR(wp0) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor (GVAR(wp0) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor (GVAR(wp0) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor (GVAR(wp0) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor (GVAR(wp0) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
case 1: {
GVAR(digit1) = floor (GVAR(wp1) / 10000000);
GVAR(digit2) = floor (GVAR(wp1) / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor (GVAR(wp1) / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor (GVAR(wp1) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor (GVAR(wp1) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor (GVAR(wp1) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor (GVAR(wp1) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor (GVAR(wp1) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
case 2: {
GVAR(digit1) = floor (GVAR(wp2) / 10000000);
GVAR(digit2) = floor (GVAR(wp2) / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor (GVAR(wp2) / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor (GVAR(wp2) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor (GVAR(wp2) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor (GVAR(wp2) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor (GVAR(wp2) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor (GVAR(wp2) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
case 3: {
GVAR(digit1) = floor (GVAR(wp3) / 10000000);
GVAR(digit2) = floor (GVAR(wp3) / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor (GVAR(wp3) / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor (GVAR(wp3) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor (GVAR(wp3) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor (GVAR(wp3) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor (GVAR(wp3) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor (GVAR(wp3) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
case 4: {
GVAR(digit1) = floor (GVAR(wp4) / 10000000);
GVAR(digit2) = floor (GVAR(wp4) / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor (GVAR(wp4) / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor (GVAR(wp4) / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor (GVAR(wp4) / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor (GVAR(wp4) / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor (GVAR(wp4) / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor (GVAR(wp4) - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
};
};
} else {
if (!GVAR(busy)) then {
(__dsp displayCtrl __F1) ctrlSetText "Save";
(__dsp displayCtrl __F2) ctrlSetText "Vector";
(__dsp displayCtrl __F3) ctrlSetText "Cancel";
GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8);
(__dsp displayCtrl __mainText) ctrlSetText GVAR(output);
(__dsp displayCtrl __PSelection1 + GVAR(pointer)) ctrlSetText QUOTE(PATHTOF(UI\DAGR_PSelection.paa));
};
if (GVAR(F1)) then {
if (!GVAR(busy)) then {
if (GVAR(add)) then {
switch (GVAR(numWaypoints)) do {
case 0: { GVAR(wpString0) = GVAR(output); GVAR(wp0) = parseNumber GVAR(output); };
case 1: { GVAR(wpString1) = GVAR(output); GVAR(wp1) = parseNumber GVAR(output); };
case 2: { GVAR(wpString2) = GVAR(output); GVAR(wp2) = parseNumber GVAR(output); };
case 3: { GVAR(wpString3) = GVAR(output); GVAR(wp3) = parseNumber GVAR(output); };
case 4: { GVAR(wpString4) = GVAR(output); GVAR(wp4) = parseNumber GVAR(output); };
};
GVAR(numWaypoints) = GVAR(numWaypoints) + 1;
GVAR(numSelections) = GVAR(numWaypoints);
GVAR(selection) = 0;
};
if (GVAR(edit)) then {
switch (GVAR(selection)) do {
case 0: { GVAR(wpString0) = GVAR(output); GVAR(wp0) = parseNumber GVAR(output); };
case 1: { GVAR(wpString1) = GVAR(output); GVAR(wp1) = parseNumber GVAR(output); };
case 2: { GVAR(wpString2) = GVAR(output); GVAR(wp2) = parseNumber GVAR(output); };
case 3: { GVAR(wpString3) = GVAR(output); GVAR(wp3) = parseNumber GVAR(output); };
case 4: { GVAR(wpString4) = GVAR(output); GVAR(wp4) = parseNumber GVAR(output); };
};
};
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
(__dsp displayCtrl __F1) ctrlSetText "";
(__dsp displayCtrl __F2) ctrlSetText "";
(__dsp displayCtrl __F3) ctrlSetText "";
(__dsp displayCtrl __mainText) ctrlSetText "Saving.";
if (ACE_time - GVAR(busyTimer) > 1) then {
(__dsp displayCtrl __mainText) ctrlSetText "Saving..";
};
if (ACE_time - GVAR(busyTimer) > 1.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Saving...";
};
if (ACE_time - GVAR(busyTimer) > 1.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Waypoint Saved";
};
if (ACE_time - GVAR(busyTimer) > 2.9) then {
GVAR(edit) = false;
GVAR(add) = false;
GVAR(busy) = false;
};
};
if (GVAR(F2)) then {
private ["_grid", "_gridVector"];
_grid = toArray GVAR(vectorGrid);
_grid deleteAt 4;
_grid = toString _grid;
_gridVector = parseNumber _grid;
GVAR(digit1) = floor(_gridVector / 10000000);
GVAR(digit2) = floor(_gridVector / 1000000 - GVAR(digit1) *10);
GVAR(digit3) = floor(_gridVector / 100000 - GVAR(digit2) * 10 - GVAR(digit1) * 100);
GVAR(digit4) = floor(_gridVector / 10000 - GVAR(digit3) * 10 - GVAR(digit2) * 100 - GVAR(digit1) * 1000);
GVAR(digit5) = floor(_gridVector / 1000 - GVAR(digit4) * 10 - GVAR(digit3) * 100 - GVAR(digit2) * 1000 - GVAR(digit1) * 10000);
GVAR(digit6) = floor(_gridVector / 100 - GVAR(digit5) * 10 - GVAR(digit4) * 100 - GVAR(digit3) * 1000 - GVAR(digit2) * 10000 - GVAR(digit1) * 100000);
GVAR(digit7) = floor(_gridVector / 10- GVAR(digit6) * 10 - GVAR(digit5) * 100 - GVAR(digit4) * 1000 - GVAR(digit3) * 10000 - GVAR(digit2) * 100000 - GVAR(digit1) * 1000000);
GVAR(digit8) = floor(_gridVector - GVAR(digit7) * 10 - GVAR(digit6) * 100 - GVAR(digit5) * 1000 - GVAR(digit4) * 10000 - GVAR(digit3) * 100000 - GVAR(digit2) * 1000000 - GVAR(digit1) * 10000000);
};
if (GVAR(F3)) then {
if (!GVAR(busy)) then {
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
} else {
(__dsp displayCtrl __F1) ctrlSetText "Save";
(__dsp displayCtrl __F2) ctrlSetText "Vector";
(__dsp displayCtrl __F3) ctrlSetText "Cancel";
GVAR(output) = str GVAR(digit1) + str GVAR(digit2) + str GVAR(digit3) + str GVAR(digit4) + str GVAR(digit5) + str GVAR(digit6) + str GVAR(digit7) + str GVAR(digit8);
(__dsp displayCtrl __mainText) ctrlSetText GVAR(output);
};
if (ACE_time - GVAR(busyTimer) > 0.1) then {
GVAR(add) = false;
GVAR(edit) = false;
GVAR(busy) = false;
};
};
if (GVAR(UP)) then {
switch (GVAR(pointer) + 1) do {
case 1: { GVAR(digit1) = (10 + GVAR(digit1) + 1) % 10 };
case 2: { GVAR(digit2) = (10 + GVAR(digit2) + 1) % 10 };
case 3: { GVAR(digit3) = (10 + GVAR(digit3) + 1) % 10 };
case 4: { GVAR(digit4) = (10 + GVAR(digit4) + 1) % 10 };
case 5: { GVAR(digit5) = (10 + GVAR(digit5) + 1) % 10 };
case 6: { GVAR(digit6) = (10 + GVAR(digit6) + 1) % 10 };
case 7: { GVAR(digit7) = (10 + GVAR(digit7) + 1) % 10 };
case 8: { GVAR(digit8) = (10 + GVAR(digit8) + 1) % 10 };
};
};
if (GVAR(DOWN)) then {
switch (GVAR(pointer) + 1) do {
case 1: { GVAR(digit1) = (10 + GVAR(digit1) - 1) % 10 };
case 2: { GVAR(digit2) = (10 + GVAR(digit2) - 1) % 10 };
case 3: { GVAR(digit3) = (10 + GVAR(digit3) - 1) % 10 };
case 4: { GVAR(digit4) = (10 + GVAR(digit4) - 1) % 10 };
case 5: { GVAR(digit5) = (10 + GVAR(digit5) - 1) % 10 };
case 6: { GVAR(digit6) = (10 + GVAR(digit6) - 1) % 10 };
case 7: { GVAR(digit7) = (10 + GVAR(digit7) - 1) % 10 };
case 8: { GVAR(digit8) = (10 + GVAR(digit8) - 1) % 10 };
};
};
};
};
case "connect": {
if (!GVAR(busy)) then {
(__dsp displayCtrl __Option0) ctrlSetText "Vector 21";
(__dsp displayCtrl __Selection0) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
};
if (GVAR(SEL)) then {
if (!GVAR(busy)) then {
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
(__dsp displayCtrl __mainText) ctrlSetText "Connecting.";
if (ACE_time - GVAR(busyTimer) > 0.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Connecting..";
};
if (ACE_time - GVAR(busyTimer) > 0.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Connecting...";
};
if (ACE_time - GVAR(busyTimer) > 0.6) then {
if (ACE_player hasWeapon "ACE_Vector") then {
GVAR(displaySelection) = "VECTOR";
(__dsp displayCtrl __mainText) ctrlSetText "Vector Connected";
GVAR(vectorConnected) = true;
} else {
(__dsp displayCtrl __mainText) ctrlSetText "No Device Found";
GVAR(vectorConnected) = false;
};
};
if (ACE_time - GVAR(busyTimer) > 3.1) then {
GVAR(busy) = false;
if (GVAR(vectorConnected)) then {
GVAR(menu) = "main"; GVAR(numSelections) = 5;
};
};
};
};
case "options": {
(__dsp displayCtrl __Option0) ctrlSetText "Signal Delay";
(__dsp displayCtrl __Option1) ctrlSetText (if (GVAR(useDegrees)) then { "Direction: Deg" } else { "Direction: MIL" });
(__dsp displayCtrl (__Selection0 + GVAR(selection))) ctrlSetText QUOTE(PATHTOF(UI\DAGR_Selection.paa));
if (GVAR(SEL)) then {
GVAR(vectorConnected) = false;
switch (GVAR(selection)) do {
case 0: { GVAR(menu) = "update_rate"; GVAR(numSelections) = 1; GVAR(tmpUpdateRate) = GVAR(updateInterval); };
case 1: { GVAR(useDegrees) = !GVAR(useDegrees); };
};
}
};
case "update_rate": {
if (GVAR(F1)) then {
GVAR(updateInterval) = GVAR(tmpUpdateRate);
if (!GVAR(busy)) then {
GVAR(busy) = true;
GVAR(busyTimer) = ACE_time;
};
(__dsp displayCtrl __mainText) ctrlSetText "Updating.";
if (ACE_time - GVAR(busyTimer) > 0.2) then {
(__dsp displayCtrl __mainText) ctrlSetText "Updating..";
};
if (ACE_time - GVAR(busyTimer) > 0.4) then {
(__dsp displayCtrl __mainText) ctrlSetText "Updating...";
};
if (ACE_time - GVAR(busyTimer) > 0.6) then {
(__dsp displayCtrl __mainText) ctrlSetText "Update Success";
};
if (ACE_time - GVAR(busyTimer) > 2.1) then {
GVAR(busy) = false;
GVAR(menu) = "options"; GVAR(numSelections) = 2;
};
};
if (GVAR(F3)) then {
GVAR(menu) = "options"; GVAR(numSelections) = 2;
};
if (GVAR(DOWN)) then {
GVAR(tmpUpdateRate) = GVAR(tmpUpdateRate) - 0.1;
};
if (GVAR(UP)) then {
GVAR(tmpUpdateRate) = GVAR(tmpUpdateRate) + 0.1;
};
GVAR(tmpUpdateRate) = 0.1 max GVAR(tmpUpdateRate) min 2.0;
if (!GVAR(busy)) then {
(__dsp displayCtrl __mainText) ctrlSetText (Str(GVAR(tmpUpdateRate) * 1000) + "ms");
(__dsp displayCtrl __F1) ctrlSetText "Save";
(__dsp displayCtrl __F3) ctrlSetText "Cancel";
};
};
};
if (!GVAR(busy)) then {
GVAR(F3) = false;
GVAR(F2) = false;
GVAR(F1) = false;
GVAR(MENU_B) = false;
GVAR(SEL) = false;
DAGR_NEXT = false;
GVAR(RIGHT) = false;
GVAR(LEFT) = false;
GVAR(UP) = false;
GVAR(DOWN) = false;
GVAR(PWR) = false;
};
}, 0, []] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,120 @@
/*
* Author: Rosuto
* DAGR data output loop
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
*
* Public: No
*/
#include "script_component.hpp"
135471 cutRsc ["DAGR_DISPLAY", "plain down"];
#define __display (uiNameSpace getVariable "DAGR_DISPLAY")
#define __gridControl (__display displayCtrl 266851)
#define __speedControl (__display displayCtrl 266852)
#define __elevationControl (__display displayCtrl 266853)
#define __headingControl (__display displayCtrl 266854)
#define __timeControl (__display displayCtrl 266855)
#define __background (__display displayCtrl 266856)
__background ctrlSetText QUOTE(PATHTOF(UI\dagr_gps.paa));
if (GVAR(outputPFH) != -1) exitWith {};
GVAR(outputPFH) = [{
private ["_pos", "_mapSize", "_gridConfig", "_offsetX", "_offsetY", "_stepX", "_stepY", "_xgrid", "_ygrid", "_xcoord", "_ycoord", "_speed", "_dagrHeading", "_dagrGrid", "_dagrElevation", "_dagrSpeed", "_dagrTime", "_elevation"];
// Abort Condition
if !(GVAR(run) && [ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {
GVAR(outputPFH) = -1;
135471 cutText ["", "PLAIN"];
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
// GRID
_pos = getPosASL ACE_player;
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
_gridConfig = (configFile >> "CfgWorlds" >> worldName >> "Grid");
_offsetX = getNumber (_gridConfig >> "offsetX");
_offsetY = getNumber (_gridConfig >> "offsetY");
_stepX = getNumber (_gridConfig >> "Zoom1" >> "stepX");
_stepY = getNumber (_gridConfig >> "Zoom1" >> "stepY");
if (_stepY >= 0) then {
_pos set [1, (_mapSize - 100) - (_pos select 1) - _offsetY];
};
// Incase grids go neg due to 99-00 boundry
if (_pos select 0 < 0) then {_pos set [0, (_pos select 0) + 99999];};
if (_pos select 1 < 0) then {_pos set [1, (_pos select 1) + 99999];};
_xGrid = toArray Str(round(_pos select 0));
while {count _xGrid < 5} do {
_xGrid = [48] + _xGrid;
};
_xGrid resize 4;
_xGrid = toString _xGrid;
_xGrid = parseNumber _xGrid;
_yGrid = toArray Str(round(_pos select 1));
while {count _yGrid < 5} do {
_yGrid = [48] + _yGrid;
};
_yGrid resize 4;
_yGrid = toString _yGrid;
_yGrid = parseNumber _yGrid;
_xCoord = switch true do {
case (_xGrid >= 1000): { "" + Str(_xGrid) };
case (_xGrid >= 100): { "0" + Str(_xGrid) };
case (_xGrid >= 10): { "00" + Str(_xGrid) };
default { "000" + Str(_xGrid) };
};
_yCoord = switch true do {
case (_yGrid >= 1000): { "" + Str(_yGrid) };
case (_yGrid >= 100): { "0" + Str(_yGrid) };
case (_yGrid >= 10): { "00" + Str(_yGrid) };
default { "000" + Str(_yGrid) };
};
_dagrGrid = _xcoord + " " + _ycoord;
// SPEED
_speed = speed (vehicle ACE_player);
_speed = floor (_speed * 10) / 10;
_speed = abs(_speed);
_dagrspeed = str _speed + "kph";
// Elevation
_elevation = getPosASL ACE_player;
_elevation = floor ((_elevation select 2) + EGVAR(weather,altitude));
_dagrElevation = str _elevation + "m";
// Heading
_dagrHeading = if (!GVAR(useDegrees)) then {
floor (DEG_TO_MIL(direction (vehicle ACE_player)))
} else {
floor (direction (vehicle ACE_player))
};
// Time
_dagrTime = [daytime, "HH:MM"] call bis_fnc_timeToString;
// Output
__gridControl ctrlSetText format ["%1", _dagrGrid];
__speedControl ctrlSetText format ["%1", _dagrSpeed];
__elevationControl ctrlSetText format ["%1", _dagrElevation];
__headingControl ctrlSetText (if (!GVAR(useDegrees)) then { format ["%1", _dagrHeading] } else { format ["%1 °", _dagrHeading] });
__timeControl ctrlSetText format ["%1", _dagrTime];
}, GVAR(updateInterval), []] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,98 @@
/*
* Author: Rosuto
* DAGR vector output loop
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
*
* Public: No
*/
#include "script_component.hpp"
private ["_pos", "_xGrid", "_yGrid", "_dagrGrid", "_bearing", "_dagrDist", "_dagrElevation", "_dagrTime", "_elevation", "_xCoord", "_yCoord"];
135471 cutRsc ["DAGR_DISPLAY", "plain down"];
#define __display (uiNameSpace getVariable "DAGR_DISPLAY")
#define __gridControl (__display displayCtrl 266851)
#define __speedControl (__display displayCtrl 266858)
#define __elevationControl (__display displayCtrl 266853)
#define __headingControl (__display displayCtrl 266854)
#define __timeControl (__display displayCtrl 266855)
#define __background (__display displayCtrl 266856)
__background ctrlSetText QUOTE(PATHTOF(UI\dagr_vector.paa));
if (GVAR(noVectorData)) exitwith {};
_pos = [GVAR(LAZPOS) select 0, GVAR(LAZPOS) select 1];
// Incase grids go neg due to 99-00 boundry
if (_pos select 0 < 0) then {_pos set [0, (_pos select 0) + 99999];};
if (_pos select 1 < 0) then {_pos set [1, (_pos select 1) + 99999];};
// Find laser position
_xGrid = toArray Str(round(_pos select 0));
while {count _xGrid < 5} do {
_xGrid = [48] + _xGrid;
};
_xGrid resize 4;
_xGrid = toString _xGrid;
_xGrid = parseNumber _xGrid;
_yGrid = toArray Str(round(_pos select 1));
while {count _yGrid < 5} do {
_yGrid = [48] + _yGrid;
};
_yGrid resize 4;
_yGrid = toString _yGrid;
_yGrid = parseNumber _yGrid;
_xCoord = switch true do {
case (_xGrid >= 1000): { "" + Str(_xGrid) };
case (_xGrid >= 100): { "0" + Str(_xGrid) };
case (_xGrid >= 10): { "00" + Str(_xGrid) };
default { "000" + Str(_xGrid) };
};
_yCoord = switch true do {
case (_yGrid >= 1000): { "" + Str(_yGrid) };
case (_yGrid >= 100): { "0" + Str(_yGrid) };
case (_yGrid >= 10): { "00" + Str(_yGrid) };
default { "000" + Str(_yGrid) };
};
_dagrGrid = _xCoord + " " + _yCoord;
// Find target elevation
_elevation = floor ((GVAR(LAZPOS) select 2) + EGVAR(weather,altitude));
_dagrElevation = str _elevation + "m";
// Time
_dagrTime = [daytime, "HH:MM"] call bis_fnc_timeToString;
// Bearing
_bearing = GVAR(LAZHEADING);
if (_bearing >= 360) then {_bearing = _bearing - 360;};
if (!GVAR(useDegrees)) then {_bearing = DEG_TO_MIL(_bearing)};
_bearing = floor (_bearing);
// Distance
_dagrDist = str GVAR(LAZDIST) + "m";
// Put grid into variable so DAGR menu can access it
GVAR(vectorGrid) = _dagrGrid;
// OUTPUT
__gridControl ctrlSetText format ["%1", _dagrGrid];
__speedControl ctrlSetText format ["%1", _dagrDist];
__elevationControl ctrlSetText format ["%1", _dagrElevation];
__headingControl ctrlSetText (if (!GVAR(useDegrees)) then { format ["%1", _bearing] } else { format ["%1°", _bearing] });
__timeControl ctrlSetText format ["%1", _dagrTime];

View File

@ -0,0 +1,136 @@
/*
* Author: Rosuto
* DAGR waypoint output loop
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
*
* Public: No
*/
#include "script_component.hpp"
135471 cutRsc ["DAGR_DISPLAY", "plain down"];
#define __display (uiNameSpace getVariable "DAGR_DISPLAY")
#define __gridControl (__display displayCtrl 266851)
#define __speedControl (__display displayCtrl 266858)
#define __elevationControl (__display displayCtrl 266857)
#define __headingControl (__display displayCtrl 266854)
#define __timeControl (__display displayCtrl 266859)
#define __background (__display displayCtrl 266856)
__background ctrlSetText QUOTE(PATHTOF(UI\dagr_wp.paa));
if (GVAR(outputPFH) != -1) exitWith {};
GVAR(outputPFH) = [{
private ["_pos", "_mapSize", "_gridConfig", "_offsetX", "_offsetY", "_stepX", "_stepY", "_xGrid", "_yGrid", "_xCoord", "_yCoord", "_dagrHeading", "_dagrGrid", "_bearing", "_MYpos", "_WPpos", "_dagrDistance", "_distance"];
// Abort Condition
if !(GVAR(run) && [ACE_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {
GVAR(outputPFH) = -1;
135471 cutText ["", "PLAIN"];
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
// GRID
_pos = getPosASL ACE_player;
_mapSize = getNumber (configFile >> "CfgWorlds" >> worldName >> "MapSize");
_gridConfig = (configFile >> "CfgWorlds" >> worldName >> "Grid");
_offsetX = getNumber (_gridConfig >> "offsetX");
_offsetY = getNumber (_gridConfig >> "offsetY");
_stepX = getNumber (_gridConfig >> "Zoom1" >> "stepX");
_stepY = getNumber (_gridConfig >> "Zoom1" >> "stepY");
if (_stepY >= 0) then {
_pos set [1, (_mapSize - 100) - (_pos select 1) - _offsetY];
};
// Incase grids go neg due to 99-00 boundry
if (_pos select 0 < 0) then {_pos set [0, (_pos select 0) + 99999];};
if (_pos select 1 < 0) then {_pos set [1, (_pos select 1) + 99999];};
_xGrid = toArray Str(round(_pos select 0));
while {count _xGrid < 5} do {
_xGrid = [48] + _xGrid;
};
_xGrid resize 4;
_xGrid = toString _xGrid;
_xGrid = parseNumber _xGrid;
_yGrid = toArray Str(round(_pos select 1));
while {count _yGrid < 5} do {
_yGrid = [48] + _yGrid;
};
_yGrid resize 4;
_yGrid = toString _yGrid;
_yGrid = parseNumber _yGrid;
_xCoord = switch true do {
case (_xGrid >= 1000): { "" + Str(_xGrid) };
case (_xGrid >= 100): { "0" + Str(_xGrid) };
case (_xGrid >= 10): { "00" + Str(_xGrid) };
default { "000" + Str(_xGrid) };
};
_yCoord = switch true do {
case (_yGrid >= 1000): { "" + Str(_yGrid) };
case (_yGrid >= 100): { "0" + Str(_yGrid) };
case (_yGrid >= 10): { "00" + Str(_yGrid) };
default { "000" + Str(_yGrid) };
};
_dagrGrid = _xCoord + " " + _yCoord;
// WP Grid
_xGrid2 = floor (DAGR_WP_INFO / 10000);
_yGrid2 = DAGR_WP_INFO - _xGrid2 * 10000;
_xCoord2 = switch true do {
case (_xGrid2 >= 1000): { "" + Str(_xGrid2) };
case (_xGrid2 >= 100): { "0" + Str(_xGrid2) };
case (_xGrid2 >= 10): { "00" + Str(_xGrid2) };
default { "000" + Str(_xGrid2) };
};
_yCoord2 = switch true do {
case (_yGrid2 >= 1000): { "" + Str(_yGrid2) };
case (_yGrid2 >= 100): { "0" + Str(_yGrid2) };
case (_yGrid2 >= 10): { "00" + Str(_yGrid2) };
default { "000" + Str(_yGrid2) };
};
_dagrGrid2 = _xCoord2 + " " + _yCoord2;
// Distance
_WPpos = [[_xCoord2, _yCoord2], true] call CBA_fnc_mapGridToPos;
_MYpos = [[_xCoord, _yCoord], true] call CBA_fnc_mapGridToPos;
_distance = _MYpos distance _WPpos;
_distance = floor (_distance * 10) / 10;
_dagrDistance = str _distance + "m";
// Heading
_dagrHeading = floor (if (GVAR(useDegrees)) then {
direction (vehicle ACE_player)
} else {
DEG_TO_MIL(direction (vehicle ACE_player))
});
// WP Heading
_bearing = floor ((_WPpos vectorDiff _MYpos) call CBA_fnc_vectDir);
// Output
__gridControl ctrlSetText format ["%1", _dagrGrid];
__speedControl ctrlSetText format ["%1", _bearing];
__elevationControl ctrlSetText format ["%1", _dagrGrid2];
__headingControl ctrlSetText (if (!GVAR(useDegrees)) then { format ["%1", _dagrHeading] } else { format ["%1°", _dagrHeading] });
__timeControl ctrlSetText format ["%1", _dagrDistance];
}, GVAR(updateInterval), []] call CBA_fnc_addPerFrameHandler;

View File

@ -0,0 +1,50 @@
/*
* Author: Rosuto, Ruthberg
* Toggles the DAGR overlay
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
*
* Public: No
*/
#include "script_component.hpp"
GVAR(run) = !GVAR(run);
if (GVAR(run)) then {
GVAR(hidden) = true;
[{
EXPLODE_1_PVT(_this select 0,_vehicle);
if (!GVAR(run) || (!alive ACE_player) || (vehicle ACE_player != _vehicle)) exitWith {
GVAR(run) = false;
135471 cutText ["", "PLAIN"];
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
if (cameraView == "GUNNER") then {
if (!GVAR(hidden)) then {
GVAR(hidden) = true;
135471 cutText ["", "PLAIN"];
};
} else {
if (GVAR(hidden)) then {
GVAR(hidden) = false;
switch (toUpper GVAR(displaySelection)) do {
case "WP" : {
call FUNC(outputWP);
};
case "VECTOR" : {
call FUNC(outputVector);
};
case "DATA" : {
call FUNC(outputData);
};
};
};
};
}, 0.1, [vehicle ACE_player]] call CBA_fnc_addPerFrameHandler;
};

View File

@ -0,0 +1 @@
#include "\z\ace\addons\dagr\script_component.hpp"

View File

@ -0,0 +1,30 @@
["ACE3 Equipment", QGVAR(MenuKey), "Configure DAGR",
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false};
// Statement
if (!GVAR(menuRun)) then {
[] call FUNC(menuInit);
} else {
GVAR(PWR) = true; // Simulate pressing the power button
};
true
},
{false},
[199, [false, true, false]], false] call cba_fnc_addKeybind; // (CTRL + Home)
["ACE3 Equipment", QGVAR(ToggleKey), "Toggle DAGR",
{
// Conditions: canInteract
if !([ACE_player, objNull, ["notOnMap", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
if !([_player, "ACE_DAGR"] call EFUNC(common,hasItem)) exitWith {false};
// Statement
[] call FUNC(toggleOverlay);
true
},
{false},
[199, [false, false, false]], false] call cba_fnc_addKeybind; // (Home)

View File

@ -0,0 +1,15 @@
#define COMPONENT dagr
#include "\z\ace\addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_DAGR
#define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_DAGR
#define DEBUG_SETTINGS DEBUG_SETTINGS_DAGR
#endif
#include "\z\ace\addons\main\script_macros.hpp"
#define DEG_TO_MIL(d) (d / 360 * 6400)
#define MIL_TO_DEG(d) (d / 6400 * 360)

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="DAGR">
</Package>
</Project>

View File

@ -50,4 +50,4 @@
<Russian>Нести</Russian>
</Key>
</Package>
</Project>
</Project>

View File

@ -510,35 +510,41 @@
<Polish>System ładunków wybuchowych</Polish>
<Spanish>Sistema de explosivos</Spanish>
<German>Sprengstoffsystem</German>
<Czech>Systém výbušnin</Czech>
</Key>
<Key ID="STR_ACE_Explosives_RequireSpecialist_DisplayName">
<English>Require specialists?</English>
<Polish>Wymagaj specjalistów?</Polish>
<Spanish>¿Requiere especialista?</Spanish>
<German>Benötigt Sprengstoffexperten?</German>
<Czech>Vyžadovat specialistu?</Czech>
</Key>
<Key ID="STR_ACE_Explosives_RequireSpecialist_Description">
<English>Require explosive specialists to disable explosives? Default: No</English>
<Polish>Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie</Polish>
<Spanish>Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_DisplayName">
<English>Punish non-specialists?</English>
<Polish>Karaj nie-specjalistów?</Polish>
<Spanish>¿Penalizar a los no especialistas?</Spanish>
<German>Bestrafe Nicht-Sprengstoffexperten?</German>
<Czech>Potrestat, pokud není specialista?</Czech>
</Key>
<Key ID="STR_ACE_Explosives_PunishNonSpecialists_Description">
<English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
<Polish>Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak</Polish>
<Spanish>Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Explosives_Module_Description">
<English></English>
<Polish>Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem.</Polish>
<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>
</Key>
</Package>
</Project>
</Project>

View File

@ -6,59 +6,69 @@
<Polish>Symulacja fragmentacji</Polish>
<Spanish>Simulación de fragmentación</Spanish>
<German>Splittersimulation</German>
<Czech>Simulace fragmentace</Czech>
</Key>
<Key ID="STR_ACE_Frag_EnableFrag_Desc">
<English>Enable the ACE Fragmentation Simulation</English>
<Spanish>Activa la simulación de fragmentación ACE</Spanish>
<Polish>Aktywuje symulację fragmentacji ACE</Polish>
<German>Aktiviere die ACE-Splittersimulation</German>
<Czech>Povolit ACE simulaci fragmentace</Czech>
</Key>
<Key ID="STR_ACE_Frag_EnableSpall">
<English>Spalling Simulation</English>
<Spanish>Simulación de astillamiento</Spanish>
<Polish>Symulacja odprysków</Polish>
<German>Explosionssimulation</German>
<Czech>Simulace úlomků</Czech>
</Key>
<Key ID="STR_ACE_Frag_EnableSpall_Desc">
<English>Enable the ACE Spalling Simulation</English>
<Spanish>Activa la simulación de astillamiento ACE</Spanish>
<Polish>Aktywuje symulację odprysków ACE</Polish>
<German>Aktiviere ACE-Explosionssimulation</German>
<Czech>Povolit ACE simulaci úlomků</Czech>
</Key>
<Key ID="STR_ACE_Frag_MaxTrack">
<English>Maximum Projectiles Tracked</English>
<Spanish>Máximos proyectiles rastreados</Spanish>
<Polish>Maks. liczba śledzonych pocisków</Polish>
<German>Maximalzahl der verfolgten Projektile</German>
<Czech>Maximální počet sledovaných projektilů</Czech>
</Key>
<Key ID="STR_ACE_Frag_MaxTrack_Desc">
<English>This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( &gt;200 rounds in the air at once)</English>
<Spanish>Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (&gt;200 proyectiles en el aire a la vez)</Spanish>
<Polish>To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz).</Polish>
<German>Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (&gt;200 Objekte gleichzeitig in der Luft)</German>
<Czech>Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( &gt;200 nábojů najednou ve vzduchu)</Czech>
</Key>
<Key ID="STR_ACE_Frag_MaxTrackPerFrame">
<English>Maximum Projectiles Per Frame</English>
<Spanish>Máximos proyectiles por cuadro</Spanish>
<German>Maximale Anzahl an Projektilen pro Frame</German>
<Polish>Maks. liczba pocisków na klatkę</Polish>
<Czech>Maximální počet projektilů ze jeden snímek</Czech>
</Key>
<Key ID="STR_ACE_Frag_MaxTrackPerFrame_Desc">
<English>The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.</English>
<Polish>Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej.</Polish>
<German>Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden.</German>
<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>
</Key>
<Key ID="STR_ACE_Frag_EnableDebugTrace">
<English>(SP Only) Frag/Spall Debug Tracing</English>
<Spanish>(Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento </Spanish>
<Polish>(Tylko SP) Wizualny debug odł./odpr.</Polish>
<Czech>(Pouze SP) Debug sledování Frag/Úlomků</Czech>
</Key>
<Key ID="STR_ACE_Frag_EnableDebugTrace_Desc">
<English>(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.</English>
<Spanish>(Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP.</Spanish>
<Polish>(Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player.</Polish>
<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>
</Key>
</Package>
</Project>

View File

@ -114,23 +114,27 @@
<Polish>Słuch</Polish>
<Spanish>Audición</Spanish>
<German>Gehör</German>
<Czech>Sluch</Czech>
</Key>
<Key ID="STR_ACE_Hearing_CombatDeafness_DisplayName">
<English>Enable combat deafness?</English>
<Polish>Wł. głuchotę bojową</Polish>
<Spanish>¿Habilitar sordera de combate?</Spanish>
<German>Aktiviere Taubheit im Gefecht?</German>
<Czech>Povolit ztrátu sluchu?</Czech>
</Key>
<Key ID="STR_ACE_Hearing_CombatDeafness_Description">
<English>Enable combat deafness?</English>
<Polish>Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów</Polish>
<Spanish>Habilita la sordera de combate</Spanish>
<German>Aktiviere Taubheit im Gefecht?</German>
<Czech>Povolit ztrátu sluchu?</Czech>
</Key>
<Key ID="STR_ACE_Hearing_Module_Description">
<English></English>
<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>
</Key>
</Package>
</Project>
</Project>

View File

@ -3,6 +3,7 @@
ADDON = false;
PREP(cam);
PREP(handleDamage);
PREP(handleFired);
PREP(huntir);
PREP(huntirCompass);

Binary file not shown.

View File

@ -125,7 +125,7 @@ GVAR(no_cams) sort true;
};
};
private ["_cam_coord_y", "_cam_coord_x", "_speed", "_cam_time", "_cam_pos"];
private ["_cam_coord_y", "_cam_coord_x", "_cam_time", "_cam_pos"];
GVAR(logic) setPosATL (GVAR(pos) vectorAdd [0, 0, -5]);
GVAR(logic) setDir GVAR(ROTATE);
@ -138,8 +138,7 @@ GVAR(no_cams) sort true;
ctrlSetText [1, format["%1 m", round(GVAR(pos) select 2)]];
ctrlSetText [2, format["%1", GVAR(cur_cam) + 1]];
_speed = 1 max abs((velocity GVAR(huntIR)) select 2);
_cam_time = ((GVAR(pos) select 2) - 20) / _speed;
_cam_time = ACE_time - (GVAR(huntIR) getVariable [QGVAR(startTime), ACE_time]);
ctrlSetText [3, format["%1 s", round(_cam_time)]];
_cam_pos = getPosVisual GVAR(huntIR);
_cam_pos = format ["X = %1, Y = %2", round (_cam_pos select 0), round (_cam_pos select 1)];

View File

@ -0,0 +1,25 @@
/*
* Author: Ruthberg
*
* Handles huntir damage
*
* Arguments:
* 0: huntir <OBJECT>
* 1: selectionName <STRING>
* 2: damage <NUMBER>
* 3: source <OBJECT>
* 4: projectile <STRING>
*
* Return Value:
* Nothing
*
* Return value:
* None
*/
#include "script_component.hpp"
PARAMS_5(_huntir,_selectionName,_damage,_source,_projectile);
systemChat format["Selection: %1; Damage: %2", _selectionName, _damage];
_damage

View File

@ -31,17 +31,21 @@ if (_ammo != "F_HuntIR") exitWith {};
private ["_huntir"];
_huntir = createVehicle ["ACE_HuntIR", _position, [], 0, "FLY"];
_huntir setPosATL _position;
_huntir setVariable [QGVAR(startTime), ACE_time, true];
// TODO: Edit the .p3d to allow doing the following _huntir getHit "camera"; _huntir getHit "parachute";
//_huntir addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];
[{
EXPLODE_1_PVT(_this select 0,_huntir);
private ["_deltaT"];
if (isNull _huntir) exitWith {
[_this select 1] call CBA_fnc_removePerFrameHandler;
};
if (damage _huntir > 0) then {
_deltaT = ACE_time - (_huntir getVariable [QGVAR(lastTime), ACE_time]);
_huntir setVelocity (velocity _huntir vectorAdd [0, 0, -9.8066 * (damage _huntir) * _deltaT]);
_huntir setVariable [QGVAR(lastTime), ACE_time];
private ["_velocity"];
_velocity = velocity _huntir;
_velocity set [2, -1 min -20 * sqrt(damage _huntir)];
_huntir setVelocity _velocity;
_huntir setVectorUp [0, 0, 1];
};
}, 0.1, [_huntir]] call CBA_fnc_addPerFrameHandler;
}, [getPosATL _projectile vectorAdd [0, 0, 400]], 5, 0] call EFUNC(common,waitAndExecute);
}, 0, [_huntir]] call CBA_fnc_addPerFrameHandler;
}, [getPosATL _projectile vectorAdd [0, 0, 50]], 2, 0] call EFUNC(common,waitAndExecute);
}, [_projectile], 5, 0] call EFUNC(common,waitAndExecute);

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project name="ACE">
<Package name="HuntIR">
<Key ID="STR_DN_ACE_HUNTIRBOX">
@ -170,7 +170,7 @@
<English>Esc - Exit help</English>
<German>ESC - Hilfe verlassen</German>
<Spanish>Esc - Exit help</Spanish>
<Czech>Esc - Ukončit Pomoc </Czech>
<Czech>Esc - Ukončit pomoc </Czech>
<Russian>Esc - Выйти из помощи</Russian>
<Italian>Esc - Exit help</Italian>
<Polish>Esc - wyjście z ekranu Pomocy</Polish>

View File

@ -221,21 +221,25 @@
<English>Interaction menu background</English>
<Polish>Tło menu interakcji</Polish>
<Spanish>Fondo del menú de interacción</Spanish>
<Czech>Pozadí menu interakce</Czech>
</Key>
<Key ID="STR_ACE_Interact_Menu_blurScreenDesc">
<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>
</Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlur">
<English>Blur screen</English>
<Polish>Rozmycie ekranu</Polish>
<Spanish>Pantalla de desenfoque</Spanish>
<Czech>Rozmazaný obraz</Czech>
</Key>
<Key ID="STR_ACE_Interact_Menu_backgroundBlack">
<English>Black</English>
<Polish>Przyciemnienie ekranu</Polish>
<Spanish>Negra</Spanish>
<Czech>Černý obraz</Czech>
</Key>
</Package>
</Project>

View File

@ -23,15 +23,21 @@ private ["_actions"];
_actions = [];
{
private ["_unit"];
private ["_unit", "_icon"];
_unit = _x;
if ((_unit != _player) && {(getText (configFile >> "CfgVehicles" >> (typeOf _x) >> "simulation")) != "UAVPilot"}) then {
_icon = switch _unit do {
case (driver _vehicle): { QUOTE(A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_driver_ca.paa) };
case (gunner _vehicle): { QUOTE(A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_gunner_ca.paa) };
case (commander _vehicle): { QUOTE(A3\ui_f\data\IGUI\RscIngameUI\RscUnitInfo\role_commander_ca.paa) };
default { "" };
};
_actions pushBack
[
[
str(_unit),
[_unit, true] call EFUNC(common,getName),
"",
_icon,
{},
{true},
{_this call FUNC(addPassengerActions);},

View File

@ -77,7 +77,7 @@
<English>Right Leg</English>
<German>Rechtes Bein</German>
<Spanish>Pierna derecha</Spanish>
<Czech>Pravá hona</Czech>
<Czech>Pravá noha</Czech>
<Polish>Prawa noga</Polish>
<French>Jambe droite</French>
<Russian>Правая нога</Russian>
@ -632,7 +632,7 @@
<Polish>Dołącz do zielonych</Polish>
<Portuguese>Entrar em Verde</Portuguese>
<Hungarian>Belépés a Zöldbe</Hungarian>
<Czech> Připojit k zeleným</Czech>
<Czech>Připojit k zeleným</Czech>
<Russian>Присоединиться к Зеленой группе</Russian>
<French>Rejoindre vert</French>
<Italian>Unirsi al team verde</Italian>
@ -691,7 +691,7 @@
<Spanish>Has dejado el equipo</Spanish>
<French>Tu as quitté l'équipe</French>
<Polish>Opuściłeś drużynę</Polish>
<Czech>Opustil si tým</Czech>
<Czech>Opustil jsi tým</Czech>
<Russian>Вы покинули группу</Russian>
<Portuguese>Você deixou a Equipe</Portuguese>
<Italian>Hai lasciato il team</Italian>
@ -798,23 +798,27 @@
<Polish>System interakcji</Polish>
<Spanish>Sistema de interacción</Spanish>
<German>Interaktionssystem</German>
<Czech>Systém interakce</Czech>
</Key>
<Key ID="STR_ACE_Interaction_EnableTeamManagement_DisplayName">
<English>Enable Team Management</English>
<Polish>Wł. zarządzanie drużyną</Polish>
<Spanish>Habilitar gestión de equipos</Spanish>
<German>Aktiviere Gruppenverwaltung</German>
<Czech>Povolit správu týmu</Czech>
</Key>
<Key ID="STR_ACE_Interaction_EnableTeamManagement_Description">
<English>Should players be allowed to use the Team Management Menu? Default: Yes</English>
<Polish>Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak</Polish>
<Spanish>¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si</Spanish>
<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>
</Key>
<Key ID="STR_ACE_Interaction_Module_Description">
<English></English>
<Polish>Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn.</Polish>
<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>
</Key>
</Package>
</Project>
</Project>

View File

@ -1,7 +1,7 @@
// by commy2
#include "script_component.hpp"
// fixes laser when being captured. Needed, because the selectionpsoition of the right hand is used
// fixes laser when being captured. Needed, because the selectionPosition of the right hand is used
["SetHandcuffed", {if (_this select 1) then {(_this select 0) action ["GunLightOff", _this select 0]};}] call EFUNC(common,addEventHandler);
//If user has ASDG JR without the compat patch, then ace's' laser pointers won't be compatible with anything

View File

@ -1,6 +1,8 @@
// by commy2 and esteldunedain
#include "script_component.hpp"
private ["_brightness", "_p0", "_p1", "_p0Pos", "_offV1", "_offV2", "_offV3", "_camPos", "_intermediatePos", "_iteration", "_light", "_line", "_pL", "_pL2", "_pX", "_size", "_units", "_fnc_getDistanceToTerrain", "_fnc_doesIntersectWithMan"];
// init object
/*if (isNil QGVAR(laserdot)) then {
_light = "#lightpoint" createVehicleLocal [0,0,0];
@ -47,7 +49,7 @@ _p1 = _p0 vectorAdd (_v1 vectorMultiply _range);
//Debugaaa = lineIntersectsObjs [_p0, _p1, objNull, _unit, false, 2];
_fnc_getDistanceToTerrain = {
private "_distance";
private ["_distance"];
_pX = + _p0;
_line = [_p0, _pX];
@ -55,9 +57,7 @@ _fnc_getDistanceToTerrain = {
_distance = _this;
_iteration = _distance;
while {
_iteration > 0.05 / 2
} do {
while {_iteration > 0.05 / 2} do {
_iteration = _iteration / 2;
_pX = _p0 vectorAdd (_v1 vectorMultiply _distance);

View File

@ -1,18 +1,19 @@
// by commy2
#include "script_component.hpp"
_brightness = 2 - call EFUNC(common,ambientBrightness);
_isIR = currentVisionMode ACE_player;
private ["_brightness", "_cacheName", "_isIR", "_laser", "_laserID", "_weapon"];
_isIR = currentVisionMode ACE_player;
if (_isIR == 2) exitWith {};
_isIR = _isIR == 1;
_brightness = 2 - call EFUNC(common,ambientBrightness);
{
_weapon = currentWeapon _x;
_laser = switch (_weapon) do {
case (""): {""};
case (primaryWeapon _x): {
primaryWeaponItems _x select 1;
};

View File

@ -6,94 +6,110 @@
<Polish>Mapa</Polish>
<Spanish>Mapa</Spanish>
<German>Karte</German>
<Czech>Mapa</Czech>
</Key>
<Key ID="STR_ACE_Map_MapIllumination_DisplayName">
<English>Map illumination?</English>
<Polish>Oświetlenie mapy</Polish>
<Spanish>¿Iluminación de mapa?</Spanish>
<German>Kartenausleuchtung</German>
<Czech>Osvětlení mapy</Czech>
</Key>
<Key ID="STR_ACE_Map_MapIllumination_Description">
<English>Calculate dynamic map illumination based on light conditions?</English>
<Polish>Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych</Polish>
<Spanish>Calcula la iluminación dinámica del mapa basandose en las condiciones de luz</Spanish>
<German>Berechne die Kartenauslichtung anhand des Umgebungslichts?</German>
<Czech>Vypočítat dynamické osvětlení mapy na základně světelných podmínek?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapShake_DisplayName">
<English>Map shake?</English>
<Polish>Drżenie mapy</Polish>
<Spanish>¿Temblor de mapa?</Spanish>
<German>Kamerawackeln</German>
<Czech>Třesení mapy?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapShake_Description">
<English>Make map shake when walking?</English>
<Polish>Ekran mapy drży podczas ruchu</Polish>
<Spanish>Hace que el mapa tiemble cuando caminas</Spanish>
<German>Kamerawackeln beim Gehen?</German>
<Czech>Umožnit třesení mapy za pochodu?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapLimitZoom_DisplayName">
<English>Limit map zoom?</English>
<Polish>Ograniczony zoom</Polish>
<Spanish>¿Limitar el zoom de mapa?</Spanish>
<German>Kartenzoom einschränken</German>
<Czech>Omezit přiblížení mapy?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapLimitZoom_Description">
<English>Limit the amount of zoom available for the map?</English>
<Polish>Ogranicza maksymalny stopień przybliżenia mapy</Polish>
<Spanish>Limita la cantidad de zoom disponible para el mapa</Spanish>
<German>Zoomstufe der Karte einschränken?</German>
<Czech>Omezit stupeň přiblížení pro mapu?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_DisplayName">
<English>Show cursor coordinates?</English>
<Polish>Koordynaty pod kursorem</Polish>
<Spanish>¿Mostrar coordenadas de cursor?</Spanish>
<German>Zeige Cursor-Koordinaten?</German>
<Czech>Zobrazit souřadnice u kurzoru?</Czech>
</Key>
<Key ID="STR_ACE_Map_MapShowCursorCoordinates_Description">
<English>Show the grid coordinates on the mouse pointer?</English>
<Polish>Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy</Polish>
<Spanish>Muestra las coordenadas de la cuadricula en el puntero del ratón</Spanish>
<German>Gitter-Koordinaten auf dem Mauszeiger anzeigen?</German>
<Czech>Zobrazit souřadnice u kurzoru v mapě?</Czech>
</Key>
<Key ID="STR_ACE_Map_Module_Description">
<English></English>
<Polish>Moduł ten pozwala dostosować opcje widoku ekranu mapy.</Polish>
<German>Dieses Modul erweitert die Kartenfunktionen.</German>
<Czech>Tento modul umožňuje přizpůsobit mapu s obrazem.</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_Module_DisplayName">
<English>Blue Force Tracking</English>
<Polish>Blue Force Tracking</Polish>
<Spanish>Seguimiento de fuerzas amigas</Spanish>
<German>Blue Force Tracking</German>
<Czech>Blue Force Tracking</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_Interval_DisplayName">
<English>Interval</English>
<Polish>Interwał</Polish>
<Spanish>Intervalo</Spanish>
<German>Intervall</German>
<Czech>Interval</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_Interval_Description">
<English>How often the markers should be refreshed (in seconds)</English>
<Polish>Jak często markery powinny być odświeżane (w sekundach)</Polish>
<Spanish>Frecuencia de actualización de los marcadores (en segundos)</Spanish>
<German>Wie oft sollen die Markierungen aktualisiert werden (in Sekunden)</German>
<Czech>Jak často budou značky aktualizovány (v sekundách)</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_HideAiGroups_DisplayName">
<English>Hide AI groups?</English>
<Polish>Ukryj grupy AI</Polish>
<Spanish>¿Ocultar grupos de IA?</Spanish>
<German>KI-Gruppen verstecken?</German>
<Czech>Skrýt AI skupiny?</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_HideAiGroups_Description">
<English>Hide markers for 'AI only' groups?</English>
<Polish>Ukrywa markery dla grup złożonych tylko z AI</Polish>
<Spanish>Oculta las marcas de grupos 'solo IA'</Spanish>
<German>Verstecke Marker für "nur KI"-Gruppen?</German>
<Czech>Skrýt značky pouze pro AI skupiny?</Czech>
</Key>
<Key ID="STR_ACE_Map_BFT_Module_Description">
<English></English>
<Polish>Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.</Polish>
<German>Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen.</German>
<Czech>Umožňuje sledovat přátelské jednokty na mapě v rámci BFT.</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -328,6 +328,7 @@ class ACE_Medical_Advanced {
class Large {
name = CSTRING(Wounds_Abrasion_Large);
minDamage = 0.3;
maxDamage = 0.5;
bleedingRate = 0.0002;
};
};

View File

@ -134,6 +134,12 @@ class ACE_Settings {
value = 1;
};
class GVAR(healHitPointAfterAdvBandage) {
displayName = CSTRING(healHitPointAfterAdvBandage);
typeName = "BOOL";
value = 0;
};
class GVAR(painIsOnlySuppressed) {
displayName = CSTRING(painIsOnlySuppressed);
typeName = "BOOL";
value = 1;
};

View File

@ -221,7 +221,18 @@ class CfgVehicles {
displayName = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName);
description = CSTRING(AdvancedMedicalSettings_useLocation_SurgicalKit_Description);
};
class healHitPointAfterAdvBandage {
displayName = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName);
description = CSTRING(AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description);
typeName = "BOOL";
defaultValue = 0;
};
class painIsOnlySuppressed {
displayName = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName);
description = CSTRING(AdvancedMedicalSettings_painIsOnlySuppressed_Description);
typeName = "BOOL";
defaultValue = 1;
};
};
class ModuleDescription {
description = CSTRING(AdvancedMedicalSettings_Module_Description);
@ -666,7 +677,7 @@ class CfgVehicles {
EGVAR(dragging,dragDirection) = 0;
class ACE_Actions {
class ACE_MainActions {
displayName = CSTRING(MainAction);
displayName = ECSTRING(interaction,MainAction);
distance = 5;
condition = QUOTE(true);
statement = "";

View File

@ -52,6 +52,8 @@ if (GVAR(level) < 2) then {
_damageReturn = _this call FUNC(handleDamage_basic);
};
_newDamage = _this call FUNC(handleDamage_caching);
// handleDamage_caching may have modified the projectile string
_projectile = _this select 4;
_typeOfDamage = [_projectile] call FUNC(getTypeOfDamage);
_typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage);

View File

@ -18,7 +18,7 @@
#include "script_component.hpp"
private ["_unit", "_selectionName","_damage", "_source","_projectile","_hitSelections","_hitPoints","_newDamage","_cache_hitpoints","_cache_projectiles","_cache_params","_cache_damages"];
private ["_unit", "_selectionName", "_damage", "_source", "_projectile", "_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"];
_unit = _this select 0;
_selectionName = _this select 1;
_damage = _this select 2;
@ -46,21 +46,29 @@ if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isN
};
};
// From AGM medical:
// Exclude falling damage to everything other than legs; reduce structural damage.
if (((velocity _unit) select 2 < -5) && {(vehicle _unit == _unit)}) then {
// Handle falling damage
_impactVelocity = (velocity _unit) select 2;
if (_impactVelocity < -5 && {vehicle _unit == _unit}) then {
_unit setVariable [QGVAR(isFalling), true];
_unit setVariable [QGVAR(impactVelocity), _impactVelocity];
};
if (_unit getVariable [QGVAR(isFalling), false]) then {
if !(_selectionName in ["", "leg_l", "leg_r"]) then {
if (_selectionName == "body") then {
_newDamage = _newDamage * abs(_unit getVariable [QGVAR(impactVelocity), _impactVelocity]) / 50;
} else {
_newDamage = _newDamage * 0.5;
};
} else {
if (_selectionName == "") then {
_selectionName = ["leg_l", "leg_r"] select (floor(random 2));
_this set [1, _selectionName];
};
_newDamage = _newDamage * 0.7;
};
_projectile = "falling";
_this set [4, "falling"];
};
if (_unit getVariable [QGVAR(isFalling), false] && {!(_selectionName in ["", "leg_l", "leg_r"])}) exitWith {0};
if (_unit getVariable [QGVAR(isFalling), false]) then {
if (_selectionName == "") then {
_selectionName = ["leg_l", "leg_r"] select (floor(random 2));
};
_this set [1, _selectionName];
_newDamage = _newDamage * 0.7;
};
// Finished with the current frame, reset variables
// Note: sometimes handleDamage spans over 2 or even 3 frames.
@ -95,7 +103,7 @@ if (_selectionName != "") then {
private ["_index","_otherDamage"];
_index = _cache_projectiles find _projectile;
// Check if the current projectile has already been handled once
if (_index >= 0) exitwith {
if (_index >= 0 && {_projectile != "falling"}) exitwith {
_cache_damages = _unit getVariable QGVAR(cachedDamages);
// Find the previous damage this projectile has done
_otherDamage = (_cache_damages select _index);

View File

@ -33,3 +33,5 @@ if !(_activated) exitWith {};
[_logic, QGVAR(consumeItem_SurgicalKit), "consumeItem_SurgicalKit"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(useLocation_PAK), "useLocation_PAK"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(useLocation_SurgicalKit), "useLocation_SurgicalKit"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(healHitPointAfterAdvBandage), "healHitPointAfterAdvBandage"] call EFUNC(common,readSettingFromModule);
[_logic, QGVAR(painIsOnlySuppressed), "painIsOnlySuppressed"] call EFUNC(common,readSettingFromModule);

View File

@ -72,9 +72,13 @@ if (alive _target) then {
};
if (_painReduce > 0) then {
// Reduce the pain level
// Reduce pain
_painSuppress = _target getvariable [QGVAR(painSuppress), 0];
_target setvariable [QGVAR(painSuppress), (_painSuppress + _painReduce) max 0];
if (!GVAR(painIsOnlySuppressed)) then {
_pain = _target getvariable [QGVAR(pain), 0];
_target setvariable [QGVAR(pain), (_pain - _painReduce) max 0, true];
};
};
_resistance = _target getvariable [QGVAR(peripheralResistance), 100];

View File

@ -1591,6 +1591,7 @@
<Polish>Żadna</Polish>
<Spanish>Nada</Spanish>
<German>Keine</German>
<Czech>Žádný</Czech>
</Key>
<Key ID="STR_ACE_Medical_Check_Pulse_Weak">
<English>Weak</English>
@ -2204,6 +2205,16 @@
<Czech>Pravá noha</Czech>
<Portuguese>Perna Direita</Portuguese>
</Key>
<Key ID="STR_ACE_Medical_healHitPointAfterAdvBandage">
<English>Bandaging removes bloodstains</English>
<German>Bandagieren entfernt Blutflecken</German>
<Polish>Bandażowanie usuwa ślady krwi</Polish>
</Key>
<Key ID="STR_ACE_Medical_painIsOnlySuppressed">
<English>Pain is only temporarily suppressed</English>
<German>Schmerzen werden nur vorübergehend unterdrückt</German>
<Polish>Ból jest tymczasowo zwalczany</Polish>
</Key>
<Key ID="STR_ACE_Medical_painEffectType">
<English>Pain Effect Type</English>
<German>Schmerzeffekt-Typ</German>
@ -2714,6 +2725,7 @@
<Polish>ACE Opcje medyczne</Polish>
<Spanish>Médico ACE</Spanish>
<German>ACE-Medicsystem</German>
<Czech>ACE Zdravotnické</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_Module_DisplayName">
<English>Medical Settings [ACE]</English>
@ -2721,6 +2733,7 @@
<Polish>Ustawienia medyczne [ACE]</Polish>
<Spanish>Ajustes médicos [ACE]</Spanish>
<German>Medizinische Einstellungen [ACE]</German>
<Czech>Lékařské nastavení [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_DisplayName">
<English>Medical Level</English>
@ -2728,6 +2741,7 @@
<Polish>Poziom medyczny</Polish>
<Spanish>Nivel médico</Spanish>
<German>Medizinisches Level</German>
<Czech>Úroveň medického</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_level_Description">
<English>What is the medical simulation level?</English>
@ -2735,6 +2749,7 @@
<Polish>Jaki jest poziom symulacji medycznej?</Polish>
<Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
<German>Wie hoch soll das medizinische Simulationslevel sein?</German>
<Czech>Jaká je úroveň lékařské simulace?</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_basic">
<English>Basic</English>
@ -2742,6 +2757,7 @@
<Polish>Podstawowy</Polish>
<Spanish>Básico</Spanish>
<German>Standard</German>
<Czech>Základní</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_advanced">
<English>Advanced</English>
@ -2749,6 +2765,7 @@
<Polish>Zaawansowany</Polish>
<Spanish>Avanzado</Spanish>
<German>Erweitert</German>
<Czech>Pokročilé</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_DisplayName">
<English>Medics setting</English>
@ -2756,12 +2773,14 @@
<Polish>Poziom medyków</Polish>
<Spanish>Configuración médica</Spanish>
<German>Medizinische Einstellungen</German>
<Czech>Úroveň zdravotníků</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_Description">
<English>What is the level of detail prefered for medics?</English>
<Russian>Каков уровень подробностей для медиков?</Russian>
<Polish>Jaki jest poziom detali medycznych wyświetlanych dla medyków?</Polish>
<Spanish>¿Cuál es el nivel de detalle preferido para los médicos?</Spanish>
<Czech>Jaká úroveň detailů je preferována pro zdravotníky?</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_medicSetting_disable">
<English>Disable medics</English>
@ -2769,6 +2788,7 @@
<Polish>Wyłącz medyków</Polish>
<Spanish>Desactivar médicos</Spanish>
<German>Sanitäter deaktivieren</German>
<Czech>Zakázat zdravotníky</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_DisplayName">
<English>Enable Litter</English>
@ -2776,6 +2796,7 @@
<Polish>Aktywuj odpadki</Polish>
<Spanish>Activar restos médicos</Spanish>
<German>Abfälle aktivieren</German>
<Czech>Povolit odpadky</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_allowLitterCreation_Description">
<English>Enable litter being created upon treatment</English>
@ -2783,6 +2804,7 @@
<Polish>Twórz odpadki medyczne podczas leczenia</Polish>
<Spanish>Activar los restos médicos que se crean en el tratamiento</Spanish>
<German>Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde</German>
<Czech>Vytváří odpad zdravotnického materiálu pří léčení</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_DisplayName">
<English>Life time of litter objects</English>
@ -2790,6 +2812,7 @@
<Polish>Długość życia odpadków</Polish>
<Spanish>Tiempo de vida de los restos médicos</Spanish>
<German>Dauer des angezeigten Abfalls</German>
<Czech>Životnost pro odpadky</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_litterCleanUpDelay_Description">
<English>How long should litter objects stay? In seconds. -1 is forever.</English>
@ -2797,6 +2820,7 @@
<Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
<Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
<German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
<Czech>Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy.</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_DisplayName">
<English>Enable Screams</English>
@ -2804,6 +2828,7 @@
<Polish>Aktywuj wrzaski</Polish>
<Spanish>Activar gritos</Spanish>
<German>Schreie aktivieren</German>
<Czech>Povolit křik</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableScreams_Description">
<English>Enable screaming by injuried units</English>
@ -2811,6 +2836,7 @@
<Polish>Aktywuj wrzeszczenie z bólu przez ranne jednostki</Polish>
<Spanish>Activar gritos para unidades heridas</Spanish>
<German>Aktiviere Schreie bei verletzten Einheiten</German>
<Czech>Povolit křičení zraněných jednotek</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_DisplayName">
<English>Player Damage</English>
@ -2818,6 +2844,7 @@
<Polish>Próg obrażeń graczy</Polish>
<Spanish>Daño de jugador</Spanish>
<German>Spielerschaden</German>
<Czech>Poškození hráče</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_playerDamageThreshold_Description">
<English>What is the damage a player can take before being killed?</English>
@ -2825,6 +2852,7 @@
<Polish>Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?</Polish>
<Spanish>¿Cuál es el daño que un jugador puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?</German>
<Czech>Jaké poškození může hráč dostat než bude zabit?</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_DisplayName">
<English>AI Damage</English>
@ -2832,6 +2860,7 @@
<Polish>Próg obrażeń AI</Polish>
<Spanish>Daño IA</Spanish>
<German>KI-Schaden</German>
<Czech>Poškození AI</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_AIDamageThreshold_Description">
<English>What is the damage an AI can take before being killed?</English>
@ -2839,6 +2868,7 @@
<Polish>Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?</Polish>
<Spanish>¿Cuál es el daño que la IA puede sufrir antes de morir?</Spanish>
<German>Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?</German>
<Czech>Jaké poškození může AI dostat než bude zabito?</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_DisplayName">
<English>AI Unconsciousness</English>
@ -2846,6 +2876,7 @@
<Polish>Nieprzytomność AI</Polish>
<Spanish>Inconsciencia IA</Spanish>
<German>KI-Bewusstlosigkeit</German>
<Czech>Bezvědomí AI</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_enableUnconsciousnessAI_Description">
<English>Allow AI to go unconscious</English>
@ -2853,6 +2884,7 @@
<Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
<Spanish>Permita a la IA caer inconsciente</Spanish>
<German>KI kann bewusstlos werden</German>
<Czech>Umožňuje AI upadnout do bezvědomí</Czech>
</Key>
<Key ID="STR_ACE_Medical_disabled">
<English>Disabled</English>
@ -2860,6 +2892,7 @@
<Polish>Wyłączone</Polish>
<Spanish>Activado</Spanish>
<German>Deaktiviert</German>
<Czech>Zakázáno</Czech>
</Key>
<Key ID="STR_ACE_Medical_enabled">
<English>Enabled</English>
@ -2867,6 +2900,7 @@
<Polish>Włączone</Polish>
<Spanish>Desactivado</Spanish>
<German>Aktiviert</German>
<Czech>Povoleno</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_DisplayName">
<English>Prevent instant death</English>
@ -2874,6 +2908,7 @@
<Polish>Wył. natychmiast. śmierć</Polish>
<Spanish>Prevenir muerte instantánea</Spanish>
<German>Verhindere direkten Tod</German>
<Czech>Zabránit okamžité smrti</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_preventInstaDeath_Description">
<English>Have a unit move to unconscious instead of death</English>
@ -2881,6 +2916,7 @@
<Polish>Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń</Polish>
<Spanish>Mover una unidad a inconsciente en vez de a muerta</Spanish>
<German>Lässt eine Einheit bewusstlos werden anstatt zu sterben</German>
<Czech>Jednotka upadne do bezvědomí namísto smrti</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_DisplayName">
<English>Bleeding coefficient</English>
@ -2888,6 +2924,7 @@
<Polish>Mnożnik krwawienia</Polish>
<Spanish>Coeficiente de sangrado</Spanish>
<German>Verblutungsmultiplikator</German>
<Czech>Koeficient krvácení</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_bleedingCoefficient_Description">
<English>Coefficient to modify the bleeding speed</English>
@ -2895,6 +2932,7 @@
<Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
<Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
<German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
<Czech>Koeficient rychlosti krvácení</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_DisplayName">
<English>Pain coefficient</English>
@ -2902,6 +2940,7 @@
<Polish>Mnożnik bólu</Polish>
<Spanish>Coeficiente de dolor</Spanish>
<German>Schmerzmultiplikator</German>
<Czech>Koeficient bolesti</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_painCoefficient_Description">
<English>Coefficient to modify the pain intensity</English>
@ -2909,6 +2948,7 @@
<Polish>Mnożnik modyfikujący intensywność bólu</Polish>
<Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
<German>Multiplikator um den Schmerzintensität zu verändern</German>
<Czech>Koeficient intenzity bolesti</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_DisplayName">
<English>Sync status</English>
@ -2916,6 +2956,7 @@
<Polish>Synchronizuj status</Polish>
<Spanish>Sincronizador estado</Spanish>
<German>Status synchronisieren</German>
<Czech>Synchronizovat status</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_keepLocalSettingsSynced_Description">
<English>Keep unit status synced. Recommended on.</English>
@ -2923,6 +2964,7 @@
<Polish>Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej.</Polish>
<Spanish>Mantener el estado de la unidad sincronizado. Recomendado activado</Spanish>
<German>Status der Einheit synchron halten. Sollte aktiviert bleiben.</German>
<Czech>Udržuje status jednotky synchronizovaný. Doporučeno zapnout.</Czech>
</Key>
<Key ID="STR_ACE_Medical_MedicalSettings_Module_Description">
<English>Provides a medical system for both players and AI.</English>
@ -2930,6 +2972,7 @@
<Polish>Moduł ten dostarcza system medyczny dla graczy oraz AI.</Polish>
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
<German>Aktiviert ein medizinisches System für Spieler und KI.</German>
<Czech>Poskytuje zdravotní systém pro hráče a AI.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_DisplayName">
<English>Advanced Medical Settings [ACE]</English>
@ -2937,6 +2980,7 @@
<Polish>Zaawansowane ustawienia medyczne [ACE]</Polish>
<Spanish>Ajustes médicos avanzados [ACE]</Spanish>
<German>Erweiterte medizinische Einstellungen [ACE]</German>
<Czech>Pokročilé zdravotnické nastavení [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_DisplayName">
<English>Enabled for</English>
@ -2944,6 +2988,7 @@
<Polish>Aktywne dla</Polish>
<Spanish>Hablitado para</Spanish>
<German>Aktiviert für</German>
<Czech>Povoleno pro</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableFor_Description">
<English>Select what units the advanced medical system will be enabled for</English>
@ -2951,6 +2996,7 @@
<Polish>Wybierz dla kogo zaawansowany system medyczny będzie aktywny</Polish>
<Spanish>Seleccione para qué unidades será habilitado el sistema médico avanzado</Spanish>
<German>Wähle aus welche Einheiten das erweiterte medizinische System haben</German>
<Czech>Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen</Czech>
</Key>
<Key ID="STR_ACE_Medical_playeronly">
<English>Players only</English>
@ -2958,6 +3004,7 @@
<Polish>Tylko dla graczy</Polish>
<Spanish>Solo jugadores</Spanish>
<German>Nur Spieler</German>
<Czech>Pouze hráči</Czech>
</Key>
<Key ID="STR_ACE_Medical_playersandai">
<English>Players and AI</English>
@ -2965,6 +3012,7 @@
<Polish>Gracze oraz AI</Polish>
<Spanish>Jugadors e IA</Spanish>
<German>Spieler und KI</German>
<Czech>Hráči a AI</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName">
<English>Enable Advanced wounds</English>
@ -2972,6 +3020,7 @@
<Polish>Akt. zaawansowane rany</Polish>
<Spanish>Activa heridas avanzadas</Spanish>
<German>Aktiviere erweiterte Wunden</German>
<Czech>Povolit pokročilé zranění</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableAdvancedWounds_Description">
<English>Allow reopening of bandaged wounds?</English>
@ -2979,6 +3028,7 @@
<Polish>Pozwól na otwieranie się zabandażowanych ran?</Polish>
<Spanish>Permitir la reapertura de las heridas vendadas?</Spanish>
<German>Erlaube das Öffnen von bandagierten Wunden?</German>
<Czech>Umožnit znovuotevření zavázané rány?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName">
<English>Vehicle Crashes</English>
@ -2986,6 +3036,7 @@
<Polish>Obrażenia od kolizji</Polish>
<Spanish>Accidentes de vehículos</Spanish>
<German>Fahrzeugunfälle</German>
<Czech>Poškození z kolize</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_enableVehicleCrashes_Description">
<English>Do units take damage from a vehicle crash?</English>
@ -2993,6 +3044,7 @@
<Polish>Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów?</Polish>
<Spanish>¿Las unidades reciben daño de un accidente de tráfico?</Spanish>
<German>Bekommen Einheiten von Fahrzeugunfällen Schaden?</German>
<Czech>Dostane jednotka poškození při autonehodě?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_DisplayName">
<English>Allow PAK</English>
@ -3000,6 +3052,7 @@
<Polish>Ust. apteczek osobistych</Polish>
<Spanish>Permitir EPA</Spanish>
<German>Erlaube Erstehilfekasten</German>
<Czech>Povolit osobní lékárničky</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_PAK_Description">
<English>Who can use the PAK for full heal?</English>
@ -3007,6 +3060,7 @@
<Polish>Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia?</Polish>
<Spanish>¿Quién puede utilizar el EPA para una cura completa?</Spanish>
<German>Wer kann den Erstehilfekasten für eine Endheilung verwenden?</German>
<Czech>Kdo může použít osobní lékárničku pro plné vyléčení?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anyone">
<English>Anyone</English>
@ -3014,6 +3068,7 @@
<Polish>Wszyscy</Polish>
<Spanish>Nadie</Spanish>
<German>Jeder</German>
<Czech>Kdokoliv</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Medic">
<English>Medics only</English>
@ -3021,6 +3076,7 @@
<Polish>Tylko medycy</Polish>
<Spanish>Solo médicos</Spanish>
<German>Nur Sanitäter</German>
<Czech>Pouze zdravotník</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Special">
<English>Doctors only</English>
@ -3028,6 +3084,7 @@
<Polish>Tylko doktorzy</Polish>
<Spanish>Solo doctores</Spanish>
<German>Nur Ärzte</German>
<Czech>Pouze doktor</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_DisplayName">
<English>Remove PAK on use</English>
@ -3035,6 +3092,7 @@
<Polish>Usuń apteczkę po użyciu</Polish>
<Spanish>Eliminar EPA después del uso</Spanish>
<German>Entferne Erstehilfekasten bei Verwendung</German>
<Czech>Odebrat osobní lékárničku po použití</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_PAK_Description">
<English>Should PAK be removed on usage?</English>
@ -3042,6 +3100,7 @@
<Polish>Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu?</Polish>
<Spanish>El EPA será eliminado después de usarlo</Spanish>
<German>Sollen Erstehilfekästen bei Verwendung entfernt werden?</German>
<Czech>Má se osobní lékárnička odstranit po použití?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_DisplayName">
<English>Locations PAK</English>
@ -3049,6 +3108,7 @@
<Polish>Ogr. apteczek osobistych</Polish>
<Spanish>Ubicacions del EPA</Spanish>
<German>Orte für Erstehilfekasten</German>
<Czech>Lokace osobní lékárničky</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_PAK_Description">
<English>Where can the personal aid kit be used?</English>
@ -3056,6 +3116,7 @@
<Polish>Gdzie można korzystać z apteczek osobistych?</Polish>
<Spanish>¿Dónde se puede utilizar el equipo de primeros auxilios?</Spanish>
<German>Wo kann der Erstehilfekasten verwendet werden?</German>
<Czech>Kde může být osobní lékárnička použita?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_anywhere">
<English>Anywhere</English>
@ -3063,6 +3124,7 @@
<Polish>Wszędzie</Polish>
<Spanish>Donde sea</Spanish>
<German>Überall</German>
<Czech>Kdekoliv</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicle">
<English>Medical vehicles</English>
@ -3070,6 +3132,7 @@
<Polish>Pojazdy medyczne</Polish>
<Spanish>Vehiculos médicos</Spanish>
<German>Medizinische Fahrzeuge</German>
<Czech>Zdravotnická vozidla</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_facility">
<English>Medical facility</English>
@ -3077,6 +3140,7 @@
<Polish>Budynki medyczne</Polish>
<Spanish>Centro médico</Spanish>
<German>Medizinische Einrichtungen</German>
<Czech>Zdravotnické zařízení</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_vehicleAndFacility">
<English>Vehicles &amp; facility</English>
@ -3084,6 +3148,7 @@
<Polish>Pojazdy i budynki medyczne</Polish>
<Spanish>Vehículos y centros</Spanish>
<German>Fahrzeuge &amp; Einrichtungen</German>
<Czech>Vozidla a zařízení</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_disabled">
<English>Disabled</English>
@ -3091,6 +3156,7 @@
<Polish>Wyłączone</Polish>
<Spanish>Desactivado</Spanish>
<German>Deaktiviert</German>
<Czech>Zakázáno</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
<English>Allow Surgical kit (Adv)</English>
@ -3098,6 +3164,7 @@
<Polish>Ust. zestawu chirurg.</Polish>
<Spanish>Permitir equipo quirúrgico (Avanzado)</Spanish>
<German>Erlaube Operationskasten</German>
<Czech>Povolit chirurgickou soupravu (Pokr.)</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description">
<English>Who can use the surgical kit?</English>
@ -3105,6 +3172,7 @@
<Polish>Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran?</Polish>
<Spanish>¿Quién puede utilizar el equipo quirúrgico?</Spanish>
<German>Wer kann den Operationskasten verwenden?</German>
<Czech>Kdo může použít chirurgickou soupravu?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName">
<English>Remove Surgical kit (Adv)</English>
@ -3112,6 +3180,7 @@
<Polish>Usuń zest. chir. po użyciu</Polish>
<Spanish>Eliminar equipo quirúrgico (Avanzado)</Spanish>
<German>Enrtferne Operationskasten (erweitert)</German>
<Czech>Odebrat chirurgickou soupravu (Pokr.)</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description">
<English>Should Surgical kit be removed on usage?</English>
@ -3119,6 +3188,7 @@
<Polish>Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu?</Polish>
<Spanish>Eliminar el equipo quirúrgico después del uso</Spanish>
<German>Entferne Operationskästen bei Verwendung?</German>
<Czech>Odebrat chirurgickou soupravu po použití?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName">
<English>Locations Surgical kit (Adv)</English>
@ -3126,6 +3196,7 @@
<Polish>Ogr. zestawu chirurg.</Polish>
<Spanish>Ubicaciones del equipo quirúrgico (Avanzado)</Spanish>
<German>Orte für Operationskästen (erweitert)</German>
<Czech>Lokace chirurgické soupravy (Pokr.)</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_useLocation_SurgicalKit_Description">
<English>Where can the Surgical kit be used?</English>
@ -3133,6 +3204,27 @@
<Polish>Gdzie można korzystać z zestawu chirurgicznego?</Polish>
<Spanish>Dónde se puede utilizar el equipo quirúrgico</Spanish>
<German>Wo kann der Operationskasten verwendet werden?</German>
<Czech>Kde může být použita chirurgická souprava?</Czech>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_DisplayName">
<English>Bloodstains</English>
<German>Blutflecken</German>
<Polish>Plamy krwi</Polish>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_healHitPointAfterAdvBandage_Description">
<English>Bandaging removes bloodstains</English>
<German>Bandagieren entfernt Blutflecken</German>
<Polish>Bandażowanie usuwa ślady krwi</Polish>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_DisplayName">
<English>Pain suppression</English>
<German>Schmerzunterdrückung</German>
<Polish>Zwalczanie bólu</Polish>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_painIsOnlySuppressed_Description">
<English>Pain is only temporarily suppressed, not removed</English>
<German>Bandagieren entfernt Blutflecken</German>
<Polish>Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale</Polish>
</Key>
<Key ID="STR_ACE_Medical_AdvancedMedicalSettings_Module_Description">
<English>Configure the treatment settings from ACE Medical</English>
@ -3140,6 +3232,7 @@
<Polish>Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE</Polish>
<Spanish>Configure las opciones de tratamiento del ACE Médico</Spanish>
<German>Behandlungseinstellungen vom ACE-Medical konfigurieren</German>
<Czech>Konfigurace nastavení léčby ze zdravotnické systému ACE</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_Module_DisplayName">
<English>Revive Settings [ACE]</English>
@ -3147,6 +3240,7 @@
<Polish>Ustawienia wskrzeszania [ACE]</Polish>
<Spanish>Sistema de resucitado [ACE]</Spanish>
<German>Wiederbelebungseinstellungen [ACE]</German>
<Czech>Nastavení oživení [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_DisplayName">
<English>Enable Revive</English>
@ -3154,6 +3248,7 @@
<Polish>Aktywuj wskrzeszanie</Polish>
<Spanish>Habilitar resucitado</Spanish>
<German>Erlaube Wiederbelebung</German>
<Czech>Povolit oživení</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_enableRevive_Description">
<English>Enable a basic revive system</English>
@ -3161,6 +3256,7 @@
<Polish>Aktywuj podstawowy system wskrzeszania</Polish>
<Spanish>Habilitar un sistema básico de resucitado</Spanish>
<German>Aktiviere Standard-Wiederbelebungssystem</German>
<Czech>Povolit základní systém oživení</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_DisplayName">
<English>Max Revive time</English>
@ -3168,6 +3264,7 @@
<Polish>Maks. czas agonii</Polish>
<Spanish>Tiempo máximo de resucitado</Spanish>
<German>Maximale Wiederbelebungszeit</German>
<Czech>Maximální čas pro oživení</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_maxReviveTime_Description">
<English>Max amount of seconds a unit can spend in revive state</English>
@ -3175,6 +3272,7 @@
<Polish>Maksymalna długość agonii w sekundach (czas na wskrzeszenie)</Polish>
<Spanish>Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación</Spanish>
<German>Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann</German>
<Czech>Maximální doba v agónii v sekundách</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_DisplayName">
<English>Max Revive lives</English>
@ -3182,6 +3280,7 @@
<Polish>Maks. ilość wskrzeszeń</Polish>
<Spanish>Vidas máximas de resucitado</Spanish>
<German>Maximale Leben bei Wiederbelebung</German>
<Czech>Maximální počet oživení</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_amountOfReviveLives_Description">
<English>Max amount of lives a unit. 0 or -1 is disabled.</English>
@ -3189,6 +3288,7 @@
<Polish>Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć.</Polish>
<Spanish>Cantidad máxima de vidas por unidad. 0 o -1 es desactivado.</Spanish>
<German>Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert.</German>
<Czech>Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno.</Czech>
</Key>
<Key ID="STR_ACE_Medical_ReviveSettings_Module_Description">
<English>Provides a medical system for both players and AI.</English>
@ -3196,6 +3296,7 @@
<Polish>Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO.</Polish>
<Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
<German>Aktiviert das Medicsystem für Spieler und KI.</German>
<Czech>Poskytuje zdravotní systém pro hráče a AI.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_DisplayName">
<English>Set Medic Class [ACE]</English>
@ -3203,6 +3304,7 @@
<Polish>Ustaw klasę medyka [ACE]</Polish>
<Spanish>Establecer case médica [ACE]</Spanish>
<German>Setze Sanitäterklassen [ACE]</German>
<Czech>Určit třídu medika [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_DisplayName">
<English>List</English>
@ -3210,6 +3312,7 @@
<Polish>Lista</Polish>
<Spanish>Lista</Spanish>
<German>Liste</German>
<Czech>Seznam</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_EnableList_Description">
<English>List of unit names that will be classified as medic, separated by commas.</English>
@ -3217,6 +3320,7 @@
<Polish>Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami.</Polish>
<Spanish>Lista de los nombres de las unidades que se clasifican como médico, separados por comas.</Spanish>
<German>Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt.</German>
<Czech>Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_DisplayName">
<English>Is Medic</English>
@ -3224,12 +3328,14 @@
<Polish>Klasa medyczna</Polish>
<Spanish>Es médico</Spanish>
<German>Ist Sanitäter</German>
<Czech>Je zdravotník</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_Description">
<English></English>
<Russian></Russian>
<Polish></Polish>
<German>Dieses Modul legt fest welche Einheit ein Sanitäter ist.</German>
<Czech>Tento modul určuje, která jednotka je zdravotník.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_none">
<English>None</English>
@ -3237,6 +3343,7 @@
<Polish>Żadna</Polish>
<Spanish>Nada</Spanish>
<German>Keine</German>
<Czech>Žádný</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_medic">
<English>Regular medic</English>
@ -3244,6 +3351,7 @@
<Polish>Zwykły medyk</Polish>
<Spanish>Médico regular</Spanish>
<German>Normaler Sanitäter</German>
<Czech>Řadový zdravotník</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_role_doctor">
<English>Doctor (Only Advanced Medics)</English>
@ -3251,6 +3359,7 @@
<Polish>Doktor (tylko zaawansowani medycy)</Polish>
<Spanish>Doctor (Solo medicina avanzada)</Spanish>
<German>Arzt (nur erweiterte Sanitäter)</German>
<Czech>Doktor (Pouze pokročilý zdravotníci)</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicRoles_Module_Description">
<English>Assigns the ACE medic class to a unit</English>
@ -3258,6 +3367,7 @@
<Polish>Moduł ten przypisuje klasę medyka ACE do jednostek.</Polish>
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
<German>Weise die ACE-Sanitäterklasse einer Einheit zu</German>
<Czech>Přiřadí ACE třídu zdravotníka do jednotky</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_DisplayName">
<English>Set Medical Vehicle [ACE]</English>
@ -3265,6 +3375,7 @@
<Polish>Ustaw pojazd medyczny [ACE]</Polish>
<Spanish>Establecer vehículos médicos [ACE]</Spanish>
<German>Setze medizinisches Fahrzeug [ACE]</German>
<Czech>Určit zdravotnické vozidlo [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_DisplayName">
<English>List</English>
@ -3272,6 +3383,7 @@
<Polish>Lista</Polish>
<Spanish>Lista</Spanish>
<German>Liste</German>
<Czech>Seznam</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_EnableList_Description">
<English>List of vehicles that will be classified as medical vehicle, separated by commas.</English>
@ -3279,6 +3391,7 @@
<Polish>Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami.</Polish>
<Spanish>Lista de los vehículos que se clasifican como vehículo médicos, separados por comas.</Spanish>
<German>Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt.</German>
<Czech>Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_DisplayName">
<English>Is Medical Vehicle</English>
@ -3286,6 +3399,7 @@
<Polish>Jest pojazdem med.</Polish>
<Spanish>Es vehículo médico</Spanish>
<German>Ist medizinisches Fahrzeug</German>
<Czech>Je zdravotnické vozidlo</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_enabled_Description">
<English>Whatever or not the objects in the list will be a medical vehicle.</English>
@ -3293,6 +3407,7 @@
<Polish>Czy pojazdy z tej listy są pojazdami medycznymi.</Polish>
<Spanish>Cualquiera de la lista o fuera de ella será un vehículo médico.</Spanish>
<German>Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist.</German>
<Czech>Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla.</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicVehicle_Module_Description">
<English>Assigns the ACE medic class to a unit</English>
@ -3300,6 +3415,7 @@
<Polish>Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne.</Polish>
<Spanish>Asigna la clase médico ACE a una unidad</Spanish>
<German>Weist die ACE-Sanitäterklasse einer Einheit zu</German>
<Czech>Přiřadí ACE třídu zdravotníka do jednotky</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_DisplayName">
<English>Set Medical Facility [ACE]</English>
@ -3307,6 +3423,7 @@
<Polish>Ustaw budynek medyczny [ACE]</Polish>
<Spanish>Establece el centro médico [ACE]</Spanish>
<German>Setze medizinische Einrichtung [ACE]</German>
<Czech>Určit zdravotnické zařízení [ACE]</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_DisplayName">
<English>Is Medical Facility</English>
@ -3314,6 +3431,7 @@
<Polish>Jest budynkiem med.</Polish>
<Spanish>Es centro médico</Spanish>
<German>Ist eine medizinische Einrichtung</German>
<Czech>Je zdravotnické zařízení</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_enabled_Description">
<English>Registers an object as a medical facility</English>
@ -3321,6 +3439,7 @@
<Polish>Przypisuje danemu obiektowi status budynku medycznego</Polish>
<Spanish>Registra un objeto como un centro médico</Spanish>
<German>Definiert ein Objekt als medizinische Einrichtung</German>
<Czech>Registruje objekt jako zdravotnické zařízení</Czech>
</Key>
<Key ID="STR_ACE_Medical_AssignMedicalFacility_Module_Description">
<English>Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles.</English>
@ -3328,6 +3447,7 @@
<Polish>Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach.</Polish>
<Spanish>Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos.</Spanish>
<German>Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden.</German>
<Czech>Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla.</Czech>
</Key>
<Key ID="STR_ACE_Medical_medicalSupplyCrate">
<English>[ACE] Medical Supply Crate (Basic)</English>
@ -3335,6 +3455,7 @@
<Polish>[ACE] Skrzynka z zapasami medycznymi (podstawowa)</Polish>
<Spanish>[ACE] Caja de suministros médicos (Básica)</Spanish>
<German>[ACE] Medizinische Kiste (standard)</German>
<Czech>[ACE] Zdravotnické zásoby (Základ)</Czech>
</Key>
<Key ID="STR_ACE_Medical_medicalSupplyCrate_advanced">
<English>[ACE] Medical Supply Crate (Advanced)</English>
@ -3342,6 +3463,7 @@
<Polish>[ACE] Skrzynka z zapasami medycznymi (zaawansowana)</Polish>
<Spanish>[ACE] Caja de suministros médicos (Avanzada)</Spanish>
<German>[ACE] Medizinische Kiste (erweitert)</German>
<Czech>[ACE] Zdravotnické zásoby (Pokročilé)</Czech>
</Key>
<Key ID="STR_ACE_Medical_Yes">
<English>Yes</English>
@ -3368,4 +3490,4 @@
<Italian>No</Italian>
</Key>
</Package>
</Project>
</Project>

View File

@ -270,7 +270,7 @@
<German>Zeige MicroDAGR</German>
<Spanish>Mostrar MicroDAGR</Spanish>
<Russian>Показать MicroDAGR</Russian>
<Czech>Ukázat MicroDAGR GPS</Czech>
<Czech>Ukázat MicroDAGR</Czech>
<Polish>Pokaż MicroDAGR</Polish>
<French>Afficher MicroDAGR</French>
<Hungarian>MicroDAGR mutatása</Hungarian>
@ -282,7 +282,7 @@
<German>Konfiguriere MicroDAGR</German>
<Spanish>Configurar MicroDAGR</Spanish>
<Russian>Настроить MicroDAGR</Russian>
<Czech>Konfigurovat MicroDAGR GPS</Czech>
<Czech>Konfigurovat MicroDAGR</Czech>
<Polish>Konfiguruj MicroDAGR</Polish>
<French>Configurer MicroDAGR</French>
<Hungarian>MicroDAGR konfigurálása</Hungarian>
@ -294,7 +294,7 @@
<German>Schließe MicroDAGR</German>
<Spanish>Cerrar MicroDAGR</Spanish>
<Russian>Закрыть MicroDAGR</Russian>
<Czech>Zavřít MicroDAGR GPS</Czech>
<Czech>Zavřít MicroDAGR</Czech>
<Polish>Zamknij MicroDAGR</Polish>
<French>Fermer MicroDAGR</French>
<Hungarian>MicroDAGR elrejtése</Hungarian>
@ -305,41 +305,48 @@
<English>MicroDAGR Map Fill</English>
<Polish>Wypełnienie mapy MicroDAGR</Polish>
<Spanish>Relleno del mapa MicroDAGR</Spanish>
<Czech>MicroDAGR - Vyplnění mapy</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_MapDataAvailable_DisplayName">
<English>MicroDAGR Map Fill</English>
<Polish>Wypełnienie mapy MicroDAGR</Polish>
<Spanish>Relleno del mapa MicroDAGR</Spanish>
<Czech>MicroDAGR - Vyplnění mapy</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_MapDataAvailable_Description">
<English>How much map data is filled on MicroDAGR's</English>
<Polish>Jak duża część informacji mapy jest załadowana do MicroDAGR?</Polish>
<Spanish>Cuanta información está disponible en el mapa del MicroDAG</Spanish>
<German>Wie viel Daten auf einem MicroDAGR zu sehen sind</German>
<Czech>Kolik informací je načteno do MicroDAGR?</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_None">
<English>Full Satellite + Buildings</English>
<Polish>Pełna satelitarna + budynki</Polish>
<Spanish>Satelite completo + Edificios</Spanish>
<German>Satellitenbild + Gebäude</German>
<Czech>Satelit + Budovy</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_Side">
<English>Topographical + Roads</English>
<Polish>Topograficzna + drogi</Polish>
<Spanish>Topografico + Carreteras</Spanish>
<German>Topografisch + Straßen</German>
<Czech>Topografické + Cesty</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_Unique">
<English>None (Cannot use map view)</English>
<Polish>Żadna (wyłącza ekran mapy)</Polish>
<Spanish>Nada (No se puede el mapa)</Spanish>
<German>Keine (kann keine Kartenansicht verwenden)</German>
<Czech>Žádný (Nelze použít zobrazení mapy)</Czech>
</Key>
<Key ID="STR_ACE_MicroDAGR_Module_Description">
<English>Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.&lt;br /&gt;Source: microDAGR.pbo</English>
<Polish>Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.&lt;br /&gt;Źródło: microDAGR.pbo</Polish>
<Spanish>Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.&lt;br /&gt;Fuente: microDAGR.pbo</Spanish>
<German>Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.&lt;br /&gt;Quelle: microDAGR.pbo</German>
<Czech>Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.&lt;br /&gt;Zdroj: microDAGR.pbo</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -102,18 +102,21 @@
<Polish>Wyłącz</Polish>
<Spanish>Desactivado</Spanish>
<German>Aus</German>
<Czech>Vypnout</Czech>
</Key>
<Key ID="STR_ACE_MissileGuidance_PlayerOnly">
<English>Player Only</English>
<Polish>Tylko gracz</Polish>
<Spanish>Solo jugador</Spanish>
<German>Nur Spieler</German>
<Czech>Pouze hráči</Czech>
</Key>
<Key ID="STR_ACE_MissileGuidance_PlayerAndAi">
<English>Player and AI</English>
<Polish>Gracz oraz AI</Polish>
<Spanish>Jugador e IA</Spanish>
<German>Spieler und KI</German>
<Czech>Hráči a AI</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -6,102 +6,119 @@
<Polish>ACE Moduły misji</Polish>
<Spanish>Módulo de misiones ACE</Spanish>
<German>ACE-Missionsmodule</German>
<Czech>ACE Moduly mise</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_DisplayName">
<English>Ambiance Sounds [ACE]</English>
<Polish>Dźwięki [ACE]</Polish>
<Spanish>[ACE] Sonidos ambiente</Spanish>
<German>Umgebungsgeräusche [ACE]</German>
<Czech>Zvuky prostředí [ACE]</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName">
<English>Sounds</English>
<Polish>Dźwięki</Polish>
<Spanish>Sonidos</Spanish>
<German>Sounds</German>
<Czech>Zvuky</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description">
<English>Class names of the ambiance sounds to be played. Seperated by ','</English>
<Polish>Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ','</Polish>
<Spanish>Class names de los sonidos ambiente que se reproducirán. Separados por ','</Spanish>
<German>Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch ","</German>
<Czech>Class names zvuků prostředí, které budou přehrány. Oddělené ',' </Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName">
<English>Minimal Distance</English>
<Polish>Minimalny dystans</Polish>
<Spanish>Distancia mínima</Spanish>
<German>Mindestabstand</German>
<Czech>Minimální vzdálenost</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description">
<English>Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)</English>
<Polish>Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi</Polish>
<Spanish>Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
<German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
<Czech>Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem.</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName">
<English>Maximum Distance</English>
<Polish>Maksymalny dystans</Polish>
<Spanish>Distancia máxima</Spanish>
<German>Maximalabstand</German>
<Czech>Maximální vzdálenost</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description">
<English>Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)</English>
<Polish>Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi</Polish>
<Spanish>Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
<German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
<Czech>Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem.</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName">
<English>Minimal Delay</English>
<Polish>Minimalne opóźnienie</Polish>
<Spanish>Retraso mínimo</Spanish>
<German>Minimale Verzögerung</German>
<Czech>Minimální prodleva</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description">
<English>Minimal delay between sounds played</English>
<Polish>Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami</Polish>
<Spanish>Retraso mínimo entre los sonidos reproducidos</Spanish>
<German>Minimale Verzögerung zwischen abzuspielenden Sounds</German>
<Czech>Minimální prodleva mezi přehrávanými zvuky</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName">
<English>Maximum Delay</English>
<Polish>Maksymalne opóźnienie</Polish>
<Spanish>Retraso máximo</Spanish>
<German>Maximale Verzögerung</German>
<Czech>Maximální prodleva</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description">
<English>Maximum delay between sounds played</English>
<Polish>Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami</Polish>
<Spanish>Retraso máximo entre los sonidos reproducidos</Spanish>
<German>Maximale Verzögerung zwischen abzuspielenden Sounds</German>
<Czech>Maximální prodleva mezi přehrávanými zvuky</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName">
<English>Follow Players</English>
<Polish>Podążaj za graczami</Polish>
<Spanish>Seguir jugadores</Spanish>
<German>Spielern folgen</German>
<Czech>Následovat hráče</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description">
<English>Follow players. If set to false, loop will play sounds only nearby logic position.</English>
<Polish>Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki.</Polish>
<Spanish>Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica.</Spanish>
<German>Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt.</German>
<Czech>Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki.</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName">
<English>Volume</English>
<Polish>Głośność</Polish>
<Spanish>Volumen</Spanish>
<German>Lautstärke</German>
<Czech>Hlasitost</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description">
<English>The volume of the sounds played</English>
<Polish>Głośność odtwarzanych dźwięków</Polish>
<Spanish>Volumen de los sonidos reproducidos</Spanish>
<German>Lautstärke der abzuspielenden Sounds</German>
<Czech>Hlasitost přehrávaného zvuku</Czech>
</Key>
<Key ID="STR_ACE_MissionModules_AmbianceSounds_Description">
<English>Ambiance sounds loop (synced across MP)</English>
<Polish>Pętla odtwarzania dzwięków (synchronizowana na MP)</Polish>
<Spanish>Bucle de sonidos ambiente (sincronizados en MP)</Spanish>
<German>Umgebungsgeräusch-Schleife (im MP synchronisiert)</German>
<Czech>Smyčka okkolního zvuku (synchronizováno v MP)</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -54,47 +54,55 @@
<Polish>Moździerz MK6 - Ustawienia</Polish>
<Spanish>Ajustes MK6</Spanish>
<German>MK6-Einstellungen</German>
<Czech>MK6 - Nastavení</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_airResistanceEnabled_DisplayName">
<English>Air Resistance</English>
<Polish>Opór powietrza</Polish>
<Spanish>Resistencia al aire</Spanish>
<German>Luftwiderstand</German>
<Czech>Odpor vzduchu</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_airResistanceEnabled_Description">
<English>For Player Shots, Model Air Resistance and Wind Effects</English>
<Polish>Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy</Polish>
<Spanish>Para disparos del jugador, modelo de resistencia al aire y efectos de viento</Spanish>
<German>Für Spielerschüsse, Luftwiderstand und Windeffekte</German>
<Czech>Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_allowComputerRangefinder_DisplayName">
<English>Allow MK6 Computer</English>
<Polish>Komputer MK6</Polish>
<Spanish>Habilitar ordenador del MK6</Spanish>
<German>Erlaube MK6-Computer</German>
<Czech>MK6 - Povolit počítač</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_allowComputerRangefinder_Description">
<English>Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance)</English>
<Polish>Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza)</Polish>
<Spanish>Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire)</Spanish>
<German>Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist)</German>
<Czech>Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu)</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_allowCompass_DisplayName">
<English>Allow MK6 Compass</English>
<Polish>Kompas MK6</Polish>
<Spanish>Habilitar brujula del MK6</Spanish>
<German>Erlaube MK6-Kompass</German>
<Czech>MK6 - Povolit kompas</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_allowCompass_Description">
<English>Show the MK6 Digital Compass</English>
<Polish>Pokaż kompas MK6</Polish>
<Spanish>Muestra la brujula digital en el MK6</Spanish>
<German>Zeige MK6-Digitaler-Kompass</German>
<Czech>MK6 - Zobrazit digitální kompas</Czech>
</Key>
<Key ID="STR_ACE_Mk6Mortar_Module_Description">
<English></English>
<Polish>Moduł ten pozwala dostosować ustawienia moździerza MK6.</Polish>
<German>Dieses Modul erlaubt das Einstellen des MK6-Mörsers.</German>
<Czech>Tento modul umožňuje nastavení minometu MK6.</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -43,4 +43,9 @@
};
};
}foreach GVAR(moduleInitCollection);
if (isServer) then {
GVAR(serverModulesRead) = true;
publicVariable QGVAR(serverModulesRead);
};
}] call EFUNC(common,addEventhandler);

View File

@ -5,12 +5,14 @@
<English>MX-2A</English>
<Polish>MX-2A</Polish>
<Spanish>MX-2A</Spanish>
<Czech>MX-2A</Czech>
</Key>
<Key ID="STR_ACE_MX2A_Description">
<English>Thermal imaging device</English>
<German>Wärmebildgerät</German>
<Polish>Monokular termowizyjny</Polish>
<Spanish>Dispositivo de imagen térmica</Spanish>
<Czech>Termální dalekohled</Czech>
</Key>
</Package>
</Project>

View File

@ -114,155 +114,182 @@
<Polish>Ustawienia imion</Polish>
<Spanish>Etiquetas de nombre</Spanish>
<German>Namensanzeigen</German>
<Czech>Jmenovky</Czech>
</Key>
<Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName">
<English>Player Names View Dist.</English>
<Polish>Zasięg imion graczy</Polish>
<Spanish>Distancia de vision para nombres de jugadores</Spanish>
<German>Spielernamen-Distanz</German>
<Czech>Vzdálenost zobrazení jména hráčů</Czech>
</Key>
<Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_Description">
<English>Distance in meters at which player names are shown. Default: 5</English>
<Polish>Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5</Polish>
<Spanish>Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5</Spanish>
<German>Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5</German>
<Czech>Vzdálenost v metrech pro zobrazení jména. Výchozí: 5</Czech>
</Key>
<Key ID="STR_ACE_NameTags_showNamesForAI_DisplayName">
<English>Show name tags for AI?</English>
<Polish>Imiona AI</Polish>
<Spanish>¿Mostrar nombres para la IA?</Spanish>
<German>Zeige Namensanzeigen für KI?</German>
<Czech>Zobrazit jmenovky pro AI?</Czech>
</Key>
<Key ID="STR_ACE_NameTags_showNamesForAI_Description">
<English>Show the name and rank tags for friendly AI units? Default: Do not force</English>
<Polish>Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj</Polish>
<Spanish>Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar</Spanish>
<German>Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen</German>
<Czech>Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat</Czech>
</Key>
<Key ID="STR_ACE_NameTags_DoNotForce">
<English>Do Not Force</English>
<Polish>Nie wymuszaj</Polish>
<Spanish>No forzar</Spanish>
<German>Nicht erzwingen</German>
<Czech>Nevynucovat</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ForceHide">
<English>Force Hide</English>
<Polish>Wymuś ukrycie</Polish>
<Spanish>Ocultar forzado</Spanish>
<German>Verstecken erzwingen</German>
<Czech>Vynuceno skrýt</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ForceShow">
<English>Force Show</English>
<Polish>Wymuś wyświetlanie</Polish>
<Spanish>Mostrar forzado</Spanish>
<German>Anzeigen erzwingen</German>
<Czech>Vynuceno zobrazit</Czech>
</Key>
<Key ID="STR_ACE_NameTags_showVehicleCrewInfo_DisplayName">
<English>Show crew info?</English>
<Polish>Pokaż załogę</Polish>
<Spanish>¿Mostrar información de la tripulación?</Spanish>
<German>Zeige Besatzungsinfo?</German>
<Czech>Zobrazit informace o posádce?</Czech>
</Key>
<Key ID="STR_ACE_NameTags_showVehicleCrewInfo_Description">
<English>Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force</English>
<Polish>Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj</Polish>
<Spanish>Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar</Spanish>
<German>Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen.</German>
<Czech>Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat </Czech>
</Key>
<Key ID="STR_ACE_NameTags_showCursorTagForVehicles_DisplayName">
<English>Show for Vehicles</English>
<Polish>Pokaż dla pojazdów</Polish>
<Spanish>Mostrar para vehiculos</Spanish>
<German>Zeige bei Fahrzeugen</German>
<Czech>Zobrazit pro vozidla</Czech>
</Key>
<Key ID="STR_ACE_NameTags_showCursorTagForVehicles_Description">
<English>Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No</English>
<Polish>Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie</Polish>
<Spanish>Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No</Spanish>
<German>Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein</German>
<Czech>Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne</Czech>
</Key>
<Key ID="STR_ACE_NameTags_Module_Description">
<English>This module allows you to customize settings and range of Name Tags.</English>
<Polish>Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.</Polish>
<German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German>
<Spanish>Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre.</Spanish>
<Czech>Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky.</Czech>
</Key>
<Key ID="STR_ACE_NameTags_Disabled">
<English>Disabled</English>
<Polish>Wyłączone</Polish>
<Spanish>Desactivado</Spanish>
<German>Deaktiviert</German>
<Czech>Zakázáno</Czech>
</Key>
<Key ID="STR_ACE_NameTags_Enabled">
<English>Enabled</English>
<Polish>Włączone</Polish>
<Spanish>Activado</Spanish>
<German>Aktiviert</German>
<Czech>Povoleno</Czech>
</Key>
<Key ID="STR_ACE_NameTags_OnlyCursor">
<English>Only on Cursor</English>
<Polish>Tylko pod kursorem</Polish>
<Spanish>Solo cursor</Spanish>
<German>Nur bei Maus</German>
<Czech>Pouze na kurzor</Czech>
</Key>
<Key ID="STR_ACE_NameTags_OnlyKeypress">
<English>Only on Keypress</English>
<Polish>Tylko po wciśnięciu klawisza</Polish>
<Spanish>Solo al pulsar tecla</Spanish>
<German>Nur bei Tastendruck</German>
<Czech>Pouze na klávesu</Czech>
</Key>
<Key ID="STR_ACE_NameTags_OnlyCursorAndKeypress">
<English>Only on Cursor and Keypress</English>
<Polish>Tylko pod kursorem i po wciśnięciu klawisza</Polish>
<Spanish>En cursor y al pulsar tecla</Spanish>
<German>Nur Maus und Tastendruck</German>
<Czech>Pouze na kurzor a klávesu</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursor">
<English>Force Show Only on Cursor</English>
<Polish>Wymuś pod kursorem</Polish>
<Spanish>Forzar mostrar solo en el cursor</Spanish>
<Czech>Vynuceno zobrazit pouze na kurzor</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyKeypress">
<English>Force Show Only on Keypress</English>
<Polish>Wymuś po wciśnięciu klawisza</Polish>
<Spanish>Forzar mostrar solo al pulsar tecla</Spanish>
<Czech>Vynuceno zobrazit pouze na klávesu</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress">
<English>Force Show Only on Cursor and Keypress</English>
<Polish>Wymuś pod kursorem i po wciśnięciu klawisza</Polish>
<Spanish>Forzar mostrar en el cursor y al pulsar tecla</Spanish>
<Czech>Vynuceno zobrazit pouze na kurzor a klávesu</Czech>
</Key>
<Key ID="STR_ACE_NameTags_NameTagSettings">
<English>Use Nametag settings</English>
<Polish>Użyj ustawień imion</Polish>
<Spanish>Usar ajustes de etiquetas de nombre</Spanish>
<German>Verwende Namenanzeigen</German>
<Czech>Použít nastavení jmenovky</Czech>
</Key>
<Key ID="STR_ACE_NameTags_AlwaysShowAll">
<English>Always Show All</English>
<Polish>Zawsze pokazuj wszystkie</Polish>
<Spanish>Mostrar siempre todo</Spanish>
<German>Immer alle zeigen</German>
<Czech>Vždy zobrazit vše</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc">
<English>Show player names and set their activation. Default: Enabled</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -&gt; ACE3.</Polish>
<Spanish>Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado</Spanish>
<Czech>Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno</Czech>
</Key>
<Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc">
<English>Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2.</English>
<Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish>
<Spanish>Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2.</Spanish>
<Czech>Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2.</Czech>
</Key>
<Key ID="STR_ACE_NameTags_TagSize_Name">
<English>Nametags Size</English>
<Polish>Rozmiar imion</Polish>
<Spanish>Tamaño de las Etiquetas de nombre</Spanish>
<Czech>Velikost jmenovky</Czech>
</Key>
<Key ID="STR_ACE_NameTags_TagSize_Description">
<English>Text and Icon Size Scaling</English>
<Polish>Skalowanie tekstu oraz ikon</Polish>
<Spanish>Escala del texto y el icono</Spanish>
<Czech>Velikost textu a ikon</Czech>
</Key>
</Package>
</Project>

View File

@ -246,76 +246,89 @@
<Polish>Pozwól na eksport ustawień [ACE]</Polish>
<Spanish>[ACE] Permitir exportar configuración</Spanish>
<German>Erlaube Config-Export [ACE]</German>
<Czech>Povolit export natavení [ACE]</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_allowconfigurationExport_DisplayName">
<English>Allow</English>
<Polish>Zezwól</Polish>
<Spanish>Permitir</Spanish>
<German>Erlaube</German>
<Czech>Povolit</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_allowconfigurationExport_Description">
<English>Allow export of all settings to a server config formatted.</English>
<Polish>Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera.</Polish>
<Spanish>Permitir la exportación de todos los ajustes de configuración a un servidor con formato.</Spanish>
<German>Erlaube alle Einstellungen in einer Server-Config zu exportieren.</German>
<Czech>Povolit exportovat všechna nastavení do formátu server configu.</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_AllowConfigExport_Module_Description">
<English>When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard.</English>
<Polish>Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP.</Polish>
<Spanish>Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles.</Spanish>
<German>Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert.</German>
<Czech>Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky.</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_Hide">
<English>Hide</English>
<Polish>Ukryj</Polish>
<Spanish>Ocultar</Spanish>
<German>Verstecken</German>
<Czech>Skrýt</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_TopRightDown">
<English>Top right, downwards</English>
<Polish>Po prawej u góry, w dół</Polish>
<Spanish>Arriba a la derecha, hacia abajo</Spanish>
<German>Open rechts, nach unten</German>
<Czech>Vpravo nahoře, dolů</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_TopRightLeft">
<English>Top right, to the left</English>
<Polish>Po prawej u góry, do lewej</Polish>
<Spanish>Arriba a la derecha, hacia la izquierda</Spanish>
<German>Von rechts nach links</German>
<Czech>Vpravo nahoře, do leva</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_TopLeftDown">
<English>Top left, downwards</English>
<Polish>Po lewej u góry, w dół</Polish>
<Spanish>Arriba a la izquierda, hacia abajo</Spanish>
<German>Von links, nach unten</German>
<Czech>Vlevo nahoře, dolů</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_TopLeftRight">
<English>Top left, to the right</English>
<Polish>Po lewej u góry, do prawej</Polish>
<Spanish>Arriba a la izquierda, hacia la derecha</Spanish>
<German>Oben links nach rechts</German>
<Czech>Vlevo nahoře, do prava</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_Top">
<English>Top</English>
<Polish>Góra</Polish>
<Spanish>Arriba</Spanish>
<German>Oben</German>
<Czech>Nahoře</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_Bottom">
<English>Bottom</English>
<Polish>Dół</Polish>
<Spanish>Abajo</Spanish>
<German>Unten</German>
<Czech>Dole</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_DumpDebug">
<English>Debug To Clipboard</English>
<Polish>Debuguj do schowka</Polish>
<Spanish>Depurar al portapapeles</Spanish>
<Czech>Debug do schránky</Czech>
</Key>
<Key ID="STR_ACE_OptionsMenu_DumpDebugTooltip">
<English>Sends debug information to RPT and clipboard.</English>
<Polish>Wysyła informacje o debugowaniu do RPT oraz schowka.</Polish>
<Spanish>Envía información de depuración al RPT y el portapapeles.</Spanish>
<Czech>Pošle debug informace do RPT a schránky.</Czech>
</Key>
</Package>
</Project>

View File

@ -5,36 +5,43 @@
<English>Range Card</English>
<Polish>Tabela balistyczna</Polish>
<Spanish>Tarjeta de distancias</Spanish>
<Czech>Vzdálenostní tabulka</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_Description">
<English>50 METER increments -- MRAD/MRAD (reticle/turrets)</English>
<Polish>Co 50 metrów - MRAD/MRAD (siatka/pokrętło)</Polish>
<Spanish>Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas)</Spanish>
<Czech>Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže)</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_OpenRangeCard">
<English>Open Range Card</English>
<Polish>Otwórz tabelę balistyczną</Polish>
<Spanish>Abrir tarjeta de distancias</Spanish>
<Czech>Otevřít vzdálenostní tabulku</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_OpenRangeCardCopy">
<English>Open Range Card Copy</English>
<Polish>Otwórz kopię tabeli balistycznej</Polish>
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
<Czech>Otevřít kopii vzdálenostní tabulky</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_RangeCardDialogKey">
<English>Open Range Card</English>
<Polish>Otwórz tabelę balistyczną</Polish>
<Spanish>Abrir tarjeta de distancias</Spanish>
<Czech>Otevřít vzdálenostní tabulku</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_RangeCardCopyDialogKey">
<English>Open Range Card Copy</English>
<Polish>Otwórz kopię tabeli balistycznej</Polish>
<Spanish>Abrir copia de tarjeta de distancias</Spanish>
<Czech>Otevřít kopii vzdálenostní tabulky</Czech>
</Key>
<Key ID="STR_ACE_RangeCard_CopyRangeCard">
<English>Copy Range Card</English>
<Polish>Skopiuj tabelę balistyczną</Polish>
<Spanish>Copiar tarjeta de distancias</Spanish>
<Czech>Kopírovat vzdálenostní tabulku</Czech>
</Key>
</Package>
</Project>

View File

@ -426,7 +426,7 @@
<German>KamAZ Transport</German>
<Spanish>KamAZ de transporte</Spanish>
<Polish>KamAZ transportowy</Polish>
<Czech>KAMAZ Valník</Czech>
<Czech>KamAZ Valník</Czech>
<French>KamAZ Transport</French>
<Russian>КамАЗ Траспортный</Russian>
<Portuguese>KamAZ Transporte</Portuguese>
@ -438,7 +438,7 @@
<German>KamAZ Transport (bedeckt)</German>
<Spanish>KamAZ de transporte (cubierto)</Spanish>
<Polish>KamAZ Transportowy (zakryty)</Polish>
<Czech>KAMAZ Valník (krytý)</Czech>
<Czech>KamAZ Valník (krytý)</Czech>
<French>KamAZ Transport (bâché)</French>
<Russian>КамАЗ Траспортный (крытый)</Russian>
<Portuguese>KamAZ Transporte (coberto)</Portuguese>
@ -450,7 +450,7 @@
<German>KamAZ Munition</German>
<Spanish>KamAZ de munición</Spanish>
<Polish>KamAZ Amunicyjny</Polish>
<Czech>KAMAZ Muniční</Czech>
<Czech>KamAZ Muniční</Czech>
<French>KamAZ Munitions</French>
<Russian>КамАЗ Боеприпасы</Russian>
<Portuguese>KamAZ Munições</Portuguese>
@ -462,7 +462,7 @@
<German>KamAZ Treibstoff</German>
<Spanish>KamAZ de combustible</Spanish>
<Polish>KamAZ cysterna</Polish>
<Czech>KAMAZ Cisterna</Czech>
<Czech>KamAZ Cisterna</Czech>
<French>KamAZ Citerne</French>
<Russian>КамАЗ Заправщик</Russian>
<Portuguese>KamAZ Combustível</Portuguese>
@ -474,7 +474,7 @@
<German>KamAZ Instandsetzung</German>
<Spanish>KamAZ de reparación</Spanish>
<Polish>KamAZ Naprawczy</Polish>
<Czech>KAMAZ Opravárenský</Czech>
<Czech>KamAZ Opravárenský</Czech>
<French>KamAZ Réparation</French>
<Russian>КамАЗ Ремонтный</Russian>
<Portuguese>KamAZ Reparador</Portuguese>

View File

@ -150,67 +150,79 @@
<Polish>System odrodzenia</Polish>
<Spanish>Sistema de reaparición</Spanish>
<German>Respawn-System</German>
<Czech>Systém znovuzrození</Czech>
</Key>
<Key ID="STR_ACE_Respawn_SavePreDeathGear_DisplayName">
<English>Save Gear?</English>
<Polish>Zapisać ekwipunek?</Polish>
<Spanish>¿Guardar equipo?</Spanish>
<German>Ausrüstung speichern?</German>
<Czech>Uložit výbavu?</Czech>
</Key>
<Key ID="STR_ACE_Respawn_SavePreDeathGear_Description">
<English>Respawn with the gear a soldier had just before his death?</English>
<Polish>Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią?</Polish>
<Spanish>Reaparece con el equipo que el soldado tenía justo antes de morir</Spanish>
<German>Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen?</German>
<Czech>Znovuubjevit s výbavou kterou měl voják před smrtí?</Czech>
</Key>
<Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName">
<English>Remove bodies?</English>
<Polish>Usuwać ciała?</Polish>
<Spanish>¿Eliminar cuerpos?</Spanish>
<German>Körper entfernen?</German>
<Czech>Odstranit těla?</Czech>
</Key>
<Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description">
<English>Remove player bodies after disconnect?</English>
<Polish>Usuwaj ciała graczy po rozłączeniu z serwera?</Polish>
<Spanish>Elimina los cuerpos de los jugadores cuando se desconecten</Spanish>
<German>Entferne Spielerkörper nach dem Trennen einer Verbindung?</German>
<Czech>Odstranit hráčova těla po odpojení?</Czech>
</Key>
<Key ID="STR_ACE_Respawn_Module_Description">
<English></English>
<Polish>Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu).</Polish>
<German>Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen.</German>
<Czech>Tento modul umožňuje nastavení znovuzrození (spawn).</Czech>
</Key>
<Key ID="STR_ACE_Respawn_FriendlyFire_Module_DisplayName">
<English>Friendly Fire Messages</English>
<Polish>Wiadomości Friendly Fire</Polish>
<Spanish>Mensajes de fuego amigo</Spanish>
<German>Freundbeschuss-Nachrichten</German>
<Czech>Upozornění na přátelskou střelbu</Czech>
</Key>
<Key ID="STR_ACE_Respawn_FriendlyFire_Module_Description">
<English></English>
<Polish>Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił.</Polish>
<Czech>Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil.</Czech>
</Key>
<Key ID="STR_ACE_Respawn_Rallypoint_Module_DisplayName">
<English>Rallypoint System</English>
<Polish>System punktu zbiórki</Polish>
<Spanish>Sistema de punto de reunión</Spanish>
<German>Rallypoint-System</German>
<Czech>Systém shromáždění</Czech>
</Key>
<Key ID="STR_ACE_Respawn_Rallypoint_Module_Description">
<English></English>
<Polish>Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -&gt; ACE Odrodzenie.</Polish>
<Czech>Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -&gt; ACE Oživení.</Czech>
</Key>
<Key ID="STR_ACE_Respawn_Rallypoint_MoveRallypoint">
<English>Move Rallypoint</English>
<Polish>Przenieś punkt zbiórki</Polish>
<Spanish>Mover punto de reunión</Spanish>
<German>Bewege Rallypoint</German>
<Czech>Přesun na shromaždiště</Czech>
</Key>
<Key ID="STR_ACE_Respawn_EditorCategory">
<English>ACE Respawn</English>
<Polish>ACE Odrodzenie</Polish>
<Spanish>Reaparición ACE</Spanish>
<German>ACE-Respawn</German>
<Czech>ACE Znovuzrození</Czech>
</Key>
</Package>
</Project>
</Project>

View File

@ -30,82 +30,96 @@
<Polish>System zmiany stron</Polish>
<Spanish>Sistema de cambio de unidad</Spanish>
<German>Einheiten-Switch-System?</German>
<Czech>Systém výměny stran</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToWest_DisplayName">
<English>Switch to West?</English>
<Polish>Zmiana na Zachód?</Polish>
<Spanish>¿Cambiar a Oeste?</Spanish>
<German>Nach BLUFOR wechseln?</German>
<Czech>Přesunout k BLUFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToWest_Description">
<English>Allow switching to west units?</English>
<Polish>Pozwolić zmieniać graczom stronę na Zachód?</Polish>
<Spanish>¿Permitir cambios a unidades del Oeste?</Spanish>
<German>Erlaube das Wechseln zu BLUFOR-Einheiten?</German>
<Czech>Povolit přesun k BLUFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToEast_DisplayName">
<English>Switch to East?</English>
<Polish>Zmiana na Wschód?</Polish>
<Spanish>¿Cambiar a Este?</Spanish>
<German>Nach OPFOR wechseln?</German>
<Czech>Přesunout k OPFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToEast_Description">
<English>Allow switching to east units?</English>
<Polish>Pozwolić zmieniać graczom stronę na Wschód?</Polish>
<Spanish>¿Permitir cambios a unidades del Este?</Spanish>
<German>Erlaube das Wechseln zu OPFOR-Einheiten?</German>
<Czech>Povolit přesun k OPFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToIndependent_DisplayName">
<English>Switch to Independent?</English>
<Polish>Zmiana na Ruch Oporu?</Polish>
<Spanish>¿Cambiar a Independiente?</Spanish>
<German>Nach INDFOR wechseln?</German>
<Czech>Přesunout k INDFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToIndependent_Description">
<English>Allow switching to independent units?</English>
<Polish>Pozwolić zmieniać stronę na Ruch Oporu?</Polish>
<Spanish>¿Permitir cambios a unidades Independientes?</Spanish>
<German>Erlaube das Wechseln zu INDFOR-Einheiten?</German>
<Czech>Povolit přesun k INDFOR?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToCivilian_DisplayName">
<English>Switch to Civilian?</English>
<Polish>Zmiana na Cywili?</Polish>
<Spanish>¿Cambiar a Civil?</Spanish>
<German>Nach CIVILIAN wechseln?</German>
<Czech>Přesunout k CIVILISTŮM?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SwitchToCivilian_Description">
<English>Allow switching to civilian units?</English>
<Polish>Pozwolić zmieniać stronę na Cywili?</Polish>
<Spanish>¿Permitir cambios a unidades Civiles</Spanish>
<German>Erlaube das Wechseln zu CIVILIAN-Einheiten?</German>
<Czech>Povolit přesun k CIVILISTŮM?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_EnableSafeZone_DisplayName">
<English>Enable Safe Zone?</English>
<Polish>Aktywuj bezp. strefę?</Polish>
<Spanish>¿Habilitar zona segura?</Spanish>
<German>Aktiviere Sicherheitszone?</German>
<Czech>Povolit bezpečné oblasti?</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_EnableSafeZone_Description">
<English>Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone.</English>
<Polish>Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy.</Polish>
<Spanish>Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura.</Spanish>
<German>Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln.</German>
<Czech>Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny.</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SafeZoneRadius_DisplayName">
<English>Safe Zone Radius</English>
<Polish>Promień bezp. strefy</Polish>
<Spanish>Radio de la zona segura</Spanish>
<German>Sicherheitszonenradius</German>
<Czech>Oblast bezpečné zóny</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_SafeZoneRadius_Description">
<English>The safe zone around players from a different team. Default: 200</English>
<Polish>Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200</Polish>
<Spanish>La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200</Spanish>
<German>Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200</German>
<Czech>Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200</Czech>
</Key>
<Key ID="STR_ACE_SwitchUnits_Module_Description">
<English></English>
<Polish></Polish>
<Czech>Tento modul umožňuje přepínání mazi dostupnými stranami.</Czech>
</Key>
</Package>
</Project>
</Project>

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