diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index 63942ca799..eed6e20be3 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -30,142 +30,166 @@
Zaawansowana balistyka
Balística avanzada
Erweiterte Ballistik
+ Pokročilá balistika
Advanced Ballistics
Zaawansowana balistyka
Balística avanzada
Erweiterte Ballistik
+ Pokročilá balistika
Enables advanced ballistics
Aktywuje zaawansowaną balistykę
Activa la balística avanzada
Aktiviert die erweiterte Ballistik
+ Aktivuje pokročilou balistiku
Enabled For Snipers
Activada para francotiradores
Akt. dla snajperów
Für Scharfschützen aktiviert
+ Povoleno pro odstřelovače
Enables advanced ballistics for non local snipers (when using high power optics)
Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)
Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)
Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)
+ Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku)
Enabled For Group Members
Activada para miembros de grupo
Akt. dla czł. grupy
Für Gruppenmitglieder aktiviert
+ Povoleno pro členy skupiny
Enables advanced ballistics for non local group members
Activada la balística avanzada para miembros de grupo no locales
Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy
Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder
+ Aktivuje pokročilou balistiku pro nelokální členy skupiny
Enabled For Everyone
Activada para todos
Akt. dla wszystkich
Für jeden aktiviert
+ Povoleno pro všechny
Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)
Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).
Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)
Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)
+ 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)
Always Enabled For Group Members
Zawsze akt. dla czł. grupy
Siempre activada para miembros de grupo
Für Gruppenmitglieder immer aktiviert
+ Vždy povoleno pro členy skupiny
Always enables advanced ballistics when a group member fires
Aktywuje zaawansowaną balistykę dla wszystkich członków grupy
Activada la balística avanzada siempre cuando miembros de grupo disparan
Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt
+ Aktivuje pokročilou balistiku pro členy skupiny
Disabled In FullAuto Mode
Wył. podczas ognia auto.
Desactivada en modo automático
Beim vollautomatischen Feuern deaktiviert
+ Zakázáno v automatickém režimu střelby
Disables the advanced ballistics during full auto fire
Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego
Desactivada la balística avanzada durante el fuego automático
Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern
+ Zákáže pokročilou balistiku během střelby v režimu automat
Enable Ammo Temperature Simulation
Symulacja temp. amunicji
Activar simulación de temperatura de munición
Simulation der Munitionstemperatur aktivieren
+ Povolit simulaci teploty munice
Muzzle velocity varies with ammo temperature
Prędkość wylotowa pocisku jest zależna od temperatury amunicji
La velocidad de salida varía con la temperatura de la munición
Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit
+ Úsťová rychlost je závislá na teplotě munice
Enable Barrel Length Simulation
Symulacja długości lufy
Habilitar la simulación de longitud del cañón
Simulation der Lauflänge aktivieren
+ Povolit simulaci délky hlavně
Muzzle velocity varies with barrel length
Prędkość wylotowa pocisku jest zależna od długości lufy
La velocidad de salidal varía con la longitud del cañón
Lauflänge beeinflusst Mündungsgeschwindigkeit
+ Úsťová rychlost je závislá na délce hlavně
Enable Bullet Trace Effect
Efekt smugi pocisku
Activar el efecto trazador de la bala
Geschossspureffekt aktivieren
+ Povolit efekt trasírek
Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)
Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)
Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica)
Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)
+ Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku)
Simulation Interval
Interwał symulacji
Intervalo de simulación
Simulationsintervall
+ Interval simulace
Defines the interval between every calculation step
Określa interwał pomiędzy każdym krokiem kalkulacji
Define el intervalo entre cada cálculo
Legt das Intervall zwischen den Berechnungsschritten fest
+ Určuje interval mezi každým výpočtem
Simulation Radius
Zasięg symulacji
Radio de simulación
Simulationsradius
+ Rozsah simulace
Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles
Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków
Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles
Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird
+ Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil
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.
+ 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.
-
+
\ No newline at end of file
diff --git a/addons/apl/data/Jezek_kov.rvmat b/addons/apl/data/Jezek_kov.rvmat
new file mode 100644
index 0000000000..d2133e6b5a
--- /dev/null
+++ b/addons/apl/data/Jezek_kov.rvmat
@@ -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};
+ };
+};
diff --git a/addons/apl/data/barbwire_a_co.paa b/addons/apl/data/barbwire_a_co.paa
new file mode 100644
index 0000000000..1809c2c08e
Binary files /dev/null and b/addons/apl/data/barbwire_a_co.paa differ
diff --git a/addons/apl/data/barbwire_a_nohq.paa b/addons/apl/data/barbwire_a_nohq.paa
new file mode 100644
index 0000000000..5612dc460a
Binary files /dev/null and b/addons/apl/data/barbwire_a_nohq.paa differ
diff --git a/addons/apl/data/barbwire_a_ns.rvmat b/addons/apl/data/barbwire_a_ns.rvmat
new file mode 100644
index 0000000000..0a6ad7c316
--- /dev/null
+++ b/addons/apl/data/barbwire_a_ns.rvmat
@@ -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};
+ };
+};
diff --git a/addons/apl/data/jezek_texture_co.paa b/addons/apl/data/jezek_texture_co.paa
new file mode 100644
index 0000000000..7b2e16d0e7
Binary files /dev/null and b/addons/apl/data/jezek_texture_co.paa differ
diff --git a/addons/apl/data/jezek_texture_nohq.paa b/addons/apl/data/jezek_texture_nohq.paa
new file mode 100644
index 0000000000..6a34328e5f
Binary files /dev/null and b/addons/apl/data/jezek_texture_nohq.paa differ
diff --git a/addons/apl/data/jezek_texture_smdi.paa b/addons/apl/data/jezek_texture_smdi.paa
new file mode 100644
index 0000000000..415d98a09f
Binary files /dev/null and b/addons/apl/data/jezek_texture_smdi.paa differ
diff --git a/addons/apl/data/plech.paa b/addons/apl/data/plech.paa
new file mode 100644
index 0000000000..240e1ce03f
Binary files /dev/null and b/addons/apl/data/plech.paa differ
diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index 96e4f720a6..171d7936b8 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -1597,6 +1597,7 @@
[ACE] Skrzynka z amunicją
[ACE] Caja de suministros de munición
[ACE] Munitionskiste
+ [ACE] Bedna s municí
-
+
\ No newline at end of file
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 45dec9ce51..19ab9050a3 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -162,42 +162,50 @@
Skapituluj jednostkę
Hacer que la unidad se rinda
Einheit kapitulieren lassen
+ Vzdávající se jednotka
Sync a unit to make them surrender.<br />Source: ace_captives
Zsynchronizuj z jednostką, aby skapitulowała.<br />Źródło: ace_captives
Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives
Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives
+ Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives
Captives Settings
Ustawienia więźniów
Ajustes de prisioneros
+ Nastavení zajatce
Controls settings for surrender and cable ties
Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych
Ajustes de control para rendición y precintos
+ Toto kontroluje nastavení kapitulace a pout
Can handcuff own side
Skuwanie sojuszników
Se puede esposar el bando propio
+ Může spoutat spolubojovníky
Can players cabletie units on their own side
Czy gracze mogą skuwać sojuszników?
Pueden los jugadores esposar unidades en su propio bando
+ Mohou hráči spoutat jednotky na své straně
Allow surrendering
Pozwól kapitulować
Permitir rendición
+ Povolit vzdávání
Players can surrender after holstering their weapon
Gracze mogą skapitulować po schowaniu swojej broni do kabury
Los jugadores pueden rendirse después de enfundar su arma
+ Hráč se může vzdát poté, co si skryje zbraň
\ No newline at end of file
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 97cddb84a3..e0e78db11a 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -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;
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index c773c1f4a2..0bce1202be 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -475,78 +475,91 @@
Sprawdzaj PBO
Comprobar PBOs
Überprüfe PBOs
+ Zkontrolovat PBO
Sprawdzaj spójność addonów z serwerem
Este módulo verifica la integridad de los addons con los que iniciamos el simulador
Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat.
+ Zjistit addon který je v souladu se serverem
Action
Akcja
Acción
Aktion
+ Akce
What to do with people who do not have the right PBOs?
Co zrobić z graczami, którzy nie mają właściwych PBO?
¿Qué hacer con la gente que no tiene correctamente los PBOs?
Was soll mit Leuten passieren, die nicht die richtigen PBOs haben?
+ Co udělat s lidmi, co nemají správné addony?
Warn once
Ostrzeż raz
Avisar una vez
Einmal verwarnen
+ Upozornit jednou
Warn (permanent)
Ostrzeżenie (permanentne)
Avisar (permanente)
Immer verwarnen
+ Upozornit (permanentně)
Kick
Kick
Expulsar
Kicken
+ Vyhodit
Check all addons
Sprawdź wsz. addony
Comprobar todos los addons
Alle Addons überprüfen
+ Zkontrolovat všechny addony
Check all addons instead of only those of ACE?
Sprawdzaj wszystkie addony czy tylko te z ACE?
Comprobar todos los addons en vez de solo los del ACE
Alle Addons anstatt nur ACE überprüfen?
+ Zkontrolovat všechny addony namísto jen těch od ACE?
Whitelist
Biała lista
Lista blanca
Whitelist
+ Seznam povolených
What addons are allowed regardless?
Jakie addony są dozwolone?
Qué addons están permitidos igualmente
Welche Addons werden dennoch erlaubt?
+ Jaké addony jsou povoleny?
LSD Vehicles
Pojazdy LSD
Vehículos LSD
LSD-Fahrzeuge
+ LSD vozidla
Adds LSD effect to synchronized vehicle
Dodaje efekt LSD pod zsynchronizowany pojazd
Añade el efecto LSD al vehículo sincronizado
Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu
+ Přidá LSD efekt pro synchronizované vozidla
-
+
\ No newline at end of file
diff --git a/addons/concertina_wire/$PBOPREFIX$ b/addons/concertina_wire/$PBOPREFIX$
new file mode 100644
index 0000000000..0ca718ad15
--- /dev/null
+++ b/addons/concertina_wire/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\concertina_wire
\ No newline at end of file
diff --git a/addons/concertina_wire/CfgEventHandlers.hpp b/addons/concertina_wire/CfgEventHandlers.hpp
new file mode 100644
index 0000000000..026afb4e2d
--- /dev/null
+++ b/addons/concertina_wire/CfgEventHandlers.hpp
@@ -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));
+ };
+ };
+};
diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp
new file mode 100644
index 0000000000..2592bf5b77
--- /dev/null
+++ b/addons/concertina_wire/CfgVehicles.hpp
@@ -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;
+ };
+};
diff --git a/addons/concertina_wire/README.md b/addons/concertina_wire/README.md
new file mode 100644
index 0000000000..ab62458de9
--- /dev/null
+++ b/addons/concertina_wire/README.md
@@ -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)
\ No newline at end of file
diff --git a/addons/concertina_wire/UI/icon_sandbag_ca.paa b/addons/concertina_wire/UI/icon_sandbag_ca.paa
new file mode 100644
index 0000000000..5d6ea6d4d9
Binary files /dev/null and b/addons/concertina_wire/UI/icon_sandbag_ca.paa differ
diff --git a/addons/concertina_wire/XEH_init.sqf b/addons/concertina_wire/XEH_init.sqf
new file mode 100644
index 0000000000..dbce4a9b92
--- /dev/null
+++ b/addons/concertina_wire/XEH_init.sqf
@@ -0,0 +1,4 @@
+#include "script_component.hpp"
+
+PARAMS_1(_wire);
+_wire addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];
\ No newline at end of file
diff --git a/addons/concertina_wire/XEH_postInit.sqf b/addons/concertina_wire/XEH_postInit.sqf
new file mode 100644
index 0000000000..ff3b5c5167
--- /dev/null
+++ b/addons/concertina_wire/XEH_postInit.sqf
@@ -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);
diff --git a/addons/concertina_wire/XEH_preInit.sqf b/addons/concertina_wire/XEH_preInit.sqf
new file mode 100644
index 0000000000..f15feb48bd
--- /dev/null
+++ b/addons/concertina_wire/XEH_preInit.sqf
@@ -0,0 +1,11 @@
+#include "script_component.hpp"
+
+ADDON = false;
+
+PREP(deploy);
+PREP(dismount);
+PREP(dismountSuccess);
+PREP(handleDamage);
+PREP(handleKilled);
+
+ADDON = true;
diff --git a/addons/concertina_wire/config.cpp b/addons/concertina_wire/config.cpp
new file mode 100644
index 0000000000..06b7bf5d86
--- /dev/null
+++ b/addons/concertina_wire/config.cpp
@@ -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"
\ No newline at end of file
diff --git a/addons/concertina_wire/data/ACE_ConcertinaWire.p3d b/addons/concertina_wire/data/ACE_ConcertinaWire.p3d
new file mode 100644
index 0000000000..3e1c9c881c
Binary files /dev/null and b/addons/concertina_wire/data/ACE_ConcertinaWire.p3d differ
diff --git a/addons/concertina_wire/data/ACE_ConcertinaWireCoil.p3d b/addons/concertina_wire/data/ACE_ConcertinaWireCoil.p3d
new file mode 100644
index 0000000000..24f6ebf0fe
Binary files /dev/null and b/addons/concertina_wire/data/ACE_ConcertinaWireCoil.p3d differ
diff --git a/addons/concertina_wire/data/ACE_ConcertinaWireNoGeo.p3d b/addons/concertina_wire/data/ACE_ConcertinaWireNoGeo.p3d
new file mode 100644
index 0000000000..3af6a40a15
Binary files /dev/null and b/addons/concertina_wire/data/ACE_ConcertinaWireNoGeo.p3d differ
diff --git a/addons/concertina_wire/data/model.cfg b/addons/concertina_wire/data/model.cfg
new file mode 100644
index 0000000000..20845cfacb
--- /dev/null
+++ b/addons/concertina_wire/data/model.cfg
@@ -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";
+ };
+ };
+ };
+};
diff --git a/addons/concertina_wire/functions/fnc_deploy.sqf b/addons/concertina_wire/functions/fnc_deploy.sqf
new file mode 100644
index 0000000000..c30e767266
--- /dev/null
+++ b/addons/concertina_wire/functions/fnc_deploy.sqf
@@ -0,0 +1,84 @@
+/*
+ * Author: Rocko, Ruthberg
+ *
+ * Deploys the concertina wire
+ *
+ * Arguments:
+ * 0: wire coil