From 96110c25e75daabfaa5e05161008f8a4ea11ee7a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 12 Jan 2015 16:08:37 -0600 Subject: [PATCH] AGM - Night Vision First Pass --- addons/nightvision/CfgEventHandlers.hpp | 19 +++ addons/nightvision/CfgVehicles.hpp | 22 +++ addons/nightvision/CfgWeapons.hpp | 56 ++++++++ addons/nightvision/XEH_postInitClient.sqf | 31 +++++ addons/nightvision/XEH_preInit.sqf | 5 + addons/nightvision/agm_nvg_wide_optics.p3d | Bin 0 -> 1403 bytes addons/nightvision/config.cpp | 39 ++++++ addons/nightvision/functions/fnc_blending.sqf | 71 ++++++++++ .../functions/fnc_decreaseNVGBrightness.sqf | 21 +++ .../functions/fnc_increaseNVGBrightness.sqf | 21 +++ .../functions/script_component.hpp | 12 ++ addons/nightvision/nightVision.sqf | 103 ++++++++++++++ addons/nightvision/script_component.hpp | 12 ++ addons/nightvision/stringtable.xml | 127 ++++++++++++++++++ 14 files changed, 539 insertions(+) create mode 100644 addons/nightvision/CfgEventHandlers.hpp create mode 100644 addons/nightvision/CfgVehicles.hpp create mode 100644 addons/nightvision/CfgWeapons.hpp create mode 100644 addons/nightvision/XEH_postInitClient.sqf create mode 100644 addons/nightvision/XEH_preInit.sqf create mode 100644 addons/nightvision/agm_nvg_wide_optics.p3d create mode 100644 addons/nightvision/config.cpp create mode 100644 addons/nightvision/functions/fnc_blending.sqf create mode 100644 addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf create mode 100644 addons/nightvision/functions/fnc_increaseNVGBrightness.sqf create mode 100644 addons/nightvision/functions/script_component.hpp create mode 100644 addons/nightvision/nightVision.sqf create mode 100644 addons/nightvision/script_component.hpp create mode 100644 addons/nightvision/stringtable.xml diff --git a/addons/nightvision/CfgEventHandlers.hpp b/addons/nightvision/CfgEventHandlers.hpp new file mode 100644 index 0000000000..fb2214f933 --- /dev/null +++ b/addons/nightvision/CfgEventHandlers.hpp @@ -0,0 +1,19 @@ +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit) ); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + clientInit = QUOTE(call COMPILE_FILE(XEH_postInitClient) ); + }; +}; + +class Extended_FiredBIS_EventHandlers { + class AllVehicles { + class ADDON { + clientFiredBIS = QUOTE( _this call FUNC(blending) ); + }; + }; +}; \ No newline at end of file diff --git a/addons/nightvision/CfgVehicles.hpp b/addons/nightvision/CfgVehicles.hpp new file mode 100644 index 0000000000..63abfb47e2 --- /dev/null +++ b/addons/nightvision/CfgVehicles.hpp @@ -0,0 +1,22 @@ +class CfgVehicles { + class All { + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + }; + + #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ + name = #ITEM; \ + count = COUNT; \ + }; + + class Box_NATO_Support_F; + class ACE_Box_Misc: Box_NATO_Support_F { + class TransportItems { + MACRO_ADDITEM(ACE_NVG_Gen1,6) + MACRO_ADDITEM(ACE_NVG_Gen2,6) + //MACRO_ADDITEM(ACE_NVG_Gen3,6) + MACRO_ADDITEM(ACE_NVG_Gen4,6) + MACRO_ADDITEM(ACE_NVG_Wide,6) + }; + }; +}; diff --git a/addons/nightvision/CfgWeapons.hpp b/addons/nightvision/CfgWeapons.hpp new file mode 100644 index 0000000000..151601612b --- /dev/null +++ b/addons/nightvision/CfgWeapons.hpp @@ -0,0 +1,56 @@ +class CfgWeapons { + class Binocular; + class NVGoggles: Binocular { + displayName = "$STR_ACE_NightVision_NVG_Gen3_brown"; + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + ACE_NightVision_radBlur = 0.001; + }; + class NVGoggles_OPFOR: NVGoggles { + displayName = "$STR_ACE_NightVision_NVG_Gen3_black"; + }; + class NVGoggles_INDEP: NVGoggles { + displayName = "$STR_ACE_NightVision_NVG_Gen3_green"; + }; + + class ACE_NVG_Gen1: NVGoggles_OPFOR { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen1"; + ACE_NightVision_grain = 2.25; + ACE_NightVision_blur = 0.22; + ACE_NightVision_radBlur = 0.004; + }; + class ACE_NVG_Gen2: NVGoggles_INDEP { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen2"; + ACE_NightVision_grain = 1.5; + ACE_NightVision_blur = 0.11; + ACE_NightVision_radBlur = 0.002; + }; + /*class ACE_NVG_Gen3: NVGoggles { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen3"; + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + ACE_NightVision_radBlur = 0.001; + };*/ + class ACE_NVG_Gen4: NVGoggles { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = "\A3\weapons_f\reticle\optics_night"; + displayName = "$STR_ACE_NightVision_NVG_Gen4"; + ACE_NightVision_grain = 0.0; + ACE_NightVision_blur = 0.0; + ACE_NightVision_radBlur = 0.0; + }; + class ACE_NVG_Wide: NVGoggles { + author = "$STR_ACE_Common_ACETeam"; + modelOptics = PATHOF(ACE_nvg_wide_optics.p3d); + displayName = "$STR_ACE_NightVision_NVG_FullScreen"; + ACE_NightVision_grain = 0.75; + ACE_NightVision_blur = 0.055; + ACE_NightVision_radBlur = 0.001; + }; +}; diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf new file mode 100644 index 0000000000..e625ad59bf --- /dev/null +++ b/addons/nightvision/XEH_postInitClient.sqf @@ -0,0 +1,31 @@ +// by commy2 +#include "script_component.hpp" + +if (!hasInterface) exitWith {}; + +GVAR(ppEffectBlur) = ppEffectCreate ["dynamicBlur", 1234]; +GVAR(ppEffectBlur) ppEffectForceInNVG true; +GVAR(ppEffectBlur) ppEffectAdjust [0]; +GVAR(ppEffectBlur) ppEffectCommit 0; + +GVAR(ppEffectRadialBlur) = ppEffectCreate ["radialBlur", 1238]; +GVAR(ppEffectRadialBlur) ppEffectForceInNVG true; +GVAR(ppEffectRadialBlur) ppEffectAdjust [0, 0, 0, 0]; +GVAR(ppEffectRadialBlur) ppEffectCommit 0; + +GVAR(ppEffectFilmGrain) = ppEffectCreate ["FilmGrain", 1235]; +GVAR(ppEffectFilmGrain) ppEffectAdjust [0.25, 2.5, 2.5, 2.5*0.3, 2.5*0.3, false]; +GVAR(ppEffectFilmGrain) ppEffectCommit 0; + +GVAR(ppEffectNVGBrightness) = ppEffectCreate ["ColorCorrections", 1236]; +GVAR(ppEffectNVGBrightness) ppEffectForceInNVG true; +GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectNVGBrightness) ppEffectCommit 0; + +GVAR(ppEffectMuzzleFlash) = ppEffectCreate ["ColorCorrections", 1237]; +GVAR(ppEffectMuzzleFlash) ppEffectEnable true; +GVAR(ppEffectMuzzleFlash) ppEffectForceInNVG true; +GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; + +0 spawn COMPILE_FILE(nightVision); //ToDo diff --git a/addons/nightvision/XEH_preInit.sqf b/addons/nightvision/XEH_preInit.sqf new file mode 100644 index 0000000000..62255a3ad5 --- /dev/null +++ b/addons/nightvision/XEH_preInit.sqf @@ -0,0 +1,5 @@ +#include "script_component.hpp" + +PREP(blending); +PREP(decreaseNVGBrightness); +PREP(increaseNVGBrightness); diff --git a/addons/nightvision/agm_nvg_wide_optics.p3d b/addons/nightvision/agm_nvg_wide_optics.p3d new file mode 100644 index 0000000000000000000000000000000000000000..481ae8d234d13535d3cf4ee061480772c4afff11 GIT binary patch literal 1403 zcmebE@poZlWMBXyh5%z1Ul||`;_v_|0U%}r@qwVPcGq5;NIozvkgfHK>XSoN_Z!m55 zUSxg|Q2zFs>u`B(pgb}k2BP9KC|XL> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFire"); + _visibleFireTimeCoef = getNumber (configFile >> "CfgWeapons" >> _silencer >> "ItemInfo" >> "AmmoCoef" >> "visibleFireTime"); +}; + +_visibleFire = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFire"); +_visibleFireTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "visibleFireTime"); + +_nvgBrightnessCoef = 1 + (_player getVariable [QUOTE( GVAR(NVGBrightness) ), 0]) / 4; + +_fnc_isTracer = { + private ["_indexShot", "_lastRoundsTracer", "_tracersEvery"]; + + if (getNumber (configFile >> "CfgAmmo" >> _ammo >> "nvgOnly") > 0) exitWith {false}; + + _indexShot = (_player ammo _weapon) + 1; + + _lastRoundsTracer = getNumber (configFile >> "CfgMagazines" >> _magazine >> "lastRoundsTracer"); + if (_indexShot <= _lastRoundsTracer) exitWith {true}; + + _tracersEvery = getNumber (configFile >> "CfgMagazines" >> _magazine >> "tracersEvery"); + if (_tracersEvery == 0) exitWith {false}; + + (_indexShot - _lastRoundsTracer) % _tracersEvery == 0 +}; + +if (call _fnc_isTracer) then { + _visibleFire = _visibleFire + 2; + _visibleFireTime = _visibleFireTime + 2; +}; + +_darkness = 1 - (call EFUNC(common,ambientBrightness)); + +_visibleFire = _darkness * _visibleFireCoef * _visibleFire * _nvgBrightnessCoef / 10 min 1; +_visibleFireTime = _darkness * _visibleFireTimeCoef * _visibleFireTime * _nvgBrightnessCoef / 10 min 0.5; + +["NightVision", [_visibleFire, _visibleFireTime], {format ["visibleFire: %1 - visibleFireTime: %2", _this select 0, _this select 1]}] call AGM_Debug_fnc_log; + +GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, _visibleFire, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectMuzzleFlash) ppEffectCommit 0; + +GVAR(ppEffectMuzzleFlash) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectMuzzleFlash) ppEffectCommit _visibleFireTime; diff --git a/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf b/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf new file mode 100644 index 0000000000..e120963ce2 --- /dev/null +++ b/addons/nightvision/functions/fnc_decreaseNVGBrightness.sqf @@ -0,0 +1,21 @@ +// by commy2 +#include "script_component.hpp" + +private ["_player", "_vehicle", "_brightness"]; + +_player = _this select 0; +_vehicle = _this select 1; + +_brightness = _player getVariable [QUOTE( GVAR(NVGBrightness) ), 0]; + +if (_brightness > -1) then { + _brightness = round (10 * _brightness - 1) / 10; + + _player setVariable [QUOTE( GVAR(NVGBrightness) ), _brightness, false]; + + GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; + GVAR(ppEffectNVGBrightness) ppEffectCommit 0; + + [format [localize "STR_ACE_NightVision_NVGBrightness", format ["%1%", _brightness * 100]]] call EFUNC(common,displayTextStructured); + playSound "ACE_Sound_Click"; +}; diff --git a/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf b/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf new file mode 100644 index 0000000000..a5e85f4cb4 --- /dev/null +++ b/addons/nightvision/functions/fnc_increaseNVGBrightness.sqf @@ -0,0 +1,21 @@ +// by commy2 +#include "script_component.hpp" + +private ["_player", "_vehicle", "_brightness"]; + +_player = _this select 0; +_vehicle = _this select 1; + +_brightness = _player getVariable [QUOTE( GVAR(NVGBrightness) ), 0]; + +if (_brightness < 1) then { + _brightness = round (10 * _brightness + 1) / 10; + + _player setVariable [QUOTE( GVAR(NVGBrightness) ), _brightness, false]; + + GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; + GVAR(ppEffectNVGBrightness) ppEffectCommit 0; + + [format [localize "STR_ACE_NightVision_NVGBrightness", format ["%1%", _brightness * 100]]] call EFUNC(common,displayTextStructured); + playSound "ACE_Sound_Click"; +}; diff --git a/addons/nightvision/functions/script_component.hpp b/addons/nightvision/functions/script_component.hpp new file mode 100644 index 0000000000..448f1ede9b --- /dev/null +++ b/addons/nightvision/functions/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT nightvision +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_BLANK + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_BLANK + #define DEBUG_SETTINGS DEBUG_SETTINGS_BLANK +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/nightvision/nightVision.sqf b/addons/nightvision/nightVision.sqf new file mode 100644 index 0000000000..cdae7a7591 --- /dev/null +++ b/addons/nightvision/nightVision.sqf @@ -0,0 +1,103 @@ +//by commy2 +#include "script_component.hpp" + +xxx =5; + +private ["_currentVehicle", "_currentTurret", "_currentHMD", "_grainSetting", "_blurSetting"]; + +_currentView = ""; +_currentVehicle = objNull; +_currentTurret = [-1]; +_currentHMD = ""; + +while {true} do { + GVAR(ppEffectFilmGrain) ppEffectEnable false; + GVAR(ppEffectBlur) ppEffectEnable false; + GVAR(ppEffectRadialBlur) ppEffectEnable false; + GVAR(ppEffectNVGBrightness) ppEffectEnable false; + + waitUntil {currentVisionMode ACE_player == 1}; + + GVAR(ppEffectFilmGrain) ppEffectEnable true; + GVAR(ppEffectBlur) ppEffectEnable true; + GVAR(ppEffectRadialBlur) ppEffectEnable true; + GVAR(ppEffectNVGBrightness) ppEffectEnable true; + + waitUntil { + // any updates? + if (hmd ACE_player != _currentHMD || {cameraView != _currentView} || {vehicle ACE_player != _currentVehicle} || {!(_currentTurret isEqualTo []) && {ACE_player != _currentVehicle turretUnit _currentTurret}}) then { + _currentHMD = hmd ACE_player; + _currentView = cameraView; + _currentVehicle = vehicle ACE_player; + _currentTurret = [ACE_player] call EFUNC(common,getTurretIndex); + + private ["_config", "_fnc_isUsingHMD"]; + _config = configFile >> "CfgVehicles" >> typeOf _currentVehicle; + + _fnc_isUsingHMD = { + if (_currentView != "GUNNER") exitWith {true}; // asume hmd usage outside of gunner view + + if (ACE_player == (driver _currentVehicle)) exitWith { + !("NVG" in getArray (_config >> "ViewOptics" >> "visionMode")); + }; + + private "_turretConfig"; + _turretConfig = [_config, _currentTurret] call EFUNC(core,getTurretConfigPath); + _turretConfig = _turretConfig >> "OpticsIn"; + + private "_result"; + _result = true; + for "_index" from 0 to (count _turretConfig - 1) do { + if ("NVG" in getArray (_turretConfig select _index >> "visionMode")) exitWith {_result = false}; + true + }; + + _result + }; + + // on foot or in vehicle using hmd + if ((_currentVehicle == ACE_player) || _fnc_isUsingHMD) then { + _grainSetting = getNumber (configFile >> "CfgWeapons" >> _currentHMD >> "AGM_NightVision_grain"); + _blurSetting = getNumber (configFile >> "CfgWeapons" >> _currentHMD >> "AGM_NightVision_blur"); + _radBlurSetting = getNumber (configFile >> "CfgWeapons" >> _currentHMD >> "AGM_NightVision_radBlur"); + + GVAR(ppEffectFilmGrain) ppEffectAdjust [0.25, 2.5, 2.5, _grainSetting, _grainSetting, false]; + GVAR(ppEffectFilmGrain) ppEffectCommit 0; + GVAR(ppEffectBlur) ppEffectAdjust [_blurSetting]; + GVAR(ppEffectBlur) ppEffectCommit 0; + GVAR(ppEffectRadialBlur) ppEffectAdjust [_radBlurSetting, _radBlurSetting, 0.2, 0.2]; + GVAR(ppEffectRadialBlur) ppEffectCommit 0; + + // in vehicle and not using hmd + } else { + _grainSetting = _currentVehicle getVariable ["AGM_NightVision_grain", getNumber (_config >> "AGM_NightVision_grain")]; + _blurSetting = _currentVehicle getVariable ["AGM_NightVision_blur", getNumber (_config >> "AGM_NightVision_blur")]; + _radBlurSetting = _currentVehicle getVariable ["AGM_NightVision_radBlur", getNumber (_config >> "AGM_NightVision_radBlur")]; + + GVAR(ppEffectFilmGrain) ppEffectAdjust [0.25, 2.5, 2.5, _grainSetting, _grainSetting, false]; + GVAR(ppEffectFilmGrain) ppEffectCommit 0; + GVAR(ppEffectBlur) ppEffectAdjust [_blurSetting]; + GVAR(ppEffectBlur) ppEffectCommit 0; + GVAR(ppEffectRadialBlur) ppEffectAdjust [_radBlurSetting, _radBlurSetting, 0.2, 0.2]; + GVAR(ppEffectRadialBlur) ppEffectCommit 0; + }; + }; + + // Detect if curator interface is open and disable effects + if (!isNull findDisplay 312) then { + GVAR(ppEffectFilmGrain) ppEffectEnable false; + GVAR(ppEffectBlur) ppEffectEnable false; + GVAR(ppEffectRadialBlur) ppEffectEnable false; + GVAR(ppEffectNVGBrightness) ppEffectEnable false; + + waitUntil {isNull findDisplay 312}; + + GVAR(ppEffectFilmGrain) ppEffectEnable true; + GVAR(ppEffectBlur) ppEffectEnable true; + GVAR(ppEffectRadialBlur) ppEffectEnable true; + GVAR(ppEffectNVGBrightness) ppEffectEnable true; + }; + + currentVisionMode ACE_player != 1 + }; +}; diff --git a/addons/nightvision/script_component.hpp b/addons/nightvision/script_component.hpp new file mode 100644 index 0000000000..448f1ede9b --- /dev/null +++ b/addons/nightvision/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT nightvision +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_BLANK + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_SETTINGS_BLANK + #define DEBUG_SETTINGS DEBUG_SETTINGS_BLANK +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml new file mode 100644 index 0000000000..16ead016da --- /dev/null +++ b/addons/nightvision/stringtable.xml @@ -0,0 +1,127 @@ + + + + + + NV Goggles (Gen1) + Noktovizor (Gen1) + JVN (Gen1) + NS-Brille (Gen1) + Occhiali notturni (Gen1) + Gogle noktowizyjne (Gen1) + Óculos de visão noturna (Gen1) + ПНВ (Gen1) + Sistema de visión nocturna (Gen1) + + + NV Goggles (Gen2) + Noktovizor (Gen2) + JVN (Gen2) + NS-Brille (Gen2) + Occhiali notturni (Gen2) + Gogle noktowizyjne (Gen2) + Óculos de visão noturna (Gen2) + ПНВ (Gen2) + Sistema de visión nocturna (Gen2) + + + NV Goggles (Gen3) + Noktovizor (Gen3) + JVN (Gen3) + NS-Brille (Gen3) + Occhiali notturni (Gen3) + Gogle noktowizyjne (Gen3) + Óculos de visão noturna (Gen3) + ПНВ (Gen3) + Sistema de visión nocturna (Gen3) + + + NV Goggles (Gen3, Brown) + Noktovizor (Gen3, hnědý) + JVN (Gen3, marron) + NS-Brille (Gen3, Braun) + Occhiali notturni (Gen3, marroni) + Gogle noktowizyjne (Gen3, brązowe) + Óculos de visão noturna (Gen3, marrons) + ПНВ (Gen3, коричневый) + Sistema de visión nocturna (Gen3, marrón) + + + NV Goggles (Gen3, Green) + Noktovizor (Gen3, zelený) + JVN (Gen3, vertes) + NS-Brille (Gen3, Grün) + Occhiali notturni (Gen3, verdi) + Gogle noktowizyjne (Gen3, zielone) + Óculos de visão noturna (Gen3, verdes) + ПНВ (Gen3, зеленый) + Sistema de visión nocturna (Gen3, verde) + + + NV Goggles (Gen3, Black) + Noktovizor (Gen3, černý) + JVN (Gen3, noires) + NS-Brille (Gen3, Schwarz) + Occhiali notturni (Gen3, neri) + Gogle noktowizyjne (Gen3, czarne) + Óculos de visão noturna (Gen3, pretos) + ПНВ (Gen3, черный) + Sistema de visión nocturna (Gen3, negro) + + + NV Goggles (Gen4) + Noktovizor (Gen4) + JVN (Gen4) + NS-Brille (Gen4) + Occhiali notturni (Gen4) + Gogle noktowizyjne (Gen4) + Óculos de visão noturna (Gen4) + ПНВ (Gen4) + Sistema de visión nocturna (Gen4) + + + NV Goggles (Wide) + NS-Brille (Weitwinkel) + Sistema de visión nocturna (Panorámicas) + Gogle noktowizyjne (panoramiczne) + Noktovizor (Široký) + ПНВ (Широкий) + + + Brightness: %1 + Helligkeit: %1 + Brillo: %1 + Czułość: %1 + Zvýšení: %1 + Luminosité : %1 + Контраст: + Fényerő: %1 + Luminosidade: %1 + Luminosità: %1 + + + Increase NVG Brightness + Nachtsichtgerätshelligkeit erhöhen + Aumentar el brillo de las NVG + Zwiększ czułość noktowizji + Zvýšení jasu noktovizoru + Augmenter la luminosité des JVN + Увеличить яркость ПНВ + Fényerő növelése + Aumentar Luminosidade do EVN + Aumenta la luminosità dell'NVG + + + Decrease NVG Brightness + Nachtsichtgerätshelligkeit verringern + Disminuir el brillo de las NVG + Zmniejsz czułość noktowizji + Snížení jasu noktovizoru + Baisser la luminosité des JVN + Уменьшить яркость ПНВ + Fényerő csökkentése + Diminuir Luminosidade do EVN + Riduci la luminosità dell'NVG + + +