diff --git a/AUTHORS.txt b/AUTHORS.txt index 34feb3838f..2f16aea49c 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -33,6 +33,7 @@ Aggr094 Anthariel BlackQwar Brakoviejo +Clon1998 Codingboy Crusty eRazeri @@ -67,8 +68,10 @@ rakowozz Raspu86 Riccardo Petricca Robert Boklahánics +ramius86 simon84 Sniperwolf572 +Tachi Tonic Tourorist Valentin Torikian diff --git a/addons/advanced_ballistics/XEH_postInit.sqf b/addons/advanced_ballistics/XEH_postInit.sqf index 783a5be569..41615696ac 100644 --- a/addons/advanced_ballistics/XEH_postInit.sqf +++ b/addons/advanced_ballistics/XEH_postInit.sqf @@ -33,9 +33,10 @@ GVAR(AtmosphericDensitySimulationEnabled) = true; GVAR(currentGrid) = 0; GVAR(INIT_MESSAGE_ENABLED) = false; -GVAR(extensionAvailable) = "ace_advanced_ballistics" callExtension "version" == "1.0"; +GVAR(extensionVersion) = ("ace_advanced_ballistics" callExtension "version"); +GVAR(extensionAvailable) = (GVAR(extensionVersion) == EXTENSION_REQUIRED_VERSION); if (!GVAR(extensionAvailable)) exitWith { - if ("ace_advanced_ballistics" callExtension "version" == "") then { + if (GVAR(extensionVersion) == "") then { diag_log text "[ACE] ERROR: ace_advanced_ballistics.dll is missing"; } else { diag_log text "[ACE] ERROR: ace_advanced_ballistics.dll is incompatible"; diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf index d628f012ee..baa3a871fa 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf @@ -19,7 +19,7 @@ */ #include "script_component.hpp" -private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_bulletTranslation", "_airFriction", "_dragModel", "_velocityBoundaryData", "_muzzleVelocity", "_muzzleVelocityCoef", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_bulletWeight", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef", "_ACE_Elevation", "_ACE_Windage", "_ID"]; +private ["_unit", "_weapon", "_mode", "_ammo", "_magazine", "_caliber", "_bullet", "_abort", "_index", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_atmosphereModel", "_bulletMass", "_bulletLength", "_airFriction", "_dragModel", "_muzzleVelocity", "_muzzleVelocityCoef", "_muzzleAccessory", "_initSpeedCoef", "_muzzleVelocityShift", "_bulletVelocity", "_bulletSpeed", "_bulletLength", "_bulletWeight", "_barrelTwist", "_twistDirection", "_stabilityFactor", "_transonicStabilityCoef"]; _unit = _this select 0; _weapon = _this select 1; _mode = _this select 3; @@ -95,12 +95,11 @@ if (GVAR(ammoTemperatureEnabled)) then { }; }; -// TODO: Make _bulletTraceVisible global and toggle it with events _bulletTraceVisible = false; -if (GVAR(bulletTraceEnabled) && currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { +if (GVAR(bulletTraceEnabled) && cameraView == "GUNNER" && currentWeapon ACE_player == primaryWeapon ACE_player && count primaryWeaponItems ACE_player > 2) then { _opticsName = (primaryWeaponItems ACE_player) select 2; _opticType = getNumber(configFile >> "cfgWeapons" >> _opticsName >> "ItemInfo" >> "opticType"); - _bulletTraceVisible = (_opticType == 2 || currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]) && cameraView == "GUNNER"; + _bulletTraceVisible = (_opticType == 2 || currentWeapon ACE_player in ["ACE_Vector", "Binocular", "Rangefinder", "Laserdesignator"]); }; _caliber = getNumber(configFile >> "cfgAmmo" >> _ammo >> "ACE_caliber"); @@ -158,15 +157,17 @@ if (GVAR(AdvancedAirDragEnabled)) then { [{ private ["_index", "_bullet", "_caliber", "_bulletTraceVisible", "_bulletVelocity", "_bulletPosition"]; EXPLODE_4_PVT(_this select 0,_bullet,_caliber,_bulletTraceVisible,_index); - - if (!alive _bullet) exitWith { - [_this select 1] call cba_fnc_removePerFrameHandler; - }; - + _bulletVelocity = velocity _bullet; _bulletPosition = getPosASL _bullet; - - if (_bulletTraceVisible && vectorMagnitude _bulletVelocity > 600) then { + + _bulletSpeed = vectorMagnitude _bulletVelocity; + + if (!alive _bullet || _bulletSpeed < 100) exitWith { + [_this select 1] call cba_fnc_removePerFrameHandler; + }; + + if (_bulletTraceVisible && _bulletSpeed > 600) then { drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.4*_caliber,0.2*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""]; }; @@ -190,7 +191,7 @@ if (GVAR(AdvancedAirDragEnabled)) then { if ((GVAR(bulletDatabaseOccupiedIndices) pushBack _index) == 0) then { [{ - private ["_bulletDatabaseEntry", "_bullet", "_caliber", "_muzzleVelocity", "_frames", "_speed", "_airFriction", "_airFrictionRef", "_dragModel", "_atmosphereModel", "_ballisticCoefficient", "_ballisticCoefficients", "_velocityBoundaries", "_airDensity", "_stabilityFactor", "_transonicStabilityCoef", "_twistDirection", "_unit", "_bulletTraceVisible", "_index", "_temperature", "_humidity", "_deltaT", "_TOF", "_bulletPosition", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueSpeed", "_bulletSpeedAvg", "_wind", "_drag", "_dragRef", "_vect", "_accel", "_accelRef", "_centripetalAccel", "_pressure", "_pressureDeviation", "_windSourceObstacle", "_windSourceTerrain", "_height", "_roughnessLength"]; + private ["_bulletDatabaseEntry", "_bullet", "_caliber", "_muzzleVelocity", "_frames", "_speed", "_airFriction", "_airFrictionRef", "_dragModel", "_atmosphereModel", "_ballisticCoefficient", "_ballisticCoefficients", "_velocityBoundaries", "_airDensity", "_stabilityFactor", "_transonicStabilityCoef", "_twistDirection", "_unit", "_bulletTraceVisible", "_index", "_temperature", "_humidity", "_deltaT", "_TOF", "_bulletPosition", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueSpeed", "_bulletSpeedAvg", "_wind", "_drag", "_dragRef", "_vect", "_accel", "_accelRef", "_centripetalAccel", "_pressure", "_pressureDeviation", "_windSourceObstacle", "_windSourceTerrain", "_height", "_roughnessLength", "_bulletDir", "_horizontalDeflection", "_horizontalDeflectionPartial", "_spinDrift", "_spinDriftPartial"]; { _bulletDatabaseEntry = (GVAR(bulletDatabase) select _x); diff --git a/addons/advanced_ballistics/script_component.hpp b/addons/advanced_ballistics/script_component.hpp index 273afa2f49..70c2f47990 100644 --- a/addons/advanced_ballistics/script_component.hpp +++ b/addons/advanced_ballistics/script_component.hpp @@ -24,3 +24,5 @@ #define STD_AIR_DENSITY_ICAO 1.22498 #define STD_AIR_DENSITY_ASM 1.20885 #define GET_TEMPERATURE_AT_HEIGHT(h) (EGVAR(weather,currentTemperature) - 0.0065 * (h)) + +#define EXTENSION_REQUIRED_VERSION "1.0" diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index d460ac4268..6890937a45 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -6,12 +6,16 @@ Show Wind Info Pokaż inf. o wietrze Mostra indicazioni del vento + Показать информацию о ветре + Afficher les info du vent Mostrar información del viento Show Protractor Pokaż kątomierz Mostra il rapportatore + Показать транспортир + Afficher le rapporteur Mostrar transportador diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp index 8c0a647839..b60ff03fdc 100644 --- a/addons/atragmx/RscTitles.hpp +++ b/addons/atragmx/RscTitles.hpp @@ -230,12 +230,12 @@ class ATragMX_Display { w=0.03; h=0.03; colorBackground[]={0,0,0,0.0}; - action=QUOTE(((GVAR(currentGun) select GVAR(currentTarget)) + (count GVAR(gunList)) - 1) % (count GVAR(gunList)) call FUNC(change_gun)); + action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) - 1) % (count GVAR(gunList)) call FUNC(change_gun)); }; class BOTTOM: TOP { idc=-1; y=0.265*safezoneH+safezoneY+0.955; - action=QUOTE(((GVAR(currentGun) select GVAR(currentTarget)) + (count GVAR(gunList)) + 1) % (count GVAR(gunList)) call FUNC(change_gun)); + action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) + 1) % (count GVAR(gunList)) call FUNC(change_gun)); }; class LEFT: ATragMX_RscButton { idc=-1; @@ -244,12 +244,12 @@ class ATragMX_Display { w=0.05; h=0.03; colorBackground[]={0,0,0,0}; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget) = (4 + GVAR(currentTarget) - 1) % 4; call FUNC(update_target_selection)); + action=QUOTE(((4 + GVAR(currentTarget) - 1) % 4) call FUNC(change_target_slot)); }; class RIGHT: LEFT { idc=-1; x=0.55*safezoneW+safezoneX+0.2725; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget) = (4 + GVAR(currentTarget) + 1) % 4; call FUNC(update_target_selection)); + action=QUOTE(((4 + GVAR(currentTarget) + 1) % 4) call FUNC(change_target_slot)); }; class TOP_LEFT: ATragMX_RscButton { idc=-1; @@ -420,25 +420,25 @@ class ATragMX_Display { colorBackgroundDisabled[]={0,0,0,1}; colorBackgroundActive[]={0,0,0,0}; text="A"; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget)=0; call FUNC(update_target_selection)); + action=QUOTE(0 call FUNC(change_target_slot)); }; class TEXT_TARGET_B: TEXT_TARGET_A { idc=501; x=0.550*safezoneW+safezoneX+0.2281; text="B"; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget)=1; call FUNC(update_target_selection)); + action=QUOTE(1 call FUNC(change_target_slot)); }; class TEXT_TARGET_C: TEXT_TARGET_B { idc=502; x=0.550*safezoneW+safezoneX+0.2512; text="C"; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget)=2; call FUNC(update_target_selection)); + action=QUOTE(2 call FUNC(change_target_slot)); }; class TEXT_TARGET_D: TEXT_TARGET_B { idc=503; x=0.550*safezoneW+safezoneX+0.2743; text="D"; - action=QUOTE(call FUNC(parse_input); GVAR(currentTarget)=3; call FUNC(update_target_selection)); + action=QUOTE(3 call FUNC(change_target_slot)); }; class TEXT_TARGET: TEXT_GUN { diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf index 31c526fab7..9d769d84a3 100644 --- a/addons/atragmx/XEH_postInit.sqf +++ b/addons/atragmx/XEH_postInit.sqf @@ -6,16 +6,38 @@ if (count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then { GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList"; } else { // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Ammo Class Name, Magazine Class Name, BC, Drag Model, Atmosphere Model - GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, "B_127x108_Ball" , "5Rnd_127x108_Mag" , 0.700, 1, "ASM" ], - ["12.7x99mm" , 880, 100, 0.0607, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, "B_127x99_Ball" , "5Rnd_mas_127x99_Stanag" , 0.670, 1, "ASM" ], - ["12.7x54mm" , 290, 100, 0.3913, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 61.56, "B_127x54_Ball" , "10Rnd_127x54_Mag" , 1.050, 1, "ASM" ], - ["10.4x77mm" , 910, 100, 0.0572, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, "B_408_Ball" , "7Rnd_408_Mag" , 0.970, 1, "ASM" ], - ["9.3×64mm" , 870, 100, 0.0632, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, "B_93x64_Ball" , "10Rnd_93x64_DMR_05_Mag" , 0.368, 1, "ASM" ], - ["8.6×70mm" , 915, 100, 0.0572, -0.0006100, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, "B_338_Ball" , "10Rnd_338_Mag" , 0.322, 7, "ICAO"], - ["7.62x51mm" , 850, 100, 0.0639, -0.0010000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.460, "B_762x51_Ball" , "20Rnd_762x51_Mag" , 0.393, 1, "ICAO"], - ["6.5x39mm" , 800, 100, 0.0689, -0.0009000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.776, "B_65x39_Caseless", "30Rnd_65x39_caseless_mag", 0.263, 1, "ICAO"], - ["5.56x45mm" , 920, 100, 0.0584, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.000, "B_556x45_Ball" , "30Rnd_556x45_Stanag" , 0.304, 1, "ASM" ], - ["5.56x45mm Mk262" , 850, 100, 0.0643, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, "RH_556x45_Mk262" , "RH_30Rnd_556x45_Mk262" , 0.361, 1, "ASM" ]]; + GVAR(gunList) = [["12.7x108mm" , 820, 100, 0.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, "B_127x108_Ball" , "5Rnd_127x108_Mag" , 0.630, 1, "ASM" ], + + ["12.7x99mm AMAX" , 860, 100, 0.0612, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x99_Ball" , "5Rnd_mas_127x99_Stanag" , 1.050, 1, "ASM" ], + ["12.7x99mm" , 853, 100, 0.0623, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, "B_127x99_Ball" , "5Rnd_mas_127x99_Stanag" , 0.670, 1, "ASM" ], + + ["12.7x54mm" , 300, 100, 0.3394, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x54_Ball" , "10Rnd_127x54_Mag" , 1.050, 1, "ASM" ], + + [".408 Chey Tac" , 910, 100, 0.0569, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, "B_408_Ball" , "7Rnd_408_Mag" , 0.970, 1, "ASM" ], + + ["9.3×64mm" , 870, 100, 0.0619, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "B_93x64_Ball" , "10Rnd_93x64_DMR_05_Mag" , 0.368, 1, "ASM" ], + + [".338LM 250gr" , 880, 100, 0.0598, -0.0006060, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, "B_338_Ball" , "10Rnd_338_Mag" , 0.322, 7, "ICAO"], + [".338LM 300gr" , 800, 100, 0.0677, -0.0005350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 19.44, "ACE_338_Ball" , "ACE_10Rnd_338_300gr_HPBT_Mag" , 0.381, 7, "ICAO"], + [".338LM API526" , 880, 100, 0.0601, -0.0006730, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.39, "ACE_338_Ball_API526" , "ACE_10Rnd_338_API526_Mag" , 0.290, 7, "ICAO"], + + [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 13.31, "ACE_762x67_Ball_Mk248_Mod_0" , "ACE_20Rnd_762x67_Mk248_Mod_0_Mag" , 0.268, 7, "ICAO"], + [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.26, "ACE_762x67_Ball_Mk248_Mod_1" , "ACE_20Rnd_762x67_Mk248_Mod_1_Mag" , 0.310, 7, "ICAO"], + [".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "ACE_762x67_Ball_Berger_Hybrid_OTM", "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag", 0.368, 7, "ICAO"], + + ["7.62x54mmR" , 800, 100, 0.0692, -0.0010230, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.849, "B_762x54_Ball" , "10Rnd_762x54_Mag" , 0.400, 1, "ICAO"], + + ["7.62x51mm M80" , 810, 100, 0.0679, -0.0010350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.525, "B_762x51_Ball" , "20Rnd_762x51_Mag" , 0.200, 7, "ICAO"], + ["7.62x51mm M118LR" , 820, 100, 0.0662, -0.0008525, 3.81, 0, 0.338, 0.338, 120, 0, 0, 11.34, "ACE_762x51_Ball_M118LR" , "ACE_20Rnd_762x51_M118LR_Mag" , 0.243, 7, "ICAO"], + ["7.62x51mm Mk319" , 820, 100, 0.0670, -0.0010300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 8.424, "ACE_762x51_Ball_Mk319_Mod_0" , "ACE_20Rnd_762x51_Mk319_Mod_0_Mag" , 0.377, 1, "ICAO"], + ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 0.338, 0.338, 120, 0, 0, 12.96, "ACE_762x51_Ball_Subsonic" , "ACE_20Rnd_762x51_Mag_SD" , 0.235, 7, "ICAO"], + + ["6.5x39mm" , 800, 100, 0.0683, -0.0007850, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.970, "B_65x39_Caseless" , "30Rnd_65x39_caseless_mag" , 0.263, 7, "ICAO"], + ["6.5x47mm Lapua" , 800, 100, 0.0682, -0.0007710, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.007, "ACE_65x47_Ball_Scenar" , "ACE_30Rnd_65x47_Scenar_mag" , 0.290, 7, "ICAO"], + + ["5.56x45mm M855" , 870, 100, 0.0626, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "B_556x45_Ball" , "30Rnd_556x45_Stanag" , 0.151, 7, "ASM" ], + ["5.56x45mm Mk262" , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, "ACE_556x45_Ball_Mk262" , "ACE_30Rnd_556x45_Stanag_Mk262_mag" , 0.361, 1, "ASM" ], + ["5.56x45mm Mk318" , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "ACE_556x45_Ball_Mk318" , "ACE_30Rnd_556x45_Stanag_Mk318_mag" , 0.307, 1, "ASM" ]]; profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)]; }; diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf index 91024d05a3..0224fc3e9c 100644 --- a/addons/atragmx/XEH_preInit.sqf +++ b/addons/atragmx/XEH_preInit.sqf @@ -11,6 +11,7 @@ PREP(calculate_target_solution); PREP(calculate_target_speed_assist); PREP(can_show); PREP(change_gun); +PREP(change_target_slot); PREP(create_dialog); PREP(cycle_range_card_columns); PREP(cycle_scope_unit); diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf index 05625a53f6..aecd6496af 100644 --- a/addons/atragmx/functions/fnc_calculate_range_card.sqf +++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf @@ -18,21 +18,21 @@ [] call FUNC(parse_input); private ["_scopeBaseAngle"]; -_scopeBaseAngle = ((GVAR(workingMemory) select GVAR(currentTarget)) select 3); +_scopeBaseAngle = (GVAR(workingMemory) select 3); private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"]; -_bulletMass = (GVAR(workingMemory) select GVAR(currentTarget)) select 12; -_boreHeight = (GVAR(workingMemory) select GVAR(currentTarget)) select 5; -_airFriction = (GVAR(workingMemory) select GVAR(currentTarget)) select 4; -_muzzleVelocity = (GVAR(workingMemory) select GVAR(currentTarget)) select 1; -_bc = (GVAR(workingMemory) select GVAR(currentTarget)) select 15; -_dragModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 16; -_atmosphereModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 17; +_bulletMass = GVAR(workingMemory) select 12; +_boreHeight = GVAR(workingMemory) select 5; +_airFriction = GVAR(workingMemory) select 4; +_muzzleVelocity = GVAR(workingMemory) select 1; +_bc = GVAR(workingMemory) select 15; +_dragModel = GVAR(workingMemory) select 16; +_atmosphereModel = GVAR(workingMemory) select 17; private ["_temperature", "_barometricPressure", "_relativeHumidity"]; -_temperature = (GVAR(temperature) select GVAR(currentTarget)); -_barometricPressure = (GVAR(barometricPressure) select GVAR(currentTarget)); -_relativeHumidity = (GVAR(relativeHumidity) select GVAR(currentTarget)); +_temperature = GVAR(temperature); +_barometricPressure = GVAR(barometricPressure); +_relativeHumidity = GVAR(relativeHumidity); if (GVAR(currentUnit) == 1) then { _temperature = (_temperature - 32) / 1.8; diff --git a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf index 4822b08b37..17370c82b2 100644 --- a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf +++ b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf @@ -34,6 +34,7 @@ _temperature = 15; _barometricPressure = 1013.25; _relativeHumidity = 0; +private ["_result"]; _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false] call FUNC(calculate_solution); _scopeBaseAngle + (_result select 0) / 60 diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf index 90263a608c..4e7f5981c1 100644 --- a/addons/atragmx/functions/fnc_calculate_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_solution.sqf @@ -109,8 +109,12 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { if (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false]) then { private ["_drag"]; - _drag = -1 * ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)); - _bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (_drag); + _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { + parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) + } else { + ([_dragModel, _bc, _trueSpeed] call EFUNC(advanced_ballistics,calculateRetardation)) + }; + _bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag); }; } else { _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction); diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf index 57783d9cca..3f4c92c191 100644 --- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf +++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf @@ -18,21 +18,21 @@ [] call FUNC(parse_input); private ["_scopeBaseAngle"]; -_scopeBaseAngle = ((GVAR(workingMemory) select GVAR(currentTarget)) select 3); +_scopeBaseAngle = (GVAR(workingMemory) select 3); private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"]; -_bulletMass = (GVAR(workingMemory) select GVAR(currentTarget)) select 12; -_boreHeight = (GVAR(workingMemory) select GVAR(currentTarget)) select 5; -_airFriction = (GVAR(workingMemory) select GVAR(currentTarget)) select 4; -_muzzleVelocity = (GVAR(workingMemory) select GVAR(currentTarget)) select 1; -_bc = (GVAR(workingMemory) select GVAR(currentTarget)) select 15; -_dragModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 16; -_atmosphereModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 17; +_bulletMass = GVAR(workingMemory) select 12; +_boreHeight = GVAR(workingMemory) select 5; +_airFriction = GVAR(workingMemory) select 4; +_muzzleVelocity = GVAR(workingMemory) select 1; +_bc = GVAR(workingMemory) select 15; +_dragModel = GVAR(workingMemory) select 16; +_atmosphereModel = GVAR(workingMemory) select 17; private ["_temperature", "_barometricPressure", "_relativeHumidity"]; -_temperature = (GVAR(temperature) select GVAR(currentTarget)); -_barometricPressure = (GVAR(barometricPressure) select GVAR(currentTarget)); -_relativeHumidity = (GVAR(relativeHumidity) select GVAR(currentTarget)); +_temperature = GVAR(temperature); +_barometricPressure = GVAR(barometricPressure); +_relativeHumidity = GVAR(relativeHumidity); if (GVAR(currentUnit) == 1) then { _temperature = (_temperature - 32) / 1.8; @@ -55,6 +55,7 @@ if (GVAR(currentUnit) == 1) then _targetSpeed = _targetSpeed / 2.23693629; }; +private ["_result"]; _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution); diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf index 259441d51d..520e4e85be 100644 --- a/addons/atragmx/functions/fnc_change_gun.sqf +++ b/addons/atragmx/functions/fnc_change_gun.sqf @@ -17,14 +17,14 @@ if (_this < 0 || _this > (count GVAR(gunList)) - 1) exitWith {}; -GVAR(workingMemory) set [GVAR(currentTarget), +(GVAR(gunList) select _this)]; -GVAR(currentGun) set [GVAR(currentTarget), _this]; +GVAR(workingMemory) = +(GVAR(gunList) select _this); +GVAR(currentGun) = _this; -lbSetCurSel [6000, (GVAR(currentGun) select GVAR(currentTarget))]; +lbSetCurSel [6000, GVAR(currentGun)]; -if ((GVAR(scopeUnits) select (GVAR(currentScopeUnit) select GVAR(currentTarget))) != "Clicks") then +if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then { - GVAR(currentScopeUnit) set [GVAR(currentTarget), (GVAR(workingMemory) select GVAR(currentTarget)) select 6]; + GVAR(currentScopeUnit) = GVAR(workingMemory) select 6; }; [] call FUNC(update_gun); @@ -35,4 +35,4 @@ GVAR(leadOutput) set [GVAR(currentTarget), 0]; GVAR(tofOutput) set [GVAR(currentTarget), 0]; GVAR(velocityOutput) set [GVAR(currentTarget), 0]; -[] call FUNC(update_result); +[] call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_change_target_slot.sqf b/addons/atragmx/functions/fnc_change_target_slot.sqf new file mode 100644 index 0000000000..6e6951c6bf --- /dev/null +++ b/addons/atragmx/functions/fnc_change_target_slot.sqf @@ -0,0 +1,26 @@ +/* + * Author: Ruthberg + * Selects a target slot (A, B, C or D) + * + * Arguments: + * target + * + * Return Value: + * Nothing + * + * Example: + * 2 call ace_atragmx_fnc_change_target_slot + * + * Public: No + */ +#include "script_component.hpp" + +private ["_target"]; +_target = 0 max _this min 3; + +call FUNC(parse_input); + +GVAR(currentTarget) = _target; +call FUNC(update_target_selection); + +call FUNC(calculate_target_solution); diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf index 01cdcba184..8dc0f3e34f 100644 --- a/addons/atragmx/functions/fnc_create_dialog.sqf +++ b/addons/atragmx/functions/fnc_create_dialog.sqf @@ -23,15 +23,19 @@ createDialog 'ATragMX_Display'; call FUNC(update_target_selection); -true call FUNC(show_main_page); +GVAR(showMainPage) call FUNC(show_main_page); -false call FUNC(show_add_new_gun); -false call FUNC(show_gun_list); -false call FUNC(show_range_card); -false call FUNC(show_range_card_setup); -false call FUNC(show_target_range_assist); -false call FUNC(show_target_speed_assist); -false call FUNC(show_target_speed_assist_timer); +GVAR(showAddNewGun) call FUNC(show_add_new_gun); +GVAR(showGunList) call FUNC(show_gun_list); +GVAR(showRangeCard) call FUNC(show_range_card); +if (GVAR(showRangeCard)) then { + ctrlSetFocus (_dsp displayCtrl 5001); + [] call FUNC(update_range_card); +}; +GVAR(showRangeCardSetup) call FUNC(show_range_card_setup); +GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist); +GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist); +GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer); { lbAdd [6000, _x select 0]; diff --git a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf index 99704220d4..36f704bd2d 100644 --- a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf +++ b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf @@ -17,7 +17,7 @@ [] call FUNC(parse_input); -GVAR(currentScopeUnit) set [GVAR(currentTarget), ((GVAR(currentScopeUnit) select GVAR(currentTarget)) + 1) % (count GVAR(scopeUnits))]; +GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits)); [] call FUNC(update_scope_unit); [] call FUNC(update_result); diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf index 3f46a71fe2..8fda3570fa 100644 --- a/addons/atragmx/functions/fnc_init.sqf +++ b/addons/atragmx/functions/fnc_init.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -GVAR(workingMemory) = [+(GVAR(gunList) select 0), +(GVAR(gunList) select 0), +(GVAR(gunList) select 0), +(GVAR(gunList) select 0)]; +GVAR(workingMemory) = +(GVAR(gunList) select 0); GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"]; @@ -37,13 +37,13 @@ GVAR(speedAssistNumTicksUnit) = 0; GVAR(speedAssistTimer) = true; GVAR(currentUnit) = 2; -GVAR(currentGun) = [0, 0, 0, 0]; +GVAR(currentGun) = 0; GVAR(currentTarget) = 0; -GVAR(currentScopeUnit) = [0, 0, 0, 0]; +GVAR(currentScopeUnit) = 0; -GVAR(temperature) = [15, 15, 15, 15]; -GVAR(barometricPressure) = [1013.25, 1013.25, 1013.25, 1013.25]; -GVAR(relativeHumidity) = [0.5, 0.5, 0.5, 0.5]; +GVAR(temperature) = 15; +GVAR(barometricPressure) = 1013.25; +GVAR(relativeHumidity) = 0.5; GVAR(windSpeed) = [0, 0, 0, 0]; GVAR(windDirection) = [12, 12, 12, 12]; @@ -56,3 +56,13 @@ GVAR(windageOutput) = [0, 0, 0, 0]; GVAR(leadOutput) = [0, 0, 0, 0]; GVAR(tofOutput) = [0, 0, 0, 0]; GVAR(velocityOutput) = [0, 0, 0, 0]; + +GVAR(showMainPage) = true; +GVAR(showAddNewGun) = false; +GVAR(showGunList) = false; +GVAR(showRangeCard) = false; +GVAR(showRangeCardSetup) = false; +GVAR(showTargetRangeAssist) = false; +GVAR(showTargetSpeedAssist) = false; +GVAR(showTargetSpeedAssistTimer) = false; + diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf index 4a525dcad8..7d364cbdfc 100644 --- a/addons/atragmx/functions/fnc_parse_input.sqf +++ b/addons/atragmx/functions/fnc_parse_input.sqf @@ -15,9 +15,9 @@ */ #include "script_component.hpp" -GVAR(temperature) set [GVAR(currentTarget), parseNumber(ctrlText 200)]; -GVAR(barometricPressure) set [GVAR(currentTarget), 0 max parseNumber(ctrlText 210)]; -GVAR(relativeHumidity) set [GVAR(currentTarget), (0 max parseNumber(ctrlText 220) min 100) / 100]; +GVAR(temperature) = parseNumber(ctrlText 200); +GVAR(barometricPressure) = 0 max parseNumber(ctrlText 210); +GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 220) min 100) / 100; GVAR(windSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 300)) min 50]; GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 310)) min 12]; @@ -44,20 +44,20 @@ _boreHeight = 0.1 max _boreHeight min 10; _bulletMass = 1 max _bulletMass min 100; _muzzleVelocity = 100 max _muzzleVelocity min 1400; -(GVAR(workingMemory) select GVAR(currentTarget)) set [5, _boreHeight]; -(GVAR(workingMemory) select GVAR(currentTarget)) set [12, _bulletMass]; +GVAR(workingMemory) set [5, _boreHeight]; +GVAR(workingMemory) set [12, _bulletMass]; if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then { - (GVAR(workingMemory) select GVAR(currentTarget)) set [15, _airFriction]; + GVAR(workingMemory) set [15, _airFriction]; } else { - (GVAR(workingMemory) select GVAR(currentTarget)) set [4, _airFriction]; + GVAR(workingMemory) set [4, _airFriction]; }; -(GVAR(workingMemory) select GVAR(currentTarget)) set [1, _muzzleVelocity]; +GVAR(workingMemory) set [1, _muzzleVelocity]; -private ["_elevationCur", "_elevationCur", "_elevationScopeStep", "_windageScopeStep"]; +private ["_elevationCur", "_windageCur", "_elevationScopeStep", "_windageScopeStep"]; _elevationCur = parseNumber(ctrlText 402); _windageCur = parseNumber(ctrlText 412); -switch ((GVAR(currentScopeUnit) select GVAR(currentTarget))) do +switch (GVAR(currentScopeUnit)) do { case 0: { @@ -73,16 +73,16 @@ switch ((GVAR(currentScopeUnit) select GVAR(currentTarget))) do case 3: { - _elevationScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 7); - _windageScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 8); + _elevationScopeStep = (GVAR(workingMemory) select 7); + _windageScopeStep = (GVAR(workingMemory) select 8); _elevationCur = _elevationCur * _elevationScopeStep; _windageCur = _windageCur * _windageScopeStep; }; }; -(GVAR(workingMemory) select GVAR(currentTarget)) set [10, _elevationCur]; -(GVAR(workingMemory) select GVAR(currentTarget)) set [11, _windageCur]; +GVAR(workingMemory) set [10, _elevationCur]; +GVAR(workingMemory) set [11, _windageCur]; [] call FUNC(update_gun); [] call FUNC(update_atmosphere); diff --git a/addons/atragmx/functions/fnc_reset_relative_click_memory.sqf b/addons/atragmx/functions/fnc_reset_relative_click_memory.sqf index 1a20af7452..96d638dc1a 100644 --- a/addons/atragmx/functions/fnc_reset_relative_click_memory.sqf +++ b/addons/atragmx/functions/fnc_reset_relative_click_memory.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -(GVAR(workingMemory) select GVAR(currentTarget)) set [10, 0]; -(GVAR(workingMemory) select GVAR(currentTarget)) set [11, 0]; +GVAR(workingMemory) set [10, 0]; +GVAR(workingMemory) set [11, 0]; [] call FUNC(update_result); diff --git a/addons/atragmx/functions/fnc_save_gun.sqf b/addons/atragmx/functions/fnc_save_gun.sqf index d797939991..4b42f2027f 100644 --- a/addons/atragmx/functions/fnc_save_gun.sqf +++ b/addons/atragmx/functions/fnc_save_gun.sqf @@ -18,7 +18,7 @@ private ["_index"]; _index = 0 max (lbCurSel 6000); -GVAR(gunList) set [_index, +(GVAR(workingMemory) select GVAR(currentTarget))]; +GVAR(gunList) set [_index, +GVAR(workingMemory)]; lbClear 6000; { diff --git a/addons/atragmx/functions/fnc_show_add_new_gun.sqf b/addons/atragmx/functions/fnc_show_add_new_gun.sqf index 12815194dd..b1fd1deb44 100644 --- a/addons/atragmx/functions/fnc_show_add_new_gun.sqf +++ b/addons/atragmx/functions/fnc_show_add_new_gun.sqf @@ -15,4 +15,6 @@ */ #include "script_component.hpp" +GVAR(showAddNewGun) = _this; + {ctrlShow [_x, _this]} forEach [11000, 11001, 11002, 11003]; \ No newline at end of file diff --git a/addons/atragmx/functions/fnc_show_gun_list.sqf b/addons/atragmx/functions/fnc_show_gun_list.sqf index c34784e27a..e51aaba13b 100644 --- a/addons/atragmx/functions/fnc_show_gun_list.sqf +++ b/addons/atragmx/functions/fnc_show_gun_list.sqf @@ -15,4 +15,12 @@ */ #include "script_component.hpp" -{ctrlShow [_x, _this]} forEach [6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007]; \ No newline at end of file +GVAR(showGunList) = _this; + +{ctrlShow [_x, _this]} forEach [6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007]; + +if (_this) then { + ctrlSetFocus (_dsp displayCtrl 6002); + + lbSetCurSel [6000, GVAR(currentGun)]; +}; diff --git a/addons/atragmx/functions/fnc_show_main_page.sqf b/addons/atragmx/functions/fnc_show_main_page.sqf index 5eaf5eb560..941c7559c8 100644 --- a/addons/atragmx/functions/fnc_show_main_page.sqf +++ b/addons/atragmx/functions/fnc_show_main_page.sqf @@ -15,5 +15,7 @@ */ #include "script_component.hpp" +GVAR(showMainPage) = _this; + {ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420, 500, 501, 502, 503, 600, 601, 602, 603, 1000, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008]; diff --git a/addons/atragmx/functions/fnc_show_range_card.sqf b/addons/atragmx/functions/fnc_show_range_card.sqf index 655630f6c5..5728d18546 100644 --- a/addons/atragmx/functions/fnc_show_range_card.sqf +++ b/addons/atragmx/functions/fnc_show_range_card.sqf @@ -15,4 +15,6 @@ */ #include "script_component.hpp" +GVAR(showRangeCard) = _this; + {ctrlShow [_x, _this]} forEach [5000, 5001, 5002, 5003, 5004, 5005, 5006, 5007]; diff --git a/addons/atragmx/functions/fnc_show_range_card_setup.sqf b/addons/atragmx/functions/fnc_show_range_card_setup.sqf index 3ed8cb5184..e9afe41cc5 100644 --- a/addons/atragmx/functions/fnc_show_range_card_setup.sqf +++ b/addons/atragmx/functions/fnc_show_range_card_setup.sqf @@ -15,4 +15,14 @@ */ #include "script_component.hpp" +GVAR(showRangeCardSetup) = _this; + {ctrlShow [_x, _this]} forEach [10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009]; + +if (_this) then { + ctrlSetFocus (_dsp displayCtrl 10006); + + ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))]; + ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))]; + ctrlSetText [10005, Str(Round(GVAR(rangeCardIncrement)))]; +}; diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf index 964e5f93d0..e3ca0a2626 100644 --- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf +++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf @@ -15,4 +15,21 @@ */ #include "script_component.hpp" +GVAR(showTargetRangeAssist) = _this; + {ctrlShow [_x, _this]} forEach [7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020]; + +if (_this) then { + ctrlSetFocus (_dsp displayCtrl 7018); + + ctrlSetText [7012, Str(parseNumber(ctrlText 320))]; + ctrlSetText [7013, Str(parseNumber(ctrlText 340))]; + + if (GVAR(currentUnit) != 2) then + { + ctrlSetText [7016, "Yards"]; + } else + { + ctrlSetText [7016, "Meters"]; + }; +}; \ No newline at end of file diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf index ce1e8588b9..90425e26db 100644 --- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf +++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf @@ -15,4 +15,28 @@ */ #include "script_component.hpp" +GVAR(showTargetSpeedAssist) = _this; + {ctrlShow [_x, _this]} forEach [8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015]; + +if (_this) then { + ctrlSetFocus (_dsp displayCtrl 8012); + + ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))]; + + if (GVAR(currentUnit) != 2) then + { + ctrlSetText [8008, "Yards"]; + } else + { + ctrlSetText [8008, "Meters"]; + }; + + if (GVAR(currentUnit) != 1) then + { + ctrlSetText [8011, "m/s"]; + } else + { + ctrlSetText [8011, "mph"]; + }; +}; diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist_timer.sqf index 5b809b7ca9..8f2ff0c83e 100644 --- a/addons/atragmx/functions/fnc_show_target_speed_assist_timer.sqf +++ b/addons/atragmx/functions/fnc_show_target_speed_assist_timer.sqf @@ -15,4 +15,6 @@ */ #include "script_component.hpp" +GVAR(showTargetSpeedAssistTimer) = _this; + {ctrlShow [_x, _this]} forEach [9000, 9001, 9002]; diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf index 90acd1a84f..d8414ba692 100644 --- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf +++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if !(ctrlVisible 9000) then { false call FUNC(show_target_speed_assist); diff --git a/addons/atragmx/functions/fnc_toggle_gun_list.sqf b/addons/atragmx/functions/fnc_toggle_gun_list.sqf index 4e24e4cb77..cd4acb1f76 100644 --- a/addons/atragmx/functions/fnc_toggle_gun_list.sqf +++ b/addons/atragmx/functions/fnc_toggle_gun_list.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if (ctrlVisible 6000) then { false call FUNC(show_gun_list); @@ -29,8 +27,4 @@ if (ctrlVisible 6000) then { false call FUNC(show_main_page); true call FUNC(show_gun_list); - - ctrlSetFocus (_dsp displayCtrl 6002); - - lbSetCurSel [6000, (GVAR(currentGun) select GVAR(currentTarget))]; }; diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf index 6a5c386de7..6a75ea5445 100644 --- a/addons/atragmx/functions/fnc_toggle_range_card.sqf +++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if (ctrlVisible 5006) then { false call FUNC(show_range_card); diff --git a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf index 28534c9dd9..71da18349b 100644 --- a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf +++ b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf @@ -3,7 +3,7 @@ * Toggles the range card setup screen on/off * * Arguments: - * Nothing + * Apply new range card settings * * Return Value: * Nothing @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if (ctrlVisible 10000) then { false call FUNC(show_range_card_setup); @@ -35,10 +33,4 @@ if (ctrlVisible 10000) then { false call FUNC(show_range_card); true call FUNC(show_range_card_setup); - - ctrlSetFocus (_dsp displayCtrl 10006); - - ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))]; - ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))]; - ctrlSetText [10005, Str(Round(GVAR(rangeCardIncrement)))]; }; diff --git a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf index 352a6d0e1f..04e9307ded 100644 --- a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if (ctrlVisible 7000) then { false call FUNC(show_target_range_assist); @@ -31,17 +29,4 @@ if (ctrlVisible 7000) then { false call FUNC(show_main_page); true call FUNC(show_target_range_assist); - - ctrlSetFocus (_dsp displayCtrl 7018); - - ctrlSetText [7012, Str(parseNumber(ctrlText 320))]; - ctrlSetText [7013, Str(parseNumber(ctrlText 340))]; - - if (GVAR(currentUnit) != 2) then - { - ctrlSetText [7016, "Yards"]; - } else - { - ctrlSetText [7016, "Meters"]; - }; }; diff --git a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf index 0bda7ad019..66ffaa5d07 100644 --- a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf +++ b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - if (ctrlVisible 8000) then { false call FUNC(show_target_speed_assist); @@ -31,24 +29,4 @@ if (ctrlVisible 8000) then { false call FUNC(show_main_page); true call FUNC(show_target_speed_assist); - - ctrlSetFocus (_dsp displayCtrl 8012); - - ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))]; - - if (GVAR(currentUnit) != 2) then - { - ctrlSetText [8008, "Yards"]; - } else - { - ctrlSetText [8008, "Meters"]; - }; - - if (GVAR(currentUnit) != 1) then - { - ctrlSetText [8011, "m/s"]; - } else - { - ctrlSetText [8011, "mph"]; - }; }; diff --git a/addons/atragmx/functions/fnc_update_atmosphere.sqf b/addons/atragmx/functions/fnc_update_atmosphere.sqf index 91f1831b04..68a60f72e9 100644 --- a/addons/atragmx/functions/fnc_update_atmosphere.sqf +++ b/addons/atragmx/functions/fnc_update_atmosphere.sqf @@ -15,10 +15,10 @@ */ #include "script_component.hpp" -ctrlSetText [200, Str(Round((GVAR(temperature) select GVAR(currentTarget)) * 10) / 10)]; +ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)]; if (GVAR(currentUnit) == 1) then { - ctrlSetText [210, Str(Round((GVAR(barometricPressure) select GVAR(currentTarget)) * 100) / 100)]; + ctrlSetText [210, Str(Round(GVAR(barometricPressure) * 100) / 100)]; } else { - ctrlSetText [210, Str(Round(GVAR(barometricPressure) select GVAR(currentTarget)))]; + ctrlSetText [210, Str(Round(GVAR(barometricPressure)))]; }; -ctrlSetText [220, Str(Round((GVAR(relativeHumidity) select GVAR(currentTarget)) * 100 * 10) / 10)]; +ctrlSetText [220, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)]; diff --git a/addons/atragmx/functions/fnc_update_gun.sqf b/addons/atragmx/functions/fnc_update_gun.sqf index cd80e5f122..1e12439878 100644 --- a/addons/atragmx/functions/fnc_update_gun.sqf +++ b/addons/atragmx/functions/fnc_update_gun.sqf @@ -15,39 +15,39 @@ */ #include "script_component.hpp" -ctrlSetText [1000, (GVAR(workingMemory) select GVAR(currentTarget)) select 0]; +ctrlSetText [1000, GVAR(workingMemory) select 0]; if (GVAR(currentUnit) == 1) then { - ctrlSetText [ 100, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 5) / 2.54 * 100) / 100)]; + ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)]; } else { - ctrlSetText [ 100, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 5) * 100) / 100)]; + ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)]; }; if (GVAR(currentUnit) == 1) then { - ctrlSetText [ 110, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 12) * 15.4323584))]; + ctrlSetText [ 110, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))]; } else { - ctrlSetText [ 110, Str(Round((GVAR(workingMemory) select GVAR(currentTarget)) select 12))]; + ctrlSetText [ 110, Str(Round(GVAR(workingMemory) select 12))]; }; if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then { - ctrlSetText [ 120, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 15) * 1000) / 1000)]; + ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)]; } else { - ctrlSetText [ 120, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 4) * -1000 * 1000) / 1000)]; + ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)]; }; if (GVAR(currentUnit) == 1) then { - ctrlSetText [130, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 1) * 3.2808399))]; + ctrlSetText [130, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))]; } else { - ctrlSetText [130, Str(Round((GVAR(workingMemory) select GVAR(currentTarget)) select 1))]; + ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))]; }; if (GVAR(currentUnit) == 2) then { - ctrlSetText [140, Str(Round((GVAR(workingMemory) select GVAR(currentTarget)) select 2))]; + ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))]; } else { - ctrlSetText [140, Str(Round(((GVAR(workingMemory) select GVAR(currentTarget)) select 2) * 1.0936133))]; + ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))]; }; [] call FUNC(update_scope_unit); diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf index 546c38d24c..358a74ce5d 100644 --- a/addons/atragmx/functions/fnc_update_range_card.sqf +++ b/addons/atragmx/functions/fnc_update_range_card.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -private ["_range", "_elevation", "_windage", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"]; +private ["_range", "_elevation", "_windage", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"]; _lastColumnOutput = ""; ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))]; @@ -39,7 +39,7 @@ lnbClear 5007; _velocity = _x select 5; _kineticEnergy = _x select 6; - switch ((GVAR(currentScopeUnit) select GVAR(currentTarget))) do + switch (GVAR(currentScopeUnit)) do { case 0: { @@ -55,8 +55,8 @@ lnbClear 5007; case 3: { - _elevationScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 7); - _windageScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 8); + _elevationScopeStep = (GVAR(workingMemory) select 7); + _windageScopeStep = (GVAR(workingMemory) select 8); _elevation = Round(_elevation / _elevationScopeStep); _windage = Round(_windage / _windageScopeStep); diff --git a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf index 378124ad4f..1d5add83db 100644 --- a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf +++ b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -(GVAR(workingMemory) select GVAR(currentTarget)) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))]; -(GVAR(workingMemory) select GVAR(currentTarget)) set [11, (GVAR(windageOutput) select GVAR(currentTarget))]; +GVAR(workingMemory) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))]; +GVAR(workingMemory) set [11, (GVAR(windageOutput) select GVAR(currentTarget))]; [] call FUNC(update_result); diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf index 11ff8a314e..addd1034b2 100644 --- a/addons/atragmx/functions/fnc_update_result.sqf +++ b/addons/atragmx/functions/fnc_update_result.sqf @@ -19,15 +19,15 @@ private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_win _elevationAbs = (GVAR(elevationOutput) select GVAR(currentTarget)); _windageAbs = (GVAR(windageOutput) select GVAR(currentTarget)); -_elevationCur = (GVAR(workingMemory) select GVAR(currentTarget)) select 10; -_windageCur = (GVAR(workingMemory) select GVAR(currentTarget)) select 11; +_elevationCur = GVAR(workingMemory) select 10; +_windageCur = GVAR(workingMemory) select 11; _elevationRel = _elevationAbs - _elevationCur; _windageRel = _windageAbs - _windageCur; _lead = (GVAR(leadOutput) select GVAR(currentTarget)); -switch ((GVAR(currentScopeUnit) select GVAR(currentTarget))) do +switch (GVAR(currentScopeUnit)) do { case 0: { @@ -55,8 +55,8 @@ switch ((GVAR(currentScopeUnit) select GVAR(currentTarget))) do case 3: { - _elevationScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 7); - _windageScopeStep = ((GVAR(workingMemory) select GVAR(currentTarget)) select 8); + _elevationScopeStep = (GVAR(workingMemory) select 7); + _windageScopeStep = (GVAR(workingMemory) select 8); _elevationAbs = Round(_elevationAbs / _elevationScopeStep); _windageAbs = Round(_windageAbs / _windageScopeStep); diff --git a/addons/atragmx/functions/fnc_update_scope_unit.sqf b/addons/atragmx/functions/fnc_update_scope_unit.sqf index 2a4435c376..55bb703eee 100644 --- a/addons/atragmx/functions/fnc_update_scope_unit.sqf +++ b/addons/atragmx/functions/fnc_update_scope_unit.sqf @@ -15,5 +15,5 @@ */ #include "script_component.hpp" -ctrlSetText [2000, GVAR(scopeUnits) select (GVAR(currentScopeUnit) select GVAR(currentTarget))]; -ctrlSetText [5000, GVAR(scopeUnits) select (GVAR(currentScopeUnit) select GVAR(currentTarget))]; +ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)]; +ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)]; diff --git a/addons/atragmx/functions/fnc_update_target_selection.sqf b/addons/atragmx/functions/fnc_update_target_selection.sqf index d48412def0..476c22d658 100644 --- a/addons/atragmx/functions/fnc_update_target_selection.sqf +++ b/addons/atragmx/functions/fnc_update_target_selection.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - (_dsp displayCtrl 500) ctrlEnable true; (_dsp displayCtrl 501) ctrlEnable true; (_dsp displayCtrl 502) ctrlEnable true; diff --git a/addons/atragmx/functions/fnc_update_unit_selection.sqf b/addons/atragmx/functions/fnc_update_unit_selection.sqf index dacc228032..f6a51c5cfc 100644 --- a/addons/atragmx/functions/fnc_update_unit_selection.sqf +++ b/addons/atragmx/functions/fnc_update_unit_selection.sqf @@ -15,8 +15,6 @@ */ #include "script_component.hpp" -#define _dsp (uiNamespace getVariable "ATragMX_Display") - (_dsp displayCtrl 600) ctrlEnable true; (_dsp displayCtrl 601) ctrlEnable true; (_dsp displayCtrl 602) ctrlEnable true; diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf index 15e65c38a6..e7f0c2c301 100644 --- a/addons/atragmx/functions/fnc_update_zero_range.sqf +++ b/addons/atragmx/functions/fnc_update_zero_range.sqf @@ -16,16 +16,16 @@ #include "script_component.hpp" private ["_scopeBaseAngle"]; -_scopeBaseAngle = ((GVAR(workingMemory) select GVAR(currentTarget)) select 3); +_scopeBaseAngle = (GVAR(workingMemory) select 3); private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"]; -_bulletMass = (GVAR(workingMemory) select GVAR(currentTarget)) select 12; -_boreHeight = (GVAR(workingMemory) select GVAR(currentTarget)) select 5; -_airFriction = (GVAR(workingMemory) select GVAR(currentTarget)) select 4; -_muzzleVelocity = (GVAR(workingMemory) select GVAR(currentTarget)) select 1; -_bc = (GVAR(workingMemory) select GVAR(currentTarget)) select 15; -_dragModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 16; -_atmosphereModel = (GVAR(workingMemory) select GVAR(currentTarget)) select 17; +_bulletMass = GVAR(workingMemory) select 12; +_boreHeight = GVAR(workingMemory) select 5; +_airFriction = GVAR(workingMemory) select 4; +_muzzleVelocity = GVAR(workingMemory) select 1; +_bc = GVAR(workingMemory) select 15; +_dragModel = GVAR(workingMemory) select 16; +_atmosphereModel = GVAR(workingMemory) select 17; private ["_zeroRange"]; _zeroRange = Round(parseNumber(ctrlText 140)); @@ -34,14 +34,14 @@ if (GVAR(currentUnit) != 2) then _zeroRange = _zeroRange / 1.0936133; }; if (_zeroRange < 10) exitWith { - (GVAR(workingMemory) select GVAR(currentTarget)) set [2, _zeroRange]; - (GVAR(workingMemory) select GVAR(currentTarget)) set [3, 0]; + GVAR(workingMemory) set [2, _zeroRange]; + GVAR(workingMemory) set [3, 0]; }; private ["_temperature", "_barometricPressure", "_relativeHumidity"]; -_temperature = (GVAR(temperature) select GVAR(currentTarget)); -_barometricPressure = (GVAR(barometricPressure) select GVAR(currentTarget)); -_relativeHumidity = (GVAR(relativeHumidity) select GVAR(currentTarget)); +_temperature = GVAR(temperature); +_barometricPressure = GVAR(barometricPressure); +_relativeHumidity = GVAR(relativeHumidity); if (GVAR(currentUnit) == 1) then { _temperature = (_temperature - 32) / 1.8; @@ -51,5 +51,5 @@ if (GVAR(currentUnit) == 1) then private ["_result"]; _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution); -(GVAR(workingMemory) select GVAR(currentTarget)) set [2, _zeroRange]; -(GVAR(workingMemory) select GVAR(currentTarget)) set [3, _scopeBaseAngle + (_result select 0) / 60]; +GVAR(workingMemory) set [2, _zeroRange]; +GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60]; diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp index 062df59d19..014524c6dd 100644 --- a/addons/atragmx/script_component.hpp +++ b/addons/atragmx/script_component.hpp @@ -9,4 +9,6 @@ #define DEBUG_SETTINGS DEBUG_SETTINGS_ATRAGMX #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" + +#define _dsp (uiNamespace getVariable "ATragMX_Display") diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml index c831e8c9e5..1baa4fb38c 100644 --- a/addons/atragmx/stringtable.xml +++ b/addons/atragmx/stringtable.xml @@ -17,17 +17,20 @@ Open ATragMX Otwórz ATragMX + Открыть ATragMX Abrir ATragMX Rugged PDA with ATragMX Przenośny PDA z kalkulatorem balistycznym ATragMX + Защищенный КПК с ATragMX PDA rugerizada con ATragMX Open ATragMX Otwórz ATragMX + Открыть ATragMX Abrir ATragMX - \ No newline at end of file + diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml index e950d6ea59..db98c4fffc 100644 --- a/addons/attach/stringtable.xml +++ b/addons/attach/stringtable.xml @@ -11,7 +11,7 @@ Acoplar item >> Attacca l'oggetto >> Tárgy hozzácsatolása >> - Добавить приспособления + Прикрепить предмет Attach @@ -23,7 +23,7 @@ Acoplar Attacca Hozzácsatolás - Присоединить + Прикрепить Detach item @@ -47,7 +47,7 @@ Marcador IV Acoplado Strobo IR attaccata Infravörös jeladó hozzácsatolva - ИК-маяк присоединён + ИК-маяк прикреплён IR Strobe Detached @@ -71,7 +71,7 @@ Granada IV Acoplada Granata IR attaccata Infravörös gránát hozzácsatolva - ИК-граната присоединена + ИК-граната прикреплена IR Grenade Detached @@ -95,7 +95,7 @@ Chemlight Acoplada Chemlight attaccata Chemlight hozzácsatolva - Химсвет присоединён + Химсвет прикреплён Chemlight Detached diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 87f3a99df1..76a3970063 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -3,21 +3,20 @@ class CfgAmmo { class BulletCore; class BulletBase: BulletCore { - // Default: 6 | More is good, but too much is bad (especially with wind deflection / advanced ballistics) - timeToLive = 10; + timeToLive=6; }; class B_20mm : BulletBase { - timeToLive = 30; + timeToLive=30; }; class B_25mm : BulletBase { - timeToLive = 30; + timeToLive=30; }; class B_35mm_AA : BulletBase { - timeToLive = 30; + timeToLive=30; }; class B_30mm_AP : BulletBase { - timeToLive = 30; + timeToLive=30; }; class B_556x45_Ball : BulletBase { @@ -85,7 +84,7 @@ class CfgAmmo { 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_ballisticCoefficients[]={0.168}; ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; + ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={10, 16.3, 20}; @@ -103,13 +102,13 @@ class CfgAmmo { 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_ballisticCoefficients[]={0.168}; ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; + ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={10, 16.3, 20}; }; class B_65x39_Caseless : BulletBase { - airFriction=-0.000772; + airFriction=-0.000785; typicalSpeed=800; ACE_caliber=0.264; ACE_bulletLength=1.295; @@ -142,13 +141,13 @@ class CfgAmmo { ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; ACE_dragModel=7; - ACE_muzzleVelocities[]={760, 790, 820, 830}; - ACE_barrelLengths[]={16, 20, 24, 26}; + ACE_muzzleVelocities[]={730, 760, 790, 820, 830}; + ACE_barrelLengths[]={10, 16, 20, 24, 26}; }; class B_762x51_Ball : BulletBase { airFriction=-0.001035; typicalSpeed=833; - hit=14; + hit=9; ACE_caliber=0.308; ACE_bulletLength=1.14; ACE_bulletMass=146; @@ -173,15 +172,46 @@ class CfgAmmo { ACE_bulletLength=1.24; ACE_bulletMass=175; 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_ballisticCoefficients[]={0.505, 0.496, 0.485, 0.485, 0.485}; - ACE_velocityBoundaries[]={853, 549, 549, 549}; + ACE_ballisticCoefficients[]={0.243}; + ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ICAO"; - ACE_dragModel=1; + ACE_dragModel=7; ACE_muzzleVelocities[]={750, 780, 790, 794}; ACE_barrelLengths[]={16, 20, 24, 26}; }; - class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball - { + class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball { + airFriction=-0.00103; + caliber=0.85; + hit=14; + typicalSpeed=890; + ACE_caliber=0.308; + ACE_bulletLength=1.24; + ACE_bulletMass=130; + ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; + ACE_ballisticCoefficients[]={0.377}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=1; + ACE_muzzleVelocities[]={838, 892, 910}; + ACE_barrelLengths[]={13, 16, 20}; + }; + class ACE_762x51_Ball_Subsonic : B_762x51_Ball { + airFriction=-0.000535; + caliber=0.5; + hit=6; + typicalSpeed=790; + ACE_caliber=0.308; + ACE_bulletLength=1.340; + ACE_bulletMass=200; + ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; + ACE_ballisticCoefficients[]={0.235}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=7; + ACE_muzzleVelocities[]={305, 325, 335, 340}; + ACE_barrelLengths[]={16, 20, 24, 26}; + }; + class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball { airFriction=-0.000830; caliber=1.08; hit=17; @@ -197,8 +227,7 @@ class CfgAmmo { ACE_muzzleVelocities[]={865, 900, 924}; ACE_barrelLengths[]={20, 24, 26}; }; - class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball - { + class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball { airFriction=-0.000815; caliber=1.12; hit=18; @@ -214,8 +243,7 @@ class CfgAmmo { ACE_muzzleVelocities[]={847, 867, 877}; ACE_barrelLengths[]={20, 24, 26}; }; - class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball - { + class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball { airFriction=-0.00076; caliber=1.15; hit=19; @@ -231,23 +259,7 @@ class CfgAmmo { ACE_muzzleVelocities[]={800, 853, 884}; ACE_barrelLengths[]={20, 24, 26}; }; - class ACE_762x51_Ball_Subsonic : B_762x51_Ball { - airFriction=-0.000535; - caliber=0.5; - hit=16; - typicalSpeed=790; - ACE_caliber=0.308; - ACE_bulletLength=1.340; - ACE_bulletMass=200; - ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; - ACE_ballisticCoefficients[]={0.235}; - ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ICAO"; - ACE_dragModel=7; - ACE_muzzleVelocities[]={305, 325, 335, 340}; - ACE_barrelLengths[]={16, 20, 24, 26}; - }; - class B_762x54_Ball : BulletBase { + class B_762x54_Ball: B_762x51_Ball { airFriction=-0.001023; typicalSpeed=820; ACE_caliber=0.312; @@ -350,7 +362,7 @@ class CfgAmmo { ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.17}; ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; + ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={440, 460, 480}; ACE_barrelLengths[]={4, 5, 9}; @@ -365,7 +377,7 @@ class CfgAmmo { ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.125}; ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; + ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={3.8, 5, 9}; @@ -395,7 +407,7 @@ class CfgAmmo { ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619}; ACE_ballisticCoefficients[]={0.189}; ACE_velocityBoundaries[]={}; - ACE_standardAtmosphere="ASM"; + ACE_standardAtmosphere="ICAO"; ACE_dragModel=1; ACE_muzzleVelocities[]={360, 400, 430}; ACE_barrelLengths[]={4, 4.61, 9}; @@ -445,6 +457,7 @@ class CfgAmmo { ACE_barrelLengths[]={20, 24.41, 26}; }; class B_408_Ball : BulletBase { + timeToLive=10; airFriction=-0.000395; typicalSpeed=910; ACE_caliber=0.408; @@ -460,6 +473,7 @@ class CfgAmmo { ACE_barrelLengths[]={29}; }; class ACE_106x83mm_Ball : B_408_Ball { + timeToLive=10; ACE_caliber=0.416; ACE_bulletLength=2.089; ACE_bulletMass=398; @@ -472,7 +486,8 @@ class CfgAmmo { ACE_barrelLengths[]={29}; }; class B_338_Ball : BulletBase { - airFriction=-0.00061 + timeToLive=10; + airFriction=-0.000606; typicalSpeed=915; ACE_caliber=0.338; ACE_bulletLength=1.558; @@ -500,10 +515,9 @@ class CfgAmmo { ACE_barrelLengths[]={20, 24, 26}; }; class ACE_338_Ball : B_338_Ball { - airFriction=-0.000526; + timeToLive=10; + airFriction=-0.000535; caliber=1.55; - deflecting=12; - hit=20; typicalSpeed=826; ACE_caliber=0.338; ACE_bulletLength=1.70; @@ -516,6 +530,22 @@ class CfgAmmo { ACE_muzzleVelocities[]={800, 820, 826, 830}; ACE_barrelLengths[]={20, 24, 26.5, 28}; }; + class ACE_338_Ball_API526 : B_338_Ball { + timeToLive=10; + airFriction=-0.000673; + caliber=2.4; + typicalSpeed=826; + ACE_caliber=0.338; + ACE_bulletLength=1.535; + ACE_bulletMass=253; + 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_ballisticCoefficients[]={0.290}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=7; + ACE_muzzleVelocities[]={880, 915, 925}; + ACE_barrelLengths[]={20, 26, 28}; + }; class B_127x54_Ball : BulletBase { airFriction=-0.00014; typicalSpeed=300; @@ -531,6 +561,7 @@ class CfgAmmo { ACE_barrelLengths[]={17.2}; }; class B_127x99_Ball : BulletBase { + timeToLive=10; airFriction=-0.0006; typicalSpeed=853; ACE_caliber=0.510; @@ -545,6 +576,9 @@ class CfgAmmo { ACE_barrelLengths[]={29}; }; class ACE_127x99_Ball_AMAX : B_127x99_Ball { + timeToLive=10; + airFriction=-0.000374; + typicalSpeed=860; ACE_caliber=0.510; ACE_bulletLength=2.540; ACE_bulletMass=750; @@ -557,6 +591,8 @@ class CfgAmmo { ACE_barrelLengths[]={29}; }; class B_127x108_Ball : BulletBase { + timeToLive=10; + airFriction=-0.00064; typicalSpeed=820; ACE_caliber=0.511; ACE_bulletLength=2.520; diff --git a/addons/ballistics/CfgMagazines.hpp b/addons/ballistics/CfgMagazines.hpp index de3f80fd83..9ce3ad3eb0 100644 --- a/addons/ballistics/CfgMagazines.hpp +++ b/addons/ballistics/CfgMagazines.hpp @@ -117,12 +117,21 @@ class CfgMagazines { class ACE_10Rnd_762x51_M118LR_Mag: 10Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M118LR"; - count=10; + count = 10; displayName = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Name"; displayNameShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort"; descriptionShort = "$STR_ACE_10Rnd_762x51_M118LR_Mag_Description"; initSpeed = 780; }; + class ACE_10Rnd_762x51_Mk319_Mod_0_Mag: 10Rnd_762x51_Mag { + author = "$STR_ACE_Common_ACETeam"; + ammo = "ACE_762x51_Ball_Mk319_Mod_0"; + count = 10; + displayName = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name"; + displayNameShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; + descriptionShort = "$STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description"; + initSpeed = 900; + }; class ACE_20Rnd_762x51_M118LR_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x51_Ball_M118LR"; @@ -131,6 +140,14 @@ class CfgMagazines { descriptionShort = "$STR_ACE_20Rnd_762x51_M118LR_Mag_Description"; initSpeed = 780; }; + class ACE_20Rnd_762x51_Mk319_Mod_0_Mag: 20Rnd_762x51_Mag { + author = "$STR_ACE_Common_ACETeam"; + ammo = "ACE_762x51_Ball_Mk319_Mod_0"; + displayName = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name"; + displayNameShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort"; + descriptionShort = "$STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description"; + initSpeed = 900; + }; class ACE_20Rnd_762x67_Mk248_Mod_0_Mag: 20Rnd_762x51_Mag { author = "$STR_ACE_Common_ACETeam"; ammo = "ACE_762x67_Ball_Mk248_Mod_0"; @@ -171,6 +188,33 @@ class CfgMagazines { descriptionShort = "$STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description"; initSpeed = 800; }; + class ACE_10Rnd_338_API526_Mag: 10Rnd_338_Mag { + author = "$STR_ACE_Common_ACETeam"; + ammo = "ACE_338_Ball_API526"; + displayName = "$STR_ACE_10Rnd_338_API526_Mag_Name"; + displayNameShort = "$STR_ACE_10Rnd_338_API526_Mag_NameShort"; + descriptionShort = "$STR_ACE_10Rnd_338_API526_Mag_Description"; + initSpeed = 880; + }; + + class 5Rnd_127x108_Mag; + class ACE_5Rnd_127x99_Mag: 5Rnd_127x108_Mag { + author = "$STR_ACE_Common_ACETeam"; + ammo = "B_127x99_Ball"; + displayName = "$STR_ACE_5Rnd_127x99_Mag_Name"; + displayNameShort = "$STR_ACE_5Rnd_127x99_Mag_NameShort"; + descriptionShort = "$STR_ACE_5Rnd_127x99_Mag_Description"; + initSpeed = 853; + }; + class ACE_5Rnd_127x99_AMAX_Mag: 5Rnd_127x108_Mag { + author = "$STR_ACE_Common_ACETeam"; + ammo = "ACE_127x99_Ball_AMAX"; + displayName = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Name"; + displayNameShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort"; + descriptionShort = "$STR_ACE_5Rnd_127x99_AMAX_Mag_Description"; + initSpeed = 860; + }; + class 30Rnd_9x21_Mag: CA_Magazine { initSpeed = 450; @@ -200,7 +244,7 @@ class CfgMagazines { initSpeed = 250; }; - class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: CA_Magazine { + class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 { initSpeed = 250; }; diff --git a/addons/ballistics/CfgVehicles.hpp b/addons/ballistics/CfgVehicles.hpp index 7c32774f9f..4ea9fc87a2 100644 --- a/addons/ballistics/CfgVehicles.hpp +++ b/addons/ballistics/CfgVehicles.hpp @@ -23,6 +23,10 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_100Rnd_65x39_caseless_mag_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_200Rnd_65x39_cased_Box_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_30Rnd_556x45_Stanag_Tracer_Dim,1); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); }; }; @@ -31,16 +35,28 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4); MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4); + MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); }; }; class Box_NATO_Support_F: NATO_Box_Base { class TransportMagazines { MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4); - MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,6); + MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4); + MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,3); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); }; }; @@ -50,6 +66,8 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4); MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4); + MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4); }; }; @@ -142,10 +160,18 @@ class CfgVehicles { }; }; - class ACE_Box_Misc: Box_NATO_Support_F { + class ACE_Box_Ammo: NATO_Box_Base { + scope = 2; + accuracy = 1000; + displayName = "[ACE] Ammo Supply Crate"; + // TODO: model = "..."; + author = "$STR_ACE_Common_ACETeam"; class TransportMagazines { MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_SD,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_M118LR_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_M118LR_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_762x51_Mk319_Mod_0_Mag,4); + MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mk319_Mod_0_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x51_Mag_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x67_Mk248_Mod_0_Mag,4); MACRO_ADDMAGAZINE(ACE_20Rnd_762x67_Mk248_Mod_1_Mag,4); @@ -159,6 +185,10 @@ class CfgVehicles { MACRO_ADDMAGAZINE(ACE_100Rnd_65x39_caseless_mag_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_200Rnd_65x39_cased_Box_Tracer_Dim,4); MACRO_ADDMAGAZINE(ACE_30Rnd_65x47_Scenar_mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_300gr_HPBT_Mag,4); + MACRO_ADDMAGAZINE(ACE_10Rnd_338_API526_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_Mag,4); + MACRO_ADDMAGAZINE(ACE_5Rnd_127x99_AMAX_Mag,4); }; }; }; diff --git a/addons/ballistics/CfgWeapons.hpp b/addons/ballistics/CfgWeapons.hpp index d5b6ad448f..26b07303c0 100644 --- a/addons/ballistics/CfgWeapons.hpp +++ b/addons/ballistics/CfgWeapons.hpp @@ -422,7 +422,7 @@ class CfgWeapons { ACE_barrelTwist=7; ACE_barrelLength=18.1; }; - class arifle_TRG21_GL_F: Tavor_base_F { + class arifle_TRG21_GL_F: arifle_TRG21_F { magazines[] = { "30Rnd_556x45_Stanag", "30Rnd_556x45_Stanag_Tracer_Red", @@ -503,6 +503,7 @@ class CfgWeapons { "20Rnd_762x51_Mag", "ACE_20Rnd_762x51_Mag_Tracer_Dim", "ACE_20Rnd_762x51_M118LR_Mag", + "ACE_20Rnd_762x51_Mk319_Mod_0_Mag", "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9724; @@ -522,14 +523,21 @@ class CfgWeapons { ACE_barrelLength=29; }; class srifle_GM6_F: GM6_base_F { + magazines[] = { + "5Rnd_127x108_Mag", + "5Rnd_127x108_APDS_Mag", + "ACE_5Rnd_127x99_Mag", + "ACE_5Rnd_127x99_AMAX_Mag" + }; initSpeed = -1.0; ACE_barrelTwist=15; - ACE_barrelLength=43.3; + ACE_barrelLength=36.6; }; class srifle_DMR_02_F: DMR_02_base_F { magazines[] = { "10Rnd_338_Mag", "ACE_10Rnd_338_300gr_HPBT_Mag", + "ACE_10Rnd_338_API526_Mag", "ACE_20Rnd_762x67_Mk248_Mod_0_Mag", "ACE_20Rnd_762x67_Mk248_Mod_1_Mag", "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag" @@ -543,6 +551,7 @@ class CfgWeapons { "20Rnd_762x51_Mag", "ACE_20Rnd_762x51_Mag_Tracer_Dim", "ACE_20Rnd_762x51_M118LR_Mag", + "ACE_20Rnd_762x51_Mk319_Mod_0_Mag", "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9843; @@ -564,6 +573,7 @@ class CfgWeapons { "20Rnd_762x51_Mag", "ACE_20Rnd_762x51_Mag_Tracer_Dim", "ACE_20Rnd_762x51_M118LR_Mag", + "ACE_20Rnd_762x51_Mk319_Mod_0_Mag", "ACE_20Rnd_762x51_Mag_SD" }; initSpeed = -0.9916; diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 6419b1a199..cf59b59f40 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -438,31 +438,12 @@ Calibro: 7.62x51 mm AP<br />Munizioni: 20<br />In uso su: Mk18 ABR Калибр: 7.62x51 мм дозвуковые<br />Патронов: 20<br />Применимы в: Mk18 ABR - - - .338 LM 10Rnd AP Mag - .338 LM 10-Schuss-Magazin Hartkern - Magazynek .338 LM 10rd AP - Cargador de 20 balas AP de .338 LM - - - .338 LM AP - .338 LM AP - .338 LM AP - .338 LM AP - .338 LM AP - - - Caliber: .338 Lapua Magnum AP<br />Rounds: 10<br />Used in: MAR-10 - Kaliber: .338 Lapua Magnum Hartkern<br />Schuss: 10<br />Verwendet für: MAR-10 - Kaliber: .338 Lapua Magnum AP<br />Pociski: 10<br />Używany w: MAR-10 - Calibre: .338 Lapua Magnum AP<br />Balas: 10<br />Se usa en: MAR-10 - .338 NM 130Rnd Tracer Belt .338 NM 130-Schuss-Gurt Leuchtspur Taśma .338 NM 130rd Smugacz + Bande .338 NM 130Cps Traçante Cinta de 130 balas trazadoras de .338 NM @@ -470,18 +451,21 @@ .338 NM Leuchtspur .338 NM Tracer .338 NM Svítící + .338 NM Traçante .338 NM trazadora Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Leuchtspur<br />Schuss: 130<br />Verwendet für: SPMG Kaliber: .338 Norma Magnum Smugacz<br />Pociski: 130<br />Używany w: SPMG + Calibre: .338 Norma Magnum Traçante<br />Cartouches: 130<br />Utilisé dans: SPMG Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG .338 NM 130Rnd IR-DIM Belt .338 NM 130-Schuss-Gurt Leuchtspur IR-DIM Taśma .338 NM 130rd IR-DIM + Bande .338 NM 130Cps IR-DIM Cinta de 130 balas IR-DIM de .338 NM @@ -489,18 +473,21 @@ .338 LM IR-DIM .338 NM IR-DIM .338 NM IR-DIM + .338 NM IR-DIM .338 NM IR-DIM Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Schuss: 130<br />Verwendet für: SPMG Kaliber: .338 Norma Magnum Smugacz IR-DIM<br />Pociski: 130<br />Używany w: SPMG + Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartouches: 130<br />Utilisé dans: SPMG Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG .338 NM 130Rnd AP Belt .338 NM 130-Schuss-Gurt Hartkern Taśma .338 NM 130rd AP + Bande .338 NM 130Cps AP Cinta de 130 balas AP de .338 NM @@ -508,12 +495,14 @@ .338 NM AP .338 NM AP .338 NM AP + .338 NM AP .338 NM AP Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG Kaliber: .338 Norma Magnum Hartkern<br />Schuss: 130<br />Verwendet für: SPMG Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG + Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé dans: SPMG Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG @@ -521,6 +510,7 @@ 9.3mm 10Rnd Tracer Mag 9,3mm 10-Schuss-Magazin Leuchtspur Magazynek 9.3mm 10rd Smugacz + Chargeur 9.3mm 10Cps Traçante Cargador de 10 balas trazadoras de 9.3mm @@ -528,18 +518,21 @@ 9,3mm Leuchtspur 9,3mm Smugacz 9.3mm Svítící + 9.3mm Traçante 9.3mm trazadora Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur<br />Schuss: 10<br />Verwendet für: Cyrus Kaliber: 9,3x64 mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé dans: Cyrus Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus 9.3mm 10Rnd Tracer IR-DIM Mag 9,3mm 10-Schuss-Magazin Leuchtspur IR-DIM Magazynek 9,3mm 10rd Smugacz IR-DIM + Chargeur 9.3mm 10Cps Traçante IR-DIM Cargador de 10 balas trazadoras IR-DIM de 9.3mm @@ -547,18 +540,21 @@ 9,3mm IR-DIM 9,3mm IR-DIM 9.3mm IR-DIM + 9.3mm IR-DIM 9.3mm IR-DIM Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Schuss: 10<br />Verwendet für: Cyrus Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé dans: Cyrus Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus 9.3mm 10Rnd AP Mag 9,3mm 10-Schuss-Magazin Hartkern Magazynek 9,3mm 10rd AP + Chargeur 9.3mm 10Cps AP Cargador de 10 balas AP de 9.3mm @@ -566,12 +562,14 @@ 9,3mm AP 9,3mm AP 9.3mm AP + 9.3mm AP 9.3mm AP Caliber: 9.3x64mm AP<br />Rounds: 10<br />Used in: Cyrus Kaliber: 9,3x64mm Hartkern<br />Schuss: 10<br />Verwendet für: Cyrus Kaliber: 9,3x64 mm AP<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm AP<br />Cartouches: 10<br />Utilisé dans: Cyrus Calibre: 9.3x64mm AP<br />Balas: 10<br />Se usa en: Cyrus @@ -579,6 +577,7 @@ 9.3mm 150Rnd Tracer Belt 9,3mm 150-Schuss-Gurt Leuchtspur Taśma 9,3mm 150rd Smugacz + Bande 9.3mm 150Cps Traçante Cinta de 150 balas trazadoras de 9.3mm @@ -586,18 +585,21 @@ 9,3mm Leuchtspur 9,3mm Smugacz 9.3mm Svítící + 9.3mm Traçante 9.3mm trazadora Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur<br />Schuss: 150<br />Verwendet für: Navid Kaliber: 9,3x64 mm Smugacz<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé dans: Navid Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid 9.3mm 150Rnd Tracer IR-DIM Belt 9,3mm 150-Schuss-Gurt Leuchtspur IR-DIM Taśma 9,3mm 150rd Smugacz IR-DIM + Bande 9.3mm 150Cps Traçante IR-DIM Cinta de 150 balas trazadoras IR-DIM de 9.3mm @@ -605,18 +607,21 @@ 9,3mm IR-DIM 9,3mm IR-DIM 9.3mm IR-DIM + 9.3mm IR-DIM 9.3mm IR-DIM Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Schuss: 150<br />Verwendet für: Navid Kaliber: 9,3x64 mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé dans: Navid Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid 9.3mm 150Rnd AP Belt 9,3mm 150-Schuss-Gurt Hartkern Taśma 9,3mm 150rd AP + Bande 9.3mm 150Cps AP Cinta de 150 balas AP de 9.3mm @@ -624,217 +629,327 @@ 9,3mm AP 9,3mm AP 9.3mm AP + 9.3mm AP 9.3mm AP Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid Kaliber: 9,3x64mm Hartkern<br />Schuss: 150<br />Verwendet für: Navid Kaliber: 9,3x64 mm AP<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé dans: Navid Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid 9x19mm 16Rnd Mag Magazynek 9x19mm 16rd + Chargeur 9x19mm 16Cps Cargador de 16 balas de 9x19mm 9x19mm 9x19mm + 9x19mm 9x19mm - 9x19mm 16Rnd Mag + 9x19mm 30Rnd Mag Magazynek 9x19mm 16rd + 9x19mm 30Cps Cargador de 16 balas de 9x19mm 9x19mm 30Rnd Mag Magazynek 9x19mm 30rd + 9x19mm 30Cps Cargador de 30 balas de 9x19mm 9x19mm 9x19mm + 9x19mm 9x19mm 9x19mm 30Rnd Mag Magazynek 9x19mm 30rd + 9x19mm 30Cps Cargador de 30 balas de 9x19mm 7.62x54mm 10Rnd Tracer IR-DIM Mag Magazynek 7,62x54 mm 10rd Smugacz IR-DIM + Chargeur 7.62x54mm 10Rnd Traçante IR-DIM Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm 7.62mm IR-DIM 7,62mm IR-DIM + 7.62mm IR-DIM 7.62mm IR-DIM 7.62x54mm 10Rnd Tracer IR-DIM Mag Magazynek 7,62x54 mm 10rd Smugacz IR-DIM + Chargeur 7.62x54mm 10Cps Traçante IR-DIM Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm 6.5mm 100Rnd Tracer IR-DIM Mag Magazynek 6,5mm 100rd Smugacz IR-DIM + Chargeur 6.5mm 100Rnd Traçante IR-DIM Cargador de 100 balas trazadoras IR-DIM de 6.5mm 6.5mm IR-DIM 6,5mm IR-DIM + 6.5mm IR-DIM 6.5mm IR-DIM 6.5mm 100Rnd Tracer IR-DIM Mag Magazynek 6,5mm 100rd Smugacz IR-DIM + Chargeur 6.5mm 100Rnd Traçante IR-DIM Cargador de 100 balas trazadoras IR-DIM de 6.5mm 6.5mm 200Rnd Tracer IR-DIM Belt Magazynek 6,5mm 200rd Smugacz IR-DIM + Bande 6.5mm 200Rnd Traçante IR-DIM Cinta de 200 balas trazadoras IR-DIM de 6.5mm 6.5mm IR-DIM 6,5mm IR-DIM + 6.5mm IR-DIM 6.5mm IR-DIM 6.5mm 200Rnd Tracer IR-DIM Belt Magazynek 6,5mm 200rd Smugacz IR-DIM + Bande 6.5mm 200Cps Traçante IR-DIM Cinta de 200 balas trazadoras IR-DIM de 6.5mm 5.56mm 30Rnd Mag (Mk262) Magazynek 5,56mm 30rd Mk262 + 5.56mm 30Cps (Mk262) Cargador de 30 balas de 5.56mm (Mk262) - 5.56mm (Mk262) - 5,56mm (Mk262) + 5.56mm Mk262 + 5,56mm Mk262 + 5.56mm Mk262 5.56mm (Mk262) Caliber: 5.56x45 mm NATO (Mk262)<br />Rounds: 30 Kaliber: 5,56x45 mm NATO (Mk262)<br />Pociski: 30 + Calibre: 5.56x45 mm NATO (Mk262)<br />Cartouches: 30 Calibre: 5.56x45 mm NATO (Mk262)<br />Balas: 30 5.56mm 30Rnd Mag (Mk318) Magazynek 5,56mm 30rd Mk318 + 5.56mm 30Cps (Mk318) Cargador de 30 balas de 5.56mm (Mk318) - 5.56mm (Mk318) - 5,56mm (Mk318) + 5.56mm Mk318 + 5,56mm Mk318 + 5.56mm Mk318 5.56mm (Mk318) Caliber: 5.56x45 mm NATO (Mk318)<br />Rounds: 30 Kaliber: 5,56x45 mm NATO (Mk318)<br />Pociski: 30 + Calibre: 5.56x45 mm NATO (Mk318)<br />Cartouches: 30 Calibre: 5.56x45 mm NATO (Mk318)<br />Balas: 30 7.62mm 10Rnd Mag (M118LR) Magazynek 7,62mm 10rd (M118LR) + 7.62mm 10Cps (M118LR) Cargador de 10 balas de 7.62mm (M118LR) - 7.62mm (M118LR) - 7,62mm (M118LR) + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR 7.62mm (M118LR) Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 10 Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 10 + Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 10 Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 10 7.62mm 20Rnd Mag (M118LR) Magazynek 7,62mm 20rd (M118LR) + 7.62mm 20Cps (M118LR) Cargador de 20 balas de 7.62mm (M118LR) - 7.62mm (M118LR) - 7,62mm (M118LR) + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR 7.62mm (M118LR) Caliber: 7.62x51 mm NATO (M118LR)<br />Rounds: 20 Kaliber: 7,62x51 mm NATO (M118LR)<br />Pociski: 20 + Calibre: 7.62x51 mm NATO (M118LR)<br />Cartouches: 20 Calibre: 7.62x51 mm NATO (M118LR)<br />Balas: 20 + + 7.62mm 10Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 10rd (Mk319 Mod 0) + 7.62mm 10Cps (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + + + Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 10 + Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 10 + Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 10 + + + 7.62mm 20Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 20rd (Mk319 Mod 0) + 7.62mm 20Cps (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + + + Caliber: 7.62x51 mm NATO (Mk319 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)<br />Pociski: 20 + Calibre: 7.62x51 mm NATO (Mk319 Mod 0)<br />Cartouches: 20 + 7.62mm 20Rnd Mag (Mk248 Mod 0) Magazynek 7,62mm 20rd (Mk248 Mod 0) + 7.62mm 20Cps (Mk248 Mod 0) Cargador de 20 balas de 7.62mm (Mk248 Mod 0) 7.62mm (Mk248 Mod 0) 7,62mm (Mk248 Mod 0) + 7.62mm (Mk248 Mod 0) 7.62mm (Mk248 Mod 0) Caliber: 7.62x67 mm NATO (Mk248 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x51 mm NATO (Mk248 Mod 0)<br />Pociski: 20 + Kaliber: 7,62x67 mm NATO (Mk248 Mod 0)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 Calibre: 7.62x67 mm NATO (Mk248 Mod 0)<br />Balas: 20 7.62mm 20Rnd Mag (Mk248 Mod 1) Magazynek 7,62mm 20rd (Mk248 Mod 1) + 7.62mm 20Cps (Mk248 Mod 1) Cargador de 20 balas de 7.62mm (Mk248 Mod 1) 7.62mm (Mk248 Mod 1) 7,62mm (Mk248 Mod 1) + 7.62mm (Mk248 Mod 1) 7.62mm (Mk248 Mod 1) Caliber: 7.62x67 mm NATO (Mk248 Mod 1)<br />Rounds: 20 Kaliber: 7,62x67 mm NATO (Mk248 Mod 1)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 Calibre: 7.62x67 mm NATO (Mk248 Mod 1)<br />Balas: 20 7.62mm 20Rnd Mag (Berger Hybrid OTM) Magazynek 7,62mm 20rd (Berger Hybrid OTM) + 7.62 20Cps (Berger Hybrid OTM) Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) 7.62mm (OTM) 7,62mm (OTM) + 7.62mm (OTM) 7.62mm (OTM) Caliber: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Rounds: 20 Kaliber: 7,62x67 mm NATO (Berger Hybrid OTM)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 Calibre: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Balas: 20 6.5x47mm 30Rnd Mag (HPBT Scenar) + 6.5x47mm 30Cps (HPBT Scenar) Cargador de 30 balas de 6.5x47mm (HPBT Scenar) 6.5mm Scenar + 6.5mm Scenar 6.5mm Scenar Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30 + Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30 - 8.6x70mm 10Rnd Mag (300gr Sierra MatchKing HPBT) + .338 10Rnd Mag (300gr Sierra MatchKing HPBT) + .338 10 Cps (300gr Sierra MatchKing HPBT) Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) .338 (HPBT) + .338 (HPBT) .338 (HPBT) Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Rounds: 10 + Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Cartouches: 10 Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Balas: 10 + + .338 10Rnd Mag (API526) + .338 10Cps (API526) + + + .338 AP + .338 AP + + + Caliber: 8.6x70mm (API526)<br />Rounds: 10 + Calibre: 8.6x70mm (API526)<br />Cartouches: 10 + + + 12.7x99mm 5Rnd Mag + 12.7x99mm 5Cps + + + 12.7mm + 12.7mm + + + Caliber: 12.7x99mm<br />Rounds: 5 + Calibre: 12.7x99mm<br />Cartouches: 5 + + + 12.7x99mm 5Rnd Mag (AMAX) + 12.7x99mm 5Rnd Mag (AMAX) + + + 12.7mm + 12.7mm + + + Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 + Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 + - \ No newline at end of file + diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index e992339186..5f134ab03b 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -29,11 +29,11 @@ if ((_unit getVariable [QGVAR(isHandcuffed), false]) isEqualTo _state) exitWith if (_state) then { _unit setVariable [QGVAR(isHandcuffed), true, true]; [_unit, QGVAR(Handcuffed), true] call EFUNC(common,setCaptivityStatus); - + if (_unit getVariable [QGVAR(isSurrendering), false]) then { //If surrendering, stop [_unit, false] call FUNC(setSurrendered); }; - + //Set unit cargoIndex (will be -1 if dismounted) _unit setVariable [QGVAR(CargoIndex), ((vehicle _unit) getCargoIndex _unit), true]; @@ -47,30 +47,29 @@ if (_state) then { if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { [_unit] call EFUNC(common,fixLoweredRifleAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); - + //Adds an animation changed eh //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) _animChangedEHID = _unit addEventHandler ["AnimChanged", { PARAMS_2(_unit,_newAnimation); if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { - ERROR("Handcuff animation interrupted"); - // systemChat format ["debug %2: new %1", _newAnimation, time]; + TRACE_1("Handcuff animation interrupted",_newAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; }]; _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; - + }; }, [_unit], 0.01, 0] call EFUNC(common,waitAndExecute); } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); - - //remove AnimChanged EH + + //remove AnimChanged EH _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; _unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit setVariable [QGVAR(handcuffAnimEHID), -1]; - + if (((vehicle _unit) == _unit) && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { //Break out of hands up animation loop [_unit, "ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index 30f9105511..d774e7f6e0 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -51,8 +51,7 @@ if (_state) then { _animChangedEHID = _unit addEventHandler ["AnimChanged", { PARAMS_2(_unit,_newAnimation); if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { - ERROR("Surrender animation interrupted"); - // systemChat format ["debug %2: new %1", _newAnimation, time]; + TRACE_1("Surrender animation interrupted",_newAnimation); [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); }; }]; diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 5a6e9f7b0e..5683eaf0d3 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -71,6 +71,7 @@ Fogoly berakása Загрузить пленного Embarcar Prisioneiro + Carica il prigioniero Unload Captive @@ -82,6 +83,7 @@ Fogoly kivevése Выгрузить пленного Desembarcar Prisioneiro + Scarica il prigioniero Cable Tie @@ -93,7 +95,7 @@ Algema Plástica Fascietta Gyorskötöző - Кабельная стяжка + Пластиковые наручники Cable ties that allow you to restrain prisoners. @@ -105,7 +107,7 @@ A algema plástica permite que você contenha prisioneiros. Fascietta che ti consente di arrestare i prigionieri. Gyorskötöző, emberek foglyulejtéséhez használható. - Кабельные стяжки позволяют связывать пленников. + Пластиковые наручники позволяют связывать пленников. Inventory of frisked person @@ -115,7 +117,7 @@ Motozott személy felszerelése Inventář prohledávané osoby Ekwipunek rewidowanej osoby - Инвентарь обысканных лиц + Инвентарь обысканного человека Inventário da pessoa revistada @@ -128,6 +130,7 @@ Motozás Обыскать человека Revistar + Perquisisci la persona Surrender @@ -136,8 +139,9 @@ Rendirse Vzdát se Poddaj się - Сдаться в плен + Сдаться Megadás + Arreso Stop Surrendering @@ -146,8 +150,9 @@ Dejar de rendirse Přestat se vzdávat Podejmij walkę ponownie - Отменить сдачу в плен + Прекратить сдачу в плен Megadás abbahagyása + Annulla la resa Only use on alive units @@ -158,6 +163,7 @@ Używaj tylko na żywych jednostkach Применимо только к живым юнитам Csak élő egységeken használni + Si può fare solo su persone vive Only use on dismounted inf @@ -168,6 +174,7 @@ Używaj tylko na piechocie poza wszelkimi pojazdami Применимо только к пехоте вне техники Csak járműben kívül lévő egységeken használni + Si può usare solo su fanteria a piedi Nothing under mouse @@ -178,6 +185,7 @@ Nie ma nic pod kursorem Ничего не выделено Semmi sincs az egér alatt + Niente selezionato diff --git a/addons/common/CfgVoice.hpp b/addons/common/CfgVoice.hpp index 9c53338e6e..1fb0f5d2b6 100644 --- a/addons/common/CfgVoice.hpp +++ b/addons/common/CfgVoice.hpp @@ -199,6 +199,8 @@ class ACE_RadioProtocolNoRadio: RadioProtocolBase { Ready[] = {}; Waiting[] = {}; StandingBy[] = {}; + RallyUp[] = {}; + UnderFireE[] = {}; /*IAmReady[] = {}; ReadyForOrders[] = {}; AwaitingOrders[] = {};*/ diff --git a/addons/common/ProgressScreen.hpp b/addons/common/ProgressScreen.hpp index 751d48af9f..df07e5ca2f 100644 --- a/addons/common/ProgressScreen.hpp +++ b/addons/common/ProgressScreen.hpp @@ -1,77 +1,74 @@ - class GVAR(ProgressBar_Dialog) { - idd = -1; - movingEnable = false; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 2)];); - objects[] = {}; + idd = -1; + movingEnable = false; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 2)];); + objects[] = {}; - class controlsBackground { - class Background { - idc = -1; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0.0}; - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; + class controlsBackground { + class Background { + idc = -1; + moving = 0; + font = "TahomaB"; + text = ""; + sizeEx = 0; + lineSpacing = 0; + access = 0; + type = 0; + style = 0; + size = 1; + colorBackground[] = {0, 0, 0, 0.0}; + colorText[] = {0, 0, 0, 0}; + x = "safezoneX"; + y = "safezoneY"; + w = "safezoneW"; + h = "safezoneH"; + }; + class Progress: ACE_gui_RscProgress { + idc = 1; + x = "1.2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "37.8 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = ".8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + colorFrame[] = {0,0,0,0.0}; + colorBar[] = {0.27,0.5,0.31,0.8}; + texture = "#(argb,8,8,3)color(1,1,1,0.7)"; + }; + class Title_Bar : ACE_gui_staticBase { + idc = 2; + style = 0x22; + colorBackground[] = {0, 0, 0, 0}; + colorText[] = {1, 1, 1, 1}; + x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; + y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; + w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; + h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; + }; }; - - class Progress: ACE_gui_RscProgress { - idc = 1; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = ".8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - colorFrame[] = {0,0,0,0.0}; - colorBar[] = {0.27,0.5,0.31,0.8}; - texture = "#(argb,8,8,3)color(1,1,1,0.7)"; - }; - - class Title_Bar : ACE_gui_staticBase { - idc = 2; - style = 0x22; - colorBackground[] = {0, 0, 0, 0}; - colorText[] = {1, 1, 1, 1}; - x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; - y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)"; - w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - }; }; class GVAR(DisableMouse_Dialog) { - idd = -1; - movingEnable = false; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];); - objects[] = {}; - class controlsBackground { - class Background { - idc = -1; - moving = 0; - font = "TahomaB"; - text = ""; - sizeEx = 0; - lineSpacing = 0; - access = 0; - type = 0; - style = 0; - size = 1; - colorBackground[] = {0, 0, 0, 0};//0.5 - colorText[] = {0, 0, 0, 0}; - x = "safezoneX"; - y = "safezoneY"; - w = "safezoneW"; - h = "safezoneH"; + idd = -1; + movingEnable = false; + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),_this select 0)];); + objects[] = {}; + class controlsBackground { + class Background { + idc = -1; + moving = 0; + font = "TahomaB"; + text = ""; + sizeEx = 0; + lineSpacing = 0; + access = 0; + type = 0; + style = 0; + size = 1; + colorBackground[] = {0, 0, 0, 0};//0.5 + colorText[] = {0, 0, 0, 0}; + x = "safezoneX"; + y = "safezoneY"; + w = "safezoneW"; + h = "safezoneH"; + }; }; - }; }; diff --git a/addons/common/functions/fnc_addActionEventHandler.sqf b/addons/common/functions/fnc_addActionEventHandler.sqf index a75b1537d1..a0e9d24f2c 100644 --- a/addons/common/functions/fnc_addActionEventHandler.sqf +++ b/addons/common/functions/fnc_addActionEventHandler.sqf @@ -31,7 +31,11 @@ if (typeName _statement == "STRING") then { _name = format ["ACE_Action_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [-1, [], []]]]; +_actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; + +if (_unit != _actionsVar select 2) then { // check if the unit is still valid, fixes respawn issues + _actionsVar = [-1, [-1, [], []], objNull]; +}; _actionID = _actionsVar select 0; _actions = _actionsVar select 1; @@ -65,6 +69,6 @@ if (_actionID == -1) then { _actionID = _unit addAction _addAction; }; -_unit setVariable [_name, [_actionID, [_id, _actionIDs, _actions]], false]; +_unit setVariable [_name, [_actionID, [_id, _actionIDs, _actions], _unit], false]; _id diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index 3191a57d72..03c56398c4 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -26,7 +26,7 @@ PARAMS_4(_totalTime,_args,_onFinish,_onFail); DEFAULT_PARAM(4,_localizedTitle,""); DEFAULT_PARAM(5,_condition,{true}); DEFAULT_PARAM(6,_exceptions,[]); -private ["_player", "_perFrameFunction"]; +private ["_player", "_perFrameFunction", "_ctrlPos"]; _player = ACE_player; @@ -35,14 +35,15 @@ closeDialog 0; createDialog QGVAR(ProgressBar_Dialog); (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetText _localizedTitle; -if (GVAR(SettingProgressBarLocation) == 1) then { - private "_ctrlPos"; - _ctrlPos = [1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2), 29 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2), 38 * (((safezoneW / safezoneH) min 1.2) / 40), 0.8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)]; - (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos; - (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos; - (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0; - (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0; -}; +//Adjust position based on user setting: +_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)); +_ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))]; +(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos; +(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0; +_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBar)); +_ctrlPos set [1, ((0.1 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))]; +(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos; +(uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0; _perFrameFunction = { diff --git a/addons/common/functions/fnc_removeActionEventHandler.sqf b/addons/common/functions/fnc_removeActionEventHandler.sqf index 7d92b3de75..2bcc970ab0 100644 --- a/addons/common/functions/fnc_removeActionEventHandler.sqf +++ b/addons/common/functions/fnc_removeActionEventHandler.sqf @@ -23,7 +23,7 @@ if (_id == -1) exitWith {}; _name = format ["ACE_Action_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [-1, [], []]]]; +_actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; _actionID = _actionsVar select 0; _actions = _actionsVar select 1; @@ -32,6 +32,8 @@ _currentID = _actions select 0; _actionIDs = _actions select 1; _actions = _actions select 2; +if (_unit != _actionsVar select 2) exitWith {}; + _id = _actionIDs find _id; if (_id == -1) exitWith {}; @@ -47,4 +49,4 @@ if (count _actions == 0) then { _actionID = -1; }; -_unit setVariable [_name, [_actionID, [_currentID, _actionIDs, _actions]], false]; +_unit setVariable [_name, [_actionID, [_currentID, _actionIDs, _actions], _unit], false]; diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index ade58c3742..d9ee389166 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -403,7 +403,7 @@ Die Hintergrundfarbe der ACE-Hinweise. El color de fondo de las notificaciones del ACE Il colore di sfondo dei suggerimenti dell'ACE. - Цвет фона всплывающий подсказок АСЕ. + Цвет фона всплывающих подсказок АСЕ. Kolor tła dla powiadomień ACE Notifications ACE: couleur de l'arrière plan Barva pozadí ACE nápověd. diff --git a/addons/disarming/stringtable.xml b/addons/disarming/stringtable.xml index 508c9f1d3d..625f156b95 100644 --- a/addons/disarming/stringtable.xml +++ b/addons/disarming/stringtable.xml @@ -7,6 +7,8 @@ Otwórz ekwipunek Otevřít inventář Abrir inventario + Открыть инвентарь + Apri l'inventario diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml index 2aad0a42e7..214b3f228a 100644 --- a/addons/disposable/stringtable.xml +++ b/addons/disposable/stringtable.xml @@ -10,6 +10,7 @@ Lanzador utilizado Elhasznált kilövőcső Отстрелянная труба + Tubo utilizzato Used disposable rocket launcher @@ -20,6 +21,7 @@ Lanzador desechable utilizado Elhasznált eldobható rakétavető Отстрелянная одноразовая пусковая установка + Lanciarazzi monouso utilizzato Preloaded Missile Dummy @@ -30,6 +32,7 @@ Preloaded Missile Dummy Előtöltött műrakéta Заряженная ракетная пустышка + Missile stupido precaricato diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 05410e621e..d0b61d0814 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -44,10 +44,10 @@ Kod ładunku: %1 Code explosif: %1 Kód výbušniny: %1 - Codice dell'esplosivo : %1 Robbanóanyag kódja: %1 Código do explosivo: %1 Код подрыва: %1 + Codice esplosivo: %1 Place @@ -488,6 +488,7 @@ Utilizado para detonar explosivos remotamente al soltarlo. Robbanóanyagok távoli robbantásához való, elengedéskor gyújt. Используется для дистанционного подрыва, после смерти оператора. + Usato per attivare esplosivi quando rilasciato Pick up @@ -497,6 +498,8 @@ Podnieś Ramasser Felszedés + Поднять + Raccogli diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 42767ab2e4..e34ad2b681 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -10,6 +10,7 @@ Выключить разлёт осколков Désactive la fragmentation Repeszek letiltása + Disattiva la frammentazione diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index afbdd2f828..f57bc2545a 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -106,6 +106,7 @@ Vypnout pískání v uších Wyłącz dzwonienie w uszach Fülcsengés letiltása + Disabilita il ronzio diff --git a/addons/interact_menu/functions/fnc_createAction.sqf b/addons/interact_menu/functions/fnc_createAction.sqf index 172bbea3a4..0b0030a1b4 100644 --- a/addons/interact_menu/functions/fnc_createAction.sqf +++ b/addons/interact_menu/functions/fnc_createAction.sqf @@ -19,7 +19,7 @@ * Action * * Example: - * [VulcanPinch","Vulcan Pinch","",{_target setDamage 1;},{true},{},[parameters], [0,0,0], 100] call ace_interact_menu_fnc_createAction; + * ["VulcanPinch","Vulcan Pinch","",{_target setDamage 1;},{true},{},[parameters], [0,0,0], 100] call ace_interact_menu_fnc_createAction; * * Public: No */ diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index eb03f86355..98cac6116a 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -10,10 +10,15 @@ Zawsze wyświetlaj kursor dla własnej interakcji Toujours afficher le curseur pour les interactions sur soi-même Mindig legyen a saját cselekvés kurzorja látható + Mostra sempre il cursore per le auto interazioni Display interaction menus as lists Mostrar los menus de interacción como listas + Показывать меню взаимодействия в виде списка + Afficher le menu d'interaction au format liste + Mostra il menù di interazione come lista + Wyświetlaj menu interakcji jako listę Interact Key @@ -24,6 +29,7 @@ Klawisz interakcji Touche d'interaction Cselekvő gomb + Tasto interazione Self Interaction Key @@ -34,6 +40,7 @@ Klawisz własnej interakcji Touche d'interaction personnelle Saját cselekvő gomb + Tasto per auto interazioni Self Actions @@ -44,6 +51,7 @@ Własne akcje Interaction personnelle Saját cselekvések + Auto interazioni Vehicle Actions @@ -54,6 +62,7 @@ Akcje pojazdu Interaction véhicule Járműves cselekvések + Interazioni con veicoli diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 680c0409c1..9064e5c2d0 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -10,6 +10,7 @@ Interactions Взаимодействия Cselekvések + Interazioni Torso @@ -20,6 +21,7 @@ Tors Торс Testtörzs + Torso Head @@ -30,15 +32,18 @@ Głowa Голова Fej + Testa Left Arm + Bras gauche Linker Arm Brazo izquierdo Levá paže Lewe ramię Левая рука Bal kar + Braccio sinistro Right Arm @@ -49,6 +54,7 @@ Bras droit Правая рука Jobb kar + Braccio destro Left Leg @@ -59,6 +65,7 @@ Jambe gauche Левая нога Bal láb + Gamba sinistra Right Leg @@ -69,6 +76,7 @@ Jambe droite Правая нога Jobb láb + Gamba destra Weapon @@ -79,6 +87,7 @@ Broń Оружие Fegyver + Arma Interaction Menu @@ -90,7 +99,7 @@ Меню взаимодействия Cselekvő menü Menu de Interação - Menù Interattivo + Menù interazione Interaction Menu (Self) @@ -102,7 +111,7 @@ Меню взаимодействия (с собой) Cselekvő menü (saját) Menu de Interação (Individual) - Menù Interattivo (Individuale) + Menù interazione (Individuale) Open / Close Door @@ -194,7 +203,7 @@ Asumir el liderazgo Przejmij dowodzenie Stát se velitelem - Devenir Leader + Devenir Chef de groupe Стать лидером Vezetés átvétele Tornar-se Líder @@ -210,7 +219,7 @@ ТАНЦЕВАТЬ! TÁNC! DANCE! - Balla! + DANZA! Stop Dancing @@ -564,7 +573,7 @@ Join Team<br/>Green Team Grün<br/>beitreten Unirse al<br/>equipo verde - Rejoindre<br/>Verte + Rejoindre<br/>Vert Dołącz do<br/>drużyny zielonej Připojit do<br/>Zeleného týmu Присоединиться<br/>к зеленой группе @@ -576,7 +585,7 @@ Join Team<br/>Blue Team Blau<br/>beitreten Unirse al<br/>equipo azul - Rejoindre<br/>Bleue + Rejoindre<br/>Bleu Dołącz do<br/>drużyny niebieskiej Připojit do<br/>Modrého týmu Присоединиться<br/>к синей группе @@ -605,7 +614,7 @@ Připojil ses do %1 týmu Вы присоединились к группе %1 Você uniu-se à Equipe %1 - Sei entrato nella Squadra %1 + Sei entrato nel team %1 Csatlakoztál a %1 csapathoz @@ -617,7 +626,7 @@ Opustit tým Покинуть группу Deixar Equipe - Lascia la Squadra + Lascia il team Csapat elhagyása @@ -629,7 +638,7 @@ Opustil si tým Вы покинули группу Você deixou a Equipe - Hai lasciato la squadra + Hai lasciato il team Elhagytad a csapatot @@ -658,13 +667,13 @@ Modifier Key - Modifikator Taste + Modifikator-Taste Modyfikator Modifier la touche Tecla modificadora Клавиша-модификатор Tecla Modificadora - Modifica Tasto + Modifica tasto Módosító billentyű Modifikátor @@ -678,6 +687,7 @@ Hatótávolságon kívül Poza zasięgiem Mimo dosah + Non in raggio Equipment @@ -688,6 +698,7 @@ Vybavení Felszerelés Снаряжение + Equipaggiamento Push @@ -698,6 +709,7 @@ Odstrčit Tolás Толкать + Spingi Interact @@ -708,16 +720,18 @@ Interakcja Interactuar Cselekvés + Interagisci Passengers - Fahrzeuginsassen + Passagiere Pasajeros Пассажиры Pasažéři Pasażerowie Passagers Utasok + Passeggeri diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index e3fa7f6491..f1d1e70f9d 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -10,6 +10,7 @@ Powiększ UI ekwipunku Agrandir la taille d'affichage de l'inventaire Legyen a felszerelés menüje nagyobb + Ingrandisci il menù inventario Normally inventory display is scaled by UI size. This allows scaling the Inventory UI size up, but doesn't increase font size allowing more rows displayed. @@ -20,6 +21,7 @@ Ekwipunek skalowany jest poprzez rozmiar UI. Ta opcja pozwala powiększyć rozmiar UI ekwipunku, lecz nie zwiększa rozmiaru fontu pozwalając na wyświetlanie większej ilości wierszy. L'inventaire est normalement affiché en fonction de la taille de l'UI. Cette option permet d'agrandir l'affichage de l'inventaire, mais n'a aucun effet sur la taille des polices permettant d'afficher plus de ligne Alaphelyzetben a kezelőfelület mérete skálázza a felszerelési menüt. Ez az opció engedélyezi a menü felskálázását, de megtartja a betűméreteket, így növelve a láthatóságot. + Normalmente il menù inventario è scalato in base alle dimensioni interfaccia. Questa opzione di permette di ingrandirlo ulteriormente ma senza aumentare la dimensione del testo. diff --git a/addons/javelin/CfgEventhandlers.hpp b/addons/javelin/CfgEventhandlers.hpp index 2c44a05e3a..ae7f95b232 100644 --- a/addons/javelin/CfgEventhandlers.hpp +++ b/addons/javelin/CfgEventhandlers.hpp @@ -9,4 +9,10 @@ class Extended_PostInit_EventHandlers { init = QUOTE(call COMPILE_FILE(XEH_post_init)); clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); }; +}; + +class Extended_FiredBIS_EventHandlers { + class All { + ADDON = QUOTE(_this call FUNC(onFired)); + }; }; \ No newline at end of file diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp index cef967e32e..4e7091c653 100644 --- a/addons/javelin/CfgWeapons.hpp +++ b/addons/javelin/CfgWeapons.hpp @@ -8,6 +8,9 @@ class CfgWeapons { weaponInfoType = "ACE_RscOptics_javelin"; modelOptics = PATHTOF(data\reticle_titan.p3d); + canLock = 1; + + lockingTargetSound[] = {"",0,1}; lockedTargetSound[] = {"",0,1}; }; diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp index 8b33c95c01..d845c1d00b 100644 --- a/addons/javelin/RscInGameUI.hpp +++ b/addons/javelin/RscInGameUI.hpp @@ -14,7 +14,7 @@ class RscInGameUI { idd = 300; controls[] = { "ACE_javelin_elements_group", "ACE_Targeting" }; //, "ACE_TargetingConstrains", "ACE_TargetingGate", "ACE_TargetingLines"}; onLoad = QUOTE(_this call FUNC(onOpticLoad)); - onUnload = "uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];uiNameSpace setVariable ['ACE_RscOptics_javelin_PFH',nil];"; + onUnload = QUOTE(_this call FUNC(onOpticUnload)); class ACE_javelin_elements_group: RscControlsGroup { diff --git a/addons/javelin/XEH_pre_init.sqf b/addons/javelin/XEH_pre_init.sqf index 2b2e980191..1accd4a8f4 100644 --- a/addons/javelin/XEH_pre_init.sqf +++ b/addons/javelin/XEH_pre_init.sqf @@ -6,6 +6,7 @@ PREP(lockKeyUp); PREP(cycleFireMode); PREP(showFireMode); +PREP(onFired); PREP(onOpticLoad); PREP(onOpticDraw); diff --git a/addons/javelin/functions/fnc_onFired.sqf b/addons/javelin/functions/fnc_onFired.sqf new file mode 100644 index 0000000000..04a023c9d8 --- /dev/null +++ b/addons/javelin/functions/fnc_onFired.sqf @@ -0,0 +1,20 @@ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" + +PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); + +// Bail on not missile +if( _shooter != ACE_player) exitWith { false }; + +if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) ) exitWith { }; + +_pfh_handle = uiNamespace getVariable ["ACE_RscOptics_javelin_PFH", nil]; +if(!isNil "_pfh_handle") then { + //[_pfh_handle] call cba_fnc_removePerFrameHandler; + //uiNamespace setVariable["ACE_RscOptics_javelin_PFH", nil]; + + __JavelinIGUITargeting ctrlShow false; + __JavelinIGUITargetingGate ctrlShow false; + __JavelinIGUITargetingLines ctrlShow false; + __JavelinIGUITargetingConstraints ctrlShow false; +}; \ No newline at end of file diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf index 85877f1f16..13669b9d2e 100644 --- a/addons/javelin/functions/fnc_onOpticDraw.sqf +++ b/addons/javelin/functions/fnc_onOpticDraw.sqf @@ -11,18 +11,6 @@ TRACE_1("enter", _this); private["_isJavelin", "_args", "_lastTick", "_runTime", "_soundTime", "_lockTime", "_newTarget", "_currentTarget", "_range", "_pos", "_targetArray"]; -if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) - || { (vehicle ACE_player) != ACE_player } - ) exitWith { - __JavelinIGUITargeting ctrlShow false; - __JavelinIGUITargetingGate ctrlShow false; - __JavelinIGUITargetingLines ctrlShow false; - __JavelinIGUITargetingConstraints ctrlShow false; - - [(_this select 1)] call cba_fnc_removePerFrameHandler; - uiNamespace setVariable["ACE_RscOptics_javelin_PFH", nil]; -}; - // Reset arguments if we havnt rendered in over a second _args = uiNamespace getVariable[QGVAR(arguments), [] ]; if( (count _args) > 0) then { @@ -40,6 +28,19 @@ _runTime = _args select 2; _lockTime = _args select 3; _soundTime = _args select 4; _randomLockInterval = _args select 5; +_fireDisabledEH = _args select 6; + +if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) ) exitWith { + __JavelinIGUITargeting ctrlShow false; + __JavelinIGUITargetingGate ctrlShow false; + __JavelinIGUITargetingLines ctrlShow false; + __JavelinIGUITargetingConstraints ctrlShow false; + + _fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire); + + [(_this select 1)] call cba_fnc_removePerFrameHandler; + uiNamespace setVariable["ACE_RscOptics_javelin_PFH", nil]; +}; // Find a target within the optic range _newTarget = objNull; @@ -106,6 +107,27 @@ if((call CBA_fnc_getFoV) select 1 > 9) then { __JavelinIGUIWFOV ctrlSetTextColor __ColorGreen; }; +FUNC(disableFire) = { + _firedEH = _this select 0; + + if(_firedEH < 0 && difficulty > 0) then { + _firedEH = [ACE_player, "DefaultAction", {true}, { + _canFire = ACE_player getVariable["ace_missileguidance_target", nil]; + if(!isNil "_canFire") exitWith { false }; + true + }] call EFUNC(common,addActionEventHandler); + }; + _firedEH +}; +FUNC(enableFire) = { + _firedEH = _this select 0; + + if(_firedEH > 0 && difficulty > 0) then { + [ACE_player, "DefaultAction", _firedEH] call EFUNC(common,removeActionEventHandler); + }; + -1 +}; + if (isNull _newTarget) then { // No targets found _currentTarget = objNull; @@ -120,8 +142,7 @@ if (isNull _newTarget) then { ACE_player setVariable ["ace_missileguidance_target",nil, false]; // Disallow fire - if (ACE_player ammo (currentWeapon ACE_player) > 0) then { ACE_player setWeaponReloadingTime [player, (currentWeapon ACE_player), 0.2]; }; - + _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire); } else { if (_newTarget distance ACE_player < 2500 && {(call CBA_fnc_getFoV) select 1 > 9} @@ -176,7 +197,7 @@ if (isNull _newTarget) then { ACE_player setVariable["ace_missileguidance_target", _currentTarget, false]; // Allow fire - ACE_player setWeaponReloadingTime [player, (currentWeapon ACE_player), 0]; + _fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire); if(diag_tickTime > _soundTime) then { playSound "ACE_Javelin_Locked"; @@ -217,7 +238,7 @@ if (isNull _newTarget) then { _soundTime = diag_tickTime + 0.25; }; // Disallow fire - if (ACE_player ammo (currentWeapon ACE_player) > 0) then { ACE_player setWeaponReloadingTime [player, (currentWeapon ACE_player), 0.2]; }; + _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire); }; }; } else { @@ -234,7 +255,7 @@ if (isNull _newTarget) then { ACE_player setVariable ["ace_missileguidance_target",nil, false]; // Disallow fire - if (ACE_player ammo (currentWeapon ACE_player) > 0) then { ACE_player setWeaponReloadingTime [player, (currentWeapon ACE_player), 0.2]; }; + _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire); }; }; @@ -246,5 +267,6 @@ _args set[1, _currentTarget]; _args set[2, _runTime]; _args set[3, _lockTime]; _args set[4, _soundTime]; +_args set[6, _fireDisabledEH]; uiNamespace setVariable[QGVAR(arguments), _args ]; \ No newline at end of file diff --git a/addons/javelin/functions/fnc_onOpticLoad.sqf b/addons/javelin/functions/fnc_onOpticLoad.sqf index d38e1c3305..a2b2692859 100644 --- a/addons/javelin/functions/fnc_onOpticLoad.sqf +++ b/addons/javelin/functions/fnc_onOpticLoad.sqf @@ -25,7 +25,8 @@ uiNameSpace setVariable [QGVAR(arguments), 0, // Run Time 0, // Lock Time 0, // Sound timer - (random __LOCKONTIMERANDOM) // random lock time addition + (random __LOCKONTIMERANDOM), // random lock time addition + -1 ] ]; diff --git a/addons/javelin/functions/fnc_onOpticUnload.sqf b/addons/javelin/functions/fnc_onOpticUnload.sqf new file mode 100644 index 0000000000..4086c02766 --- /dev/null +++ b/addons/javelin/functions/fnc_onOpticUnload.sqf @@ -0,0 +1,20 @@ +//#define DEBUG_MODE_FULL +#include "script_component.hpp" +TRACE_1("enter", _this); + +uiNameSpace setVariable ['ACE_RscOptics_javelin',nil]; + +_pfh = uiNamespace getVariable["ACE_RscOptics_javelin_PFH", nil ]; +if(!isNil "_pfh") then { + [_pfh] call CBA_fnc_removePerFrameHandler; + uiNameSpace setVariable ['ACE_RscOptics_javelin_PFH',nil]; +}; + +_args = uiNamespace getVariable[QGVAR(arguments), nil ]; +if(!isNil "_args") then { + _disableFireEH = _args select 6; + if(_disableFireEH > 0 && difficulty > 0) then { + [ACE_player, "DefaultAction", _disableFireEH] call EFUNC(common,removeActionEventHandler); + }; + uiNameSpace setVariable [QGVAR(arguments),nil]; +}; diff --git a/addons/javelin/functions/fnc_showFireMode.sqf b/addons/javelin/functions/fnc_showFireMode.sqf index 35dff9dbd3..88374548c0 100644 --- a/addons/javelin/functions/fnc_showFireMode.sqf +++ b/addons/javelin/functions/fnc_showFireMode.sqf @@ -4,8 +4,8 @@ TRACE_1("enter", _this); private["_player", "_currentFireMode"]; -_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "TOP"]; -if(_currentFireMode == "TOP") then { +_currentFireMode = ACE_player getVariable["ace_missileguidance_attackProfile", "JAV_TOP"]; +if(_currentFireMode == "JAV_TOP") then { __JavelinIGUITop ctrlSetTextColor __ColorGreen; __JavelinIGUIDir ctrlSetTextColor __ColorGray; } else { diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml index 961ef1bb68..32aed563a1 100644 --- a/addons/javelin/stringtable.xml +++ b/addons/javelin/stringtable.xml @@ -1,5 +1,4 @@ - - + @@ -10,6 +9,7 @@ Namierz cel (przytrzymaj) Verrouiller cible (maintenir) Célpontra állás (Lenyomva tartott) + Aggangia il bersagio Fijar objetivo (Mantener) @@ -20,7 +20,8 @@ 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 - \ No newline at end of file + diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml index 17bfacbffc..4757159ff5 100644 --- a/addons/kestrel4500/stringtable.xml +++ b/addons/kestrel4500/stringtable.xml @@ -1,5 +1,4 @@  - @@ -17,33 +16,50 @@ Kestrel 4500 Pocket Weather Tracker Anemomentr skrzydełkowy Kestrel 4500 + Карманная метеостанция Kestrel 4500NV + Station météo portable Kestrel 4500 Kestrel 4500 Pocket Weather Tracker Open Kestrel 4500 Otwórz Kestrel 4500 Kestrel 4500 elővétele + Открыть Kestrel 4500NV + Ouvrir Kestrel 4500 + Accendi Kestrel 4500 Abrir Kestrel 4500 Show Kestrel 4500 Pokaż Kestrel 4500 + Показать Kestrel 4500NV + Afficher Kestrel 4500 + Mostra Kestrel 4500 Mostrar Kestrel 4500 Hide Kestrel 4500 Ukryj Kestrel 4500 + Убрать Kestrel 4500NV + Cacher Kestrel 4500 + Nascondi Kestrel 4500 Esconder Kestrel 4500 Open Kestrel 4500 Otwórz Kestrel 4500 + Открыть Kestrel 4500NV + Ouvrir Kestrel 4500 + Accendi Kestrel 4500 Abrir Kestrel 4500 Show Kestrel 4500 Pokaż Kestrel 4500 + Показать Kestrel 4500NV + Afficher Kestrel 4500 + Mostra Kestrel 4500 Mostrar Kestrel 4500 - \ No newline at end of file + diff --git a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOff.sqf b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOff.sqf index f8ff2ca0f5..aa46c383bd 100644 --- a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOff.sqf +++ b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOff.sqf @@ -13,7 +13,7 @@ #include "script_component.hpp" if( (count _this) > 2) then { - EXPLODE_3_PVT(_this,_shooter,_laserUuid, _localLaserTarget); + EXPLODE_3_PVT(_this,_shooter,_laserUuid,_localLaserTarget); [_laserUuid] call EFUNC(laser,laserOff); // @TODO: Nou gets to field all tickets about missing lasers. diff --git a/addons/laser_selfdesignate/stringtable.xml b/addons/laser_selfdesignate/stringtable.xml index 2b78666f85..f38c015c44 100644 --- a/addons/laser_selfdesignate/stringtable.xml +++ b/addons/laser_selfdesignate/stringtable.xml @@ -10,6 +10,7 @@ Desygnator laserowy wł. Désignateur Laser Allumé Lézeres Megjelölő Be + Designatore laser acceso Laser Designator Off @@ -20,6 +21,7 @@ Desygnator laserowy wył. Désignateur Laser Éteint Lézeres Megjelölő Ki + Designatore laser spento diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml index 7d1c3393e8..6be6baf82b 100644 --- a/addons/laserpointer/stringtable.xml +++ b/addons/laserpointer/stringtable.xml @@ -1,5 +1,4 @@  - @@ -11,6 +10,7 @@ Wskaźnik laserowy (czerwony) Lézer-pointer (piros) Puntero láser (rojo) + Puntatore laser (rosso) Laser Pointer (green) @@ -21,6 +21,7 @@ Wskaźnik laserowy (zielony) Lézer-pointer (zöld) Puntero láser (verde) + Puntatore laser (verde) Emits visible light. @@ -31,6 +32,7 @@ Wydziela widzialne światło. Látható fényt bocsát ki. Emite luz visible. + Emette luce visibile <t color='#9cf953'>Use: </t>Turn Laser ON/OFF @@ -48,19 +50,26 @@ Laser Laser Laser + Лазер + Laser Laser IR Laser IR-Laser Laser IR + ИК-лазер + Laser IR Laser IR Switch Laser / IR Laser Umschalten Laser / IR-Laser Przełącz Laser / Laser IR + Изменить режим Лазер / ИК-лазер + Changer Laser / Laser IR + Alterna Laser / IR Laser Cambiar Laser / Laser IR - \ No newline at end of file + diff --git a/addons/logistics_wirecutter/sound/wirecut.ogg b/addons/logistics_wirecutter/sound/wirecut.ogg new file mode 100644 index 0000000000..902488c1df Binary files /dev/null and b/addons/logistics_wirecutter/sound/wirecut.ogg differ diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 1f7e81ace2..1e02260d1b 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -82,6 +82,7 @@ Páskování dokončeno Przepakowywanie zakończone Újratárazás befejezve + Riempi caricatore Repacking Interrupted @@ -92,6 +93,7 @@ Páskování přerušeno Przepakowywanie przerwane Újratárazás megszakítva + Riempimento interrotto %1 Full and %2 Partial @@ -102,6 +104,7 @@ %1 plný a %2 částečně Pełnych: %1.<br />Częściowo pełnych: %2. %1 teljes és %2 részleges + %1 pieno e %2 parziale diff --git a/addons/maptools/stringtable.xml b/addons/maptools/stringtable.xml index c7c7ad759a..0c19581779 100644 --- a/addons/maptools/stringtable.xml +++ b/addons/maptools/stringtable.xml @@ -1,5 +1,4 @@  - @@ -143,6 +142,7 @@ Dirección: %1° Irány: %1 Направление: %1° + Direzione : %1° diff --git a/addons/markers/stringtable.xml b/addons/markers/stringtable.xml index 73a4aff9be..343f4c9d2a 100644 --- a/addons/markers/stringtable.xml +++ b/addons/markers/stringtable.xml @@ -1,5 +1,4 @@  - @@ -11,6 +10,7 @@ Dirección: %1° Направление: %1° Irány: %1° + Direzione: %1° - \ No newline at end of file + diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index cff9458426..da50c5c1bf 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -40,7 +40,7 @@ if ((_tourniquets select _part) > 0) exitwith { }; _removeItem = _items select 0; -[[_target, _removeItem], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +[[_target, _removeItem, _selectionName], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); [_target, "activity", "STR_ACE_MEDICAL_ACTIVITY_appliedTourniquet", [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index 064761aea0..289f852a06 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -13,15 +13,13 @@ */ #include "script_component.hpp" -private ["_target", "_tourniquetItem", "_part", "_tourniquets", "_applyingTo"]; +private ["_target", "_tourniquetItem", "_part", "_tourniquets", "_applyingTo", "_selectionName"]; _target = _this select 0; _tourniquetItem = _this select 1; +_selectionName = _this select 2; -//[_target,"treatment",format["%1 applied a tourniquet on %2",[_caller] call EFUNC(common,getName),_selectionName]] call FUNC(addActivityToLog); -//[_target,_removeItem] call FUNC(addToTriageList); [_target] call FUNC(addToInjuredCollection); - _part = [_selectionName] call FUNC(selectionNameToNumber); // Place a tourniquet on the bodypart diff --git a/addons/medical/sounds/Inject.ogg b/addons/medical/sounds/Inject.ogg new file mode 100644 index 0000000000..8418078e0f Binary files /dev/null and b/addons/medical/sounds/Inject.ogg differ diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index af7bc08eba..9f651e90b7 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,5 +1,4 @@  - @@ -11,6 +10,7 @@ Injecter de l'atropine Ввести атропин Atropin beadása + Inietta atropina Inject Epinephrine @@ -22,7 +22,7 @@ Ввести адреналин Epinefrin beadása Injetar Epinefrina - Inietta Epinefrina + Inietta epinefrina Inject Morphine @@ -46,7 +46,7 @@ Transfusion Infúzió (vér) Transfundir Sangue - Effettua Trasfusione + Effettua trasfusione di sangue Transfuse Plasma @@ -57,6 +57,7 @@ Transfuser du Plasma Перелить плазму Infúzió (vérplazma) + Effettua trasfusione di plasma Transfuse Saline @@ -67,6 +68,7 @@ Transfuser de la Saline Перелить физраствор Infúzió (sós víz) + Effettua trasfusione di soluzione salina Apply Tourniquet @@ -75,6 +77,8 @@ Aplikovat škrtidlo Załóż stazę Appliquer un garrot + Наложить жгут + Applica laccio emostatico Bandage @@ -166,7 +170,7 @@ Inyectando Morfina ... Wstrzykiwanie morfiny ... Aplikuji morfin ... - Введение морфина... + Введение морфина ... Injection de Morphine... Morfium beadása ... Injetando Morfina ... @@ -178,7 +182,7 @@ Inyectando Epinefrina ... Wstrzykiwanie adrenaliny ... Aplikuji adrenalin ... - Введение адреналина... + Введение адреналина ... Injection d'Adrénaline ... Epinefrin beadása ... Injetando Epinefrina ... @@ -191,8 +195,9 @@ Aplikuji atropin ... Wstrzykiwanie atropiny ... Injection d'Atropine ... - Введение атропина... + Введение атропина ... Atropin beadása ... + Inietto l'atropina ... Transfusing Blood ... @@ -200,11 +205,11 @@ Transfusión de sangre ... Przetaczanie krwi ... Probíhá transfúze krve ... - Переливание крови... + Переливание крови ... Transfusion Sanguine ... Infúzió vérrel ... Transfundindo Sangue ... - Effettuo la trasfusione ... + Effettuo la trasfusione di sangue ... Transfusing Saline ... @@ -213,8 +218,9 @@ Probíha transfúze fyziologický roztoku ... Przetaczanie solanki ... Transfusion de saline ... - Переливание физраствора... + Переливание физраствора ... Infúzió sós vizzel ... + Effettuo la rasfusione di salina Transfusing Plasma ... @@ -223,8 +229,9 @@ Probíha transfúze plazmy ... Przetaczanie osocza ... Transfusion de Plasma ... - Переливание плазмы... + Переливание плазмы ... Infúzió vérplazmával ... + Effettu la trasfusione di plasma ... Bandaging ... @@ -236,7 +243,7 @@ Sto applicando la benda ... Bekötözés ... Atando ... - Перевязывание... + Перевязывание ... Applying Tourniquet ... @@ -245,8 +252,9 @@ Aplikuji škrtidlo Zakładanie stazy ... Mise en place du Garrot ... - Наложение жгута... + Наложение жгута ... Érszorító felhelyezése ... + Sto applicando il laccio emostatico ... Medical @@ -269,6 +277,7 @@ Bandaż jałowy Bandage rapide Zárókötszer + Bendaggio rapido Packing Bandage @@ -277,6 +286,7 @@ Компресионный пакет Bandaż uciskowy Nyomókötszer + Bendaggio compressivo Elastic Bandage @@ -287,6 +297,7 @@ Bandaż elastyczny Pansement élastique Rögzitő kötszer + Bendaggio elastico QuikClot @@ -297,6 +308,7 @@ QuikClot Hémostatique QuikClot + QuikClot(polvere emostatica) Check Pulse @@ -307,6 +319,7 @@ Sprawdź tętno Vérifier les pulsations Pulzus ellenőrzése + Controlla il polso Check Blood Pressure @@ -317,6 +330,7 @@ Sprawdź ciśnienie krwi Vérification de la Tension Vérnyomás megmérése + Controlla pressionsa sanguigna Triage Card @@ -327,6 +341,7 @@ Karta Triage Carte de Triage Orvosi lap + Triage Card Tourniquet @@ -337,6 +352,7 @@ Staza Garrot Érszorító + Laccio emostatico Remove Tourniquet @@ -347,6 +363,7 @@ Zdejmij stazę Enlever le Garrot Érszorító leszedése + Rimuovi laccio emostatico Give Blood IV (1000ml) @@ -357,6 +374,7 @@ Administrer du Sang en IV (1000ml) Podat krev. transfúzi (1000ml) Vér adása intravénásan (1000ml) + Effettua trasfusione sangue IV (1000ml) Give Blood IV (500ml) @@ -367,6 +385,7 @@ Administrer du Sang en IV (500ml) Podat krev. transfúzi (500ml) Vér adása intravénásan (500ml) + Effettua trasfusione sangue IV (500ml) Give Blood IV (250ml) @@ -377,6 +396,7 @@ Administrer du Sang en IV (250ml) Podat krev. transfúzi (250ml) Vér adása intravénásan (250ml) + Effettua trasfusione sangue IV (250ml) Give Plasma IV (1000ml) @@ -387,6 +407,7 @@ Administrer du Plasma en IV (1000ml) Podat plazmu (1000ml) Vérplazma adása intravénásan (1000ml) + Effettua trasfusione plasma IV (1000ml) Give Plasma IV (500ml) @@ -397,6 +418,7 @@ Administrer du Plasma en IV (500ml) Podat plazmu (500ml) Vérplazma adása intravénásan (500ml) + Effettua trasfusione plasma IV (500ml) Give Plasma IV (250ml) @@ -407,6 +429,7 @@ Administrer du Plasma en IV (250ml) Podat plazmu (250ml) Vérplazma adása intravénásan (250ml) + Effettua trasfusione plasma IV (250ml) Give Saline IV (1000ml) @@ -417,6 +440,7 @@ Administrer de la Solution Saline en IV (1000ml) Podaz fyz. roztok (1000ml) Sós víz adása intravénásan (1000ml) + Effettua trasfusione salina IV (1000ml) Give Saline IV (500ml) @@ -427,6 +451,7 @@ Administrer de la Solution Saline en IV (500ml) Podaz fyz. roztok (500ml) Sós víz adása intravénásan (500ml) + Effettua trasfusione salina IV (500ml) Give Saline IV (250ml) @@ -437,6 +462,7 @@ Administrer de la Solution Saline en IV (250ml) Podaz fyz. roztok (250ml) Sós víz adása intravénásan (250ml) + Effettua trasfusione salina IV (250ml) Minor @@ -447,6 +473,7 @@ Mineur Minimální Enyhe + Minore Delayed @@ -457,6 +484,7 @@ Verzögert Odložitelný Késleltetett + Differito Immediate @@ -467,6 +495,7 @@ Sofort Okamžiý Azonnali + Immediata Deceased @@ -477,6 +506,7 @@ Verstorben Mrtvý Elhalálozott + Deceduto None @@ -487,6 +517,7 @@ Keine Nic Semmi + Nessuna Normal breathing @@ -497,6 +528,7 @@ Normale Atmung Dýchá normálně Normális légzés + Respiro normale No breathing @@ -507,6 +539,7 @@ Brak oddechu Nedýchá Nincs légzés + Mancanza di respiro Difficult breathing @@ -517,6 +550,7 @@ Schwere Atmung Dýchá s obtížemi Nehéz légzés + Difficoltà a respirare Almost no breathing @@ -527,6 +561,7 @@ Prawie brak oddechu Skoro nedýchá Alig van légzés + Respira a fatica Bleeding @@ -537,6 +572,7 @@ Krwawienie zewnętrzne Krvácí Vérzik + Sanguinando In Pain @@ -547,6 +583,7 @@ W bólu V bolestech Fájdalom alatt + Con dolore Lost a lot of Blood @@ -557,6 +594,7 @@ Stracił dużo krwi Ztratil hodně krve Sok vért vesztett + Ha perso parecchio sangue Tourniquet [CAT] @@ -567,6 +605,7 @@ Staza [typ. CAT] Škrtidlo [CAT] Érszorító [CAT] + Laccio emostatico [CAT] Receiving IV [%1ml] @@ -577,6 +616,7 @@ Transfusion en IV [%1ml] Přijímání transfúze [%1ml] Infúzióra kötve [%1ml] + Ricevendo IV [%1ml] Bandage (Basic) @@ -587,6 +627,7 @@ Bandaż (jałowy) Bandáž (standartní) Kötszer (Általános) + Bendaggio (base) Used to cover a wound @@ -596,6 +637,7 @@ Używany w celu przykrycia i ochrony miejsca zranienia Verwendet, um Wunden abzudecken Sebesülések befedésére alkalmas + Usato per coprire una ferita A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. @@ -605,6 +647,7 @@ Bandage fait d'un matériel spécial utilisé pour couvrir une blessure, qui peut etre appliqué dès que le saignement a été stoppé. Opatrunek materiałowy, używany do przykrywania ran, zakładany na ranę po zatamowaniu krwawienia. Egy különleges anyagú kötszer sebek betakarására, amelyet a vérzés elállítása után helyeznek fel. + Una benda apposta, utilizzata per coprire una ferita, la quale è applicato sopra di essa una volta fermata l'emorragia. Packing Bandage @@ -614,6 +657,7 @@ Bandage Mèche Bandaż (uciskowy) Nyomókötszer + Bendaggio compressivo Used to pack medium to large wounds and stem the bleeding @@ -623,6 +667,7 @@ Utilisé pour remplir la cavité créée dans une blessure de taille moyenne à grande. Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer + Usato su medie o larghe ferite per fermare emorragie. A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. @@ -631,6 +676,7 @@ Bandage pouvant être inseré dans les blessures pour éponger le saignement et faciliter la guerrison. Ce bandage est optionnel pour soigner les lésions polytraumatique. Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran. Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén. + Un bendaggio usato per bendare ferite con emorragie e facilitare la guarigione. Bendare una ferita è una opzione su ferite di vario tipo. Bandage (Elastic) @@ -641,6 +687,7 @@ Bandaż (elastyczny) Bandáž (elastická) Rögzító kötszer + Benda (Elastica) Bandage kit, Elastic @@ -650,6 +697,7 @@ Bandage Compressif Élastique Zestaw bandaży elastycznych. Rugalmas kötszercsomag, "rögzítő" + Kit bendaggio, elastico Allows an even compression and extra support to the injured area. @@ -659,6 +707,7 @@ Elastyczna opaska podtrzymująca opatrunek oraz usztywniająca okolice stawów. Brinda una compresión uniforme y ofrece soporte extra a una zona lesionada Egyenletes nyomást és támogatást biztosít a sebesült felületnek. + Permette di comprimevere e aiutare la zone ferita. Tourniquet (CAT) @@ -669,6 +718,7 @@ Staza (typ. CAT) Škrtidlo (CAT) Érszorító (CAT) + Laccio emostatico (CAT) Slows down blood loss when bleeding @@ -678,6 +728,7 @@ Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Verringert den Blutverlust während einer Blutung Lelassítja a vérvesztést vérzés esetén + Rallenta la perdita di sangue in caso di sanguinamento A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. @@ -687,6 +738,7 @@ Opaska uciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. Ein Gerät, das Druck auf Venen und Arterien ausübt und so den Blutfluss verringert. Egy szűkítőeszköz, mely a vénás és artériás nyomás keringés helyi összenyomására szolgál, ezzel lelassítva vagy megállítva az adott területen a vérkeringést. Ez csökkenti a vérvesztés mértékét. + Un laccio emostatico usato per comprimere le vene e arterie per bloccare o rallentare la circolazione del sangue e quindi rallentare dissanguamenti. Morphine autoinjector @@ -697,6 +749,7 @@ Autostrzykawka z morfiną Autoinjektor morfin Morfium autoinjektor + Autoiniettore di morfina Used to combat moderate to severe pain experiences @@ -706,6 +759,7 @@ Utilisé pour réduire les douleurs modérées à sévères. Morfina. Ma silne działanie przeciwbólowe. Mérsékelttől erős fájdalomig, ellene alkalmazandó termék + Usato per combattere il dolore. An analgesic used to combat moderate to severe pain experiences. @@ -715,6 +769,7 @@ Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe. Ein Schmerzmittel um mäßige bis starke Schmerzen zu behandeln Egy fájdalomcsillapító anyag, jellemzően mérsékelt vagy erős fájdalom esetén alkalmazandó. + Un analgesico usato per combattere il dolore. Atropin autoinjector @@ -725,6 +780,7 @@ Atropin Autoinjektor Autoinjektor atropin Atropin autoinjektor + Autoiniettore di Atropina Used in NBC scenarios @@ -734,6 +790,7 @@ Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Verwendet bei ABC Kontamination NBK helyzetek esetén használandó + Usato in situazioni con gas nervino. A drug used by the Military in NBC scenarios. @@ -743,6 +800,7 @@ Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC. Ein Medikament, das vom Militär bei ABC Kontamination verwendet wird. Egy instabil alkaloid, NBK helyzetek esetén a katonai szervezetek veszik használatba. + E' un farmaco usato in ambito militare in scenari con presenza di gas nervino. Epinephrine autoinjector @@ -753,6 +811,7 @@ Epiniphrin Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor + Autoiniettore di Epinefrina Increase heart rate and counter effects given by allergic reactions @@ -762,6 +821,7 @@ Adrenalina. Zwiększa puls i przeciwdziała efektom wywołanym przez reakcje alergiczne Steigert die Herzfrequenz, um den Effekt von allergischen Reaktionen zu bekämpfen Növeli a szívverést és ellenzi az allergiás reakciók hatásait + Aumenta il battito cardiaco e combatte gli effetti di reazioni allergiche. A drug that works on a sympathetic response to dilate the bronchi, increase heart rate and counter such effects given by allergic reactions (anaphylaxis). Used in sudden cardiac arrest scenarios with decreasing positive outcomes. @@ -769,6 +829,7 @@ Medicamento que dilata los bronquios, aumenta la frecuencia cardiaca y contrarresta los efectos de las reacciones alérgicas (anafilaxis). Se utiliza en caso de paros cardiacos repentinos. Medicament qui fonctionne sur le système nerveux sympathique créant une dilatation des bronches, augmente la fréquence cardiaque et annule les effets d'une réaction allergique (anaphylaxie). Utilisé lors d'arrêt cardio-respiratoire pour augmenter les chances de retrouver un pouls. EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności. + Una sostanza che permette di dilatare i bronchi, aumentare il battito cardiaco e combattere effetti di reazioni allergiche. Usato anche in casi di arresto cardiaco. Plasma IV (1000ml) @@ -778,6 +839,7 @@ Osocze IV (1000ml) Plasma IV (1000ml) Vérplazma-infúzió (1000ml) + Plasma IV (1000ml) A volume-expanding blood supplement. @@ -786,6 +848,7 @@ Supplément visant à remplacer les volumes sanguin Składnik krwi, używany do zwiększenia jej objętości. Egy térfogatnövelő vérkiegészítmény. + Aiuta ad aumentare il volume sanguigno. A volume-expanding blood supplement. @@ -794,6 +857,7 @@ Supplément visant à remplacer le volume sanguin et remplace les plaquettes. Składnik krwi, używany do zwiększenia jej objętości. Egy térfogatnövelő vérkiegészítmény. + Aiuta ad aumentare il volume sanguigno. Plasma IV (500ml) @@ -803,6 +867,7 @@ Osocze IV (500ml) Plasma IV (500ml) Vérplazma-infúzió (500ml) + Plasma IV (500ml) Plasma IV (250ml) @@ -812,6 +877,7 @@ Osocze IV (250ml) Plasma IV (250ml) Vérplazma-infúzió (250ml) + Plasma IV (250ml) Blood IV (1000ml) @@ -821,6 +887,7 @@ Krew IV (1000ml) Blut IV (1000ml) Vér-infúzió (1000ml) + Sangue IV (1000ml) Blood IV, for restoring a patients blood (keep cold) @@ -829,12 +896,14 @@ Cullot Sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych Vér-infúzió, intravénás bejuttatásra egy páciensnek (hidegen tárolandó) + Sangue usato per ripristinare pazienti in cui si è verificata una perdita di sangue (conservare al fresco) O Negative infusion blood used in strict and rare events to replenish blood supply usually conducted in the transport phase of medical care. Кровь I группы, резус-отрицательная, применяется по жизненным показаниям для возмещения объема потерянной крови на догоспитальном этапе оказания медицинской помощи. Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala. Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdida. Uso habitual durante el transporte de heridos. + Sangue 0 negativo usato per ripristinare sangue in pazienti in cui si è verificata una perdita di sangue. Blood IV (500ml) @@ -844,6 +913,7 @@ Krew IV (500ml) Blut IV (500ml) Vér-infúzió (500ml) + Sangue IV (500ml) Blood IV (250ml) @@ -853,6 +923,7 @@ Krew IV (250ml) Blut IV (250ml) Vér-infúzió (250ml) + Samgue IV (250ml) Saline IV (1000ml) @@ -862,6 +933,7 @@ Solanka 0,9% IV (1000ml) Kochsalzlösung (1000ml) 0,9%-os sósvíz-infúzió (1000ml) + Soluzione salina IV (1000ml) Saline IV, for restoring a patients blood @@ -870,6 +942,7 @@ Solution Saline 0.9% IV, pour rétablir temporairement la tension artérielle Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta 0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására + Soluzione salina, usata per ripristinare sangue nei pazienti. A medical volume-replenishing agent introduced into the blood system through an IV infusion. @@ -878,6 +951,7 @@ Un remplacement temporaire pour rétablir la tension artérielle lors de perte sanguine, administré par intra-veineuse Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV). Egy orvosi térfogat-helyreállító készítmény, melyet intravénás módon lehet a szervezetbe juttatni. + Una soluzione medica per ripristinare il volume del sangue introdotta tramite trasfusione IV. Saline IV (500ml) @@ -887,6 +961,7 @@ Solanka 0,9% IV (500ml) Kochsalzlösung (500ml) 0,9%-os sósvíz-infúzió (500ml) + Soluzione salina IV (500ml) Saline IV (250ml) @@ -896,6 +971,7 @@ Solanka 0,9% IV (250ml) Kochsalzlösung (250ml) 0,9%-os sósvíz-infúzió (250ml) + Soluzione salina IV (250ml) Basic Field Dressing (QuikClot) @@ -905,6 +981,7 @@ Podstawowy pakiet opatrunkowy (QuikClot) Verbandpäckchen(Gerinnungsmittel) Általános zárókötszer (QuikClot) + Bendaggio emostatico (QuikClot) QuikClot bandage @@ -914,6 +991,7 @@ Hemostatyczny pakiet QuikClot. Podstawowy opatrunek stosowany na rany. Bandage mit Gerinnungsmittel QuikClot kötszer + Bendaggio emostatico (QuikClot) Hemostatic bandage with coagulant that stops bleeding. @@ -923,6 +1001,7 @@ Vendaje hemostático con coagulante que detiene el sangrado. Verband mit Gerinnungsmittel, um starke Blutung zu behandeln. Hemostatikus kötszer egy vérzésgátló anyaggal. + Bendaggio emostatico con coagulante che permette di arrestare perdite di sangue Personal Aid Kit @@ -932,6 +1011,7 @@ Apteczka osobista Persönliches Verbandpäckchen Elsősegélycsomag + Pronto soccorso personale Includes various treatment kit needed for stitching or advanced treatment @@ -941,6 +1021,7 @@ Zestaw środków medycznych do opatrywania ran i dodatkowego leczenia po-urazowego Beinhaltet medizinisches Material für fortgeschrittene Behandlung und zum Nähen. Változatos segédfelszereléseket tartalmaz sebvarráshoz és haladó elsősegélynyújtáshoz + Include vario materiale medico per trattamenti avanzati. @@ -948,6 +1029,7 @@ W znacznym stopniu poprawia stan pacjenta + Surgical Kit @@ -957,6 +1039,7 @@ Zestaw do szycia ran Operationsset Sebészeti készlet + Kit chirurgico Surgical Kit for in field advanced medical treatment @@ -966,6 +1049,7 @@ Zestaw pozwalający na zszywanie ran w polu Operationsset für fortgeschrittene medizinische Feldversorgung Sebészeti készlet komplex orvosi feladatok terepen való ellátására + Kit chirurgico per trattamenti avanzati sul campo. Surgical Kit for in field advanced medical treatment @@ -975,6 +1059,7 @@ Operationsset für fortgeschrittene medizinische Feldversorgung Trousse chirurgicale pour le traitement sur le terrain Sebészeti készlet komplex orvosi feladatok terepen való ellátására + Kit chirurgico per trattamenti avanzati sul campo. Bodybag @@ -984,6 +1069,7 @@ Worek na zwłoki Leichensack Hullazsák + Sacca per corpi A bodybag for dead bodies @@ -993,6 +1079,7 @@ Worek do pakowania zwłok Ein Leichensack für Tote Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. A bodybag for dead bodies @@ -1002,6 +1089,7 @@ Worek do pakowania zwłok Ein Leichensack für Tote Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. Blood Pressure @@ -1011,15 +1099,17 @@ Ciśnienie krwi Blutdruck Vérnyomás + Pressione sanguigna Checking Blood Pressure.. Mesure de la tension ... - Проверка артериального давления... + Проверка артериального давления ... Comprobando presión arterial... Sprawdzanie ciśnienia krwi... Blutdruck kontrollieren... Vérnyomás megmérése... + Controllando la pressione sanguigna.. You checked %1 @@ -1029,6 +1119,7 @@ Zbadałeś %1 Kontrolliert %1 A %1 ellenőrizve + Hai diagnosticato %1 You find a blood pressure of %2/%3 @@ -1036,6 +1127,7 @@ Артериальное давление %2/%3 La Presión Arterial es %2/%3 A vérnyomás %2/%3 + Hai riscontrato una pressione di %2/%3 You find a low blood pressure @@ -1045,6 +1137,7 @@ Wyczuwasz niskie ciśnienie krwi Blutdruck ist niedrig A vérnyomás alacsony + La pressione sanguigna è bassa You find a normal blood pressure @@ -1054,6 +1147,7 @@ Wyczuwasz normalne ciśnienie krwi Blutdruck ist normal A vérnyomás normális + La pressione sanguigna è normale You find a high blood pressure @@ -1063,6 +1157,7 @@ Wyczuwasz wysokie ciśnienie krwi Blutdruck ist hoch A vérnyomás magas + La pressione sanguigna è alta You find no blood pressure @@ -1072,6 +1167,7 @@ Nie wyczuwasz ciśnienia krwi Patient hat keinen Blutdruck Nem észlelhető vérnyomás + La pressione sanguigna è assente You fail to find a blood pressure @@ -1081,6 +1177,7 @@ Nie udało Ci się sprawdzić ciśnienia krwi Blutdruck konnte nicht gefunden werden Nem sikerült a vérnyomás megmérése + Manca strumento per misurare pressione sanguigna Pulse @@ -1090,15 +1187,17 @@ Tętno Puls Pulzus + Polso Checking Heart Rate.. Vérification du rythme cardiaque ... - Проверка пульса... + Проверка пульса ... Comprobando ritmo cardíaco... Sprawdzanie tętna... Kontrolliere Herzfrequenz Szívverés-szám mérése... + Controllando il battito cardiaco.. You checked %1 @@ -1108,6 +1207,7 @@ Zbadałeś %1 Kontrolliertt %1 A %1 ellenőrizve + Hai diagnosticato %1 You find a Heart Rate of %2 @@ -1117,6 +1217,7 @@ Wyczuwasz tętno o wartości %2 Herzfrequenz ist %2 A szívverés-szám %2 + Il battito cardiaco è %2 You find a weak Heart Rate @@ -1126,6 +1227,7 @@ Wyczuwasz słabe tętno Schwacher Puls A szívverés-szám alacsony + Hai riscontrato un debole battito cardiaco You find a strong Heart Rate @@ -1135,6 +1237,7 @@ Wyczuwasz silne tętno Starker Puls A szívverés-szám magas + Hai riscontrato un forte battito cardiaco You find a normal Heart Rate @@ -1144,6 +1247,7 @@ Wyczuwasz normalne tętno Normaler Puls A szívverés-szám normális + Hai riscontrato un normale battito cardiaco You find no Heart Rate @@ -1153,6 +1257,7 @@ Wyczuwasz brak tętna Kein Puls gefunden Nem észlelhető szívverés + Hai riscontrato una assenza di battito cardiaco Response @@ -1162,6 +1267,7 @@ Przytomność Ansprechbarkeit Reagálóképesség + Risposta You check response of patient @@ -1171,6 +1277,7 @@ Sprawdzasz przytomność pacjenta Du prüfst ob der Patient ansprechbar ist Ellenőrzöd a páciens reagálóképességét + Controlli la risposta del paziente %1 is responsive @@ -1180,15 +1287,17 @@ %1 jest przytomny %1 ist anprechbar %1 reakcióképes + %1 e' cosciente %1 is not responsive - %1 не реагирует + %1 не реагирует на раздражители %1 est inconscient %1 no reacciona %1 jest nieprzytomny %1 ist nicht ansprechbar %1 nem reagál + %1 e' incosciente You checked %1 @@ -1198,6 +1307,7 @@ Zbadałeś %1 Du versucht %1 anzusprechen Megnézted %1-t + Hai controllato %1 Bandaged @@ -1206,6 +1316,7 @@ Vendado Zabandażowano Bekötözve + Bendato You bandage %1 (%2) @@ -1214,6 +1325,7 @@ Aplicas vendaje a %1 en %2 Bandażujesz %1 (%2) Bekötözöd %1-t (%2) + Stai bendando %1 (%2) %1 is bandaging you @@ -1222,6 +1334,7 @@ %1 te está vendando %1 bandażuje Ciebie %1 bekötöz téged + %1 ti sta bendando You start stitching injures from %1 (%2) @@ -1230,6 +1343,7 @@ Estás suturando heridas de %1 en %2 Zszywasz rany %1 (%2) Elkezded összevarni %1 sérüléseit (%2) + Stai suturando le ferite di %1 (%2) Stitching @@ -1238,6 +1352,7 @@ Suturando Szycie Összevarrás + Suturando You treat the airway of %1 @@ -1246,6 +1361,7 @@ Estás intubando a %1 Udrażniasz drogi oddechowe %1 Kezeled %1 légútját + Controlli le vie respiratorie di %1 Airway @@ -1255,6 +1371,7 @@ Atemwege Voies respiratoires Légút + Vie respiratorie %1 is treating your airway @@ -1263,6 +1380,7 @@ %1 te está intubando %1 udrażnia Twoje drogi oddechowe %1 kezeli a légútadat + %1 ti sta trattando le vie respiratorie Drag @@ -1298,7 +1416,7 @@ Déposer Elengedés Largar - Lascia + Rrilascia Load Patient Into @@ -1331,6 +1449,7 @@ Wyładuj pacjenta Débarquer le Patient Sebesült kihúzása + Scarica il paziente Load patient @@ -1339,6 +1458,7 @@ Załaduj pacjenta Embarquer le Patient Sebesült berakása + Carica il paziente Place body in bodybag @@ -1347,14 +1467,16 @@ Zapakuj ciało do worka na zwłoki Mettre le corps dans la housse mortuaire Test hullazsákba helyezése + Metti il corpo nella sacca per cadaveri Placing body in bodybag Colocando cuerpo en bolsa para cadáveres - Упаковка тела + Упаковка тела ... Pakowanie ciała do worka na zwłoki Placement du corps dans la housse Test hullazsákba helyezése ... + Stai mettendo il corpo nella sacca %1 has bandaged patient @@ -1363,6 +1485,7 @@ %1 zabandażował pacjenta %1 a pansé le patient %1 bekötözte a pácienst + %1 ha bendato il paziente %1 used %2 @@ -1371,6 +1494,7 @@ %1 użył %2 %1 utilise %2 %1 használta a %2-t + %1 ha usato %2 %1 has given an IV @@ -1379,6 +1503,7 @@ %1 podał IV %1 a administré une IV %1 infúziót adott + %1 ha somministrato una IV %1 applied a tourniquet @@ -1387,78 +1512,103 @@ %1 założył stazę %1 a appliqué un garrot %1 felhelyezett egy érszorítót + %1 ha applicato un laccio emostatico Heavily wounded Schwer verwundet: Ciężko ranny + Сильно ранен + Gravemente ferito Gravemente herido Lightly wounded Leicht verwundet: Lekko ranny + Легко ранен + Leggermente ferito Levemente herido Very lightly wounded Sehr leicht verwundet: B. lekko ranny + Очень легко ранен + Ferito lievemente Muy levemente herido Head Kopf Głowa + Голова + Testa Cabeza Torso Torso Tors + Торс + Torso Torso Left Arm Linker Arm Lewe ramię + Левая рука + Braccio sinistro Brazo izquierdo Right Arm Rechter Arm Prawe ramię + Правая рука + Braccio destro Brazo derecho Left Leg Linkes Bein Lewa noga + Левая нога + Gamba sinistra Pierna izquierda Right Leg Rechtes Bein Prawa noga + Правая нога + Gamba destra Pierna derecha Pain Effect Type Schmerzeffekt-Typ Rodzaj efektu bólu + Вид боли + Pain Effect Type Tipo de efecto de dolor Colour Flashing Farbblinken Pulsujące kolory + Разноцветные вспышки + Colore lampeggiante Parpadeo de color Chromatic Aberration Chromatische Aberration Aberracja chromatyczna + Хроматическая аберрация + Aberrazione cromatica Aberración cromática - \ No newline at end of file + diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index 68b1a0f377..d7d550fc32 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -11,6 +11,7 @@ MicroDAGR GPS MicroDAGR GPS MicroDAGR GPS + MicroDAGR GPS MicroDAGR advanced GPS receiver @@ -21,6 +22,7 @@ Récepteur GPS MicroDAGR MicroDAGR pokročílá GPS příjímač MicroDAGR fejlett GPS vevőegység + MicroDAGR ricevitore GPS avanzato Angular Unit: @@ -31,6 +33,7 @@ Winkeleinheit: Úhlová jednotka: Szögmértékegység: + Unità angolare: Mils @@ -41,6 +44,7 @@ Mils Mils Mil + Miglia Show Waypoints On Map: @@ -51,6 +55,7 @@ Montrer points de passage sur la carte Ukázat waypointy na mapě: Útvonalpontok mutatása a térképen: + Mostra waypoint sulla mappa: Degrees @@ -61,13 +66,14 @@ Degrés Stupně Fok + Gradi On Zapnuto Allumé Ein - + Acceso Wł. Ativar Вкл. @@ -79,7 +85,7 @@ Vypnuto Eteint Aus - No + Spento Wył. Desativar Выкл. @@ -95,6 +101,7 @@ Koordinaten eingeben: Napiš souřadnice: Add meg a rácskoordinátákat: + Introduci griglia coordinate: Name of [%1] @@ -105,6 +112,7 @@ Nom de %1 Název [%1] [%1] neve + Nome di [%1] MGRS-New @@ -115,6 +123,7 @@ Info-MGRS MGRS-Nový MGRS-új + Nuovo MGRS WGD @@ -125,6 +134,7 @@ WGD WGD WGD + WGD Range: @@ -135,6 +145,7 @@ Distance: Vzdálenost: Távolság: + Distanza: Compass Direction @@ -145,6 +156,7 @@ Azimut Azimut: Irányszög + Azimut Mark @@ -155,6 +167,7 @@ Marque Označit Jelölés + Marca Waypoints @@ -165,6 +178,7 @@ Punkty trasy Point de passage Útvonalpontok + waypoints Connect To @@ -175,6 +189,7 @@ Podłącz do Connecter Csatlakozás + Collega a Settings @@ -185,6 +200,7 @@ Nastavení Ustawienia Beállítások + Impostaizoni SetWP @@ -195,6 +211,7 @@ UstawPT Définir point de passage UP Beállítása + Definisci WayPoints Add @@ -205,6 +222,7 @@ Dodaj Ajouter Hozzáadás + Aggiungi Delete @@ -226,6 +244,7 @@ Basculer le mode d'affichage MicroDAGR Přepnout zobrazení MircroDAGRu MicroDAGR kijelzési mód váltása + Alterna modalità display MicroDAGR Show MicoDAGR @@ -236,6 +255,7 @@ Pokaż<br />MicroDAGR Afficher MicroDAGR MicroDAGR mutatása + Mostra MicroDAGR Configure MicroDAGR @@ -246,6 +266,7 @@ Konfiguruj<br />MicroDAGR Configurer MicroDAGR MicroDAGR konfigurálása + ConfiguraMicroDAGR Close MicroDAGR @@ -256,6 +277,7 @@ Zamknij<br />MicroDAGR Fermer MicroDAGR MicroDAGR elrejtése + Chiudi MicroDAGR - \ No newline at end of file + diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp index a05ecee9bc..3b74c87065 100644 --- a/addons/missileguidance/CfgAmmo.hpp +++ b/addons/missileguidance/CfgAmmo.hpp @@ -50,6 +50,8 @@ class CfgAmmo { //maxDeflection = 0.5; //incDeflection = 0.005; + canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet mode + // Guidance type for munitions defaultSeekerType = "SALH"; seekerTypes[] = { "SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS" }; @@ -120,6 +122,8 @@ class CfgAmmo { //maxDeflection = 0.5; //incDeflection = 0.005; + canVanillaLock = 0; + // Guidance type for munitions defaultSeekerType = "Optic"; seekerTypes[] = { "Optic" }; diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf index 822afd7f1b..ecb469527a 100644 --- a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf +++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf @@ -48,12 +48,12 @@ switch( (_state select 0) ) do { if( ((ASLToATL _projectilePos) select 2) - ((ASLToATL _seekerTargetPos) select 2) >= _cruisAlt) then { _state set[0, STAGE_TERMINAL]; } else { - _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget*2]; + _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget*1.5]; }; }; case STAGE_TERMINAL: { TRACE_1("STAGE_TERMINAL",""); - //_returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.02]; + _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.002]; }; }; diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf index dc8b9b8e9d..c5933e6df9 100644 --- a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf +++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf @@ -48,24 +48,29 @@ switch( (_state select 0) ) do { _cruisAlt = 140 * (_distanceShooterToTarget/1250); TRACE_1("_cruisAlt", _cruisAlt); }; - if( ((ASLToATL _projectilePos) select 2) - ((ASLToATL _seekerTargetPos) select 2) >= _cruisAlt) then { - _state set[0, STAGE_COAST]; + if(_cruisAlt < 140) then { + _state set[0, STAGE_TERMINAL]; + } else { + _state set[0, STAGE_COAST]; + }; } else { - _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget*2]; + _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget*1.5]; }; }; case STAGE_COAST: { TRACE_1("STAGE_COAST",""); TRACE_1("", ((ASLToATL _projectilePos) select 2) - (( ASLToATL _seekerTargetPos) select 2) ); - if(_distanceShooterToTarget < 1250 || _distanceToTarget < ( ((ASLToATL _projectilePos) select 2) - (( ASLToATL _seekerTargetPos) select 2) ) * 1.5) then { + if(_distanceToTarget < ( ((ASLToATL _projectilePos) select 2) - (( ASLToATL _seekerTargetPos) select 2) ) * 1.5) then { _state set[0, STAGE_TERMINAL]; + } else { + _returnTargetPos = _seekerTargetPos vectorAdd [0,0,(_projectilePos select 2)]; }; - _returnTargetPos = _seekerTargetPos vectorAdd [0,0,(_projectilePos select 2)]; }; case STAGE_TERMINAL: { TRACE_1("STAGE_TERMINAL",""); //_returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.02]; + _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.002]; }; }; diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf index 186a622417..dd96821692 100644 --- a/addons/missileguidance/functions/fnc_onFired.sqf +++ b/addons/missileguidance/functions/fnc_onFired.sqf @@ -41,15 +41,14 @@ if ( isNil "_lockMode" || { ! ( _lockMode in (getArray (_config >> "seekerLockMo // If we didn't get a target, try to fall back on tab locking if(isNil "_target") then { - if(!isPlayer _shooter) then { // This was an AI shot, lets still guide it on the AI target _target = _shooter getVariable[QGVAR(vanilla_target), nil]; TRACE_1("Detected AI Shooter!", _target); } else { _canUseLock = getNumber (_config >> "canVanillaLock"); - if(_canUseLock > 0) then { - // @TODO: Get vanilla target + // @TODO: Get vanilla target + if(_canUseLock > 0 || difficulty < 1) then { _vanillaTarget = cursorTarget; TRACE_1("Using Vanilla Locking", _vanillaTarget); diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 4a640a60f0..c9cb4c4c6b 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -8,7 +8,7 @@ Zaawansowane naprowadzanie rakiet Erweitertes Raketenlenksystem Pokročilé řízení střel - Avanzato Missile Guidance + Guida missili avanzata Avançado Missile Guidance Fejlett rakétairányító Расширенный ракетой @@ -20,7 +20,7 @@ Hydra-70 DAGR Hydra-70 DAGR Rackete Hydra-70 DAGR - + Missile Hydra-70 DAGR Hydra-70 DAGR rakéta @@ -32,7 +32,7 @@ DAGR DAGR DAGR - + DAGR DAGR @@ -44,7 +44,7 @@ Laserowo naprowadzana rakieta Hydra-70 DAGR Hydra-70 DAGR lasergelenkte Rakete Hydra-70 DAGR laserem naváděná střela - + Hydra-70 DAGR missile guida laser Hydra-70 DAGR lézer-irányított rakéta @@ -56,7 +56,7 @@ Hellfire II AGM-114K Hellfire II AGM-114K Hellfire II AGM-114K - + Missile Hellfire II AGM-114K Hellfire II AGM-114K rakéta @@ -68,7 +68,7 @@ AGM-114K AGM-114K AGM-114K - + AGM-114K AGM-114K @@ -80,7 +80,7 @@ Laserowo naprowadzana rakieta Hellfire II AGM-114K Hellfire II AGM-114K Lasergelenkte Rakete Hellfire II AGM-114K laserem naváděná střela - + Missile guida laser Hellfire II AGM-114K Hellfire II AGM-114K lézer-irányított rakéta diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml index 2275937398..eb91496de8 100644 --- a/addons/movement/stringtable.xml +++ b/addons/movement/stringtable.xml @@ -34,6 +34,7 @@ Vylézt Подняться Mászás + Arrampicati Can't climb here @@ -44,6 +45,7 @@ Zde není možné vylézt Не можете подняться здесь Itt nem tudsz mászni + Non puoi arrampicarti qui diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf index ab3cd03391..1df20e45e7 100644 --- a/addons/nametags/XEH_postInit.sqf +++ b/addons/nametags/XEH_postInit.sqf @@ -5,6 +5,7 @@ if (!hasInterface) exitWith {}; +GVAR(ShowNamesTime) = -10; // Add keybinds ["ACE3", QGVAR(showNameTags), localize "STR_ACE_NameTags_ShowNames", diff --git a/addons/nametags/XEH_preInit.sqf b/addons/nametags/XEH_preInit.sqf index 80c06cff1f..f3c9a97cba 100644 --- a/addons/nametags/XEH_preInit.sqf +++ b/addons/nametags/XEH_preInit.sqf @@ -9,9 +9,6 @@ PREP(getVehicleData); PREP(initIsSpeaking); PREP(moduleNameTags); PREP(onDraw3d); -PREP(onMouseZChanged); PREP(setText); -GVAR(ShowNamesTime) = -10; - ADDON = true; diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf index 56c5cfc2f1..d8ffda756c 100644 --- a/addons/nametags/functions/fnc_initIsSpeaking.sqf +++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf @@ -20,8 +20,8 @@ if (isServer) then { //If someone disconnects while speaking, reset their variable addMissionEventHandler ["HandleDisconnect", { PARAMS_1(_disconnectedPlayer); - if (_disconnectedPlayer getVariable [QGVAR(isSpeaking), false]) then { - _disconnectedPlayer setVariable [QGVAR(isSpeaking), false, true]; + if (_disconnectedPlayer getVariable [QGVAR(isSpeakingInGame), false]) then { + _disconnectedPlayer setVariable [QGVAR(isSpeakingInGame), false, true]; }; }]; }; @@ -31,46 +31,40 @@ if (!hasInterface) exitWith {}; ["playerChanged", { //When player changes, make sure to reset old unit's variable PARAMS_2(_newUnit,_oldUnit); - if (_oldUnit getVariable [QGVAR(isSpeaking), false]) then { - _oldUnit setVariable [QGVAR(isSpeaking), false, true]; + if ((!isNull _oldUnit) && {_oldUnit getVariable [QGVAR(isSpeakingInGame), false]}) then { + _oldUnit setVariable [QGVAR(isSpeakingInGame), false, true]; }; }] call EFUNC(common,addEventHandler); -//For performance, chose different code paths at mission start based on installed mods (once, instead of checking each time) -_pfEHCode = switch (true) do { -case (isClass (configFile >> "cfgPatches" >> "acre_api")): { - { - _oldSetting = ACE_player getVariable [QGVAR(isSpeaking), false]; - _newSetting = ([ACE_player] call acre_api_fnc_isSpeaking) || ([ACE_player] call acre_api_fnc_isBroadcasting) || {!(isNull findDisplay 55)}; - if (!(_oldSetting isEqualTo _newSetting)) then { - ACE_player setVariable [QGVAR(isSpeaking), _newSetting, true]; - }; - }; +if (isClass (configFile >> "cfgPatches" >> "acre_api")) then { + diag_log text format ["[ACE_nametags] - ACRE Detected"]; + DFUNC(isSpeaking) = { + PARAMS_1(_unit); + ([_unit] call acre_api_fnc_isSpeaking) || ([ACE_player] call acre_api_fnc_isBroadcasting) }; -case (isClass (configFile >> "cfgPatches" >> "task_force_radio")): { - //Note: TFAR has a TFAR_fnc_isSpeaking function, but it has a fairly costly `callExtension` - //I think it's much faster to use the internal "tf_isSpeaking" variable - //If we don't care about the built-in VON, we could switch this to a pure event driven system - { - _oldSetting = ACE_player getVariable [QGVAR(isSpeaking), false]; - _newSetting = (ACE_player getVariable ["tf_isSpeaking", false]) || {!(isNull findDisplay 55)}; - if (!(_oldSetting isEqualTo _newSetting)) then { - ACE_player setVariable [QGVAR(isSpeaking), _newSetting, true]; - }; +} else { + if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then { + diag_log text format ["[ACE_nametags] - TFR Detected"]; + DFUNC(isSpeaking) = { + PARAMS_1(_unit); + (_unit getVariable ["tf_isSpeaking", false]) }; - }; - default { - //Note: class RscDisplayVoiceChat {idd = 55}; //only present when talking - { - _oldSetting = ACE_player getVariable [QGVAR(isSpeaking), false]; + } else { + //No Radio Mod - Start a PFEH to watch the internal VON icon + //Note: class RscDisplayVoiceChat {idd = 55} - only present when talking + + [{ + _oldSetting = ACE_player getVariable [QGVAR(isSpeakingInGame), false]; _newSetting = (!(isNull findDisplay 55)); if (!(_oldSetting isEqualTo _newSetting)) then { - ACE_player setVariable [QGVAR(isSpeaking), _newSetting, true]; + ACE_player setVariable [QGVAR(isSpeakingInGame), _newSetting, true]; }; + } , 0.1, []] call CBA_fnc_addPerFrameHandler; + + DFUNC(isSpeaking) = { + PARAMS_1(_unit); + (_unit getVariable [QGVAR(isSpeakingInGame), false]) }; }; }; - -//Is 0.05sec precision enough?? -[_pfEHCode, 0.05, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf index 8aa503d377..d35cef0d67 100644 --- a/addons/nametags/functions/fnc_onDraw3d.sqf +++ b/addons/nametags/functions/fnc_onDraw3d.sqf @@ -50,9 +50,9 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then { _alpha = _alpha min _onKeyPressAlphaMax; _icon = ICON_NONE; if (GVAR(showSoundWaves) == 2) then { //icon will be drawn below, so only show name here - _icon = if ((_target getVariable [QGVAR(isSpeaking), false]) && {(vehicle _target) == _target}) then {ICON_NAME} else {_defaultIcon}; + _icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}) then {ICON_NAME} else {_defaultIcon}; } else { - _icon = if ((_target getVariable [QGVAR(isSpeaking), false]) && {(vehicle _target) == _target} && {GVAR(showSoundWaves) > 0}) then {ICON_NAME_SPEAK} else {_defaultIcon}; + _icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target} && {GVAR(showSoundWaves) > 0}) then {ICON_NAME_SPEAK} else {_defaultIcon}; }; [_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon); @@ -77,10 +77,10 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho _icon = ICON_NONE; if ((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) then { - if ((_target getVariable [QGVAR(isSpeaking), false]) && {(vehicle _target) == _target} && {GVAR(showSoundWaves) > 0}) then {_icon = ICON_NAME_SPEAK;} else {_icon = _defaultIcon}; + if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target} && {GVAR(showSoundWaves) > 0}) then {_icon = ICON_NAME_SPEAK;} else {_icon = _defaultIcon}; } else { //showSoundWaves must be 2, only draw speak icon - if ((_target getVariable [QGVAR(isSpeaking), false]) && {(vehicle _target) == _target}) then {_icon = ICON_SPEAK;}; + if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}) then {_icon = ICON_SPEAK;}; }; if ((_icon != ICON_NONE) && @@ -96,7 +96,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min (1 - 0.15 * (_projDist * 5 - _distance - 3)) min 1) * GVAR(PlayerNamesMaxAlpha); - if ((GVAR(showSoundWaves) == 2) && {(_target getVariable [QGVAR(isSpeaking), false]) && {(vehicle _target) == _target}}) then { + if ((GVAR(showSoundWaves) == 2) && {([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}}) then { _alpha = 1; } else { _alpha = _alpha min _onKeyPressAlphaMax; diff --git a/addons/nametags/functions/fnc_onMouseZChanged.sqf b/addons/nametags/functions/fnc_onMouseZChanged.sqf deleted file mode 100644 index 8892f201bc..0000000000 --- a/addons/nametags/functions/fnc_onMouseZChanged.sqf +++ /dev/null @@ -1,18 +0,0 @@ -/* - Author: aeroson - - Description: - Callback for mouse wheel change - - Parameters: - None - - Returns: - Nothing -*/ - -#include "script_component.hpp" - -if(call FUNC(canShow)) then { - call FUNC(doShow); -}; diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml index 3aaeebdb00..4bb91688fa 100644 --- a/addons/overheating/stringtable.xml +++ b/addons/overheating/stringtable.xml @@ -15,7 +15,7 @@ Display a notification whenever your weapon gets jammed Zeige einen Hinweis, wenn die Waffe eine Ladehemmung hat. Mostrar notificación cada vez que el arma se encasquille - Демонстровать уведомление, каждый раз, когда клинит Ваше оружие. + Показывать уведомление каждый раз, когда клинит Ваше оружие. Zobrazí upozornění při zaseknutí zbraně Wyświetl powiadomienie za każdym razem, kiedy Twoja broń ulegnie zacięciu Affiche une notification lors d'un enrayement @@ -100,7 +100,7 @@ Wymienianie lufy... Vyměňuji hlaveň ... Changement du canon... - Смена ствола... + Смена ствола ... Cső kicserélése folyamatban... Substituindo cano... Sto sostituendo la canna ... @@ -136,6 +136,7 @@ Zkontrolovat teplotu zbraně Vérifier la température Fegyverhő ellenőrzése + Проверить температуру оружия Checking temperature ... diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index a39736c902..2b02d7f5b7 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1049,6 +1049,7 @@ P99 P99 P99 + P99 MP-443 Grach @@ -1058,6 +1059,7 @@ MP-443 Grach MP-443 Grach MP-443 Grach + МР-443 "Грач" ACP-C2 @@ -1067,6 +1069,7 @@ ACP-C2 ACP-C2 ACP-C2 + ACP-C2 FNX-45 Tactical @@ -1076,6 +1079,7 @@ FNX-45 Tactical FNX-45 Tactical FNX-45 Tactical + FNX-45 Tactical Chiappa Rhino 60DS @@ -1085,6 +1089,7 @@ Chiappa Rhino 60DS Chiappa Rhino 6DS Chiappa Rhino 60DS + Chiappa Rhino 60DS Taurus Judge @@ -1094,6 +1099,7 @@ Taurus Judge Taurus Judge Taurus Judge + Taurus Judge NLAW @@ -1103,6 +1109,7 @@ NLAW NLAW NLAW + NLAW RPG-32 @@ -1112,6 +1119,7 @@ RPG-32 RPG-32 RPG-32 + РПГ-32 Mini-Spike (AA) @@ -1121,6 +1129,7 @@ Mini-Spike (AA) Mini-Spike (Repülő-elhárító) Mini-Spike (AA) + Mini-Spike (AA) Mini-Spike (AT) @@ -1130,6 +1139,7 @@ Mini-Spike (AT) Mini-Spike (Tankelhárító) Mini-Spike (AT) + Mini-Spike (AT) MX @@ -1139,6 +1149,7 @@ MX MX MX + MX MX (Black) @@ -1148,6 +1159,7 @@ MX ( Noir) MX (Fekete) MX (Negro) + MX (черный) MXC @@ -1157,6 +1169,7 @@ MXC MXC MXC + MXC MXC (Black) @@ -1166,6 +1179,7 @@ MXC (Noir) MXC (Fekete) MXC (Negro) + MXC (черный) MX 3GL @@ -1175,6 +1189,7 @@ MX 3GL MX 3GL MX 3GL + MX 3GL MX 3GL (Black) @@ -1184,6 +1199,7 @@ MX 3 GL (Noir) MX 3GL (Fekete) MX 3GL (Negro) + MX 3GL (черный) MX LSW @@ -1193,6 +1209,7 @@ MX LSW MX LSW MX LSW + MX LSW MX LSW (Black) @@ -1202,6 +1219,7 @@ MX LSW (Noir) MX LSW (Fekete) MX LSW (Negro) + MX LSW (черный) MXM @@ -1211,6 +1229,7 @@ MXM MXM MXM + MXM MXM (Black) @@ -1220,6 +1239,7 @@ MXM (Noir) MXM (Fekete) MXM (Negro) + MXM (черный) KT2002 Katiba @@ -1229,6 +1249,7 @@ KT2002 Katiba KT2002 Katiba KT2002 Katiba + KT2002 Катиба KT2002C Katiba @@ -1238,6 +1259,7 @@ KT2002C Katiba KT2002C Katiba KT2002C Katiba + KT2002C Катиба KT2002 Katiba KGL @@ -1247,6 +1269,7 @@ KT2002 Katiba KGL KT2002 Katiba KGL KT2002 Katiba KGL + KT2002 Катиба KGL F2000 (Camo) @@ -1256,6 +1279,7 @@ F2000 (Camo) F2000 (Terepmintás) F2000 (Camuflaje) + F2000 (камо) F2000 @@ -1265,6 +1289,7 @@ F2000 F2000 F2000 + F2000 F2000 Tactical (Camo) @@ -1274,6 +1299,7 @@ F2000 Tactical (Camo) F2000 Tactical (Terepmintás) F2000 Tactical (Camuflaje) + F2000 Tactical (камо) F2000 Tactical @@ -1283,6 +1309,7 @@ F2000 Tactical F2000 Tactical F2000 Tactical + F2000 Tactical F2000 EGLM (Camo) @@ -1292,6 +1319,7 @@ F2000 EGLM (Camo) F2000 EGLM (Terepmintás) F2000 EGLM (Camuflaje) + F2000 EGLM (камо) F2000 EGLM @@ -1301,6 +1329,7 @@ F2000 EGLM F2000 EGLM F2000 EGLM + F2000 EGLM TAR-21 @@ -1310,6 +1339,7 @@ TAR-21 TAR-21 TAR-21 + TAR-21 CTAR-21 @@ -1319,6 +1349,7 @@ CTAR-21 CTAR-21 CTAR-21 + CTAR-21 TAR-21 EGLM @@ -1328,6 +1359,7 @@ TAR-21 EGLM TAR-21 EGLM TAR-21 EGLM + TAR-21 EGLM Vector SMG @@ -1337,6 +1369,7 @@ Vector SMG Vector SMG Vector SMG + Vector SMG Scorpion Evo 3 A1 @@ -1346,6 +1379,7 @@ Scorpion Evo 3 A1 Scorpion Evo 3 A1 Scorpion Evo 3 A1 + Scorpion Evo 3 A1 CPW @@ -1355,6 +1389,7 @@ CPW CPW CPW + CPW RFB SDAR @@ -1364,6 +1399,7 @@ RFB SDAR RFB SDAR RFB SDAR + RFB SDAR Stoner 99 LMG @@ -1373,6 +1409,7 @@ Stoner 99 LMG Stoner 99 Könnyűgéppuska Stoner 99 LMG + Stoner 99 LMG Negev NG7 @@ -1382,6 +1419,7 @@ Negev NG7 Negev NG7 Negev NG7 + Negev NG7 Mk14 Mod 1 EBR @@ -1391,6 +1429,7 @@ Mk 14 Mod 1 EBR Mk14 Mod 1 EBR Mk14 Mod 1 EBR + Mk14 Mod 1 EBR GM6 Lynx @@ -1400,6 +1439,7 @@ GM6 Lynx GM6 Gepárd GM6 Lynx + GM6 Lynx GM6 Lynx (Camo) @@ -1409,6 +1449,7 @@ GM6 Lynx (Camo) GM6 Gepárd (Terepmintás) GM6 Lynx (Camuflaje) + GM6 Lynx (камо) M200 Intervention @@ -1418,6 +1459,7 @@ M200 Intervention M200 Intervention M200 Intervention + M200 Intervention M200 Intervention (Camo) @@ -1427,6 +1469,7 @@ M200 Intervention (Camo) M200 Intervention (Terepmintás) M200 Intervention (Camuflaje) + M200 Intervention (камо) VS-121 @@ -1436,174 +1479,203 @@ VS-121 VS-121 VS-121 + VS-121 TODO: MAR-10 .338 TODO: MAR-10 .338 MAR-10 .338 TODO: MAR-10 .338 + TODO: MAR-10 .338 TODO: MAR-10 .338 (Black) TODO: MAR-10 .338 (Black) MAR-10 .338 (Noir) TODO: MAR-10 .338 (Negro) + TODO: MAR-10 .338 (черный) TODO: MAR-10 .338 (Camo) TODO: MAR-10 .338 (Camo) MAR-10 .338 (Camo) TODO: MAR-10 .338 (Camuflaje) + TODO: MAR-10 .338 (камо) TODO: MAR-10 .338 (Sand) TODO: MAR-10 .338 (Sand) MAR-10 .338 (Beige) TODO: MAR-10 .338 (Arena) + TODO: MAR-10 .338 (песочный) TODO: Mk-I EMR 7.62 mm TODO: Mk-I EMR 7.62 mm Mk-l EMR 7.62 mm TODO: Mk-I EMR 7.62 mm + TODO: Mk-I EMR 7.62 мм TODO: Mk-I EMR 7.62 mm (Black) TODO: Mk-I EMR 7.62 mm (Black) Mk-l EMR 7.62 mm (Noir) TODO: Mk-I EMR 7.62 mm (Negro) + TODO: Mk-I EMR 7.62 мм (черный) TODO: Mk-I EMR 7.62 mm (Khaki) TODO: Mk-I EMR 7.62 mm (Khaki) Mk-l EMR 7.62 mm (Kaki) TODO: Mk-I EMR 7.62 mm (Caqui) + TODO: Mk-I EMR 7.62 мм (хаки) TODO: Mk-I EMR 7.62 mm (Sand) TODO: Mk-I EMR 7.62 mm (Sand) Mk-l EMR 7.62 mm (Beige) TODO: Mk-I EMR 7.62 mm (Arena) + TODO: Mk-I EMR 7.62 мм (песочный) TODO: Mk-I EMR 7.62 mm (Camo) TODO: Mk-I EMR 7.62 mm (Camo) Mk-l EMR 7.62 mm (Camo) TODO: Mk-I EMR 7.62 mm (Camuflaje) + TODO: Mk-I EMR 7.62 мм (камо) TODO: Mk-I EMR 7.62 mm (Woodland) TODO: Mk-I EMR 7.62 mm (Woodland) Mk-l EMR 7.62 mm (Woodland) TODO: Mk-I EMR 7.62 mm (Bosque) + TODO: Mk-I EMR 7.62 мм (лесной) TODO: NATO DMR (provisional) spotter TODO: NATO DMR (provisional) spotter NATO DMR (provisoire) Observateur TODO: NATO DMR (provisional) observador + TODO: NATO DMR (provisional) корректировщик TODO: ASP-1 Kir 12.7 mm TODO: ASP-1 Kir 12.7 mm ASP-1 Kir 12.7 mm TODO: ASP-1 Kir 12.7 mm + TODO: ASP-1 Kir 12.7 мм TODO: ASP-1 Kir 12.7 mm (Black) TODO: ASP-1 Kir 12.7 mm (Black) ASP-1 Kir 12.7 mm (Noir) TODO: ASP-1 Kir 12.7 mm (Negro) + TODO: ASP-1 Kir 12.7 мм (черный) TODO: ASP-1 Kir 12.7 mm (Tan) TODO: ASP-1 Kir 12.7 mm (Tan) ASP-1 Kir 12.7 mm (Tan) TODO: ASP-1 Kir 12.7 mm (Tan) + TODO: ASP-1 Kir 12.7 мм (бронзовый) TODO: Cyrus 9.3 mm TODO: Cyrus 9.3 mm Cyrus 9.3 mm TODO: Cyrus 9.3 mm + TODO: Cyrus 9.3 мм TODO: Cyrus 9.3 mm (Black) TODO: Cyrus 9.3 mm (Black) Cyrus 9.3 mm (Noir) TODO: Cyrus 9.3 mm (Negro) + TODO: Cyrus 9.3 мм (черный) TODO: Cyrus 9.3 mm (Hex) TODO: Cyrus 9.3 mm (Hex) Cyrus 9.3 mm (Hex) TODO: Cyrus 9.3 mm (Hex) + TODO: Cyrus 9.3 мм (гекс) TODO: Cyrus 9.3 mm (Tan) TODO: Cyrus 9.3 mm (Tan) Cyrus 9.3 mm (Tan) TODO: Cyrus 9.3 mm (Tan) + TODO: Cyrus 9.3 мм (бронза) TODO: Mk14 7.62 mm TODO: Mk14 7.62 mm Mk 14 7.62 mm TODO: Mk14 7.62 mm + TODO: Mk14 7.62 мм TODO: Mk14 7.62 mm (Camo) TODO: Mk14 7.62 mm (Camo) Mk 14 7.62 mm (Camo) TODO: Mk14 7.62 mm (Camuflaje) + TODO: Mk14 7.62 мм (камо) TODO: Mk14 7.62 mm (Olive) TODO: Mk14 7.62 mm (Olive) Mk 14 7.62 mm (Olive) TODO: Mk14 7.62 mm (Oliva) + TODO: Mk14 7.62 мм (олива) TODO: Navid 9.3 mm TODO: Navid 9.3 mm Navid 9.3 mm TODO: Navid 9.3 mm + TODO: Navid 9.3 мм TODO: Navid 9.3 mm (Hex) TODO: Navid 9.3 mm (Hex) Navid 9.3 mm (Hex) TODO: Navid 9.3 mm (Hex) + TODO: Navid 9.3 мм (гекс) TODO: Navid 9.3 mm (Tan) TODO: Navid 9.3 mm (Tan) Navid 9.3 mm (Tan) TODO: Navid 9.3 mm (Tan) + TODO: Navid 9.3 мм (бронза) TODO: SPMG .338 TODO: SPMG .338 SPMG .338 TODO: SPMG .338 + TODO: SPMG .338 TODO: SPMG .338 (MTP) TODO: SPMG .338 (MTP) SPMG .338 (MTP) TODO: SPMG .338 (MTP) + TODO: SPMG .338 (MTP) TODO: SPMG .338 (Black) TODO: SPMG .338 (Black) SPMG .338 (Noir) TODO: SPMG .338 (Negro) + TODO: SPMG .338 (черный) TODO: SPMG .338 (Sand) TODO: SPMG .338 (Sand) SPMG .338 (Beige) TODO: SPMG .338 (Arena) + TODO: SPMG .338 (песочный) diff --git a/addons/respawn/CfgEventHandlers.hpp b/addons/respawn/CfgEventHandlers.hpp index c4a50615d1..00b6f01cea 100644 --- a/addons/respawn/CfgEventHandlers.hpp +++ b/addons/respawn/CfgEventHandlers.hpp @@ -1,20 +1,75 @@ + class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); }; }; +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; + class Extended_Killed_EventHandlers { class CAManBase { - class GVAR(HandleGear) { + class ADDON { killed = QUOTE(_this call FUNC(handleKilled)); }; }; }; + class Extended_Respawn_EventHandlers { class CAManBase { - class GVAR(HandleGear) { + class ADDON { respawn = QUOTE(_this call FUNC(handleRespawn)); }; }; }; + +class Extended_Init_EventHandlers { + class ACE_Rallypoint_West { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'',west)] call FUNC(initRallypoint)); + }; + }; + + class ACE_Rallypoint_East { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'',east)] call FUNC(initRallypoint)); + }; + }; + + class ACE_Rallypoint_Independent { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'',independent)] call FUNC(initRallypoint)); + }; + }; + + class ACE_Rallypoint_West_Base { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; [ARR_3(_this select 0,'respawn_west',west)] call FUNC(initRallypoint)); + }; + }; + + class ACE_Rallypoint_East_Base { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; [ARR_3(_this select 0,'respawn_east',east)] call FUNC(initRallypoint)); + }; + }; + + class ACE_Rallypoint_Independent_Base { + class ADDON { + init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; [ARR_3(_this select 0,'respawn_guerrila',independent)] call FUNC(initRallypoint)); //respawn_civilian + }; + }; +}; + +class Extended_InitPost_EventHandlers { + // auto assign rallypoint leader + class CAManBase { + class ADDON { + serverInit = QUOTE(_this call FUNC(handleInitPostServer)); + }; + }; +}; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index f6b8fc64c2..384376b00c 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,6 +1,6 @@ class CfgVehicles { class Module_F; - class ACE_ModuleRespawn : Module_F { + class ACE_ModuleRespawn: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "Respawn System"; @@ -8,20 +8,24 @@ class CfgVehicles { scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_Respawn_ca.paa)); + class Arguments { class SavePreDeathGear { displayName = "Save Gear?"; description = "Respawn with the gear a soldier had just before his death?"; typeName = "BOOL"; + class values { class Yes { name = "Yes"; value = 1; }; class No { default = 1; name = "No"; value = 0; }; }; }; + class RemoveDeadBodiesDisconnected { displayName = "Remove bodies?"; description = "Remove player bodies after disconnect?"; typeName = "BOOL"; + class values { class Yes { default = 1; name = "Yes"; value = 1; }; class No { name = "No"; value = 0; }; @@ -30,7 +34,7 @@ class CfgVehicles { }; }; - class ACE_ModuleFriendlyFire : Module_F { + class ACE_ModuleFriendlyFire: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "Friendly Fire Messages"; @@ -38,11 +42,11 @@ class CfgVehicles { scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); - class Arguments { - }; + + class Arguments {}; }; - class ACE_ModuleRallypoint : Module_F { + class ACE_ModuleRallypoint: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "Rallypoint System"; @@ -50,174 +54,8 @@ class CfgVehicles { scope = 2; isGlobal = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); - class Arguments { - }; - }; - // rallypoints - class FlagCarrier; - class Flag_NATO_F : FlagCarrier { - class ACE_Actions; - }; - - class Flag_CSAT_F : FlagCarrier { - class ACE_Actions; - }; - - class Flag_AAF_F : FlagCarrier { - class ACE_Actions; - }; - - // static - class ACE_Rallypoint_West : Flag_NATO_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint West Base"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; - }; - - class ACE_Rallypoint_East : Flag_CSAT_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint East Base"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; - }; - - class ACE_Rallypoint_Independent : Flag_AAF_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint Independent Base"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Rallypoint"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, false)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; - }; - - // moveable - class ACE_RallypointExit_West : Flag_NATO_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint West"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_nato_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == west); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; - }; - - class ACE_RallypointExit_East : Flag_CSAT_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint East"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_CSAT_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == east); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; - }; - - class ACE_RallypointExit_Independent : Flag_AAF_F { - author = "$STR_ACE_Common_ACETeam"; - displayName = "Rallypoint Independent"; - vehicleClass = QGVAR(Rallypoints); - - class EventHandlers { - init = QUOTE((_this select 0) setFlagTexture '\A3\Data_F\Flags\Flag_AAF_CO.paa'; _this call FUNC(initRallypoint)); - }; - class ACE_Actions : ACE_Actions { - class ACE_MainActions { - distance = 5; - condition = "true"; - selection = ""; - class ACE_Teleport { - displayName = "Teleport to Base"; - distance = 4; - condition = QUOTE(side group _player == independent); - statement = QUOTE([ARR_3(_player, side group _player, true)] call FUNC(teleportToRallypoint)); - showDisabled = 1; - priority = 1; - }; - }; - }; + class Arguments {}; }; // team leader @@ -233,4 +71,140 @@ class CfgVehicles { }; }; }; + + // rallypoints + class FlagCarrier; + class Flag_NATO_F: FlagCarrier { + class ACE_Actions; + }; + + class Flag_CSAT_F: FlagCarrier { + class ACE_Actions; + }; + + class Flag_AAF_F: FlagCarrier { + class ACE_Actions; + }; + + // static + class ACE_Rallypoint_West_Base: Flag_NATO_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointWestBase"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToRallypoint"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; + + class ACE_Rallypoint_East_Base: Flag_CSAT_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointEastBase"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToRallypoint"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; + + class ACE_Rallypoint_Independent_Base: Flag_AAF_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointIndependentBase"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToRallypoint"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; + + // moveable + class ACE_Rallypoint_West: Flag_NATO_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointWest"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToBase"; + distance = 4; + condition = QUOTE(side group _player == west); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_West_Base')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; + + class ACE_Rallypoint_East: Flag_CSAT_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointEast"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToBase"; + distance = 4; + condition = QUOTE(side group _player == east); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_East_Base')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; + + class ACE_Rallypoint_Independent: Flag_AAF_F { + XEH_ENABLED; + + author = "$STR_ACE_Common_ACETeam"; + displayName = "$STR_ACE_Respawn_RallypointIndependent"; + vehicleClass = QGVAR(Rallypoints); + + class ACE_Actions: ACE_Actions { + class ACE_Teleport { + displayName = "$STR_ACE_Respawn_TeleportedToBase"; + distance = 4; + condition = QUOTE(side group _player == independent); + statement = QUOTE([ARR_3(_player,side group _player,'ACE_Rallypoint_Independent_Base')] call FUNC(teleportToRallypoint)); + position = "[0,0,-1]"; + showDisabled = 1; + priority = 1; + }; + }; + }; }; diff --git a/addons/respawn/XEH_postInit.sqf b/addons/respawn/XEH_postInit.sqf new file mode 100644 index 0000000000..ada5765e86 --- /dev/null +++ b/addons/respawn/XEH_postInit.sqf @@ -0,0 +1,5 @@ +// by commy2 +#include "script_component.hpp" + +["rallypointMoved", {_this call FUNC(updateRallypoint)}] call EFUNC(common,addEventhandler); +["playerChanged", {_this call FUNC(handlePlayerChanged)}] call EFUNC(common,addEventhandler); // hide enemy rallypoint markers diff --git a/addons/respawn/XEH_preInit.sqf b/addons/respawn/XEH_preInit.sqf index f57e1f3714..dd116f108c 100644 --- a/addons/respawn/XEH_preInit.sqf +++ b/addons/respawn/XEH_preInit.sqf @@ -4,7 +4,9 @@ ADDON = false; PREP(canMoveRallypoint); PREP(handleKilled); +PREP(handlePlayerChanged); PREP(handleRespawn); +PREP(handleInitPostServer); PREP(initRallypoint); PREP(module); PREP(moduleFriendlyFire); @@ -15,5 +17,6 @@ PREP(removeDisconnectedPlayer); PREP(restoreGear); PREP(showFriendlyFireMessage); PREP(teleportToRallypoint); +PREP(updateRallypoint); ADDON = true; diff --git a/addons/respawn/functions/fnc_handleInitPostServer.sqf b/addons/respawn/functions/fnc_handleInitPostServer.sqf new file mode 100644 index 0000000000..f8a0479717 --- /dev/null +++ b/addons/respawn/functions/fnc_handleInitPostServer.sqf @@ -0,0 +1,54 @@ +// by commy2 +// execute on server only! +#include "script_component.hpp" + +private "_unit"; + +_unit = _this select 0; + +private ["_group0", "_rallypoint"]; + +_group0 = group _unit; // _group is a reserved veriable and shouldn't be used + +_rallypoint = [ + objNull, + missionNamespace getVariable ["ACE_Rallypoint_West", objNull], + missionNamespace getVariable ["ACE_Rallypoint_East", objNull], + missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull] +] select ([west, east, independent] find side _group0) + 1; + +// exit if no moveable rallypoint is placed for that side +if (isNull _rallypoint) exitWith {}; + +// find leader +private "_leaderVarName"; +_leaderVarName = _group0 getVariable [QGVAR(leaderVarName), ""]; + +// exit if group already has a playable slot assigned as rallypoint leader +if (_leaderVarName != "") exitWith { + // assign JIP unit as rallypoint leader + if (str _unit == _leaderVarName) then { + _unit setVariable ["ACE_canMoveRallypoint", true, true]; + }; +}; + +// treat group leader +_unit = leader _group0; + +_leaderVarName = vehicleVarName _unit; + +if (_leaderVarName == "") then { + private "_leaderID"; + _leaderID = GETGVAR(NextLeaderID,0); + + _leaderVarName = format [QUOTE(ACE_Rallypoint_Leader_%1), _leaderID]; + + _unit setVehicleVarName _leaderVarName; + + GVAR(NextLeaderID) = _leaderID + 1; +}; + +// prevent group from getting multiple leaders; use this to assign rallypoint moving ability on JIP +_group0 setVariable [QGVAR(leaderVarName), _leaderVarName]; + +_unit setVariable ["ACE_canMoveRallypoint", true, true]; diff --git a/addons/respawn/functions/fnc_handlePlayerChanged.sqf b/addons/respawn/functions/fnc_handlePlayerChanged.sqf new file mode 100644 index 0000000000..db699066bc --- /dev/null +++ b/addons/respawn/functions/fnc_handlePlayerChanged.sqf @@ -0,0 +1,44 @@ +// by commy2 +#include "script_component.hpp" + +private "_newUnit"; + +_newUnit = _this select 0; + +switch (side group _newUnit) do { + case (west): { + ((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + ((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + ((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + }; + + case (east): { + ((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + }; + + case (independent): { + ((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + ((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 1; + }; + + default { + ((missionNamespace getVariable ["ACE_Rallypoint_West", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_West_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_East_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + ((missionNamespace getVariable ["ACE_Rallypoint_Independent_Base", objNull]) getVariable [QGVAR(marker), ""]) setMarkerAlphaLocal 0; + }; +}; diff --git a/addons/respawn/functions/fnc_handleRespawn.sqf b/addons/respawn/functions/fnc_handleRespawn.sqf index a9fe3293ac..33a0ec09e5 100644 --- a/addons/respawn/functions/fnc_handleRespawn.sqf +++ b/addons/respawn/functions/fnc_handleRespawn.sqf @@ -25,3 +25,8 @@ _respawnedUnit = _this select 0; if (GVAR(SavePreDeathGear)) then { [_respawnedUnit, GVAR(unitGear)] call FUNC(restoreGear); }; + +// fix for setVariable public being lost on respawn for machines that JIP after the command was broadcasted +if (_respawnedUnit getVariable ["ACE_canMoveRallypoint", false]) then { + _respawnedUnit setVariable ["ACE_canMoveRallypoint", true, true]; +}; diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index cb4d55146f..44671b7c45 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -16,17 +16,58 @@ #include "script_component.hpp" -private ["_rallypoint", "_name"]; +private ["_rallypoint", "_respawnMarker", "_side"]; _rallypoint = _this select 0; +_respawnMarker = _this select 1; +_side = _this select 2; -if (!local _rallypoint) exitWith {}; - +private "_name"; _name = typeOf _rallypoint; +// init visible marker +if (hasInterface) then { + // fix init having wrong position, vars etc. + [_rallypoint, _respawnMarker, _side, _name] spawn { + _rallypoint = _this select 0; + _respawnMarker = _this select 1; + _side = _this select 2; + _name = _this select 3; + + _marker = format ["ACE_Marker_%1", _name]; + + // exit if it already exist + if (_marker in allMapMarkers) exitWith {}; + + _marker = createMarkerLocal [_marker, getPosASL _rallypoint]; + _type = ["selector_selectedFriendly", "selector_selectedEnemy"] select (_respawnMarker == ""); + + _marker setMarkerTypeLocal _type; + _marker setMarkerAlphaLocal ([0,1] select (_side == playerSide)); // playerSide to guarantee init + + private "_markerDate"; + _markerDate = _rallypoint getVariable [QGVAR(markerDate), ""]; + + _marker setMarkerTextLocal _markerDate; + + _rallypoint setVariable [QGVAR(marker), _marker]; + }; +}; + +if (!isServer) exitWith {}; + if (isNil _name) then { missionNamespace setVariable [_name, _rallypoint]; publicVariable _name; + + _rallypoint setVariable [QGVAR(side), _side, true]; + + if (_respawnMarker != "" && {!(_respawnMarker in allMapMarkers)}) then { + createMarker [_respawnMarker, _rallypoint]; + }; + + ["rallypointMoved", [_rallypoint, _side]] call EFUNC(common,globalEvent); + } else { deleteVehicle _rallypoint; diag_log text "[ACE] Respawn: ERROR Multiple Rallypoints of same type."; diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf index dcd4810844..62d2742ef9 100644 --- a/addons/respawn/functions/fnc_moveRallypoint.sqf +++ b/addons/respawn/functions/fnc_moveRallypoint.sqf @@ -26,8 +26,8 @@ _this spawn { _rallypoint = [ objNull, missionNamespace getVariable ["ACE_Rallypoint_West", objNull], - missionNamespace getVariable ["ACE_RallypointExit_East", objNull], - missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull] + missionNamespace getVariable ["ACE_Rallypoint_East", objNull], + missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull] ] select ([west, east, independent] find _side) + 1; if (isNull _rallypoint) exitWith {}; @@ -44,11 +44,9 @@ _this spawn { _rallypoint setPosATL _position; _unit reveal _rallypoint; - /* - _marker = format ["AGM_RallyPoint_%1", _side]; - _marker setMarkerPos _position; - _marker setMarkerTextLocal format ["%1:%2", [date select 3, 2, 0] call CBA_fnc_FORMATNumber, [date select 4, 2, 0] call CBA_fnc_FORMATNumber]; - */ + _rallypoint setVariable [QGVAR(markerDate), format ["%1:%2", date select 3, date select 4], true]; - [localize "STR_ACE_Respawn_Deploy"] call EFUNC(common,displayTextStructured); + ["rallypointMoved", [_rallypoint, _side, _position]] call EFUNC(common,globalEvent); + + [localize "STR_ACE_Respawn_Deployed"] call EFUNC(common,displayTextStructured); }; diff --git a/addons/respawn/functions/fnc_restoreGear.sqf b/addons/respawn/functions/fnc_restoreGear.sqf index 18afba344b..5a00e3425c 100644 --- a/addons/respawn/functions/fnc_restoreGear.sqf +++ b/addons/respawn/functions/fnc_restoreGear.sqf @@ -76,6 +76,8 @@ if (_goggles != "") then { _unit addItemToVest _x; }forEach _vestitems; +private "_flagRemoveDummyBag"; +_flagRemoveDummyBag = false; if(format["%1", _backpack] != "") then { _unit addBackpack _backpack; @@ -87,6 +89,12 @@ if(format["%1", _backpack] != "") then { { _unit addItemToBackpack _x; } forEach _backpackitems; + +} else { + // dummy backpack to ensure mags being loaded + _unit addBackpack "B_Kitbag_Base"; + + _flagRemoveDummyBag = true; }; @@ -138,6 +146,12 @@ if (_handgunweapon != "") then { }; +// remove dummy bagpack +if (_flagRemoveDummyBag) then { + removeBackpack _unit; +}; + + _assignedItems = _assignedItems - [_binocular]; // items diff --git a/addons/respawn/functions/fnc_teleportToRallypoint.sqf b/addons/respawn/functions/fnc_teleportToRallypoint.sqf index 8d898441ee..82a1d68e05 100644 --- a/addons/respawn/functions/fnc_teleportToRallypoint.sqf +++ b/addons/respawn/functions/fnc_teleportToRallypoint.sqf @@ -18,30 +18,19 @@ #include "script_component.hpp" -private ["_unit", "_side", "_toBase", "_rallypoint"]; +private ["_unit", "_side", "_rallypoint", "_toBase"]; _unit = _this select 0; _side = _this select 1; -_toBase = _this select 2; +_rallypoint = _this select 2; // rallypoint names are defined in CfgVehicles.hpp -_rallypoint = ([ - [ - objNull, - missionNamespace getVariable ["ACE_RallypointExit_West", objNull], - missionNamespace getVariable ["ACE_RallypointExit_East", objNull], - missionNamespace getVariable ["ACE_RallypointExit_Independent", objNull] - ], - [ - objNull, - missionNamespace getVariable ["ACE_Rallypoint_West", objNull], - missionNamespace getVariable ["ACE_Rallypoint_East", objNull], - missionNamespace getVariable ["ACE_Rallypoint_Independent", objNull] - ] -] select _toBase) select ([west, east, independent] find _side) + 1; +_toBase = _rallypoint find "_Base" != -1; + +_rallypoint = missionNamespace getVariable [_rallypoint, objNull], if (isNull _rallypoint) exitWith {}; -_unit setPosASL (getPosASL _rallypoint); +_unit setPosASL getPosASL _rallypoint; [[localize "STR_ACE_Respawn_TeleportedToRallypoint", localize "STR_ACE_Respawn_TeleportedToBase"] select _toBase] call EFUNC(common,displayTextStructured); diff --git a/addons/respawn/functions/fnc_updateRallypoint.sqf b/addons/respawn/functions/fnc_updateRallypoint.sqf new file mode 100644 index 0000000000..248955155a --- /dev/null +++ b/addons/respawn/functions/fnc_updateRallypoint.sqf @@ -0,0 +1,18 @@ +// by commy2 +#include "script_component.hpp" + +private ["_rallypoint", "_side", "_position"]; + +_rallypoint = _this select 0; +_side = _this select 1; +_position = _this select 2; + +if (!hasInterface) exitWith {}; + +private ["_marker", "_markerDate"]; + +_marker = _rallypoint getVariable [QGVAR(marker), ""]; +_markerDate = _rallypoint getVariable [QGVAR(markerDate), ""]; + +_marker setMarkerPosLocal _position; +_marker setMarkerTextLocal _markerDate; diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 1220d87cae..af003b4c28 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -41,5 +41,29 @@ Odteleportován na rallypoint Gyülekezőpontra teleportálva + + Rallypoint West (Base) + Sammelpunkt West (Basis) + + + Rallypoint East (Base) + Sammelpunkt Ost (Basis) + + + Rallypoint Independent (Base) + Sammelpunkt Widerstand (Basis) + + + Rallypoint West + Sammelpunkt West + + + Rallypoint East + Sammelpunkt Ost + + + Rallypoint Independent + Sammelpunkt Widerstand + diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml index 548e5d6642..4a06a779b5 100644 --- a/addons/scopes/stringtable.xml +++ b/addons/scopes/stringtable.xml @@ -1,51 +1,59 @@  - Minor adjustment up Zerowanie powoli w górę + Малая корректировка ВВЕРХ Ajuste menor arriba Minor adjustment down Zerowanie powoli w dół + Малая корректировка ВНИЗ Ajuste menor abajo Minor adjustment right Zerowanie powoli w prawo + Малая корректировка ВПРАВО Ajuste menor derecha Minor adjustment left Zerowanie powoli w lewo + Малая корректировка ВЛЕВО Ajuste menor izquierda Major adjustment up Zerowanie w górę + Большая корректировка ВВЕРХ Ajuste mayor arriba Major adjustment down Zerowanie w dół + Большая корректировка ВНИЗ Ajuste mayor abajo Major adjustment right Zerowanie w prawo + Большая корректировка ВПРАВО Ajuste mayor derecha Major adjustment left Zerowanie w lewo + Большая корректировка ВЛЕВО Ajuste mayor izquierda Set zero adjustment Zresetuj wyzerowanie + Сбросить корректировку Establecer ajuste a cero - \ No newline at end of file + diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 41259ec8cc..060d9b6f51 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -1,11 +1,12 @@  - Show Wind Info Pokaż inf. o wietrze + Показать информацию о погоде + Afficher information du vent Mostrar información del viento - \ No newline at end of file + diff --git a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf index 9859f330dd..42bac3eac8 100644 --- a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf +++ b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf @@ -22,17 +22,17 @@ _bullet = _args select 0; _airFriction = _args select 1; _time = _args select 2; - - if (!alive _bullet) exitwith { - [_this select 1] call cba_fnc_removePerFrameHandler; - }; - - _deltaT = time - _time; - _args set[2, time]; - + _bulletVelocity = velocity _bullet; _bulletSpeed = vectorMagnitude _bulletVelocity; - + + if (!alive _bullet || _bulletSpeed < 100) exitwith { + [_this select 1] call cba_fnc_removePerFrameHandler; + }; + + _deltaT = time - _time; + _args set[2, time]; + if (vectorMagnitude ACE_wind > 0) then { _trueVelocity = _bulletVelocity vectorDiff ACE_wind; _trueSpeed = vectorMagnitude _trueVelocity; diff --git a/documentation/feature/javelin.md b/documentation/feature/javelin.md new file mode 100644 index 0000000000..eecfa8844a --- /dev/null +++ b/documentation/feature/javelin.md @@ -0,0 +1,10 @@ +--- +layout: wiki +title: Javelin/Titan Locking and Firing +group: feature +order: 5 +parent: wiki +--- + +## 1. Overview +Blah blah blah \ No newline at end of file diff --git a/documentation/features/feature-list.md b/documentation/features/feature-list.md new file mode 100644 index 0000000000..9edc405ba2 --- /dev/null +++ b/documentation/features/feature-list.md @@ -0,0 +1,20 @@ +--- +layout: wiki +title: Features Documentation +group: features +order: 0 +parent: wiki +--- + + +**This page will get updated soon.** + + +## Table of Contents + + 1. [][[Advanced Missile Guidanced Framework|WikiLink]] + 2. [yy](#yy) + 3. [zz](#zz) + + +## What ACE3 has to offer diff --git a/documentation/features/titan-javelin-usage.md b/documentation/features/titan-javelin-usage.md new file mode 100644 index 0000000000..8115e6812b --- /dev/null +++ b/documentation/features/titan-javelin-usage.md @@ -0,0 +1,10 @@ +--- +layout: wiki +title: ACE Titan and Javelin +group: features +order: 0 +parent: wiki +--- + + +**This page will get updated soon.** diff --git a/documentation/framework/advanced-missile-guidance.md b/documentation/framework/advanced-missile-guidance.md new file mode 100644 index 0000000000..3029b7b3bd --- /dev/null +++ b/documentation/framework/advanced-missile-guidance.md @@ -0,0 +1,107 @@ +--- +layout: wiki +title: Advanced Missile Guidance +group: framework +order: 5 +parent: wiki +--- + +# 1. Overview + +The ACE Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for addon makers to integrate with the missile guidance and targeting mechanisms of ACE. It also provides for mod makers to create their own custom guidance methods within the framework. + +The framework provides all the functionality needed for guidance; from laser locking, target specification and selection, to handling the fired events and tracking and steering the vehicle based on provided parameters. This way, all that needs to be defined in addons is the appropriate CfgAmmo entries for the missile. + +The framework also provides addon makers and scripters with the ability to configure custom seeker types and attack profiles, which are defined below. This allows for complete control of the guidance, locking and flight of a missile at the discretion of the addon maker. + +ACE3 provides a full suite of base concepts and guidance for the majority of modern missile weaponry avialable today; these includes all basic types of seekers (SALH/SACLOS/Optic/Thermal/etc) - as well as the different common attack profiles utilized with guided munitions (such as top-down attacks). + +Finally, flight profiles and mechanics for realistic missile simulations are also implemented; allowing for lock-steering bump guidance flight such as with the M47 Dragon or GBU steering fins, or finely tuned direct flight guidance which is currently avialable with other missile types. + +# 2. Details + +The framework is broken up into 3 major components: Locking Types, Seeker Types and Attack Profiles. In combination, these components build out the entire process of launching, locking and going terminal flight against targets. + +### Components + +##### 1. Locking Types +Locking types provide the basic functionality of targeting which will be based to a seeker type, providing target aquisition for seekers. This provides the basic functionality for providing pre-determined targets for a seeker, or allowing the seeker to perform its own target aquisition and locking. Additionally, the seeker may reference back into the locking type in order to re-perform target aquisition. + +##### 2. Seeker Types +Each seeker is generally assumed to be the logic for the seeker head unit within any given munition. Seekers within this framework provide the basic targeting functionality for the entire framework. The locking type will provide a generic target to the seeker, or the seeker may aquire a target on its own. The seeker then provides a target, either an object or a ASL position, which is then passed further into the framework. This target (or position) should be the actual current target position for the missiles flight. Seekers are required to perform all limitations and checks within their systems, although various limitations have been provided in this framework such as LOS FOV, laser guidance, etc. + +##### 3. Attack Profiles + +An attack profile adjusts the current target flight location to create the actual flight path of the missile. The attack profile is provided with all parameters of the system, including the returned target of the seeker. Using this information, the attack profile then will adjust the *direct flight target position* to specifically direct where and how the missile shall flight. + +## How it all ties together + +The system is executed in a linear series of calls to each step of the process, and feeding back the return from that step to the next step. Execution is conducted using Locking->Seeker->Profile, iteratively every frame of execution. Flight times are adjusted to accTime values and FPS lag, giving consistent flight. + +On each step of execution, a target specification array [targetObj, targetPos] is passed to the locking type, which then will return a possible modified target array. Next, this modified data is passed to the seeker type - which then, in turn, returns a position vector to the current "seeked" target position (ASL). Last, this target position is passed to the attack profile, who then returns an "adjusted attack position (ASL)", which is the location the missile should *currently* be homing on for flight. + +In the simplest sense, the entire system provides the flight trajectory of the missile homing directly on the "adjusted attack position"; thus, an attack profile would ajust this position to direct the missile. For example, Top down attacks return the adjusted attack position high above the target, until entering their terminal stages, which then changes the position to be directly ontop of the target - thus "walking the missile" along its flight path and to the kill. + +# 2. Adding AMG to a missile + +## Enabling guidance on Ammo Types +``` +class CfgAmmo { + class MissileBase; + class MyMissileType : MissileBase { + // Turn off arma crosshair-guidance + manualControl = 0; + + // Begin ACE guidance Configs + class ace_missileguidance { + enabled = 1; + + minDeflection = 0.00025; // Minium flap deflection for guidance + maxDeflection = 0.001; // Maximum flap deflection for guidance + incDeflection = 0.0005; // The incrmeent in which deflection adjusts. + + canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet modes. All 'recruit' games use vanilla locking + + // Seeker type and settings for munitions + defaultSeekerType = "SALH"; + seekerTypes[] = { "SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS" }; + + defaultSeekerLockMode = "LOAL"; + seekerLockModes[] = { "LOAL", "LOBL" }; + + seekerAngle = 90; // Angle in front of the missile which can be searched + seekerAccuracy = 1; // seeker accuracy multiplier + + seekerMinRange = 1; + seekerMaxRange = 2500; // Range from the missile which the seeker can visually search + + // Attack profile type selection + defaultAttackProfile = "LIN"; + attackProfiles[] = { "LIN", "DIR", "MID", "HI" }; + }; +``` + +# 2. Creating your own custom seekers and attack profiles + +## Adding seeker types and attack profiles + +``` +class ace_missileguidance_attackProfiles{ + class MyAttackProfile { + name = ""; + visualName = ""; + description = ""; + + functionName = "my_fnc_doAttackProfile"; + }; +}; +class ace_missileguidance_seekerTypes { + class MySeekerType { + name = ""; + visualName = ""; + description = ""; + + functionName = "my_fnc_doSeekerType"; + }; +}; +``` \ No newline at end of file diff --git a/documentation/development/fragmentation-configuration.md b/documentation/framework/fragmentation-configuration.md similarity index 99% rename from documentation/development/fragmentation-configuration.md rename to documentation/framework/fragmentation-configuration.md index 17ff36fa13..1372b2b69a 100644 --- a/documentation/development/fragmentation-configuration.md +++ b/documentation/framework/fragmentation-configuration.md @@ -1,7 +1,7 @@ --- layout: wiki title: Fragmentation Configuration -group: development +group: framework parent: wiki order: 7 --- diff --git a/tools/search_privates.py b/tools/search_privates.py new file mode 100644 index 0000000000..55a6dfc791 --- /dev/null +++ b/tools/search_privates.py @@ -0,0 +1,105 @@ +#!/usr/bin/env python3 + +import fnmatch +import os +import re +import ntpath +import sys +import argparse + +def get_private_declare(content): + priv_declared = [] + + srch = re.compile('private.*') + priv_srch_declared = srch.findall(content) + priv_srch_declared = sorted(set(priv_srch_declared)) + + priv_dec_str = ''.join(priv_srch_declared) + + srch = re.compile('(? 0: + print (filepath) + for bad_priv in missing: + print ('\t' + bad_priv) + +def main(): + + print("#########################") + print("# Search your Privates #") + print("#########################") + + sqf_list = [] + + parser = argparse.ArgumentParser() + parser.add_argument('-m','--module', help='only search specified module addon folder', required=False, default=".") + args = parser.parse_args() + + for root, dirnames, filenames in os.walk('../addons' + '/' + args.module): + for filename in fnmatch.filter(filenames, '*.sqf'): + sqf_list.append(os.path.join(root, filename)) + + for filename in sqf_list: + check_privates(filename) + +if __name__ == "__main__": + main()