diff --git a/ace_fcs.dll b/ace_fcs.dll
index 7c222dc1d7..189c3c0826 100644
Binary files a/ace_fcs.dll and b/ace_fcs.dll differ
diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp
index 177753223f..393b9666e6 100644
--- a/addons/aircraft/CfgAmmo.hpp
+++ b/addons/aircraft/CfgAmmo.hpp
@@ -1,5 +1,19 @@
class CfgAmmo {
+ class BulletBase;
+ class B_20mm;
+
+ class ACE_20mm_HEDP : B_20mm {
+ hit = 80;
+ indirectHit = 12;
+ indirectHitRange = 2; //2;
+ caliber = 1.4;
+ tracerStartTime = 0.02;
+ timeToLive = 40;
+ explosive = 1.8;
+ };
+
+
// adjust minigun caliber and deflection to other ammo
class SubmunitionBullet;
class B_65x39_Minigun_Caseless: SubmunitionBullet {
@@ -13,7 +27,6 @@ class CfgAmmo {
};
// also adjust tracer, "muh lightshow"; also adjust splash damage radius
- class BulletBase;
class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase {
hit = 80;
indirectHit = 12;
@@ -22,6 +35,7 @@ class CfgAmmo {
deflecting = 3;
fuseDistance = 3;
tracerStartTime = 0.02;
+ timeToLive = 40;
};
// helper projectiles to simulate a rof > fps
diff --git a/addons/aircraft/CfgMagazines.hpp b/addons/aircraft/CfgMagazines.hpp
index 0c306f8f04..2445182163 100644
--- a/addons/aircraft/CfgMagazines.hpp
+++ b/addons/aircraft/CfgMagazines.hpp
@@ -10,6 +10,7 @@ class CfgMagazines {
// an extended magazine for the comanche
class 300Rnd_20mm_shells;
class ACE_500Rnd_20mm_shells_Comanche: 300Rnd_20mm_shells {
+ ammo = "ACE_20mm_HEDP";
count = 500;
};
};
diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp
index e9fb90e61e..559b8dc2e1 100644
--- a/addons/aircraft/CfgVehicles.hpp
+++ b/addons/aircraft/CfgVehicles.hpp
@@ -95,29 +95,7 @@ class CfgVehicles {
};
};
- class Heli_Attack_01_base_F: Helicopter_Base_F {
- lockDetectionSystem = 12;
- incomingMissileDetectionSystem = 16;
- driverCanEject = 1;
-
- class Turrets: Turrets {
- class MainTurret: MainTurret {
- canEject = 1;
- showHMD = 1;
- weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM"};
- magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"};
- };
- };
-
- class AnimationSources: AnimationSources {
- class Gatling {
- weapon = "ACE_gatling_20mm_Comanche";
- };
- class Muzzle_flash {
- weapon = "ACE_gatling_20mm_Comanche";
- };
- };
- };
+ #include "Heli_Attack_01_base_F.hpp"
class B_Heli_Attack_01_F: Heli_Attack_01_base_F {};
@@ -222,7 +200,7 @@ class CfgVehicles {
lockDetectionSystem = 0;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
- weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher"};
+ weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher", "ACE_AIR_SAFETY" };
magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"};
class Turrets: Turrets {
diff --git a/addons/aircraft/CfgWeapons.hpp b/addons/aircraft/CfgWeapons.hpp
index c5f22fc3a2..dc84c9f04a 100644
--- a/addons/aircraft/CfgWeapons.hpp
+++ b/addons/aircraft/CfgWeapons.hpp
@@ -4,6 +4,23 @@ class Mode_Burst;
class Mode_FullAuto;
class CfgWeapons {
+
+ class RocketPods;
+ class ACE_AIR_SAFETY : RocketPods
+ {
+ CanLock = 0;
+ displayName = "SAFE";
+ displayNameMagazine = "SAFE";
+ shortNameMagazine = "SAFE";
+ nameSound = "cannon";
+ cursor = "EmptyCursor";
+ cursorAim = "EmptyCursor";
+ magazines[] = {"FakeMagazine"};
+ burst = 0;
+ reloadTime = 0.01;
+ magazineReloadTime = 0.1;
+ };
+
// Manual Switching Of Flare Mode
class SmokeLauncher;
class CMFlareLauncher: SmokeLauncher {
@@ -37,24 +54,24 @@ class CfgWeapons {
class manual: manual {
reloadTime = 0.04;
- dispersion = 0.0022;
+ dispersion = 0.006;
displayName = "$STR_ACE_Aircraft_gatling_20mm_Name";
};
class close: close {
reloadTime = 0.04;
- dispersion = 0.0022;
+ dispersion = 0.006;
};
class short: short {
reloadTime = 0.04;
- dispersion = 0.0022;
+ dispersion = 0.006;
};
class medium: medium {
reloadTime = 0.04;
- dispersion = 0.0022;
+ dispersion = 0.006;
};
class far: far {
reloadTime = 0.04;
- dispersion = 0.0022;
+ dispersion = 0.006;
};
};
diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp
new file mode 100644
index 0000000000..817b1dacaa
--- /dev/null
+++ b/addons/aircraft/Heli_Attack_01_base_F.hpp
@@ -0,0 +1,979 @@
+class Heli_Attack_01_base_F: Helicopter_Base_F {
+ lockDetectionSystem = 12;
+ incomingMissileDetectionSystem = 16;
+ driverCanEject = 1;
+
+ class MFD
+ {
+ class AirplaneHUD
+ {
+ class Bones{};
+ class Draw{};
+ topLeft = "HUD_top_left";
+ topRight = "HUD_top_right";
+ bottomLeft = "HUD_bottom_left";
+ borderLeft = 0;
+ borderRight = 0;
+ borderTop = 0;
+ borderBottom = 0;
+ color[] = {0.15,1,0.15,1};
+ enableParallax = 0;
+ helmetMountedDisplay = 1;
+ helmetPosition[] = {0,0,0};
+ helmetRight[] = {0,0,0};
+ helmetDown[] = {0,0,0};
+ };
+ class ACE_HUD_1
+ {
+ topLeft = "HUD_top_left";
+ topRight = "HUD_top_right";
+ bottomLeft = "HUD_bottom_left";
+ borderLeft = 0;
+ borderRight = 0;
+ borderTop = 0;
+ borderBottom = 0;
+ color[] = {0.15,1,0.15,1};
+ enableParallax = 0;
+ class Bones
+ {
+ class GunnerAim
+ {
+ type = "vector";
+ source = "weapon";
+ pos0[] = {0.5,"0.9 - 0.04 + 0.012"};
+ pos10[] = {"0.5 + 0.0111","0.9 - 0.04 + 0.012 + 0.0133"};
+ };
+ class Target
+ {
+ source = "target";
+ type = "vector";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.85,0.85};
+ };
+ class Velocity
+ {
+ type = "vector";
+ source = "velocity";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.65,0.65};
+ };
+ class Velocity_slip
+ {
+ type = "vector";
+ source = "velocity";
+ pos0[] = {0.5,0.845};
+ pos10[] = {0.53,0.845};
+ };
+ class VspeedBone
+ {
+ type = "linear";
+ source = "vspeed";
+ sourceScale = 1;
+ min = -10;
+ max = 10;
+ minPos[] = {0.93,0.2};
+ maxPos[] = {0.93,0.8};
+ };
+ class RadarAltitudeBone
+ {
+ type = "linear";
+ source = "altitudeAGL";
+ sourceScale = 1;
+ min = 0;
+ max = 60;
+ minPos[] = {0.965,0.2};
+ maxPos[] = {0.965,0.8};
+ };
+ class HorizonBankRot
+ {
+ type = "rotational";
+ source = "horizonBank";
+ center[] = {0.5,0.5};
+ min = -3.1416;
+ max = 3.1416;
+ minAngle = -180;
+ maxAngle = 180;
+ aspectRatio = 1;
+ };
+ class ForwardVec
+ {
+ type = "vector";
+ source = "forward";
+ pos0[] = {0,0};
+ pos10[] = {0.25,0.25};
+ };
+ class WeaponAim
+ {
+ type = "vector";
+ source = "weapon";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.75,0.75};
+ };
+ class Level0
+ {
+ type = "horizon";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.78,0.78};
+ angle = 0;
+ };
+ class LevelP5: Level0
+ {
+ angle = 5;
+ };
+ class LevelM5: Level0
+ {
+ angle = -5;
+ };
+ class LevelP10: Level0
+ {
+ angle = 10;
+ };
+ class LevelM10: Level0
+ {
+ angle = -10;
+ };
+ class LevelP15: Level0
+ {
+ angle = 15;
+ };
+ class LevelM15: Level0
+ {
+ angle = -15;
+ };
+ class LevelP20: Level0
+ {
+ angle = 20;
+ };
+ class LevelM20: Level0
+ {
+ angle = -20;
+ };
+ class LevelP25: Level0
+ {
+ angle = 25;
+ };
+ class LevelM25: Level0
+ {
+ angle = -25;
+ };
+ class LevelP30: Level0
+ {
+ angle = 30;
+ };
+ class LevelM30: Level0
+ {
+ angle = -30;
+ };
+ class LevelP35: Level0
+ {
+ angle = 35;
+ };
+ class LevelM35: Level0
+ {
+ angle = -35;
+ };
+ class LevelP40: Level0
+ {
+ angle = 40;
+ };
+ class LevelM40: Level0
+ {
+ angle = -40;
+ };
+ class LevelP45: Level0
+ {
+ angle = 45;
+ };
+ class LevelM45: Level0
+ {
+ angle = -45;
+ };
+ class LevelP50: Level0
+ {
+ angle = 50;
+ };
+ class LevelM50: Level0
+ {
+ angle = -50;
+ };
+ };
+ class Draw
+ {
+ color[] = {0.18,1,0.18};
+ alpha = 1;
+ condition = "on";
+ class Horizont
+ {
+ clipTL[] = {0.15,0.15};
+ clipBR[] = {0.85,0.85};
+ class Dimmed
+ {
+ class Level0
+ {
+ type = "line";
+ points[] = {{ "Level0",{ -0.42,0 },1 },{ "Level0",{ -0.38,0 },1 },{ },{ "Level0",{ -0.37,0 },1 },{ "Level0",{ -0.33,0 },1 },{ },{ "Level0",{ -0.32,0 },1 },{ "Level0",{ -0.28,0 },1 },{ },{ "Level0",{ -0.27,0 },1 },{ "Level0",{ -0.23,0 },1 },{ },{ "Level0",{ -0.22,0 },1 },{ "Level0",{ -0.18,0 },1 },{ },{ "Level0",{ -0.17,0 },1 },{ "Level0",{ -0.13,0 },1 },{ },{ "Level0",{ -0.12,0 },1 },{ "Level0",{ -0.08,0 },1 },{ },{ "Level0",{ 0.42,0 },1 },{ "Level0",{ 0.38,0 },1 },{ },{ "Level0",{ 0.37,0 },1 },{ "Level0",{ 0.33,0 },1 },{ },{ "Level0",{ 0.32,0 },1 },{ "Level0",{ 0.28,0 },1 },{ },{ "Level0",{ 0.27,0 },1 },{ "Level0",{ 0.23,0 },1 },{ },{ "Level0",{ 0.22,0 },1 },{ "Level0",{ 0.18,0 },1 },{ },{ "Level0",{ 0.17,0 },1 },{ "Level0",{ 0.13,0 },1 },{ },{ "Level0",{ 0.12,0 },1 },{ "Level0",{ 0.08,0 },1 }};
+ };
+ };
+ };
+ class HorizonBankRot
+ {
+ type = "line";
+ width = 3;
+ points[] = {{ "HorizonBankRot",{ 0,0.25 },1 },{ "HorizonBankRot",{ -0.01,0.23 },1 },{ "HorizonBankRot",{ 0.01,0.23 },1 },{ "HorizonBankRot",{ 0,0.25 },1 }};
+ };
+ class Static_HAD_BOX
+ {
+ clipTL[] = {0,1};
+ clipBR[] = {1,0};
+ type = "line";
+ width = 5;
+ points[] = {{ { "0.5-0.1","0.9-0.04" },1 },{ { "0.5-0.1","0.9+0.04" },1 },{ { "0.5+0.1","0.9+0.04" },1 },{ { "0.5+0.1","0.9-0.04" },1 },{ { "0.5-0.1","0.9-0.04" },1 },{ },{ { "0.5-0.1","0.9-0.04+0.012" },1 },{ { "0.5-0.092","0.9-0.04+0.012" },1 },{ },{ { "0.5+0.1","0.9-0.04+0.012" },1 },{ { "0.5+0.092","0.9-0.04+0.012" },1 },{ },{ { 0.5,"0.9-0.04" },1 },{ { 0.5,"0.9-0.032" },1 },{ },{ { 0.5,"0.9+0.04" },1 },{ { 0.5,"0.9+0.032" },1 },{ }};
+ };
+ class Gunner_HAD
+ {
+ type = "line";
+ width = 6;
+ points[] = {{ "GunnerAim",{ -0.015,-0.008 },1 },{ "GunnerAim",{ -0.015,0.008 },1 },{ "GunnerAim",{ 0.015,0.008 },1 },{ "GunnerAim",{ 0.015,-0.008 },1 },{ "GunnerAim",{ -0.015,-0.008 },1 }};
+ };
+ class Slip_ball_group
+ {
+ class Slip_bars
+ {
+ type = "line";
+ width = 4;
+ points[] = {{ { "0.5-0.018","0.9-0.04" },1 },{ { "0.5-0.018","0.9-0.075" },1 },{ },{ { "0.5+0.018","0.9-0.04" },1 },{ { "0.5+0.018","0.9-0.075" },1 }};
+ };
+ class Slip_ball
+ {
+ type = "line";
+ width = 6;
+ points[] = {{ "Velocity_slip",1,{ "0 * 0.75","-0.02 * 0.75" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.75","-0.01732 * 0.75" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.75","-0.0099999998 * 0.75" },1 },{ "Velocity_slip",1,{ "0.02 * 0.75","0 * 0.75" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.75","0.0099999998 * 0.75" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.75","0.01732 * 0.75" },1 },{ "Velocity_slip",1,{ "0 * 0.75","0.02 * 0.75" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.75","0.01732 * 0.75" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.75","0.0099999998 * 0.75" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.75","0 * 0.75" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.75","-0.0099999998 * 0.75" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.75","-0.01732 * 0.75" },1 },{ "Velocity_slip",1,{ "0 * 0.75","-0.02 * 0.75" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.6","-0.02 * 0.6" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.6","-0.01732 * 0.6" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.6","-0.0099999998 * 0.6" },1 },{ "Velocity_slip",1,{ "0.02 * 0.6","0 * 0.6" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.6","0.0099999998 * 0.6" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.6","0.01732 * 0.6" },1 },{ "Velocity_slip",1,{ "0 * 0.6","0.02 * 0.6" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.6","0.01732 * 0.6" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.6","0.0099999998 * 0.6" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.6","0 * 0.6" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.6","-0.0099999998 * 0.6" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.6","-0.01732 * 0.6" },1 },{ "Velocity_slip",1,{ "0 * 0.6","-0.02 * 0.6" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.5","-0.02 * 0.5" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.5","-0.01732 * 0.5" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.5","-0.0099999998 * 0.5" },1 },{ "Velocity_slip",1,{ "0.02 * 0.5","0 * 0.5" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.5","0.0099999998 * 0.5" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.5","0.01732 * 0.5" },1 },{ "Velocity_slip",1,{ "0 * 0.5","0.02 * 0.5" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.5","0.01732 * 0.5" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.5","0.0099999998 * 0.5" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.5","0 * 0.5" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.5","-0.0099999998 * 0.5" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.5","-0.01732 * 0.5" },1 },{ "Velocity_slip",1,{ "0 * 0.5","-0.02 * 0.5" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.4","-0.02 * 0.4" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.4","-0.01732 * 0.4" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.4","-0.0099999998 * 0.4" },1 },{ "Velocity_slip",1,{ "0.02 * 0.4","0 * 0.4" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.4","0.0099999998 * 0.4" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.4","0.01732 * 0.4" },1 },{ "Velocity_slip",1,{ "0 * 0.4","0.02 * 0.4" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.4","0.01732 * 0.4" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.4","0.0099999998 * 0.4" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.4","0 * 0.4" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.4","-0.0099999998 * 0.4" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.4","-0.01732 * 0.4" },1 },{ "Velocity_slip",1,{ "0 * 0.4","-0.02 * 0.4" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.30","-0.02 * 0.30" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.30","-0.01732 * 0.30" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.30","-0.0099999998 * 0.30" },1 },{ "Velocity_slip",1,{ "0.02 * 0.30","0 * 0.30" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.30","0.0099999998 * 0.30" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.30","0.01732 * 0.30" },1 },{ "Velocity_slip",1,{ "0 * 0.30","0.02 * 0.30" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.30","0.01732 * 0.30" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.30","0.0099999998 * 0.30" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.30","0 * 0.30" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.30","-0.0099999998 * 0.30" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.30","-0.01732 * 0.30" },1 },{ "Velocity_slip",1,{ "0 * 0.30","-0.02 * 0.30" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.20","-0.02 * 0.20" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.20","-0.01732 * 0.20" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.20","-0.0099999998 * 0.20" },1 },{ "Velocity_slip",1,{ "0.02 * 0.20","0 * 0.20" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.20","0.0099999998 * 0.20" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.20","0.01732 * 0.20" },1 },{ "Velocity_slip",1,{ "0 * 0.20","0.02 * 0.20" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.20","0.01732 * 0.20" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.20","0.0099999998 * 0.20" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.20","0 * 0.20" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.20","-0.0099999998 * 0.20" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.20","-0.01732 * 0.20" },1 },{ "Velocity_slip",1,{ "0 * 0.20","-0.02 * 0.20" },1 },{ },{ "Velocity_slip",1,{ "0 * 0.1","-0.02 * 0.1" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.1","-0.01732 * 0.1" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.1","-0.0099999998 * 0.1" },1 },{ "Velocity_slip",1,{ "0.02 * 0.1","0 * 0.1" },1 },{ "Velocity_slip",1,{ "0.01732 * 0.1","0.0099999998 * 0.1" },1 },{ "Velocity_slip",1,{ "0.0099999998 * 0.1","0.01732 * 0.1" },1 },{ "Velocity_slip",1,{ "0 * 0.1","0.02 * 0.1" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.1","0.01732 * 0.1" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.1","0.0099999998 * 0.1" },1 },{ "Velocity_slip",1,{ "-0.02 * 0.1","0 * 0.1" },1 },{ "Velocity_slip",1,{ "-0.01732 * 0.1","-0.0099999998 * 0.1" },1 },{ "Velocity_slip",1,{ "-0.0099999998 * 0.1","-0.01732 * 0.1" },1 },{ "Velocity_slip",1,{ "0 * 0.1","-0.02 * 0.1" },1 }};
+ };
+ };
+ class Centerline
+ {
+ type = "line";
+ width = 5;
+ points[] = {{ { 0.5,0.48 },1 },{ { 0.5,0.45 },1 },{ },{ { 0.5,0.52 },1 },{ { 0.5,0.55 },1 },{ },{ { 0.48,0.5 },1 },{ { 0.45,0.5 },1 },{ },{ { 0.52,0.5 },1 },{ { 0.55,0.5 },1 },{ }};
+ };
+ class WeaponName
+ {
+ type = "text";
+ source = "weapon";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.86 },1};
+ right[] = {{ 0.65,0.86 },1};
+ down[] = {{ 0.61,0.9 },1};
+ };
+ class Ammo_GUN
+ {
+ type = "group";
+ condition = "mgun";
+ class Ammo_count_GUN
+ {
+ type = "text";
+ source = "ammo";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.89 },1};
+ right[] = {{ 0.65,0.89 },1};
+ down[] = {{ 0.61,0.93 },1};
+ };
+ };
+ class Ammo_RKT
+ {
+ type = "group";
+ condition = "rocket";
+ class Ammo_count_RKT
+ {
+ type = "text";
+ source = "ammo";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.89 },1};
+ right[] = {{ 0.65,0.89 },1};
+ down[] = {{ 0.61,0.93 },1};
+ };
+ };
+ class Ammo_AGM
+ {
+ type = "group";
+ condition = "AAmissile";
+ class Ammo_count_AGM
+ {
+ type = "text";
+ source = "ammo";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.89 },1};
+ right[] = {{ 0.65,0.89 },1};
+ down[] = {{ 0.61,0.93 },1};
+ };
+ };
+ class Ammo_AAM
+ {
+ type = "group";
+ condition = "ATmissile";
+ class Ammo_count_AAM
+ {
+ type = "text";
+ source = "ammo";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.89 },1};
+ right[] = {{ 0.65,0.89 },1};
+ down[] = {{ 0.61,0.93 },1};
+ };
+ };
+ class Ammo_Bomb
+ {
+ type = "group";
+ condition = "Bomb";
+ class Ammo_count_Bomb
+ {
+ type = "text";
+ source = "ammo";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.61,0.89 },1};
+ right[] = {{ 0.65,0.89 },1};
+ down[] = {{ 0.61,0.93 },1};
+ };
+ };
+ class LightsGroup
+ {
+ type = "group";
+ condition = "lights";
+ class LightsText
+ {
+ type = "text";
+ source = "static";
+ text = "LIGHTS";
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.03,"0.53 + 0.055" },1};
+ right[] = {{ 0.07,"0.53 + 0.055" },1};
+ down[] = {{ 0.03,"0.53 + 0.095" },1};
+ };
+ };
+ class CollisionLightsGroup
+ {
+ type = "group";
+ condition = "collisionlights";
+ class CollisionLightsText
+ {
+ type = "text";
+ source = "static";
+ text = "A-COL";
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.03,"0.53 + 0.105" },1};
+ right[] = {{ 0.07,"0.53 + 0.105" },1};
+ down[] = {{ 0.03,"0.53 + 0.145" },1};
+ };
+ };
+ class GearGroup
+ {
+ type = "group";
+ condition = "ils";
+ class GearText
+ {
+ type = "text";
+ source = "static";
+ text = "GEAR";
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.03,"0.53 + 0.155" },1};
+ right[] = {{ 0.07,"0.53 + 0.155" },1};
+ down[] = {{ 0.03,"0.53 + 0.195" },1};
+ };
+ };
+ class ATMissileTOFGroup
+ {
+ condition = "ATmissile";
+ type = "group";
+ class TOFtext
+ {
+ type = "text";
+ align = "right";
+ source = "static";
+ text = "TOF=";
+ scale = 1;
+ pos[] = {{ 0.61,0.92 },1};
+ right[] = {{ 0.65,0.92 },1};
+ down[] = {{ 0.61,0.96 },1};
+ };
+ class TOFnumber
+ {
+ type = "text";
+ source = "targetDist";
+ sourcescale = 0.0025;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.69,0.92 },1};
+ right[] = {{ 0.73,0.92 },1};
+ down[] = {{ 0.69,0.96 },1};
+ };
+ };
+ class LaserTOFGroup
+ {
+ condition = "Bomb";
+ type = "group";
+ class TOFtext
+ {
+ type = "text";
+ align = "right";
+ source = "static";
+ text = "TOF=";
+ scale = 1;
+ pos[] = {{ 0.61,0.92 },1};
+ right[] = {{ 0.65,0.92 },1};
+ down[] = {{ 0.61,0.96 },1};
+ };
+ class TOFnumber
+ {
+ type = "text";
+ source = "targetDist";
+ sourcescale = 0.0025;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.69,0.92 },1};
+ right[] = {{ 0.73,0.92 },1};
+ down[] = {{ 0.69,0.96 },1};
+ };
+ };
+ class RocketTOFGroup
+ {
+ condition = "Rocket";
+ type = "group";
+ class TOFtext
+ {
+ type = "text";
+ align = "right";
+ source = "static";
+ text = "TOF=";
+ scale = 1;
+ pos[] = {{ 0.61,0.92 },1};
+ right[] = {{ 0.65,0.92 },1};
+ down[] = {{ 0.61,0.96 },1};
+ };
+ class TOFnumber
+ {
+ type = "text";
+ source = "targetDist";
+ sourcescale = 0.0025;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.69,0.92 },1};
+ right[] = {{ 0.73,0.92 },1};
+ down[] = {{ 0.69,0.96 },1};
+ };
+ };
+ class RangeNumber
+ {
+ type = "text";
+ source = "targetDist";
+ sourceScale = 1;
+ align = "left";
+ scale = 1;
+ pos[] = {{ 0.39,0.89 },1};
+ right[] = {{ 0.43,0.89 },1};
+ down[] = {{ 0.39,0.93 },1};
+ };
+ class RangeText
+ {
+ type = "text";
+ source = "static";
+ text = "RNG";
+ align = "left";
+ scale = 1;
+ pos[] = {{ 0.39,0.86 },1};
+ right[] = {{ 0.43,0.86 },1};
+ down[] = {{ 0.39,0.9 },1};
+ };
+ class SpeedNumber
+ {
+ type = "text";
+ align = "right";
+ scale = 1;
+ source = "speed";
+ sourceScale = 3.6;
+ pos[] = {{ 0.03,0.475 },1};
+ right[] = {{ 0.08,0.475 },1};
+ down[] = {{ 0.03,0.525 },1};
+ };
+ class TorqueNumber
+ {
+ condition = "simulRTD";
+ class Torque_number
+ {
+ type = "text";
+ align = "left";
+ scale = 1;
+ source = "rtdRotorTorque";
+ sourceScale = 290;
+ pos[] = {{ 0.065,0.175 },1};
+ right[] = {{ 0.115,0.175 },1};
+ down[] = {{ 0.065,0.225 },1};
+ };
+ class Torquetext
+ {
+ type = "text";
+ source = "static";
+ text = "%";
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.07,0.175 },1};
+ right[] = {{ 0.12,0.175 },1};
+ down[] = {{ 0.07,0.225 },1};
+ };
+ };
+ class AltNumber: SpeedNumber
+ {
+ align = "right";
+ source = "altitudeAGL";
+ sourceScale = 1;
+ pos[] = {{ 0.83,0.475 },1};
+ right[] = {{ 0.88,0.475 },1};
+ down[] = {{ 0.83,0.525 },1};
+ };
+ class ASLNumber
+ {
+ type = "text";
+ source = "altitudeASL";
+ sourceScale = 1;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.835,0.18 },1};
+ right[] = {{ 0.875,0.18 },1};
+ down[] = {{ 0.835,0.22 },1};
+ };
+ class VspeedScalePosta
+ {
+ type = "line";
+ width = 5;
+ points[] = {{ { 0.98,0.2 },1 },{ { 1,0.2 },1 },{ },{ { 0.93,0.2 },1 },{ { 0.95,0.2 },1 },{ },{ { 0.98,0.35 },1 },{ { 1,0.35 },1 },{ },{ { 0.93,0.35 },1 },{ { 0.95,0.35 },1 },{ },{ { 0.94,0.38 },1 },{ { 0.95,0.38 },1 },{ },{ { 0.94,0.41 },1 },{ { 0.95,0.41 },1 },{ },{ { 0.94,0.44 },1 },{ { 0.95,0.44 },1 },{ },{ { 0.94,0.47 },1 },{ { 0.95,0.47 },1 },{ },{ { 0.98,0.5 },1 },{ { 1,0.5 },1 },{ },{ { 0.93,0.5 },1 },{ { 0.95,0.5 },1 },{ },{ { 0.94,0.53 },1 },{ { 0.95,0.53 },1 },{ },{ { 0.94,0.56 },1 },{ { 0.95,0.56 },1 },{ },{ { 0.94,0.59 },1 },{ { 0.95,0.59 },1 },{ },{ { 0.94,0.62 },1 },{ { 0.95,0.62 },1 },{ },{ { 0.98,0.65 },1 },{ { 1,0.65 },1 },{ },{ { 0.93,0.65 },1 },{ { 0.95,0.65 },1 },{ },{ { 0.99,0.68 },1 },{ { 0.98,0.68 },1 },{ },{ { 0.99,0.71 },1 },{ { 0.98,0.71 },1 },{ },{ { 0.99,0.74 },1 },{ { 0.98,0.74 },1 },{ },{ { 0.99,0.77 },1 },{ { 0.98,0.77 },1 },{ },{ { 0.98,0.8 },1 },{ { 1,0.8 },1 },{ },{ { 0.93,0.8 },1 },{ { 0.95,0.8 },1 },{ }};
+ };
+ class RadarAltitudeBand
+ {
+ clipTL[] = {0,0.2};
+ clipBR[] = {1,0.8};
+ hideValue = 201;
+ class radarbanda
+ {
+ type = "line";
+ width = 17;
+ points[] = {{ "RadarAltitudeBone",{ 0,0 },1 },{ "RadarAltitudeBone",{ 0,0.6 },1 }};
+ };
+ };
+ class VspeedBand
+ {
+ type = "line";
+ width = 3;
+ points[] = {{ "VspeedBone",{ -0.01,0 },1 },{ "VspeedBone",{ -0.025,-0.015 },1 },{ "VspeedBone",{ -0.025,0.015 },1 },{ "VspeedBone",{ -0.01,0 },1 },{ }};
+ };
+ class HeadingNumber: SpeedNumber
+ {
+ source = "heading";
+ sourceScale = 1;
+ align = "center";
+ pos[] = {{ 0.5,0.045 },1};
+ right[] = {{ 0.56,0.045 },1};
+ down[] = {{ 0.5,"0.045 + 0.06" },1};
+ };
+ class Center_box
+ {
+ type = "line";
+ width = 1.5;
+ points[] = {{ { 0.45,"0.02 + 0.085 - 0.06" },1 },{ { "0.45 + 0.10","0.02 + 0.085 - 0.06" },1 },{ { "0.45 + 0.10","0.02 + 0.085" },1 },{ { 0.45,"0.02 + 0.085" },1 },{ { 0.45,"0.02 + 0.085 - 0.06" },1 }};
+ };
+ class HeadingArrow
+ {
+ type = "line";
+ width = 7;
+ points[] = {{ { "0.5","0.128 + 0.03" },1 },{ { 0.5,0.128 },1 }};
+ };
+ class HeadingScale_LEFT
+ {
+ clipTL[] = {0,0};
+ clipBR[] = {0.45,1};
+ class Heading_group
+ {
+ type = "scale";
+ horizontal = 1;
+ source = "heading";
+ sourceScale = 1;
+ width = 5;
+ top = 0.12;
+ center = 0.5;
+ bottom = 0.88;
+ lineXleft = "0.03 + 0.085";
+ lineYright = "0.02 + 0.085";
+ lineXleftMajor = "0.04 + 0.085";
+ lineYrightMajor = "0.02 + 0.085";
+ majorLineEach = 3;
+ numberEach = 3;
+ step = 10;
+ stepSize = "0.05";
+ align = "center";
+ scale = 1;
+ pos[] = {0.12,"0.0 + 0.065"};
+ right[] = {0.16,"0.0 + 0.065"};
+ down[] = {0.12,"0.04 + 0.065"};
+ };
+ };
+ class HeadingScale_RIGHT
+ {
+ clipTL[] = {0.55,0};
+ clipBR[] = {1,1};
+ class Heading_group
+ {
+ type = "scale";
+ horizontal = 1;
+ source = "heading";
+ sourceScale = 1;
+ width = 5;
+ top = 0.12;
+ center = 0.5;
+ bottom = 0.88;
+ lineXleft = "0.03 + 0.085";
+ lineYright = "0.02 + 0.085";
+ lineXleftMajor = "0.04 + 0.085";
+ lineYrightMajor = "0.02 + 0.085";
+ majorLineEach = 3;
+ numberEach = 3;
+ step = 10;
+ stepSize = "0.05";
+ align = "center";
+ scale = 1;
+ pos[] = {0.12,"0.0 + 0.065"};
+ right[] = {0.16,"0.0 + 0.065"};
+ down[] = {0.12,"0.04 + 0.065"};
+ };
+ };
+ class HeadingScale_BOTTOM
+ {
+ clipTL[] = {0.45,"0.02 + 0.085"};
+ clipBR[] = {"0.45 + 0.10",1};
+ class Heading_group
+ {
+ type = "scale";
+ horizontal = 1;
+ source = "heading";
+ sourceScale = 1;
+ width = 5;
+ top = 0.12;
+ center = 0.5;
+ bottom = 0.88;
+ lineXleft = "0.03 + 0.085";
+ lineYright = "0.02 + 0.085";
+ lineXleftMajor = "0.04 + 0.085";
+ lineYrightMajor = "0.02 + 0.085";
+ majorLineEach = 3;
+ numberEach = 3;
+ step = 10;
+ stepSize = "0.05";
+ align = "center";
+ scale = 1;
+ pos[] = {0.12,"0.0 + 0.065"};
+ right[] = {0.16,"0.0 + 0.065"};
+ down[] = {0.12,"0.04 + 0.065"};
+ };
+ };
+ class Fuel_Text
+ {
+ type = "text";
+ source = "static";
+ text = "Fuel";
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.03,0.9 },1};
+ right[] = {{ 0.07,0.9 },1};
+ down[] = {{ 0.03,0.94 },1};
+ };
+ class Fuel_Number
+ {
+ type = "text";
+ source = "fuel";
+ sourceScale = 100;
+ align = "right";
+ scale = 1;
+ pos[] = {{ 0.1,0.9 },1};
+ right[] = {{ 0.14,0.9 },1};
+ down[] = {{ 0.1,0.94 },1};
+ };
+ };
+ helmetMountedDisplay = 1;
+ helmetPosition[] = {-0.04,0.04,0.1};
+ helmetRight[] = {0.08,0,0};
+ helmetDown[] = {0,-0.08,0};
+ };
+ class ACE_HUD_2
+ {
+ topLeft = "HUD_top_left";
+ topRight = "HUD_top_right";
+ bottomLeft = "HUD_bottom_left";
+ borderLeft = 0;
+ borderRight = 0;
+ borderTop = 0;
+ borderBottom = 0;
+ color[] = {0.15,1,0.15,1};
+ enableParallax = 0;
+ class Bones
+ {
+ class Velocity
+ {
+ type = "vector";
+ source = "velocity";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.75,0.75};
+ };
+ class ForwardVec1
+ {
+ type = "vector";
+ source = "forward";
+ pos0[] = {0,0};
+ pos10[] = {0.25,0.25};
+ };
+ class ForwardVec
+ {
+ type = "vector";
+ source = "forward";
+ pos0[] = {0,0};
+ pos10[] = {0.253,0.253};
+ };
+ class WeaponAim
+ {
+ type = "vector";
+ source = "weapon";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.753,0.753};
+ };
+ class WeaponAim1
+ {
+ type = "vector";
+ source = "weapon";
+ pos0[] = {0,0};
+ pos10[] = {0.253,0.23};
+ };
+ class Target
+ {
+ type = "vector";
+ source = "target";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.753,0.753};
+ };
+ class RadarContact
+ {
+ type = "fixed";
+ pos[] = {0,0};
+ };
+ };
+ class Draw
+ {
+ color[] = {0.18,1,0.18};
+ alpha = 1;
+ condition = "on";
+ class PlaneMovementCrosshair
+ {
+ type = "line";
+ width = 7;
+ points[] = {{ "ForwardVec1",1,"Velocity",1,{ 0,-0.02 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.01,-0.01732 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.01732,-0.01 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.02,0 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.01732,0.01 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.01,0.01732 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0,0.02 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.01,0.01732 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.01732,0.01 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.02,0 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.01732,-0.01 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.01,-0.01732 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0,-0.02 },1 },{ },{ "ForwardVec1",1,"Velocity",1,{ 0.04,0 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0.02,0 },1 },{ },{ "ForwardVec1",1,"Velocity",1,{ -0.04,0 },1 },{ "ForwardVec1",1,"Velocity",1,{ -0.02,0 },1 },{ },{ "ForwardVec1",1,"Velocity",1,{ 0,-0.04 },1 },{ "ForwardVec1",1,"Velocity",1,{ 0,-0.02 },1 }};
+ };
+ class Gunner_AIM
+ {
+ type = "group";
+ class Circle
+ {
+ type = "line";
+ width = 6;
+ points[] = {{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.015 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.03 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.0325 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.0475 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.015 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.03 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.0325 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.0475 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ -0.015,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ -0.03,0 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ -0.0325,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ -0.0475,0 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0.015,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.03,0 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0.0325,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.0475,0 },1 }};
+ };
+ };
+ class GunCross
+ {
+ condition = "mgun";
+ class Circle
+ {
+ type = "line";
+ width = 9;
+ points[] = {{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.05 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.015 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.015 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.05 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ -0.05,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ -0.015,0 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0.015,0 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.05,0 },1 },{ }};
+ };
+ };
+ class RocketCross
+ {
+ condition = "rocket";
+ width = 6;
+ class Circle
+ {
+ type = "line";
+ width = 6;
+ points[] = {{ "ForwardVec",1,"WeaponAim",1,{ -0.05,-0.08 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.05,-0.08 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ 0,-0.08 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0,0.08 },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ -0.05,0.08 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.05,0.08 },1 },{ }};
+ };
+ };
+ class AT_Aim
+ {
+ condition = "ATmissile";
+ width = 2;
+ class Circle
+ {
+ type = "line";
+ width = 2;
+ points[] = {{ "ForwardVec",1,"WeaponAim",1,{ -0.1,-0.1 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.1,-0.1 },1 },{ "ForwardVec",1,"WeaponAim",1,{ 0.1,0.1 },1 },{ "ForwardVec",1,"WeaponAim",1,{ -0.1,0.1 },1 },{ "ForwardVec",1,"WeaponAim",1,{ -0.1,-0.1 },1 }};
+ };
+ };
+ class AA_aim
+ {
+ condition = "AAmissile";
+ class Circle
+ {
+ type = "line";
+ width = 2.5;
+ points[] = {{ "ForwardVec",1,"WeaponAim",1,{ "0 / 4","-0.248559 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0434 / 4","-0.244781 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0855 / 4","-0.233571 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.125 / 4","-0.215252 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1607 / 4","-0.190396 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1915 / 4","-0.159774 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2165 / 4","-0.12428 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.234925 / 4","-0.0850072 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2462 / 4","-0.0431499 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.25 / 4","0 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2462 / 4","0.0431499 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.234925 / 4","0.0850072 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2165 / 4","0.12428 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1915 / 4","0.159774 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1607 / 4","0.190396 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.125 / 4","0.215252 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0855 / 4","0.233571 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0434 / 4","0.244781 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0 / 4","0.248559 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0434 / 4","0.244781 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0855 / 4","0.233571 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.125 / 4","0.215252 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1607 / 4","0.190396 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1915 / 4","0.159774 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2165 / 4","0.12428 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.234925 / 4","0.0850072 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2462 / 4","0.0431499 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.25 / 4","0 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2462 / 4","-0.0431499 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.234925 / 4","-0.0850072 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2165 / 4","-0.12428 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1915 / 4","-0.159774 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1607 / 4","-0.190396 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.125 / 4","-0.215252 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0855 / 4","-0.233571 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0434 / 4","-0.244781 / 4" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0 / 4","-0.248559 / 4" },1 },{ },{ "ForwardVec",1,"WeaponAim",1,{ "0 / 2","-0.248559 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0434 / 2","-0.244781 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0855 / 2","-0.233571 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.125 / 2","-0.215252 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1607 / 2","-0.190396 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1915 / 2","-0.159774 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2165 / 2","-0.12428 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.234925 / 2","-0.0850072 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2462 / 2","-0.0431499 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.25 / 2","0 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2462 / 2","0.0431499 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.234925 / 2","0.0850072 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.2165 / 2","0.12428 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1915 / 2","0.159774 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.1607 / 2","0.190396 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.125 / 2","0.215252 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0855 / 2","0.233571 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0.0434 / 2","0.244781 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0 / 2","0.248559 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0434 / 2","0.244781 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0855 / 2","0.233571 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.125 / 2","0.215252 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1607 / 2","0.190396 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1915 / 2","0.159774 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2165 / 2","0.12428 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.234925 / 2","0.0850072 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2462 / 2","0.0431499 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.25 / 2","0 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2462 / 2","-0.0431499 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.234925 / 2","-0.0850072 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.2165 / 2","-0.12428 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1915 / 2","-0.159774 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.1607 / 2","-0.190396 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.125 / 2","-0.215252 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0855 / 2","-0.233571 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "-0.0434 / 2","-0.244781 / 2" },1 },{ "ForwardVec",1,"WeaponAim",1,{ "0 / 2","-0.248559 / 2" },1 }};
+ };
+ };
+ class TargetACQ
+ {
+ type = "line";
+ width = 2;
+ points[] = {{ "ForwardVec",1,"target",{ 0,-0.06 },1 },{ "ForwardVec",1,"target",{ 0,-0.055 },1 },{ },{ "ForwardVec",1,"target",{ 0,-0.05 },1 },{ "ForwardVec",1,"target",{ 0,-0.045 },1 },{ },{ "ForwardVec",1,"target",{ 0,-0.04 },1 },{ "ForwardVec",1,"target",{ 0,-0.035 },1 },{ },{ "ForwardVec",1,"target",{ 0,-0.03 },1 },{ "ForwardVec",1,"target",{ 0,-0.025 },1 },{ },{ "ForwardVec",1,"target",{ 0,-0.02 },1 },{ "ForwardVec",1,"target",{ 0,-0.015 },1 },{ },{ "ForwardVec",1,"target",{ 0,-0.01 },1 },{ "ForwardVec",1,"target",{ 0,-0.005 },1 },{ },{ "ForwardVec",1,"target",{ 0,0 },1 },{ "ForwardVec",1,"target",{ 0,0 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.06 },1 },{ "ForwardVec",1,"target",{ 0,0.055 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.05 },1 },{ "ForwardVec",1,"target",{ 0,0.045 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.04 },1 },{ "ForwardVec",1,"target",{ 0,0.035 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.03 },1 },{ "ForwardVec",1,"target",{ 0,0.025 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.02 },1 },{ "ForwardVec",1,"target",{ 0,0.015 },1 },{ },{ "ForwardVec",1,"target",{ 0,0.01 },1 },{ "ForwardVec",1,"target",{ 0,0.005 },1 },{ },{ "ForwardVec",1,"target",{ -0.06,0 },1 },{ "ForwardVec",1,"target",{ -0.055,0 },1 },{ },{ "ForwardVec",1,"target",{ -0.05,0 },1 },{ "ForwardVec",1,"target",{ -0.045,0 },1 },{ },{ "ForwardVec",1,"target",{ -0.04,0 },1 },{ "ForwardVec",1,"target",{ -0.035,0 },1 },{ },{ "ForwardVec",1,"target",{ -0.03,0 },1 },{ "ForwardVec",1,"target",{ -0.025,0 },1 },{ },{ "ForwardVec",1,"target",{ -0.02,0 },1 },{ "ForwardVec",1,"target",{ -0.015,0 },1 },{ },{ "ForwardVec",1,"target",{ -0.01,0 },1 },{ "ForwardVec",1,"target",{ -0.005,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.06,0 },1 },{ "ForwardVec",1,"target",{ 0.055,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.05,0 },1 },{ "ForwardVec",1,"target",{ 0.045,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.04,0 },1 },{ "ForwardVec",1,"target",{ 0.035,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.03,0 },1 },{ "ForwardVec",1,"target",{ 0.025,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.02,0 },1 },{ "ForwardVec",1,"target",{ 0.015,0 },1 },{ },{ "ForwardVec",1,"target",{ 0.01,0 },1 },{ "ForwardVec",1,"target",{ 0.005,0 },1 },{ }};
+ };
+ class RadarTargets
+ {
+ type = "radar";
+ pos0[] = {0.5,0.5};
+ pos10[] = {0.753,0.753};
+ width = 2.5;
+ points[] = {{ "ForwardVec",1,"RadarContact",{ -0.01,-0.01 },1 },{ "ForwardVec",1,"RadarContact",{ 0.01,-0.01 },1 },{ "ForwardVec",1,"RadarContact",{ 0.01,0.01 },1 },{ "ForwardVec",1,"RadarContact",{ -0.01,0.01 },1 },{ "ForwardVec",1,"RadarContact",{ -0.01,-0.01 },1 }};
+ };
+ };
+ helmetMountedDisplay = 1;
+ helmetPosition[] = {-0.035,0.035,0.1};
+ helmetRight[] = {0.07,0,0};
+ helmetDown[] = {0,-0.07,0};
+ };
+ };
+
+ class Turrets: Turrets {
+ class MainTurret: MainTurret {
+ weapons[] = {"ACE_gatling_20mm_Comanche","missiles_DAGR","missiles_ASRAAM", "ACE_AIR_SAFETY"};
+ magazines[] = {"ACE_500Rnd_20mm_shells_Comanche","4Rnd_AAA_missiles","24Rnd_PG_missiles"};
+
+ outGunnerMayFire = 1;
+ commanding = -1;
+ primaryGunner = 1;
+ gunnerOpticsModel = "";
+ gunnerOpticsEffect[] = {"TankCommanderOptics1"};
+ gunnerForceOptics = 0;
+ turretInfoType = "Rsc_ACE_Helo_UI_Turret";
+ showAllTargets = 2;
+ discretedistance[] = {100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000};
+ discretedistanceinitindex = 3;
+ copilotHasFlares = 1;
+ directionStabilized = 1;
+ isCopilot = 1;
+ showHMD = 1;
+ CanEject = 1;
+ startEngine = 0;
+ minElev = -51;
+ maxElev = 9;
+ initElev = 6;
+ minTurn = -120;
+ maxTurn = 120;
+ initTurn = 0;
+
+ class OpticsIn
+ {
+ class Wide
+ {
+ opticsDisplayName = "W";
+ initAngleX = 0;
+ minAngleX = -35;
+ maxAngleX = 10;
+ initAngleY = 0;
+ minAngleY = -100;
+ maxAngleY = 100;
+ initFov = 0.466;
+ minFov = 0.466;
+ maxFov = 0.466;
+ visionMode[] = {"Normal","NVG","Ti"};
+ thermalMode[] = {0,1};
+ gunnerOpticsColor[] = {0,0,0,1};
+ directionStabilized = 1;
+ horizontallyStabilized = 1;
+ gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
+ };
+ class Medium: Wide
+ {
+ opticsDisplayName = "M";
+ initFov = 0.093;
+ minFov = 0.093;
+ maxFov = 0.093;
+ gunnerOpticsColor[] = {0,0,0,1};
+ directionStabilized = 1;
+ horizontallyStabilized = 1;
+ gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
+ };
+ class Narrow: Wide
+ {
+ opticsDisplayName = "N";
+ initFov = 0.029;
+ minFov = 0.029;
+ maxFov = 0.029;
+ gunnerOpticsColor[] = {0,0,0,1};
+ directionStabilized = 1;
+ horizontallyStabilized = 1;
+ gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
+
+ };
+ class Narrower: Wide
+ {
+ opticsDisplayName = "Z";
+ initFov = 0.01;
+ minFov = 0.01;
+ maxFov = 0.01;
+ gunnerOpticsColor[] = {0,0,0,1};
+ directionStabilized = 1;
+ horizontallyStabilized = 1;
+ gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
+
+ };
+ };
+ class OpticsOut
+ {
+ class Monocular
+ {
+ initAngleX = 0;
+ minAngleX = -30;
+ maxAngleX = 30;
+ initAngleY = 0;
+ minAngleY = -100;
+ maxAngleY = 100;
+ initFov = 1.1;
+ minFov = 0.133;
+ maxFov = 1.1;
+ visionMode[] = {"Normal","NVG"};
+ gunnerOpticsModel = "";
+ gunnerOpticsEffect[] = {};
+ hideUnitInfo = 1;
+ };
+ };
+ };
+ };
+
+ class AnimationSources: AnimationSources {
+ class Gatling {
+ weapon = "ACE_gatling_20mm_Comanche";
+ };
+ class Muzzle_flash {
+ weapon = "ACE_gatling_20mm_Comanche";
+ };
+ };
+};
\ No newline at end of file
diff --git a/addons/aircraft/README.md b/addons/aircraft/README.md
index b212d311b9..1049493f45 100644
--- a/addons/aircraft/README.md
+++ b/addons/aircraft/README.md
@@ -3,6 +3,7 @@ ace_aircraft
Changes to air weaponry, flightmodels and HUDs.
+* Contributations by Kimi (geraldbolso1899) for HUD updates
## Maintainers
@@ -10,3 +11,4 @@ The people responsible for merging changes to this component or answering potent
- [KoffeinFlummi](https://github.com/KoffeinFlummi)
- [commy2](https://github.com/commy2)
+- [jaynus](https://github.com/walterpearce)
\ No newline at end of file
diff --git a/addons/aircraft/RscInGameUI.hpp b/addons/aircraft/RscInGameUI.hpp
new file mode 100644
index 0000000000..620d895d9e
--- /dev/null
+++ b/addons/aircraft/RscInGameUI.hpp
@@ -0,0 +1,581 @@
+class RscControlsGroup;
+class RscText;
+class RangeText: RscText{};
+class RscPicture;
+class RscOpticsText;
+class RscIGProgress;
+class RscOpticsValue;
+class VScrollbar;
+class HScrollbar;
+class RscLadderPicture;
+class RscControlsGroupNoScrollbars;
+
+
+class RscInGameUI
+{
+ class RscUnitInfo;
+ class Rsc_ACE_Helo_UI_Turret: RscUnitInfo
+ {
+ idd = 300;
+ controls[] = {"CA_IGUI_elements_group","CA_VehicleToggles"};
+ class VScrollbar;
+ class HScrollbar;
+ class CA_IGUI_elements_group: RscControlsGroup
+ {
+ idc = 170;
+ class VScrollbar: VScrollbar
+ {
+ width = 0;
+ };
+ class HScrollbar: HScrollbar
+ {
+ height = 0;
+ };
+ x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+ y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
+ w = "53.5 * (0.01875 * SafezoneH)";
+ h = "40 * (0.025 * SafezoneH)";
+ class controls
+ {
+ class CA_Distance: RscText
+ {
+ idc = 151;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ x = "24.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_Speed: RangeText
+ {
+ idc = 188;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "120";
+ x = "14.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_Alt: RangeText
+ {
+ idc = 189;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "3825";
+ x = "34.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_VisionMode: RscText
+ {
+ idc = 152;
+ style = 0;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "VIS";
+ x = "12.58 * (0.01875 * SafezoneH)";
+ y = "8 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_FlirMode: RscText
+ {
+ idc = 153;
+ style = 0;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "BHOT";
+ x = "15.78 * (0.01875 * SafezoneH)";
+ y = "8 * (0.025 * SafezoneH)";
+ w = "4.5 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class ValueGrid: RangeText
+ {
+ idc = 172;
+ font = "EtelkaMonospacePro";
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "12.20 * (0.01875 * SafezoneH)";
+ y = "3.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class TextTADS: RangeText
+ {
+ idc = 1010;
+ text = "TADS";
+ font = "EtelkaMonospacePro";
+ style = 2;
+ shadow = 0;
+ x = "12.30 * (0.01875 * SafezoneH)";
+ y = "5 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class ValueTime: RangeText
+ {
+ idc = 190;
+ text = "20:28:35";
+ font = "EtelkaMonospacePro";
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "12.1 * (0.01875 * SafezoneH)";
+ y = "6.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class CA_Laser: RscText
+ {
+ idc = 158;
+ style = "0x30 + 0x800";
+ sizeEx = "0.038*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = PATHTOF(data\Helo_LaserON.paa);
+ x = "20.45 * (0.01875 * SafezoneH)";
+ y = "14.1 * (0.025 * SafezoneH)";
+ w = "12.5 * (0.01875 * SafezoneH)";
+ h = "12 * (0.025 * SafezoneH)";
+ };
+ class CA_Heading: RscText
+ {
+ idc = 156;
+ style = 0;
+ sizeEx = "0.038*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "023";
+ x = "24.83 * (0.01875 * SafezoneH)";
+ y = "6 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ };
+ };
+ };
+ class Rsc_ACE_Helo_UI_01: RscUnitInfo
+ {
+ controls[] = {"WeaponInfoControlsGroupRight","CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
+ };
+ class Rsc_ACE_Helo_UI_02: RscUnitInfo
+ {
+ controls[] = {"CA_TextFlaresMode","CA_TextFlares","CA_VehicleToggles","CA_Radar"};
+ };
+ class Rsc_ACE_Drones_UI_Turret: RscUnitInfo
+ {
+ idd = 300;
+ controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
+ class CA_IGUI_elements_group: RscControlsGroup
+ {
+ idc = 170;
+ class VScrollbar: VScrollbar
+ {
+ width = 0;
+ };
+ class HScrollbar: HScrollbar
+ {
+ height = 0;
+ };
+ x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+ y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
+ w = "53.5 * (0.01875 * SafezoneH)";
+ h = "40 * (0.025 * SafezoneH)";
+ class controls
+ {
+ class CA_Distance: RscText
+ {
+ idc = 151;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ x = "24.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_Speed: RangeText
+ {
+ idc = 188;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "120";
+ x = "14.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class CA_Alt: RangeText
+ {
+ idc = 189;
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "3825";
+ x = "34.78 * (0.01875 * SafezoneH)";
+ y = "30.88 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class ValueTime: RangeText
+ {
+ idc = 190;
+ text = "20:28:35";
+ font = "EtelkaMonospacePro";
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "1.75 * (0.01875 * SafezoneH)";
+ y = "10.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class CA_VisionMode: RscText
+ {
+ idc = 152;
+ style = 0;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "VIS";
+ align = "right";
+ x = "2.6 * (0.01875 * SafezoneH)";
+ y = "12.0 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.0 * (0.025 * SafezoneH)";
+ };
+ class CA_FlirMode: RscText
+ {
+ idc = 153;
+ style = 0;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "BHOT";
+ align = "right";
+ x = "6.18 * (0.01875 * SafezoneH)";
+ y = "12.0 * (0.025 * SafezoneH)";
+ w = "4.5 * (0.01875 * SafezoneH)";
+ h = "1.0 * (0.025 * SafezoneH)";
+ };
+ class TgT_Grid_text: RangeText
+ {
+ idc = 1005;
+ text = "TGT:";
+ font = "EtelkaMonospacePro";
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "1.20 * (0.01875 * SafezoneH)";
+ y = "13.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class TGT_ValueGrid: RangeText
+ {
+ idc = 172;
+ font = "EtelkaMonospacePro";
+ colorText[] = {0.706,0.0745,0.0196,0.8};
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "5.20 * (0.01875 * SafezoneH)";
+ y = "13.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class OWN_Grid_text: RangeText
+ {
+ idc = 1005;
+ text = "OWN:";
+ font = "EtelkaMonospacePro";
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "1.20 * (0.01875 * SafezoneH)";
+ y = "15 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class OWN_ValueGrid: RangeText
+ {
+ idc = 171;
+ font = "EtelkaMonospacePro";
+ colorText[] = {0.15,1,0.15,0.8};
+ style = 2;
+ sizeEx = "0.0295*SafezoneH";
+ shadow = 0;
+ x = "5.20 * (0.01875 * SafezoneH)";
+ y = "15 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class CA_Laser: RscText
+ {
+ idc = 158;
+ style = "0x30 + 0x800";
+ sizeEx = "0.038*SafezoneH";
+ shadow = 0;
+ align = "right";
+ font = "EtelkaMonospacePro";
+ text = PATHTOF(data\Helo_LaserON.paa);
+ x = "20.45 * (0.01875 * SafezoneH)";
+ y = "14.1 * (0.025 * SafezoneH)";
+ w = "12.5 * (0.01875 * SafezoneH)";
+ h = "12 * (0.025 * SafezoneH)";
+ };
+ class CA_Heading: RscText
+ {
+ idc = 156;
+ style = 0;
+ sizeEx = "0.038*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ text = "023";
+ align = "right";
+ x = "25 * (0.01875 * SafezoneH)";
+ y = "5 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ };
+ };
+ };
+ class Rsc_ACE_Drones_UI_Pilots: RscUnitInfo
+ {
+ idd = 300;
+ controls[] = {"WeaponInfoControlsGroupRight","CA_BackgroundVehicle","CA_BackgroundVehicleTitle","CA_BackgroundVehicleTitleDark","CA_BackgroundFuel","CA_Vehicle","CA_VehicleRole","CA_HitZones","CA_SpeedBackground","CA_SpeedUnits","CA_Speed","CA_ValueFuel","CA_AltBackground","CA_AltUnits","CA_Alt","CA_VehicleToggles","CA_Radar","DriverOpticsGroup"};
+ class DriverOpticsGroup: RscControlsGroup
+ {
+ idc = 392;
+ class VScrollbar: VScrollbar
+ {
+ width = 0;
+ };
+ class HScrollbar: HScrollbar
+ {
+ height = 0;
+ };
+ x = "0 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+ y = "0 * (0.025 * SafezoneH) + (SafezoneY)";
+ w = "53.5 * (0.01875 * SafezoneH)";
+ h = "40 * (0.025 * SafezoneH)";
+ class controls
+ {
+ class TextGrid: RscText
+ {
+ style = 0;
+ sizeEx = "0.02*SafezoneH";
+ shadow = 0;
+ font = "EtelkaMonospacePro";
+ idc = 1005;
+ text = "GRID:";
+ x = "5.8 * (0.01875 * SafezoneH)";
+ y = "31.8 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class ValueGrid: TextGrid
+ {
+ idc = 189;
+ text = "382546";
+ x = "10.3 * (0.01875 * SafezoneH)";
+ y = "31.8 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class TextTime: TextGrid
+ {
+ idc = 1010;
+ text = "TIME [UTC]:";
+ x = "5.8 * (0.01875 * SafezoneH)";
+ y = "32.6 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class ValueTime: TextGrid
+ {
+ idc = 101;
+ text = "20:28:35";
+ x = "10 * (0.01875 * SafezoneH)";
+ y = "32.6 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class TextMag: TextGrid
+ {
+ idc = 1011;
+ text = "CAM MAG:";
+ x = "5.8 * (0.01875 * SafezoneH)";
+ y = "7 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class OpticsZoom: TextGrid
+ {
+ idc = 192;
+ text = "28x";
+ x = "10.3 * (0.01875 * SafezoneH)";
+ y = "7 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class BorderLineSpdTop: RscPicture
+ {
+ idc = 1203;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
+ x = "3.343 * (0.01875 * SafezoneH)";
+ y = "12.4 * (0.025 * SafezoneH)";
+ w = "3 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class BorderLineSpdBottom: RscPicture
+ {
+ idc = 1207;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
+ x = "3.343 * (0.01875 * SafezoneH)";
+ y = "26.5 * (0.025 * SafezoneH)";
+ w = "3 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class BorderLineAltTop: RscPicture
+ {
+ idc = 1205;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
+ x = "47.16 * (0.01875 * SafezoneH)";
+ y = "12.4 * (0.025 * SafezoneH)";
+ w = "3 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class BorderLineAltBottom: RscPicture
+ {
+ idc = 1206;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\border_line_ca.paa";
+ x = "47.16 * (0.01875 * SafezoneH)";
+ y = "26.5 * (0.025 * SafezoneH)";
+ w = "3 * (0.01875 * SafezoneH)";
+ h = "1 * (0.025 * SafezoneH)";
+ };
+ class TextSpd: TextGrid
+ {
+ idc = 1004;
+ text = "SPD";
+ x = "4.8 * (0.01875 * SafezoneH)";
+ y = "11.8 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class SpeedValueBorder: RscPicture
+ {
+ idc = 1200;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\altimeter_value_ca.paa";
+ x = "6.3 * (0.01875 * SafezoneH)";
+ y = "19 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "2 * (0.025 * SafezoneH)";
+ };
+ class CA_Speed: TextGrid
+ {
+ idc = 190;
+ sizeEx = "0.03*SafezoneH";
+ text = "120";
+ x = "7.5 * (0.01875 * SafezoneH)";
+ y = "19.5 * (0.025 * SafezoneH)";
+ w = "6 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class AnalogueSpeed: RscLadderPicture
+ {
+ idc = 384;
+ topValue = 1312;
+ bottomValue = -345;
+ visibleRange = -1;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAVspeedLadder_ca.paa";
+ x = "1.5 * (0.01875 * SafezoneH)";
+ y = "13 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "14 * (0.025 * SafezoneH)";
+ };
+ class TextAlt: TextGrid
+ {
+ idc = 1006;
+ text = "ALT";
+ x = "46.9 * (0.01875 * SafezoneH)";
+ y = "11.8 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class AltValueBorder: RscPicture
+ {
+ idc = 1201;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\airspeed_value_ca.paa";
+ x = "42.25 * (0.01875 * SafezoneH)";
+ y = "19 * (0.025 * SafezoneH)";
+ w = "5 * (0.01875 * SafezoneH)";
+ h = "2 * (0.025 * SafezoneH)";
+ };
+ class CA_Alt: TextGrid
+ {
+ idc = 191;
+ sizeEx = "0.03*SafezoneH";
+ style = 1;
+ text = "3825";
+ x = "43 * (0.01875 * SafezoneH)";
+ y = "19.5 * (0.025 * SafezoneH)";
+ w = "3.2 * (0.01875 * SafezoneH)";
+ h = "1.2 * (0.025 * SafezoneH)";
+ };
+ class AnalogueAlt: RscLadderPicture
+ {
+ idc = 385;
+ topValue = 14430;
+ bottomValue = -2110;
+ visibleRange = -1;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\UAValtLadder_ca.paa";
+ x = "47 * (0.01875 * SafezoneH)";
+ y = "13 * (0.025 * SafezoneH)";
+ w = "2.5 * (0.01875 * SafezoneH)";
+ h = "14 * (0.025 * SafezoneH)";
+ };
+ class AnalogueHorizon: RscLadderPicture
+ {
+ idc = 383;
+ topValue = 90;
+ bottomValue = -90;
+ visibleRange = -1;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_ladder_ca.paa";
+ x = "16.75 * (0.01875 * SafezoneH)";
+ y = "5 * (0.025 * SafezoneH)";
+ w = "20 * (0.01875 * SafezoneH)";
+ h = "30 * (0.025 * SafezoneH)";
+ };
+ class HorizonCenter: RscPicture
+ {
+ idc = 1202;
+ text = "\A3\Ui_f\data\IGUI\Cfg\HelicopterHUD\horizon_aircraft_ca.paa";
+ x = "24.75 * (0.01875 * SafezoneH)";
+ y = "19 * (0.025 * SafezoneH)";
+ w = "4 * (0.01875 * SafezoneH)";
+ h = "2 * (0.025 * SafezoneH)";
+ };
+ };
+ };
+ };
+};
\ No newline at end of file
diff --git a/addons/aircraft/config.cpp b/addons/aircraft/config.cpp
index 86135c4bc9..2ce2d0dc10 100644
--- a/addons/aircraft/config.cpp
+++ b/addons/aircraft/config.cpp
@@ -6,7 +6,7 @@ class CfgPatches {
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
requiredAddons[] = {"ace_common"};
- author[] = {"KoffeinFlummi","Crusty","commy2"};
+ author[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
};
@@ -16,3 +16,4 @@ class CfgPatches {
#include "CfgMagazines.hpp"
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
+#include "RscInGameUI.hpp"
\ No newline at end of file
diff --git a/addons/aircraft/data/Helo_LaserON.paa b/addons/aircraft/data/Helo_LaserON.paa
new file mode 100644
index 0000000000..3a3459e699
Binary files /dev/null and b/addons/aircraft/data/Helo_LaserON.paa differ
diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf
index a8b73052dc..3703514fb6 100644
--- a/addons/attach/functions/fnc_attach.sqf
+++ b/addons/attach/functions/fnc_attach.sqf
@@ -94,7 +94,7 @@ if (_unit == _attachToVehicle) then { //Self Attachment
_unit removeAction _actionID;
if (GVAR(placeAction) == 1) then {
- _startingPosition = _tempObject modelToWorld [0,0,0];
+ _startingPosition = _tempObject modelToWorldVisual [0,0,0];
[_unit, _attachToVehicle, _itemClassname, _itemVehClass, _onAtachText, _startingPosition] call FUNC(placeApprove);
};
deleteVehicle _tempObject;
diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf
index 966794b32f..d0930dc069 100644
--- a/addons/attach/functions/fnc_canAttach.sqf
+++ b/addons/attach/functions/fnc_canAttach.sqf
@@ -25,6 +25,6 @@ _itemName = [_args, 0, ""] call CBA_fnc_defaultParam;
_attachLimit = [6, 1] select (_player == _attachToVehicle);
_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []];
-_playerPos = (ACE_player modelToWorld (ACE_player selectionPosition "pilot"));
+_playerPos = (ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot"));
(canStand _player) && {(_attachToVehicle distance _player) < 7} && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_itemName in ((itemsWithMagazines _player) + [""])};
diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf
index 576721cf59..60c5e3a9bf 100644
--- a/addons/attach/functions/fnc_placeApprove.sqf
+++ b/addons/attach/functions/fnc_placeApprove.sqf
@@ -45,7 +45,7 @@ while {(_closeInMax - _closeInMin) > 0.01} do {
// systemChat format ["Trying %1 from %2 start %3", _closeInDistance, [_closeInMax, _closeInMin], _startDistanceFromCenter];
_endPosTestOffset = _startingOffset vectorAdd (_closeInUnitVector vectorMultiply _closeInDistance);
_endPosTestOffset set [2, (_startingOffset select 2)];
- _endPosTest = _attachToVehicle modelToWorld _endPosTestOffset;
+ _endPosTest = _attachToVehicle modelToWorldVisual _endPosTestOffset;
_doesIntersect = false;
{
diff --git a/addons/attach/script_component.hpp b/addons/attach/script_component.hpp
index c09a5b97e1..6d468d89c1 100644
--- a/addons/attach/script_component.hpp
+++ b/addons/attach/script_component.hpp
@@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_ATTACH
- #define DEBUG_MODE_FULL
+ #define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_ATTACH
- #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
+ #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
#endif
#include "\z\ace\Addons\main\script_macros.hpp"
\ No newline at end of file
diff --git a/addons/backpacks/functions/fnc_backpackOpened.sqf b/addons/backpacks/functions/fnc_backpackOpened.sqf
index 186202027f..1894d68f23 100644
--- a/addons/backpacks/functions/fnc_backpackOpened.sqf
+++ b/addons/backpacks/functions/fnc_backpackOpened.sqf
@@ -37,7 +37,7 @@ _sounds = [
QUOTE(PATHTO_R(sounds\zip_out.wav))
];
-_position = _target modelToWorld (_target selectionPosition "Spine3");
+_position = _target modelToWorldVisual (_target selectionPosition "Spine3");
_position = _position call EFUNC(common,positionToASL);
playSound3D [
diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp
new file mode 100644
index 0000000000..79f99c33a4
--- /dev/null
+++ b/addons/ballistics/CfgAmmo.hpp
@@ -0,0 +1,20 @@
+class CfgAmmo {
+ class BulletCore;
+
+ class BulletBase: BulletCore {
+ timeToLive = 15; // Default: 6, doubleplusgood all munition range.
+ };
+
+ class B_20mm : BulletBase {
+ timeToLive = 30;
+ };
+ class B_25mm : BulletBase {
+ timeToLive = 30;
+ };
+ class B_35mm_AA : BulletBase {
+ timeToLive = 30;
+ };
+ class B_30mm_AP : BulletBase {
+ timeToLive = 30;
+ };
+};
\ No newline at end of file
diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp
index c526b0f7d4..4b9944364c 100644
--- a/addons/ballistics/config.cpp
+++ b/addons/ballistics/config.cpp
@@ -14,3 +14,4 @@ class CfgPatches {
#include "CfgVehicles.hpp"
#include "CfgWeapons.hpp"
+#include "CfgAmmo.hpp"
\ No newline at end of file
diff --git a/addons/ballistics/scripts/initTargetWall.sqf b/addons/ballistics/scripts/initTargetWall.sqf
index dd1f42bb7d..b09d5897bc 100644
--- a/addons/ballistics/scripts/initTargetWall.sqf
+++ b/addons/ballistics/scripts/initTargetWall.sqf
@@ -4,10 +4,10 @@
_wall = _this select 0;
if (local _wall) then {
- _paper = "UserTexture_1x2_F" createVehicle position _wall;
+ _paper = "UserTexture_1x2_F" createVehicle position _wall;
- _paper attachTo [_wall, [0,-0.02,0.6]];
- _paper setDir getDir _wall;
+ _paper attachTo [_wall, [0,-0.02,0.6]];
+ _paper setDir getDir _wall;
- _paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
+ _paper setObjectTextureGlobal [0, QUOTE(PATHTOF(textures\target_ca.paa))];
};
diff --git a/addons/captives/functions/fnc_handleOnUnconscious.sqf b/addons/captives/functions/fnc_handleOnUnconscious.sqf
index 1924b6bb47..9aa4856204 100644
--- a/addons/captives/functions/fnc_handleOnUnconscious.sqf
+++ b/addons/captives/functions/fnc_handleOnUnconscious.sqf
@@ -18,9 +18,6 @@
EXPLODE_2_PVT(_this,_unit,_isUnconc);
-diag_log "handleOnUnconscious";
-diag_log _this;
-diag_log _unit;
if (!local _unit) exitWith {};
if (_isUnconc) then {
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index 345bc7873c..95a639b943 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -73,6 +73,16 @@ PREP(getStringFromMissionSQM);
PREP(getTargetAzimuthAndInclination);
PREP(getTargetDistance);
PREP(getTargetObject);
+PREP(getTurnedOnLights);
+PREP(getTurretCommander);
+PREP(getTurretConfigPath);
+PREP(getTurretCopilot);
+PREP(getTurretGunner);
+PREP(getTurretIndex);
+PREP(getTurrets);
+PREP(getTurretsFFV);
+PREP(getTurretsOther);
+PREP(getTurretDirection);
PREP(getUavControlPosition);
PREP(getVehicleCargo);
PREP(getVehicleCodriver);
@@ -102,6 +112,7 @@ PREP(isModLoaded);
PREP(isPlayer);
PREP(isTurnedOut);
PREP(letterToCode);
+PREP(lightIntensityFromObject);
PREP(loadPerson);
PREP(loadPersonLocal);
PREP(loadSettingsFromProfile);
@@ -113,6 +124,7 @@ PREP(moveToTempGroup);
PREP(muteUnit);
PREP(numberToDigits);
PREP(numberToDigitsString);
+PREP(numberToString);
PREP(onAnswerRequest);
PREP(onLoadRscDisplayChannel);
PREP(owned);
@@ -179,6 +191,8 @@ PREP(getConfigGunner);
PREP(getConfigCommander);
PREP(getHitPoints);
PREP(getHitPointsWithSelections);
+PREP(getReflectorsWithSelections);
+PREP(getLightProperties);
PREP(getVehicleCrew);
// turrets
diff --git a/addons/common/functions/fnc_addCanInteractWithCondition.sqf b/addons/common/functions/fnc_addCanInteractWithCondition.sqf
index 99815a08a7..ef46b23706 100644
--- a/addons/common/functions/fnc_addCanInteractWithCondition.sqf
+++ b/addons/common/functions/fnc_addCanInteractWithCondition.sqf
@@ -29,7 +29,7 @@ private "_index";
_index = _conditionNames find _conditionName;
if (_index == -1) then {
- _index = count _conditionNames;
+ _index = count _conditionNames;
};
_conditionNames set [_index, _conditionName];
diff --git a/addons/common/functions/fnc_addToInventory.sqf b/addons/common/functions/fnc_addToInventory.sqf
index 4e088525fc..b28d864df8 100644
--- a/addons/common/functions/fnc_addToInventory.sqf
+++ b/addons/common/functions/fnc_addToInventory.sqf
@@ -57,7 +57,7 @@ switch ((_type select 0)) do {
};
} else {
_addedToPlayer = false;
- _pos = _unit modelToWorld [0,1,0.05];
+ _pos = _unit modelToWorldVisual [0,1,0.05];
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
_unit addWeaponCargoGlobal [_classname,1];
_unit setPosATL _pos;
@@ -73,7 +73,7 @@ switch ((_type select 0)) do {
};
} else {
_addedToPlayer = false;
- _pos = _unit modelToWorld [0,1,0.05];
+ _pos = _unit modelToWorldVisual [0,1,0.05];
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
_unit addMagazineCargoGlobal [_classname, 1];
_unit setPosATL _pos;
@@ -89,7 +89,7 @@ switch ((_type select 0)) do {
};
} else {
_addedToPlayer = false;
- _pos = _unit modelToWorld [0,1,0.05];
+ _pos = _unit modelToWorldVisual [0,1,0.05];
_unit = createVehicle ["WeaponHolder_Single_F",_pos,[],0,"NONE"];
_unit addItemCargoGlobal [_classname,1];
_unit setPosATL _pos;
diff --git a/addons/common/functions/fnc_ambientBrightness.sqf b/addons/common/functions/fnc_ambientBrightness.sqf
index f29ff9e8e5..172739247f 100644
--- a/addons/common/functions/fnc_ambientBrightness.sqf
+++ b/addons/common/functions/fnc_ambientBrightness.sqf
@@ -11,4 +11,4 @@
*/
#include "script_component.hpp"
-sunOrMoon * sunOrMoon * (1 - overcast * 0.25) + (moonIntensity/5 min 1) * (1 - overcast)
+(sunOrMoon * sunOrMoon * (1 - overcast * 0.25) + (moonIntensity/5) * (1 - overcast)) min 1
diff --git a/addons/common/functions/fnc_blurScreen.sqf b/addons/common/functions/fnc_blurScreen.sqf
index c3d101a37e..8f5e50289f 100644
--- a/addons/common/functions/fnc_blurScreen.sqf
+++ b/addons/common/functions/fnc_blurScreen.sqf
@@ -15,28 +15,28 @@ _id = _this select 0;
_show = if (count _this > 1) then {_this select 1} else {false};
if (isnil QGVAR(SHOW_BLUR_SCREEN_COLLECTION)) then {
- GVAR(SHOW_BLUR_SCREEN_COLLECTION) = [];
+ GVAR(SHOW_BLUR_SCREEN_COLLECTION) = [];
};
if (typeName _show == typeName 0) then {
- _show = (_show == 1);
+ _show = (_show == 1);
};
if (_show) then {
- GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id;
- // show blur
- if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
- GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102];
- GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9];
- GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true;
- GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0;
- };
+ GVAR(SHOW_BLUR_SCREEN_COLLECTION) pushback _id;
+ // show blur
+ if (isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
+ GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = ppEffectCreate ["DynamicBlur", 102];
+ GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectAdjust [0.9];
+ GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectEnable true;
+ GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) ppEffectCommit 0;
+ };
} else {
- GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id];
- if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then {
- // hide blur
- if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
- ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN);
- GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil;
- };
- };
+ GVAR(SHOW_BLUR_SCREEN_COLLECTION) = GVAR(SHOW_BLUR_SCREEN_COLLECTION) - [_id];
+ if (GVAR(SHOW_BLUR_SCREEN_COLLECTION) isEqualTo []) then {
+ // hide blur
+ if (!isnil QGVAR(MENU_ppHandle_GUI_BLUR_SCREEN)) then {
+ ppEffectDestroy GVAR(MENU_ppHandle_GUI_BLUR_SCREEN);
+ GVAR(MENU_ppHandle_GUI_BLUR_SCREEN) = nil;
+ };
+ };
};
diff --git a/addons/common/functions/fnc_canGetInPosition.sqf b/addons/common/functions/fnc_canGetInPosition.sqf
index 5ac4c527fd..f4337b6171 100644
--- a/addons/common/functions/fnc_canGetInPosition.sqf
+++ b/addons/common/functions/fnc_canGetInPosition.sqf
@@ -242,10 +242,10 @@ _fnc_isInRange = {
private ["_unitPosition", "_distance"];
_unitPosition = getPos _unit;
- _distance = _unitPosition distance (_vehicle modelToWorld _selectionPosition);
+ _distance = _unitPosition distance (_vehicle modelToWorldVisual _selectionPosition);
if (!isNil "_selectionPosition2") then {
- _distance = _distance min (_unitPosition distance (_vehicle modelToWorld _selectionPosition2));
+ _distance = _distance min (_unitPosition distance (_vehicle modelToWorldVisual _selectionPosition2));
};
_distance < _radius
diff --git a/addons/common/functions/fnc_changeProjectileDirection.sqf b/addons/common/functions/fnc_changeProjectileDirection.sqf
index 04154da9c1..2cb37650b8 100644
--- a/addons/common/functions/fnc_changeProjectileDirection.sqf
+++ b/addons/common/functions/fnc_changeProjectileDirection.sqf
@@ -19,40 +19,35 @@ private ["_projectile", "_adjustDir", "_adjustUp", "_adjustSpeed", "_vdir", "_di
_projectile = _this select 0;
_adjustDir = _this select 1;
_adjustUp = _this select 2;
-_adjustSpeed = _this select 3;
-if (isNil "_adjustSpeed") then {
- _adjustSpeed = 0;
+_adjustSpeed = if (count _this > 3) then {
+ _this select 3
+} else {
+ 0
};
["CPD", [_fnc_scriptNameParent, _adjustDir, _adjustUp, _adjustSpeed], nil, false] call FUNC(log);
// get old direction vector
-_vdir = vectorDir _projectile;
+_vdir = vectorNormalized velocity _projectile;
// get azimuth and inclination and apply corrections
_dir = (_vdir select 0) atan2 (_vdir select 1) + _adjustDir;
-_up = sqrt ((_vdir select 1) ^ 2 + (_vdir select 0) ^ 2) atan2 - (_vdir select 2) + _adjustUp;
+_up = asin (_vdir select 2) + _adjustUp;
// get new direction vector (this is a unit vector)
_vdir = [
- sin _dir * sin _up,
- cos _dir * sin _up,
- - cos _up
+ sin _dir * cos _up,
+ cos _dir * cos _up,
+ sin _up
];
// get best up vector
-_l = sqrt ((_vdir select 0) ^ 2 + (_vdir select 1) ^ 2); if (_l == 0) then {diag_log text format ["[ACE] ERROR: %1, %2, %3, %4, %5, %6, %7", _projectile, _adjustDir, _adjustUp, vectorDir _projectile, _vdir, _dir, _up]};
-_r = -(_vdir select 2) / _l;
-
-_vup = [
- (_vdir select 0) * _r,
- (_vdir select 1) * _r,
- _l
-];
+_vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]);
+_vup = _vlat vectorCrossProduct _vdir;
// get new speed vector. Keep total speed, but change to new direction. Yay for vector commands.
-_vel = _vdir vectorMultiply _adjustSpeed + vectorMagnitude velocity _projectile;
+_vel = _vdir vectorMultiply (_adjustSpeed + vectorMagnitude velocity _projectile);
// set projectile direction dir and up. Projectiles are long objects, especially with tracers, so it would look dumb otherwise.
_projectile setVectorDirAndUp [_vdir, _vup];
diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf
index 1fbc4e89aa..15cda902d7 100644
--- a/addons/common/functions/fnc_displayIcon.sqf
+++ b/addons/common/functions/fnc_displayIcon.sqf
@@ -34,13 +34,13 @@
#define Y_POS_ICONS_SECOND (TOP_SIDE + (1.1 * ICON_WIDTH))
// setting values
-#define TOP_RIGHT_DOWN 1
-#define TOP_RIGHT_LEFT 2
-#define TOP_LEFT_DOWN 3
-#define TOP_LEFT_RIGHT 4
+#define TOP_RIGHT_DOWN 1
+#define TOP_RIGHT_LEFT 2
+#define TOP_LEFT_DOWN 3
+#define TOP_LEFT_RIGHT 4
// other constants
-#define DEFAULT_TIME 6
+#define DEFAULT_TIME 6
private ["_iconId", "_show", "_icon", "_allControls", "_refresh", "_timeAlive", "_list", "_color"];
_iconId = _this select 0;
@@ -53,68 +53,68 @@ disableSerialization;
_list = missionNamespace getvariable [QGVAR(displayIconList),[]];
_refresh = {
- private ["_allControls"];
- // Refreshing of all icons..
- _allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []];
- {
- ctrlDelete _x;
- }foreach _allControls;
+ private ["_allControls"];
+ // Refreshing of all icons..
+ _allControls = missionNamespace getvariable [QGVAR(displayIconListControls), []];
+ {
+ ctrlDelete _x;
+ }foreach _allControls;
- _allControls = [];
+ _allControls = [];
- private ["_ctrl", "_setting"];
- _setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0];
- if (_setting > 0) then {
- {
- // +19000 because we want to make certain we are using free IDCs..
- _ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]);
- _position = switch (_setting) do {
- case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
- case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]};
- case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
- case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]};
- default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
- };
- _ctrl ctrlSetPosition _position;
- _ctrl ctrlsetText (_x select 1);
- _ctrl ctrlSetTextColor (_x select 2);
- _ctrl ctrlCommit 0;
- _allControls pushback _ctrl;
- }foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]);
- };
- missionNamespace setvariable [QGVAR(displayIconListControls), _allControls];
+ private ["_ctrl", "_setting"];
+ _setting = missionNamespace getvariable[QGVAR(settingFeedbackIcons), 0];
+ if (_setting > 0) then {
+ {
+ // +19000 because we want to make certain we are using free IDCs..
+ _ctrl = ((findDisplay 46) ctrlCreate ["RscPicture", _foreachIndex + 19000]);
+ _position = switch (_setting) do {
+ case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
+ case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]};
+ case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
+ case TOP_LEFT_RIGHT: {[LEFT_SIDE + (0.5 * ICON_WIDTH) - ((_foreachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND, ICON_WIDTH, ICON_WIDTH]};
+ default {[X_POS_ICONS, Y_POS_ICONS + (_foreachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]};
+ };
+ _ctrl ctrlSetPosition _position;
+ _ctrl ctrlsetText (_x select 1);
+ _ctrl ctrlSetTextColor (_x select 2);
+ _ctrl ctrlCommit 0;
+ _allControls pushback _ctrl;
+ }foreach (missionNamespace getvariable [QGVAR(displayIconList),[]]);
+ };
+ missionNamespace setvariable [QGVAR(displayIconListControls), _allControls];
};
if (_show) then {
- if ({(_x select 0 == _iconId)} count _list == 0) then {
- _list pushback [_iconId, _icon, _color, time];
- } else {
- {
- if (_x select 0 == _iconId) exitwith {
- _list set [_foreachIndex, [_iconId, _icon, _color, time]];
- };
- }foreach _list;
- };
- missionNamespace setvariable [QGVAR(displayIconList), _list];
- call _refresh;
+ if ({(_x select 0 == _iconId)} count _list == 0) then {
+ _list pushback [_iconId, _icon, _color, time];
+ } else {
+ {
+ if (_x select 0 == _iconId) exitwith {
+ _list set [_foreachIndex, [_iconId, _icon, _color, time]];
+ };
+ }foreach _list;
+ };
+ missionNamespace setvariable [QGVAR(displayIconList), _list];
+ call _refresh;
- if (_timeAlive >= 0) then {
- [{
+ if (_timeAlive >= 0) then {
+ [{
[_this select 0, false, "", [0,0,0], 0] call FUNC(displayIcon);
}, [_iconId], _timeAlive, _timeAlive] call EFUNC(common,waitAndExecute);
- };
+ };
} else {
- if ({(_x select 0 == _iconId)} count _list == 1) then {
- private "_newList";
- _newList = [];
- {
- if (_x select 0 != _iconId) then {
- _newList pushback _x;
- };
- }foreach _list;
+ if ({(_x select 0 == _iconId)} count _list == 1) then {
+ private "_newList";
+ _newList = [];
+ {
+ if (_x select 0 != _iconId) then {
+ _newList pushback _x;
+ };
+ }foreach _list;
- missionNamespace setvariable [QGVAR(displayIconList), _newList];
- call _refresh;
- };
+ missionNamespace setvariable [QGVAR(displayIconList), _newList];
+ call _refresh;
+ };
};
diff --git a/addons/common/functions/fnc_dumpArray.sqf b/addons/common/functions/fnc_dumpArray.sqf
index a6f08cdd39..8a95172ea7 100644
--- a/addons/common/functions/fnc_dumpArray.sqf
+++ b/addons/common/functions/fnc_dumpArray.sqf
@@ -7,19 +7,19 @@ _var = _this select 0;
_depth = _this select 1;
_pad = "";
for "_i" from 0 to _depth do {
- _pad = _pad + toString [9];
+ _pad = _pad + toString [9];
};
_depth = _depth + 1;
if(IS_ARRAY(_var)) then {
- if((count _var) > 0) then {
- diag_log text format["%1[", _pad];
- {
- [_x, _depth] call FUNC(dumpArray);
- } forEach _var;
- diag_log text format["%1],", _pad];
- } else {
- diag_log text format["%1[],", _pad];
- };
+ if((count _var) > 0) then {
+ diag_log text format["%1[", _pad];
+ {
+ [_x, _depth] call FUNC(dumpArray);
+ } forEach _var;
+ diag_log text format["%1],", _pad];
+ } else {
+ diag_log text format["%1[],", _pad];
+ };
} else {
- diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)];
+ diag_log text format["%1%2", _pad, [_var] call FUNC(formatVar)];
};
diff --git a/addons/common/functions/fnc_dumpPerformanceCounters.sqf b/addons/common/functions/fnc_dumpPerformanceCounters.sqf
index b9afb8f7eb..acf81ff20a 100644
--- a/addons/common/functions/fnc_dumpPerformanceCounters.sqf
+++ b/addons/common/functions/fnc_dumpPerformanceCounters.sqf
@@ -6,42 +6,42 @@
diag_log text format["REGISTERED ACE PFH HANDLERS"];
diag_log text format["-------------------------------------------"];
if(!isNil "ACE_PFH_COUNTER") then {
- {
- private["_pfh"];
- _pfh = _x select 0;
- diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ];
- } forEach ACE_PFH_COUNTER;
+ {
+ private["_pfh"];
+ _pfh = _x select 0;
+ diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ];
+ } forEach ACE_PFH_COUNTER;
};
diag_log text format["ACE COUNTER RESULTS"];
diag_log text format["-------------------------------------------"];
{
- private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
- _counterEntry = _x;
- _iter = 0;
- _total = 0;
- _count = 0;
- _averageResult = 0;
- if( (count _counterEntry) > 3) then {
- // calc
- {
- if(_iter > 2) then {
- _count = _count + 1;
- _delta = (_x select 1) - (_x select 0);
-
- _total = _total + _delta;
- };
- _iter = _iter + 1;
- } forEach _counterEntry;
-
- // results
- _averageResult = (_total / _count) * 1000;
-
- // dump results
- diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult];
- } else {
- diag_log text format["%1: No results", (_counterEntry select 0) ];
- };
+ private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
+ _counterEntry = _x;
+ _iter = 0;
+ _total = 0;
+ _count = 0;
+ _averageResult = 0;
+ if( (count _counterEntry) > 3) then {
+ // calc
+ {
+ if(_iter > 2) then {
+ _count = _count + 1;
+ _delta = (_x select 1) - (_x select 0);
+
+ _total = _total + _delta;
+ };
+ _iter = _iter + 1;
+ } forEach _counterEntry;
+
+ // results
+ _averageResult = (_total / _count) * 1000;
+
+ // dump results
+ diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult];
+ } else {
+ diag_log text format["%1: No results", (_counterEntry select 0) ];
+ };
} forEach ACE_COUNTERS;
/*
@@ -49,21 +49,21 @@ diag_log text format["-------------------------------------------"];
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"];
diag_log text format["-------------------------------------------"];
{
- private["_delay"];
- _delay = _x select 2;
- //if(_delay > 0) then { _delay = _delay / 1000; };
-
- diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
+ private["_delay"];
+ _delay = _x select 2;
+ //if(_delay > 0) then { _delay = _delay / 1000; };
+
+ diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;
// Dump PFH Trackers
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"];
diag_log text format["-------------------------------------------"];
{
- private["_delta"];
- _delta = _x select 1;
- //if(_delta > 0) then { _delta = _delta / 1000; };
- diag_log text format[" DELTA: %1s", _delta];
+ private["_delta"];
+ _delta = _x select 1;
+ //if(_delta > 0) then { _delta = _delta / 1000; };
+ diag_log text format[" DELTA: %1s", _delta];
} forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER;
//{
diff --git a/addons/common/functions/fnc_getLightProperties.sqf b/addons/common/functions/fnc_getLightProperties.sqf
new file mode 100644
index 0000000000..ee1884ac1b
--- /dev/null
+++ b/addons/common/functions/fnc_getLightProperties.sqf
@@ -0,0 +1,63 @@
+/*
+ * Author: commy2
+ * Read properties of given vehicles light.
+ *
+ * Arguments:
+ * 0: Object with lights (Object)
+ * 1: Light classname (String)
+ *
+ * Return Value:
+ * Stuff from config (Array)
+ *
+ */
+#include "script_component.hpp"
+
+private ["_vehicle", "_light"];
+
+_vehicle = _this select 0;
+_light = _this select 1;
+
+private "_config";
+_config = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> _light;
+
+private ["_intensity", "_position", "_direction", "_innerAngle", "_outerAngle"];
+
+_intensity = getNumber (_config >> "intensity");
+_position = getText (_config >> "position");
+_direction = getText (_config >> "direction");
+_innerAngle = getNumber (_config >> "innerAngle");
+_outerAngle = getNumber (_config >> "outerAngle");
+
+[_intensity, _position, _direction, _innerAngle, _outerAngle]
+
+/*
+class Reflectors
+{
+ class Light_1
+ {
+ color[] = {1000,1000,1100};
+ ambient[] = {10,10,11};
+ intensity = 5;
+ size = 1;
+ innerAngle = 90;
+ outerAngle = 130;
+ coneFadeCoef = 2;
+ position = "Light_1_pos";
+ direction = "Light_1_dir";
+ hitpoint = "Light_1_hitpoint";
+ selection = "Light_1_hide";
+ useFlare = 1;
+ flareSize = 0.9;
+ flareMaxDistance = 85;
+ class Attenuation
+ {
+ start = 0;
+ constant = 0;
+ linear = 0;
+ quadratic = 0.9;
+ hardLimitStart = 40;
+ hardLimitEnd = 60;
+ };
+ };
+};
+*/
diff --git a/addons/common/functions/fnc_getReflectorsWithSelections.sqf b/addons/common/functions/fnc_getReflectorsWithSelections.sqf
new file mode 100644
index 0000000000..6d47943155
--- /dev/null
+++ b/addons/common/functions/fnc_getReflectorsWithSelections.sqf
@@ -0,0 +1,45 @@
+/*
+ * Author: commy2
+ *
+ * Returns all lighting hitpoints of any vehicle.
+ * Note: These are actual selections that are affected by setHit and getHit, not getHitPointDamage or setHitpointDamage.
+ * They behave like having an armor value of 0.
+ *
+ * Arguments:
+ * 0: A vehicle, not the classname (Object)
+ *
+ * Return Value:
+ * The light names and selections (Array)
+ */
+#include "script_component.hpp"
+
+private ["_vehicle", "_config", "_hitpoints", "_selections"];
+
+_vehicle = _this select 0;
+
+_config = configFile >> "CfgVehicles" >> typeOf _vehicle;
+
+_hitpoints = [];
+_selections = [];
+
+// iterate through all parents
+while {isClass _config} do {
+ private "_class";
+ _class = _config >> "Reflectors";
+
+ for "_i" from 0 to (count _class - 1) do {
+ private ["_entry", "_selection"];
+
+ _entry = _class select _i;
+ _selection = getText (_entry >> "hitpoint");
+
+ if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then {
+ _hitpoints pushBack configName _entry;
+ _selections pushBack _selection;
+ };
+ };
+
+ _config = inheritsFrom _config;
+};
+
+[_hitPoints, _selections]
diff --git a/addons/common/functions/fnc_getTurnedOnLights.sqf b/addons/common/functions/fnc_getTurnedOnLights.sqf
new file mode 100644
index 0000000000..6f0dc5a9bb
--- /dev/null
+++ b/addons/common/functions/fnc_getTurnedOnLights.sqf
@@ -0,0 +1,36 @@
+/*
+ * Author: commy2
+ *
+ * Returns all turned on lights of any vehicle or streetlamp.
+ *
+ * Arguments:
+ * 0: A vehicle, not the classname (Object)
+ *
+ * Return Value:
+ * All burning lights (Array)
+ */
+#include "script_component.hpp"
+
+private "_vehicle";
+
+_vehicle = _this select 0;
+
+if (!isLightOn _vehicle) exitWith {[]};
+
+private ["_reflectorsWithSelections", "_lights", "_hitpoints"];
+
+_reflectorsWithSelections = [_vehicle] call FUNC(getReflectorsWithSelections);
+
+_lights = _reflectorsWithSelections select 0;
+_hitpoints = _reflectorsWithSelections select 1;
+
+private "_turnedOnLights";
+_turnedOnLights = [];
+{
+ if (_vehicle getHit _x <= 0.9) then {
+ _turnedOnLights pushBack (_lights select _forEachIndex);
+ };
+
+} forEach _hitpoints;
+
+_turnedOnLights
diff --git a/addons/common/functions/fnc_getTurretDirection.sqf b/addons/common/functions/fnc_getTurretDirection.sqf
new file mode 100644
index 0000000000..fb265bf545
--- /dev/null
+++ b/addons/common/functions/fnc_getTurretDirection.sqf
@@ -0,0 +1,37 @@
+/*
+ * Author: jaynus
+ *
+ * Get the absolute turret direction for FOV/PIP turret.
+ *
+ * Argument:
+ * 0: Vehicle (Object)
+ * 1: Turret Position
+ *
+ * Return value:
+ * [position, direction]
+ */
+#include "script_component.hpp"
+
+EXPLODE_2_PVT(_this,_vehicle,_position);
+private ["_turrets", "_turret", "_config", "_turret", "_povPos", "_povDir", "_gunBeginPos", "_gunEndPos", "_pov"];
+
+_turret = [_vehicle, _position] call CBA_fnc_getTurret;
+_pov = getText (_turret >> "memoryPointGunnerOptics");
+_gunBeg = getText (_turret >> "gunBeg");
+_gunEnd = getText (_turret >> "gunEnd");
+TRACE_3("", _pov, _gunBeg, _gunEnd);
+
+// Pull the PIP pov or barrel direction, depending on how the model is set up
+_povPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _pov ) );
+_povDir = [0,0,0];
+
+if(_pov == "pip0_pos") then {
+ _pipDir = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition "pip0_dir" ) );
+ _povDir = _pipDir vectorDiff _povPos;
+} else {
+ _gunBeginPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _gunBeg ) );
+ _gunEndPos = ATLtoASL ( _vehicle modelToWorldVisual (_vehicle selectionPosition _gunEnd ) );
+ _povDir = _gunBeginPos vectorDiff _gunEndPos;
+};
+
+[_povPos, _povDir]
\ No newline at end of file
diff --git a/addons/common/functions/fnc_inWater.sqf b/addons/common/functions/fnc_inWater.sqf
index ea511d388d..2fdede1737 100644
--- a/addons/common/functions/fnc_inWater.sqf
+++ b/addons/common/functions/fnc_inWater.sqf
@@ -14,7 +14,7 @@ private ["_unit","_return","_aslPos"];
_unit = _this select 0;
_return = false;
if ((surfaceIsWater getPos _unit)) then {
- _aslPos = _unit modelToWorld (_unit selectionPosition "head");
+ _aslPos = _unit modelToWorldVisual (_unit selectionPosition "head");
if ((_aslPos select 2) <= 0) then {
_return = true;
};
diff --git a/addons/common/functions/fnc_lightIntensityFromObject.sqf b/addons/common/functions/fnc_lightIntensityFromObject.sqf
new file mode 100644
index 0000000000..cf9e215403
--- /dev/null
+++ b/addons/common/functions/fnc_lightIntensityFromObject.sqf
@@ -0,0 +1,56 @@
+/*
+ * Author: commy2
+ * Calculate light intensity object 1 recieves from object 2
+ *
+ * Arguments:
+ * 0: Object that recieves light (Object)
+ * 1: Object that emits light (Object)
+ *
+ * Return Value:
+ * Brightest light level
+ *
+ */
+#include "script_component.hpp"
+
+private ["_unit", "_lightSource"];
+
+_unit = _this select 0;
+_lightSource = _this select 1;
+
+private "_unitPos";
+_unitPos = _unit modelToWorld (_unit selectionPosition "spine3");
+
+private ["_lights", "_lightLevel"];
+
+_lights = [_lightSource] call FUNC(getTurnedOnLights);
+
+_lightLevel = 0;
+
+{
+ private ["_properties", "_intensity", "_innerAngle", "_outerAngle", "_position", "_direction", "_directionToUnit", "_distance", "_angle"];
+
+ _properties = [_lightSource, _x] call FUNC(getLightProperties);
+
+ // @todo intensity affects range?
+ //_intensity = _properties select 0;
+
+ _innerAngle = (_properties select 3) / 2;
+ _outerAngle = (_properties select 4) / 2;
+
+ // get world position and direction
+ _position = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 1));
+ _direction = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 2));
+
+ _direction = _position vectorFromTo _direction;
+ _directionToUnit = _position vectorFromTo _unitPos;
+
+ _distance = _unitPos distance _position;
+ _angle = acos (_direction vectorDotProduct _directionToUnit);
+
+ _lightLevel = _lightLevel max ((linearConversion [0, 30, _distance, 1, 0, true]) * (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true]));
+
+//systemChat format ["%1 %2", (linearConversion [0, 30, _distance, 1, 0, true]), (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true])];
+
+} forEach _lights;
+
+_lightLevel
diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf
index 2548c44bec..9255d047b3 100644
--- a/addons/common/functions/fnc_loadSettingsOnServer.sqf
+++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf
@@ -15,52 +15,38 @@
GVAR(settings) = [];
-// Load settings from main config
-_countOptions = count (configFile >> "ACE_Settings");
-for "_index" from 0 to (_countOptions - 1) do {
- _optionEntry = (configFile >> "ACE_Settings") select _index;
+_parseConfigForSettings = {
+ private ["_config", "_countOptions", "_optionEntry", "_index"];
- [_optionEntry] call FUNC(setSettingFromConfig);
-};
-// Check if all settings should be forced
-if (GVAR(forceAllSettings)) then {
- {
- _x set [6, true];
- } forEach GVAR(settings);
-};
-
-// @todo
-// Load settings from server userconfig only if the ACE_ServerSettings is loaded
-/*if (isClass (configFile >> "CfgPatches" >> "ACE_ServerSettings")) then {
- DFUNC(serverUserConfig) = compile preprocessFileLineNumbers "\userconfig\ACE\ACE_Settings.hpp";
- if !(isNil DFUNC(serverUserConfig)) then {
- [] call FUNC(serverUserConfig);
+ _config = _this select 0;
+ _countOptions = count _config;
+ for "_index" from 0 to (_countOptions - 1) do {
+ _optionEntry = _config select _index;
+ [_optionEntry] call FUNC(setSettingFromConfig);
};
// Check if all settings should be forced
if (GVAR(forceAllSettings)) then {
{
- if !(missionNamespace getVariable format ["%1_forced", _x]) then {
- missionNamespace setVariable format ["%1_forced", _x, true];
- publicVariable format ["%1_forced", _name];
- };
- } forEach GVAR(settingsList);
+ _x set [6, true];
+ } forEach GVAR(settings);
};
-};*/
-
-// Load settings from mission config
-_countOptions = count (missionConfigFile >> "ACE_Settings");
-for "_index" from 0 to (_countOptions - 1) do {
- _optionEntry = (missionConfigFile >> "ACE_Settings") select _index;
-
- [_optionEntry] call FUNC(setSettingFromConfig);
-};
-// Check if all settings should be forced
-if (GVAR(forceAllSettings)) then {
- {
- _x set [6, true];
- } forEach GVAR(settings);
};
+// Order is this way because:
+// ACE_Settings should never force any setting by default. Loading it first ensures that all settings from ACE_Settings exist.
+// This way, ACE_ServerSettings will override ACE_Settings, even if no force is used.
+// Mission settings will override the server config settings, if no force is used.
+// This ensures that all settings are of their correct type, in case an outdated or corrupt server config is used , as well as have their correct localized display name and description
+
+// Regular config
+[configFile >> "ACE_Settings"] call _parseConfigForSettings;
+
+// Server config
+[configFile >> "ACE_ServerSettings"] call _parseConfigForSettings;
+
+// mission side settings
+[missionConfigFile >> "ACE_Settings"] call _parseConfigForSettings;
+
// Publish all settings data
publicVariable QGVAR(settings);
// Publish all setting values
diff --git a/addons/common/functions/fnc_logModEntries.sqf b/addons/common/functions/fnc_logModEntries.sqf
index 827802ad3f..4b94c557bc 100644
--- a/addons/common/functions/fnc_logModEntries.sqf
+++ b/addons/common/functions/fnc_logModEntries.sqf
@@ -7,11 +7,11 @@ _configs = "true" configClasses (configFile >> _this);
_entries = [];
{
- {
- _name = toLower configName _x;
- if !(_name in _entries) then {
- diag_log text _name;
- _entries pushBack _name;
- };
- } forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false];
+ {
+ _name = toLower configName _x;
+ if !(_name in _entries) then {
+ diag_log text _name;
+ _entries pushBack _name;
+ };
+ } forEach configProperties [_x, "toLower configName _x find 'ace' == 0", false];
} forEach _configs;
diff --git a/addons/common/functions/fnc_numberToString.sqf b/addons/common/functions/fnc_numberToString.sqf
new file mode 100644
index 0000000000..e0ebf1d77f
--- /dev/null
+++ b/addons/common/functions/fnc_numberToString.sqf
@@ -0,0 +1,25 @@
+/*
+ * Author: commy2
+ *
+ * Converts a number to a string without losing as much precission as str or format.
+ *
+ * Argument:
+ * 0: A number (Number)
+ *
+ * Return value:
+ * The number as string (String)
+ */
+#include "script_component.hpp"
+
+private ["_number", "_decimals"];
+
+_number = _this select 0;
+
+_decimals = str (abs(_number) mod 1);
+_decimals = toArray _decimals;
+_decimals deleteAt 0;
+
+if (_number < 0) exitWith {
+ format ["-%1%2", floor abs(_number), toString _decimals];
+};
+format ["%1%2", floor _number, toString _decimals];
diff --git a/addons/common/functions/fnc_sendDisplayInformationTo.sqf b/addons/common/functions/fnc_sendDisplayInformationTo.sqf
index f22894e057..33254fa81e 100644
--- a/addons/common/functions/fnc_sendDisplayInformationTo.sqf
+++ b/addons/common/functions/fnc_sendDisplayInformationTo.sqf
@@ -18,30 +18,30 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
if (isPlayer _reciever) then {
- if (!local _reciever) then {
- [_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
- } else {
- if (isLocalized _title) then {
- _title = localize _title;
- };
- _localizationArray = [_title];
- {
- _localizationArray pushback _x;
- }foreach _parameters;
- _title = format _localizationArray;
+ if (!local _reciever) then {
+ [_this, QUOTE(FUNC(sendDisplayInformationTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
+ } else {
+ if (isLocalized _title) then {
+ _title = localize _title;
+ };
+ _localizationArray = [_title];
+ {
+ _localizationArray pushback _x;
+ }foreach _parameters;
+ _title = format _localizationArray;
- {
- if (isLocalized _x) then {
- _localizationArray = [localize _x];
- {
- _localizationArray pushback _x;
- }foreach _parameters;
+ {
+ if (isLocalized _x) then {
+ _localizationArray = [localize _x];
+ {
+ _localizationArray pushback _x;
+ }foreach _parameters;
- _content set [_foreachIndex, format _localizationArray];
- };
+ _content set [_foreachIndex, format _localizationArray];
+ };
- }foreach _content;
+ }foreach _content;
- [_title,_content,_type] call EFUNC(common,displayInformation);
- };
+ [_title,_content,_type] call EFUNC(common,displayInformation);
+ };
};
\ No newline at end of file
diff --git a/addons/common/functions/fnc_sendDisplayMessageTo.sqf b/addons/common/functions/fnc_sendDisplayMessageTo.sqf
index 3c5b399659..e042f69939 100644
--- a/addons/common/functions/fnc_sendDisplayMessageTo.sqf
+++ b/addons/common/functions/fnc_sendDisplayMessageTo.sqf
@@ -18,29 +18,29 @@ _type = [_this, 3, 0,[0]] call BIS_fnc_Param;
_parameters = [_this, 4, [], [[]]] call BIS_fnc_Param;
if (isPlayer _reciever) then {
- if (!local _reciever) then {
- [_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
- } else {
+ if (!local _reciever) then {
+ [_this, QUOTE(FUNC(sendDisplayMessageTo)), _reciever, false] call EFUNC(common,execRemoteFnc);
+ } else {
- if (isLocalized _title) then {
- _title = localize _title;
- };
- if (isLocalized _content) then {
- _content = localize _content;
- };
+ if (isLocalized _title) then {
+ _title = localize _title;
+ };
+ if (isLocalized _content) then {
+ _content = localize _content;
+ };
- _localizationArray = [_title];
- {
- _localizationArray pushback _x;
- }foreach _parameters;
- _title = format _localizationArray;
+ _localizationArray = [_title];
+ {
+ _localizationArray pushback _x;
+ }foreach _parameters;
+ _title = format _localizationArray;
- _localizationArray = [_content];
- {
- _localizationArray pushback _x;
- }foreach _parameters;
- _content = format _localizationArray;
+ _localizationArray = [_content];
+ {
+ _localizationArray pushback _x;
+ }foreach _parameters;
+ _content = format _localizationArray;
- [_title,_content,_type] call EFUNC(common,displayMessage);
- };
+ [_title,_content,_type] call EFUNC(common,displayMessage);
+ };
};
\ No newline at end of file
diff --git a/addons/common/functions/script_component.hpp b/addons/common/functions/script_component.hpp
index d1032476b6..95b7e86461 100644
--- a/addons/common/functions/script_component.hpp
+++ b/addons/common/functions/script_component.hpp
@@ -1,13 +1,13 @@
#include "\z\ace\addons\common\script_component.hpp"
-#define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)})
-#define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo]
-#define HANDLECATCH diag_log text _exception; assert(exception=="")
+#define VALIDHASH(hash) (IS_ARRAY(hash) && {(count hash) >= 2} && {IS_ARRAY(hash select 0)} && {IS_ARRAY(hash select 1)})
+#define ERROR(msg) throw msg + format[" @ %1:%2", _callFrom, _lineNo]
+#define HANDLECATCH diag_log text _exception; assert(exception=="")
-#define ERRORDATA(c) private ["_callFrom", "_lineNo"];\
- _callFrom = "";\
- _lineNo = -1;\
- if((count _this) > c) then {\
- _callFrom = _this select c;\
- _lineNo = _this select c+1;\
- };
\ No newline at end of file
+#define ERRORDATA(c) private ["_callFrom", "_lineNo"];\
+ _callFrom = "";\
+ _lineNo = -1;\
+ if((count _this) > c) then {\
+ _callFrom = _this select c;\
+ _lineNo = _this select c+1;\
+ };
\ No newline at end of file
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 71d7bcd5a0..bcd2b149aa 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -1,351 +1,349 @@
-
+
-
-
- ACE-Team
- ACE-Team
- ACE-Team
- ACE-Team
- ACE-Team
- ACE-Team
- Команда ACE
- ACE-Team
- ACE-Team
- ACE-Team
-
-
- Save
- Speichern
- Guardar
- Zapisz
- Uložit
- Sauvegarder
- Сохранить
- Salvar
- Mentés
- Salva
-
-
- Cancel
- Abbrechen
- Cancelar
- Anuluj
- Zrušit
- Annuler
- Отмена
- Cancelar
- Mégse
- Annulla
-
-
- ACE Options
- ACE Optionen
- Opciones ACE
- Opcje ACE
- ACE Nastavení
- ACE Options
- ACE Настройки
- Opções do ACE
- ACE Opciók
- Opzioni ACE
-
-
-
- N
- N
- N
- N
- S
- N
- С
- N
- É
- N
-
-
- NNE
- NNO
- NNE
- NNE
- SSV
- NNE
- ССВ
- NNE
- ÉÉK
- NNE
-
-
- NE
- NO
- NE
- NE
- SV
- NE
- СВ
- NE
- ÉK
- NE
-
-
- ENE
- ONO
- ENE
- ENE
- VSV
- ENE
- ВСВ
- LNE
- KÉK
- ENE
-
-
- E
- O
- E
- E
- V
- E
- В
- L
- K
- E
-
-
- ESE
- OSO
- ESE
- ESE
- VJV
- ESE
- ВЮВ
- LSE
- KDK
- ESE
-
-
- SE
- SO
- SE
- SE
- JV
- SE
- ЮВ
- SE
- DK
- SE
-
-
- SSE
- SSO
- SSE
- SSE
- JJV
- SSE
- ЮЮВ
- SSE
- DDK
- SSE
-
-
- S
- S
- S
- S
- J
- S
- Ю
- S
- D
- S
-
-
- SSW
- SSW
- SSO
- SSW
- JJZ
- SSO
- ЮЮЗ
- SSO
- DDNy
- SSO
-
-
- SW
- SW
- SO
- SW
- JZ
- SO
- ЮЗ
- SO
- DNy
- SO
-
-
- WSW
- WSW
- OSO
- WSW
- ZJZ
- OSO
- ЗЮЗ
- OSO
- NyDNy
- OSO
-
-
- W
- W
- O
- W
- Z
- O
- З
- O
- Ny
- O
-
-
- WNW
- WNW
- ONO
- WNW
- ZSZ
- ONO
- ЗСЗ
- ONO
- NyÉNy
- ONO
-
-
- NW
- NW
- NO
- NW
- SZ
- NO
- СЗ
- NO
- ÉNy
- NO
-
-
- NNW
- NNW
- NNO
- NNW
- SSZ
- NNO
- ССЗ
- NNO
- ÉÉNy
- NNO
-
-
- Action cancelled.
- Aktion abgebrochen.
- Acción cancelada.
- Przerwano czynność
- Akce přerušena
- Action annulée.
- Действие отменено.
- Ação cancelada.
- Művelet megszakítva.
- Azione cancellata.
-
-
- [ACE] Miscellaneous Items
- [ACE] Verschiedenes
- [ACE] Objetos varios
- [ACE] Różne przedmioty
- [ACE] Ostatní předměty
- [ACE] Objets divers
- [ACE] Различные предметы
- [ACE] Itens diversos
- [ACE] Egyéb tárgyak
- [ACE] Oggetti vari
-
-
- Disable Command Menu
- Befehlsmenü ausschalten
- Desactivar menú de mando
- Wyłącz menu dowodzenia
- Vypnout velící menu
- Désactiver Menu Commande
- Выключить командное меню
- Parancsnoki menü kikapcsolása
-
-
- Unknown
- Unbekannt
- Desconocido
- Nieznany
- Neznámý
- Неизвестно
- Ismeretlen
-
-
- No Voice
- Keine Stimme
- Sin voz
- Brak głosu
- Žádný hlas
- Без голоса
- Nincs hang
-
-
- Accept Requests
- Akceptuj prośby
- Aceptar Peticiones
-
-
- Decline Requests
- Ignoruj prośby
- Rechazar Peticiones
-
-
- Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.
- Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.
- Acepta Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.
-
-
- Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.
- Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.
- Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.
-
-
- Feedback icons
-
-
- Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.
-
-
- Progress bar location
-
-
- Set the desired location of the progress bar on your screen.
-
-
- Hint Background color
-
-
- The color of the background from the ACE hints.
-
-
- Hint text font color
-
-
- The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.
-
-
-
- Banana
-
-
- A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.
-
-
-
+
+
+ ACE-Team
+ ACE-Team
+ ACE-Team
+ ACE-Team
+ ACE-Team
+ ACE-Team
+ Команда ACE
+ ACE-Team
+ ACE-Team
+ ACE-Team
+
+
+ Save
+ Speichern
+ Guardar
+ Zapisz
+ Uložit
+ Sauvegarder
+ Сохранить
+ Salvar
+ Mentés
+ Salva
+
+
+ Cancel
+ Abbrechen
+ Cancelar
+ Anuluj
+ Zrušit
+ Annuler
+ Отмена
+ Cancelar
+ Mégse
+ Annulla
+
+
+ ACE Options
+ ACE Optionen
+ Opciones ACE
+ Opcje ACE
+ ACE Nastavení
+ ACE Options
+ ACE Настройки
+ Opções do ACE
+ ACE Opciók
+ Opzioni ACE
+
+
+
+ N
+ N
+ N
+ N
+ S
+ N
+ С
+ N
+ É
+ N
+
+
+ NNE
+ NNO
+ NNE
+ NNE
+ SSV
+ NNE
+ ССВ
+ NNE
+ ÉÉK
+ NNE
+
+
+ NE
+ NO
+ NE
+ NE
+ SV
+ NE
+ СВ
+ NE
+ ÉK
+ NE
+
+
+ ENE
+ ONO
+ ENE
+ ENE
+ VSV
+ ENE
+ ВСВ
+ LNE
+ KÉK
+ ENE
+
+
+ E
+ O
+ E
+ E
+ V
+ E
+ В
+ L
+ K
+ E
+
+
+ ESE
+ OSO
+ ESE
+ ESE
+ VJV
+ ESE
+ ВЮВ
+ LSE
+ KDK
+ ESE
+
+
+ SE
+ SO
+ SE
+ SE
+ JV
+ SE
+ ЮВ
+ SE
+ DK
+ SE
+
+
+ SSE
+ SSO
+ SSE
+ SSE
+ JJV
+ SSE
+ ЮЮВ
+ SSE
+ DDK
+ SSE
+
+
+ S
+ S
+ S
+ S
+ J
+ S
+ Ю
+ S
+ D
+ S
+
+
+ SSW
+ SSW
+ SSO
+ SSW
+ JJZ
+ SSO
+ ЮЮЗ
+ SSO
+ DDNy
+ SSO
+
+
+ SW
+ SW
+ SO
+ SW
+ JZ
+ SO
+ ЮЗ
+ SO
+ DNy
+ SO
+
+
+ WSW
+ WSW
+ OSO
+ WSW
+ ZJZ
+ OSO
+ ЗЮЗ
+ OSO
+ NyDNy
+ OSO
+
+
+ W
+ W
+ O
+ W
+ Z
+ O
+ З
+ O
+ Ny
+ O
+
+
+ WNW
+ WNW
+ ONO
+ WNW
+ ZSZ
+ ONO
+ ЗСЗ
+ ONO
+ NyÉNy
+ ONO
+
+
+ NW
+ NW
+ NO
+ NW
+ SZ
+ NO
+ СЗ
+ NO
+ ÉNy
+ NO
+
+
+ NNW
+ NNW
+ NNO
+ NNW
+ SSZ
+ NNO
+ ССЗ
+ NNO
+ ÉÉNy
+ NNO
+
+
+ Action cancelled.
+ Aktion abgebrochen.
+ Acción cancelada.
+ Przerwano czynność
+ Akce přerušena
+ Action annulée.
+ Действие отменено.
+ Ação cancelada.
+ Művelet megszakítva.
+ Azione cancellata.
+
+
+ [ACE] Miscellaneous Items
+ [ACE] Verschiedenes
+ [ACE] Objetos varios
+ [ACE] Różne przedmioty
+ [ACE] Ostatní předměty
+ [ACE] Objets divers
+ [ACE] Различные предметы
+ [ACE] Itens diversos
+ [ACE] Egyéb tárgyak
+ [ACE] Oggetti vari
+
+
+ Disable Command Menu
+ Befehlsmenü ausschalten
+ Desactivar menú de mando
+ Wyłącz menu dowodzenia
+ Vypnout velící menu
+ Désactiver Menu Commande
+ Выключить командное меню
+ Parancsnoki menü kikapcsolása
+
+
+ Unknown
+ Unbekannt
+ Desconocido
+ Nieznany
+ Neznámý
+ Неизвестно
+ Ismeretlen
+
+
+ No Voice
+ Keine Stimme
+ Sin voz
+ Brak głosu
+ Žádný hlas
+ Без голоса
+ Nincs hang
+
+
+ Akceptuj prośby
+ Aceptar Peticiones
+ Accept Requests
+
+
+ Ignoruj prośby
+ Rechazar Peticiones
+ Decline Requests
+
+
+ Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.
+ Acepta Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.
+ Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions.
+
+
+ Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności.
+ Rechazar Peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones.
+ Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions.
+
+
+ Feedback icons
+
+
+ Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed.
+
+
+ Progress bar location
+
+
+ Set the desired location of the progress bar on your screen.
+
+
+ Hint Background color
+
+
+ The color of the background from the ACE hints.
+
+
+ Hint text font color
+
+
+ The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified.
+
+
+ Banana
+
+
+ A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa.
+
+
\ No newline at end of file
diff --git a/addons/disposable/script_component.hpp b/addons/disposable/script_component.hpp
index 6d26a5431c..375e44147d 100644
--- a/addons/disposable/script_component.hpp
+++ b/addons/disposable/script_component.hpp
@@ -2,11 +2,11 @@
#include "\z\ace\Addons\main\script_mod.hpp"
#ifdef DEBUG_ENABLED_ATTACH
- #define DEBUG_MODE_FULL
+ #define DEBUG_MODE_FULL
#endif
#ifdef DEBUG_SETTINGS_ATTACH
- #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
+ #define DEBUG_SETTINGS DEBUG_SETTINGS_ATTACH
#endif
#include "\z\ace\Addons\main\script_macros.hpp"
\ No newline at end of file
diff --git a/addons/dragging/functions/fnc_carryObject.sqf b/addons/dragging/functions/fnc_carryObject.sqf
index 2037dfc3f0..ee72dc9aa7 100644
--- a/addons/dragging/functions/fnc_carryObject.sqf
+++ b/addons/dragging/functions/fnc_carryObject.sqf
@@ -36,7 +36,7 @@ if (_target isKindOf "CAManBase") then {
// add height offset of model
private "_offset";
- _offset = (_target modelToWorld [0, 0, 0] select 2) - (_unit modelToWorld [0, 0, 0] select 2);
+ _offset = (_target modelToWorldVisual [0, 0, 0] select 2) - (_unit modelToWorldVisual [0, 0, 0] select 2);
_position = _position vectorAdd [0, 0, _offset];
diff --git a/addons/dragging/functions/fnc_dragObject.sqf b/addons/dragging/functions/fnc_dragObject.sqf
index f614af9548..35f8687ed0 100644
--- a/addons/dragging/functions/fnc_dragObject.sqf
+++ b/addons/dragging/functions/fnc_dragObject.sqf
@@ -25,7 +25,7 @@ _direction = _target getVariable [QGVAR(dragDirection), 0];
// add height offset of model
private "_offset";
-_offset = (_target modelToWorld [0, 0, 0] select 2) - (_unit modelToWorld [0, 0, 0] select 2);
+_offset = (_target modelToWorldVisual [0, 0, 0] select 2) - (_unit modelToWorldVisual [0, 0, 0] select 2);
_position = _position vectorAdd [0, 0, _offset];
diff --git a/addons/dragging/functions/fnc_getWeight.sqf b/addons/dragging/functions/fnc_getWeight.sqf
index 2b44bf90d9..871c49db89 100644
--- a/addons/dragging/functions/fnc_getWeight.sqf
+++ b/addons/dragging/functions/fnc_getWeight.sqf
@@ -1,20 +1,20 @@
/*
- Name: AGM_Drag_fnc_GetWeight
-
- Author(s):
- L-H, edited by commy2
+ Name: AGM_Drag_fnc_GetWeight
+
+ Author(s):
+ L-H, edited by commy2
- Description:
- Returns the weight of a crate.
-
- Parameters:
- 0: OBJECT - Crate to get weight of
-
- Returns:
- NUMBER - Weight
-
- Example:
- _weight = Crate1 call AGM_Drag_fnc_GetWeight;
+ Description:
+ Returns the weight of a crate.
+
+ Parameters:
+ 0: OBJECT - Crate to get weight of
+
+ Returns:
+ NUMBER - Weight
+
+ Example:
+ _weight = Crate1 call AGM_Drag_fnc_GetWeight;
*/
#include "script_component.hpp"
@@ -25,24 +25,24 @@ _object = _this select 0;
private ["_totalWeight", "_fnc","_fnc_Extra"];
_totalWeight = 0;
_fnc_Extra = {
- private ["_weight", "_items"];
- _items = _this select 0;
- _weight = 0;
- {
- _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
- } foreach (_items select 0);
-
- _weight
+ private ["_weight", "_items"];
+ _items = _this select 0;
+ _weight = 0;
+ {
+ _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> (_this select 2) >> "mass") * ((_items select 1) select _foreachIndex));
+ } foreach (_items select 0);
+
+ _weight
};
_fnc = {
- private ["_weight", "_items"];
- _items = _this select 0;
- _weight = 0;
- {
- _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
- } foreach (_items select 0);
-
- _weight
+ private ["_weight", "_items"];
+ _items = _this select 0;
+ _weight = 0;
+ {
+ _weight = _weight + (getNumber (ConfigFile >> (_this select 1) >> _x >> "mass") * ((_items select 1) select _foreachIndex));
+ } foreach (_items select 0);
+
+ _weight
};
_totalWeight = ([getMagazineCargo _object, "CfgMagazines"] call _fnc);
_totalWeight = _totalWeight + ([getItemCargo _object, "CfgWeapons", "ItemInfo"] call _fnc_Extra);
diff --git a/addons/dragging/functions/fnc_handleScrollWheel.sqf b/addons/dragging/functions/fnc_handleScrollWheel.sqf
index 0782e64db7..96f46413bc 100644
--- a/addons/dragging/functions/fnc_handleScrollWheel.sqf
+++ b/addons/dragging/functions/fnc_handleScrollWheel.sqf
@@ -36,7 +36,7 @@ if (_carriedItem isKindOf "CAManBase") exitWith {false};
private ["_position", "_maxHeight"];
_position = getPosATL _carriedItem;
-_maxHeight = (_unit ModelToWorld [0,0,0]) select 2;
+_maxHeight = (_unit modelToWorldVisual [0,0,0]) select 2;
_position set [2, ((_position select 2) + _scrollAmount min (_maxHeight + 1.5)) max _maxHeight];
diff --git a/addons/explosives/CfgACE_Triggers.hpp b/addons/explosives/CfgACE_Triggers.hpp
index 789786bb4f..6319444cb2 100644
--- a/addons/explosives/CfgACE_Triggers.hpp
+++ b/addons/explosives/CfgACE_Triggers.hpp
@@ -1,54 +1,54 @@
class CfgACE_Triggers {
- /* onPlace parameters:
- 0: OBJECT - unit placing
- 1: OBJECT - Placed explosive
- 2: STRING - Magazine classname
- 3: ARRAY - vars
- Last Index: CfgACE_Triggers config of trigger type.
- onSetup parameters:
- 0: STRING - Magazine Classname
- */
- class Command {
- displayName = $STR_ACE_Explosives_clacker_displayName;
- picture = PATHTOF(Data\UI\Clacker.paa);
- onPlace = QUOTE(_this call FUNC(AddClacker);false);
- requires[] = {"ACE_Clacker"};
- };
- class MK16_Transmitter:Command {
- displayName = $STR_ACE_Explosives_MK16_displayName;
- picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
- requires[] = {"ACE_M26_Clacker"};
- };
- class DeadManSwitch:Command {
- displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
- picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
- requires[] = {"ACE_DeadManSwitch"};
- };
- class Cellphone:Command {
- displayName = $STR_ACE_Explosives_cellphone_displayName;
- picture = PATHTOF(Data\UI\Cellphone_UI.paa);
- onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
- requires[] = {"ACE_Cellphone"};
- };
- class PressurePlate {
- displayName = $STR_ACE_Explosives_PressurePlate;
- picture = PATHTOF(Data\UI\PressurePlate.paa);
- onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
- };
- class IRSensor {
- displayName = $STR_ACE_Explosives_IRSensor;
- picture = PATHTOF(Data\UI\PressurePlate.paa);
- onPlace = "false";
- };
- class Timer {
- displayName = $STR_ACE_Explosives_timerName;
- picture = PATHTOF(data\UI\Timer.paa);
- onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
- onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
- };
- class Tripwire {
- displayName = $STR_ACE_Explosives_TripWire;
- picture = PATHTOF(Data\UI\Tripwire.paa);
- onPlace = "false";
- };
+/* onPlace parameters:
+0: OBJECT - unit placing
+1: OBJECT - Placed explosive
+2: STRING - Magazine classname
+3: ARRAY - vars
+Last Index: CfgACE_Triggers config of trigger type.
+onSetup parameters:
+0: STRING - Magazine Classname
+*/
+ class Command {
+ displayName = $STR_ACE_Explosives_clacker_displayName;
+ picture = PATHTOF(Data\UI\Clacker.paa);
+ onPlace = QUOTE(_this call FUNC(AddClacker);false);
+ requires[] = {"ACE_Clacker"};
+ };
+ class MK16_Transmitter:Command {
+ displayName = $STR_ACE_Explosives_MK16_displayName;
+ picture = PATHTOF(Data\UI\MK16_Reciever_ca.paa);
+ requires[] = {"ACE_M26_Clacker"};
+ };
+ class DeadManSwitch:Command {
+ displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
+ picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
+ requires[] = {"ACE_DeadManSwitch"};
+ };
+ class Cellphone:Command {
+ displayName = $STR_ACE_Explosives_cellphone_displayName;
+ picture = PATHTOF(Data\UI\Cellphone_UI.paa);
+ onPlace = QUOTE(_this call FUNC(addCellphoneIED);false);
+ requires[] = {"ACE_Cellphone"};
+ };
+ class PressurePlate {
+ displayName = $STR_ACE_Explosives_PressurePlate;
+ picture = PATHTOF(Data\UI\PressurePlate.paa);
+ onPlace = "_dist=GetNumber(ConfigFile >> 'CfgMagazines' >> (_this select 2) >> 'ACE_Triggers' >> 'PressurePlate' >> 'digDistance');_ex=_this select 1;_ex setPosATL ((getPosATL _ex) vectorDiff ((VectorUp _ex) vectorCrossProduct [0,0,_dist]));false";
+ };
+ class IRSensor {
+ displayName = $STR_ACE_Explosives_IRSensor;
+ picture = PATHTOF(Data\UI\PressurePlate.paa);
+ onPlace = "false";
+ };
+ class Timer {
+ displayName = $STR_ACE_Explosives_timerName;
+ picture = PATHTOF(data\UI\Timer.paa);
+ onPlace = QUOTE([ARR_2(_this select 1,(_this select 3) select 0)] call FUNC(startTimer);false);
+ onSetup = QUOTE(_this call FUNC(openTimerSetUI);true);
+ };
+ class Tripwire {
+ displayName = $STR_ACE_Explosives_TripWire;
+ picture = PATHTOF(Data\UI\Tripwire.paa);
+ onPlace = "false";
+ };
};
diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp
index 4a6e898886..fc9e4712dc 100644
--- a/addons/explosives/CfgAmmo.hpp
+++ b/addons/explosives/CfgAmmo.hpp
@@ -1,78 +1,78 @@
class CfgAmmo {
- // All explosive based Ammo classes. These are all listed in case they become required.
- class Default;
+ // All explosive based Ammo classes. These are all listed in case they become required.
+ class Default;
- class TimeBombCore:Default {
- ACE_DefuseTime = 5;
- };
- /*
- class BoundingMineCore:TimeBombCore;
- class BoundingMineBase:BoundingMineCore;
- class APERSBoundingMine_Range_Ammo:BoundingMineBase;
+ class TimeBombCore:Default {
+ ACE_DefuseTime = 5;
+ };
+ /*
+ class BoundingMineCore:TimeBombCore;
+ class BoundingMineBase:BoundingMineCore;
+ class APERSBoundingMine_Range_Ammo:BoundingMineBase;
- class MineCore: TimeBombCore;
- class MineBase:MineCore;
- class APERSMine_Range_Ammo:MineBase;
- class ATMine_Range_Ammo:MineBase;
+ class MineCore: TimeBombCore;
+ class MineBase:MineCore;
+ class APERSMine_Range_Ammo:MineBase;
+ class ATMine_Range_Ammo:MineBase;
- class UnderwaterMine_Range_Ammo:MineBase;
- class UnderwaterMineAB_Range_Ammo:UnderwaterMine_Range_Ammo;
- class UnderwaterMinePDM_Range_Ammo:UnderwaterMine_Range_Ammo;
+ class UnderwaterMine_Range_Ammo:MineBase;
+ class UnderwaterMineAB_Range_Ammo:UnderwaterMine_Range_Ammo;
+ class UnderwaterMinePDM_Range_Ammo:UnderwaterMine_Range_Ammo;
- class DirectionalBombCore:TimeBombCore;
- class DirectionalBombBase:DirectionalBombCore;
- class APERSTripMine_Wire_Ammo:DirectionalBombBase;
+ class DirectionalBombCore:TimeBombCore;
+ class DirectionalBombBase:DirectionalBombCore;
+ class APERSTripMine_Wire_Ammo:DirectionalBombBase;
- class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase;
+ class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase;
- class PipeBombCore: TimeBombCore;
- class PipeBombBase:PipeBombCore;
- */
- class DirectionalBombBase;
- class ClaymoreDirectionalMine_Remote_Ammo:DirectionalBombBase{
- ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
- soundActivation[] = {"",0,0,0};
- soundDeactivation[] = {"",0,0,0};
- };
- //class ClaymoreDirectionalMine_Remote_Ammo_Scripted:ClaymoreDirectionalMine_Remote_Ammo;
+ class PipeBombCore: TimeBombCore;
+ class PipeBombBase:PipeBombCore;
+ */
+ class DirectionalBombBase;
+ class ClaymoreDirectionalMine_Remote_Ammo:DirectionalBombBase{
+ ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
+ soundActivation[] = {"",0,0,0};
+ soundDeactivation[] = {"",0,0,0};
+ };
+ //class ClaymoreDirectionalMine_Remote_Ammo_Scripted:ClaymoreDirectionalMine_Remote_Ammo;
- class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase{
- indirectHitRange = 20;
- ACE_explodeOnDefuse = 1;
- };
- class SLAMDirectionalMine_Command_Ammo:SLAMDirectionalMine_Wire_Ammo {
- mineTrigger = "RemoteTrigger";
- ACE_explodeOnDefuse = 0;
- };
- class SLAMDirectionalMine_Timer_Ammo:SLAMDirectionalMine_Wire_Ammo {
- mineTrigger = "TimeTrigger";
- ACE_explodeOnDefuse = 0;
- };
- class SLAMDirectionalMine_Magnetic_Ammo:SLAMDirectionalMine_Wire_Ammo {
- mineTrigger = "MagneticTrigger";
- };
+ class SLAMDirectionalMine_Wire_Ammo:DirectionalBombBase{
+ indirectHitRange = 20;
+ ACE_explodeOnDefuse = 1;
+ };
+ class SLAMDirectionalMine_Command_Ammo:SLAMDirectionalMine_Wire_Ammo {
+ mineTrigger = "RemoteTrigger";
+ ACE_explodeOnDefuse = 0;
+ };
+ class SLAMDirectionalMine_Timer_Ammo:SLAMDirectionalMine_Wire_Ammo {
+ mineTrigger = "TimeTrigger";
+ ACE_explodeOnDefuse = 0;
+ };
+ class SLAMDirectionalMine_Magnetic_Ammo:SLAMDirectionalMine_Wire_Ammo {
+ mineTrigger = "MagneticTrigger";
+ };
- class PipeBombBase;
- class DemoCharge_Remote_Ammo:PipeBombBase{
- ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
- soundActivation[] = {"",0,0,0};
- soundDeactivation[] = {"",0,0,0};
- hit = 500;
- indirectHit = 500;
- indirectHitRange = 7;
- };
- class SatchelCharge_Remote_Ammo:PipeBombBase{
- ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
- soundActivation[] = {"",0,0,0};
- soundDeactivation[] = {"",0,0,0};
- };
- /*
- class DemoCharge_Remote_Ammo_Scripted:DemoCharge_Remote_Ammo;
- class SatchelCharge_Remote_Ammo_Scripted:SatchelCharge_Remote_Ammo;
+ class PipeBombBase;
+ class DemoCharge_Remote_Ammo:PipeBombBase{
+ ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
+ soundActivation[] = {"",0,0,0};
+ soundDeactivation[] = {"",0,0,0};
+ hit = 500;
+ indirectHit = 500;
+ indirectHitRange = 7;
+ };
+ class SatchelCharge_Remote_Ammo:PipeBombBase{
+ ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
+ soundActivation[] = {"",0,0,0};
+ soundDeactivation[] = {"",0,0,0};
+ };
+ /*
+ class DemoCharge_Remote_Ammo_Scripted:DemoCharge_Remote_Ammo;
+ class SatchelCharge_Remote_Ammo_Scripted:SatchelCharge_Remote_Ammo;
TODO: Configure IEDs to use the system.
- class IEDLandBig_Remote_Ammo:PipeBombBase{
- triggerWhenDestroyed = 1;
+ class IEDLandBig_Remote_Ammo:PipeBombBase{
+ triggerWhenDestroyed = 1;
};
class IEDLandSmall_Remote_Ammo:PipeBombBase{
triggerWhenDestroyed = 1;
diff --git a/addons/explosives/CfgEventHandlers.hpp b/addons/explosives/CfgEventHandlers.hpp
index cefc2fe389..8d0b110935 100644
--- a/addons/explosives/CfgEventHandlers.hpp
+++ b/addons/explosives/CfgEventHandlers.hpp
@@ -1,20 +1,20 @@
class Extended_PreInit_EventHandlers {
- class ADDON {
- init = QUOTE(call COMPILE_FILE(XEH_preInit));
- };
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_preInit));
+ };
};
class Extended_PostInit_EventHandlers {
- class ADDON {
- init = QUOTE(call COMPILE_FILE(XEH_postInit));
- };
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_postInit));
+ };
};
/*
TODO: Move the addEventHandlers out of PostInit into here or separate eventHandlers,
- to enable them on all units, so unit switching works for explosives properly.
+to enable them on all units, so unit switching works for explosives properly.
class Extended_Init_EventHandlers {
- class CAManBase {
- init = "";
- }
+class CAManBase {
+init = "";
+}
}
*/
diff --git a/addons/explosives/CfgMagazines.hpp b/addons/explosives/CfgMagazines.hpp
index 51c85e607f..b89a207992 100644
--- a/addons/explosives/CfgMagazines.hpp
+++ b/addons/explosives/CfgMagazines.hpp
@@ -1,127 +1,127 @@
class CfgMagazines {
- class CA_Magazine;
- class ATMine_Range_Mag:CA_Magazine{
- ACE_Placeable = 1;
- useAction = 0;
- ACE_SetupObject = "ACE_Explosives_Place_ATMine"; // CfgVehicle class for setup object.
- ACE_DelayTime = 2.5;
- class ACE_Triggers {
- SupportedTriggers[] = {"PressurePlate"};
- class PressurePlate {
- digDistance = 0.1;
- };
+ class CA_Magazine;
+ class ATMine_Range_Mag:CA_Magazine{
+ ACE_Placeable = 1;
+ useAction = 0;
+ ACE_SetupObject = "ACE_Explosives_Place_ATMine"; // CfgVehicle class for setup object.
+ ACE_DelayTime = 2.5;
+ class ACE_Triggers {
+ SupportedTriggers[] = {"PressurePlate"};
+ class PressurePlate {
+ digDistance = 0.1;
+ };
+ };
};
- };
- class APERSBoundingMine_Range_Mag:ATMine_Range_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_APERSBoundingMine";
- class ACE_Triggers {
- SupportedTriggers[] = {"PressurePlate"};
- class PressurePlate {
- digDistance = 0.075;
- };
+ class APERSBoundingMine_Range_Mag:ATMine_Range_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_APERSBoundingMine";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"PressurePlate"};
+ class PressurePlate {
+ digDistance = 0.075;
+ };
+ };
};
- };
- class APERSMine_Range_Mag:ATMine_Range_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_APERSMine";
- class ACE_Triggers {
- SupportedTriggers[] = {"PressurePlate"};
- class PressurePlate {
- digDistance = 0.05;
- };
+ class APERSMine_Range_Mag:ATMine_Range_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_APERSMine";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"PressurePlate"};
+ class PressurePlate {
+ digDistance = 0.05;
+ };
+ };
};
- };
- class APERSTripMine_Wire_Mag:ATMine_Range_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_APERSTripwireMine";
- class ACE_Triggers {
- SupportedTriggers[] = {"Tripwire"};
- class Tripwire;
+ class APERSTripMine_Wire_Mag:ATMine_Range_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_APERSTripwireMine";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"Tripwire"};
+ class Tripwire;
+ };
};
- };
- class ClaymoreDirectionalMine_Remote_Mag:CA_Magazine{
- ACE_Placeable = 1;
- useAction = 0;
- ACE_SetupObject = "ACE_Explosives_Place_Claymore";
- ACE_DelayTime = 1.5;
- class ACE_Triggers {
- SupportedTriggers[] = {"Command"};
- class Command {
- FuseTime = 0.5;
- };
+ class ClaymoreDirectionalMine_Remote_Mag:CA_Magazine{
+ ACE_Placeable = 1;
+ useAction = 0;
+ ACE_SetupObject = "ACE_Explosives_Place_Claymore";
+ ACE_DelayTime = 1.5;
+ class ACE_Triggers {
+ SupportedTriggers[] = {"Command"};
+ class Command {
+ FuseTime = 0.5;
+ };
+ };
};
- };
- class SatchelCharge_Remote_Mag:CA_Magazine{
- ACE_Placeable = 1;
- useAction = 0;
- ACE_SetupObject = "ACE_Explosives_Place_SatchelCharge";
- ACE_DelayTime = 1;
- class ACE_Triggers {
- SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"};
- class Timer {
- FuseTime = 0.5;
- };
- class Command {
- FuseTime = 0.5;
- };
- class MK16_Transmitter:Command{};
- class DeadmanSwitch:Command{};
+ class SatchelCharge_Remote_Mag:CA_Magazine{
+ ACE_Placeable = 1;
+ useAction = 0;
+ ACE_SetupObject = "ACE_Explosives_Place_SatchelCharge";
+ ACE_DelayTime = 1;
+ class ACE_Triggers {
+ SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"};
+ class Timer {
+ FuseTime = 0.5;
+ };
+ class Command {
+ FuseTime = 0.5;
+ };
+ class MK16_Transmitter:Command{};
+ class DeadmanSwitch:Command{};
+ };
+ };
+ class DemoCharge_Remote_Mag:SatchelCharge_Remote_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_DemoCharge";
+ model = "\A3\Weapons_F\explosives\c4_charge_small_d";
};
- };
- class DemoCharge_Remote_Mag:SatchelCharge_Remote_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_DemoCharge";
- model = "\A3\Weapons_F\explosives\c4_charge_small_d";
- };
- class SLAMDirectionalMine_Wire_Mag: ATMine_Range_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_SLAM";
- class ACE_Triggers {
- SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
- class PressurePlate{
- displayName = $STR_ACE_Explosives_SLAME_Magnetic;
- digDistance = 0;
- ammo = "SLAMDirectionalMine_Magnetic_Ammo";
- pitch = 90;
- };
- class IRSensor{
- displayName = $STR_ACE_Explosives_SLAME_IRSensor;
- };
- class Timer {
- ammo = "SLAMDirectionalMine_Timer_Ammo";
- };
- class Command {
- ammo = "SLAMDirectionalMine_Command_Ammo";
- fuseTime = 0.5;
- };
+ class SLAMDirectionalMine_Wire_Mag: ATMine_Range_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_SLAM";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"IRSensor","PressurePlate","Timer","Command"};
+ class PressurePlate{
+ displayName = $STR_ACE_Explosives_SLAME_Magnetic;
+ digDistance = 0;
+ ammo = "SLAMDirectionalMine_Magnetic_Ammo";
+ pitch = 90;
+ };
+ class IRSensor{
+ displayName = $STR_ACE_Explosives_SLAME_IRSensor;
+ };
+ class Timer {
+ ammo = "SLAMDirectionalMine_Timer_Ammo";
+ };
+ class Command {
+ ammo = "SLAMDirectionalMine_Command_Ammo";
+ fuseTime = 0.5;
+ };
+ };
};
- };
- class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag {
- ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig";
- class ACE_Triggers {
- SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
- class Command {
- FuseTime = 0.5;
- };
- class DeadmanSwitch:Command{};
- class Cellphone:Command{};
+ class IEDUrbanBig_Remote_Mag: DemoCharge_Remote_Mag {
+ ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanBig";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
+ class Command {
+ FuseTime = 0.5;
+ };
+ class DeadmanSwitch:Command{};
+ class Cellphone:Command{};
+ };
};
- };
- class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag{
- ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig";
- };
- class IEDUrbanSmall_Remote_Mag: DemoCharge_Remote_Mag {
- ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanSmall";
- class ACE_Triggers {
- SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
- class Command {
- FuseTime = 0.5;
- };
- class DeadmanSwitch:Command{};
- class Cellphone:Command{};
+ class IEDLandBig_Remote_Mag: IEDUrbanBig_Remote_Mag{
+ ACE_SetupObject = "ACE_Explosives_Place_IEDLandBig";
+ };
+ class IEDUrbanSmall_Remote_Mag: DemoCharge_Remote_Mag {
+ ACE_SetupObject = "ACE_Explosives_Place_IEDUrbanSmall";
+ class ACE_Triggers {
+ SupportedTriggers[] = {"Command","DeadmanSwitch", "Cellphone"};
+ class Command {
+ FuseTime = 0.5;
+ };
+ class DeadmanSwitch:Command{};
+ class Cellphone:Command{};
+ };
+ };
+ class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag {
+ ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall";
};
- };
- class IEDLandSmall_Remote_Mag: IEDUrbanSmall_Remote_Mag {
- ACE_SetupObject = "ACE_Explosives_Place_IEDLandSmall";
- };
};
diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp
index fe467cbb53..b4f7b65a83 100644
--- a/addons/explosives/CfgModule.hpp
+++ b/addons/explosives/CfgModule.hpp
@@ -1,44 +1,44 @@
class Module_F;
class ACE_ModuleExplosive: Module_F {
- author = "$STR_ACE_Common_ACETeam";
- category = "ACE";
- displayName = "Explosive System";
- function = QUOTE(FUNC(module));
- scope = 2;
- isGlobal = 1;
- icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
- class Arguments {
- class RequireSpecialist {
- displayName = "Require specialists?";
- description = "Require explosive specialists to disable explosives? Default: No";
- typeName = "BOOL";
- class values {
- class Yes {
- name = "Yes";
- value = 1;
+ author = "$STR_ACE_Common_ACETeam";
+ category = "ACE";
+ displayName = "Explosive System";
+ function = QUOTE(FUNC(module));
+ scope = 2;
+ isGlobal = 1;
+ icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa);
+ class Arguments {
+ class RequireSpecialist {
+ displayName = "Require specialists?";
+ description = "Require explosive specialists to disable explosives? Default: No";
+ typeName = "BOOL";
+ class values {
+ class Yes {
+ name = "Yes";
+ value = 1;
+ };
+ class No {
+ default = 1;
+ name = "No";
+ value = 0;
+ };
+ };
};
- class No {
- default = 1;
- name = "No";
- value = 0;
+ class PunishNonSpecialists {
+ displayName = "Punish non-specialists?";
+ description = "Increase the time it takes to complete actions for non-specialists? Default: Yes";
+ typeName = "BOOL";
+ class values {
+ class Yes {
+ default = 1;
+ name = "Yes";
+ value = 1;
+ };
+ class No {
+ name = "No";
+ value = 0;
+ };
+ };
};
- };
};
- class PunishNonSpecialists {
- displayName = "Punish non-specialists?";
- description = "Increase the time it takes to complete actions for non-specialists? Default: Yes";
- typeName = "BOOL";
- class values {
- class Yes {
- default = 1;
- name = "Yes";
- value = 1;
- };
- class No {
- name = "No";
- value = 0;
- };
- };
- };
- };
};
diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp
index af2ed90cb6..30e1ff151d 100644
--- a/addons/explosives/CfgVehicles.hpp
+++ b/addons/explosives/CfgVehicles.hpp
@@ -1,275 +1,327 @@
class CfgVehicles {
- class Man;
-
- class CAManBase: Man {
- class ACE_SelfActions {
- class ACE_Explosives {
- displayName = $STR_ACE_Explosives_Menu;
- condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
- statement = "";
- exceptions[] = {"isNotSwimming"};
- showDisabled = 1;
- priority = 4;
- icon = PATHTOF(UI\Explosives_Menu_ca.paa);
- hotkey = "X";
- //Sub-menu items
- class ACE_Detonate {
- displayName = $STR_ACE_Explosives_Detonate;
- condition = QUOTE([_player] call FUNC(canDetonate));
- statement = QUOTE([_player] call FUNC(openTransmitterUI););
- exceptions[] = {"isNotSwimming"};
- showDisabled = 1;
- icon = PATHTOF(UI\Explosives_Menu_ca.paa);
- priority = 2;
- hotkey = "T";
+ class Man;
+ class CAManBase: Man {
+ class ACE_SelfActions {
+ class ACE_Explosives {
+ displayName = $STR_ACE_Explosives_Menu;
+ condition = QUOTE(!(_player getVariable [ARR_2('ace_explosives_PlantingExplosive',false)]));
+ statement = "";
+ exceptions[] = {"isNotSwimming", "isNotInside"};
+ showDisabled = 1;
+ priority = 4;
+ icon = PATHTOF(UI\Explosives_Menu_ca.paa);
+ hotkey = "X";
+ //Sub-menu items
+ class ACE_Detonate {
+ displayName = $STR_ACE_Explosives_Detonate;
+ condition = QUOTE([_player] call FUNC(canDetonate));
+ statement = "";
+ insertChildren = QUOTE([_player] call FUNC(addTransmitterActions););
+ exceptions[] = {"isNotSwimming", "isNotInside"};
+ showDisabled = 1;
+ icon = PATHTOF(UI\Explosives_Menu_ca.paa);
+ priority = 2;
+ hotkey = "T";
+ };
+ class ACE_Place {
+ displayName = $STR_ACE_Explosives_Place;
+ condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
+ statement = "";
+ insertChildren = QUOTE([_player] call FUNC(addExplosiveActions););
+ exceptions[] = {"isNotSwimming"};
+ showDisabled = 1;
+ icon = PATHTOF(UI\Place_Explosive_ca.paa);
+ priority = 1;
+ hotkey = "P";
+ };
+ class ACE_Cellphone {
+ displayName = $STR_ACE_Explosives_cellphone_displayName;
+ condition = "('ACE_Cellphone' in (items ace_player))";
+ statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
+ exceptions[] = {"isNotSwimming", "isNotInside"};
+ showDisabled = 0;
+ icon = PATHTOF(Data\UI\Cellphone_UI.paa);
+ priority = 0.8;
+ };
+ };
};
- class ACE_Place {
- displayName = $STR_ACE_Explosives_Place;
- condition = QUOTE((vehicle _player == _player) and {[_player] call FUNC(hasExplosives)});
- statement = QUOTE([_player] call FUNC(openPlaceUI););
- exceptions[] = {"isNotSwimming"};
- showDisabled = 1;
- icon = PATHTOF(UI\Place_Explosive_ca.paa);
- priority = 1;
- hotkey = "P";
+ };
+
+ class Items_base_F;
+ class ACE_DefuseObject: Items_base_F {
+ XEH_ENABLED;
+ author = "ACE";
+ _generalMacro = "ACE_DefuseObject";
+ displayName = "ACE Defuse Helper";
+ mapSize = 0.2;
+ icon = "iconObject_1x2";
+ model = "\A3\Weapons_f\dummyweapon.p3d";
+ scope = 2;
+ scopeCurator = 1;
+ vehicleClass = "Cargo";
+ class ACE_Actions {
+ class ACE_MainActions {
+ selection = "";
+ distance = 5;
+ condition = "true";
+ class ACE_Defuse {
+ displayName = $STR_ACE_Explosives_Defuse;
+ condition = QUOTE([ARR_2(_player,_target)] call FUNC(canDefuse));
+ statement = QUOTE([ARR_2(_player,_target)] call FUNC(startDefuse););
+ exceptions[] = {"isNotSwimming"};
+ showDisabled = 0;
+ icon = PATHTOF(UI\Defuse_ca.paa);
+ priority = 0.8;
+ hotkey = "F";
+ distance = 5;
+ };
+ };
};
- class ACE_Defuse {
- displayName = $STR_ACE_Explosives_Defuse;
- condition = QUOTE([_player] call FUNC(canDefuse));
- statement = QUOTE([ARR_2(_player,EGVAR(Interaction,Target))] call FUNC(startDefuse););
- exceptions[] = {"isNotSwimming"};
- showDisabled = 0;
- icon = PATHTOF(UI\Defuse_ca.paa);
- priority = 0.8;
- hotkey = "F";
+ };
+ class ACE_Explosives_Place: Items_base_F {
+ XEH_ENABLED;
+ author = "ACE";
+ _generalMacro = "ACE_Explosives_Place";
+ displayName = "Multi-meter";
+ mapSize = 0.2;
+ icon = "iconObject_1x2";
+ model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
+ scope = 2;
+ scopeCurator = 1;
+ vehicleClass = "Cargo";
+ ACE_offset[] = {0,0,0};
+ class ACE_Actions {
+ class ACE_MainActions {
+ selection = "";
+ distance = 5;
+ condition = "true";
+ class ACE_SetTrigger {
+ selection = "";
+ displayName = "$STR_ACE_Explosives_TriggerMenu";
+ distance = 4;
+ condition = "true";
+ statement = "";
+ insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
+ showDisabled = 0;
+ exceptions[] = {};
+ priority = 5;
+ icon = QUOTE(PATHTOF(UI\Explosives_Menu_ca.paa));
+ };
+ class ACE_PickUp {
+ selection = "";
+ displayName = "$STR_ACE_Explosives_Pickup";
+ distance = 4;
+ condition = "true";
+ statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
+ showDisabled = 0;
+ exceptions[] = {};
+ priority = 5;
+ icon = "\A3\ui_f\data\IGUI\Cfg\Actions\Obsolete\ui_action_takemine_ca.paa";
+ };
+ };
};
- class ACE_Cellphone {
- displayName = $STR_ACE_Explosives_cellphone_displayName;
- condition = "('ACE_Cellphone' in (items ace_player))";
- statement = "closeDialog 0;createDialog 'Rsc_ACE_PhoneInterface';";
- exceptions[] = {"isNotSwimming"};
- showDisabled = 0;
- icon = PATHTOF(Data\UI\Cellphone_UI.paa);
- priority = 0.8;
+ };
+
+ class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place {
+ displayName = "Demo Charge";
+ model = "\A3\Weapons_F\explosives\c4_charge_small_d";
+ };
+ class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place {
+ displayName = "APERS Bounding Mine";
+ model = "\A3\Weapons_F\explosives\mine_AP_bouncing";
+ };
+ class ACE_Explosives_Place_APERSMine:ACE_Explosives_Place {
+ displayName = "APERS Mine";
+ model = "\A3\Weapons_F\explosives\mine_ap";
+ };
+ class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
+ displayName = "APERS Tripwire Mine";
+ model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
+ ACE_offset[] = {1,0,0};
+ };
+
+ class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {
+ displayName = "AT Mine";
+ model = "\A3\Weapons_f\Explosives\mine_at";
+ };
+
+ class ACE_Explosives_Place_Claymore:ACE_Explosives_Place {
+ displayName = "Claymore";
+ model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore";
+ };
+
+ class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place {
+ displayName = "Satchel Charge";
+ model = "\A3\Weapons_F\Explosives\satchel";
+ };
+
+ class ACE_Explosives_Place_SLAM:ACE_Explosives_Place {
+ displayName = "SLAM";
+ model = "\A3\Weapons_F\Explosives\mine_SLAM_directional";
+ };
+
+ // IEDs
+ class ACE_Explosives_Place_IEDUrbanBig:ACE_Explosives_Place {
+ displayName = "IED Urban Big";
+ model = "\A3\Weapons_F\Explosives\IED_urban_big";
+ };
+
+ class ACE_Explosives_Place_IEDLandBig:ACE_Explosives_Place {
+ displayName = "IED Land Big";
+ model = "\A3\Weapons_F\Explosives\IED_land_big";
+ };
+
+ class ACE_Explosives_Place_IEDUrbanSmall:ACE_Explosives_Place {
+ displayName = "IED Urban Small";
+ model = "\A3\Weapons_F\Explosives\IED_urban_small";
+ };
+
+ class ACE_Explosives_Place_IEDLandSmall:ACE_Explosives_Place {
+ displayName = "IED Land Small";
+ model = "\A3\Weapons_F\Explosives\IED_land_small";
+ };
+
+ class NATO_Box_Base;
+ class EAST_Box_Base;
+ class IND_Box_Base;
+ class FIA_Box_Base_F;
+ class Box_NATO_Support_F;
+
+ class Box_NATO_AmmoOrd_F: NATO_Box_Base {
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Clacker,12);
+ MACRO_ADDITEM(ACE_M26_Clacker,6);
+ MACRO_ADDITEM(ACE_DefusalKit,12);
};
- };
};
- };
- class Items_base_F;
- class ACE_Explosives_Place: Items_base_F {
- author = "ACE";
- _generalMacro = "ACE_Explosives_Place";
- displayName = "Multi-meter";
- mapSize = 0.2;
- icon = "iconObject_1x2";
- model = "\A3\Structures_F\Items\Tools\MultiMeter_F.p3d";
- scope = 2;
- scopeCurator = 1;
- vehicleClass = "Cargo";
- ACE_offset[] = {0,0,0};
- };
-
- class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place {
- displayName = "Demo Charge";
- model = "\A3\Weapons_F\explosives\c4_charge_small_d";
- };
- class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place {
- displayName = "APERS Bounding Mine";
- model = "\A3\Weapons_F\explosives\mine_AP_bouncing";
- };
- class ACE_Explosives_Place_APERSMine:ACE_Explosives_Place {
- displayName = "APERS Mine";
- model = "\A3\Weapons_F\explosives\mine_ap";
- };
- class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
- displayName = "APERS Tripwire Mine";
- model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
- ACE_offset[] = {1,0,0};
- };
-
- class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {
- displayName = "AT Mine";
- model = "\A3\Weapons_f\Explosives\mine_at";
- };
-
- class ACE_Explosives_Place_Claymore:ACE_Explosives_Place {
- displayName = "Claymore";
- model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore";
- };
-
- class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place {
- displayName = "Satchel Charge";
- model = "\A3\Weapons_F\Explosives\satchel";
- };
-
- class ACE_Explosives_Place_SLAM:ACE_Explosives_Place {
- displayName = "SLAM";
- model = "\A3\Weapons_F\Explosives\mine_SLAM_directional";
- };
-
- // IEDs
- class ACE_Explosives_Place_IEDUrbanBig:ACE_Explosives_Place {
- displayName = "IED Urban Big";
- model = "\A3\Weapons_F\Explosives\IED_urban_big";
- };
-
- class ACE_Explosives_Place_IEDLandBig:ACE_Explosives_Place {
- displayName = "IED Land Big";
- model = "\A3\Weapons_F\Explosives\IED_land_big";
- };
-
- class ACE_Explosives_Place_IEDUrbanSmall:ACE_Explosives_Place {
- displayName = "IED Urban Small";
- model = "\A3\Weapons_F\Explosives\IED_urban_small";
- };
-
- class ACE_Explosives_Place_IEDLandSmall:ACE_Explosives_Place {
- displayName = "IED Land Small";
- model = "\A3\Weapons_F\Explosives\IED_land_small";
- };
-
- class NATO_Box_Base;
- class EAST_Box_Base;
- class IND_Box_Base;
- class FIA_Box_Base_F;
- class Box_NATO_Support_F;
-
- class Box_NATO_AmmoOrd_F: NATO_Box_Base {
- class TransportItems {
- MACRO_ADDITEM(ACE_Clacker,12);
- MACRO_ADDITEM(ACE_M26_Clacker,6);
- MACRO_ADDITEM(ACE_DefusalKit,12);
+ class Box_East_AmmoOrd_F: EAST_Box_Base {
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Clacker,12);
+ MACRO_ADDITEM(ACE_M26_Clacker,6);
+ MACRO_ADDITEM(ACE_DefusalKit,12);
+ };
};
- };
- class Box_East_AmmoOrd_F: EAST_Box_Base {
- class TransportItems {
- MACRO_ADDITEM(ACE_Clacker,12);
- MACRO_ADDITEM(ACE_M26_Clacker,6);
- MACRO_ADDITEM(ACE_DefusalKit,12);
+ class Box_IND_AmmoOrd_F: IND_Box_Base {
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Clacker,12);
+ MACRO_ADDITEM(ACE_M26_Clacker,6);
+ MACRO_ADDITEM(ACE_DefusalKit,12);
+ MACRO_ADDITEM(ACE_Deadmanswitch,2);
+ MACRO_ADDITEM(ACE_Cellphone,3);
+ };
};
- };
- class Box_IND_AmmoOrd_F: IND_Box_Base {
- class TransportItems {
- MACRO_ADDITEM(ACE_Clacker,12);
- MACRO_ADDITEM(ACE_M26_Clacker,6);
- MACRO_ADDITEM(ACE_DefusalKit,12);
- MACRO_ADDITEM(ACE_Deadmanswitch,2);
- MACRO_ADDITEM(ACE_Cellphone,3);
+ class Box_FIA_Ammo_F: FIA_Box_Base_F {
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Clacker,2);
+ MACRO_ADDITEM(ACE_M26_Clacker,2);
+ MACRO_ADDITEM(ACE_DefusalKit,2);
+ MACRO_ADDITEM(ACE_Deadmanswitch,1);
+ MACRO_ADDITEM(ACE_Cellphone,2);
+ };
};
- };
- class Box_FIA_Ammo_F: FIA_Box_Base_F {
- class TransportItems {
- MACRO_ADDITEM(ACE_Clacker,2);
- MACRO_ADDITEM(ACE_M26_Clacker,2);
- MACRO_ADDITEM(ACE_DefusalKit,2);
- MACRO_ADDITEM(ACE_Deadmanswitch,1);
- MACRO_ADDITEM(ACE_Cellphone,2);
+ class ACE_Box_Misc: Box_NATO_Support_F {
+ class TransportItems {
+ MACRO_ADDITEM(ACE_Clacker,12);
+ MACRO_ADDITEM(ACE_M26_Clacker,6);
+ MACRO_ADDITEM(ACE_DefusalKit,12);
+ MACRO_ADDITEM(ACE_Deadmanswitch,6);
+ MACRO_ADDITEM(ACE_Cellphone,10);
+ };
};
- };
- class ACE_Box_Misc: Box_NATO_Support_F {
- class TransportItems {
- MACRO_ADDITEM(ACE_Clacker,12);
- MACRO_ADDITEM(ACE_M26_Clacker,6);
- MACRO_ADDITEM(ACE_DefusalKit,12);
- MACRO_ADDITEM(ACE_Deadmanswitch,6);
- MACRO_ADDITEM(ACE_Cellphone,10);
+ class B_Kitbag_rgr;
+ class B_Kitbag_rgr_Exp: B_Kitbag_rgr {
+ class TransportItems {
+ class _xx_ToolKit { // xXToOlKiT420mLgXx
+ count = 0;
+ };
+ };
};
- };
-
- class B_Kitbag_rgr;
- class B_Kitbag_rgr_Exp: B_Kitbag_rgr {
- class TransportItems {
- class _xx_ToolKit { // xXToOlKiT420mLgXx
- count = 0;
- };
+ class B_Carryall_ocamo;
+ class B_Carryall_ocamo_Exp: B_Carryall_ocamo {
+ class TransportItems {
+ class _xx_ToolKit {
+ count = 0;
+ };
+ };
};
- };
- class B_Carryall_ocamo;
- class B_Carryall_ocamo_Exp: B_Carryall_ocamo {
- class TransportItems {
- class _xx_ToolKit {
- count = 0;
- };
+ class B_Carryall_oucamo;
+ class B_Carryall_oucamo_Exp: B_Carryall_oucamo {
+ class TransportItems {
+ class _xx_ToolKit {
+ count = 0;
+ };
+ };
};
- };
- class B_Carryall_oucamo;
- class B_Carryall_oucamo_Exp: B_Carryall_oucamo {
- class TransportItems {
- class _xx_ToolKit {
- count = 0;
- };
+ class B_Carryall_oli;
+ class G_Carryall_Exp: B_Carryall_oli {
+ class TransportItems {
+ class _xx_ToolKit {
+ count = 0;
+ };
+ };
};
- };
- class B_Carryall_oli;
- class G_Carryall_Exp: B_Carryall_oli {
- class TransportItems {
- class _xx_ToolKit {
- count = 0;
- };
+ class I_Carryall_oli_Exp: B_Carryall_oli {
+ class TransportItems {
+ class _xx_ToolKit {
+ count = 0;
+ };
+ };
};
- };
- class I_Carryall_oli_Exp: B_Carryall_oli {
- class TransportItems {
- class _xx_ToolKit {
- count = 0;
- };
- };
- };
- #include "CfgModule.hpp"
+ #include "CfgModule.hpp"
- // Add ACE_Clacker and ACE_DefusalKit to every explosive unit.
- #define MACRO_ADDMINEKIT \
- items[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"}; \
- respawnitems[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"};
+ // Add ACE_Clacker and ACE_DefusalKit to every explosive unit.
+ #define MACRO_ADDMINEKIT \
+ items[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"}; \
+ respawnitems[] = {"FirstAidKit", "ACE_Clacker", "ACE_DefusalKit"};
- class B_Soldier_base_F; class B_soldier_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
- class B_Soldier_03_f; class B_engineer_F:B_Soldier_03_f {MACRO_ADDMINEKIT};
- class B_Soldier_diver_base_F; class B_diver_exp_F:B_Soldier_diver_base_F {MACRO_ADDMINEKIT};
- class B_Soldier_recon_base; class B_recon_exp_F:B_Soldier_recon_base {MACRO_ADDMINEKIT};
- class B_CTRG_soldier_engineer_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
- class I_G_Soldier_base_F; class I_G_engineer_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
- class I_G_Soldier_exp_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
- class B_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
- class O_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
- class B_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
- class O_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
- class I_Soldier_02_F; class I_Soldier_exp_F:I_Soldier_02_F {MACRO_ADDMINEKIT};
- class I_Soldier_base_F; class I_engineer_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
- class I_Soldier_diver_base_F; class I_diver_exp_F:I_Soldier_diver_base_F {MACRO_ADDMINEKIT};
- class O_Soldier_base_F; class O_soldier_exp_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
- class O_engineer_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
- class O_Soldier_diver_base_F; class O_diver_exp_F:O_Soldier_diver_base_F {MACRO_ADDMINEKIT};
- class O_Soldier_recon_base; class O_recon_exp_F:O_Soldier_recon_base {MACRO_ADDMINEKIT};
- class O_Soldier_Urban_base; class O_soldierU_exp_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
- class O_engineer_U_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
- class B_Protagonist_VR_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
- class O_Protagonist_VR_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
- class I_Protagonist_VR_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
- class B_Soldier_F; class b_soldier_universal_f:B_Soldier_F {MACRO_ADDMINEKIT};
- class B_G_Soldier_F; class b_g_soldier_universal_f:B_G_Soldier_F {MACRO_ADDMINEKIT};
- class O_Soldier_F; class o_soldier_universal_f:O_Soldier_F {MACRO_ADDMINEKIT};
- class O_G_Soldier_F; class o_g_soldier_universal_f:O_G_Soldier_F {MACRO_ADDMINEKIT};
- class I_soldier_F; class i_soldier_universal_f:I_soldier_F {MACRO_ADDMINEKIT};
- class I_G_Soldier_F; class i_g_soldier_universal_f:I_G_Soldier_F {MACRO_ADDMINEKIT};
+ class B_Soldier_base_F; class B_soldier_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
+ class B_Soldier_03_f; class B_engineer_F:B_Soldier_03_f {MACRO_ADDMINEKIT};
+ class B_Soldier_diver_base_F; class B_diver_exp_F:B_Soldier_diver_base_F {MACRO_ADDMINEKIT};
+ class B_Soldier_recon_base; class B_recon_exp_F:B_Soldier_recon_base {MACRO_ADDMINEKIT};
+ class B_CTRG_soldier_engineer_exp_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
+ class I_G_Soldier_base_F; class I_G_engineer_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
+ class I_G_Soldier_exp_F:I_G_Soldier_base_F {MACRO_ADDMINEKIT};
+ class B_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
+ class O_G_engineer_F:I_G_engineer_F {MACRO_ADDMINEKIT};
+ class B_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
+ class O_G_Soldier_exp_F:I_G_Soldier_exp_F {MACRO_ADDMINEKIT};
+ class I_Soldier_02_F; class I_Soldier_exp_F:I_Soldier_02_F {MACRO_ADDMINEKIT};
+ class I_Soldier_base_F; class I_engineer_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
+ class I_Soldier_diver_base_F; class I_diver_exp_F:I_Soldier_diver_base_F {MACRO_ADDMINEKIT};
+ class O_Soldier_base_F; class O_soldier_exp_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
+ class O_engineer_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
+ class O_Soldier_diver_base_F; class O_diver_exp_F:O_Soldier_diver_base_F {MACRO_ADDMINEKIT};
+ class O_Soldier_recon_base; class O_recon_exp_F:O_Soldier_recon_base {MACRO_ADDMINEKIT};
+ class O_Soldier_Urban_base; class O_soldierU_exp_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
+ class O_engineer_U_F:O_Soldier_Urban_base {MACRO_ADDMINEKIT};
+ class B_Protagonist_VR_F:B_Soldier_base_F {MACRO_ADDMINEKIT};
+ class O_Protagonist_VR_F:O_Soldier_base_F {MACRO_ADDMINEKIT};
+ class I_Protagonist_VR_F:I_Soldier_base_F {MACRO_ADDMINEKIT};
+ class B_Soldier_F; class b_soldier_universal_f:B_Soldier_F {MACRO_ADDMINEKIT};
+ class B_G_Soldier_F; class b_g_soldier_universal_f:B_G_Soldier_F {MACRO_ADDMINEKIT};
+ class O_Soldier_F; class o_soldier_universal_f:O_Soldier_F {MACRO_ADDMINEKIT};
+ class O_G_Soldier_F; class o_g_soldier_universal_f:O_G_Soldier_F {MACRO_ADDMINEKIT};
+ class I_soldier_F; class i_soldier_universal_f:I_soldier_F {MACRO_ADDMINEKIT};
+ class I_G_Soldier_F; class i_g_soldier_universal_f:I_G_Soldier_F {MACRO_ADDMINEKIT};
- // Add ACE_Clacker to snipers and spotters for setting off Claymores
- #define MACRO_ADDCLAYMOREKIT \
- items[] = {"FirstAidKit","ACE_Clacker"}; \
- respawnitems[] = {"FirstAidKit","ACE_Clacker"};
+ // Add ACE_Clacker to snipers and spotters for setting off Claymores
+ #define MACRO_ADDCLAYMOREKIT \
+ items[] = {"FirstAidKit","ACE_Clacker"}; \
+ respawnitems[] = {"FirstAidKit","ACE_Clacker"};
- class B_Soldier_sniper_base_F;
- class B_sniper_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
- class B_spotter_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
- class I_Soldier_sniper_base_F;
- class I_Sniper_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
- class I_Spotter_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
- class O_Soldier_sniper_base_F;
- class O_sniper_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
- class O_spotter_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class B_Soldier_sniper_base_F;
+ class B_sniper_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class B_spotter_F: B_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class I_Soldier_sniper_base_F;
+ class I_Sniper_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class I_Spotter_F: I_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class O_Soldier_sniper_base_F;
+ class O_sniper_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
+ class O_spotter_F: O_Soldier_sniper_base_F {MACRO_ADDCLAYMOREKIT};
};
diff --git a/addons/explosives/CfgWeapons.hpp b/addons/explosives/CfgWeapons.hpp
index fd142019e8..a90b4d515f 100644
--- a/addons/explosives/CfgWeapons.hpp
+++ b/addons/explosives/CfgWeapons.hpp
@@ -1,69 +1,69 @@
class CfgWeapons {
- class ACE_ItemCore;
- class InventoryItem_Base_f;
+ class ACE_ItemCore;
+ class InventoryItem_Base_f;
- class ACE_ExplosiveItem: InventoryItem_Base_f {
- allowedSlots[] = {801,701,901};
- //type = 201;
- };
-
- class ACE_Clacker: ACE_ItemCore {
- scope = 2;
- displayName = $STR_ACE_Explosives_clacker_displayName;
- descriptionShort = $STR_ACE_Explosives_clacker_description;
- picture = PATHTOF(Data\UI\Clacker.paa);
- model = "\A3\weapons_F\ammo\mag_univ.p3d";
- ACE_Range = 250;
- ACE_Detonator = 1;
-
- class ItemInfo: ACE_ExplosiveItem {
- mass = 3;
- uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ class ACE_ExplosiveItem: InventoryItem_Base_f {
+ allowedSlots[] = {801,701,901};
+ //type = 201;
};
- };
- class ACE_M26_Clacker: ACE_Clacker {
- displayName = $STR_ACE_Explosives_M26_displayName;
- picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
- ACE_Range = 5000;
- };
- class ACE_DefusalKit: ACE_ItemCore {
- scope = 2;
- displayName = $STR_ACE_Explosives_DefusalKit_displayName;
- descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
- picture = PATHTOF(Data\UI\Pliers.paa);
- model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
- class ItemInfo: ACE_ExplosiveItem {
- mass = 5;
- uniformModel = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
- };
- };
- class ACE_DeadManSwitch: ACE_ItemCore {
- scope = 2;
- displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
- descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
- picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
- model = "\A3\weapons_F\ammo\mag_univ.p3d";
- ACE_Range = 100;
- ACE_Detonator = 1;
+ class ACE_Clacker: ACE_ItemCore {
+ scope = 2;
+ displayName = $STR_ACE_Explosives_clacker_displayName;
+ descriptionShort = $STR_ACE_Explosives_clacker_description;
+ picture = PATHTOF(Data\UI\Clacker.paa);
+ model = "\A3\weapons_F\ammo\mag_univ.p3d";
+ ACE_Range = 250;
+ ACE_Detonator = 1;
- class ItemInfo: ACE_ExplosiveItem {
- mass = 2;
- uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ class ItemInfo: ACE_ExplosiveItem {
+ mass = 3;
+ uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ };
};
- };
- class ACE_Cellphone: ACE_ItemCore {
- scope = 2;
- displayName = $STR_ACE_Explosives_cellphone_displayName;
- descriptionShort = $STR_ACE_Explosives_cellphone_description;
- picture = PATHTOF(Data\UI\Cellphone_UI.paa);
- model = "\A3\weapons_F\ammo\mag_univ.p3d";
- ACE_Range = 15000;
- ACE_Detonator = 1;
+ class ACE_M26_Clacker: ACE_Clacker {
+ displayName = $STR_ACE_Explosives_M26_displayName;
+ picture = PATHTOF(Data\UI\MK26_Transmitter_ca.paa);
+ ACE_Range = 5000;
+ };
+ class ACE_DefusalKit: ACE_ItemCore {
+ scope = 2;
+ displayName = $STR_ACE_Explosives_DefusalKit_displayName;
+ descriptionShort = $STR_ACE_Explosives_DefusalKit_description;
+ picture = PATHTOF(Data\UI\Pliers.paa);
+ model = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
- class ItemInfo: ACE_ExplosiveItem {
- mass = 2;
- uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ class ItemInfo: ACE_ExplosiveItem {
+ mass = 5;
+ uniformModel = "\A3\Structures_F\Items\Tools\Pliers_F.p3d";
+ };
+ };
+ class ACE_DeadManSwitch: ACE_ItemCore {
+ scope = 2;
+ displayName = $STR_ACE_Explosives_DeadManSwitch_displayName;
+ descriptionShort = $STR_ACE_Explosives_DeadManSwitch_description;
+ picture = PATHTOF(Data\UI\DeadmanSwitch.paa);
+ model = "\A3\weapons_F\ammo\mag_univ.p3d";
+ ACE_Range = 100;
+ ACE_Detonator = 1;
+
+ class ItemInfo: ACE_ExplosiveItem {
+ mass = 2;
+ uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ };
+ };
+ class ACE_Cellphone: ACE_ItemCore {
+ scope = 2;
+ displayName = $STR_ACE_Explosives_cellphone_displayName;
+ descriptionShort = $STR_ACE_Explosives_cellphone_description;
+ picture = PATHTOF(Data\UI\Cellphone_UI.paa);
+ model = "\A3\weapons_F\ammo\mag_univ.p3d";
+ ACE_Range = 15000;
+ ACE_Detonator = 1;
+
+ class ItemInfo: ACE_ExplosiveItem {
+ mass = 2;
+ uniformModel = "\A3\weapons_F\ammo\mag_univ.p3d";
+ };
};
- };
};
diff --git a/addons/explosives/ExplosivesUI.hpp b/addons/explosives/ExplosivesUI.hpp
index 769b3dc167..6871f95f92 100644
--- a/addons/explosives/ExplosivesUI.hpp
+++ b/addons/explosives/ExplosivesUI.hpp
@@ -14,275 +14,275 @@ class RscPicture;
class RscEdit;
class Rsc_ACE_CallScreen_Edit:RscEdit {
- canModify = 1;
- colorBackground[] = {0,0,0,1};
- colorText[] = {0,0,0,1};
- colorDisabled[] = {1,1,1,0.25};
- colorSelection[] = {
- "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])",
- "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])",
- "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",
- 1
- };
- text = "";
- style = "0x00 + 0x40 + 0x200";
- shadow = 1;
- SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) * 1)";
- x = 0.288594 * safezoneW + safezoneX;
- w = 0.0825 * safezoneW;
- h = 0.044 * safezoneH;
+ canModify = 1;
+ colorBackground[] = {0,0,0,1};
+ colorText[] = {0,0,0,1};
+ colorDisabled[] = {1,1,1,0.25};
+ colorSelection[] = {
+ "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])",
+ "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])",
+ "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",
+ 1
+ };
+ text = "";
+ style = "0x00 + 0x40 + 0x200";
+ shadow = 1;
+ SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) * 1)";
+ x = 0.288594 * safezoneW + safezoneX;
+ w = 0.0825 * safezoneW;
+ h = 0.044 * safezoneH;
};
class Rsc_ACE_HiddenButton:RscButton {
- colorText[] = {0, 0, 0, 0};
- colorDisabled[] = {0, 0, 0, 0};
- colorBackground[] = {0, 0, 0, 0};
- colorBackgroundDisabled[] = {0, 0, 0, 0};
- colorBackgroundActive[] = {0, 0, 0, 0};
- colorFocused[] = {0, 0, 0, 0};
- colorShadow[] = {0, 0, 0, 0};
- colorBorder[] = {0, 0, 0, 0};
- w = 0.095589;
- h = 0.039216;
- shadow = 0;
+ colorText[] = {0, 0, 0, 0};
+ colorDisabled[] = {0, 0, 0, 0};
+ colorBackground[] = {0, 0, 0, 0};
+ colorBackgroundDisabled[] = {0, 0, 0, 0};
+ colorBackgroundActive[] = {0, 0, 0, 0};
+ colorFocused[] = {0, 0, 0, 0};
+ colorShadow[] = {0, 0, 0, 0};
+ colorBorder[] = {0, 0, 0, 0};
+ w = 0.095589;
+ h = 0.039216;
+ shadow = 0;
};
class Rsc_ACE_Timer_Slider:RscXSliderH {
- x = 0.4;
- y = 0.2;
- w = 0.3;
- h = "1*((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
- colorBackground[] = {0,0,0,0.5};
+ x = 0.4;
+ y = 0.2;
+ w = 0.3;
+ h = "1*((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+ colorBackground[] = {0,0,0,0.5};
};
class RscACE_SelectTimeUI {
- idd = 8854;
- movingEnable = 0;
- class controls {
- class back:IGUIBack {
- x = X_OFFSET;
- y = 0;
- w = 0.5;
- h = 0.2;
- colorBackground[] = {0, 0, 0, 0.5};
+ idd = 8854;
+ movingEnable = 0;
+ class controls {
+ class back:IGUIBack {
+ x = X_OFFSET;
+ y = 0;
+ w = 0.5;
+ h = 0.2;
+ colorBackground[] = {0, 0, 0, 0.5};
+ };
+ class header: RscText{
+ idc = 8870;
+ x = X_OFFSET + 0.005;
+ y = 0.005;
+ w = 0.49;
+ h = 0.05;
+ style = ST_CENTER;
+ text = "";
+ };
+ class slider: Rsc_ACE_Timer_Slider {
+ idc = 8845;
+ x = X_OFFSET + 0.005;
+ y = 0.06;
+ w = 0.49;
+ h = 0.025;
+ onSliderPosChanged = "private ['_mins', '_secs'];_mins = floor((_this select 1)/60);_secs=floor((_this select 1) - (_mins*60));ctrlSetText [8870, format[localize 'STR_ACE_Explosives_TimerMenu',_mins, _secs]];";
+ };
+ class cancelBtn: RscButton {
+ idc = 8855;
+ x = X_OFFSET + 0.005;
+ w = 0.15;
+ h = 0.1;
+ y = 0.09;
+ style = ST_CENTER;
+ text = $STR_ACE_Explosives_Cancel;
+ action = "closeDialog 0;";
+ };
+ class approveBtn: RscButton {
+ idc = 8860;
+ x = X_OFFSET + 0.345;
+ y = 0.09;
+ h = 0.1;
+ w = 0.15;
+ style = ST_CENTER;
+ text = $STR_ACE_Explosives_SetTime;
+ action = "closeDialog 0;";
+ };
};
- class header: RscText{
- idc = 8870;
- x = X_OFFSET + 0.005;
- y = 0.005;
- w = 0.49;
- h = 0.05;
- style = ST_CENTER;
- text = "";
- };
- class slider: Rsc_ACE_Timer_Slider {
- idc = 8845;
- x = X_OFFSET + 0.005;
- y = 0.06;
- w = 0.49;
- h = 0.025;
- onSliderPosChanged = "private ['_mins', '_secs'];_mins = floor((_this select 1)/60);_secs=floor((_this select 1) - (_mins*60));ctrlSetText [8870, format[localize 'STR_ACE_Explosives_TimerMenu',_mins, _secs]];";
- };
- class cancelBtn: RscButton {
- idc = 8855;
- x = X_OFFSET + 0.005;
- w = 0.15;
- h = 0.1;
- y = 0.09;
- style = ST_CENTER;
- text = $STR_ACE_Explosives_Cancel;
- action = "closeDialog 0;";
- };
- class approveBtn: RscButton {
- idc = 8860;
- x = X_OFFSET + 0.345;
- y = 0.09;
- h = 0.1;
- w = 0.15;
- style = ST_CENTER;
- text = $STR_ACE_Explosives_SetTime;
- action = "closeDialog 0;";
- };
- };
};
class Rsc_ACE_NumKeyButton: Rsc_ACE_HiddenButton{};
class Rsc_ACE_PhoneInterface {
- idd = 8855;
- movingEnable = 1;
- onLoad = QUOTE(GVAR(IED_CurrentSpeedDial) = -1);
- class controls {
- class RscPicture_1200: RscPicture {
- idc = 1200;
- text = PATHTOF(Data\UI\Cellphone_Background.paa);
- x = 0.231875 * safezoneW + safezoneX;
- y = 0.104 * safezoneH + safezoneY;
- w = 0.195937 * safezoneW;
- h = 0.704 * safezoneH;
+ idd = 8855;
+ movingEnable = 1;
+ onLoad = QUOTE(GVAR(IED_CurrentSpeedDial) = -1);
+ class controls {
+ class RscPicture_1200: RscPicture {
+ idc = 1200;
+ text = PATHTOF(Data\UI\Cellphone_Background.paa);
+ x = 0.231875 * safezoneW + safezoneX;
+ y = 0.104 * safezoneH + safezoneY;
+ w = 0.195937 * safezoneW;
+ h = 0.704 * safezoneH;
+ };
+ class numkey_1: Rsc_ACE_NumKeyButton {
+ idc = 1600;
+ x = 0.278281 * safezoneW + safezoneX;
+ y = 0.533 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "1";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '1')];";
+ };
+ class numkey_2: Rsc_ACE_NumKeyButton {
+ idc = 1601;
+ x = 0.314375 * safezoneW + safezoneX;
+ y = 0.533 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "2";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '2')];";
+ };
+ class numkey_3: Rsc_ACE_NumKeyButton {
+ idc = 1602;
+ x = 0.350469 * safezoneW + safezoneX;
+ y = 0.533 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "3";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '3')];";
+ };
+ class numkey_4: Rsc_ACE_NumKeyButton {
+ idc = 1603;
+ x = 0.278281 * safezoneW + safezoneX;
+ y = 0.577 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "4";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '4')];";
+ };
+ class numkey_5: Rsc_ACE_NumKeyButton {
+ idc = 1604;
+ x = 0.314375 * safezoneW + safezoneX;
+ y = 0.577 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "5";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '5')];";
+ };
+ class numkey_6: Rsc_ACE_NumKeyButton {
+ idc = 1605;
+ x = 0.350469 * safezoneW + safezoneX;
+ y = 0.577 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "6";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '6')];";
+ };
+ class numkey_7: Rsc_ACE_NumKeyButton {
+ idc = 1606;
+ x = 0.278281 * safezoneW + safezoneX;
+ y = 0.621 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "7";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '7')];";
+ };
+ class numkey_8: Rsc_ACE_NumKeyButton {
+ idc = 1607;
+ x = 0.314375 * safezoneW + safezoneX;
+ y = 0.621 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "8";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '8')];";
+ };
+ class numkey_9: Rsc_ACE_NumKeyButton {
+ idc = 1608;
+ x = 0.350469 * safezoneW + safezoneX;
+ y = 0.621 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "9";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '9')];";
+ };
+ class numkey_0: Rsc_ACE_NumKeyButton {
+ idc = 1609;
+ x = 0.314375 * safezoneW + safezoneX;
+ y = 0.676 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "0";
+ action = "ctrlSetText [1400,((ctrlText 1400) + '0')];";
+ };
+ class speedDialAdd: Rsc_ACE_NumKeyButton {
+ idc = 1610;
+ x = 0.278281 * safezoneW + safezoneX;
+ y = 0.676 * safezoneH + safezoneY;
+ w = 0.0309375 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial";
+ action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
+ };
+ class clear: Rsc_ACE_HiddenButton {
+ idc = 1610;
+ x = 0.278281 * safezoneW + safezoneX;
+ y = 0.445 * safezoneH + safezoneY;
+ w = 0.020625 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "$STR_ACE_Explosives_Clear";
+ action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];);
+ };
+ class dial: Rsc_ACE_HiddenButton {
+ idc = 1611;
+ x = 0.309219 * safezoneW + safezoneX;
+ y = 0.445 * safezoneH + safezoneY;
+ w = 0.04125 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "$STR_ACE_Explosives_Phone_Dial";
+ action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
+ };
+ class up: Rsc_ACE_HiddenButton {
+ idc = 1612;
+ x = 0.360781 * safezoneW + safezoneX;
+ y = 0.445 * safezoneH + safezoneY;
+ w = 0.020625 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "$STR_ACE_Explosives_Phone_Up";
+ action = QUOTE([true] call FUNC(setSpeedDial));
+ };
+ class down: Rsc_ACE_HiddenButton {
+ idc = 1613;
+ x = 0.345312 * safezoneW + safezoneX;
+ y = 0.485 * safezoneH + safezoneY;
+ w = 0.020625 * safezoneW;
+ h = 0.033 * safezoneH;
+ tooltip = "$STR_ACE_Explosives_Phone_Down";
+ action = QUOTE([false] call FUNC(setSpeedDial));
+ };
+ class speedDial_Text: RscText {
+ idc = 1405;
+ y = 0.302 * safezoneH + safezoneY;
+ SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
+ x = 0.288594 * safezoneW + safezoneX;
+ w = 0.0825 * safezoneW;
+ h = 0.044 * safezoneH;
+ text = "Name";
+ };
+ class speedDial_edit: Rsc_ACE_CallScreen_Edit {
+ idc = 1401;
+ y = 0.302 * safezoneH + safezoneY;
+ x = 0.318 * safezoneW + safezoneX;
+ w = 0.1;
+ };
+ class numberEdit_Text: RscText {
+ idc = 1406;
+ y = 0.348 * safezoneH + safezoneY;
+ SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
+ x = 0.288594 * safezoneW + safezoneX;
+ w = 0.0825 * safezoneW;
+ h = 0.044 * safezoneH;
+ text = "#";
+ };
+ class number_edit: Rsc_ACE_CallScreen_Edit {
+ canModify = 0;
+ idc = 1400;
+ y = 0.348 * safezoneH + safezoneY;
+ x = 0.3 * safezoneW + safezoneX;
+ };
};
- class numkey_1: Rsc_ACE_NumKeyButton {
- idc = 1600;
- x = 0.278281 * safezoneW + safezoneX;
- y = 0.533 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "1";
- action = "ctrlSetText [1400,((ctrlText 1400) + '1')];";
- };
- class numkey_2: Rsc_ACE_NumKeyButton {
- idc = 1601;
- x = 0.314375 * safezoneW + safezoneX;
- y = 0.533 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "2";
- action = "ctrlSetText [1400,((ctrlText 1400) + '2')];";
- };
- class numkey_3: Rsc_ACE_NumKeyButton {
- idc = 1602;
- x = 0.350469 * safezoneW + safezoneX;
- y = 0.533 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "3";
- action = "ctrlSetText [1400,((ctrlText 1400) + '3')];";
- };
- class numkey_4: Rsc_ACE_NumKeyButton {
- idc = 1603;
- x = 0.278281 * safezoneW + safezoneX;
- y = 0.577 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "4";
- action = "ctrlSetText [1400,((ctrlText 1400) + '4')];";
- };
- class numkey_5: Rsc_ACE_NumKeyButton {
- idc = 1604;
- x = 0.314375 * safezoneW + safezoneX;
- y = 0.577 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "5";
- action = "ctrlSetText [1400,((ctrlText 1400) + '5')];";
- };
- class numkey_6: Rsc_ACE_NumKeyButton {
- idc = 1605;
- x = 0.350469 * safezoneW + safezoneX;
- y = 0.577 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "6";
- action = "ctrlSetText [1400,((ctrlText 1400) + '6')];";
- };
- class numkey_7: Rsc_ACE_NumKeyButton {
- idc = 1606;
- x = 0.278281 * safezoneW + safezoneX;
- y = 0.621 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "7";
- action = "ctrlSetText [1400,((ctrlText 1400) + '7')];";
- };
- class numkey_8: Rsc_ACE_NumKeyButton {
- idc = 1607;
- x = 0.314375 * safezoneW + safezoneX;
- y = 0.621 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "8";
- action = "ctrlSetText [1400,((ctrlText 1400) + '8')];";
- };
- class numkey_9: Rsc_ACE_NumKeyButton {
- idc = 1608;
- x = 0.350469 * safezoneW + safezoneX;
- y = 0.621 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "9";
- action = "ctrlSetText [1400,((ctrlText 1400) + '9')];";
- };
- class numkey_0: Rsc_ACE_NumKeyButton {
- idc = 1609;
- x = 0.314375 * safezoneW + safezoneX;
- y = 0.676 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "0";
- action = "ctrlSetText [1400,((ctrlText 1400) + '0')];";
- };
- class speedDialAdd: Rsc_ACE_NumKeyButton {
- idc = 1610;
- x = 0.278281 * safezoneW + safezoneX;
- y = 0.676 * safezoneH + safezoneY;
- w = 0.0309375 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "$STR_ACE_Explosives_Phone_AddToSpeedDial";
- action = QUOTE([ARR_2(ctrlText 1401,ctrlText 1400)] call FUNC(addToSpeedDial););
- };
- class clear: Rsc_ACE_HiddenButton {
- idc = 1610;
- x = 0.278281 * safezoneW + safezoneX;
- y = 0.445 * safezoneH + safezoneY;
- w = 0.020625 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "$STR_ACE_Explosives_Clear";
- action = QUOTE(ctrlSetText [ARR_2(1400,'')];[ctrlText 1401] call FUNC(removeFromSpeedDial);ctrlSetText [ARR_2(1401,'')];);
- };
- class dial: Rsc_ACE_HiddenButton {
- idc = 1611;
- x = 0.309219 * safezoneW + safezoneX;
- y = 0.445 * safezoneH + safezoneY;
- w = 0.04125 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "$STR_ACE_Explosives_Phone_Dial";
- action = QUOTE([ARR_2(ace_player,ctrlText 1400)] call FUNC(dialPhone););
- };
- class up: Rsc_ACE_HiddenButton {
- idc = 1612;
- x = 0.360781 * safezoneW + safezoneX;
- y = 0.445 * safezoneH + safezoneY;
- w = 0.020625 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "$STR_ACE_Explosives_Phone_Up";
- action = QUOTE([true] call FUNC(setSpeedDial));
- };
- class down: Rsc_ACE_HiddenButton {
- idc = 1613;
- x = 0.345312 * safezoneW + safezoneX;
- y = 0.485 * safezoneH + safezoneY;
- w = 0.020625 * safezoneW;
- h = 0.033 * safezoneH;
- tooltip = "$STR_ACE_Explosives_Phone_Down";
- action = QUOTE([false] call FUNC(setSpeedDial));
- };
- class speedDial_Text: RscText {
- idc = 1405;
- y = 0.302 * safezoneH + safezoneY;
- SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
- x = 0.288594 * safezoneW + safezoneX;
- w = 0.0825 * safezoneW;
- h = 0.044 * safezoneH;
- text = "Name";
- };
- class speedDial_edit: Rsc_ACE_CallScreen_Edit {
- idc = 1401;
- y = 0.302 * safezoneH + safezoneY;
- x = 0.318 * safezoneW + safezoneX;
- w = 0.1;
- };
- class numberEdit_Text: RscText {
- idc = 1406;
- y = 0.348 * safezoneH + safezoneY;
- SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 22) * 1)";
- x = 0.288594 * safezoneW + safezoneX;
- w = 0.0825 * safezoneW;
- h = 0.044 * safezoneH;
- text = "#";
- };
- class number_edit: Rsc_ACE_CallScreen_Edit {
- canModify = 0;
- idc = 1400;
- y = 0.348 * safezoneH + safezoneY;
- x = 0.3 * safezoneW + safezoneX;
- };
- };
};
diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf
index e3b40308c3..8ebf62090f 100644
--- a/addons/explosives/XEH_postInit.sqf
+++ b/addons/explosives/XEH_postInit.sqf
@@ -22,46 +22,46 @@ GVAR(CurrentSpeedDial) = 0;
[{(_this select 0) call FUNC(handleScrollWheel);}] call EFUNC(Common,addScrollWheelEventHandler);
player addEventHandler ["Killed", {
- private "_deadman";
- call FUNC(place_Cancel);
- _deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
- {
- [(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
- } count _deadman;
+ private "_deadman";
+ call FUNC(place_Cancel);
+ _deadman = [(_this select 0), "DeadManSwitch"] call FUNC(getPlacedExplosives);
+ {
+ [(_this select 0), -1, _x, true] call FUNC(detonateExplosive);
+ } count _deadman;
}];
player addEventHandler ["Take", {
- private ["_item", "_getter", "_giver", "_config"];
- _item = _this select 2;
- _getter = _this select 0;
- _giver = _this select 1;
+ private ["_item", "_getter", "_giver", "_config"];
+ _item = _this select 2;
+ _getter = _this select 0;
+ _giver = _this select 1;
- _config = ConfigFile >> "CfgWeapons" >> _item;
- if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
- private ["_clackerItems"];
- _clackerItems = _giver getVariable [QGVAR(Clackers), []];
- _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
+ _config = ConfigFile >> "CfgWeapons" >> _item;
+ if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
+ private ["_clackerItems"];
+ _clackerItems = _giver getVariable [QGVAR(Clackers), []];
+ _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
- _detonators = [_giver] call FUNC(getDetonators);
- if (count _detonators == 0) then {
- _giver setVariable [QGVAR(Clackers), nil, true];
- };
- };
+ _detonators = [_giver] call FUNC(getDetonators);
+ if (count _detonators == 0) then {
+ _giver setVariable [QGVAR(Clackers), nil, true];
+ };
+ };
}];
player addEventHandler ["Put", {
- private ["_item", "_getter", "_giver", "_config"];
- _item = _this select 2;
- _getter = _this select 1;
- _giver = _this select 0;
+ private ["_item", "_getter", "_giver", "_config"];
+ _item = _this select 2;
+ _getter = _this select 1;
+ _giver = _this select 0;
- _config = ConfigFile >> "CfgWeapons" >> _item;
- if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
- private ["_clackerItems"];
- _clackerItems = _giver getVariable [QGVAR(Clackers), []];
- _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
+ _config = ConfigFile >> "CfgWeapons" >> _item;
+ if (isClass _config && {getNumber(_config >> "ACE_Detonator") == 1}) then {
+ private ["_clackerItems"];
+ _clackerItems = _giver getVariable [QGVAR(Clackers), []];
+ _getter SetVariable [QGVAR(Clackers), (_getter getVariable [QGVAR(Clackers), []]) + _clackerItems, true];
- _detonators = [_giver] call FUNC(getDetonators);
- if (count _detonators == 0) then {
- _giver setVariable [QGVAR(Clackers), nil, true];
- };
- };
+ _detonators = [_giver] call FUNC(getDetonators);
+ if (count _detonators == 0) then {
+ _giver setVariable [QGVAR(Clackers), nil, true];
+ };
+ };
}];
diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf
index 3747151d16..435624d2a5 100644
--- a/addons/explosives/XEH_preInit.sqf
+++ b/addons/explosives/XEH_preInit.sqf
@@ -19,7 +19,11 @@ ADDON = false;
PREP(addCellphoneIED);
PREP(addClacker);
+PREP(addDetonateActions);
+PREP(addExplosiveActions);
PREP(addToSpeedDial);
+PREP(addTransmitterActions);
+PREP(addTriggerActions);
PREP(canDefuse);
PREP(canDetonate);
PREP(defuseExplosive);
@@ -36,11 +40,9 @@ PREP(getDetonators);
PREP(getPlacedExplosives);
PREP(getSpeedDialExplosive);
-PREP(openDetonateUI);
-PREP(openPlaceUI);
-PREP(openTransmitterUI);
+PREP(onLanded);
+
PREP(openTimerSetUI);
-PREP(openTriggerSelectionUI);
PREP(place_Approve);
PREP(place_Cancel);
diff --git a/addons/explosives/config.cpp b/addons/explosives/config.cpp
index da95d45e7e..9652c38dd2 100644
--- a/addons/explosives/config.cpp
+++ b/addons/explosives/config.cpp
@@ -1,15 +1,15 @@
#include "script_component.hpp"
class CfgPatches {
- class ADDON {
- units[] = {};
- weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"};
- requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common", "ace_interaction"};
- author[] = {"Garth 'L-H' de Wet"};
- authorUrl = "http://garth.snakebiteink.co.za/";
- VERSION_CONFIG;
- };
+ class ADDON {
+ units[] = {};
+ weapons[] = {"ACE_Clacker", "ACE_DefusalKit", "ACE_M26_Clacker", "ACE_DeadManSwitch", "ACE_Cellphone"};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"ace_interaction"};
+ author[] = {"Garth 'L-H' de Wet"};
+ authorUrl = "http://garth.snakebiteink.co.za/";
+ VERSION_CONFIG;
+ };
};
#include "CfgEventHandlers.hpp"
@@ -22,30 +22,30 @@ class CfgPatches {
#include "ExplosivesUI.hpp"
class CfgActions {
- class None;
- class Deactivate:None {
- show = 0;
- };
- class DeactivateMine:None {
- show = 0;
- };
+ class None;
+ class Deactivate:None {
+ show = 0;
+ };
+ class DeactivateMine:None {
+ show = 0;
+ };
};
class CfgMineTriggers {
- class RangeTrigger;
- class MagneticTrigger: RangeTrigger {
- mineMagnetic = 1;
- mineTriggerRange = 1;
- };
+ class RangeTrigger;
+ class MagneticTrigger: RangeTrigger {
+ mineMagnetic = 1;
+ mineTriggerRange = 1;
+ };
};
class ACE_Settings {
- class GVAR(RequireSpecialist) {
- value = 0;
- typeName = "BOOL";
- };
- class GVAR(PunishNonSpecialists) {
- value = 1;
- typeName = "BOOL";
- };
+ class GVAR(RequireSpecialist) {
+ value = 0;
+ typeName = "BOOL";
+ };
+ class GVAR(PunishNonSpecialists) {
+ value = 1;
+ typeName = "BOOL";
+ };
};
diff --git a/addons/explosives/functions/fnc_addCellphoneIED.sqf b/addons/explosives/functions/fnc_addCellphoneIED.sqf
index 84cb57cf4e..3be21df559 100644
--- a/addons/explosives/functions/fnc_addCellphoneIED.sqf
+++ b/addons/explosives/functions/fnc_addCellphoneIED.sqf
@@ -25,23 +25,23 @@ _requiredItems = getArray(_config >> "requires");
_hasRequired = true;
_detonators = [_unit] call FUNC(getDetonators);
{
- if !(_x in _detonators) exitWith{
- _hasRequired = false;
- };
+ if !(_x in _detonators) exitWith{
+ _hasRequired = false;
+ };
} count _requiredItems;
private ["_code", "_count", "_codeSet"];
_codeSet = false;
while {!_codeSet} do {
- _code = str(round (random 9999));
- _count = 4 - count (toArray _code);
- while {_count > 0} do {
- _code = "0" + _code;
- _count = _count - 1;
- };
- _codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0;
+ _code = str(round (random 9999));
+ _count = 4 - count (toArray _code);
+ while {_count > 0} do {
+ _code = "0" + _code;
+ _count = _count - 1;
+ };
+ _codeSet = (count ([_code] call FUNC(getSpeedDialExplosive))) == 0;
};
if (isNil QGVAR(CellphoneIEDs)) then {
- GVAR(CellphoneIEDs) = [];
+ GVAR(CellphoneIEDs) = [];
};
_count = GVAR(CellphoneIEDs) pushBack [_explosive,_code,GetNumber(ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> "Cellphone" >> "FuseTime")];
_count = _count + 1;
diff --git a/addons/explosives/functions/fnc_addClacker.sqf b/addons/explosives/functions/fnc_addClacker.sqf
index 4746dc66f5..1e12b79d62 100644
--- a/addons/explosives/functions/fnc_addClacker.sqf
+++ b/addons/explosives/functions/fnc_addClacker.sqf
@@ -17,10 +17,8 @@
* Public: Yes
*/
#include "script_component.hpp"
-private ["_unit", "_explosive", "_clacker", "_config", "_magazineClass", "_requiredItems", "_hasRequired"];
-_unit = _this select 0;
-_explosive = _this select 1;
-_magazineClass = _this select 2;
+private ["_clacker", "_config", "_requiredItems", "_hasRequired"];
+EXPLODE_3_PVT(_this,_unit,_explosive,_magazineClass);
// Config is the last item in the list of passed in items.
_config = (_this select 3) select (count (_this select 3) - 1);
@@ -28,9 +26,9 @@ _requiredItems = getArray(_config >> "requires");
_hasRequired = true;
_detonators = [_unit] call FUNC(getDetonators);
{
- if !(_x in _detonators) exitWith{
- _hasRequired = false;
- };
+ if !(_x in _detonators) exitWith{
+ _hasRequired = false;
+ };
} count _requiredItems;
if !(_hasRequired) exitWith {};
@@ -38,7 +36,9 @@ _config = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Triggers" >> co
_clacker = _unit getVariable [QGVAR(Clackers), []];
GVAR(PlacedCount) = GVAR(PlacedCount) + 1;
+
_clacker pushBack [_explosive, getNumber(_config >> "FuseTime"), format [localize "STR_ACE_Explosives_DetonateCode",
- GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
+ GVAR(PlacedCount)], _magazineClass, configName ((_this select 3) select (count (_this select 3) - 1))];
+
_unit setVariable [QGVAR(Clackers), _clacker, true];
_unit sideChat format [localize "STR_ACE_Explosives_DetonateCode", GVAR(PlacedCount)];
diff --git a/addons/explosives/functions/fnc_addDetonateActions.sqf b/addons/explosives/functions/fnc_addDetonateActions.sqf
new file mode 100644
index 0000000000..0017488458
--- /dev/null
+++ b/addons/explosives/functions/fnc_addDetonateActions.sqf
@@ -0,0 +1,49 @@
+/*
+ * Author: Garth 'L-H' de Wet
+ * Opens the UI for explosive detonation selection
+ *
+ * Arguments:
+ * 0: Unit