From b7f36ffd12fa649b4358dbbbda35481f27cb4e13 Mon Sep 17 00:00:00 2001 From: jonpas Date: Thu, 19 Jan 2017 01:18:28 +0100 Subject: [PATCH 01/37] Add orange map chemlight entry (#4839) --- addons/map/CfgLights.hpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/map/CfgLights.hpp b/addons/map/CfgLights.hpp index bd69f9acbf..c5ebc8e054 100644 --- a/addons/map/CfgLights.hpp +++ b/addons/map/CfgLights.hpp @@ -1,7 +1,7 @@ class CfgLights { - + class Chemlight_Blue; - + class ACE_FlashlightLight_White: Chemlight_Blue { brightness = 100; color[] = {1,1,1,1}; @@ -16,20 +16,24 @@ class CfgLights { start = 0.075; }; }; - + class ACE_FlashlightLight_Red: ACE_FlashlightLight_White { diffuse[] = {1,0,0}; }; - + class ACE_FlashlightLight_Blue: ACE_FlashlightLight_White { diffuse[] = {0.25,0.25,1}; }; - + class ACE_FlashlightLight_Green: ACE_FlashlightLight_White { diffuse[] = {0,1,0}; }; - + class ACE_FlashlightLight_Yellow: ACE_FlashlightLight_White { diffuse[] = {1,1,0.4}; }; -}; \ No newline at end of file + + class ACE_FlashlightLight_Orange: ACE_FlashlightLight_White { + diffuse[] = {1,0.65,0}; + }; +}; From 100a25cb97674bb457a6ba8711889ed77462cdc5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 21 Jan 2017 19:19:56 +0100 Subject: [PATCH 02/37] Add RH Acc Surefire flashlight map compatibility --- optionals/compat_rh_acc/CfgWeapons.hpp | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/optionals/compat_rh_acc/CfgWeapons.hpp b/optionals/compat_rh_acc/CfgWeapons.hpp index ffd18bc12e..2d1b84b5a2 100644 --- a/optionals/compat_rh_acc/CfgWeapons.hpp +++ b/optionals/compat_rh_acc/CfgWeapons.hpp @@ -1,18 +1,18 @@ class CfgWeapons { class ItemCore; + + /* Scopes */ class InventoryOpticsItem_Base_F; - - /* + // This would require MOA turrets - class RH_shortdot : ItemCore { + /*class RH_shortdot : ItemCore { ACE_ScopeAdjust_Vertical[] = { -1, 25 }; ACE_ScopeAdjust_Horizontal[] = { -13, 13 }; ACE_ScopeAdjust_VerticalIncrement = 0.5; ACE_ScopeAdjust_Unit = "MOA"; - }; - */ - + };*/ + class RH_accupoint : ItemCore { ACE_ScopeAdjust_Vertical[] = { -4, 30 }; ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; @@ -147,4 +147,18 @@ class CfgWeapons { }; }; }; + + /* Flashlights */ + class InventoryFlashLightItem_Base_F; + + class RH_SFM952V: ItemCore { + class ItemInfo: InventoryFlashLightItem_Base_F { + class FlashLight { + ACE_Flashlight_Colour = "white"; + ACE_Flashlight_Beam = QPATHTOEF(map,UI\Flashlight_beam_white_ca.paa); + ACE_Flashlight_Size = 2.75; + ACE_Flashlight_Sound = 1; + }; + }; + }; }; From d5d8413ee9b149d92c7cb8fb2bdc8042bce0d105 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Sun, 22 Jan 2017 19:39:02 +0300 Subject: [PATCH 03/37] fix kamaz medical can repair (#4850) --- addons/repair/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 56f9ccea73..178e8ecb12 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -471,7 +471,7 @@ class CfgVehicles { transportRepair = 0; }; - class Truck_02_engineeral_base_F: Truck_02_box_base_F { + class Truck_02_medical_base_F: Truck_02_box_base_F { GVAR(canRepair) = 0; }; From 7cdf2d75a3cce437bb3d50fcaa87470eb6155d81 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Mon, 23 Jan 2017 02:56:52 +0300 Subject: [PATCH 04/37] fix win newline in repo (#4849) --- addons/modules/XEH_PREP.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/modules/XEH_PREP.hpp b/addons/modules/XEH_PREP.hpp index 060ba4a872..ab0c69eab9 100644 --- a/addons/modules/XEH_PREP.hpp +++ b/addons/modules/XEH_PREP.hpp @@ -1 +1 @@ -PREP(moduleInit); +PREP(moduleInit); From e9b5bde37113fad29c39e49987332f3bbc3172d1 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 23 Jan 2017 12:13:02 -0600 Subject: [PATCH 05/37] Add ace_setting for scaling cookoff effect length (#4842) * Add getVar for scaling cookoff effect length * Switch to ace_setting * Add notes about merging settings --- addons/cookoff/ACE_Settings.hpp | 8 +++++++- addons/cookoff/XEH_postInit.sqf | 1 + addons/cookoff/functions/fnc_cookOffBox.sqf | 1 + addons/cookoff/functions/fnc_detonateAmmunition.sqf | 2 +- addons/cookoff/stringtable.xml | 8 +++++++- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/addons/cookoff/ACE_Settings.hpp b/addons/cookoff/ACE_Settings.hpp index d77a828fad..13ef915ffb 100644 --- a/addons/cookoff/ACE_Settings.hpp +++ b/addons/cookoff/ACE_Settings.hpp @@ -12,10 +12,16 @@ class ACE_Settings { value = 1; typeName = "BOOL"; }; - class GVAR(enableAmmoCookoff) { + class GVAR(enableAmmoCookoff) { // For CBA Setting Switch: we can eliminate and just use (ammoCookoffDuration == 0) displayName = CSTRING(enableAmmoCookoff_name); description = CSTRING(enableAmmoCookoff_tooltip); value = 1; typeName = "BOOL"; }; + class GVAR(ammoCookoffDuration) { + displayName = CSTRING(ammoCookoffDuration_name); + description = CSTRING(ammoCookoffDuration_tooltip); + value = 1; + typeName = "SCALAR"; + }; }; diff --git a/addons/cookoff/XEH_postInit.sqf b/addons/cookoff/XEH_postInit.sqf index 96612ed132..b7bed03475 100644 --- a/addons/cookoff/XEH_postInit.sqf +++ b/addons/cookoff/XEH_postInit.sqf @@ -81,6 +81,7 @@ GVAR(cacheTankDuplicates) = call CBA_fnc_createNamespace; ["AllVehicles", "killed", { params ["_vehicle"]; if (_vehicle getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmoCookoff)]) then { + if (GVAR(ammoCookoffDuration) == 0) exitWith {}; ([_vehicle] call FUNC(getVehicleAmmo)) params ["_mags", "_total"]; [_vehicle, _mags, _total] call FUNC(detonateAmmunition); }; diff --git a/addons/cookoff/functions/fnc_cookOffBox.sqf b/addons/cookoff/functions/fnc_cookOffBox.sqf index 8d4d421e36..f944d917e8 100644 --- a/addons/cookoff/functions/fnc_cookOffBox.sqf +++ b/addons/cookoff/functions/fnc_cookOffBox.sqf @@ -45,6 +45,7 @@ if (local _box) then { // These functions are smart and do all the cooking off work if (local _box) then { if (_box getVariable [QGVAR(enableAmmoCookoff), GVAR(enableAmmoCookoff)]) then { + if (GVAR(ammoCookoffDuration) == 0) exitWith {}; ([_box] call FUNC(getVehicleAmmo)) params ["_mags", "_total"]; [_box, _mags, _total] call FUNC(detonateAmmunition); }; diff --git a/addons/cookoff/functions/fnc_detonateAmmunition.sqf b/addons/cookoff/functions/fnc_detonateAmmunition.sqf index 21c72518f1..20ec84cbbd 100644 --- a/addons/cookoff/functions/fnc_detonateAmmunition.sqf +++ b/addons/cookoff/functions/fnc_detonateAmmunition.sqf @@ -31,7 +31,7 @@ private _magazine = _magazines select _magazineIndex; _magazine params ["_magazineClassname", "_amountOfMagazines"]; if (_amountOfMagazines > 0) exitWith { - private _removed = _amountOfMagazines min floor(1 + random(6)); + private _removed = _amountOfMagazines min floor(1 + random(6 / GVAR(ammoCookoffDuration))); _amountOfMagazines = _amountOfMagazines - _removed; if (_amountOfMagazines <= 0) then { diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index a0d20d6f5e..9bd2ae1f34 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -60,5 +60,11 @@ Ermöglicht Selbstzündung von Munition. Feuert Projektile der Munition ab, solange das Fahrzeug brennt und Munition besitzt. Aktywuje samozapłon amunicji. Wystrzeliwuje pociski podczas gdy pojazd płonie i posiada amunicję. + + Ammunition cook off duration + + + Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff] + - \ No newline at end of file + From 9b36ccadcc7c16d0584157d30af485de50760117 Mon Sep 17 00:00:00 2001 From: Neviothr Date: Mon, 23 Jan 2017 20:13:37 +0200 Subject: [PATCH 06/37] Aircraft cleanup (#4818) * Cleanup * Returned lines between classes * Add files via upload --- addons/aircraft/CfgAmmo.hpp | 4 +- addons/aircraft/CfgMagazines.hpp | 1 - addons/aircraft/CfgVehicles.hpp | 28 +- addons/aircraft/CfgWeapons.hpp | 23 +- addons/aircraft/Heli_Attack_01_base_F.hpp | 832 ++++++++++---------- addons/aircraft/RscInGameUI.hpp | 658 ++++++++-------- addons/aircraft/config.cpp | 4 +- addons/aircraft/flightmodel_alca.hpp | 19 +- addons/aircraft/flightmodel_thunderbolt.hpp | 11 +- addons/aircraft/flightmodel_yak.hpp | 11 +- 10 files changed, 788 insertions(+), 803 deletions(-) diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp index 2c3701b8e0..ec7cfd6a54 100644 --- a/addons/aircraft/CfgAmmo.hpp +++ b/addons/aircraft/CfgAmmo.hpp @@ -1,4 +1,3 @@ - class CfgAmmo { class BulletBase; class B_20mm : BulletBase { @@ -11,11 +10,11 @@ class CfgAmmo { explosive = 1.8; tracersEvery = 3; tracerEndTime = 3.5; - CraterEffects = "ExploAmmoCrater"; explosionEffects = "ExploAmmoExplosion"; model = "\A3\Weapons_f\Data\bullettracer\tracer_red"; }; + class ACE_20mm_HE : B_20mm {}; class ACE_20mm_AP : B_20mm { hit = 50; @@ -57,7 +56,6 @@ class CfgAmmo { submunitionAmmo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Sub"; submunitionConeType[] = {"custom", {{0,0}, {0,0}, {0,0}} }; }; - class ACE_Gatling_30mm_HE_Plane_CAS_01_Sub: Gatling_30mm_HE_Plane_CAS_01_F {}; // adjust damage and splash damage, closer to bluefor gatling with same caliber diff --git a/addons/aircraft/CfgMagazines.hpp b/addons/aircraft/CfgMagazines.hpp index b09bac6943..6d35e90255 100644 --- a/addons/aircraft/CfgMagazines.hpp +++ b/addons/aircraft/CfgMagazines.hpp @@ -1,4 +1,3 @@ - class CfgMagazines { // shoot helper object to tripple rof class VehicleMagazine; diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp index 9839149b3d..fe5395b841 100644 --- a/addons/aircraft/CfgVehicles.hpp +++ b/addons/aircraft/CfgVehicles.hpp @@ -1,4 +1,3 @@ - class CfgVehicles { class All { class Turrets; @@ -11,7 +10,6 @@ class CfgVehicles { }; class Air: AllVehicles {}; - class Helicopter: Air { class Turrets { class MainTurret; @@ -19,13 +17,11 @@ class CfgVehicles { }; class Plane: Air {}; - class ParachuteBase: Helicopter { class Turrets; }; class UAV: Plane {}; - class Helicopter_Base_F: Helicopter { class Turrets: Turrets { class CopilotTurret; @@ -54,7 +50,6 @@ class CfgVehicles { }; class Heli_Light_01_unarmed_base_F: Heli_Light_01_base_F {}; - class B_Heli_Light_01_F: Heli_Light_01_unarmed_base_F { /*class Turrets: Turrets { class CopilotTurret: CopilotTurret {}; @@ -74,12 +69,11 @@ class CfgVehicles { }; class B_Heli_Light_01_armed_F: Heli_Light_01_armed_base_F {}; - class Heli_Light_02_base_F: Helicopter_Base_H { driverCanEject = 1; lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - magazines[] = {"2000Rnd_762x51_Belt_T_Green","12Rnd_PG_missiles","168Rnd_CMFlare_Chaff_Magazine"}; + magazines[] = {"2000Rnd_762x51_Belt_T_Green", "12Rnd_PG_missiles", "168Rnd_CMFlare_Chaff_Magazine"}; class Turrets: Turrets { class CopilotTurret: CopilotTurret { @@ -98,7 +92,6 @@ class CfgVehicles { #include "Heli_Attack_01_base_F.hpp" class B_Heli_Attack_01_F: Heli_Attack_01_base_F {}; - class Heli_Attack_02_base_F: Helicopter_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; @@ -121,16 +114,17 @@ class CfgVehicles { canEject = 1; showHMD = 1; }; + class MainTurret: MainTurret { magazines[] = {"2000Rnd_762x51_Belt_T_Red"}; canEject = 1; }; + class RightDoorGun: MainTurret { magazines[] = {"2000Rnd_762x51_Belt_T_Red"}; canEject = 1; }; }; - /*class UserActions { class DoorL1_Open { available = 1; @@ -159,7 +153,6 @@ class CfgVehicles { showHMD = 1; }; }; - /*class UserActions: UserActions { class DoorL1_Open { available = 1; @@ -200,8 +193,8 @@ class CfgVehicles { lockDetectionSystem = 0; incomingMissileDetectionSystem = 16; driverCanEject = 1; - weapons[] = {"M134_minigun","missiles_DAR","CMFlareLauncher", "ACE_AIR_SAFETY" }; - magazines[] = {"5000Rnd_762x51_Yellow_Belt","24Rnd_missiles","168Rnd_CMFlare_Chaff_Magazine"}; + weapons[] = {"M134_minigun", "missiles_DAR", "CMFlareLauncher", "ACE_AIR_SAFETY" }; + magazines[] = {"5000Rnd_762x51_Yellow_Belt", "24Rnd_missiles", "168Rnd_CMFlare_Chaff_Magazine"}; class Turrets: Turrets { class MainTurret: MainTurret { @@ -212,7 +205,7 @@ class CfgVehicles { memoryPointGun = "laserstart"; stabilizedInAxes = 3; weapons[] = {"Laserdesignator_mounted"}; - soundServo[] = {"",0.01,1,30}; + soundServo[] = {"", 0.01, 1, 30}; magazines[] = {"Laserbatteries"}; inGunnerMayFire = 1; }; @@ -226,13 +219,10 @@ class CfgVehicles { }; class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {}; - class I_Heli_light_03_unarmed_F: Heli_light_03_unarmed_base_F {}; - class Plane_CAS_01_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - class Turrets; #include @@ -241,7 +231,6 @@ class CfgVehicles { class Plane_CAS_02_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - class Turrets; #include @@ -250,7 +239,6 @@ class CfgVehicles { class Plane_Fighter_03_base_F: Plane_Base_F { lockDetectionSystem = 12; incomingMissileDetectionSystem = 16; - class Turrets; #include @@ -274,7 +262,6 @@ class CfgVehicles { class UAV_02_CAS_base_F: UAV_02_base_F { weapons[] = {}; magazines[] = {}; - /*class Turrets: Turrets { class MainTurret: MainTurret {}; };*/ @@ -314,6 +301,7 @@ class CfgVehicles { class CopilotTurret: CopilotTurret { canEject = 1; }; + class LoadmasterTurret: MainTurret { canEject = 1; }; @@ -325,6 +313,7 @@ class CfgVehicles { class CopilotTurret: CopilotTurret { canEject = 1; }; + class LoadmasterTurret: LoadmasterTurret { canEject = 1; }; @@ -336,6 +325,7 @@ class CfgVehicles { class CopilotTurret: CopilotTurret { canEject = 1; }; + class LoadmasterTurret: LoadmasterTurret { canEject = 1; }; diff --git a/addons/aircraft/CfgWeapons.hpp b/addons/aircraft/CfgWeapons.hpp index e97889eabf..b94d9f4940 100644 --- a/addons/aircraft/CfgWeapons.hpp +++ b/addons/aircraft/CfgWeapons.hpp @@ -1,13 +1,10 @@ - class Mode_SemiAuto; class Mode_Burst; class Mode_FullAuto; class CfgWeapons { - class RocketPods; - class ACE_AIR_SAFETY : RocketPods - { + class ACE_AIR_SAFETY : RocketPods { CanLock = 0; displayName = "SAFE"; displayNameMagazine = "SAFE"; @@ -24,10 +21,12 @@ class CfgWeapons { // Manual Switching Of Flare Mode class SmokeLauncher; class CMFlareLauncher: SmokeLauncher { - modes[] = {"Single","Burst","AIBurst"}; + modes[] = {"Single", "Burst", "AIBurst"}; + class Single: Mode_SemiAuto { reloadTime = 0.1; }; + class Burst: Mode_Burst { displayName = CSTRING(CMFlareLauncher_Burst_Name); }; @@ -43,6 +42,7 @@ class CfgWeapons { reloadTime = 0.023; //0.04; dispersion = 0.006; //0.0022; }; + class close: manual {}; class short: close {}; class medium: close {}; @@ -57,18 +57,22 @@ class CfgWeapons { dispersion = 0.006; displayName = CSTRING(gatling_20mm_Name); }; + class close: close { reloadTime = 0.04; dispersion = 0.006; }; + class short: short { reloadTime = 0.04; dispersion = 0.006; }; + class medium: medium { reloadTime = 0.04; dispersion = 0.006; }; + class far: far { reloadTime = 0.04; dispersion = 0.006; @@ -78,14 +82,13 @@ class CfgWeapons { // buff gatling rof class MGunCore; class MGun: MGunCore {}; - class LMG_RCWS: MGun {}; - class LMG_Minigun: LMG_RCWS { class manual: MGun { reloadTime = 0.075; //0.015; dispersion = 0.00093; //0.006; }; + class close: manual {}; class short: close {}; class medium: close {}; @@ -94,10 +97,12 @@ class CfgWeapons { class LMG_Minigun_heli: LMG_Minigun { showAimCursorInternal = 0; + class manual: manual { reloadTime = 0.015; //0.033; Note: This is a way to fast ROF (requires over 60 FPS) @todo dispersion = 0.006; //0.0087; }; + class close: manual {}; class short: close {}; class medium: close {}; @@ -110,11 +115,13 @@ class CfgWeapons { dispersion = 0.0064; //0.0023; multiplier = 1; }; + class HighROF: LowROF { reloadTime = 0.02; //0.03; dispersion = 0.0064; //0.0023; multiplier = 1; }; + class close: HighROF {}; class short: close {}; class medium: LowROF {}; @@ -124,12 +131,14 @@ class CfgWeapons { class Gatling_30mm_Plane_CAS_01_F: CannonCore { autoFire = 1; burst = 1; + class LowROF: Mode_FullAuto { autoFire = 0; burst = 22; //65; reloadTime = 0.0462; //0.0154; //0.034; multiplier = 3; }; + class close: LowROF {}; class near: close {}; class short: close {}; diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp index f56cda1fd8..5b774a3dc2 100644 --- a/addons/aircraft/Heli_Attack_01_base_F.hpp +++ b/addons/aircraft/Heli_Attack_01_base_F.hpp @@ -3,12 +3,10 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { incomingMissileDetectionSystem = 16; driverCanEject = 1; - class MFD - { - class AirplaneHUD - { - class Bones{}; - class Draw{}; + class MFD { + class AirplaneHUD { + class Bones {}; + class Draw {}; topLeft = "HUD_top_left"; topRight = "HUD_top_right"; bottomLeft = "HUD_bottom_left"; @@ -16,15 +14,15 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { borderRight = 0; borderTop = 0; borderBottom = 0; - color[] = {0.15,1,0.15,1}; + color[] = {0.15, 1, 0.15, 1}; enableParallax = 0; helmetMountedDisplay = 1; - helmetPosition[] = {0,0,0}; - helmetRight[] = {0,0,0}; - helmetDown[] = {0,0,0}; + helmetPosition[] = {0, 0, 0}; + helmetRight[] = {0, 0, 0}; + helmetDown[] = {0, 0, 0}; }; - class ACE_HUD_1 - { + + class ACE_HUD_1 { topLeft = "HUD_top_left"; topRight = "HUD_top_right"; bottomLeft = "HUD_bottom_left"; @@ -32,580 +30,577 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { borderRight = 0; borderTop = 0; borderBottom = 0; - color[] = {0.15,1,0.15,1}; + color[] = {0.15, 1, 0.15, 1}; enableParallax = 0; - class Bones - { - class GunnerAim - { + + 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"}; + pos0[] = {0.5, "0.9 - 0.04 + 0.012"}; + pos10[] = {"0.5 + 0.0111", "0.9 - 0.04 + 0.012 + 0.0133"}; }; - class Target - { + + class Target { source = "target"; type = "vector"; - pos0[] = {0.5,0.5}; - pos10[] = {0.85,0.85}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.85, 0.85}; }; - class Velocity - { + + class Velocity { type = "vector"; source = "velocity"; - pos0[] = {0.5,0.5}; - pos10[] = {0.65,0.65}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.65, 0.65}; }; - class Velocity_slip - { + + class Velocity_slip { type = "vector"; source = "velocity"; - pos0[] = {0.5,0.845}; - pos10[] = {0.53,0.845}; + pos0[] = {0.5, 0.845}; + pos10[] = {0.53, 0.845}; }; - class VspeedBone - { + + class VspeedBone { type = "linear"; source = "vspeed"; sourceScale = 1; min = -10; max = 10; - minPos[] = {0.93,0.2}; - maxPos[] = {0.93,0.8}; + minPos[] = {0.93, 0.2}; + maxPos[] = {0.93, 0.8}; }; - class RadarAltitudeBone - { + + class RadarAltitudeBone { type = "linear"; source = "altitudeAGL"; sourceScale = 1; min = 0; max = 60; - minPos[] = {0.965,0.2}; - maxPos[] = {0.965,0.8}; + minPos[] = {0.965, 0.2}; + maxPos[] = {0.965, 0.8}; }; - class HorizonBankRot - { + + class HorizonBankRot { type = "rotational"; source = "horizonBank"; - center[] = {0.5,0.5}; + center[] = {0.5, 0.5}; min = -3.1416; max = 3.1416; minAngle = -180; maxAngle = 180; aspectRatio = 1; }; - class ForwardVec - { + + class ForwardVec { type = "vector"; source = "forward"; - pos0[] = {0,0}; - pos10[] = {0.25,0.25}; + pos0[] = {0, 0}; + pos10[] = {0.25, 0.25}; }; - class WeaponAim - { + + class WeaponAim { type = "vector"; source = "weapon"; - pos0[] = {0.5,0.5}; - pos10[] = {0.75,0.75}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.75, 0.75}; }; - class Level0 - { + + class Level0 { type = "horizon"; - pos0[] = {0.5,0.5}; - pos10[] = {0.78,0.78}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.78, 0.78}; angle = 0; }; - class LevelP5: Level0 - { + + class LevelP5: Level0 { angle = 5; }; - class LevelM5: Level0 - { + + class LevelM5: Level0 { angle = -5; }; - class LevelP10: Level0 - { + + class LevelP10: Level0 { angle = 10; }; - class LevelM10: Level0 - { + + class LevelM10: Level0 { angle = -10; }; - class LevelP15: Level0 - { + + class LevelP15: Level0 { angle = 15; }; - class LevelM15: Level0 - { + + class LevelM15: Level0 { angle = -15; }; - class LevelP20: Level0 - { + + class LevelP20: Level0 { angle = 20; }; - class LevelM20: Level0 - { + + class LevelM20: Level0 { angle = -20; }; - class LevelP25: Level0 - { + + class LevelP25: Level0 { angle = 25; }; - class LevelM25: Level0 - { + + class LevelM25: Level0 { angle = -25; }; - class LevelP30: Level0 - { + + class LevelP30: Level0 { angle = 30; }; - class LevelM30: Level0 - { + + class LevelM30: Level0 { angle = -30; }; - class LevelP35: Level0 - { + + class LevelP35: Level0 { angle = 35; }; - class LevelM35: Level0 - { + + class LevelM35: Level0 { angle = -35; }; - class LevelP40: Level0 - { + + class LevelP40: Level0 { angle = 40; }; - class LevelM40: Level0 - { + + class LevelM40: Level0 { angle = -40; }; - class LevelP45: Level0 - { + + class LevelP45: Level0 { angle = 45; }; - class LevelM45: Level0 - { + + class LevelM45: Level0 { angle = -45; }; - class LevelP50: Level0 - { + + class LevelP50: Level0 { angle = 50; }; - class LevelM50: Level0 - { + + class LevelM50: Level0 { angle = -50; }; }; - class Draw - { - color[] = {0.18,1,0.18}; + + 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 - { + + 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 }}; + 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 - { + + 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 }}; + 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}; + + 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 },{ }}; + 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 - { + + 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 }}; + 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 - { + + 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 }}; + 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 - { + + 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 }}; + 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 - { + + 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 },{ }}; + 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 - { + + 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}; + pos[] = {{0.61, 0.86}, 1}; + right[] = {{0.65, 0.86}, 1}; + down[] = {{0.61, 0.9}, 1}; }; - class Ammo_GUN - { + + class Ammo_GUN { type = "group"; condition = "mgun"; - class Ammo_count_GUN - { + + 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}; + pos[] = {{0.61, 0.89}, 1}; + right[] = {{0.65, 0.89}, 1}; + down[] = {{0.61, 0.93}, 1}; }; }; - class Ammo_RKT - { + + class Ammo_RKT { type = "group"; condition = "rocket"; - class Ammo_count_RKT - { + + 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}; + pos[] = {{0.61, 0.89}, 1}; + right[] = {{0.65, 0.89}, 1}; + down[] = {{0.61, 0.93}, 1}; }; }; - class Ammo_AGM - { + + class Ammo_AGM { type = "group"; condition = "AAmissile"; - class Ammo_count_AGM - { + + 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}; + pos[] = {{0.61, 0.89}, 1}; + right[] = {{0.65, 0.89}, 1}; + down[] = {{0.61, 0.93}, 1}; }; }; - class Ammo_AAM - { + + class Ammo_AAM { type = "group"; condition = "ATmissile"; - class Ammo_count_AAM - { + + 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}; + pos[] = {{0.61, 0.89}, 1}; + right[] = {{0.65, 0.89}, 1}; + down[] = {{0.61, 0.93}, 1}; }; }; - class Ammo_Bomb - { + + class Ammo_Bomb { type = "group"; condition = "Bomb"; - class Ammo_count_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}; + pos[] = {{0.61, 0.89}, 1}; + right[] = {{0.65, 0.89}, 1}; + down[] = {{0.61, 0.93}, 1}; }; }; - class LightsGroup - { + + class LightsGroup { type = "group"; condition = "lights"; - class LightsText - { + + 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}; + 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 - { + + class CollisionLightsGroup { type = "group"; condition = "collisionlights"; - class CollisionLightsText - { + + 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}; + 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 - { + + class GearGroup { type = "group"; condition = "ils"; - class GearText - { + + 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}; + 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 - { + + class ATMissileTOFGroup { condition = "ATmissile"; type = "group"; - class TOFtext - { + + 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}; + pos[] = {{0.61, 0.92}, 1}; + right[] = {{0.65, 0.92}, 1}; + down[] = {{0.61, 0.96}, 1}; }; - class TOFnumber - { + + 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}; + pos[] = {{0.69, 0.92}, 1}; + right[] = {{0.73, 0.92}, 1}; + down[] = {{0.69, 0.96}, 1}; }; }; - class LaserTOFGroup - { + + class LaserTOFGroup { condition = "Bomb"; type = "group"; - class TOFtext - { + + 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}; + pos[] = {{0.61, 0.92}, 1}; + right[] = {{0.65, 0.92}, 1}; + down[] = {{0.61, 0.96}, 1}; }; - class TOFnumber - { + + 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}; + pos[] = {{0.69, 0.92}, 1}; + right[] = {{0.73, 0.92}, 1}; + down[] = {{0.69, 0.96}, 1}; }; }; - class RocketTOFGroup - { + + class RocketTOFGroup { condition = "Rocket"; type = "group"; - class TOFtext - { + + 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}; + pos[] = {{0.61, 0.92}, 1}; + right[] = {{0.65, 0.92}, 1}; + down[] = {{0.61, 0.96}, 1}; }; - class TOFnumber - { + + 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}; + pos[] = {{0.69, 0.92}, 1}; + right[] = {{0.73, 0.92}, 1}; + down[] = {{0.69, 0.96}, 1}; }; }; - class RangeNumber - { + + 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}; + pos[] = {{0.39, 0.89}, 1}; + right[] = {{0.43, 0.89}, 1}; + down[] = {{0.39, 0.93}, 1}; }; - class RangeText - { + + 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}; + pos[] = {{0.39, 0.86}, 1}; + right[] = {{0.43, 0.86}, 1}; + down[] = {{0.39, 0.9}, 1}; }; - class SpeedNumber - { + + 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}; + pos[] = {{0.03, 0.475}, 1}; + right[] = {{0.08, 0.475}, 1}; + down[] = {{0.03, 0.525}, 1}; }; - class TorqueNumber - { + + class TorqueNumber { condition = "simulRTD"; - class Torque_number - { + + 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}; + pos[] = {{0.065, 0.175}, 1}; + right[] = {{0.115, 0.175}, 1}; + down[] = {{0.065, 0.225}, 1}; }; - class Torquetext - { + + 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}; + pos[] = {{0.07, 0.175}, 1}; + right[] = {{0.12, 0.175}, 1}; + down[] = {{0.07, 0.225}, 1}; }; }; - class AltNumber: SpeedNumber - { + + 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}; + pos[] = {{0.83, 0.475}, 1}; + right[] = {{0.88, 0.475}, 1}; + down[] = {{0.83, 0.525}, 1}; }; - class ASLNumber - { + + 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}; + pos[] = {{0.835, 0.18}, 1}; + right[] = {{0.875, 0.18}, 1}; + down[] = {{0.835, 0.22}, 1}; }; - class VspeedScalePosta - { + + 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 },{ }}; + 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}; + + class RadarAltitudeBand { + clipTL[] = {0, 0.2}; + clipBR[] = {1, 0.8}; hideValue = 201; - class radarbanda - { + + class radarbanda { type = "line"; width = 17; - points[] = {{ "RadarAltitudeBone",{ 0,0 },1 },{ "RadarAltitudeBone",{ 0,0.6 },1 }}; + points[] = {{"RadarAltitudeBone", {0, 0}, 1}, {"RadarAltitudeBone", {0, 0.6}, 1 }}; }; }; - class VspeedBand - { + + 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 },{ }}; + 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 - { + + 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}; + pos[] = {{0.5, 0.045}, 1}; + right[] = {{0.56, 0.045}, 1}; + down[] = {{0.5, "0.045 + 0.06"}, 1}; }; - class Center_box - { + + 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 }}; + 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 - { + + class HeadingArrow { type = "line"; width = 7; - points[] = {{ { "0.5","0.128 + 0.03" },1 },{ { 0.5,0.128 },1 }}; + 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 - { + + class HeadingScale_LEFT { + clipTL[] = {0, 0}; + clipBR[] = {0.45, 1}; + + class Heading_group { type = "scale"; horizontal = 1; source = "heading"; @@ -624,17 +619,17 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { 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"}; + 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 - { + + class HeadingScale_RIGHT { + clipTL[] = {0.55, 0}; + clipBR[] = {1, 1}; + + class Heading_group { type = "scale"; horizontal = 1; source = "heading"; @@ -653,17 +648,17 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { 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"}; + 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 - { + + 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"; @@ -682,41 +677,41 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { 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"}; + pos[] = {0.12, "0.0 + 0.065"}; + right[] = {0.16, "0.0 + 0.065"}; + down[] = {0.12, "0.04 + 0.065"}; }; }; - class Fuel_Text - { + + 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}; + pos[] = {{0.03, 0.9}, 1}; + right[] = {{0.07, 0.9}, 1}; + down[] = {{0.03, 0.94}, 1}; }; - class Fuel_Number - { + + 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}; + 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}; + helmetPosition[] = {-0.04, 0.04, 0.1}; + helmetRight[] = {0.08, 0, 0}; + helmetDown[] = {0, -0.08, 0}; }; - class ACE_HUD_2 - { + + class ACE_HUD_2 { topLeft = "HUD_top_left"; topRight = "HUD_top_right"; bottomLeft = "HUD_bottom_left"; @@ -724,148 +719,147 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { borderRight = 0; borderTop = 0; borderBottom = 0; - color[] = {0.15,1,0.15,1}; + color[] = {0.15, 1, 0.15, 1}; enableParallax = 0; - class Bones - { - class Velocity - { + + class Bones { + class Velocity { type = "vector"; source = "velocity"; - pos0[] = {0.5,0.5}; - pos10[] = {0.75,0.75}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.75, 0.75}; }; - class ForwardVec1 - { + + class ForwardVec1 { type = "vector"; source = "forward"; - pos0[] = {0,0}; - pos10[] = {0.25,0.25}; + pos0[] = {0, 0}; + pos10[] = {0.25, 0.25}; }; - class ForwardVec - { + + class ForwardVec { type = "vector"; source = "forward"; - pos0[] = {0,0}; - pos10[] = {0.253,0.253}; + pos0[] = {0, 0}; + pos10[] = {0.253, 0.253}; }; - class WeaponAim - { + + class WeaponAim { type = "vector"; source = "weapon"; - pos0[] = {0.5,0.5}; - pos10[] = {0.753,0.753}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.753, 0.753}; }; - class WeaponAim1 - { + + class WeaponAim1 { type = "vector"; source = "weapon"; - pos0[] = {0,0}; - pos10[] = {0.253,0.23}; + pos0[] = {0, 0}; + pos10[] = {0.253, 0.23}; }; - class Target - { + + class Target { type = "vector"; source = "target"; - pos0[] = {0.5,0.5}; - pos10[] = {0.753,0.753}; + pos0[] = {0.5, 0.5}; + pos10[] = {0.753, 0.753}; }; - class RadarContact - { + + class RadarContact { type = "fixed"; - pos[] = {0,0}; + pos[] = {0, 0}; }; }; - class Draw - { - color[] = {0.18,1,0.18}; + + class Draw { + color[] = {0.18, 1, 0.18}; alpha = 1; condition = "on"; - class PlaneMovementCrosshair - { + + 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 }}; + 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 - { + + class Gunner_AIM { type = "group"; - class Circle - { + + 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 }}; + 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 - { + + class GunCross { condition = "mgun"; - class Circle - { + + 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 },{ }}; + 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 - { + + class RocketCross { condition = "rocket"; width = 6; - class Circle - { + + 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 },{ }}; + 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 - { + + 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 }}; + 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 - { + + class AA_aim { condition = "AAmissile"; - class Circle - { + + 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 }}; + 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 - { + + 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 },{ }}; + 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 - { + + class RadarTargets { type = "radar"; - pos0[] = {0.5,0.5}; - pos10[] = {0.753,0.753}; + 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 }}; + 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}; + 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"}; - + 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; @@ -874,7 +868,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { 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}; + 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; @@ -889,8 +883,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { maxTurn = 120; initTurn = 0; - class OpticsIn - { + class OpticsIn { delete Narrow; delete Medium; delete Wide; @@ -906,13 +899,14 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { initFov = 0.466; minFov = 0.466; maxFov = 0.466; - visionMode[] = {"Normal","Ti"}; - thermalMode[] = {0,1}; - gunnerOpticsColor[] = {0,0,0,1}; + visionMode[] = {"Normal", "Ti"}; + thermalMode[] = {0, 1}; + gunnerOpticsColor[] = {0, 0, 0, 1}; directionStabilized = 0; horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F"; }; + class ACE_Wide: ACE_WideUnstabilized { opticsDisplayName = "W"; initAngleX = 0; @@ -924,50 +918,51 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { initFov = 0.466; minFov = 0.466; maxFov = 0.466; - visionMode[] = {"Normal","Ti"}; - thermalMode[] = {0,1}; - gunnerOpticsColor[] = {0,0,0,1}; + visionMode[] = {"Normal", "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 ACE_Medium: ACE_Wide { opticsDisplayName = "M"; initFov = 0.093; minFov = 0.093; maxFov = 0.093; - gunnerOpticsColor[] = {0,0,0,1}; + gunnerOpticsColor[] = {0, 0, 0, 1}; directionStabilized = 1; horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F"; }; + class ACE_Narrow: ACE_Wide { opticsDisplayName = "N"; initFov = 0.029; minFov = 0.029; maxFov = 0.029; - gunnerOpticsColor[] = {0,0,0,1}; + gunnerOpticsColor[] = {0, 0, 0, 1}; directionStabilized = 1; horizontallyStabilized = 1; gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F"; - }; + class ACE_Narrower: ACE_Wide { opticsDisplayName = "Z"; initFov = 0.01; minFov = 0.01; maxFov = 0.01; - gunnerOpticsColor[] = {0,0,0,1}; + 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 - { + + class OpticsOut { + class Monocular { initAngleX = 0; minAngleX = -30; maxAngleX = 30; @@ -990,6 +985,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F { class Gatling { weapon = "ACE_gatling_20mm_Comanche"; }; + class Muzzle_flash { weapon = "ACE_gatling_20mm_Comanche"; }; diff --git a/addons/aircraft/RscInGameUI.hpp b/addons/aircraft/RscInGameUI.hpp index d3ef60c6b6..67116a7b62 100644 --- a/addons/aircraft/RscInGameUI.hpp +++ b/addons/aircraft/RscInGameUI.hpp @@ -10,572 +10,568 @@ class HScrollbar; class RscLadderPicture; class RscControlsGroupNoScrollbars; - -class RscInGameUI -{ +class RscInGameUI { class RscUnitInfo; - class Rsc_ACE_Helo_UI_Turret: RscUnitInfo - { + class Rsc_ACE_Helo_UI_Turret: RscUnitInfo { idd = 300; - controls[] = {"CA_IGUI_elements_group","CA_VehicleToggles"}; + controls[] = {"CA_IGUI_elements_group", "CA_VehicleToggles"}; + class VScrollbar; class HScrollbar; - class CA_IGUI_elements_group: RscControlsGroup - { + class CA_IGUI_elements_group: RscControlsGroup { idc = 170; - class VScrollbar: VScrollbar - { + + class VScrollbar: VScrollbar { width = 0; }; - class HScrollbar: HScrollbar - { + + 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 - { + + 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"; + 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)"; + 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 - { + + class CA_Speed: RangeText { idc = 188; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_Alt: RangeText { idc = 189; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_VisionMode: RscText { idc = 152; style = 0; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_FlirMode: RscText { idc = 153; style = 0; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class ValueGrid: RangeText { idc = 172; font = "EtelkaMonospacePro"; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + 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)"; + 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 - { + + class ValueTime: RangeText { idc = 190; text = "20:28:35"; font = "EtelkaMonospacePro"; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_Laser: RscText { idc = 158; style = "0x30 + 0x800"; - sizeEx = "0.038*SafezoneH"; + sizeEx = "0.038 * SafezoneH"; shadow = 0; font = "EtelkaMonospacePro"; text = QPATHTOF(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)"; + 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 - { + + class CA_Heading: RscText { idc = 156; style = 0; - sizeEx = "0.038*SafezoneH"; + 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)"; + 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_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_Helo_UI_02: RscUnitInfo { + controls[] = {"CA_TextFlaresMode", "CA_TextFlares", "CA_VehicleToggles", "CA_Radar"}; }; - class Rsc_ACE_Drones_UI_Turret: RscUnitInfo - { + + class Rsc_ACE_Drones_UI_Turret: RscUnitInfo { idd = 300; - controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"}; - class CA_IGUI_elements_group: RscControlsGroup - { + controls[] = {"CA_Zeroing", "CA_IGUI_elements_group", "CA_VehicleToggles"}; + + class CA_IGUI_elements_group: RscControlsGroup { idc = 170; - class VScrollbar: VScrollbar - { + + class VScrollbar: VScrollbar { width = 0; }; - class HScrollbar: HScrollbar - { + + 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 - { + + 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"; + 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)"; + 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 - { + + class CA_Speed: RangeText { idc = 188; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_Alt: RangeText { idc = 189; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class ValueTime: RangeText { idc = 190; text = "20:28:35"; font = "EtelkaMonospacePro"; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_VisionMode: RscText { idc = 152; style = 0; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_FlirMode: RscText { idc = 153; style = 0; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class TgT_Grid_text: RangeText { idc = 1005; text = "TGT:"; font = "EtelkaMonospacePro"; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class TGT_ValueGrid: RangeText { idc = 172; font = "EtelkaMonospacePro"; - colorText[] = {0.706,0.0745,0.0196,0.8}; + 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)"; + 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 - { + + class OWN_Grid_text: RangeText { idc = 1005; text = "OWN:"; font = "EtelkaMonospacePro"; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class OWN_ValueGrid: RangeText { idc = 171; font = "EtelkaMonospacePro"; - colorText[] = {0.15,1,0.15,0.8}; + colorText[] = {0.15, 1, 0.15, 0.8}; style = 2; - sizeEx = "0.0295*SafezoneH"; + 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)"; + 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 - { + + class CA_Laser: RscText { idc = 158; style = "0x30 + 0x800"; - sizeEx = "0.038*SafezoneH"; + sizeEx = "0.038 * SafezoneH"; shadow = 0; align = "right"; font = "EtelkaMonospacePro"; text = QPATHTOF(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)"; + 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 - { + + class CA_Heading: RscText { idc = 156; style = 0; - sizeEx = "0.038*SafezoneH"; + 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)"; + 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 - { + + 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 - { + 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 - { + + class VScrollbar: VScrollbar { width = 0; }; - class HScrollbar: HScrollbar - { + + 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 - { + 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"; + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + x = "10 * (0.01875 * SafezoneH)"; + y = "32.6 * (0.025 * SafezoneH)"; + w = "6 * (0.01875 * SafezoneH)"; + h = "1 * (0.025 * SafezoneH)"; }; - class TextMag: TextGrid - { + + 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)"; + x = "5.8 * (0.01875 * SafezoneH)"; + y = "7 * (0.025 * SafezoneH)"; + w = "5 * (0.01875 * SafezoneH)"; + h = "1 * (0.025 * SafezoneH)"; }; - class OpticsZoom: TextGrid - { + + 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)"; + x = "10.3 * (0.01875 * SafezoneH)"; + y = "7 * (0.025 * SafezoneH)"; + w = "6 * (0.01875 * SafezoneH)"; + h = "1 * (0.025 * SafezoneH)"; }; - class BorderLineSpdTop: RscPicture - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + 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)"; + x = "1.5 * (0.01875 * SafezoneH)"; + y = "13 * (0.025 * SafezoneH)"; + w = "5 * (0.01875 * SafezoneH)"; + h = "14 * (0.025 * SafezoneH)"; }; - class TextAlt: TextGrid - { + + 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)"; + 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 - { + + 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)"; + 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 - { + + class CA_Alt: TextGrid { idc = 191; - sizeEx = "0.03*SafezoneH"; + 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)"; + 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 - { + + 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)"; + x = "47 * (0.01875 * SafezoneH)"; + y = "13 * (0.025 * SafezoneH)"; + w = "2.5 * (0.01875 * SafezoneH)"; + h = "14 * (0.025 * SafezoneH)"; }; - class AnalogueHorizon: RscLadderPicture - { + + 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)"; + x = "16.75 * (0.01875 * SafezoneH)"; + y = "5 * (0.025 * SafezoneH)"; + w = "20 * (0.01875 * SafezoneH)"; + h = "30 * (0.025 * SafezoneH)"; }; - class HorizonCenter: RscPicture - { + + 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)"; + 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 863797ebeb..48bf2c054e 100644 --- a/addons/aircraft/config.cpp +++ b/addons/aircraft/config.cpp @@ -8,7 +8,7 @@ class CfgPatches { requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; author = ECSTRING(common,ACETeam); - authors[] = {"KoffeinFlummi","Crusty","commy2","jaynus","Kimi"}; + authors[] = {"KoffeinFlummi", "Crusty", "commy2", "jaynus", "Kimi"}; url = ECSTRING(main,URL); VERSION_CONFIG; @@ -21,4 +21,4 @@ class CfgPatches { #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" #include "CfgWeapons.hpp" -#include "RscInGameUI.hpp" \ No newline at end of file +#include "RscInGameUI.hpp" diff --git a/addons/aircraft/flightmodel_alca.hpp b/addons/aircraft/flightmodel_alca.hpp index 09785e22e7..afe74ef9fd 100644 --- a/addons/aircraft/flightmodel_alca.hpp +++ b/addons/aircraft/flightmodel_alca.hpp @@ -1,4 +1,3 @@ - acceleration = 300; maxSpeed = 936; irScanRangeMin = 500; @@ -9,16 +8,16 @@ rudderInfluence = 0.001; aileronControlsSensitivityCoef = 3; elevatorControlsSensitivity = 2; rudderControlsSensitivityoef = 4; -elevatorCoef[] = {0.6,0.73,0.62,0.52,0.39,0.33,0.28}; -aileronCoef[] = {0.5,0.68,0.75,0.86,0.92,0.96,1}; -rudderCoef[] = {0.9,0.75,0.58,0.45,0.38,0.35,0.3}; -envelope[] = {0,0.06,1.2,3,3.6,3.75,3.65,3.45,3.3,2.8,2.4,1.9,1.5}; -angleOfIndicence = 0.0523599; //determines velocity vector behaviour, how quickly it catches up with where your nose is pointing, I think -draconicForceXCoef = 7.5; //max angle of attack, lower value gives higher aoa -draconicForceYCoef = 0.2198; //Something to do with bleed off of speed, low values seem to increase bleed off +elevatorCoef[] = {0.6, 0.73, 0.62, 0.52, 0.39, 0.33, 0.28}; +aileronCoef[] = {0.5, 0.68, 0.75, 0.86, 0.92, 0.96, 1}; +rudderCoef[] = {0.9, 0.75, 0.58, 0.45, 0.38, 0.35, 0.3}; +envelope[] = {0, 0.06, 1.2, 3, 3.6, 3.75, 3.65, 3.45, 3.3, 2.8, 2.4, 1.9, 1.5}; +angleOfIndicence = 0.0523599; //determines velocity vector behaviour, how quickly it catches up with where your nose is pointing, I think +draconicForceXCoef = 7.5; //max angle of attack, lower value gives higher aoa +draconicForceYCoef = 0.2198; //Something to do with bleed off of speed, low values seem to increase bleed off draconicForceZCoef = 5.12; //???? -draconicTorqueXCoef = 0.18; //resistance to elevator input, also impacts speed degradation +draconicTorqueXCoef = 0.18; //resistance to elevator input, also impacts speed degradation draconicTorqueYCoef = 0.000017; -thrustCoef[] = {1.3,1.27,1.24,1.2,1.17,1.15,1.13,1.1,1.06,1,0.94,0.72,0.51,0.4,0.25,0}; +thrustCoef[] = {1.3, 1.27, 1.24, 1.2, 1.17, 1.15, 1.13, 1.1, 1.06, 1, 0.94, 0.72, 0.51, 0.4, 0.25, 0}; gunAimDown = 0.029; flapsFrictionCoef = 0.32; diff --git a/addons/aircraft/flightmodel_thunderbolt.hpp b/addons/aircraft/flightmodel_thunderbolt.hpp index 2446e166bc..0f99f5ef91 100644 --- a/addons/aircraft/flightmodel_thunderbolt.hpp +++ b/addons/aircraft/flightmodel_thunderbolt.hpp @@ -1,4 +1,3 @@ - maxSpeed = 736; aileronSensitivity = 0.85; elevatorSensitivity = 0.75; @@ -6,9 +5,9 @@ rudderInfluence = 0.001; aileronControlsSensitivityCoef = 3; elevatorControlsSensitivity = 2; rudderControlsSensitivityoef = 4; -elevatorCoef[] = {0.7,0.75,0.75,0.65,0.55,0.45,0.35}; -aileronCoef[] = {0.6,0.85,0.88,0.92,0.95,0.97,1}; -rudderCoef[] = {0.8,0.75,0.65,0.5,0.4,0.33,0.3}; +elevatorCoef[] = {0.7, 0.75, 0.75, 0.65, 0.55, 0.45, 0.35}; +aileronCoef[] = {0.6, 0.85, 0.88, 0.92, 0.95, 0.97, 1}; +rudderCoef[] = {0.8, 0.75, 0.65, 0.5, 0.4, 0.33, 0.3}; flapsFrictionCoef = 0.35; angleOfIndicence = 0.0523599; draconicForceXCoef = 9.5; @@ -16,7 +15,7 @@ draconicForceYCoef = 0.56; draconicForceZCoef = 0.1; draconicTorqueXCoef = 0.58; draconicTorqueYCoef = 0.00013; -envelope[] = {0,0,0.75,2.4,3.6,3.8,3.7,3.2,2.2,1.7,0.9}; -thrustCoef[] = {1,1.2,1.3,1.25,1.06,1.01,1,0.92,0.75,0.65,0.5,0.25,0}; +envelope[] = {0, 0, 0.75, 2.4, 3.6, 3.8, 3.7, 3.2, 2.2, 1.7, 0.9}; +thrustCoef[] = {1, 1.2, 1.3, 1.25, 1.06, 1.01, 1, 0.92, 0.75, 0.65, 0.5, 0.25, 0}; acceleration = 265; landingSpeed = 220; diff --git a/addons/aircraft/flightmodel_yak.hpp b/addons/aircraft/flightmodel_yak.hpp index bcf5a4cfd0..9ba4c40c76 100644 --- a/addons/aircraft/flightmodel_yak.hpp +++ b/addons/aircraft/flightmodel_yak.hpp @@ -1,4 +1,3 @@ - maxSpeed = 1059; acceleration = 300; aileronSensitivity = 0.635; @@ -7,15 +6,15 @@ rudderInfluence = 0.001; aileronControlsSensitivityCoef = 3; elevatorControlsSensitivity = 2; rudderControlsSensitivityoef = 4; -elevatorCoef[] = {0.6,0.76,0.7,0.65,0.58,0.47,0.43}; -aileronCoef[] = {0.5,0.85,0.87,0.89,0.92,0.95,1}; -rudderCoef[] = {0.8,0.7,0.6,0.5,0.4,0.32,0.27}; +elevatorCoef[] = {0.6, 0.76, 0.7, 0.65, 0.58, 0.47, 0.43}; +aileronCoef[] = {0.5, 0.85, 0.87, 0.89, 0.92, 0.95, 1}; +rudderCoef[] = {0.8, 0.7, 0.6, 0.5, 0.4, 0.32, 0.27}; angleOfIndicence = 0.0523599; draconicForceXCoef = 7.6; draconicForceYCoef = 0.75; draconicForceZCoef = 0.085; draconicTorqueXCoef = 0.815; draconicTorqueYCoef = 0.000152; -envelope[] = {0,0.446,1.5,3.9,5.2,4.8,4.2,3.5,2,1,0.5}; -thrustCoef[] = {1,1.2,1.7,1.7,1.65,1.54,1.32,1.1,0.95,0.75,0.5,0.35,0}; +envelope[] = {0, 0.446, 1.5, 3.9, 5.2, 4.8, 4.2, 3.5, 2, 1, 0.5}; +thrustCoef[] = {1, 1.2, 1.7, 1.7, 1.65, 1.54, 1.32, 1.1, 0.95, 0.75, 0.5, 0.35, 0}; flapsFrictionCoef = 0.32; From b30705661c14039572a0931d6d04c46d787e697a Mon Sep 17 00:00:00 2001 From: Dystopian Date: Mon, 23 Jan 2017 21:14:55 +0300 Subject: [PATCH 07/37] add real name for civilian kamaz trucks (#4851) --- addons/realisticnames/CfgVehicles.hpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/addons/realisticnames/CfgVehicles.hpp b/addons/realisticnames/CfgVehicles.hpp index f53465b08f..f31b7ffeac 100644 --- a/addons/realisticnames/CfgVehicles.hpp +++ b/addons/realisticnames/CfgVehicles.hpp @@ -251,6 +251,18 @@ class CfgVehicles { class I_Truck_02_medical_F: Truck_02_medical_base_F { displayName = CSTRING(Truck_02_medical_Name); }; + class C_Truck_02_transport_F: Truck_02_transport_base_F { + displayName = CSTRING(Truck_02_transport_Name); + }; + class C_Truck_02_covered_F: Truck_02_base_F { + displayName = CSTRING(Truck_02_covered_Name); + }; + class C_Truck_02_fuel_F: Truck_02_fuel_base_F { + displayName = CSTRING(Truck_02_fuel_Name); + }; + class C_Truck_02_box_F: Truck_02_box_base_F { + displayName = CSTRING(Truck_02_box_Name); + }; class Truck_03_base_F; class O_Truck_03_transport_F: Truck_03_base_F { From aa393ccf922db53fe99b0ea42e156c31b97191fc Mon Sep 17 00:00:00 2001 From: Dorbedo Date: Sat, 28 Jan 2017 20:43:42 +0100 Subject: [PATCH 08/37] typo in ace_interaction_fnc_getDoorAnimations (#4854) --- addons/interaction/functions/fnc_getDoorAnimations.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interaction/functions/fnc_getDoorAnimations.sqf b/addons/interaction/functions/fnc_getDoorAnimations.sqf index fac29c74a8..a5c185d7d6 100644 --- a/addons/interaction/functions/fnc_getDoorAnimations.sqf +++ b/addons/interaction/functions/fnc_getDoorAnimations.sqf @@ -36,7 +36,7 @@ _index = [ "door_11", "door_12", "door_13", - "Door_14", + "door_14", "door_15", "door_16", "door_17", From 9d68fbf987203469a64d54413c05b4dad455de78 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 2 Feb 2017 20:03:13 +0100 Subject: [PATCH 09/37] fix script error caused by new arguments passed to handleDamage (#4866) * fix script error caused by new arguments passed to handleDamage * Copy array to not break other handleDamage ehs * Resize to 7 --- addons/medical/functions/fnc_handleDamage.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index de86665f99..4d3dc01e31 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -18,6 +18,7 @@ */ #include "script_component.hpp" +_this = _this select [0, 7]; params ["_unit", "_selection", "_damage", "_shooter", "_projectile", "_hitPointIndex"]; TRACE_5("ACE_DEBUG: HandleDamage Called",_unit, _selection, _damage, _shooter, _projectile); From 06f99f044c50e14f2a0fdc590812296864b33fe7 Mon Sep 17 00:00:00 2001 From: Dystopian Date: Fri, 3 Feb 2017 02:45:32 +0300 Subject: [PATCH 10/37] Fix deprecated AW159 and CH-47I config (#4726) --- addons/aircraft/CfgVehicles.hpp | 39 ++++++++++++--------------------- 1 file changed, 14 insertions(+), 25 deletions(-) diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp index fe5395b841..f5f496505e 100644 --- a/addons/aircraft/CfgVehicles.hpp +++ b/addons/aircraft/CfgVehicles.hpp @@ -188,17 +188,23 @@ class CfgVehicles { };*/ }; - class Heli_light_03_base_F: Helicopter_Base_F {}; - class I_Heli_light_03_base_F: Heli_light_03_base_F { + class Heli_light_03_base_F: Helicopter_Base_F { + driverCanEject = 1; + + class Turrets: Turrets { + class MainTurret: MainTurret { + canEject = 1; + }; + }; + }; + class I_Heli_light_03_F: Heli_light_03_base_F { lockDetectionSystem = 0; incomingMissileDetectionSystem = 16; - driverCanEject = 1; weapons[] = {"M134_minigun", "missiles_DAR", "CMFlareLauncher", "ACE_AIR_SAFETY" }; magazines[] = {"5000Rnd_762x51_Yellow_Belt", "24Rnd_missiles", "168Rnd_CMFlare_Chaff_Magazine"}; class Turrets: Turrets { class MainTurret: MainTurret { - canEject = 1; showHMD = 1; gunBeg = "commanderview"; gunEnd = "laserstart"; @@ -212,12 +218,6 @@ class CfgVehicles { }; }; - class I_Heli_light_03_F: Heli_light_03_base_F { - class Turrets: Turrets { - class MainTurret: MainTurret {}; - }; - }; - class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {}; class I_Heli_light_03_unarmed_F: Heli_light_03_unarmed_base_F {}; class Plane_CAS_01_base_F: Plane_Base_F { @@ -267,29 +267,18 @@ class CfgVehicles { };*/ }; - class Heli_Transport_03_base_F: Helicopter_Base_H {}; - class B_Heli_Transport_03_base_F: Heli_Transport_03_base_F { - lockDetectionSystem = 12; - incomingMissileDetectionSystem = 16; + class Heli_Transport_03_base_F: Helicopter_Base_H { driverCanEject = 1; class Turrets: Turrets { class CopilotTurret: CopilotTurret { canEject = 1; }; - //class MainTurret: MainTurret {}; - class RightDoorGun: MainTurret {}; }; }; - - class B_Heli_Transport_03_unarmed_base_F: Heli_Transport_03_base_F { - class Turrets: Turrets { - class CopilotTurret: CopilotTurret { - canEject = 1; - }; - //class MainTurret: MainTurret {}; - //class RightDoorGun: MainTurret {}; - }; + class B_Heli_Transport_03_F: Heli_Transport_03_base_F { + lockDetectionSystem = 12; + incomingMissileDetectionSystem = 16; }; class Heli_Transport_04_base_F: Helicopter_Base_H { From c0c41667e72f5aeb200330c509902324fd9386e6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 5 Feb 2017 13:48:09 +0100 Subject: [PATCH 11/37] prep v3.9.0 --- README.md | 2 +- addons/main/script_version.hpp | 6 +++--- docs/README_DE.md | 2 +- docs/README_PL.md | 2 +- mod.cpp | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4e78a5aaf3..9d5be87515 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Issues diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index 68fa060a97..ed55245429 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 -#define MINOR 8 -#define PATCHLVL 3 -#define BUILD 14 +#define MINOR 9 +#define PATCHLVL 0 +#define BUILD 15 diff --git a/docs/README_DE.md b/docs/README_DE.md index 1541ef02b5..5e10b5b91b 100644 --- a/docs/README_DE.md +++ b/docs/README_DE.md @@ -4,7 +4,7 @@

- ACE3 Version + ACE3 Version ACE3 Fehlermeldungen diff --git a/docs/README_PL.md b/docs/README_PL.md index 72afbc8cdc..ba4493acb6 100644 --- a/docs/README_PL.md +++ b/docs/README_PL.md @@ -3,7 +3,7 @@

- ACE3 Wersja + ACE3 Wersja ACE3 Zagadnienia diff --git a/mod.cpp b/mod.cpp index 7620a55fea..ca215089bf 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.8.3"; +name = "Advanced Combat Environment 3.9.0"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.8.3"; +description = "ACE3 - Version 3.9.0"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From c1f59e5334c7c458a138949d15d6658c6145031f Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 5 Feb 2017 16:50:41 +0100 Subject: [PATCH 12/37] Cleanup GitHub Changelog Generator config file (#4875) --- .github_changelog_generator | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github_changelog_generator b/.github_changelog_generator index 7cc05cbb0d..6d1d741bbd 100644 --- a/.github_changelog_generator +++ b/.github_changelog_generator @@ -6,9 +6,7 @@ pr-wo-labels=false max-issues=0 # Label filters -exclude-labels=by design,can't reproduce,duplicate,question,invalid,wontfix,translation,ignore changelog -bug-labels=conflict,bug,critical bug -enhancement-labels=enhancement,feature request,Focus Feature +exclude-labels=by design,can't reproduce,duplicate,question,invalid,wontfix,ignore changelog # Tag is created before generating changelog for release candidates unreleased=false From 4d872b84b7f334cd8d56af0315c91602941bf422 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 5 Feb 2017 23:00:35 +0100 Subject: [PATCH 13/37] Fix double single quote to single double quote (#4876) --- addons/realisticnames/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 2a4873345b..a915df190b 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -2769,7 +2769,7 @@ HK417A2 20" (Sabbia) HK417A2 20" (Homok) HK417A2 20" (Deserto) - HK417A2 20'' (砂地) + HK417A2 20" (砂地) HK417A2 20" (모래) From 10756ff02deb1418cbab5c66b1ae9fcccf05de08 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 5 Feb 2017 23:01:06 +0100 Subject: [PATCH 14/37] fix HK416 name, fix #4873 (#4874) --- addons/realisticnames/stringtable.xml | 144 +++++++++++++------------- 1 file changed, 72 insertions(+), 72 deletions(-) diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index a915df190b..a490a78ab5 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -2605,88 +2605,88 @@ MP5K - HK416A5 10" (Black) - HK416A5 10" (Černá) - HK416A5 10" (Noir) - HK416A5 10" (Negro) - HK416A5 10" (Чёрный) - HK416A5 10" (czarny) - HK416A5 10" (Schwarz) - HK416A5 10" (Nero) - HK416A5 10" (Fekete) - HK416A5 10" (Preto) - HK416A5 10" (黒) - HK416A5 10" (검정) + HK416A5 11" (Black) + HK416A5 11" (Černá) + HK416A5 11" (Noir) + HK416A5 11" (Negro) + HK416A5 11" (Чёрный) + HK416A5 11" (czarny) + HK416A5 11" (Schwarz) + HK416A5 11" (Nero) + HK416A5 11" (Fekete) + HK416A5 11" (Preto) + HK416A5 11" (黒) + HK416A5 11" (검정) - HK416A5 10" (Khaki) - HK416A5 10" (Khaki) - HK416A5 10" (Kaki) - HK416A5 10" (Caqui) - HK416A5 10" (Хаки) - HK416A5 10" (khaki) - HK416A5 10" (Khaki) - HK416A5 10" (Khaki) - HK416A5 10" (Khaki) - HK416A5 10" (Caqui) - HK416A5 10" (土埃) - HK416A5 10" (카키) + HK416A5 11" (Khaki) + HK416A5 11" (Khaki) + HK416A5 11" (Kaki) + HK416A5 11" (Caqui) + HK416A5 11" (Хаки) + HK416A5 11" (khaki) + HK416A5 11" (Khaki) + HK416A5 11" (Khaki) + HK416A5 11" (Khaki) + HK416A5 11" (Caqui) + HK416A5 11" (土埃) + HK416A5 11" (카키) - HK416A5 10" (Sand) - HK416A5 10" (Písková) - HK416A5 10" (Beige) - HK416A5 10" (Arena) - HK416A5 10" (Песочный) - HK416A5 10" (Sand) - HK416A5 10" (piaskowy) - HK416A5 10" (Sabbia) - HK416A5 10" (Homok) - HK416A5 10" (Deserto) - HK416A5 10" (砂地) - HK416A5 10" (모래) + HK416A5 11" (Sand) + HK416A5 11" (Písková) + HK416A5 11" (Beige) + HK416A5 11" (Arena) + HK416A5 11" (Песочный) + HK416A5 11" (Sand) + HK416A5 11" (piaskowy) + HK416A5 11" (Sabbia) + HK416A5 11" (Homok) + HK416A5 11" (Deserto) + HK416A5 11" (砂地) + HK416A5 11" (모래) - HK416A5 10" GL (Black) - HK416A5 10" GL (Černá) - HK416A5 10" GL (Noir) - HK416A5 10" GL (Negro) - HK416A5 10" GL (Чёрный) - HK416A5 10" GL (czarny) - HK416A5 10" GL (Schwarz) - HK416A5 10" GL (Nero) - HK416A5 10" GL (Fekete) - HK416A5 10" GL (Preto) - HK416A5 10" GL (黒) - HK416A5 10" GL (검정) + HK416A5 11" GL (Black) + HK416A5 11" GL (Černá) + HK416A5 11" GL (Noir) + HK416A5 11" GL (Negro) + HK416A5 11" GL (Чёрный) + HK416A5 11" GL (czarny) + HK416A5 11" GL (Schwarz) + HK416A5 11" GL (Nero) + HK416A5 11" GL (Fekete) + HK416A5 11" GL (Preto) + HK416A5 11" GL (黒) + HK416A5 11" GL (검정) - HK416A5 10" GL (Khaki) - HK416A5 10" GL (Khaki) - HK416A5 10" GL (Kaki) - HK416A5 10" GL (Caqui) - HK416A5 10" GL (Хаки) - HK416A5 10" GL (khaki) - HK416A5 10" GL (Khaki) - HK416A5 10" GL (Khaki) - HK416A5 10" GL (Khaki) - HK416A5 10" GL (Caqui) - HK416A5 10" GL (土埃) - HK416A5 10" GL (카키) + HK416A5 11" GL (Khaki) + HK416A5 11" GL (Khaki) + HK416A5 11" GL (Kaki) + HK416A5 11" GL (Caqui) + HK416A5 11" GL (Хаки) + HK416A5 11" GL (khaki) + HK416A5 11" GL (Khaki) + HK416A5 11" GL (Khaki) + HK416A5 11" GL (Khaki) + HK416A5 11" GL (Caqui) + HK416A5 11" GL (土埃) + HK416A5 11" GL (카키) - HK416A5 10" GL (Sand) - HK416A5 10" GL (Písková) - HK416A5 10" GL (Beige) - HK416A5 10" GL (Arena) - HK416A5 10" GL (Песочный) - HK416A5 10" GL (Sand) - HK416A5 10" GL (piaskowy) - HK416A5 10" GL (Sabbia) - HK416A5 10" GL (Homok) - HK416A5 10" GL (Deserto) - HK416A5 10" GL (砂地) - HK416A5 10" GL (모래) + HK416A5 11" GL (Sand) + HK416A5 11" GL (Písková) + HK416A5 11" GL (Beige) + HK416A5 11" GL (Arena) + HK416A5 11" GL (Песочный) + HK416A5 11" GL (Sand) + HK416A5 11" GL (piaskowy) + HK416A5 11" GL (Sabbia) + HK416A5 11" GL (Homok) + HK416A5 11" GL (Deserto) + HK416A5 11" GL (砂地) + HK416A5 11" GL (모래) HK416A5 14.5" (Black) From 231346a19996154d99583e5751e35069b34d2c0f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 5 Feb 2017 16:01:48 -0600 Subject: [PATCH 15/37] Fix Javelin for AI (#4857) --- addons/missileguidance/CfgAmmo.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp index 343b911f23..49fa40331e 100644 --- a/addons/missileguidance/CfgAmmo.hpp +++ b/addons/missileguidance/CfgAmmo.hpp @@ -69,7 +69,7 @@ class CfgAmmo { class M_Titan_AT: MissileBase {}; class ACE_Javelin_FGM148: M_Titan_AT { - irLock = 0; + irLock = 1; laserLock = 0; airLock = 0; From 5351b43ff3e591b9979d520382ca4114c7b612f3 Mon Sep 17 00:00:00 2001 From: Dedmen Miller Date: Fri, 10 Feb 2017 19:19:14 +0100 Subject: [PATCH 16/37] Cache Nametags onDraw3D flags. (#4847) * Cache Nametag flags * Remove unused privates * Fix fading, cursorOnly mode, improve cache reset * Fix header --- addons/nametags/XEH_PREP.hpp | 1 + addons/nametags/XEH_postInit.sqf | 9 ++- .../nametags/functions/fnc_getCachedFlags.sqf | 56 ++++++++++++++++ addons/nametags/functions/fnc_onDraw3d.sqf | 66 +++++-------------- 4 files changed, 82 insertions(+), 50 deletions(-) create mode 100644 addons/nametags/functions/fnc_getCachedFlags.sqf diff --git a/addons/nametags/XEH_PREP.hpp b/addons/nametags/XEH_PREP.hpp index 5d99258d27..a27102a4e5 100644 --- a/addons/nametags/XEH_PREP.hpp +++ b/addons/nametags/XEH_PREP.hpp @@ -2,6 +2,7 @@ PREP(canShow); PREP(doShow); PREP(drawNameTagIcon); +PREP(getCachedFlags); PREP(getVehicleData); PREP(initIsSpeaking); PREP(moduleNameTags); diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index 594fe595ff..2df7565cd6 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -15,7 +15,7 @@ GVAR(showNamesTime) = -10; // Statement GVAR(showNamesTime) = CBA_missionTime; - if (call FUNC(canShow)) then{ call FUNC(doShow); }; + // if (call FUNC(canShow)) then{ call FUNC(doShow); }; // This code doesn't work (canShow has a nil / has never worked??) // Return false so it doesn't block other actions false }, @@ -34,6 +34,13 @@ GVAR(showNamesTime) = -10; if (_name == QGVAR(showPlayerNames)) then { call FUNC(updateSettings); }; + // Reset nametag flag cache on setting change: + ACE_player setVariable [QGVAR(flagsCache), nil]; +}] call CBA_fnc_addEventHandler; + +["cba_events_visionModeEvent", { + // Reset nametag flag cache on vision mode change: + ACE_player setVariable [QGVAR(flagsCache), nil]; }] call CBA_fnc_addEventHandler; // civilians don't use military ranks diff --git a/addons/nametags/functions/fnc_getCachedFlags.sqf b/addons/nametags/functions/fnc_getCachedFlags.sqf new file mode 100644 index 0000000000..27aaa7af7c --- /dev/null +++ b/addons/nametags/functions/fnc_getCachedFlags.sqf @@ -0,0 +1,56 @@ +/* + * Author: + * Get's flags used for onDraw3D that can be cached + * + * Arguments: + * None + * + * Return Value: + * [_drawName,_drawRank,_enabledTagsNearby,_enabledTagsCursor,_maxDistance] + * + * Example: + * call ace_nametags_fnc_getCachedFlags + * + * Public: No + */ +#include "script_component.hpp" + +// Determine flags from current settings +private _drawName = true; +private _enabledTagsNearby = false; +private _enabledTagsCursor = false; + +switch (GVAR(showPlayerNames)) do { + case 0: { + // Player names Disabled [Note: this should be unreachable as the drawEH will be removed] + _drawName = false; + _enabledTagsNearby = (GVAR(showSoundWaves) == 2); + }; + case 1: { + // Player names Enabled + _enabledTagsNearby = true; + }; + case 2: { + // Player names Only cursor + _enabledTagsNearby = (GVAR(showSoundWaves) == 2); + _enabledTagsCursor = true; + }; + case 3: { + // Player names Only Keypress + _enabledTagsNearby = GVAR(showSoundWaves) == 2; // non-cached: || _onKeyPressAlphaMax) > 0 + }; + case 4: { + // Player names Only Cursor and Keypress + _enabledTagsNearby = (GVAR(showSoundWaves) == 2); + // non-cached: _enabledTagsCursor = _onKeyPressAlphaMax > 0; + }; + case 5: { + // Fade on border + _enabledTagsNearby = true; + }; +}; + +private _ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] select ((currentVisionMode ace_player) != 0))) min 1) max 0; +private _maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance); + +[_drawName, GVAR(showPlayerRanks),_enabledTagsNearby,_enabledTagsCursor,_maxDistance] diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf index dc4b130a52..f937b230b3 100644 --- a/addons/nametags/functions/fnc_onDraw3d.sqf +++ b/addons/nametags/functions/fnc_onDraw3d.sqf @@ -15,67 +15,33 @@ */ #include "script_component.hpp" -private ["_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_relPos", "_projDist", "_target"]; - BEGIN_COUNTER(GVAR(onDraw3d)); // Don't show nametags in spectator or if RscDisplayMPInterrupt is open if ((isNull ACE_player) || {!alive ACE_player} || {!isNull (findDisplay 49)}) exitWith {}; -// Determine flags from current settings -private _drawName = true; -private _drawRank = GVAR(showPlayerRanks); -private _enabledTagsNearby = false; -private _enabledTagsCursor = false; -private _onKeyPressAlphaMax = 1; -switch (GVAR(showPlayerNames)) do { - case 0: { - // Player names Disabled - _drawName = false; - _enabledTagsNearby = (GVAR(showSoundWaves) == 2); - _enabledTagsCursor = false; - }; - case 1: { - // Player names Enabled - _enabledTagsNearby = true; - _enabledTagsCursor = false; - }; - case 2: { - // Player names Only cursor - _enabledTagsNearby = (GVAR(showSoundWaves) == 2); - _enabledTagsCursor = true; - }; - case 3: { - // Player names Only Keypress - _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); - _enabledTagsNearby = (_onKeyPressAlphaMax) > 0 || (GVAR(showSoundWaves) == 2); - _enabledTagsCursor = false; - }; - case 4: { - // Player names Only Cursor and Keypress - _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); - _enabledTagsNearby = (GVAR(showSoundWaves) == 2); - _enabledTagsCursor = _onKeyPressAlphaMax > 0; - }; - case 5: { - // Fade on border - _enabledTagsNearby = true; - _enabledTagsCursor = false; - }; -}; +private _flags = [[], DFUNC(getCachedFlags), ACE_player, QGVAR(flagsCache), 2] call EFUNC(common,cachedCall); -private _ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] select ((currentVisionMode ace_player) != 0))) min 1) max 0; -private _maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance); +_flags params ["_drawName", "_drawRank", "_enabledTagsNearby", "_enabledTagsCursor", "_maxDistance"]; + +private _onKeyPressAlphaMax = 1; +if (GVAR(showPlayerNames) == 3) then { + _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); + _enabledTagsNearby = _enabledTagsNearby || {_onKeyPressAlphaMax > 0} +}; +if (GVAR(showPlayerNames) == 4) then { + _onKeyPressAlphaMax = 2 + (GVAR(showNamesTime) - CBA_missionTime); + _enabledTagsCursor = _onKeyPressAlphaMax > 0; +}; private _camPosAGL = positionCameraToWorld [0, 0, 0]; if !((_camPosAGL select 0) isEqualType 0) exitWith {}; // handle RHS / bugged vehicle slots private _camPosASL = AGLtoASL _camPosAGL; -private _vecy = (AGLtoASL positionCameraToWorld [0, 0, 1]) vectorDiff _camPosASL; // Show nametag for the unit behind the cursor or its commander if (_enabledTagsCursor) then { - _target = cursorTarget; + private _target = cursorTarget; if !(_target isKindOf "CAManBase") then { // When cursorTarget is on a vehicle show the nametag for the commander. if !(_target in allUnitsUAV) then { @@ -92,7 +58,7 @@ if (_enabledTagsCursor) then { {lineIntersectsSurfaces [_camPosASL, eyePos _target, ACE_player, _target] isEqualTo []} && {!isObjectHidden _target}) then { - _distance = ACE_player distance _target; + private _distance = ACE_player distance _target; private _drawSoundwave = (GVAR(showSoundWaves) > 0) && {[_target] call FUNC(isSpeaking)}; // Alpha: @@ -137,6 +103,9 @@ if (_enabledTagsNearby) then { private _target = _x; if !(isNull _target) then { + private _drawSoundwave = (GVAR(showSoundWaves) > 0) && {[_target] call FUNC(isSpeaking)}; + if (_enabledTagsCursor && {!_drawSoundwave}) exitWith {}; // (Cursor Only && showSoundWaves==2) - quick exit + private _relPos = (visiblePositionASL _target) vectorDiff _camPosASL; private _distance = vectorMagnitude _relPos; @@ -152,7 +121,6 @@ if (_enabledTagsNearby) then { }; }; - private _drawSoundwave = (GVAR(showSoundWaves) > 0) && {[_target] call FUNC(isSpeaking)}; private _alphaMax = _onKeyPressAlphaMax; if ((GVAR(showSoundWaves) == 2) && _drawSoundwave) then { _drawName = _drawSoundwave; From d2ee1e987a60a8fbef8bf3d7be25f2d96b96c129 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20E=C4=9Fitmen?= Date: Fri, 10 Feb 2017 21:28:27 +0300 Subject: [PATCH 17/37] Frag Superanal Cleanup (#4803) * Minimal frag cleanup * Why did this even happen in the first place --- addons/frag/XEH_postInit.sqf | 2 +- addons/frag/functions/fnc_addPfhRound.sqf | 2 +- addons/frag/functions/fnc_doSpall.sqf | 1 + addons/frag/functions/fnc_findReflections.sqf | 13 +-- addons/frag/functions/fnc_fired.sqf | 2 +- addons/frag/functions/fnc_frago.sqf | 106 +++++++++--------- addons/frag/functions/fnc_masterPFH.sqf | 2 +- addons/frag/functions/fnc_pfhRound.sqf | 3 +- addons/frag/functions/fnc_removePfhRound.sqf | 2 +- 9 files changed, 64 insertions(+), 69 deletions(-) diff --git a/addons/frag/XEH_postInit.sqf b/addons/frag/XEH_postInit.sqf index 20a6a1ca70..038b7a36c4 100644 --- a/addons/frag/XEH_postInit.sqf +++ b/addons/frag/XEH_postInit.sqf @@ -1,6 +1,6 @@ #include "script_component.hpp" -if (GVAR(EnableDebugTrace) && {!isMultiplayer}) then { +if (GVAR(enableDebugTrace) && {!isMultiplayer}) then { GVAR(traceFrags) = true; GVAR(autoTrace) = true; }; diff --git a/addons/frag/functions/fnc_addPfhRound.sqf b/addons/frag/functions/fnc_addPfhRound.sqf index a211752e98..f6cddbbd37 100644 --- a/addons/frag/functions/fnc_addPfhRound.sqf +++ b/addons/frag/functions/fnc_addPfhRound.sqf @@ -13,7 +13,7 @@ if (_round in GVAR(blackList)) exitWith { }; // Exit on max track -if ((count GVAR(objects)) > GVAR(MaxTrack)) exitWith {}; +if ((count GVAR(objects)) > GVAR(maxTrack)) exitWith {}; if ( _gun == ACE_player || diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index 5b9bf757c4..97c52062d1 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -103,6 +103,7 @@ for "_i" from 1 to _spallCount do { [ACE_player, _fragment, [1, 0.5, 0, 1]] call FUNC(addTrack); }; }; + _spread = 5 + (random 5); _spallCount = 3 + (random 5); for "_i" from 1 to _spallCount do { diff --git a/addons/frag/functions/fnc_findReflections.sqf b/addons/frag/functions/fnc_findReflections.sqf index f8c9685bda..dbde4d7a98 100644 --- a/addons/frag/functions/fnc_findReflections.sqf +++ b/addons/frag/functions/fnc_findReflections.sqf @@ -75,23 +75,18 @@ if (_zIndex < 5) then { private _explosions = []; { private _blist = _x select 1; - private _avgX = 0; - private _avgY = 0; - private _avgZ = 0; + private _avg = [0, 0, 0]; { - ADD(_avgX,_x select 0); - ADD(_avgY,_x select 1); - ADD(_avgZ,_x select 2); + _avg = _avg vectorAdd _x; } forEach _blist; _c = count _blist; - private _bpos = [_avgX / _c, _avgY / _c, _avgZ / _c]; + private _bpos = _avg vectorMultiply (1 / _c); private _distance = _pos vectorDistance _bpos; private _hitFactor = 1 - (((_distance / (_indirectHitRange * 4)) min 1) max 0); // _hitFactor = 1 / (_distance ^ 2); - private _hit = _indirectHit * _hitFactor; - _hit = (floor (_hit / 4)) min 500; + private _hit = (floor (_indirectHit * _hitFactor / 4)) min 500; SUB(_hit,_hit % 10); private _range = (floor (_indirectHitRange - (_distance / 4))) min 100; SUB(_range,_range % 2); diff --git a/addons/frag/functions/fnc_fired.sqf b/addons/frag/functions/fnc_fired.sqf index 6b12e09d76..96841dd7ac 100644 --- a/addons/frag/functions/fnc_fired.sqf +++ b/addons/frag/functions/fnc_fired.sqf @@ -30,7 +30,7 @@ if (isNil "_shouldAdd") then { _shouldAdd = false; }; - if (GVAR(SpallEnabled)) exitWith { + if (GVAR(spallEnabled)) exitWith { //Always want to run whenever spall is enabled? _shouldAdd = true; TRACE_2("SettingCache[spallEnabled]",_ammo,_shouldAdd); diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index 51ed23cfea..d9915f787c 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -60,13 +60,13 @@ if (_warn) then { }; private _fragPower = (((_m / _c) + _k) ^ - (1 / 2)) * _gC; -_fragPower = _fragPower * 0.8; // Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation +MUL(_fragPower,0.8); // Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation private _atlPos = ASLtoATL _lastPos; private _fragPowerRandom = _fragPower * 0.5; if ((_atlPos select 2) < 0.5) then { - _lastPos set [2, (_lastPos select 2) + 0.5]; + _lastPos vectorAdd [0, 0, 0.5]; }; // _manObjects = _atlPos nearEntities ["CaManBase", _fragRange]; @@ -96,7 +96,7 @@ _fragArcs set [360, 0]; private _doRandom = true; if (_isArmed && {!(_objects isEqualTo [])}) then { - if (GVAR(ReflectionsEnabled)) then { + if (GVAR(reflectionsEnabled)) then { [_lastPos, _shellType] call FUNC(doReflections); }; { @@ -104,63 +104,63 @@ if (_isArmed && {!(_objects isEqualTo [])}) then { private _target = _x; if (alive _target) then { private _boundingBox = boundingBox _target; + + private _cubic = 1; + for "_i" from 0 to 2 do { + MUL(_cubic,(abs ((_boundingBox select 0) select _i)) + ((_boundingBox select 1) select _i)); + }; + + if (_cubic <= 1) exitWith {}; + _doRandom = true; + + private _targetVel = velocity _target; private _targetPos = getPosASL _target; - private _distance = _targetPos distance _lastPos; + private _distance = _targetPos vectorDistance _lastPos; private _add = (((_boundingBox select 1) select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10); - private _bbX = (abs ((_boundingBox select 0) select 0)) + ((_boundingBox select 1) select 0); - private _bbY = (abs ((_boundingBox select 0) select 1)) + ((_boundingBox select 1) select 1); - private _bbZ = (abs ((_boundingBox select 0) select 2)) + ((_boundingBox select 1) select 2); - private _cubic = _bbX * _bbY * _bbZ; - if (_cubic > 1) then { - _doRandom = true; - private _targetVel = velocity _target; + _targetPos = _targetPos vectorAdd [ + (_targetVel select 0) * (_distance / _fragPower), + (_targetVel select 1) * (_distance / _fragPower), + _add + ]; - _targetPos = _targetPos vectorAdd [ - (_targetVel select 0) * (_distance / _fragPower), - (_targetVel select 1) * (_distance / _fragPower), - _add - ]; + private _baseVec = _lastPos vectorFromTo _targetPos; - private _baseVec = _lastPos vectorFromTo _targetPos; - - private _dir = floor (_baseVec call CBA_fnc_vectDir); - private _currentCount = _fragArcs select _dir; - ISNILS(_currentCount,0); - if (_currentCount < 20) then { - private _count = ceil (random (sqrt (_m / 1000))); - private _vecVar = FRAG_VEC_VAR; - if (!(_target isKindOf "Man")) then { - _vecVar = ((sqrt _cubic) / 2000) + FRAG_VEC_VAR; - if ((crew _target) isEqualTo [] && {_count > 0}) then { - _count = 0 max (_count / 2); - }; + private _dir = floor (_baseVec call CBA_fnc_vectDir); + private _currentCount = RETDEF(_fragArcs select _dir,0); + if (_currentCount < 20) then { + private _count = ceil (random (sqrt (_m / 1000))); + private _vecVar = FRAG_VEC_VAR; + if (!(_target isKindOf "Man")) then { + ADD(_vecVar,(sqrt _cubic) / 2000); + if ((crew _target) isEqualTo [] && {_count > 0}) then { + _count = 0 max (_count / 2); }; - for "_i" from 1 to _count do { - private _vec = _baseVec vectorDiff [ - (_vecVar / 2) + (random _vecVar), - (_vecVar / 2) + (random _vecVar), - (_vecVar / 2) + (random _vecVar) - ]; - - private _fp = _fragPower - (random (_fragPowerRandom)); - private _vel = _vec vectorMultiply _fp; - - private _fragType = round (random ((count _fragTypes) - 1)); - private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; - // diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj]; - _fragObj setPosASL _lastPos; - _fragObj setVectorDir _vec; - _fragObj setVelocity _vel; - if (GVAR(traceFrags)) then { - INC(GVAR(totalFrags)); - [ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack); - }; - INC(_fragCount); - INC(_currentCount); - }; - _fragArcs set [_dir, _currentCount]; }; + for "_i" from 1 to _count do { + private _vec = _baseVec vectorDiff [ + (_vecVar / 2) + (random _vecVar), + (_vecVar / 2) + (random _vecVar), + (_vecVar / 2) + (random _vecVar) + ]; + + private _fp = _fragPower - (random (_fragPowerRandom)); + private _vel = _vec vectorMultiply _fp; + + private _fragType = round (random ((count _fragTypes) - 1)); + private _fragObj = (_fragTypes select _fragType) createVehicleLocal [0,0,10000]; + // diag_log text format ["fp: %1 %2", _fp, typeOf _fragObj]; + _fragObj setPosASL _lastPos; + _fragObj setVectorDir _vec; + _fragObj setVelocity _vel; + if (GVAR(traceFrags)) then { + INC(GVAR(totalFrags)); + [ACE_player, _fragObj, [1,0,0,1]] call FUNC(addTrack); + }; + INC(_fragCount); + INC(_currentCount); + }; + _fragArcs set [_dir, _currentCount]; }; }; //}; diff --git a/addons/frag/functions/fnc_masterPFH.sqf b/addons/frag/functions/fnc_masterPFH.sqf index d543c35bf7..f6adb56161 100644 --- a/addons/frag/functions/fnc_masterPFH.sqf +++ b/addons/frag/functions/fnc_masterPFH.sqf @@ -19,7 +19,7 @@ private _gcIndex = []; private _iter = 0; private _objectCount = count GVAR(objects); -while {_objectCount > 0 && {_iter < (GVAR(MaxTrackPerFrame) min _objectCount)}} do { +while {_objectCount > 0 && {_iter < (GVAR(maxTrackPerFrame) min _objectCount)}} do { if (GVAR(lastIterationIndex) >= _objectCount) then { GVAR(lastIterationIndex) = 0; diff --git a/addons/frag/functions/fnc_pfhRound.sqf b/addons/frag/functions/fnc_pfhRound.sqf index 1338e8fef9..f233fa45a6 100644 --- a/addons/frag/functions/fnc_pfhRound.sqf +++ b/addons/frag/functions/fnc_pfhRound.sqf @@ -32,8 +32,7 @@ _this set [1, getPosASL _round]; _this set [2, velocity _round]; if (_doSpall) then { - private ["_scale"]; - _scale = ((count GVAR(objects)) / GVAR(MaxTrackPerFrame)) max 0.1; + private _scale = ((count GVAR(objects)) / GVAR(maxTrackPerFrame)) max 0.1; [_round, _scale, _spallTrack, _foundObjectHPIds] call FUNC(spallTrack); }; diff --git a/addons/frag/functions/fnc_removePfhRound.sqf b/addons/frag/functions/fnc_removePfhRound.sqf index b9df275643..9241c7aecb 100644 --- a/addons/frag/functions/fnc_removePfhRound.sqf +++ b/addons/frag/functions/fnc_removePfhRound.sqf @@ -2,7 +2,7 @@ // THIS FUNCTION SHOULD NOT BE USED BECAUSE IT CAUSES AN SEARCH AND REBUILD -PARAMS_1(_round); +params ["_round"]; if (_round in GVAR(blackList)) then { REM(GVAR(blackList),_round); From 3ce0865913fa3c77b87ebb2942f55a01a4ceac12 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 12:34:51 -0600 Subject: [PATCH 18/37] Add getInteractionDistance and fix VTOL refuel/arm (#4882) --- addons/interaction/XEH_PREP.hpp | 1 + .../functions/fnc_getInteractionDistance.sqf | 33 +++++++++++++++++++ addons/rearm/functions/fnc_canRearm.sqf | 2 +- addons/refuel/functions/fnc_canCheckFuel.sqf | 2 +- .../refuel/functions/fnc_canConnectNozzle.sqf | 2 +- .../refuel/functions/fnc_canReturnNozzle.sqf | 2 +- addons/refuel/functions/fnc_canTakeNozzle.sqf | 2 +- 7 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 addons/interaction/functions/fnc_getInteractionDistance.sqf diff --git a/addons/interaction/XEH_PREP.hpp b/addons/interaction/XEH_PREP.hpp index c8ceb66e8f..be4669cc27 100644 --- a/addons/interaction/XEH_PREP.hpp +++ b/addons/interaction/XEH_PREP.hpp @@ -2,6 +2,7 @@ // interaction menu PREP(addPassengerActions); PREP(addPassengersActions); +PREP(getInteractionDistance); PREP(getVehiclePos); PREP(getVehiclePosComplex); PREP(getWeaponPos); diff --git a/addons/interaction/functions/fnc_getInteractionDistance.sqf b/addons/interaction/functions/fnc_getInteractionDistance.sqf new file mode 100644 index 0000000000..12c9bbd7e9 --- /dev/null +++ b/addons/interaction/functions/fnc_getInteractionDistance.sqf @@ -0,0 +1,33 @@ +/* + * Author: PabstMirror + * Gets effective interaction distance (handles very large vehicles) + * + * Arguments: + * 0: Player + * 0: Target Vehicle + * + * Return value: + * Distance to interaction point + * + * Example: + * [player, cursorObject] call ace_interaction_fnc_getInteractionDistance + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit", "_target"]; +TRACE_3("getInteractionDistance",_unit,_target,typeOf _target); + +// Handle Man, Crate +if (!((_target isKindOf "Car") || {_target isKindOf "Tank"} || {_target isKindOf "Helicopter"} || {_target isKindOf "Plane"} || {_target isKindOf "Ship_F"})) exitWith { + _unit distance _target +}; + +private _unitEyeASL = eyePos _unit; +private _targetModelPos = [_target, _unitEyeASL] call FUNC(getVehiclePosComplex); +private _distance = _unitEyeASL distance (AGLtoASL (_target modelToWorld _targetModelPos)); + +TRACE_2("",_targetModelPos,_distance); + +_distance diff --git a/addons/rearm/functions/fnc_canRearm.sqf b/addons/rearm/functions/fnc_canRearm.sqf index 202524dd10..a0a268cdfa 100644 --- a/addons/rearm/functions/fnc_canRearm.sqf +++ b/addons/rearm/functions/fnc_canRearm.sqf @@ -19,7 +19,7 @@ private ["_dummy","_magazineClass"]; params [["_target", objNull, [objNull]], ["_unit", objNull, [objNull]]]; -if (GVAR(level) == 0 || {isNull _unit} || {!(_unit isKindOf "CAManBase")} || {!local _unit} || {_target distance _unit > REARM_ACTION_DISTANCE} || {_target getVariable [QGVAR(disabled), false]}) exitWith {false}; +if (GVAR(level) == 0 || {isNull _unit} || {!(_unit isKindOf "CAManBase")} || {!local _unit} || {([_unit, _target] call EFUNC(interaction,getInteractionDistance)) > REARM_ACTION_DISTANCE} || {_target getVariable [QGVAR(disabled), false]}) exitWith {false}; _dummy = _unit getVariable [QGVAR(dummy), objNull]; if (isNull _dummy) exitwith {false}; diff --git a/addons/refuel/functions/fnc_canCheckFuel.sqf b/addons/refuel/functions/fnc_canCheckFuel.sqf index e0046dea3d..57514e4b8f 100644 --- a/addons/refuel/functions/fnc_canCheckFuel.sqf +++ b/addons/refuel/functions/fnc_canCheckFuel.sqf @@ -22,5 +22,5 @@ params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]]]; {!(_unit isKindOf "CAManBase")} || {!local _unit} || {!alive _target} || - {(_target distance _unit) > REFUEL_ACTION_DISTANCE} || + {([_unit, _target] call EFUNC(interaction,getInteractionDistance)) > REFUEL_ACTION_DISTANCE} || {(_target call FUNC(getFuel) == REFUEL_INFINITE_FUEL)}) diff --git a/addons/refuel/functions/fnc_canConnectNozzle.sqf b/addons/refuel/functions/fnc_canConnectNozzle.sqf index adb4935bb2..3cd5ac4c58 100644 --- a/addons/refuel/functions/fnc_canConnectNozzle.sqf +++ b/addons/refuel/functions/fnc_canConnectNozzle.sqf @@ -27,5 +27,5 @@ if (_target isKindOf "AllVehicles") then { !(isNull _nozzle || {_engine} || - {(_target distance _unit) > REFUEL_ACTION_DISTANCE} || + {([_unit, _target] call EFUNC(interaction,getInteractionDistance)) > REFUEL_ACTION_DISTANCE} || {!isNull (_target getVariable [QGVAR(nozzle), objNull])}) diff --git a/addons/refuel/functions/fnc_canReturnNozzle.sqf b/addons/refuel/functions/fnc_canReturnNozzle.sqf index a0dbf64587..04849c5ca0 100644 --- a/addons/refuel/functions/fnc_canReturnNozzle.sqf +++ b/addons/refuel/functions/fnc_canReturnNozzle.sqf @@ -21,5 +21,5 @@ params [["_unit", objNull, [objNull]], ["_target", objNull, [objNull]]]; private _nozzle = _unit getVariable [QGVAR(nozzle), objNull]; (!isNull _nozzle) && -{_target distance _unit < REFUEL_ACTION_DISTANCE} && +{([_unit, _target] call EFUNC(interaction,getInteractionDistance)) < REFUEL_ACTION_DISTANCE} && {_target == (_nozzle getVariable [QGVAR(source), objNull])} diff --git a/addons/refuel/functions/fnc_canTakeNozzle.sqf b/addons/refuel/functions/fnc_canTakeNozzle.sqf index 65016323b2..b7ed8f0cb1 100644 --- a/addons/refuel/functions/fnc_canTakeNozzle.sqf +++ b/addons/refuel/functions/fnc_canTakeNozzle.sqf @@ -23,6 +23,6 @@ if (isNull _unit || {!local _unit} || {!alive _target} || {!isNull (_unit getVariable [QGVAR(nozzle), objNull])} || - {(_target distance _unit) > REFUEL_ACTION_DISTANCE}) exitWith {false}; + {([_unit, _target] call EFUNC(interaction,getInteractionDistance)) > REFUEL_ACTION_DISTANCE}) exitWith {false}; !(_target getVariable [QGVAR(isConnected), false]) && {!(_unit getVariable [QGVAR(isRefueling), false])} From 97a062437536600cbbbc7345d61d8c8f3bb0eb1a Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 10 Feb 2017 19:47:08 +0100 Subject: [PATCH 19/37] Optimize Laserpointer (#4859) * only process one unit every 0.1 seconds * exitWith to keep indentation low * use event to determine isIR and isTI * correctly remove units with turned on lights from their arrays * handle weaponAccessories command reporting nil --- addons/laserpointer/XEH_PREP.hpp | 1 + addons/laserpointer/XEH_postInit.sqf | 75 +++++++++++++++---- addons/laserpointer/XEH_preInit.sqf | 7 ++ .../functions/fnc_getNearUnits.sqf | 26 +++++++ addons/laserpointer/functions/fnc_onDraw.sqf | 37 +++------ addons/laserpointer/script_component.hpp | 2 + 6 files changed, 107 insertions(+), 41 deletions(-) create mode 100644 addons/laserpointer/functions/fnc_getNearUnits.sqf diff --git a/addons/laserpointer/XEH_PREP.hpp b/addons/laserpointer/XEH_PREP.hpp index c5dcd74a75..3237967007 100644 --- a/addons/laserpointer/XEH_PREP.hpp +++ b/addons/laserpointer/XEH_PREP.hpp @@ -1,4 +1,5 @@ PREP(drawLaserpoint); +PREP(getNearUnits); PREP(onDraw); PREP(switchLaserLightMode); diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index bfc617965d..f80a4494e0 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -7,32 +7,75 @@ if (!hasInterface) exitWith {}; GVAR(nearUnits) = []; +GVAR(index) = -1; +GVAR(laserClassesCache) = [] call CBA_fnc_createNamespace; +GVAR(redLaserUnits) = []; +GVAR(greenLaserUnits) = []; #include "initKeybinds.sqf" ["ace_settingsInitialized", { - //If not enabled, dont't add draw eventhandler or PFEH (for performance) - if (!GVAR(enabled)) exitWith {}; + // if not enabled, dont't add draw eventhandler or PFEH (for performance) + if !(GVAR(enabled)) exitWith {}; - // @todo. Maybe move to common? [{ - // handle RHS / bugged vehicle slots - private _camPosAGL = positionCameraToWorld [0,0,0]; - if !((_camPosAGL select 0) isEqualType 0) exitWith {}; + private _oldNearUnits = GVAR(nearUnits); + GVAR(nearUnits) = call FUNC(getNearUnits); - private _nearUnits = []; + // remove units that moved away { - _nearUnits append crew _x; - if (count _nearUnits > 10) exitWith { - _nearUnits resize 10; + GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _x); + GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _x); + } forEach (_oldNearUnits - GVAR(nearUnits)); + }, 5, []] call CBA_fnc_addPerFrameHandler; + + + private _fnc_processUnit = { + params ["_unit"]; + + private _weapon = currentWeapon _unit; + private _laser = [(_unit weaponAccessories _weapon) select 1] param [0, ""]; + + if (_laser isEqualTo "") exitWith {}; + + private _laserID = GVAR(laserClassesCache) getVariable _laser; + + if (isNil "_laserID") then { + _laserID = getNumber (configFile >> "CfgWeapons" >> _laser >> "ACE_laserpointer"); + GVAR(laserClassesCache) setVariable [_laser, _laserID]; + }; + + if (_unit isFlashlightOn _weapon) then { + if (_laserID isEqualTo 1) exitWith { + GVAR(redLaserUnits) pushBackUnique _unit; + GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _unit); }; - } forEach nearestObjects [_camPosAGL, ["AllVehicles"], 50]; // when moving this, search also for units inside vehicles. currently breaks the laser in FFV - GVAR(nearUnits) = _nearUnits; + if (_laserID isEqualTo 2) exitWith { + GVAR(greenLaserUnits) pushBackUnique _unit; + GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _unit); + }; + } else { + GVAR(redLaserUnits) deleteAt (GVAR(redLaserUnits) find _unit); + GVAR(greenLaserUnits) deleteAt (GVAR(greenLaserUnits) find _unit); + }; + }; - } , 5, []] call CBA_fnc_addPerFrameHandler; + // custom scheduler + [{ + params ["_fnc_processUnit"]; - addMissionEventHandler ["Draw3D", { - call FUNC(onDraw); - }]; + ACE_player call _fnc_processUnit; + + GVAR(index) = GVAR(index) + 1; + private _unit = GVAR(nearUnits) param [GVAR(index), objNull]; + + if (isNull _unit) exitWith { + GVAR(index) = -1; + }; + + _unit call _fnc_processUnit; + }, 0.1, _fnc_processUnit] call CBA_fnc_addPerFrameHandler; + + addMissionEventHandler ["Draw3D", FUNC(onDraw)]; }] call CBA_fnc_addEventHandler; diff --git a/addons/laserpointer/XEH_preInit.sqf b/addons/laserpointer/XEH_preInit.sqf index b47cf6628d..d2efe43e9c 100644 --- a/addons/laserpointer/XEH_preInit.sqf +++ b/addons/laserpointer/XEH_preInit.sqf @@ -6,4 +6,11 @@ PREP_RECOMPILE_START; #include "XEH_PREP.hpp" PREP_RECOMPILE_END; +["visionMode", { + params ["", "_visionMode"]; + + GVAR(isIR) = _visionMode isEqualTo 1; + GVAR(isTI) = _visionMode isEqualTo 2; +}] call CBA_fnc_addPlayerEventHandler; + ADDON = true; diff --git a/addons/laserpointer/functions/fnc_getNearUnits.sqf b/addons/laserpointer/functions/fnc_getNearUnits.sqf new file mode 100644 index 0000000000..6f31a99a2a --- /dev/null +++ b/addons/laserpointer/functions/fnc_getNearUnits.sqf @@ -0,0 +1,26 @@ +/* + * Author: commy2 + * Reports near units. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +private _camPosAGL = positionCameraToWorld [0, 0, 0]; + +// handle RHS / bugged vehicle slots +if !((_camPosAGL select 0) isEqualType 0) exitWith {}; + +private _nearUnits = []; + +{ + _nearUnits append crew _x; +} forEach nearestObjects [_camPosAGL, ["AllVehicles"], MAX_LASER_RANGE]; + +_nearUnits diff --git a/addons/laserpointer/functions/fnc_onDraw.sqf b/addons/laserpointer/functions/fnc_onDraw.sqf index 1945dcf2b7..0559386827 100644 --- a/addons/laserpointer/functions/fnc_onDraw.sqf +++ b/addons/laserpointer/functions/fnc_onDraw.sqf @@ -12,30 +12,17 @@ */ #include "script_component.hpp" -private _isIR = currentVisionMode ACE_player; +// no lasers in thermal mode +if !(GVAR(isTI)) then { + private _brightness = 2 - call EFUNC(common,ambientBrightness); -if (_isIR == 2) exitWith {}; + { + // red laser. draw green dot anyway in IR mode + [_x, 100, GVAR(isIR), _brightness] call FUNC(drawLaserpoint); + } count GVAR(redLaserUnits); -_isIR = _isIR == 1; - -private _brightness = 2 - call EFUNC(common,ambientBrightness); - -{ - private _weapon = currentWeapon _x; - private _laser = (_x weaponAccessories _weapon) select 1; - - if (_laser != "") then { - private _cacheName = format [QGVAR(laser_%1), _laser]; - private _laserID = missionNamespace getVariable [_cacheName, -1]; - - if (missionNamespace getVariable [_cacheName, -1] == -1) then { - _laserID = getNumber (configFile >> "CfgWeapons" >> _laser >> "ACE_laserpointer"); - missionNamespace setVariable [_cacheName, _laserID]; - }; - - if (_laserID > 0 && {_x isFlashlightOn _weapon}) then { - [_x, 100, (_laserID == 2 || _isIR), _brightness] call FUNC(drawLaserpoint); - }; - }; - false -} count GVAR(nearUnits); + { + // green laser + [_x, 100, true, _brightness] call FUNC(drawLaserpoint); + } count GVAR(greenLaserUnits); +}; diff --git a/addons/laserpointer/script_component.hpp b/addons/laserpointer/script_component.hpp index b6323308fd..4b7b2e0d39 100644 --- a/addons/laserpointer/script_component.hpp +++ b/addons/laserpointer/script_component.hpp @@ -15,3 +15,5 @@ #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define MAX_LASER_RANGE 50 From 70f4dd3e6b74d872c5adbc7cde2e09e9569a3e52 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 12:49:10 -0600 Subject: [PATCH 20/37] Fix passenger actions - Ensure order of MainActions (#4883) --- .../interact_menu/functions/fnc_compileMenu.sqf | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf index 225ebc59b4..ed38e41ada 100644 --- a/addons/interact_menu/functions/fnc_compileMenu.sqf +++ b/addons/interact_menu/functions/fnc_compileMenu.sqf @@ -109,6 +109,22 @@ private _actionsCfg = configFile >> "CfgVehicles" >> _objectType >> "ACE_Actions TRACE_1("Building ACE_Actions",_objectType); private _actions = [_actionsCfg, 0] call _recurseFnc; +// ace_interaction_fnc_addPassengerAction expects ACE_MainActions to be first +// Other mods can change the order that configs are added, so we should verify this now and resort if needed +if (_objectType isKindOf "CaManBase") then { + if ((((_actions select 0) select 0) select 0) != "ACE_MainActions") then { + INFO_1("ACE_MainActions not first for man [%1]",_objectType); + private _mainActions = []; + { + if (((_x select 0) select 0) == "ACE_MainActions") then { + _mainActions = _actions deleteAt _forEachIndex; + }; + } forEach _actions; + if (_mainActions isEqualTo []) exitWith {ERROR_1("ACE_MainActions not found on man [%1]",_objectType);}; + _actions = [_mainActions] + _actions; // resort array with ACE_MainActions first + }; +}; + _namespace setVariable [_objectType, _actions]; /* From ac0292d7380366eb40bfe916e0a0ca499f6b518a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 12:49:55 -0600 Subject: [PATCH 21/37] Fix RHS m113 compat (#4881) --- optionals/compat_rhs_usf3/CfgVehicles.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index c6f683cb29..5350e10867 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -358,7 +358,7 @@ class CfgVehicles { }; class APC_Tracked_02_base_F: Tank_F {}; - class rhsusf_m113_tank_base: APC_Tracked_02_base_F { + class rhsusf_m113tank_base: APC_Tracked_02_base_F { EGVAR(refuel,fuelCapacity) = 360; class Turrets: Turrets { class MainTurret: MainTurret { @@ -367,7 +367,6 @@ class CfgVehicles { }; }; - class rhsusf_m113tank_base: APC_Tracked_02_base_F {}; class rhsusf_m113_usarmy: rhsusf_m113tank_base {}; class rhsusf_m113_usarmy_supply: rhsusf_m113_usarmy { transportAmmo = 0; From 78a55d44363dcfca38e99bcec859fcfaa38ebd93 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 13:01:17 -0600 Subject: [PATCH 22/37] Generic cycle attack profile key for missile guidance (#4787) * Generic cycle attack profile key for missile guidance * Add hint for weapons without huds * Fix Korean strings * Cleanup --- addons/javelin/XEH_PREP.hpp | 1 - .../javelin/functions/fnc_cycleFireMode.sqf | 30 --------- addons/javelin/initKeybinds.sqf | 8 --- addons/javelin/stringtable.xml | 16 +---- addons/missileguidance/XEH_PREP.hpp | 2 + addons/missileguidance/XEH_post_init.sqf | 10 +++ .../fnc_cycleAttackProfileKeyDown.sqf | 67 +++++++++++++++++++ addons/missileguidance/stringtable.xml | 14 ++++ 8 files changed, 94 insertions(+), 54 deletions(-) delete mode 100644 addons/javelin/functions/fnc_cycleFireMode.sqf create mode 100644 addons/missileguidance/functions/fnc_cycleAttackProfileKeyDown.sqf diff --git a/addons/javelin/XEH_PREP.hpp b/addons/javelin/XEH_PREP.hpp index cce2482932..76d658d90d 100644 --- a/addons/javelin/XEH_PREP.hpp +++ b/addons/javelin/XEH_PREP.hpp @@ -1,5 +1,4 @@ -PREP(cycleFireMode); PREP(getTarget); PREP(mapHelperDraw); PREP(onOpticDraw); diff --git a/addons/javelin/functions/fnc_cycleFireMode.sqf b/addons/javelin/functions/fnc_cycleFireMode.sqf deleted file mode 100644 index 5eeb4dd9b3..0000000000 --- a/addons/javelin/functions/fnc_cycleFireMode.sqf +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Author: jaynus - * Cycles fire mode (top/dir) - * - * Arguments: - * None - * - * Return Value: - * None - * - * Example: - * [] call ace_javelin_fnc_cycleFireMode - * - * Public: No - */ -// #define DEBUG_MODE_FULL -#include "script_component.hpp" - -TRACE_1("cycle fire mode", _this); - -private _currentShooter = if (ACE_player call CBA_fnc_canUseWeapon) then {ACE_player} else {vehicle ACE_player}; -private _currentFireMode = _currentShooter getVariable ["ace_missileguidance_attackProfile", "JAV_TOP"]; - -if (_currentFireMode == "JAV_DIR") then { - _currentFireMode = "JAV_TOP"; -} else { - _currentFireMode = "JAV_DIR"; -}; -_currentShooter setVariable ["ace_missileguidance_attackProfile", _currentFireMode, false]; -TRACE_2("set",_currentFireMode,_currentShooter); diff --git a/addons/javelin/initKeybinds.sqf b/addons/javelin/initKeybinds.sqf index ec5c9a27ac..7652f2fd57 100644 --- a/addons/javelin/initKeybinds.sqf +++ b/addons/javelin/initKeybinds.sqf @@ -18,11 +18,3 @@ false }, [15, [false, false, false]], false] call CBA_fnc_addKeybind; //Tab Key - -["ACE3 Weapons", QGVAR(cycleFireMode), localize LSTRING(CycleFireMode), -{ false }, -{ - [ACE_player] call FUNC(cycleFireMode); - false -}, -[15, [false, true, false]], false] call CBA_fnc_addKeybind; //Ctrl+Tab Key diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml index 4e5614e106..ece03b3699 100644 --- a/addons/javelin/stringtable.xml +++ b/addons/javelin/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -15,19 +15,5 @@ 目標を捕捉 (押しっぱ) 표적 획득 (누르기) - - Cycle Fire Mode - Wechsle Feuermodus - Переключение режимов огня - Přepínání režimů palby - Przełącz tryb ognia - Cycle mode de tir - Tüzelési mód váltása - Alterna le modalità di fuoco - Cambiar modo de disparo - Alterar Modo de Disparo - 発射モード切り替え - 발사 방식 순환 - diff --git a/addons/missileguidance/XEH_PREP.hpp b/addons/missileguidance/XEH_PREP.hpp index 8d13e2b499..ee2b7328cb 100644 --- a/addons/missileguidance/XEH_PREP.hpp +++ b/addons/missileguidance/XEH_PREP.hpp @@ -1,3 +1,5 @@ +LOG("prep"); +PREP(cycleAttackProfileKeyDown); PREP(changeMissileDirection); diff --git a/addons/missileguidance/XEH_post_init.sqf b/addons/missileguidance/XEH_post_init.sqf index 282aac5503..cc09b1f0ac 100644 --- a/addons/missileguidance/XEH_post_init.sqf +++ b/addons/missileguidance/XEH_post_init.sqf @@ -1,3 +1,13 @@ #include "script_component.hpp" [QGVAR(handoff), {_this call FUNC(handleHandoff)}] call CBA_fnc_addEventHandler; + +["ACE3 Weapons", QGVAR(cycleFireMode), localize LSTRING(CycleFireMode), +{ + [] call FUNC(cycleAttackProfileKeyDown); + false +}, +{ + false +}, +[15, [false, true, false]], false] call CBA_fnc_addKeybind; //Ctrl+Tab Key diff --git a/addons/missileguidance/functions/fnc_cycleAttackProfileKeyDown.sqf b/addons/missileguidance/functions/fnc_cycleAttackProfileKeyDown.sqf new file mode 100644 index 0000000000..05db3748da --- /dev/null +++ b/addons/missileguidance/functions/fnc_cycleAttackProfileKeyDown.sqf @@ -0,0 +1,67 @@ +/* + * Author: PabstMirror + * Cycles fire mode for any missileGuidance enabled ammo that has multiple attack profiles + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ace_missileguidance_fnc_cycleAttackProfileKeyDown + * + * Public: No + */ +// #define DEBUG_MODE_FULL +#include "script_component.hpp" + +TRACE_1("cycle fire mode",_this); + +if (!alive ACE_player) exitWith {}; +if (!([ACE_player, objNull, ["isNotInside"]] call EFUNC(common,canInteractWith))) exitWith {}; + + +private ["_currentShooter", "_currentMagazine"]; +if (((vehicle ACE_player) == ACE_player) || {ACE_player call CBA_fnc_canUseWeapon}) then { + _currentShooter = ACE_player; + _currentMagazine = currentMagazine ACE_player; +} else { + _currentShooter = vehicle ACE_player; + _currentMagazine = _currentShooter currentMagazineTurret (ACE_player call CBA_fnc_turretPath); +}; +if (_currentMagazine == "") exitWith {TRACE_1("no magazine",_currentMagazine)}; + +private _ammo = getText (configFile >> "CfgMagazines" >> _currentMagazine >> "ammo"); + +TRACE_3("",_currentShooter,_currentMagazine,_ammo); + +// Bail if guidance is disabled for this ammo +if ((getNumber (configFile >> "CfgAmmo" >> _ammo >> QUOTE(ADDON) >> "enabled")) != 1) exitWith {TRACE_1("not enabled",_ammo)}; + +// Verify ammo has explicity added guidance config (ignore inheritances) +private _configs = configProperties [(configFile >> "CfgAmmo" >> _ammo), QUOTE(configName _x == QUOTE(QUOTE(ADDON))), false]; +if ((count _configs) < 1) exitWith {TRACE_2("not explicity enabled",_ammo,_configs)}; + +private _attackProfiles = getArray (configFile >> "CfgAmmo" >> _ammo >> QUOTE(ADDON) >> "attackProfiles"); +if ((count _attackProfiles) <= 1) exitWith {TRACE_1("no choices for attack profile",_attackProfiles)}; + +private _currentFireMode = _currentShooter getVariable [QGVAR(attackProfile), "#undefined"]; + +// Just like onFired, this is case sensitive! +private _index = _attackProfiles find _currentFireMode; +if (_index == -1) then { + _index = _attackProfiles find (getText (configFile >> "CfgAmmo" >> _ammo >> QUOTE(ADDON) >> "defaultAttackProfile")); +}; +_index = (_index + 1) % (count _attackProfiles); +private _nextFireMode = _attackProfiles select _index; +TRACE_4("",_currentFireMode,_nextFireMode,_index,_attackProfiles); + +_currentShooter setVariable [QGVAR(attackProfile), _nextFireMode, false]; + +playSound "ACE_Sound_Click"; + +if ((getNumber (configFile >> "CfgAmmo" >> _ammo >> QUOTE(ADDON) >> "showHintOnCycle")) == 1) then { + private _localizedName = getText (configFile >> QGVAR(AttackProfiles) >> _nextFireMode >> "name"); + [_localizedName] call EFUNC(common,displayTextStructured); +}; diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index f1177ef36f..54cc4e9757 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -154,5 +154,19 @@ Giocatore ed IA プレイヤーと AI + + Cycle Fire Mode + Wechsle Feuermodus + Переключение режимов огня + Přepínání režimů palby + Przełącz tryb ognia + Cycle mode de tir + Tüzelési mód váltása + Alterna le modalità di fuoco + Cambiar modo de disparo + Alterar Modo de Disparo + 発射モード切り替え + 발사 방식 순환 + From 159e76257620525bcd43e587b2d78a0ed63ef6cc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 13:03:12 -0600 Subject: [PATCH 23/37] Handle changes to CBA_fnc_addPlayerEventHandler (#4878) * Handle changes to CBA_fnc_addPlayerEventHandler * Fix var spelling --- addons/advanced_fatigue/XEH_postInit.sqf | 11 +++++++---- addons/advanced_throwing/XEH_postInit.sqf | 3 ++- addons/common/XEH_postInit.sqf | 4 ++-- addons/common/functions/fnc_setName.sqf | 1 + 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/addons/advanced_fatigue/XEH_postInit.sqf b/addons/advanced_fatigue/XEH_postInit.sqf index 57be761607..542360c0c3 100644 --- a/addons/advanced_fatigue/XEH_postInit.sqf +++ b/addons/advanced_fatigue/XEH_postInit.sqf @@ -14,12 +14,15 @@ if (!hasInterface) exitWith {}; // - GVAR updating and initialization ----------------------------------------- ["unit", FUNC(handlePlayerChanged), true] call CBA_fnc_addPlayerEventHandler; - private _fnc_showStaminaBar = { + ["visibleMap", { + params ["", "_visibleMap"]; // command visibleMap is updated one frame later + private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull]; + _staminaBarContainer ctrlShow ((!_visibleMap) && {(vehicle ACE_player) == ACE_player}); + }, true] call CBA_fnc_addPlayerEventHandler; + ["vehicle", { private _staminaBarContainer = uiNamespace getVariable [QGVAR(staminaBarContainer), controlNull]; _staminaBarContainer ctrlShow ((!visibleMap) && {(vehicle ACE_player) == ACE_player}); - }; - ["visibleMap", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler; - ["vehicle", _fnc_showStaminaBar, true] call CBA_fnc_addPlayerEventHandler; + }, true] call CBA_fnc_addPlayerEventHandler; // - Duty factors ------------------------------------------------------------- if (["ACE_Medical"] call EFUNC(common,isModLoaded)) then { diff --git a/addons/advanced_throwing/XEH_postInit.sqf b/addons/advanced_throwing/XEH_postInit.sqf index f3c0d4b9f6..f0c0e5231b 100644 --- a/addons/advanced_throwing/XEH_postInit.sqf +++ b/addons/advanced_throwing/XEH_postInit.sqf @@ -67,7 +67,8 @@ GVAR(ammoMagLookup) = call CBA_fnc_createNamespace; }] call CBA_fnc_addPlayerEventhandler; ["visibleMap", { - if (visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then { + params ["", "_visibleMap"]; // command visibleMap is updated one frame later + if (_visibleMap && {ACE_player getVariable [QGVAR(inHand), false]}) then { [ACE_player, "Opened Map"] call FUNC(exitThrowMode); }; }] call CBA_fnc_addPlayerEventhandler; diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 68920a7a5c..8200493810 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -282,11 +282,11 @@ enableCamShake true; params ["_newPlayer","_oldPlayer"]; if (alive _newPlayer) then { - [_newPlayer] call FUNC(setName); + [FUNC(setName), [_newPlayer]] call CBA_fnc_execNextFrame; }; if (alive _oldPlayer) then { - [_oldPlayer] call FUNC(setName); + [FUNC(setName), [_oldPlayer]] call CBA_fnc_execNextFrame; }; }] call CBA_fnc_addPlayerEventHandler; diff --git a/addons/common/functions/fnc_setName.sqf b/addons/common/functions/fnc_setName.sqf index 1b2b515ec2..f4858b877b 100644 --- a/addons/common/functions/fnc_setName.sqf +++ b/addons/common/functions/fnc_setName.sqf @@ -13,6 +13,7 @@ #include "script_component.hpp" params ["_unit"]; +TRACE_3("setName",_unit,alive _unit,name _unit); if (isNull _unit || {!alive _unit}) exitWith {}; From f678f4a3b134e8055bee343ff91db0b5fccc9061 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 10 Feb 2017 21:23:33 -0600 Subject: [PATCH 24/37] Fix getPos order (#4889) --- addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf index ddd0d4377e..300def5dc7 100644 --- a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf @@ -88,9 +88,9 @@ if (_activated && local _logic) then { private _newPosASL = if (_followPlayers) then { // Select a target unit at random. private _targetUnit = selectRandom _allUnits; - AGLtoASL (_targetUnit getPos [random 360, _minimalDistance + random (_maximalDistance - _minimalDistance)]); + AGLtoASL (_targetUnit getPos [_minimalDistance + random (_maximalDistance - _minimalDistance), random 360]); } else { - AGLtoASL (_logic getPos [random 360, _minimalDistance + random (_maximalDistance - _minimalDistance)]); + AGLtoASL (_logic getPos [_minimalDistance + random (_maximalDistance - _minimalDistance), random 360]); }; TRACE_1("",_newPosASL); From 9763defd10c3cd79c0148b17d1bcdc48eee24d41 Mon Sep 17 00:00:00 2001 From: J3aLeiNe Date: Sat, 11 Feb 2017 21:24:54 +0100 Subject: [PATCH 25/37] AB : compats RHS 4.2 updated (#4879) * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgAmmo.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp * Update CfgWeapons.hpp --- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 33 +++++++++++++---- optionals/compat_rhs_usf3/CfgAmmo.hpp | 2 +- optionals/compat_rhs_usf3/CfgWeapons.hpp | 44 +++++++++++++++++++++-- 3 files changed, 69 insertions(+), 10 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index 1f193d92f5..09a3af7384 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -46,21 +46,42 @@ class CfgWeapons { ACE_barrelTwist = 195.072; ACE_barrelLength = 589.28; }; - + class rhs_weap_orsis_Base_F; + class rhs_weap_t5000: rhs_weap_orsis_Base_F { // http://en.orsis.com/production/catalog/19046/ + ACE_barrelTwist = 254.0; // 1:10" + ACE_barrelLength = 698.5; // 27.5" + ACE_RailHeightAboveBore = 2.4; + }; class rhs_acc_sniper_base; class rhs_acc_pso1m2: rhs_acc_sniper_base { - ACE_ScopeAdjust_Vertical[] = { 0, 0 }; - ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_Vertical[] = {0, 0}; + ACE_ScopeAdjust_Horizontal[] = {-10, 10}; ACE_ScopeAdjust_VerticalIncrement = 0.5; ACE_ScopeAdjust_HorizontalIncrement = 0.5; }; class rhs_acc_pso1m21: rhs_acc_sniper_base { - ACE_ScopeAdjust_Vertical[] = { 0, 0 }; - ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_Vertical[] = {0, 0}; + ACE_ScopeAdjust_Horizontal[] = {-10, 10}; ACE_ScopeAdjust_VerticalIncrement = 0.5; ACE_ScopeAdjust_HorizontalIncrement = 0.5; }; - + class ItemCore; + class InventoryOpticsItem_Base_F; + class rhs_acc_dh520x56: ItemCore { // http://nightvision.ru/catalog/4/item/35 + ACE_ScopeHeightAboveRail = 4.6; + ACE_ScopeAdjust_Vertical[] = {0, 33}; + ACE_ScopeAdjust_Horizontal[] = {-9, 9}; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo: InventoryOpticsItem_Base_F { + class OpticsModes { + class dedal_520 { + discreteDistance[] = {100}; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; class Launcher_Base_F; class rhs_weap_rpg7: Launcher_Base_F { ace_reloadlaunchers_enabled = 1; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 93939879ef..d4feb96cc0 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -31,7 +31,7 @@ class CfgAmmo { ACE_caliber = 7.823; ACE_bulletLength = 37.821; ACE_bulletMass = 14.256; - ACE_ammoTempMuzzleVelocityShifts[] = {-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; + ACE_ammoTempMuzzleVelocityShifts[] = {-5.3, -5.1, -4.6, -4.2, -3.4, -2.6, -1.4, -0.3, 1.4, 3.0, 5.2}; ACE_ballisticCoefficients[] = {0.310}; ACE_velocityBoundaries[] = {}; ACE_standardAtmosphere = "ICAO"; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index dcdb3586e1..4285db8661 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -13,16 +13,24 @@ class CfgWeapons { class rhs_weap_M107_Base_F: GM6_base_F { ACE_barrelTwist = 381.0; ACE_barrelLength = 736.6; + ACE_RailHeightAboveBore = 3.8; }; class rhs_weap_XM2010_Base_F: Rifle_Base_F { ACE_barrelTwist = 254.0; ACE_barrelLength = 609.6; ACE_Overheating_dispersion = 0.75; + ACE_RailHeightAboveBore = 3.6; }; class rhs_weap_m24sws: rhs_weap_XM2010_Base_F { ACE_barrelTwist = 285.75; ACE_barrelLength = 609.6; + ACE_RailHeightAboveBore = 1.8; }; + class rhs_weap_m40a5: rhs_weap_XM2010_Base_F { + ACE_barrelTwist = 304.8; // 1:12" + ACE_barrelLength = 635.0; // 25" + ACE_RailHeightAboveBore = 2.6; + }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { ACE_barrelTwist = 177.8; @@ -75,14 +83,17 @@ class CfgWeapons { ACE_barrelTwist = 304.8; ACE_barrelLength = 558.8; ACE_Overheating_dispersion = 0.75; + ACE_RailHeightAboveBore = 3.3; }; class rhs_weap_sr25: rhs_weap_m14ebrri { ACE_barrelTwist = 285.75; ACE_barrelLength = 609.6; + ACE_RailHeightAboveBore = 3.4; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { ACE_barrelTwist = 285.75; ACE_barrelLength = 508.0; + ACE_RailHeightAboveBore = 3.4; }; class rhs_weap_M590_5RD: Rifle_Base_F { ACE_barrelTwist = 0.0; @@ -131,8 +142,11 @@ class CfgWeapons { }; }; }; - class rhsusf_acc_LEUPOLDMK4: rhsusf_acc_sniper_base {}; + class rhsusf_acc_LEUPOLDMK4: rhsusf_acc_sniper_base { + ACE_ScopeHeightAboveRail = 2.4; + }; class rhsusf_acc_LEUPOLDMK4_2: rhsusf_acc_sniper_base { + ACE_ScopeHeightAboveRail = 3.8; class ItemInfo: InventoryOpticsItem_Base_F { class OpticsModes { class pso1_scope { @@ -142,8 +156,11 @@ class CfgWeapons { }; }; }; - class rhsusf_acc_LEUPOLDMK4_2_d: rhsusf_acc_LEUPOLDMK4_2 {}; + class rhsusf_acc_LEUPOLDMK4_2_d: rhsusf_acc_LEUPOLDMK4_2 { + ACE_ScopeHeightAboveRail = 3.8; + }; class rhsusf_acc_premier: rhsusf_acc_LEUPOLDMK4_2 { + ACE_ScopeHeightAboveRail = 5.4; class ItemInfo: InventoryOpticsItem_Base_F { class OpticsModes { class pso1_scope { @@ -153,8 +170,11 @@ class CfgWeapons { }; }; }; - class rhsusf_acc_premier_low: rhsusf_acc_premier {}; + class rhsusf_acc_premier_low: rhsusf_acc_premier { + ACE_ScopeHeightAboveRail = 4.0; + }; class rhsusf_acc_premier_anpvs27: rhsusf_acc_premier { + ACE_ScopeHeightAboveRail = 5.4; class ItemInfo: InventoryOpticsItem_Base_F { class OpticsModes { class pso1_nvg { @@ -164,6 +184,24 @@ class CfgWeapons { }; }; }; + class rhsusf_acc_M8541: rhsusf_acc_premier { // http://www.schmidtundbender.de/en/products/police-and-military-forces/3-12x50-pm-iilpmtc.html + ACE_ScopeHeightAboveRail = 4.0; + ACE_ScopeAdjust_Vertical[] = {0, 22}; + ACE_ScopeAdjust_Horizontal[] = {-6, 6}; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo: InventoryOpticsItem_Base_F { + class OpticsModes { + class Snip { + discreteDistance[] = {100}; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class rhsusf_acc_M8541_low: rhsusf_acc_M8541 { + ACE_ScopeHeightAboveRail = 3.0; + }; // RHS lauchers class rhs_weap_fgm148: launch_O_Titan_F { ace_javelin_enabled = 1; From 33b19f7b4cdfdf2edadd53f1b2610f6e6da47c8f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 11 Feb 2017 15:07:10 -0600 Subject: [PATCH 26/37] Fix MUL macros (#4888) --- addons/frag/XEH_postInit.sqf | 1 - addons/frag/functions/fnc_frago.sqf | 13 +++++-------- addons/frag/functions/fnc_startTracing.sqf | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/addons/frag/XEH_postInit.sqf b/addons/frag/XEH_postInit.sqf index 038b7a36c4..31f9515750 100644 --- a/addons/frag/XEH_postInit.sqf +++ b/addons/frag/XEH_postInit.sqf @@ -27,4 +27,3 @@ GVAR(cacheRoundsTypesToTrack) = [false] call CBA_fnc_createNamespace; #ifdef DEBUG_ENABLED_FRAG [true, true, 30] call FUNC(dev_debugAmmo); #endif - diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index d9915f787c..5481649b54 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -59,8 +59,8 @@ if (_warn) then { INFO_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_shellType); }; -private _fragPower = (((_m / _c) + _k) ^ - (1 / 2)) * _gC; -MUL(_fragPower,0.8); // Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation +// Gunery equation is for a non-fragmenting metal, imperical value of 80% represents fragmentation +private _fragPower = 0.8 * (((_m / _c) + _k) ^ - (1 / 2)) * _gC; private _atlPos = ASLtoATL _lastPos; @@ -103,12 +103,9 @@ if (_isArmed && {!(_objects isEqualTo [])}) then { //if (random(1) > 0.5) then { private _target = _x; if (alive _target) then { - private _boundingBox = boundingBox _target; + (boundingBox _target) params ["_boundingBoxA", "_boundingBoxB"]; - private _cubic = 1; - for "_i" from 0 to 2 do { - MUL(_cubic,(abs ((_boundingBox select 0) select _i)) + ((_boundingBox select 1) select _i)); - }; + private _cubic = ((abs (_boundingBoxA select 0)) + (_boundingBoxB select 0)) * ((abs (_boundingBoxA select 1)) + (_boundingBoxB select 1)) * ((abs (_boundingBoxA select 2)) + (_boundingBoxB select 2)); if (_cubic <= 1) exitWith {}; _doRandom = true; @@ -116,7 +113,7 @@ if (_isArmed && {!(_objects isEqualTo [])}) then { private _targetVel = velocity _target; private _targetPos = getPosASL _target; private _distance = _targetPos vectorDistance _lastPos; - private _add = (((_boundingBox select 1) select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10); + private _add = ((_boundingBoxB select 2) / 2) + ((((_distance - (_fragpower / 8)) max 0) / _fragPower) * 10); _targetPos = _targetPos vectorAdd [ (_targetVel select 0) * (_distance / _fragPower), diff --git a/addons/frag/functions/fnc_startTracing.sqf b/addons/frag/functions/fnc_startTracing.sqf index d860d6635e..c697a8dca2 100644 --- a/addons/frag/functions/fnc_startTracing.sqf +++ b/addons/frag/functions/fnc_startTracing.sqf @@ -2,4 +2,4 @@ if (GVAR(tracesStarted)) exitWith {}; GVAR(tracesStarted) = true; -GVAR(traceID) = [FUNC(drawTraces)] call CBA_fnc_addPerFrameHandler; +GVAR(traceID) = [FUNC(drawTraces), 0, []] call CBA_fnc_addPerFrameHandler; From 1be278fbdab5425ab6877731f59052749e3c73c5 Mon Sep 17 00:00:00 2001 From: NorXAengell Date: Sat, 11 Feb 2017 22:16:56 +0100 Subject: [PATCH 27/37] French translation to "Advanced throwing" and "Advanced fatigue" (#4415) * French translation of "Advanced fatigue" and "Advanced throwing" Full translation of "Advanced fatigue" and "Advanced throwing". * New batch of translation/correction --- addons/advanced_fatigue/stringtable.xml | 13 +++++++++ addons/advanced_throwing/stringtable.xml | 21 +++++++++++++++ addons/cookoff/stringtable.xml | 4 ++- addons/dogtags/stringtable.xml | 7 +++++ addons/explosives/stringtable.xml | 2 ++ addons/frag/stringtable.xml | 2 +- addons/goggles/stringtable.xml | 4 +++ addons/grenades/stringtable.xml | 3 +++ addons/inventory/stringtable.xml | 2 +- addons/markers/stringtable.xml | 4 +-- addons/medical/stringtable.xml | 20 +++++++------- addons/medical_ai/stringtable.xml | 3 ++- addons/medical_menu/stringtable.xml | 34 ++++++++++++------------ addons/minedetector/stringtable.xml | 5 ++++ addons/movement/stringtable.xml | 4 +-- addons/nametags/stringtable.xml | 1 + addons/tagging/stringtable.xml | 12 ++++++++- addons/ui/stringtable.xml | 2 +- addons/zeus/stringtable.xml | 26 +++++++++--------- optionals/compat_adr_97/stringtable.xml | 2 +- 20 files changed, 120 insertions(+), 51 deletions(-) diff --git a/addons/advanced_fatigue/stringtable.xml b/addons/advanced_fatigue/stringtable.xml index 5e37d381b8..4a02cb07dd 100644 --- a/addons/advanced_fatigue/stringtable.xml +++ b/addons/advanced_fatigue/stringtable.xml @@ -7,6 +7,7 @@ パフォーマンス要因 Współczynnik wydolności 성능 요인 + Facteur de performance Influences the overall performance of all players with no custom factor. Higher means better. @@ -14,6 +15,7 @@ 非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。 Wpływa na ogólną wydolność organizmu u wszystkich graczy bez ustawionego niestandardowego współczynnika. Więcej znaczy lepiej. 모든 성능이 임의로 설정된 값 없이 영향받습니다. 값이 클수록 더 나은 성능을 발휘합니다 + Influence les performances générales de tous les joueurs sans facteurs personalisés. Une valeur plus élevée implique de meilleures performances. Influences the overall performance of this unit. Higher means better. @@ -21,6 +23,7 @@ 非カスタム要因をもつ全プレイヤーへ全体的に動作を影響させます。高いほど影響がでます。 Wpływa na ogólną wydolność tej jednostki. Więcej znaczy lepiej. 모든 성능이 이 단위로 영향을 받습니다. 값이 클수록 더 나은 성능을 발휘합니다 + Influence les performances générales de cette unité. Une valeur plus élevée implique de meilleures performances. Recovery Factor @@ -28,6 +31,7 @@ 回復要因 Współczynnik regeneracji 회복 요인 + Facteur de récupération Changes how fast the player recovers when resting. Higher is faster. @@ -35,6 +39,7 @@ 休憩時は、プレイヤーが早く回復します。高いほど早くなります。 Wpływa na czas regeneracji podczas postoju. Więcej znaczy szybciej. 얼마나 빨리 회복하는지를 바꿉니다. 값이 클수록 더 나은 성능을 발휘합니다 + Change la vitesse à laquelle les joueurs récupèrent leur endurance lorsqu'ils se reposent. Une valeur plus élevée implique une récupération plus rapide. Load Factor @@ -42,6 +47,7 @@ 負荷要因 Współczynnik masy ekwipunku 부담 요인 + Facteur d'encombrement Increases or decreases how much weight influences the players performance. Zero means equipment weight has no performance influence. @@ -49,6 +55,7 @@ 重量によりプレイヤーの動作への影響下増加したり、低下します。装備を持っていない場合、影響はしません。 Zmniejsza lub zwiększa wpływ ciężaru ekwipunku na wydolność gracza. Zero oznacza kompletny brak wpływu na wydolność. 플레이어가 무게에 따라 얼마나 영향받는지를 증가시키거나 감소시킵니다. 0의 경우 플레이어가 장비 무게에 영향받지 않습니다. + Augmente ou réduit l'influence que le poids à sur les performances des joueurs. Zéro implique que le poids de l'équipement n'a pas d'influence sur les performances. Terrain Gradient Factor @@ -56,6 +63,7 @@ 地形の勾配による要因 Współczynnik terenu 지형 경사도 요인 + Facteur d'inclinaison du terrain Sets how much steep terrain increases stamina loss. Higher means higher stamina loss. @@ -63,6 +71,7 @@ 地形によって影響する体力の消費量を決定します。高数値ではより体力を消費します。 Wpływa na to w jakim stopniu stromy teren wpływa na utratę wytrzymałości. Więcej oznacza szybszą utratę wytrzymałości. 경사도에 따라 얼마나 피로해지는지를 정합니다. 값이 클수록 더 많은 피로를 유발합니다. + Configure l'influence de l'inclinaison du terrain sur la perte d'endurance. Une valeur plus élevée implique une perte d'endurance plus importante. Enabled @@ -70,6 +79,7 @@ 有効化 Włączone 활성화 + Activé Enables/disables Advanced Fatigue. @@ -77,6 +87,7 @@ アドバンスド疲労の有効化と無効化 Włącza/wyłącza zaawansowaną wytrzymałość 고급 피로도 활성화/비활성화 + Active/désactive la fatigue avancée. Show stamina bar @@ -84,6 +95,7 @@ 体力バーを表示 Pokaż pasek wytrzymałości 피로도 막대 + Afficher la barre d'endurance Shows the stamina bar. @@ -91,6 +103,7 @@ 体力バーを表示します。 Pokazuje pasek wytrzymałości. 피로도 막대를 보여줍니다. + Affiche la barre d'endurance. diff --git a/addons/advanced_throwing/stringtable.xml b/addons/advanced_throwing/stringtable.xml index a8fc6c32a7..2cc7a9c8b6 100644 --- a/addons/advanced_throwing/stringtable.xml +++ b/addons/advanced_throwing/stringtable.xml @@ -8,6 +8,7 @@ Zaawansowane rzucanie Erweitertes Wurfsystem 고급 투척 + Lancé amélioré Allows changing advanced throwing behaviour. @@ -16,6 +17,7 @@ Zezwala na zmianę zachowania zaawansowanego trybu rzucania. Erlaubt es, das Verhalten des erweiterten Wurfsystems zu ändern. 고급 투척 행위를 허가합니다 + Permet de changer la configuration du lancé amélioré. Enable Advanced Throwing @@ -24,6 +26,7 @@ Aktywuj zaawansowane rzucanie Aktiviere erweitertes Wurfsystem 고급 투척 활성화 + Active le lancé amélioré Enables advanced throwing system. @@ -32,6 +35,7 @@ Aktywuje system zaawansowanego rzucania. Aktiviert das erweiterte Wurfsystem. 고급 투척을 활성화 합니다 + Active le système de lancé amélioré. Show Throw Arc @@ -40,6 +44,7 @@ Pokaż trasę lotu Zeige Wurfbogen 투척 궤적 표시 + Afficher l'arc de lancé Enables visualization of the throw arc (where throwable will fly). @@ -48,6 +53,7 @@ Wyświetla wizualizację trasy przelotu granatu. Aktiviert die Visualisierung des Wurfbogens (wohin das Objekt geworfen werden wird). 투척 궤도를 시각화 합니다(투척물이 어디로 갈지) + Active la visualisation de l'arc de lancé (où l'objet lancé va atterrir). Show Throwing Mouse Controls @@ -56,6 +62,7 @@ Pokaż podpowiedzi sterowania myszą Zeige Maussteuerung beim Werfen 마우스 조작 표시 + Afficher les contrôles à la souris du lancé Enables visual cues for mouse controls when throwable is prepared. @@ -64,6 +71,7 @@ Wyświetla podpowiedzi sterowania myszą kiedy obiekt miotany jest w ręku. Aktiviert visuelle Hinweise zur Maussteuerung, wenn ein Objekt zum Werfen vorbereitet wird. 투척물을 준비시 마우스 조작을 시각화해서 보여줍니다 + Active les aides visuels pour les controles à la souris lorsqu'un lancé est préparé. Enable Throwables Pick Up @@ -72,6 +80,7 @@ Zezwól na podnoszenie obiektów miotanych Aktiviere Aufheben von Wurfobjekten 투척물 줍기 활성화 + Active la récupération des objets lancés Enables ability to pick up throwables from the ground. @@ -80,6 +89,7 @@ Umożliwia podnoszenie obiektów miotanych z ziemi. Aktiviert die Möglichkeit, geworfene Objekte wieder vom Boden aufzuheben. 땅에 떨어진 투척물을 주울 수 있게 해줍니다. + Active la capacité de récupérer les objets lancés sur le sol. Enable Attached Throwables Pick Up @@ -88,6 +98,7 @@ Zezwól na podnoszenie przyczepionych obiektów miotanych Aktiviere erneute Aufnahme befestigter Wurfobjekte 부착 투척물 줍기 활성화 + Active le ramassage d'objets lançables attachés Enables ability to pick up throwables from attached objects. @@ -96,6 +107,7 @@ Umożliwia podnoszenie obiektów miotanych przyczepionych do innych obiektów. Aktiviert die Möglichkeit, befestigte Wurfobjekte erneut aufzunehmen. 부착된 투척물을 주울 수 있게 해줍니다. + Active la capacité à ramasser les objets lançables attaché à d'autres objets. Prepare/Change Throwable @@ -104,6 +116,7 @@ Przygotuj/zmień ob. miotany Wurfobjekt vorbereiten/wechseln 투척물 준비/변경 + Préparer/changer d'objet Throwable Drop Mode (Hold) @@ -112,6 +125,7 @@ Tryb upuszczania ob. miotanego (przytrzymaj) Wurfobjekt Fallmodus (halten) 투척물 떨어뜨리기 모드(꾹눌러서) + Mode de lancé de l'objet (Tenir) Throwable Drop Mode (Toggle) @@ -120,6 +134,7 @@ Tryb upuszczania ob. miotanego (przełącz) Wurfobjekt Fallmodus (umschalten) 투척물 떨어뜨리기 모드(토글) + Mode de lancé de l'objet (Basculer) Primed @@ -128,6 +143,7 @@ Odbezpieczony Scharf gemacht 뇌관 작동 + Amorcer Throw @@ -136,6 +152,7 @@ Rzuć Werfen 던지기 + Lancer (Scroll) Change Mode @@ -144,6 +161,7 @@ (Kółko m.) zmień tryb (Scrollen) Modus wechseln (마우스 휠) 모드 변경 + (Molette souris) Changer de mode (Scroll) Extend @@ -152,6 +170,7 @@ (Kółko m.) przedłuż (Scrollen) Erweitern (마우스 휠) 연장 + (Molette souris) Etendre (Click) Cook @@ -160,6 +179,7 @@ (Kliknięcie) Odbezpiecz (Klicken) Abkochen (클릭) 예열 + (Clique) Dégoupiller Pick Up @@ -168,6 +188,7 @@ Podnieś Aufheben 줍기 + Ramasser diff --git a/addons/cookoff/stringtable.xml b/addons/cookoff/stringtable.xml index 9bd2ae1f34..b905578a07 100644 --- a/addons/cookoff/stringtable.xml +++ b/addons/cookoff/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -9,6 +9,7 @@ 誘爆を有効化 쿡오프 현상 활성화 Aktywuj efekty samozapłonu amunicji + Activer Enables cook off and related vehicle destruction effects. @@ -65,6 +66,7 @@ Multiplier for how long cook off lasts [Setting to 0 will disable ammo cookoff] + Active le et les effets de destructions assosicée aux vehicules. diff --git a/addons/dogtags/stringtable.xml b/addons/dogtags/stringtable.xml index 75a12ccff2..3e13f3621e 100644 --- a/addons/dogtags/stringtable.xml +++ b/addons/dogtags/stringtable.xml @@ -9,6 +9,7 @@ ドッグ タグ Hundemarke 군번줄 + Plaque d'identification Check Dog Tag @@ -18,6 +19,7 @@ ドッグ タグを見る Hundemarke prüfen 군번줄 확인 + Vérifier les plaques d'identification Check @@ -27,6 +29,7 @@ 見る Prüfen 확인 + Vérifier Take @@ -36,6 +39,7 @@ 取る Nehmen 회수 + Prendre Dogtag taken from %1... @@ -45,6 +49,7 @@ %1からドッグ タグを取っている・・・ Hundemarke von %1 genommen ... %1로부터 군번줄을 회수했습니다... + Plaque d'identification pris sur %1... Somebody else has already taken the dogtag... @@ -54,6 +59,8 @@ すでに誰かがドッグ タグを取っているようだ・・・ Jemand anderes hat bereits die Hundemarke genommen ... 누군가 이미 군번줄을 회수해갔습니다... + Quelqu'un d'autre a déjâ pris les plaques d'identification... + diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index d4ba515406..9b9296d3d4 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -882,6 +882,7 @@ Flara na linkę Stolperdraht-Leuchtrakete 조명지뢰 + Fusée éclairante avec fil de détente Type: Tripwire flare - Ignites a non-lethal flare when triggered.<br />Rounds: 1<br />Used on: Ground @@ -890,6 +891,7 @@ Typ: Flara na linkę - Wystrzeliwuje nieszkodliwą flarę przy nadepnięciu linki.<br/>Pociski: 1<br/>Używane na: ziemia Typ: Stolperdraht-Leuchtrakete - Schießt bei Auslösung eine nicht-tödliche Leuchtrakete ab.<br />Ladungen: 1<br />Benutzt auf: Boden 종류: 조명지뢰 - 작동시 무해한 조명을 사출합니다.<br />장탄수: 1<br />사용처: 지면 + Type : Fusée éclairante avec fil de détente - Allume une fusée éclairante lorsque déclenché. <br />Coups : 1<br />Utilisé sur : le sol diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 5221af0651..8429cad3b3 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -172,7 +172,7 @@ (nur SP) Splitter-/Explosions-Debugging (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. - (SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement + (SP seulement) Requiert un redémarrage de mission ou de l'éditeur. Active les traceurs visuels de fragmentation et d'éclats en mode solo seulement. (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. (Solo SP) Richiede un restart editor/missione. Abilita il tracciamento visivo di schegge da frammentazione/spalling in modalità Giocatore Singolo. diff --git a/addons/goggles/stringtable.xml b/addons/goggles/stringtable.xml index c268ec3ab6..6d37b00e21 100644 --- a/addons/goggles/stringtable.xml +++ b/addons/goggles/stringtable.xml @@ -36,6 +36,7 @@ Efekty gogli Brilleneffekt 고글 효과 + Effets des lunettes Tint @@ -44,6 +45,7 @@ Winieta Tönung 색조 + Teinte Tint + Effects @@ -52,6 +54,8 @@ Winieta + Efekty Tönung + Effekte 색조+효과 + Teinte + effets + diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index 55f80563e4..cbabdd01b2 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -302,6 +302,7 @@ AN-M14 焼夷手榴弾 Granat zapalający AN-M14 AN-M14 소이 수류탄 + Grenade incendiaire AN-M14 AN-M14 @@ -310,6 +311,7 @@ AN-M14 AN-M14 AN-M14 + AN-M14 Incendiary grenade used to destroy weapons, ammunition and other equipment. @@ -318,6 +320,7 @@ 焼夷手榴弾は武器や弾薬箱などの装備を破壊するために使われます。 Granat zapalający, używany do niszczenia broni, amunicji i innego sprzętu. 소이 수류탄은 무기나 탄약 그리고 장비를 파괴할때 쓰입니다. + Grenade incendiaire utilisé pour détruire des armes, munitions et autres équipements. diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index e730fc89ae..c421891f49 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -49,7 +49,7 @@ Hełmy Copricapi Cascos - Couvre-chefs + Couvre-chefs Capacetes Головные уборы ヘッドギア diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index f9d77f80ca..261d7a0687 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -4,7 +4,7 @@ Direction: %1° Drehung: %1° - Direction: %1° + Direction : %1° Směr: %1° Kierunek: %1° Dirección: %1° @@ -16,4 +16,4 @@ 방위: %1° - + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 8f372bef4b..8513eb71d1 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -4068,7 +4068,7 @@ Wo kann das Erste-Hilfe-Set verwendet werden? Kde může být použita osobní lékárnička (PAK)? Onde o kit de primeiros socorros pode ser utilizado? - Où le Kit de Premier Secour peut être utilisé + Où le Kit de Premier Secour peut être utilisé ? Hol lehet az elsősegélycsomagot használni? Dove può essere usato il Kit Pronto Soccorso? どこでも応急処置キットをつかえるようにしますか? @@ -4093,7 +4093,7 @@ Wann kann das Erste-Hilfe-Set verwendet werden? Kdy může být použita osobní lékárnička? ¿Cuando se puede utilizar el Equipo de primeros auxilios? - Quand peut être utilisé le Kit de Premier Secours + Quand peut être utilisé le Kit de Premier Secours ? Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? Mikor lehet az elsősegélycsomagot használni? Onde o kit de primeiros socorros pode ser utilizado? @@ -4110,7 +4110,7 @@ Überall Kdekoliv Qualquer lugar - PArtout + Partout Akárhol Ovunque どこでも @@ -4456,7 +4456,7 @@ Aktiviert das Sanitätssystem für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. Proporciona um sistema médico para jogadores e IA. - Fourni un sytème médical pour les joueurs et les IAs + Fourni un sytème médical pour les joueurs et les IA. Egy orvosi rendszert ad játékosok és AI-k számára. Fornisce un sistema medico sia per giocatori che IA プレイヤーと AI の両方へ医療システムを提供します。 @@ -4498,7 +4498,7 @@ Aufzählung von Einheiten, die als Sanitäter gelten. Werden durch Kommata getrennt. Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. - Liste d'unité qui seront listées comme infirmier, séparation par virgule + Liste d'unité qui seront listées comme infirmier, séparation par virgule. Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. Lista di nomi unità che verranno classificati come medici, separati da virgole. 衛生兵として設定されるユニット名を一覧で指定でき、コンマで区切りを付けられます。 @@ -4694,7 +4694,7 @@ Setze medizinische Einrichtung [ACE] Určit zdravotnické zařízení [ACE] Definir instalação médica [ACE] - Définir comme équipement médical [ACE] + Définir comme installation médical [ACE] Orvosi létesítmény beállítása [ACE] Imposta Struttura Medica [ACE] 医療施設として設定 [ACE] @@ -4708,7 +4708,7 @@ Ist eine medizinische Einrichtung Zdravotnické zařízení É uma instalação médica - Est un équipement médical + Est une installation médical Orvosi létesítmény-e E' Struttura Medica 医療施設として @@ -4722,7 +4722,7 @@ Definiert ein Objekt als medizinische Einrichtung Registruje objekt jako zdravotnické zařízení Registra um objeto como instalacão médica - Enregistrer un objet comme un équipement médical + Enregistrer un objet comme une installation médical Egy objektum orvosi létesítményként való regisztrálása Registra un oggetto come struttura medica オブジェクトを医療施設として割り当てる @@ -4736,7 +4736,7 @@ Definiert ein Objekt als medizinische Einrichtung. Hier werden weitere, tiefgreifende Behandlungen ermöglicht. Kann Fahrzeugen oder Gebäuden zugewiesen werden. Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. - Définir un objet comme équipement médical. Cela permet les traitements avancés. Peut être utilisé sur les batiments et les véhicules + Définir un objet comme installation médical. Cela permet les traitements avancés. Peut être utilisé sur les batiments et les véhicules Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. Definisce un oggetto come struttura medica. Questo permette cure più avanzate. Può essere usato su edifici e veicoli. オブジェクトを医療施設として割り当てます。割り当てられた場合、より高度な治療が可能になり、建物と車両へつかえます。 @@ -4882,7 +4882,7 @@ Ritarda il cessate il fuoco dell'IA quando il giocatore è svenuto per motivi medici. Prodleva zastavení palby pro AI, pokud je hráč v bezvědomí ze zdravotních důvodů. Atraso durante cessar fogo da AI durante inconsciência médica - Délai de cessez le feu pour l'IA pendant que le joueur est inconscient pour des raisons médicales + Délai de cessez le feu pour l'IA pendant que le joueur est inconscient pour des raisons médicales. Задержка прекращения огня ботами, когда игрок теряет сознание по медицинским причинам. AI はプレイヤーが医療的な理由で気絶している場合にかぎり、撃つのをためらいます。 Opóźnij stan wstrzymania ognia u AI kiedy gracz jest nieprzytomny z powodów medycznych. diff --git a/addons/medical_ai/stringtable.xml b/addons/medical_ai/stringtable.xml index b3dc75dce6..c7eba9b03a 100644 --- a/addons/medical_ai/stringtable.xml +++ b/addons/medical_ai/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -8,6 +8,7 @@ Нур сервера унд HC サーバーと HC のみ Tylko serwer i HC + Seulement sur le server ou le HC diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 36c5a6a182..79f0e1b8b9 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -318,7 +318,7 @@ Wähle Kopf Выбрать голову Seleccionar Cabeza - Selectioner Tête + Selectioner la tête Wybierz głowę Selecionar Cabeça Vybrat Hlavu @@ -331,7 +331,7 @@ Wähle Torso Выбрать торс Seleccionar Torso - Selectioner Torse + Selectioner le torse Wybierz tors Selecionar Torso Vybrat Trup @@ -344,7 +344,7 @@ Wähle linken Arm Выбрать левую руку Seleccionar Brazo Izquierdo - Selectioner Bras Gauche + Selectioner le bras gauche Wybierz lewą rękę Selecionar Braço Esquerdo Vybrat Levou ruku @@ -357,7 +357,7 @@ Wähle rechten Arm Выбрать правую руку Seleccionar Brazo Derecho - Selectioner Bras Droit + Selectioner le bras droit Wybierz prawą rękę Selecionar Braço Direito Vybrat Pravou ruku @@ -370,7 +370,7 @@ Wähle linkes Bein Выбрать левую ногу Seleccionar Pierna Izquierda - Selectioner Jambe Gauche + Selectioner la jambe gauche Wybierz lewą nogę Selecionar Perna Esquerda Vybrat Levou nohu @@ -383,7 +383,7 @@ Wähle rechtes Bein Выбрать правую ногу Seleccionar Pierna Derecha - Selectioner Jambe Droite + Selectioner la jambe droite Wybierz prawą nogę Selecionar Perna Direita Vybrat Pravou nohu @@ -422,7 +422,7 @@ Linker Arm Левая рука Brazo Izquierdo - Bras Gauche + Bras gauche Lewa ręka Braço Esquerdo Levá Ruka @@ -435,7 +435,7 @@ Rechter Arm Правая рука Brazo Derecho - Bras Droit + Bras droit Prawa ręka Braço Direito Pravá Ruka @@ -448,7 +448,7 @@ Linkes Bein Левая нога Pierna Izquierda - Jambe Gauche + Jambe gauche Lewa noga Perna Esquerda Levá Noha @@ -461,7 +461,7 @@ Rechtes Bein Правая нога Pierna Derecha - Jambe Droite + Jambe droite Prawa noga Perna Direita Pravá Noha @@ -474,7 +474,7 @@ Körperteil: %1 Часть тела: %1 Parte del cuerpo: %1 - Partie du corps: %1 + Partie du corps : %1 Część ciała: %1 Parte do corpo: %1 Část těla: %1 @@ -526,7 +526,7 @@ Er hat %2 offene Wunden (%1) %2 открытые раны %1 Hay %2 Heridas Abiertas %1 - Il y a %2 %1 Blessure(s) Ouverte(s) + Il y a %2 %1 blessure(s) ouverte(s) Widzisz otwarte rany w ilości %2 o %1 rozmiarze Existem %2 ferimentos abertos %1 Jsou zde %2 %1 otevřené rány @@ -552,7 +552,7 @@ Er hat eine zum Teil offene Wunde (%1) Частично открытая рана %1 Hay una herida parcial abierta %1 - Il y a une Blessure Patiellement Ouverte %1 + Il y a une blessure partiellement ouverte %1 Widzisz częściowo otwartą ranę o %1 rozmiarze Existe um ferimento parcial aberto %1 Je zde částečně %1 otevřená rána @@ -565,7 +565,7 @@ Er hat %2 verbundene Wunden (%1) %2 перевязанные раны %1 Hay %2 Heridas %1 Vendadas - Il y a %2 %1 Blessure(s) Bandée(s) + Il y a %2 %1 blessure(s) bandée(s) Widzisz %2 zabandażowanych ran o %1 rozmiarze Existem %2 ferimentos %1 tratados Jsou zde %2 %1 ovázané rány @@ -578,7 +578,7 @@ Er hat 1 verbundene Wunde (%1) 1 перевязанная рана %1 Hay 1 Herida Vendada %1 - Il y a 1 %1 Blessure Bandée + Il y a 1 %1 blessure bandée Widzisz 1 zabandażowaną ranę o %1 rozmiarze Existe 1 ferimento %1 tratado Je zde 1 %1 ovázaná rána @@ -591,7 +591,7 @@ Er hat eine zum Teil verbundene Wunde (%1) Частично перевязанная рана %1 Hay una Herida parcial %1 Vendada - Il y a %1 Blessure Partielment Bandée + Il y a %1 blessure partiellement bandée Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze Existe um ferimento parcial tratado %1 Je zde částěčně %1 ovázaná rána @@ -682,7 +682,7 @@ hat sehr viel Blut verloren Большая кровопотеря Mucha Sangre perdida - A Perdu Bcp de Sang + A perdu beaucoup de sang Stracił dużo krwi Perdeu muito sangue Ztratil hodně krve diff --git a/addons/minedetector/stringtable.xml b/addons/minedetector/stringtable.xml index a9aa235f18..14ff729334 100644 --- a/addons/minedetector/stringtable.xml +++ b/addons/minedetector/stringtable.xml @@ -49,6 +49,7 @@ Podłącz słuchawki Kopfhörer verbinden 헤드폰에 연결 + Connecter les écouteurs Disconnect Headphones @@ -58,6 +59,7 @@ Odłącz słuchawki Kopfhörer trennen 헤드폰 연결끊기 + Déconnecter les écouteurs Headphones Connected @@ -67,6 +69,7 @@ Słuchawki podpięte Kopfhörer verbunden 헤드폰 연결됨 + Écouteurs connectés Headphones Disconnected @@ -76,6 +79,8 @@ Słuchawki odpięte Kopfhörer getrennt 헤드폰 연결끊김 + Écouteurs déconnectés + diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml index a160b498c1..9d7c5d219d 100644 --- a/addons/movement/stringtable.xml +++ b/addons/movement/stringtable.xml @@ -19,7 +19,7 @@ Weight: Gewicht: Peso: - Poids: + Poids : Waga: Váha: Peso: @@ -57,4 +57,4 @@ ここは登れない - + \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 68b3cec90b..628384bc19 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -468,6 +468,7 @@ 画面端では非表示 Ukryj na brzegach ekranu 화면 가장자리에서 사라짐 + Estomper sur les bords de l'écran diff --git a/addons/tagging/stringtable.xml b/addons/tagging/stringtable.xml index dbccdfd355..8b0782c32e 100644 --- a/addons/tagging/stringtable.xml +++ b/addons/tagging/stringtable.xml @@ -8,6 +8,7 @@ Tagowanie Markierungssystem 뿌리기 + Marquage Configure how the tagging system will operate by default. @@ -16,6 +17,7 @@ Skonfiguruj zachowanie systemu tagowania. Konfiguriert, wie das Markierungssystem standardmäßig funktioniert. 뿌리기 시스템의 기본사항을 설정합니다. + Configure le fonctionnement par défaut du système de marquage. Quick Tag @@ -24,6 +26,7 @@ Szybkie tagowanie Schnelle Markierung 빠른 뿌리기 + Marquage rapide Action performed on main tag interaction point. @@ -32,6 +35,7 @@ Akcja wykonywana na głównym punkcie interakcji tagu. Aktion, die am Haupt-Interaktionspunkt ausgeführt werden soll. 이 동작은 상호작용에서 뿌리기를 할 수 있게 해준다 + Action réalisé au point de marquage principal. Last Used @@ -40,6 +44,7 @@ Ostatnio użyte Zuletzt benutzt 최근 사용 + Dernier utilisé Random X @@ -48,6 +53,7 @@ Losowy X Zufällig X 무작위 X + Aléatoire X Random @@ -56,6 +62,7 @@ Losowy Zufällig 무작위 + Aléatoire Tag @@ -63,6 +70,8 @@ Marcar Taguj Tag + Oznakuj + Marque Marca Označit Marcar @@ -179,7 +188,7 @@ Eine Farbsprühdose um Wände zu markieren. Lata de pintura en aerosol para marcar. Farba w sprayu, służy do oznakowywania terenu. - Un spray de peinture pour taguer les murs. + Un spray de peinture pour marquer les murs. Una bomboletta di spay per contrassegnare i muri. Plechovka se sprejem k vytváření značek. Uma lata de tinta spray para marcar paredes. @@ -189,3 +198,4 @@ + diff --git a/addons/ui/stringtable.xml b/addons/ui/stringtable.xml index f567ab8e9c..e13c38f6df 100644 --- a/addons/ui/stringtable.xml +++ b/addons/ui/stringtable.xml @@ -443,7 +443,7 @@ Cannot modify a forced User Interface element. Não é possível modificar um elemento forçado da interface do usuário. - Impossible de modifier un élément de l'interface utilisateur forcé + Impossible de modifier un élément de l'interface utilisateur forcé. Невозможно изменить зафиксированный элемент пользовательского интерфейса. ユーザー インタフェイス要素は変更できません。 Nie można modyfikować wymuszonego elementu interfejsu użytkownika. diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 29e24f6476..c55371a41c 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -22,7 +22,7 @@ Poskytuje kontrolu na různými aspekty Zeuse. Bietet die Steuerung verschiedener Zeus-Optionen an. Proporciona controle sobre diversos aspectos do Zeus. - Fourni le contrôle des différents aspects de Zeus + Fourni le contrôle des différents aspects de Zeus. Különböző beállítási lehetőségeket biztosít a Zeus részeihez. Позволяет контролировать различные аспекты Зевса. Fornisce controllo su vari aspetti di Zeus. @@ -50,7 +50,7 @@ Zobrazit globální zprávu když je hráč přiřazen jako Zeus. Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. - Affiche un message global quand un joueur est assigné en tant que Zeus + Affiche un message global quand un joueur est assigné en tant que Zeus. Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом. Mostra messaggi popup globali quando un giocatore viene assegnato come Zeus. @@ -106,7 +106,7 @@ Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. - Joue des bruits de vent quand Zeus controle une unité + Joue des bruits de vent quand Zeus controle une unité. Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. Проигрывает звук ветра каждый раз, когда Зевс вселяется в юнита. Esegui rumori di vento quando Zeus controlla un'unità in remoto. @@ -134,7 +134,7 @@ Přehrát varování (rádio) když Zeus použije dělostřelectvo. Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. Reproduz uma aviso via rádio quando o Zeus usa um explosivo. - Joue un son radio quand le Zeus utilise du matériel militaire + Joue un son radio quand le Zeus utilise du matériel militaire. Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. Проигрывает звук радио каждый раз, когда Зевс использует артиллерию. Esegui un messaggio radio quando Zeus usa esplosivi. @@ -162,7 +162,7 @@ Odhalí miny pro spojence a umístnit jejich značku na mapu. Melde Minen gegenüber Verbündeten und platziere entsprechende Kartenmarkierungen. Revelar minas para aliados e colocar marcadores no mapa. - Révéler les mines et placer un marqueur sur la carte + Révéler les mines et placer un marqueur sur la carte. Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. Показывает мины союзникам и отмечает их маркерами на карте. Rivela mine ad alleati e piazza marcatori in mappa. @@ -293,7 +293,7 @@ Changes: aimingAccuracy - Change: aimingAccuracy + Change : aimingAccuracy Изменяет: aimingAccuracy Upravuje: aimingAccuracy 変更:aimingAccuracy @@ -313,7 +313,7 @@ Changes: aimingShake, aimingSpeed, reloadSpeed - Change: aimingShake, aimingSpeed, reloadSpeed + Change : aimingShake, aimingSpeed, reloadSpeed Изменяет: aimingShake, aimingSpeed, reloadSpeed Upravuje: aimingShake, aimingSpeed, reloadSpeed 変更:aimingShake, aimingSpeed, reloadSpeed @@ -323,7 +323,7 @@ Spotting - repérage + Repérage Обнаружение Vnímavost 索敵 @@ -333,7 +333,7 @@ Changes: spotDistance, spotTime - Change: spotDistance, spotTime + Change : spotDistance, spotTime Изменяет: spotDistance, spotTime Upravuje: spotDistance, spotTime 変更:spotDistance, spotTime @@ -343,7 +343,7 @@ Seek Cover - Chercher couverture + Chercher des couvertures Поиск укрытий Vyhledávat krytí 遮蔽 @@ -353,7 +353,7 @@ Should AI seek cover - L'IA devrait elle chercher couverture + L'IA devrait elle chercher des couvertures Должны ли боты искать укрытия AI se bude snažit vyhledávat krytí AI は遮蔽を取るようになります @@ -758,7 +758,7 @@ Cargo: - Cargo: + Cargo : Груз: Náklad: カーゴ: @@ -805,7 +805,7 @@ Invalid radius entered - rayon invalide entré + Rayon invalide entré Введен неправильный радиус Vložen neplatný parametr 無効な半径が入力されました diff --git a/optionals/compat_adr_97/stringtable.xml b/optionals/compat_adr_97/stringtable.xml index a584de2e16..895734fd9b 100644 --- a/optionals/compat_adr_97/stringtable.xml +++ b/optionals/compat_adr_97/stringtable.xml @@ -226,7 +226,7 @@ Caliber: 5.7mm<br />Rounds: 50<br />Used in: P90 Kaliber: 5,7mm<br />Patronen: 50<br />Eingesetzt von: P90 Kaliber: 5,7mm<br />Pociski: 50<br />Używany w: P90 - Calibre: 5.7mm<br />Cartouches: 50<br />Utilisé avec: P90 + Calibre : 5,7mm<br />Cartouches : 50<br />Utilisé avec : P90 Calibre: 5.7mm<br />Balas: 50<br />Se usa en: P90 Калибр: 5,7 мм<br />Патронов: 50<br />Используются с: P90 Calibro: 5.7mm<br />Munizioni: 50<br />In uso su: P90 From 036bb0ecd466edc3af70587910801b3aa04c4969 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 14 Feb 2017 10:54:21 -0600 Subject: [PATCH 28/37] Use createSimpleObject to create tags (#4892) --- addons/tagging/functions/fnc_createTag.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/tagging/functions/fnc_createTag.sqf b/addons/tagging/functions/fnc_createTag.sqf index 87c9ff13f9..c579c6e05f 100644 --- a/addons/tagging/functions/fnc_createTag.sqf +++ b/addons/tagging/functions/fnc_createTag.sqf @@ -28,9 +28,8 @@ if (_texture == "") exitWith { false }; -private _tag = "UserTexture1m_F" createVehicle [0,0,0]; +private _tag = createSimpleObject ["UserTexture1m_F", _tagPosASL]; _tag setObjectTextureGlobal [0, _texture]; -_tag setPosASL _tagPosASL; _tag setVectorDirAndUp _vectorDirAndUp; // Throw a global event for mision makers From dfca4fdcf8234e8a634e736fc8bf3da7774be17c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 14 Feb 2017 10:54:37 -0600 Subject: [PATCH 29/37] Pass functions by "reference" to bis event handlers (#4898) * Pass functions by "reference" to bis event handlers * Add Doc * Fix --- addons/concertina_wire/XEH_init.sqf | 2 +- addons/hearing/XEH_postInit.sqf | 6 +++--- addons/interact_menu/XEH_clientInit.sqf | 2 +- addons/laserpointer/XEH_postInit.sqf | 2 +- addons/spectator/functions/fnc_handleInterface.sqf | 2 +- docs/wiki/development/coding-guidelines.md | 9 +++++++++ 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/addons/concertina_wire/XEH_init.sqf b/addons/concertina_wire/XEH_init.sqf index dc6424f172..b24353b4df 100644 --- a/addons/concertina_wire/XEH_init.sqf +++ b/addons/concertina_wire/XEH_init.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" params ["_wire"]; -_wire addEventHandler ["HandleDamage", FUNC(handleDamage)]; +_wire addEventHandler ["HandleDamage", {call FUNC(handleDamage)}]; diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index 19be45f3c3..cd2a5aec16 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -35,7 +35,7 @@ GVAR(lastPlayerVehicle) = objNull; TRACE_2("removed veh eh",_firedEH,GVAR(lastPlayerVehicle)); }; if ((!isNull _vehicle) && {_player != _vehicle}) then { - private _firedEH = _vehicle addEventHandler ["FiredNear", LINKFUNC(firedNear)]; + private _firedEH = _vehicle addEventHandler ["FiredNear", {call FUNC(firedNear)}]; _vehicle setVariable [QGVAR(firedEH), _firedEH]; GVAR(lastPlayerVehicle) = _vehicle; TRACE_2("added veh eh",_firedEH,GVAR(lastPlayerVehicle)); @@ -60,9 +60,9 @@ GVAR(lastPlayerVehicle) = objNull; }; // Don't add a new EH if the unit respawned if ((_player getVariable [QGVAR(firedEH), -1]) == -1) then { - private _firedEH = _player addEventHandler ["FiredNear", LINKFUNC(firedNear)]; + private _firedEH = _player addEventHandler ["FiredNear", {call FUNC(firedNear)}]; _player setVariable [QGVAR(firedEH), _firedEH]; - private _explosionEH = _player addEventHandler ["Explosion", LINKFUNC(explosionNear)]; + private _explosionEH = _player addEventHandler ["Explosion", {call FUNC(explosionNear)}]; _player setVariable [QGVAR(explosionEH), _explosionEH]; TRACE_3("added unit eh",_player,_firedEH,_explosionEH); }; diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 0d280506b3..7e82e2c160 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -21,7 +21,7 @@ GVAR(ParsedTextCached) = []; //Setup text/shadow/size/color settings matrix [] call FUNC(setupTextColors); // Install the render EH on the main display - addMissionEventHandler ["Draw3D", DFUNC(render)]; + addMissionEventHandler ["Draw3D", {call FUNC(render)}]; }] call CBA_fnc_addEventHandler; //Add Actions to Houses: diff --git a/addons/laserpointer/XEH_postInit.sqf b/addons/laserpointer/XEH_postInit.sqf index f80a4494e0..1a5a2df597 100644 --- a/addons/laserpointer/XEH_postInit.sqf +++ b/addons/laserpointer/XEH_postInit.sqf @@ -77,5 +77,5 @@ GVAR(greenLaserUnits) = []; _unit call _fnc_processUnit; }, 0.1, _fnc_processUnit] call CBA_fnc_addPerFrameHandler; - addMissionEventHandler ["Draw3D", FUNC(onDraw)]; + addMissionEventHandler ["Draw3D", {call FUNC(onDraw)}]; }] call CBA_fnc_addEventHandler; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index e5bb7498e0..9ba64ec0f0 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -34,7 +34,7 @@ switch (toLower _mode) do { [FUNC(handleUnits), 9, _display] call CBA_fnc_addPerFrameHandler; // Handle 3D unit icons - GVAR(iconHandler) = addMissionEventHandler ["Draw3D",FUNC(handleIcons)]; + GVAR(iconHandler) = addMissionEventHandler ["Draw3D", {call FUNC(handleIcons)}]; // Populate the help window private _help = (_display displayCtrl IDC_HELP) controlsGroupCtrl IDC_HELP_LIST; diff --git a/docs/wiki/development/coding-guidelines.md b/docs/wiki/development/coding-guidelines.md index b4f844a8e4..81cf20eff4 100644 --- a/docs/wiki/development/coding-guidelines.md +++ b/docs/wiki/development/coding-guidelines.md @@ -590,6 +590,15 @@ Event handlers in ACE3 are implemented through the CBA event system (ACE3's own More information on the [CBA Events System](https://github.com/CBATeam/CBA_A3/wiki/Custom-Events-System){:target="_blank"} and [CBA Player Events](https://github.com/CBATeam/CBA_A3/wiki/Player-Events){:target="_blank"} pages. +
+
Warning about BIS event handlers:
+

BIS's event handlers (`addEventHandler`, `addMissionEventHandler`) are slow when passing a large code variable. Use a short code block that calls the function you want.

+ ```js + player addEventHandler ["Fired", FUNC(handleFired)]; // bad + player addEventHandler ["Fired", {call FUNC(handleFired)}]; // good + ``` +
+ ### 7.4 Hashes When a key value pair is required, make use of the hash implementation from ACE3. From df693d69b660978c27d9df45077c3313b5f6fe12 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 14 Feb 2017 21:12:02 +0100 Subject: [PATCH 30/37] Prepare v3.9.0 release --- addons/main/script_version.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_version.hpp b/addons/main/script_version.hpp index ed55245429..9b3aef92a4 100644 --- a/addons/main/script_version.hpp +++ b/addons/main/script_version.hpp @@ -1,4 +1,4 @@ #define MAJOR 3 #define MINOR 9 #define PATCHLVL 0 -#define BUILD 15 +#define BUILD 16 From 2fddfcc1c8ce01e94794a8c03ab079ae85ae336b Mon Sep 17 00:00:00 2001 From: bux Date: Tue, 14 Feb 2017 22:47:01 +0100 Subject: [PATCH 31/37] Update _config.yml --- docs/_config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_config.yml b/docs/_config.yml index 81a93be7d3..ca8c6b936a 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -8,9 +8,9 @@ ace: githubUrl: https://github.com/acemod/ACE3 version: major: 3 - minor: 8 - patch: 3 - build: 14 + minor: 9 + patch: 0 + build: 15 acex: githubUrl: https://github.com/acemod/ACEX From ad23be5c5c7b5c2a314fba3205579bc27534cb29 Mon Sep 17 00:00:00 2001 From: bux Date: Tue, 14 Feb 2017 22:50:33 +0100 Subject: [PATCH 32/37] Update _config.yml --- docs/_config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_config.yml b/docs/_config.yml index ca8c6b936a..24cd47f070 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -10,7 +10,7 @@ ace: major: 3 minor: 9 patch: 0 - build: 15 + build: 16 acex: githubUrl: https://github.com/acemod/ACEX From 1d978c45bf82b9fcd56e82921cfc92dac0d86a7b Mon Sep 17 00:00:00 2001 From: bux Date: Tue, 14 Feb 2017 22:50:46 +0100 Subject: [PATCH 33/37] Update _config_dev.yml --- docs/_config_dev.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_config_dev.yml b/docs/_config_dev.yml index 7d55c24cf2..66c4dfb7e1 100644 --- a/docs/_config_dev.yml +++ b/docs/_config_dev.yml @@ -10,9 +10,9 @@ ace: githubUrl: https://github.com/acemod/ACE3 version: major: 3 - minor: 8 - patch: 3 - build: 14 + minor: 9 + patch: 0 + build: 16 acex: githubUrl: https://github.com/acemod/ACEX From 19d5fa0a4e2606ba5fe12b1c71293a772a028bc6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 14 Feb 2017 23:53:35 +0100 Subject: [PATCH 34/37] Update CBA required version (#4899) * prep v3.9.0 * Update required CBA version --- addons/main/script_mod.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 78fcc0c665..32a78372b0 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -10,7 +10,7 @@ // MINIMAL required version for the Mod. Components can specify others.. #define REQUIRED_VERSION 1.64 -#define REQUIRED_CBA_VERSION {3,1,1} +#define REQUIRED_CBA_VERSION {3,1,2} #ifdef COMPONENT_BEAUTIFIED #define COMPONENT_NAME QUOTE(ACE3 - COMPONENT_BEAUTIFIED) From 9d128152a32abc594eaf6a3a0aabdce5544febaa Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 16 Feb 2017 10:16:46 -0600 Subject: [PATCH 35/37] Hide earplug actions if setting disabled (#4913) * Hide earplug actions if setting disabled * Add lines that are new --- addons/hearing/CfgVehicles.hpp | 4 ++-- addons/hearing/functions/fnc_putInEarplugs.sqf | 2 ++ addons/hearing/functions/fnc_removeEarplugs.sqf | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 760ed95a03..f44e50e6d0 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_Equipment { class ACE_PutInEarplugs { displayName = CSTRING(EarPlugs_On); - condition = QUOTE( !([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player} ); + condition = QUOTE(GVAR(EnableCombatDeafness) && {!([_player] call FUNC(hasEarPlugsIn)) && {'ACE_EarPlugs' in items _player}}); exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [_player] call FUNC(putInEarPlugs) ); showDisabled = 0; @@ -14,7 +14,7 @@ class CfgVehicles { }; class ACE_RemoveEarplugs { displayName = CSTRING(EarPlugs_Off); - condition = QUOTE( [_player] call FUNC(hasEarPlugsIn) ); + condition = QUOTE( GVAR(EnableCombatDeafness) && {[_player] call FUNC(hasEarPlugsIn)}); exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE( [_player] call FUNC(removeEarPlugs) ); showDisabled = 0; diff --git a/addons/hearing/functions/fnc_putInEarplugs.sqf b/addons/hearing/functions/fnc_putInEarplugs.sqf index 90fe8d62ac..4075a982db 100644 --- a/addons/hearing/functions/fnc_putInEarplugs.sqf +++ b/addons/hearing/functions/fnc_putInEarplugs.sqf @@ -17,6 +17,8 @@ params ["_player"]; +if (!GVAR(EnableCombatDeafness)) exitWith {}; + // Plugs in inventory, putting them in _player removeItem "ACE_EarPlugs"; diff --git a/addons/hearing/functions/fnc_removeEarplugs.sqf b/addons/hearing/functions/fnc_removeEarplugs.sqf index 3154230ecf..20bc7b8dcc 100644 --- a/addons/hearing/functions/fnc_removeEarplugs.sqf +++ b/addons/hearing/functions/fnc_removeEarplugs.sqf @@ -17,6 +17,8 @@ params ["_player"]; +if (!GVAR(EnableCombatDeafness)) exitWith {}; + if !(_player canAdd "ACE_EarPlugs") exitWith { // inventory full [localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured); }; From 0900bf964b29adb59417255a1520aecc9592fd1a Mon Sep 17 00:00:00 2001 From: Mark Ruffner Date: Sat, 18 Feb 2017 12:27:36 -0600 Subject: [PATCH 36/37] Medical/Repair 3den Toolbox State Fix (Bug fix for #4902) (#4905) * Update medical/repair 3den away from missionNamespace * Simplify save --- addons/medical/CfgEden.hpp | 7 +++---- addons/repair/CfgEden.hpp | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/addons/medical/CfgEden.hpp b/addons/medical/CfgEden.hpp index 9579f29c61..bebfdb9549 100644 --- a/addons/medical/CfgEden.hpp +++ b/addons/medical/CfgEden.hpp @@ -9,8 +9,8 @@ class Cfg3DEN { }; }; class GVAR(isMedicControl): Title { - attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);"; - attributeSave = "(missionnamespace getvariable ['ace_isMedic_temp',0]) - 1;"; + attributeLoad = "(_this controlsGroupCtrl 100) lbSetCurSel (((_value + 1) min 3) max 0);"; + attributeSave = "(lbCurSel (_this controlsGroupCtrl 100)) - 1"; class Controls: Controls { class Title: Title{}; class Value: ctrlToolbox { @@ -22,7 +22,6 @@ class Cfg3DEN { rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignMedicRoles_role_none), CSTRING(AssignMedicRoles_role_medic), CSTRING(AssignMedicRoles_role_doctorShort)}; - onToolboxSelChanged = "missionnamespace setvariable ['ace_isMedic_temp',_this select 1];"; }; }; }; @@ -36,7 +35,7 @@ class Cfg3DEN { control = QGVAR(isMedicControl); displayName = CSTRING(AssignMedicRoles_role_DisplayName); tooltip = CSTRING(Attributes_isMedic_Description); - expression = QUOTE(if (_value != -1) then {_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];};); + expression = QUOTE(if (_value > -1) then {_this setVariable [ARR_3(QUOTE(QGVAR(medicClass)),_value, true)];};); typeName = "NUMBER"; condition = "objectBrain"; defaultValue = "-1"; diff --git a/addons/repair/CfgEden.hpp b/addons/repair/CfgEden.hpp index eb7933fee4..c11f0b96b8 100644 --- a/addons/repair/CfgEden.hpp +++ b/addons/repair/CfgEden.hpp @@ -9,8 +9,8 @@ class Cfg3DEN { }; }; class GVAR(isEngineerControl): Title { - attributeLoad = "(_this controlsGroupCtrl 100) lbsetcursel (((_value + 1) min 3) max 0);"; - attributeSave = "(missionnamespace getvariable ['ace_isEng_temp',0]) - 1;"; + attributeLoad = "(_this controlsGroupCtrl 100) lbSetCurSel (((_value + 1) min 3) max 0);"; + attributeSave = "(lbCurSel (_this controlsGroupCtrl 100)) - 1"; class Controls: Controls { class Title: Title{}; class Value: ctrlToolbox { @@ -22,7 +22,6 @@ class Cfg3DEN { rows = 1; columns = 4; strings[] = {"$STR_3DEN_Attributes_Lock_Default_text", CSTRING(AssignEngineerRole_role_none), CSTRING(AssignEngineerRole_role_engineer), CSTRING(AssignEngineerRole_role_specialist)}; - onToolboxSelChanged = "missionnamespace setvariable ['ace_isEng_temp',_this select 1];"; }; }; }; From 0d4aa8197aff237fd747528055109c47f7e16357 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 18 Feb 2017 18:22:23 -0600 Subject: [PATCH 37/37] Fix moved KR wounds strings --- addons/medical_damage/stringtable.xml | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/addons/medical_damage/stringtable.xml b/addons/medical_damage/stringtable.xml index 27320b0630..d721bc2e89 100644 --- a/addons/medical_damage/stringtable.xml +++ b/addons/medical_damage/stringtable.xml @@ -13,6 +13,7 @@ Raspão Odřenina 擦り傷 + 긁힘
Minor Scrape @@ -26,6 +27,7 @@ Raspão leve Malá odřenina 小さな擦り傷 + 조금 긁힘 Medium Scrape @@ -39,6 +41,7 @@ Raspão médio Středně velká odřenina 中くらいの擦り傷 + 꽤 긁힘 Large Scrape @@ -52,6 +55,7 @@ Raspão grave Velká odřenina 大きな擦り傷 + 심하게 긁힘 Avulsion @@ -65,6 +69,7 @@ Avulsão Avulze 剥離傷 + 떨어져나감 Minor Avulsion @@ -78,6 +83,7 @@ Avulsão leve Malá avulze 小さな剥離傷 + 조금 떨어져나감 Medium Avulsion @@ -91,6 +97,7 @@ Avulsão média Střední avulze 中くらいの剥離傷 + 꽤 떨어져나감 Large Avulsion @@ -104,6 +111,7 @@ Avulsão grave Velká avulze 大きな剥離傷 + 크게 떨어져나감 Bruise @@ -117,6 +125,7 @@ Contusão Modřina 打ち傷 + Minor Bruise @@ -130,6 +139,7 @@ Contusão leve Malá modřina 小さな打ち傷 + 조금 멍듬 Medium Bruise @@ -143,6 +153,7 @@ Contusão média Středně velká modřina 中くらいの打ち傷 + 꽤 멍듬 Large Bruise @@ -156,6 +167,7 @@ Contusão grave Velká modřina 大きな打撲傷 + 심하게 멍듬 Crushed tissue @@ -169,6 +181,7 @@ Tecido esmagado Zhmoždění měkkých tkání 圧挫傷 + 뭉개짐 Minor crushed tissue @@ -182,6 +195,7 @@ Tecido esmagado leve Malé zhmoždění měkkých tkání 小さな圧挫傷 + 조금 뭉개짐 Medium crushed tissue @@ -195,6 +209,7 @@ Tecido esmagado médio Střední zhmoždění měkkých tkání 中くらいの圧挫傷 + 꽤 뭉개짐 Large crushed tissue @@ -208,6 +223,7 @@ Tecido esmagado grave Velké zhmoždění měkkých tkání 大きな圧挫傷 + 심하게 뭉개짐 Cut @@ -221,6 +237,7 @@ Corte Řezná rána 切り傷 + 베임 Small Cut @@ -234,6 +251,7 @@ Corte leve Malá řezná rána 小さな切り傷 + 조금 베임 Medium Cut @@ -247,6 +265,7 @@ Corte médio Střední řezná rána 中くらいの切り傷 + 꽤 베임 Large Cut @@ -260,6 +279,7 @@ Corte grave Velká řezná rána 大きな切り傷 + 심하게 베임 Tear @@ -273,6 +293,7 @@ Ruptura Tržná rána 裂傷 + 찢어짐 Small Tear @@ -286,6 +307,7 @@ Ruptura leve Malá tržná rána 小さな裂傷 + 조금 찢어짐 Medium Tear @@ -299,6 +321,7 @@ Ruptura média Střední tržná rána 中くらいの裂傷 + 꽤 찢어짐 Large Tear @@ -312,6 +335,7 @@ Ruptura grave Velká tržná rána 大きな裂傷 + 심하게 찢어짐 Velocity Wound @@ -325,6 +349,7 @@ Ferimento por projétil de arma de fogo Střelné poranění 銃創 + 총상 Small Velocity Wound @@ -338,6 +363,7 @@ Ferimento leve por projétil de arma de fogo Malé střelné poranění 小さな銃創 + 소형 총상 Medium Velocity Wound @@ -351,6 +377,7 @@ Ferimento médio por projétil de arma de fogo Střední střelné poranění 中くらいの銃創 + 중형 총상 Large Velocity Wound @@ -364,6 +391,7 @@ Ferimento grave por projétil de arma de fogo Velké střelné poranění 大きな銃創 + 대형 총상 Puncture Wound @@ -377,6 +405,7 @@ Ferimento por perfuração Bodná rána 刺し傷 + 관통상 Minor Puncture Wound @@ -390,6 +419,7 @@ Ferimento leve por perfuração Malá bodná rána 小さな刺し傷 + 소형 관통상 Medium Puncture Wound @@ -403,6 +433,7 @@ Ferimento médio por perfuração Střední bodná rána 中くらいの刺し傷 + 중형 관통상 Large Puncture Wound @@ -416,6 +447,7 @@ Ferimento grave por perfuração Velká bodná rána 大きな刺し傷 + 대형 관통상