From fde8f7383f4d4e63f4ff47e37b1cde4e0ac98fc0 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 28 Jun 2015 13:08:47 -0500 Subject: [PATCH 001/620] Map Opened/Closed Events + use in maptools --- addons/common/XEH_postInit.sqf | 18 ++++++++++ addons/maptools/XEH_postInitClient.sqf | 16 +++++++-- addons/maptools/XEH_preInit.sqf | 1 - .../functions/fnc_mapStateUpdater.sqf | 33 ------------------- .../functions/fnc_updateMapToolMarkers.sqf | 10 ++++++ 5 files changed, 42 insertions(+), 36 deletions(-) delete mode 100644 addons/maptools/functions/fnc_mapStateUpdater.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 3796a4fdc8..159ef1883a 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -353,5 +353,23 @@ GVAR(deviceKeyCurrentIndex) = -1; {false}, [0xC7, [true, false, false]], false] call cba_fnc_addKeybind; //SHIFT + Home Key +//Map opened/closed Events: +GVAR(mapOpened) = false; +[] spawn { + waitUntil {(!isNull findDisplay 12)}; + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", { + if (!GVAR(mapOpened)) then { + GVAR(mapOpened) = true; + ["mapOpened", []] call FUNC(localEvent); + [{ + if (!visibleMap) then { + GVAR(mapOpened) = false; + ["mapClosed", []] call FUNC(localEvent); + [_this select 1] call CBA_fnc_removePerFrameHandler; + }; + }, 0, []] call CBA_fnc_addPerFrameHandler; + }; + }]; +}; GVAR(commonPostInited) = true; diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index 8129a75b15..e227463711 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -67,6 +67,18 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; // Update the size and rotation of map tools [] call FUNC(updateMapToolMarkers); - - [FUNC(mapStateUpdater), 0, []] call CBA_fnc_addPerFrameHandler; }; + +["mapOpened", { + // Show and update map tools if required + [] call FUNC(updateMapToolMarkers); + // Show GPS if required + [GVAR(mapGpsShow)] call FUNC(openMapGps); +}] call EFUNC(common,addEventHandler); + +["mapClosed", { + // Hide GPS + [false] call FUNC(openMapGps); + // Cancel drawing + call FUNC(cancelDrawing); +}] call EFUNC(common,addEventHandler); diff --git a/addons/maptools/XEH_preInit.sqf b/addons/maptools/XEH_preInit.sqf index 2da38996c3..2bcd68385a 100644 --- a/addons/maptools/XEH_preInit.sqf +++ b/addons/maptools/XEH_preInit.sqf @@ -16,7 +16,6 @@ PREP(handleMouseButton); PREP(handleMouseMove); PREP(handleMouseZChanged); PREP(isInsideMapTool); -PREP(mapStateUpdater); PREP(openMapGps); PREP(openMapGpsUpdate); PREP(removeLineMarker); diff --git a/addons/maptools/functions/fnc_mapStateUpdater.sqf b/addons/maptools/functions/fnc_mapStateUpdater.sqf deleted file mode 100644 index 2b4e634567..0000000000 --- a/addons/maptools/functions/fnc_mapStateUpdater.sqf +++ /dev/null @@ -1,33 +0,0 @@ - -#include "script_component.hpp" - -if (visibleMap) then { - // Show/Hide draw buttons - if ("ACE_MapTools" in items ACE_player) then { - { ((finddisplay 12) displayctrl _x) ctrlShow true; } forEach GVAR(drawing_controls); - } else { - { ((finddisplay 12) displayctrl _x) ctrlShow false; } forEach GVAR(drawing_controls); - if (GVAR(drawing_isDrawing)) then { - call FUNC(cancelDrawing); - }; - }; -}; - -//When Map is Closed: -if (GVAR(mapVisableLastFrame) && (!visibleMap)) then { - GVAR(mapVisableLastFrame) = false; - // Hide GPS - [false] call FUNC(openMapGps); - // Cancel drawing - call FUNC(cancelDrawing); -}; - -//When Map is Opened: -if ((!GVAR(mapVisableLastFrame)) && (visibleMap)) then { - //todo: "mapOpened" Event???? - GVAR(mapVisableLastFrame) = true; - // Show and update map tools if required - [] call FUNC(updateMapToolMarkers); - // Show GPS if required - [GVAR(mapGpsShow)] call FUNC(openMapGps); -}; diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index fa6db8872a..959be6752e 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -20,6 +20,16 @@ PARAMS_1(_theMap); private ["_rotatingTexture", "_textureWidth", "_scale", "_xPos", "_yPos"]; +// Show/Hide draw buttons +if ("ACE_MapTools" in items ACE_player) then { + { ((finddisplay 12) displayctrl _x) ctrlShow true; } forEach GVAR(drawing_controls); +} else { + { ((finddisplay 12) displayctrl _x) ctrlShow false; } forEach GVAR(drawing_controls); + if (GVAR(drawing_isDrawing)) then { + call FUNC(cancelDrawing); + }; +}; + if (!("ACE_MapTools" in items ACE_player)|| {GVAR(mapTool_Shown) == 0}) exitWith {}; _rotatingTexture = ""; From 8cd8504b3f434186121b12bd5435e6d860971a45 Mon Sep 17 00:00:00 2001 From: Joko Date: Fri, 10 Jul 2015 22:30:07 +0200 Subject: [PATCH 002/620] Add Posibility to Change Backblast Values in Magazine Config --- addons/overpressure/CfgEventHandlers.hpp | 14 +++++++------- .../functions/fnc_fireLauncherBackblast.sqf | 12 +++++++++--- .../functions/fnc_fireOverpressureZone.sqf | 13 ++++++++++--- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index 439270861b..a008c845f1 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,38 +14,38 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); }; }; class Tank { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Car { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Helicopter { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Plane { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class Ship_F { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; class StaticWeapon { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); }; }; }; diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index d5c28cca44..c3b19db29a 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -29,10 +29,16 @@ _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; +_backblastDamage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); -_backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; -_backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); -_backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +if (_backblastDamage == 0) then { + _backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; + _backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); + _backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +} else { + _backblastAngle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; + _backblastRange = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); +}; // Damage to others private "_affected"; diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 4438e4a859..c51baf3e64 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -30,9 +30,16 @@ _direction = vectorDir _projectile; private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; -_dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; -_dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); -_dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +_dangerZoneDamage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); + +if (_dangerZoneDamage == 0) then { + _dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; + _dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); + _dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +} else { + _dangerZoneAngle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; + _dangerZoneRange = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); +}; // Damage to others private "_affected"; From 9bb9df59eca3f5456e1e4e12aa289faa9c2dc2b5 Mon Sep 17 00:00:00 2001 From: Joko Date: Sat, 11 Jul 2015 00:09:20 +0200 Subject: [PATCH 003/620] Add caching for Backblast --- addons/overpressure/CfgEventHandlers.hpp | 14 ++++---- addons/overpressure/XEH_preInit.sqf | 4 ++- .../functions/fnc_cacheOverPressureValues.sqf | 36 +++++++++++++++++++ .../functions/fnc_fireLauncherBackblast.sqf | 15 +++----- .../functions/fnc_fireOverpressureZone.sqf | 16 +++------ .../overpressure/functions/fnc_firedEHBB.sqf | 21 +++++++++++ .../overpressure/functions/fnc_firedEHOP.sqf | 21 +++++++++++ .../functions/fnc_overpressureDamage.sqf | 9 +++-- 8 files changed, 100 insertions(+), 36 deletions(-) create mode 100644 addons/overpressure/functions/fnc_cacheOverPressureValues.sqf create mode 100644 addons/overpressure/functions/fnc_firedEHBB.sqf create mode 100644 addons/overpressure/functions/fnc_firedEHOP.sqf diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index a008c845f1..1c191b5a0d 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,38 +14,38 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireLauncherBackblast)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHBB);};); }; }; class Tank { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; class Car { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; class Helicopter { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; class Plane { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; class Ship_F { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 5 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; class StaticWeapon { class ADDON { - firedBIS = QUOTE(if (local (_this select 0) && {getNumber (configfile >> 'CfgMagazines' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0} || {getNumber (configfile >> 'CfgWeapons' >> _this select 1 >> QUOTE(QGVAR(Damage))) > 0}) then {_this call DFUNC(fireOverpressureZone)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); }; }; }; diff --git a/addons/overpressure/XEH_preInit.sqf b/addons/overpressure/XEH_preInit.sqf index 5eefc5eae4..d0ce7cbcf1 100644 --- a/addons/overpressure/XEH_preInit.sqf +++ b/addons/overpressure/XEH_preInit.sqf @@ -6,5 +6,7 @@ PREP(fireLauncherBackblast); PREP(fireOverpressureZone); PREP(getDistance); PREP(overpressureDamage); - +PREP(cacheOverPressureValues); +PREP(firedEHOP); +PREP(firedEHBB); ADDON = true; diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf new file mode 100644 index 0000000000..69a38b4c18 --- /dev/null +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -0,0 +1,36 @@ +/* + * Author: joko // Jonas + * + * Handle fire of local launchers + * + * Argument: + * 0: Magazine (String) + * 1: + * + * Return value: + * Array: + * 0: + * 1: + * 2: + * + */ + #include "script_component.hpp" + +EXPLODE_2_PVT(_this,_weapon,_magazine); + +private ["_damage","_angle","_range"]; +_damage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); +if (_damage == 0) then { + _angle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; + _range = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); + _damage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +} else { + _angle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; + _range = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); +}; + +missionNameSpace setVariable [(QGVAR(Angle) + _magazine),_angle]; +missionNameSpace setVariable [(QGVAR(Range) + _magazine),_range]; +missionNameSpace setVariable [(QGVAR(Damage) + _magazine),_damage]; + +[_angle,_range,_damage] diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index c3b19db29a..5167423bd2 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -15,7 +15,7 @@ * Return value: * None */ -//#define DEBUG_MODE_FULL + #include "script_component.hpp" EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); @@ -29,16 +29,9 @@ _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; -_backblastDamage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); - -if (_backblastDamage == 0) then { - _backblastAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; - _backblastRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); - _backblastDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); -} else { - _backblastAngle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; - _backblastRange = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); -}; +_backblastAngle = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; +_backblastRange = missionNameSpace getVariable [(QGVAR(Range) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 1]; +_backblastDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; // Damage to others private "_affected"; diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index c51baf3e64..9731fdfa69 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -29,24 +29,16 @@ _position = getPosASL _projectile; _direction = vectorDir _projectile; private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; - -_dangerZoneDamage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); - -if (_dangerZoneDamage == 0) then { - _dangerZoneAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; - _dangerZoneRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); - _dangerZoneDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); -} else { - _dangerZoneAngle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; - _dangerZoneRange = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); -}; +_dangerZoneDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; +_dangerZoneAngle = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; +_dangerZoneRange = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; // Damage to others private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon,_magazine]] call EFUNC(common,targetEvent); // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf new file mode 100644 index 0000000000..1d88486c37 --- /dev/null +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -0,0 +1,21 @@ +/* + * Author: joko // Jonas + * + * Handle fire of local launchers + * + * Argument: + * 0: Unit that fired (Object) + * 1: Weapon fired (String) + * 2: Muzzle (String) + * 3: Mode (String) + * 4: Ammo (String) + * 5: Magazine (String) + * 6: Projectile (Object) + * + * Return value: + * None + */ + + if (missionNameSpace getVariable [(QGVAR(Damage) + _this select 1),(([_this select 1,_this select 5] call DFUNC(cacheOverPressureVales)) select 2)]) then { + _this call DFUNC(fireLauncherBackblast) + }; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf new file mode 100644 index 0000000000..6503731c2c --- /dev/null +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -0,0 +1,21 @@ +/* + * Author: joko // Jonas + * + * Handle fire of Other Weapons + * + * Argument: + * 0: Unit that fired (Object) + * 1: Weapon fired (String) + * 2: Muzzle (String) + * 3: Mode (String) + * 4: Ammo (String) + * 5: Magazine (String) + * 6: Projectile (Object) + * + * Return value: + * None + */ + + if (missionNameSpace getVariable [(QGVAR(Damage) + _this select 1),(([_this select 1,_this select 5] call DFUNC(cacheOverPressureVales)) select 2)]) then { + _this call DFUNC(fireOverpressureZone) + }; diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index d1280b682f..669c9e8cc4 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -14,13 +14,12 @@ */ #include "script_component.hpp" -EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon); +EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon,_magazine); private ["_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; - -_overpressureAngle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; -_overpressureRange = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); -_overpressureDamage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); +_overpressureAngle = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; +_overpressureRange = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; +_overpressureDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; TRACE_4("Parameters:",_overpressureAngle,_overpressureRange,_overpressureDamage,_weapon); From 83e74d848df711f61b553c2debf81f5528af6e80 Mon Sep 17 00:00:00 2001 From: Joko Date: Sat, 11 Jul 2015 00:50:12 +0200 Subject: [PATCH 004/620] fix that cachedOverPressureValue is called Multible per Weapon --- addons/overpressure/functions/fnc_cacheOverPressureValues.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index 69a38b4c18..b371bc0cf2 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" EXPLODE_2_PVT(_this,_weapon,_magazine); - +if !(isNil (QGVAR(Damage) + _magazine)) exitWith {}; private ["_damage","_angle","_range"]; _damage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); if (_damage == 0) then { From 41edf3dd38dcd47d00eb6963152978ffe6a77155 Mon Sep 17 00:00:00 2001 From: Joko Date: Fri, 17 Jul 2015 21:26:18 +0200 Subject: [PATCH 005/620] Rework after Comments form esteldunedain --- .../functions/fnc_cacheOverPressureValues.sqf | 5 +---- .../functions/fnc_fireLauncherBackblast.sqf | 13 +++++++++---- .../functions/fnc_fireOverpressureZone.sqf | 12 ++++++++---- addons/overpressure/functions/fnc_firedEHBB.sqf | 10 ++++++++-- addons/overpressure/functions/fnc_firedEHOP.sqf | 9 ++++++++- .../functions/fnc_overpressureDamage.sqf | 12 ++++++++---- 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index b371bc0cf2..0453b2437b 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -29,8 +29,5 @@ if (_damage == 0) then { _range = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); }; -missionNameSpace setVariable [(QGVAR(Angle) + _magazine),_angle]; -missionNameSpace setVariable [(QGVAR(Range) + _magazine),_range]; -missionNameSpace setVariable [(QGVAR(Damage) + _magazine),_damage]; - +missionNameSpace setVariable [(QGVAR(values) + _magazine),[_angle, _range,_damage]]; [_angle,_range,_damage] diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 5167423bd2..5bc9d1c1e1 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -28,10 +28,15 @@ private ["_position", "_direction"]; _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); -private ["_backblastAngle", "_backblastRange", "_backblastDamage"]; -_backblastAngle = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; -_backblastRange = missionNameSpace getVariable [(QGVAR(Range) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 1]; -_backblastDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; +private ["_var","_varName","_backblastAngle", "_backblastRange", "_backblastDamage"]; +_varName = (QGVAR(values) + _magazine); +_var = if (isNil _varName) then { + [_weapon,_magazine] call FUNC(cacheOverPressureVales); +} else { + missionNameSpace getVariable _varName; +}; +_var params["_backblastAngle","_backblastRange","_backblastDamage"]; + // Damage to others private "_affected"; diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 9731fdfa69..5e17036a13 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -28,10 +28,14 @@ private ["_position", "_direction"]; _position = getPosASL _projectile; _direction = vectorDir _projectile; -private ["_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; -_dangerZoneDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; -_dangerZoneAngle = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; -_dangerZoneRange = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; +private ["_var","_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; +_varName = (QGVAR(values) + _magazine); +_var = if (isNil _varName) then { + [_weapon,_magazine] call FUNC(cacheOverPressureVales); +} else { + missionNameSpace getVariable _varName; +}; +_var params["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; // Damage to others private "_affected"; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 1d88486c37..5408ecda29 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -15,7 +15,13 @@ * Return value: * None */ - - if (missionNameSpace getVariable [(QGVAR(Damage) + _this select 1),(([_this select 1,_this select 5] call DFUNC(cacheOverPressureVales)) select 2)]) then { + private ["_var","_varName"]; + _varName = (QGVAR(values) + _this select 1); + _var = if (isNil _varName) then { + ([_this select 1,_this select 5] call FUNC(cacheOverPressureVales)) select 2; + } else { + (missionNameSpace getVariable _varName) select 2; + }; + if (_var > 0) then { _this call DFUNC(fireLauncherBackblast) }; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index 6503731c2c..f2ca912690 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -16,6 +16,13 @@ * None */ - if (missionNameSpace getVariable [(QGVAR(Damage) + _this select 1),(([_this select 1,_this select 5] call DFUNC(cacheOverPressureVales)) select 2)]) then { +private ["_var","_varName"]; +_varName = (QGVAR(values) + _this select 1); +_var = if (isNil _varName) then { + ([_this select 1,_this select 5] call FUNC(cacheOverPressureVales)) select 2; +} else { + (missionNameSpace getVariable _varName) select 2; +}; + if (_var > 0) then { _this call DFUNC(fireOverpressureZone) }; diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index 669c9e8cc4..282cc1e5db 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -16,10 +16,14 @@ EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon,_magazine); -private ["_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; -_overpressureAngle = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; -_overpressureRange = missionNameSpace getVariable [(QGVAR(Angle) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 0]; -_overpressureDamage = missionNameSpace getVariable [(QGVAR(Damage) + _magazine),([_weapon,_magazine] call FUNC(cacheOverPressureVales)) select 2]; +private ["_var","_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; +_varName = (QGVAR(values) + _magazine); +_var = if (isNil _varName) then { + [_weapon,_magazine] call FUNC(cacheOverPressureVales); +} else { + missionNameSpace getVariable _varName; +}; +_var params["_overpressureAngle","_overpressureRange","_overpressureDamage"]; TRACE_4("Parameters:",_overpressureAngle,_overpressureRange,_overpressureDamage,_weapon); From d60d5fe1f3c2330abfc84b22a19edbbabbd5b78c Mon Sep 17 00:00:00 2001 From: SzwedzikPL Date: Sat, 18 Jul 2015 06:47:13 +0200 Subject: [PATCH 006/620] disable a10 tracers, commanche tracers only nvg --- addons/aircraft/CfgAmmo.hpp | 2 +- addons/aircraft/CfgMagazines.hpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp index 8aa5d3173e..867b247a5a 100644 --- a/addons/aircraft/CfgAmmo.hpp +++ b/addons/aircraft/CfgAmmo.hpp @@ -11,7 +11,7 @@ class CfgAmmo { explosive = 1.8; tracersEvery = 3; tracerEndTime = 3.5; - + nvgOnly = 1; CraterEffects = "ExploAmmoCrater"; explosionEffects = "ExploAmmoExplosion"; model = "\A3\Weapons_f\Data\bullettracer\tracer_red"; diff --git a/addons/aircraft/CfgMagazines.hpp b/addons/aircraft/CfgMagazines.hpp index b09bac6943..11704056d1 100644 --- a/addons/aircraft/CfgMagazines.hpp +++ b/addons/aircraft/CfgMagazines.hpp @@ -5,6 +5,7 @@ class CfgMagazines { class 1000Rnd_Gatling_30mm_Plane_CAS_01_F: VehicleMagazine { ammo = "ACE_Gatling_30mm_HE_Plane_CAS_01_Deploy"; count = 1170; + tracersEvery = 0; }; // an extended magazine for the comanche From 5609ec7b6b90233cdfbadac5ea093296e6902cc1 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Sat, 25 Jul 2015 12:56:50 -0300 Subject: [PATCH 007/620] Added PT-BR translations New PT-BR translations, including the slideshow and spectator module. --- addons/interact_menu/stringtable.xml | 3 +++ addons/interaction/stringtable.xml | 9 +++++---- addons/medical/stringtable.xml | 6 ++++++ addons/slideshow/stringtable.xml | 13 +++++++++++++ addons/spectator/stringtable.xml | 15 +++++++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 5ab782803d..736b520f94 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -90,6 +90,7 @@ Akcje Zeusa Akce Zeuse Acciones Zeus + Ações do Zeus Interaction - Text Max @@ -256,12 +257,14 @@ Pokazuj akcje dla budynków Zobrazit akci pro budovy Mostrar acciones para edificios + Mostrar ações para edifícios Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) + Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 5bd3282872..7e5eca1947 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -798,6 +798,7 @@ Otwórz Otevřít Abrir + Abrir Interaction System @@ -805,7 +806,7 @@ Sistema de interacción Interaktionssystem Systém interakce - Sistema de interação + Sistema de interação Enable Team Management @@ -813,7 +814,7 @@ Habilitar gestión de equipos Aktiviere Gruppenverwaltung Povolit správu týmu - Habilitar gestão de equipes + Habilitar gestão de equipes Should players be allowed to use the Team Management Menu? Default: Yes @@ -821,15 +822,15 @@ ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja Mohou hráči použít menu správy týmu? Výchozí: Ano - Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim + Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim Team management allows color allocation for team members, taking team command and joining/leaving teams. Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. - O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. + O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 5ceb625f59..b65343d1bf 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3193,11 +3193,13 @@ Condition PAK Podmínka osobní lékárničky Condición EPA + Condição do KPS When can the Personal Aid Kit be used? Kde může být použita osobní lékárnička? ¿Cuando se puede utilizar el Equipo de primeros auxilios? + Onde o kit de primeiros socorros pode ser utilizado? Anywhere @@ -3302,11 +3304,13 @@ Condition Surgical kit (Adv) Podmínka chirurgické soupravy (Pokr.) Condición de equipo quirúrgico (Av) + Condição do Kit Cirúrgico (Avançado) When can the Surgical kit be used? Kde může být použita chirurgická souprava? ¿Cuando se puede utilizar el equipo quirúrgico? + Onde o kit cirúrgico pode ser utilizado? Bloodstains @@ -3635,11 +3639,13 @@ Anytime Kdykoli Siempre + Sempre Stable Stabilní Estable + Estável \ No newline at end of file diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 63547c06e2..98e8b0e236 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -3,42 +3,55 @@ Slideshow + Apresentação de Slides This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. + Este módulo permite que você monte apresentações de slides em diferentes objetos. Um módulo por lista de imagem. Somente objetos com hiddenSelection 0 são suportados. Objects + Objetos Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. + Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto. Controllers + Controles Controller object names, separated by commas if multiple. + Nome dos objetos de controle, separado por vírgula se mais de um. Images + Imagens List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). + Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). Interaction Names + Nomes de Interação List of names that will be used for interaction entries, separated by commas, in order of images. + Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. Slide Duration + Duração do Slide Duration of each slide. Default: 0 (Automatic Transitions Disabled) + Duração de cada slide. Padrão: 0 (Transição automática desabilitada) Slides + Slides \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 5cd585108a..a4865cdb9c 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -6,90 +6,105 @@ Obserwator Pozorovatel Espectador + Espectador Enable Spectator Aktywuj obserwatora Povolit pozorovatele Activar espectador + Ativar espectador Begin spectating on player death? Włącz obserwatora po śmierci gracza? Přepnout do pozorovatele po hráčově smrti? ¿Comenzar como espectador al morir el jugador? + Começar como espectador após morte de jogador? Player Side Only Tylko strona gracza Pouze strana hráče Sólo bando del jugador + Somente lado do jogador Only spectate units belonging to player's side? Pozwól obserwować jednostki będące tylko po stronie gracza? Pozorovat pouze jednotky patřící k hráčově straně? ¿Sólo observar unidades que pertenecen al bando del jugador? + Somente observar unidades que pertençam ao lado do jogador? Spectate AI Obserwacja AI Pozorovat AI Observar IA + Observar IA Allow spectating of AI units? Pozwól obserwować jednostki AI? Umožnit pozorovat AI jednotky? ¿Permitir observar unidades de la IA? + Permitir observar unidades da IA? Track Units Śledź jednostki Sledovat jednotky Seguir unidades + Rastrear unidades Track units' movements throughout mission? Śledź ruch jednostek w trakcie misji? Sledovat pohyby jednotek napříč misí? ¿Seguimiento de movimientos de unidades a lo largo de la misión? + Rastrear unidades ao longo da missão? Start Position Pozycja startowa Počáteční pozice Posición de inicio + Posição de início Use this module as a starting position for spectator camera? Użyj pozycji modułu jako pozycje startową dla kamery obserwatora? Použít tento modul jako počáteční pozici pro pozorovací kameru? ¿Utiliza este módulo como una posición de inicio para la cámara de espectador? + Usar este módulo como uma posição de início para a câmera do espectador? End Mission Zakończ misję Konec mise Finalizar misión + Finalizar missão End mission when all players dead (default BIS behaviour)? Zakończ misję kiedy wszyscy gracze będą martwi (domyślne zachowanie BIS)? Ukončit misi když umřou všichni hráči (výchozí BIS chování)? ¿Finalizar misión cuando todos los jugadores mueran (comportamiento por defecto de BIS)? + Finalizar missão quando todos os jogadores estiverem mortos (Comportamento padrão da BIS)? View Distance Zasięg widzenia Dohlednost Distancia de visión + Distância de visão OK OK OK Aceptar + OK \ No newline at end of file From d0f91c5ebfdbfe6f68a1f79da45200afcebe4103 Mon Sep 17 00:00:00 2001 From: Harakhti Date: Thu, 30 Jul 2015 14:40:51 +0200 Subject: [PATCH 008/620] Row 1 Not a miracle, but it's something. --- addons/advanced_ballistics/stringtable.xml | 24 +++++ addons/ballistics/stringtable.xml | 1 + addons/captives/stringtable.xml | 10 +- addons/common/stringtable.xml | 18 +++- addons/explosives/stringtable.xml | 10 +- addons/finger/stringtable.xml | 12 ++- addons/frag/stringtable.xml | 4 +- addons/hearing/stringtable.xml | 4 +- addons/interact_menu/stringtable.xml | 9 +- addons/interaction/stringtable.xml | 5 + addons/map/stringtable.xml | 8 ++ addons/medical/stringtable.xml | 106 +++++++++++++++++++++ addons/microdagr/stringtable.xml | 9 +- addons/missileguidance/stringtable.xml | 3 + addons/missionmodules/stringtable.xml | 9 ++ addons/mk6mortar/stringtable.xml | 6 +- addons/mx2a/stringtable.xml | 4 +- addons/optionsmenu/stringtable.xml | 21 +++- addons/parachute/stringtable.xml | 4 +- addons/rangecard/stringtable.xml | 9 +- addons/respawn/stringtable.xml | 12 ++- addons/sitting/stringtable.xml | 5 + addons/tacticalladder/stringtable.xml | 11 ++- 23 files changed, 280 insertions(+), 24 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index b30485aae6..45e0d042a5 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -32,6 +32,7 @@ Erweiterte Ballistik Pokročilá balistika Balística avançada + Fejlett ballisztika Advanced Ballistics @@ -40,6 +41,7 @@ Erweiterte Ballistik Pokročilá balistika Balística avançada + Fejlett ballisztika Enables advanced ballistics @@ -48,6 +50,7 @@ Aktiviert die erweiterte Ballistik Aktivuje pokročilou balistiku Ativa balística avançada + Engedélyezi a fejlett ballisztikát Enabled For Snipers @@ -56,6 +59,7 @@ Für Scharfschützen aktiviert Povoleno pro odstřelovače Ativar para caçadores + Mesterlövészeknek engedélyezve Enables advanced ballistics for non local snipers (when using high power optics) @@ -64,6 +68,7 @@ Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) + Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor) Enabled For Group Members @@ -72,6 +77,7 @@ Für Gruppenmitglieder aktiviert Povoleno pro členy skupiny Ativada para membros do grupo + Csoporttagoknak engedélyezve Enables advanced ballistics for non local group members @@ -80,6 +86,7 @@ Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder Aktivuje pokročilou balistiku pro nelokální členy skupiny Ativa balística avançada para membros de grupo não locais + Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak Enabled For Everyone @@ -88,6 +95,7 @@ Für jeden aktiviert Povoleno pro všechny Ativada para todos + Mindenkinek engedélyezve Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) @@ -96,6 +104,7 @@ Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) + Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) Always Enabled For Group Members @@ -104,6 +113,7 @@ Für Gruppenmitglieder immer aktiviert Vždy povoleno pro členy skupiny Sempre ativada para membros do grupo + Mindig engedélyezve csoporttagoknak Always enables advanced ballistics when a group member fires @@ -112,6 +122,7 @@ Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt Aktivuje pokročilou balistiku pro členy skupiny Sempre ative balística avançada quando um membro do grupo disparar + Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel Disabled In FullAuto Mode @@ -120,6 +131,7 @@ Beim vollautomatischen Feuern deaktiviert Zakázáno v automatickém režimu střelby Desabilitar no modo automático + Automata módban letiltva Disables the advanced ballistics during full auto fire @@ -128,6 +140,7 @@ Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern Zákáže pokročilou balistiku během střelby v režimu automat Desabilitar a balística avançada durante fogo automático + Letiltja a fejlett ballisztikát automata tüzelés folyamán Enable Ammo Temperature Simulation @@ -136,6 +149,7 @@ Simulation der Munitionstemperatur aktivieren Povolit simulaci teploty munice Ativar simulação de temperatura de munição + Lőszer-hő szimuláció engedélyezése Muzzle velocity varies with ammo temperature @@ -144,6 +158,7 @@ Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit Úsťová rychlost je závislá na teplotě munice A velocidade de saída varia com a temperatura da munição + A kezdősebesség a lőszer hőmérsékletétől függően változó Enable Barrel Length Simulation @@ -152,6 +167,7 @@ Simulation der Lauflänge aktivieren Povolit simulaci délky hlavně Ativar a simulação de comprimento do cano + Csőhossz-szimuláció engedélyezése Muzzle velocity varies with barrel length @@ -160,6 +176,7 @@ Lauflänge beeinflusst Mündungsgeschwindigkeit Úsťová rychlost je závislá na délce hlavně A velocidade de saída caria com o comprimento do cano + A kezdősebesség a cső hosszától függően változó Enable Bullet Trace Effect @@ -168,6 +185,7 @@ Geschossspureffekt aktivieren Povolit efekt trasírek Ativa efeito traçante de projétil + Nyomkövető-effekt engedélyezése Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) @@ -176,6 +194,7 @@ Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) + Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) Simulation Interval @@ -184,6 +203,7 @@ Simulationsintervall Interval simulace Intervalo da simulação + Szimuláció intervalluma Defines the interval between every calculation step @@ -192,6 +212,7 @@ Legt das Intervall zwischen den Berechnungsschritten fest Určuje interval mezi každým výpočtem Define o intervalo entre cada cálculo + Meghatározza a számítási lépések közötti időintervallumot Simulation Radius @@ -200,6 +221,7 @@ Simulationsradius Rozsah simulace Raio de simulação + Szimuláció hatóköre Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles @@ -208,12 +230,14 @@ Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired. Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. + Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. \ No newline at end of file diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index db44078980..70591dcbfe 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1599,6 +1599,7 @@ [ACE] Munitionskiste [ACE] Bedna s municí [ACE] Caixa com suprimentos de munição + [ACE] Lőszeres láda \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 39cf65cac7..dfeea70c34 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -164,6 +164,7 @@ Einheit kapitulieren lassen Vzdávající se jednotka Fazer unidade se render + Egység kapitulálása Sync a unit to make them surrender.<br />Source: ace_captives @@ -172,6 +173,7 @@ Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives + Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives Captives Settings @@ -180,6 +182,7 @@ Nastavení zajatce Gefangenen-Einstellungen Ajustes de prisioneiros + Fogoly-beállítások Controls settings for surrender and cable ties @@ -188,6 +191,7 @@ Toto kontroluje nastavení kapitulace a pout Einstellungen zur Kapitulation und Kabelbindern Controla as configurações de rendição e abraçadeiras + Szabályozza a kapituláció és bilincselés beállításait Can handcuff own side @@ -196,6 +200,7 @@ Může spoutat spolubojovníky Kann Teamkollegen fesseln Pode algemar o próprio lado + Saját oldal megbilincselhető Can players cabletie units on their own side @@ -204,6 +209,7 @@ Mohou hráči spoutat jednotky na své straně Können Spieler eigene Einheiten fesseln Os jogadores podem algemar unidades do seu lado + A játékosok megkötözhetik-e a saját oldalukon lévő egységeket Allow surrendering @@ -212,6 +218,7 @@ Povolit vzdávání Kapitulation erlauben Permite rendição + Kapituláció engedélyezése Players can surrender after holstering their weapon @@ -220,6 +227,7 @@ Hráč se může vzdát poté, co si skryje zbraň Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben Jogadores podem se render depois de guardar sua arma + A játékosok megadhatják magukat a fegyverük elrakása után - + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6ed5e10d5a..b1faab907e 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -477,9 +477,9 @@ Überprüfe PBOs Zkontrolovat PBO Verificar PBOs + PBO-k ellenőrzése - Sprawdzaj spójność addonów z serwerem Este módulo verifica la integridad de los addons con los que iniciamos el simulador Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. @@ -493,6 +493,7 @@ Aktion Akce Ação + Cselekvés What to do with people who do not have the right PBOs? @@ -501,6 +502,7 @@ Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? Co udělat s lidmi, co nemají správné addony? O que fazer com pessoas que não tem os PBOs corretos? + Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? Warn once @@ -509,6 +511,7 @@ Einmal verwarnen Upozornit jednou Avisar uma vez + Egyszeri figyelmeztetés Warn (permanent) @@ -517,6 +520,7 @@ Immer verwarnen Upozornit (permanentně) Avisar (permanente) + Figyelmeztetés (tartós) Kick @@ -525,6 +529,7 @@ Kicken Vyhodit Chutar + Kirúgás Check all addons @@ -533,6 +538,7 @@ Alle Addons überprüfen Zkontrolovat všechny addony Verificar todos addons + Összes bővítmény ellenőrzése Check all addons instead of only those of ACE? @@ -541,6 +547,7 @@ Alle Addons anstatt nur ACE überprüfen? Zkontrolovat všechny addony namísto jen těch od ACE? Verificar todos addons invés de só os do ACE? + Az összes bővítmény ellenőrzése, csak az ACE helyett? Whitelist @@ -549,6 +556,7 @@ Whitelist Seznam povolených Lista branca + Fehérlista What addons are allowed regardless? @@ -557,6 +565,7 @@ Welche Addons werden dennoch erlaubt? Jaké addony jsou povoleny? Quais addons são permitidos de qualquer maneira? + Milyen bővítmények vannak feltétlenül engedélyezve? LSD Vehicles @@ -565,6 +574,7 @@ LSD-Fahrzeuge LSD vozidla Veículos LSD + LSD járművek Adds LSD effect to synchronized vehicle @@ -573,6 +583,7 @@ Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu Přidá LSD efekt pro synchronizované vozidla Adiciona efeito LSD ao veículo sincronizado + LSD-effekt hozzáadása a szinkronizált járművekhez Toggle Handheld Device @@ -581,6 +592,7 @@ Ativa dispositivo de mão Przełącz urządzenie podręczne Přepnout ruční zařízení + Kézi eszköz kapcsolása Close Handheld Device @@ -589,6 +601,7 @@ Fecha dispositivo de mão Zamknij urządzenie podręczne Zavřít ruční zařízení + Kézi eszköz bezárása Cycle Handheld Devices @@ -597,6 +610,7 @@ Troca dispositivos de mão Następne urządzenie podręczne Procházet ruční zařízení + Kézi eszköz váltása - + \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index a985b428c1..b4b9f7c7cf 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -476,7 +476,7 @@ Spínač mrtvého muže Czuwak Detonador de hombre muerto - Dead Man's Switch + Halott ember kapcsolója Detonador do homem morto Кнопка мертвеца Detonatore a rilascio @@ -512,6 +512,7 @@ Sprengstoffsystem Systém výbušnin Sistema de explosivos + Robbanóanyag-rendszer Require specialists? @@ -520,6 +521,7 @@ Benötigt Sprengstoffexperten? Vyžadovat specialistu? Requer especialista? + Specialisták igénylése? Require explosive specialists to disable explosives? Default: No @@ -528,6 +530,7 @@ Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne Requer especialista em explosivos para desativar explosivos? Padrão: Não + Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem Punish non-specialists? @@ -536,6 +539,7 @@ Bestrafe Nicht-Sprengstoffexperten? Potrestat, pokud není specialista? Punir não especialistas? + Nem-specialisták büntetése? Increase the time it takes to complete actions for non-specialists? Default: Yes @@ -544,6 +548,7 @@ Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim + Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen Explode on defusal? @@ -551,6 +556,7 @@ Eksplozja przy rozbrajaniu? Explodovat při zneškodňování? Explotar al desactivar? + Robbanás hatástalanításkor? Enable certain explosives to explode on defusal? Default: Yes @@ -558,6 +564,7 @@ Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano ¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí + Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen This module adjusts the settings related to explosives. @@ -565,6 +572,7 @@ Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. Este módulo permite personalizar as definições relacionadas a explosivos. + Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza. \ No newline at end of file diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index bbc308fcd7..57fab198fb 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -4,37 +4,47 @@ Show finger indicator to self Отображать пальце-индикатор для показывающего игрока + Saját mutatási indikátor megjelenítése Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator Отображать индикатор для показывающего игрока. Эта настройка не влияет на то, будутт ли другие игроки видеть индикатор + Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. Finger indicator Пальце-индикатор + Ujj-indikátor Color of the finger-pointing indicator circle Цвет индикатора пальце-указания + Mutatási indikátor körének színe Action "point a finger at" Действие "показать пальцем на" + Cselekvés "ujj rámutatása" Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. + Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. Finger Settings + Ujj beállításai Finger Pointing Enabled + Mutatás engedélyezése Finger Max Range + Ujj maximum hatótávja How far away players can finger each other. [default: 4] + Milyen messziről ujjazhatják egymást a játékosok. [alapértelmezett: 4] - + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 5a59b15a4a..c4fac44ec0 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -8,6 +8,7 @@ Splittersimulation Simulace fragmentace Simulação de fragmentação + Repesz-szimuláció Enable the ACE Fragmentation Simulation @@ -16,6 +17,7 @@ Aktiviere die ACE-Splittersimulation Povolit ACE simulaci fragmentace Ativa a simulação de fragmentação do ACE + Az ACE repesz-szimuláció engedélyezése Spalling Simulation @@ -82,4 +84,4 @@ (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index dbd063b752..6316e06043 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -116,6 +116,7 @@ Gehör Sluch Audição + Hallás Enable combat deafness? @@ -124,6 +125,7 @@ Aktiviere Taubheit im Gefecht? Povolit ztrátu sluchu? Ativar surdez em combate? + Harci süketség engedélyezése? Enable combat deafness? @@ -132,9 +134,9 @@ Aktiviere Taubheit im Gefecht? Povolit ztrátu sluchu? Ativar surdez em combate? + Harci süketség engedélyezése? - Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index b55e8483a1..3963125481 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -90,6 +90,7 @@ Akcje Zeusa Akce Zeuse Acciones Zeus + Zeus cselekvések Interaction - Text Max @@ -230,6 +231,7 @@ Pozadí menu interakce Interaktionsmenü-Hintergrund Fundo do menu de interação + Cselekvő menü háttere Blur the background while the interaction menu is open. @@ -238,6 +240,7 @@ Rozmazat obraz pokud je interakční menu otevřené. Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. Desfocar o fundo enquanto o menu de interação está aberto. + A háttér elmosása a cselekvő menü használata alatt. Blur screen @@ -246,6 +249,7 @@ Rozmazaný obraz Verschwommenes Bild Desfoque de tela + Kép elmosása Black @@ -254,18 +258,21 @@ Černý obraz Preto Schwarz + Fekete Show actions for buildings Pokazuj akcje dla budynków Zobrazit akci pro budovy Mostrar acciones para edificios + Cselekvések mutatása épületeknél Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) + Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) - + \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 5bd3282872..34a20f4df9 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -798,6 +798,7 @@ Otwórz Otevřít Abrir + Nyitás Interaction System @@ -806,6 +807,7 @@ Interaktionssystem Systém interakce Sistema de interação + Interakciós rendszer Enable Team Management @@ -814,6 +816,7 @@ Aktiviere Gruppenverwaltung Povolit správu týmu Habilitar gestão de equipes + Csapatkezelés engedélyezése Should players be allowed to use the Team Management Menu? Default: Yes @@ -822,6 +825,7 @@ Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja Mohou hráči použít menu správy týmu? Výchozí: Ano Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim + A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen Team management allows color allocation for team members, taking team command and joining/leaving teams. @@ -830,6 +834,7 @@ Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. + A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 3f2d312fae..793dd88599 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -8,6 +8,7 @@ Karte Mapa Mapa + Térkép Map illumination? @@ -87,6 +88,7 @@ Blue Force Tracking Blue Force Tracking Rastreio de forças azuis + Blue Force követés BFT Enable @@ -94,6 +96,7 @@ Aktywuj BFT Povolit BFT Activar BFT + BFT engedélyezése Enable Blue Force Tracking. Default: No @@ -101,6 +104,7 @@ Aktywuj Blue Force Tracking. Domyślnie: Nie Povolit Blue Force Tracking. Výchozí: Ne Activar Blue Force Tracking. Por defecto: No + Blue Force követés engedélyezése. Alapértelmezett: Nem Interval @@ -109,6 +113,7 @@ Intervall Interval Intervalo + Intervallum How often the markers should be refreshed (in seconds) @@ -117,6 +122,7 @@ Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) Jak často budou značky aktualizovány (v sekundách) Frequência em que os marcadores devem ser atualizados (em segundos) + Milyen gyakran frissüljenek a jelölők (másodpercben) Hide AI groups? @@ -125,6 +131,7 @@ KI-Gruppen verstecken? Skrýt AI skupiny? Esconder grupos de IA? + AI csoportok elrejtése? Hide markers for 'AI only' groups? @@ -133,6 +140,7 @@ Verstecke Marker für "nur KI"-Gruppen? Skrýt značky pouze pro AI skupiny? Esconder marcadores que pertencem ao grupo de IA? + Jelölők elrejtése "csak AI" csoportoknál? This module allows the tracking of allied units with BFT map markers. diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 32c38397c0..8fe1afa08e 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1593,6 +1593,7 @@ Keine Žádný Nada + Nincs Weak @@ -2213,6 +2214,7 @@ Obvázání odstraňuje skvrny od krve El vendaje elimina las manchas de sangre Bandagem remove manchas de sangue + A kötözés eltávolítja a vérfoltokat Pain is only temporarily suppressed @@ -2221,6 +2223,7 @@ Bolest je potlačena pouze dočasně El dolor se suprime solo temporalmente Dor é suprimida somente temporáriamente + A fájdalom csak ideiglenesen csökken Pain Effect Type @@ -2734,6 +2737,7 @@ ACE-Medicsystem ACE Zdravotnické ACE Médico + ACE Orvosi Rendszer Medical Settings [ACE] @@ -2743,6 +2747,7 @@ Medizinische Einstellungen [ACE] Lékařské nastavení [ACE] Ajustes médicos [ACE] + Orvosi beállítások [ACE] Medical Level @@ -2752,6 +2757,7 @@ Medizinisches Level Úroveň medického Nível médico + Orvosi szint What is the medical simulation level? @@ -2761,6 +2767,7 @@ Wie hoch soll das medizinische Simulationslevel sein? Jaká je úroveň lékařské simulace? Qual o nível de simulação médica? + Milyen komplex legyen az orvosi szimuláció? Basic @@ -2770,6 +2777,7 @@ Standard Základní Básica + Alap Advanced @@ -2779,6 +2787,7 @@ Erweitert Pokročilé Avançada + Fejlett Medics setting @@ -2788,6 +2797,7 @@ Medizinische Einstellungen Úroveň zdravotníků Configuração médica + Orvosok beállítása What is the level of detail prefered for medics? @@ -2796,6 +2806,7 @@ ¿Cuál es el nivel de detalle preferido para los médicos? Jaká úroveň detailů je preferována pro zdravotníky? Qual o nível de detalhe preferido para os médicos? + Mi a javasolt részletesség orvosok számára? Disable medics @@ -2805,6 +2816,7 @@ Sanitäter deaktivieren Zakázat zdravotníky Desativar médicos + Orvosok letiltása Enable Litter @@ -2814,6 +2826,7 @@ Abfälle aktivieren Povolit odpadky Ativar lixo médico + Szemét engedélyezése Enable litter being created upon treatment @@ -2823,6 +2836,7 @@ Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde Vytváří odpad zdravotnického materiálu pří léčení Ativar lixo ser criado após tratamento + Engedélyezi a szemét keletkezését ellátáskor Life time of litter objects @@ -2832,6 +2846,7 @@ Dauer des angezeigten Abfalls Životnost pro odpadky Tempo de vida dos objetos do lixo + Szemétobjektumok élettartama How long should litter objects stay? In seconds. -1 is forever. @@ -2841,6 +2856,7 @@ Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. + Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. Enable Screams @@ -2850,6 +2866,7 @@ Schreie aktivieren Povolit křik Ativar gritos + Kiáltások engedélyezése Enable screaming by injuried units @@ -2859,6 +2876,7 @@ Aktiviere Schreie bei verletzten Einheiten Povolit křičení zraněných jednotek Ativa gritos para unidades feridas + Engedélyezi a sérült egységek kiáltásait Player Damage @@ -2868,6 +2886,7 @@ Spielerschaden Poškození hráče Dano do jogador + Játékos sérülés What is the damage a player can take before being killed? @@ -2877,6 +2896,7 @@ Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? Jaké poškození může hráč dostat než bude zabit? Qal é o dano que um jogador pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? AI Damage @@ -2886,6 +2906,7 @@ KI-Schaden Poškození AI Dano da IA + AI sérülés What is the damage an AI can take before being killed? @@ -2895,6 +2916,7 @@ Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? Jaké poškození může AI dostat než bude zabito? Qual é o dano que uma IA pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? AI Unconsciousness @@ -2904,6 +2926,7 @@ KI-Bewusstlosigkeit Bezvědomí AI Inconsciência da IA + AI eszméletlenség Allow AI to go unconscious @@ -2913,6 +2936,7 @@ KI kann bewusstlos werden Umožňuje AI upadnout do bezvědomí Permite IA ficar inconsciente + Engedélyezi az AI eszméletének elvesztését Remote Controlled AI @@ -2920,6 +2944,7 @@ IA controlada remotamente Zdalnie sterowane AI Vzdáleně ovládané AI + Távvezérelt AI Treat remote controlled units as AI not players? @@ -2927,6 +2952,7 @@ Tratar unidades remotamente controladas como IA? Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? + Távvezérelt egységek AI-ként, nem játékosként való kezelése? Disabled @@ -2936,6 +2962,7 @@ Deaktiviert Zakázáno Desativado + Letiltva Enabled @@ -2945,6 +2972,7 @@ Aktiviert Povoleno Ativado + Engedélyezve Prevent instant death @@ -2954,6 +2982,7 @@ Verhindere direkten Tod Zabránit okamžité smrti Previnir morte instantânea + Azonnali halál kiiktatása Have a unit move to unconscious instead of death @@ -2963,6 +2992,7 @@ Lässt eine Einheit bewusstlos werden anstatt zu sterben Jednotka upadne do bezvědomí namísto smrti Fazer a unidade ficar inconsciente invés de morrer + Egy egység kerüljön eszméletlen állapotba a halott helyett Bleeding coefficient @@ -2972,6 +3002,7 @@ Verblutungsmultiplikator Koeficient krvácení Coeficiente de sangramento + Vérzési koefficiens Coefficient to modify the bleeding speed @@ -2981,6 +3012,7 @@ Multiplikator um die Verblutungsgeschwindigkeit zu verändern Koeficient rychlosti krvácení Coeficiente para modificar a velocidade do sangramento + Egy szorzó a vérzés sebességének szabályozására Pain coefficient @@ -2990,6 +3022,7 @@ Schmerzmultiplikator Koeficient bolesti Coeficiente de dor + Fájdalmi koefficiens Coefficient to modify the pain intensity @@ -2999,6 +3032,7 @@ Multiplikator um den Schmerzintensität zu verändern Koeficient intenzity bolesti Coeficiente para modificar a instensidade de dor + Egy szorzó a fájdalom erősségének szabályozására Sync status @@ -3008,6 +3042,7 @@ Status synchronisieren Synchronizovat status Sincronizar estado + Szinkronizációs állapot Keep unit status synced. Recommended on. @@ -3017,6 +3052,7 @@ Status der Einheit synchron halten. Sollte aktiviert bleiben. Udržuje status jednotky synchronizovaný. Doporučeno zapnout. Mater o estado da unidade sincronizado. Recomendado ativado. + Egységállapotok szinkronizálása. Javasolt a bekapcsolása. Provides a medical system for both players and AI. @@ -3026,6 +3062,7 @@ Aktiviert ein medizinisches System für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. Proporciona o sistema médico para os jogadores e a IA. + Egy orvosi rendszert ad játékosok és AI-k számára. Advanced Medical Settings [ACE] @@ -3035,6 +3072,7 @@ Erweiterte medizinische Einstellungen [ACE] Pokročilé zdravotnické nastavení [ACE] Ajustes médicos avançados [ACE] + Fejlett orvosi beállítások [ACE] Enabled for @@ -3044,6 +3082,7 @@ Aktiviert für Povoleno pro Habilitado para + Engedélyezve... Select what units the advanced medical system will be enabled for @@ -3053,6 +3092,7 @@ Wähle aus welche Einheiten das erweiterte medizinische System haben Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen Selecione quais unidades o sistema médico avançado será habilitado + Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer Players only @@ -3062,6 +3102,7 @@ Nur Spieler Pouze hráči Somente jogadores + Csak játékosok Players and AI @@ -3071,6 +3112,7 @@ Spieler und KI Hráči a AI Jogadores e IA + Játékosok és AI Enable Advanced wounds @@ -3080,6 +3122,7 @@ Aktiviere erweiterte Wunden Povolit pokročilé zranění Ativar ferimentos avançados + Komplex sebek engedélyezése Allow reopening of bandaged wounds? @@ -3089,6 +3132,7 @@ Erlaube das Öffnen von bandagierten Wunden? Umožnit znovuotevření zavázané rány? Permitr reabertura de ferimentos enfaixados? + Visszanyílhatnak a bekötözött sebek? Vehicle Crashes @@ -3098,6 +3142,7 @@ Fahrzeugunfälle Poškození z kolize Batidas de veículos + Járműbalesetek Do units take damage from a vehicle crash? @@ -3107,6 +3152,7 @@ Bekommen Einheiten von Fahrzeugunfällen Schaden? Dostane jednotka poškození při autonehodě? As unidades recebem dano de uma batida de veículo? + Sérülnek-e az egységek autós ütközés során? Allow PAK @@ -3116,6 +3162,7 @@ Erlaube Erstehilfekasten Povolit osobní lékárničky Permitir Kit de Primeiros Socorros + Elsősegélycsomag engedélyezése Who can use the PAK for full heal? @@ -3125,6 +3172,7 @@ Wer kann den Erstehilfekasten für eine Endheilung verwenden? Kdo může použít osobní lékárničku pro plné vyléčení? Quem pode usar o KPS para cura completa? + Ki használhatja az elsősegélycsomagot teljes gyógyításra? Anyone @@ -3134,6 +3182,7 @@ Jeder Kdokoliv Qualquer um + Akárki Medics only @@ -3143,6 +3192,7 @@ Nur Sanitäter Pouze zdravotník Somente médicos + Csak orvosok Doctors only @@ -3152,6 +3202,7 @@ Nur Ärzte Pouze doktor Somente doutores + Csak doktorok Remove PAK on use @@ -3161,6 +3212,7 @@ Entferne Erstehilfekasten bei Verwendung Odebrat osobní lékárničku po použití Remover o KPS depois do uso + Elsősegélycsomag eltávolítása használatkor Should PAK be removed on usage? @@ -3170,6 +3222,7 @@ Sollen Erstehilfekästen bei Verwendung entfernt werden? Má se osobní lékárnička odstranit po použití? Deve o KPS ser removido depois do uso? + Eltávolítódjon az elsősegélycsomag használatkor? Locations PAK @@ -3179,6 +3232,7 @@ Orte für Erstehilfekasten Lokace osobní lékárničky Localizações do KPS + Elsősegélycsomag helyek Where can the Personal Aid Kit be used? @@ -3188,16 +3242,19 @@ Wo kann der Erstehilfekasten verwendet werden? Kde může být použita osobní lékárnička? Onde o kit de primeiros socorros pode ser utilizado? + Hol lehet az elsősegélycsomagot használni? Condition PAK Podmínka osobní lékárničky Condición EPA + Elsősegélycsomag állapot When can the Personal Aid Kit be used? Kde může být použita osobní lékárnička? ¿Cuando se puede utilizar el Equipo de primeros auxilios? + Mikor lehet az elsősegélycsomagot használni? Anywhere @@ -3207,6 +3264,7 @@ Überall Kdekoliv Qualquer lugar + Akárhol Medical vehicles @@ -3216,6 +3274,7 @@ Medizinische Fahrzeuge Zdravotnická vozidla Veículos médcos + Orvosi járművek Medical facility @@ -3225,6 +3284,7 @@ Medizinische Einrichtungen Zdravotnické zařízení Instalação médica + Orvosi létesítmény Vehicles & facility @@ -3234,6 +3294,7 @@ Fahrzeuge & Einrichtungen Vozidla a zařízení Veículos e instalações + Járművek & létesítmény Disabled @@ -3243,6 +3304,7 @@ Deaktiviert Zakázáno Desativado + Letiltva Allow Surgical kit (Adv) @@ -3252,6 +3314,7 @@ Erlaube Operationskasten Povolit chirurgickou soupravu (Pokr.) Permite kit cirúrgico (avançado) + Sebészkészlet (Fejlett) engedélyezése Who can use the surgical kit? @@ -3261,6 +3324,7 @@ Wer kann den Operationskasten verwenden? Kdo může použít chirurgickou soupravu? Quem pode usar o kit cirúrgico? + Ki használhatja a sebészkészletet? Remove Surgical kit (Adv) @@ -3270,6 +3334,7 @@ Enrtferne Operationskasten (erweitert) Odebrat chirurgickou soupravu (Pokr.) Remover kit cirúrgico (avançado) + Sebészkészlet (Fejlett) eltávolítása Should Surgical kit be removed on usage? @@ -3279,6 +3344,7 @@ Entferne Operationskästen bei Verwendung? Odebrat chirurgickou soupravu po použití? Deve o kit cirúrgico ser removido após o uso? + Eltávolítódjon a sebészkészlet használatkor? Locations Surgical kit (Adv) @@ -3288,6 +3354,7 @@ Orte für Operationskästen (erweitert) Lokace chirurgické soupravy (Pokr.) Localizações do kit cirúrgico (avançado) + Sebészkészlet (Fejlett) helyei Where can the Surgical kit be used? @@ -3297,16 +3364,19 @@ Wo kann der Operationskasten verwendet werden? Kde může být použita chirurgická souprava? Onde o kit cirúrgico pode ser utilizado? + Hol lehet a sebészkészletet használni? Condition Surgical kit (Adv) Podmínka chirurgické soupravy (Pokr.) Condición de equipo quirúrgico (Av) + Sebészkészlet állapot When can the Surgical kit be used? Kde může být použita chirurgická souprava? ¿Cuando se puede utilizar el equipo quirúrgico? + Mikor lehet a sebészkészletet használni? Bloodstains @@ -3315,6 +3385,7 @@ Skvrny od krve Manchas de sangre Manchas de sangue + Vérfoltok Bandaging removes bloodstains @@ -3323,6 +3394,7 @@ Obvázání odstraňuje skvrny od krve El vendaje elimina las manchas de sangre Bandagem remove manchas de sangue + Kötözés eltávolítja a vérfoltokat Pain suppression @@ -3331,6 +3403,7 @@ Potlačení bolesti Supresión del dolor Supressão de dor + Fájdalomcsillapítás Pain is only temporarily suppressed, not removed @@ -3339,6 +3412,7 @@ Bolest je potlačena, ale jen dočastně El dolor se suprime solo temporalmente, no se elimina. Dor é somente temporáriamente suprimida, não removida + A fájdalom csak ideiglenesen csökken, nem távolítódik el Configure the treatment settings from ACE Medical @@ -3348,6 +3422,7 @@ Behandlungseinstellungen vom ACE-Medical konfigurieren Konfigurace nastavení léčby ze zdravotnické systému ACE Configure as opções de tratamento do ACE Médico + Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből Revive Settings [ACE] @@ -3357,6 +3432,7 @@ Wiederbelebungseinstellungen [ACE] Nastavení oživení [ACE] Sistema de reavivamento [ACE] + Újraélesztés beállításai [ACE] Enable Revive @@ -3366,6 +3442,7 @@ Erlaube Wiederbelebung Povolit oživení Habilitar reavivamento + Újraélesztés engedélyezése Enable a basic revive system @@ -3375,6 +3452,7 @@ Aktiviere Standard-Wiederbelebungssystem Povolit základní systém oživení Habilitar um sistema básico de reavivamento + Egy alap újraélesztési rendszer engedélyezése Max Revive time @@ -3384,6 +3462,7 @@ Maximale Wiederbelebungszeit Maximální čas pro oživení Tempo máximo de reavivamento + Maximum újraélesztési idő Max amount of seconds a unit can spend in revive state @@ -3393,6 +3472,7 @@ Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann Maximální doba v agónii v sekundách Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento + Maximum másodperc, amit egy egység újraélesztési állapotban tölthet Max Revive lives @@ -3402,6 +3482,7 @@ Maximale Leben bei Wiederbelebung Maximální počet oživení Vidas máximas do reavivado + Maximum újraélesztési lehetőségek Max amount of lives a unit. 0 or -1 is disabled. @@ -3411,6 +3492,7 @@ Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. + Egy egység maximum "életei". 0 vagy -1 letiltja. Provides a medical system for both players and AI. @@ -3420,6 +3502,7 @@ Aktiviert das Medicsystem für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. Proporciona um sistema médico para jogadores e IA. + Egy orvosi rendszert ad játékosok és AI-k számára. Set Medic Class [ACE] @@ -3429,6 +3512,7 @@ Setze Sanitäterklassen [ACE] Určit třídu medika [ACE] Definir classe médica [ACE] + Orvos beállítása [ACE] List @@ -3438,6 +3522,7 @@ Liste Seznam Lista + Lista List of unit names that will be classified as medic, separated by commas. @@ -3447,6 +3532,7 @@ Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. + Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. Is Medic @@ -3456,6 +3542,7 @@ Ist Sanitäter Je zdravotník É médico + Orvos-e This module allows you to assign the medic class to selected units. @@ -3463,6 +3550,7 @@ Dieses Modul legt fest welche Einheit ein Sanitäter ist. Tento modul určuje, která jednotka je zdravotník. Este módulo determina qual unidade é um paramédico. + Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. None @@ -3472,6 +3560,7 @@ Keine Žádný Nada + Nincs Regular medic @@ -3481,6 +3570,7 @@ Normaler Sanitäter Řadový zdravotník Médico regular + Hagyományos orvos Doctor (Only Advanced Medics) @@ -3490,6 +3580,7 @@ Arzt (nur erweiterte Sanitäter) Doktor (Pouze pokročilý zdravotníci) Doutor (Somente médicos avançados) + Doktor (csak fejlett orvosok) Assigns the ACE medic class to a unit @@ -3499,6 +3590,7 @@ Weise die ACE-Sanitäterklasse einer Einheit zu Přiřadí ACE třídu zdravotníka do jednotky Atribui a classe médica do ACE a uma unidade + Az ACE orvosi jelző hozzárendelése egy egységhez Set Medical Vehicle [ACE] @@ -3508,6 +3600,7 @@ Setze medizinisches Fahrzeug [ACE] Určit zdravotnické vozidlo [ACE] Definir veículo médico [ACE] + Orvosi jármű beállítása [ACE] List @@ -3517,6 +3610,7 @@ Liste Seznam Lista + Lista List of vehicles that will be classified as medical vehicle, separated by commas. @@ -3526,6 +3620,7 @@ Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. + Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. Is Medical Vehicle @@ -3535,6 +3630,7 @@ Ist medizinisches Fahrzeug Je zdravotnické vozidlo É um veículo médico + Orvosi jármű-e Whatever or not the objects in the list will be a medical vehicle. @@ -3544,6 +3640,7 @@ Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. Se serão ou não os objetos dessa lista veículos médicos. + A listában lévő objektumok orvosi járművek-e, vagy sem. Assigns the ACE medic class to a unit @@ -3553,6 +3650,7 @@ Weist die ACE-Sanitäterklasse einer Einheit zu Přiřadí ACE třídu zdravotníka do jednotky Atribui a classe médica ACE a uma unidade + Hozzárendeli az ACE orvosi jelzőt egy egységhez Set Medical Facility [ACE] @@ -3562,6 +3660,7 @@ Setze medizinische Einrichtung [ACE] Určit zdravotnické zařízení [ACE] Definir instalação médica [ACE] + Orvosi létesítmény beállítása [ACE] Is Medical Facility @@ -3571,6 +3670,7 @@ Ist eine medizinische Einrichtung Je zdravotnické zařízení É uma instalação médica + Orvosi létesítmény-e Registers an object as a medical facility @@ -3580,6 +3680,7 @@ Definiert ein Objekt als medizinische Einrichtung Registruje objekt jako zdravotnické zařízení Registra um objeto como instalacão médica + Egy objektum orvosi létesítményként való regisztrálása Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. @@ -3589,6 +3690,7 @@ Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. + Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. [ACE] Medical Supply Crate (Basic) @@ -3598,6 +3700,7 @@ [ACE] Medizinische Kiste (standard) [ACE] Zdravotnické zásoby (základní) [ACE] Caixa com suprimentos médicos + [ACE] Orvosi láda (Alap) [ACE] Medical Supply Crate (Advanced) @@ -3607,6 +3710,7 @@ [ACE] Medizinische Kiste (erweitert) [ACE] Zdravotnické zásoby (pokročilé) [ACE] Caixa com suprimentos médicos (Avançados) + [ACE] Orvosi láda (Fejlett) Yes @@ -3636,11 +3740,13 @@ Anytime Kdykoli Siempre + Akármikor Stable Stabilní Estable + Stabil \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index a636ffa4de..8933de478f 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -308,6 +308,7 @@ MicroDAGR - Vyplnění mapy MicroDAGR-Kartenfüllung Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés MicroDAGR Map Fill @@ -316,6 +317,7 @@ MicroDAGR - Vyplnění mapy MicroDAGR-Kartenfüllung Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés How much map data is filled on MicroDAGR's @@ -324,6 +326,7 @@ Wie viel Daten auf einem MicroDAGR zu sehen sind Kolik informací je načteno do MicroDAGR? Quanta informação é preenchida no mapa do MicroDAGR + Mennyi térképadatot tartalmaz a MicroDAGR Full Satellite + Buildings @@ -332,6 +335,7 @@ Satellitenbild + Gebäude Satelit + Budovy Satélite completo + Edifícios + Teljes műholdas + épületek Topographical + Roads @@ -340,6 +344,7 @@ Topografisch + Straßen Topografické + Cesty Topográfico + Estradas + Topográfia + utak None (Cannot use map view) @@ -348,6 +353,7 @@ Keine (kann keine Kartenansicht verwenden) Žádný (Nelze použít zobrazení mapy) Nada (Não pode usar a tela de mapa) + Semmi (nem használható a térképnézet) Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo @@ -356,6 +362,7 @@ Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo + Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. <br />Forrás: microDAGR.pbo - + \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 2845767f15..2a0544fab7 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -104,6 +104,7 @@ Aus Vypnout Desligado + Ki Player Only @@ -112,6 +113,7 @@ Nur Spieler Pouze hráči Somente jogador + Csak játékosok Player and AI @@ -120,6 +122,7 @@ Spieler und KI Hráči a AI Jogador e IA + Játékosok és AI \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index b99285850d..dfa461072b 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -8,6 +8,7 @@ ACE-Missionsmodule ACE Moduly mise Módulo de missões ACE + ACE küldetési modulok Ambiance Sounds [ACE] @@ -16,6 +17,7 @@ Umgebungsgeräusche [ACE] Zvuky prostředí [ACE] [ACE] Sons ambientes + Ambiens hangok [ACE] Sounds @@ -24,6 +26,7 @@ Sounds Zvuky Sons + Hangok Class names of the ambiance sounds to be played. Seperated by ',' @@ -40,6 +43,7 @@ Mindestabstand Minimální vzdálenost Distância mínima + Minimális távolság Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) @@ -56,6 +60,7 @@ Maximalabstand Maximální vzdálenost Distância máxima + Maximális távolság Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) @@ -72,6 +77,7 @@ Minimale Verzögerung Minimální prodleva Atraso mínimo + Minimum késleltetés Minimal delay between sounds played @@ -88,6 +94,7 @@ Maximale Verzögerung Maximální prodleva Atraso máximo + Maximum késleltetés Maximum delay between sounds played @@ -104,6 +111,7 @@ Spielern folgen Následovat hráče Seguir jogadores + Játékosok követése Follow players. If set to false, loop will play sounds only nearby logic position. @@ -120,6 +128,7 @@ Lautstärke Hlasitost Volume + Hangerő The volume of the sounds played diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 26ab485db2..300445d482 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -56,6 +56,7 @@ MK6-Einstellungen MK6 - Nastavení Ajustes do MK6 + MK6 beállítások Air Resistance @@ -64,6 +65,7 @@ Luftwiderstand Odpor vzduchu Resistência do Ar + Légellenállás For Player Shots, Model Air Resistance and Wind Effects @@ -80,6 +82,7 @@ Erlaube MK6-Computer MK6 - Povolit počítač Permitir computador do MK6 + MK6 számítógép engedélyezése Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) @@ -96,6 +99,7 @@ Erlaube MK6-Kompass MK6 - Povolit kompas Permitir bússula do MK6 + MK6 iránytű engedélyezése Show the MK6 Digital Compass @@ -104,9 +108,9 @@ Zeige MK6-Digitaler-Kompass MK6 - Zobrazit digitální kompas Mostra a bússula digital do MK6 + Az MK6 digitális iránytű megjelenítése - Moduł ten pozwala dostosować ustawienia moździerza MK6. Dieses Modul erlaubt das Einstellen des MK6-Mörsers. Tento modul umožňuje nastavení minometu MK6. diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index e8df673866..0de9ce7ff6 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -8,6 +8,7 @@ MX-2A MX-2A MX-2A + MX-2A Thermal imaging device @@ -16,6 +17,7 @@ Dispositivo de imagen térmica Termální dalekohled Dispositivo de imagem térmica + Hőleképező készülék - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 376935297e..74430baedc 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -248,6 +248,7 @@ Erlaube Config-Export [ACE] Povolit export natavení [ACE] [ACE] Permitir exportação de configurações + Konfiguráció-exportálás engedélyezése [ACE] Allow @@ -256,6 +257,7 @@ Erlaube Povolit Permitir + Engedélyezés Allow export of all settings to a server config formatted. @@ -280,6 +282,7 @@ Verstecken Skrýt Ocultar + Elrejtés Top right, downwards @@ -288,6 +291,7 @@ Open rechts, nach unten Vpravo nahoře, dolů Superior direito, para baixo + Jobb felül, lefele Top right, to the left @@ -296,6 +300,7 @@ Von rechts nach links Vpravo nahoře, do leva Superior direito, à esquerda + Jobb felül, balra Top left, downwards @@ -304,6 +309,7 @@ Von links, nach unten Vlevo nahoře, dolů Superior esquerdo, para baixo + Bal felül, lefele Top left, to the right @@ -312,6 +318,7 @@ Oben links nach rechts Vlevo nahoře, do prava Superior esquerdo, para a direita + Bal felül, jobbra Top @@ -320,6 +327,7 @@ Oben Nahoře Acima + Fent Bottom @@ -328,6 +336,7 @@ Unten Dole Abaixo + Alul Debug To Clipboard @@ -336,6 +345,7 @@ Debug do schránky Debug in die Zwischenablage Depuração para área de transferência + Debug a vágólapra Sends debug information to RPT and clipboard. @@ -344,12 +354,15 @@ Pošle debug informace do RPT a schránky. Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. Envia informação de depuração para RPT e área de transferência. + Debug információt küld az RPT-be és a vágólapra. - + Headbug Fix + "Fejhiba" fix - + Resets your animation state. + Visszaállítja az animációs állapotodat. ACE News @@ -358,6 +371,7 @@ Notícias do ACE Wiadomości ACE ACE Novinky + ACE hírek Show News on Main Menu @@ -366,6 +380,7 @@ Mostrar notícias no menu principal Pokazuj wiadomości ACE w menu głównym Zobrazit novinky v hlavním menu + Hírek mutatása a főmenüben - + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index b9ccad48a4..66d6670e51 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -52,10 +52,12 @@ Cut Parachute Fallschirm abschneiden + Ejtőernyő elvágása Reserve Parachute Reserve Fallschirm + Tartalék ejtőernyő - + \ No newline at end of file diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index bda93bcab3..20c3a17e0f 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -8,6 +8,7 @@ Vzdálenostní tabulka Entfernungsspinne Tabela de distâncias + Távolsági kártya 50 METER increments -- MRAD/MRAD (reticle/turrets) @@ -16,6 +17,7 @@ Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) 50-Meter-Schritte MRAD/MRAD (Fadenkreuz/Geschützturm) Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) + 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) Open Range Card @@ -24,6 +26,7 @@ Otevřít vzdálenostní tabulku Öffne Entfernungsspinne Abrir tabela de distâncias + Távolsági kártya kinyitása Open Range Card Copy @@ -32,6 +35,7 @@ Otevřít kopii vzdálenostní tabulky Öffne Kopie der Entfernungsspinne Abrir cópia da tabela de distâncias + Távolsági kártya-másolat kinyitása Open Range Card @@ -40,6 +44,7 @@ Otevřít vzdálenostní tabulku Öffne Entfernungsspinne Abrir tabela de distäncias + Távolsági kártya kinyitása Open Range Card Copy @@ -48,6 +53,7 @@ Otevřít kopii vzdálenostní tabulky Öffne Kopie der Entfernungsspinne Abrir cópia da tabela de distâncias + Távolsági kártya-másolat kinyitása Copy Range Card @@ -56,6 +62,7 @@ Kopírovat vzdálenostní tabulku Kopiere Entfernungsspinne Copiar tabela de distäncias + Távolsági kártya másolása - + \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 4b649173f0..99d189ca50 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -152,6 +152,7 @@ Respawn-System Systém znovuzrození Sistema de Renascimento + Respawn-rendszer Save Gear? @@ -160,6 +161,7 @@ Ausrüstung speichern? Uložit výbavu? Salvar equipamento? + Felszerelés elmentése? Respawn with the gear a soldier had just before his death? @@ -168,6 +170,7 @@ Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? Znovuubjevit s výbavou kterou měl voják před smrtí? Renascer com o equipamento que um soldado tinha antes de sua morte? + Az egység halála előtti felszerelésével való respawnolása? Remove bodies? @@ -176,6 +179,7 @@ Körper entfernen? Odstranit těla? Remover corpos? + Holttestek eltávolítása? Remove player bodies after disconnect? @@ -184,9 +188,9 @@ Entferne Spielerkörper nach dem Trennen einer Verbindung? Odstranit hráčova těla po odpojení? Remover corpos dos jogadores depois de desconectar? + Játékosi testek eltávolítása távozás után? - Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. Tento modul umožňuje nastavení znovuzrození (spawn). @@ -199,9 +203,9 @@ Freundbeschuss-Nachrichten Upozornění na přátelskou střelbu Mensagens de fogo amigo + Baráti tűz üzenetek - Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. @@ -213,9 +217,9 @@ Rallypoint-System Systém shromáždění Sistema de ponto de encontro + Gyülekezőpont-rendszer - Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. @@ -227,6 +231,7 @@ Bewege Rallypoint Přesun na shromaždiště Mover para ponto de encontro + Gyülekezőpont mozgatása ACE Respawn @@ -235,6 +240,7 @@ ACE-Respawn ACE Znovuzrození ACE Respawn + ACE Respawn \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 443c34c360..e26c2b36f0 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -7,6 +7,7 @@ Sentar Sednout si Sentarse + Leülés Stand Up @@ -14,6 +15,7 @@ Levantar Vstát Levantarse + Felállás Enable Sitting @@ -21,6 +23,7 @@ Aktywuj siadanie Povolit sezení Acivar asiento + Ülés engedélyezése Sitting @@ -28,6 +31,7 @@ Siadanie Sedící Sentarse + Ülés This module allows you to disable the ability to sit on chairs and toilets. @@ -35,6 +39,7 @@ Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos. + Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 4342ac5408..53a6935484 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -10,7 +10,7 @@ Telescopic Ladder Teleskopický žebřík Telescopic Ladder - Telescopic Ladder + Teleszkopikus létra Escada telescópica @@ -22,7 +22,7 @@ Deploy ladder Rozložit žebřík Deploy ladder - Deploy ladder + Létra lerakása Implantar escada @@ -34,7 +34,7 @@ Drop ladder Položit žebřík Drop ladder - Drop ladder + Létra eldobása Derrubar escada @@ -44,6 +44,7 @@ Upravit žebřík Ajustar escalera Ajustar escada + Létra állítása Position ladder @@ -54,7 +55,7 @@ Position ladder Umístit žebřík Position ladder - Position ladder + Létra elhelyezése Posicionar escada @@ -66,7 +67,7 @@ Pickup ladder Vzít žebřík Pickup ladder - Pickup ladder + Létra felvétele Pegar escada From 2b23958fd184b81585b0d938858bc6f66e23c6c9 Mon Sep 17 00:00:00 2001 From: Harakhti Date: Thu, 30 Jul 2015 16:06:32 +0200 Subject: [PATCH 009/620] Row 2 It gets tedious after a while, especially if your language lacks technical terms. That or my B2 language exam isn't good enough. --- addons/frag/stringtable.xml | 8 ++++++++ addons/map/stringtable.xml | 10 ++++++++++ addons/missionmodules/stringtable.xml | 7 +++++++ addons/mk6mortar/stringtable.xml | 2 ++ addons/nametags/stringtable.xml | 28 ++++++++++++++++++++++++++- addons/optionsmenu/stringtable.xml | 2 ++ addons/switchunits/stringtable.xml | 14 +++++++++++++- addons/vehiclelock/stringtable.xml | 3 +++ addons/viewdistance/stringtable.xml | 27 +++++++++++++++++++++++++- addons/weather/stringtable.xml | 14 ++++++++++++++ addons/winddeflection/stringtable.xml | 5 ++++- addons/yardage450/stringtable.xml | 5 ++++- addons/zeus/stringtable.xml | 17 +++++++++++++++- 13 files changed, 136 insertions(+), 6 deletions(-) diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index c4fac44ec0..205fb50c75 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -26,6 +26,7 @@ Explosionssimulation Simulace úlomků Simulação de estilhaços + Pattogzás-szimuláció Enable the ACE Spalling Simulation @@ -34,6 +35,7 @@ Aktiviere ACE-Explosionssimulation Povolit ACE simulaci úlomků Ativa a simulação de estilhaços do ACE + Az ACE pattogzás-szimuláció engedélyezése Maximum Projectiles Tracked @@ -42,6 +44,7 @@ Maximalzahl der verfolgten Projektile Maximální počet sledovaných projektilů Máximo de projéteis rastreados + Maximum követett repeszek This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) @@ -50,6 +53,7 @@ Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) + Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) Maximum Projectiles Per Frame @@ -58,6 +62,7 @@ Maks. liczba pocisków na klatkę Maximální počet projektilů ze jeden snímek Projéteis máximos por quadro + Maximum repesz/képkocka The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. @@ -66,6 +71,7 @@ El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. + A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. (SP Only) Frag/Spall Debug Tracing @@ -74,6 +80,7 @@ (Pouze SP) Debug sledování Frag/Úlomků (nur SP) Splitter-/Explosions-Debug-Verfolgung (Somente SP) Depuração de fragmentação e estilhaços traçantes + (Csak SP) Repesz/Pattogzás debug követés (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. @@ -82,6 +89,7 @@ (nur SP) Splitter-/Explosions-Debugging (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. + (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 793dd88599..5fc03d4343 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -17,6 +17,7 @@ Kartenausleuchtung Osvětlení mapy Iluminação do mapa? + Térkép megvilágítása? Calculate dynamic map illumination based on light conditions? @@ -25,6 +26,7 @@ Berechne die Kartenauslichtung anhand des Umgebungslichts? Vypočítat dynamické osvětlení mapy na základně světelných podmínek? Calcular a iluminação dinâmica do mapa de acordo com as condições de luz? + Számítódjon a térkép megvilágítottsága a környezeti fényviszonyokból? Map shake? @@ -33,6 +35,7 @@ Kamerawackeln Třesení mapy? Tremor de mapa? + Térkép-rázkódás? Make map shake when walking? @@ -41,6 +44,7 @@ Kamerawackeln beim Gehen? Umožnit třesení mapy za pochodu? Tremer o mapa enquanto caminha? + Rázkódjon-e a térkép mozgáskor? Limit map zoom? @@ -49,6 +53,7 @@ Kartenzoom einschränken Omezit přiblížení mapy? Limitar zoom do mapa? + Térkép-nagyítás korlátozása? Limit the amount of zoom available for the map? @@ -57,6 +62,7 @@ Zoomstufe der Karte einschränken? Omezit stupeň přiblížení pro mapu? Limitar a quantidade de zoom disponível para o mapa? + Korlátozva legyen-e a nagyítás mennyisége a térképnél? Show cursor coordinates? @@ -65,6 +71,7 @@ Zeige Cursor-Koordinaten? Zobrazit souřadnice u kurzoru? Mostrar coordenadas no cursor? + Kurzor-koordináták mutatása? Show the grid coordinates on the mouse pointer? @@ -73,6 +80,7 @@ Gitter-Koordinaten auf dem Mauszeiger anzeigen? Zobrazit souřadnice u kurzoru v mapě? Mostrar as coordenadas de grade no ponteiro do mouse? + Mutatva legyen-e a kurzornál található rész rácskoordinátája? This module allows you to customize the map screen. @@ -80,6 +88,7 @@ Dieses Modul erweitert die Kartenfunktionen. Tento modul umožňuje přizpůsobit mapu s obrazem. Este módulo permite que você personalize a tela de mapa. + Ez a modul lehetővé teszi a térképnézet testreszabását. Blue Force Tracking @@ -148,6 +157,7 @@ Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. + Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index dfa461072b..6085e00b32 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -52,6 +52,7 @@ Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között Maximum Distance @@ -69,6 +70,7 @@ Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között Minimal Delay @@ -86,6 +88,7 @@ Minimale Verzögerung zwischen abzuspielenden Sounds Minimální prodleva mezi přehrávanými zvuky Atraso mínimo entre os sons reproduzidos + Minimum késleltetés a lejátszott hangok között Maximum Delay @@ -103,6 +106,7 @@ Maximale Verzögerung zwischen abzuspielenden Sounds Maximální prodleva mezi přehrávanými zvuky Atraso máximo entre os sons reproduzidos + Maximum késleltetés a lejátszott hangok között Follow Players @@ -120,6 +124,7 @@ Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. + Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. Volume @@ -137,6 +142,7 @@ Lautstärke der abzuspielenden Sounds Hlasitost přehrávaného zvuku O volume em que os sons serão reproduzidos + A lejátszott hangok hangereje Ambiance sounds loop (synced across MP) @@ -145,6 +151,7 @@ Umgebungsgeräusch-Schleife (im MP synchronisiert) Smyčka okkolního zvuku (synchronizováno v MP) Loop de sons ambientes (sincronizados através do MP) + Ambiens hangok folyamatossága (MP alatt szinkronizálva) \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 300445d482..394154a70b 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -74,6 +74,7 @@ Für Spielerschüsse, Luftwiderstand und Windeffekte Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek Para disparos do jogador, modelo de resistência de ar e efeitos de vento + Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás Allow MK6 Computer @@ -91,6 +92,7 @@ Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) + A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) Allow MK6 Compass diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index e811b3447c..56ca2e3a5f 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -116,6 +116,7 @@ Namensanzeigen Jmenovky Etiquetas de nome + Névcímkék Player Names View Dist. @@ -124,6 +125,7 @@ Spielernamen-Distanz Vzdálenost zobrazení jména hráčů Distância de visão dos nomes dos jogadores + Játékosok nevének látótávja Distance in meters at which player names are shown. Default: 5 @@ -132,6 +134,7 @@ Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 + Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 Show name tags for AI? @@ -140,6 +143,7 @@ Zeige Namensanzeigen für KI? Zobrazit jmenovky pro AI? Mostrar nomes para IA? + Névcímkék megjelenítése AI-nál? Show the name and rank tags for friendly AI units? Default: Do not force @@ -148,6 +152,7 @@ Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar + Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás Do Not Force @@ -156,6 +161,7 @@ Nicht erzwingen Nevynucovat Não forçar + Nincs felülbírálás Force Hide @@ -164,6 +170,7 @@ Verstecken erzwingen Vynuceno skrýt Ocultar forçado + Erőltetett rejtett Force Show @@ -172,6 +179,7 @@ Anzeigen erzwingen Vynuceno zobrazit Mostrar forçado + Erőltetett látható Show crew info? @@ -180,6 +188,7 @@ Zeige Besatzungsinfo? Zobrazit informace o posádce? Mostrar informação de tripulação? + Legénységi adatok megjelenítése? Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force @@ -188,6 +197,7 @@ Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. + A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás Show for Vehicles @@ -196,6 +206,7 @@ Zeige bei Fahrzeugen Zobrazit pro vozidla Mostrar para veículos + Mutatás járműveknél Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No @@ -212,6 +223,7 @@ Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. + Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. Disabled @@ -220,6 +232,7 @@ Deaktiviert Zakázáno Desativado + Letiltva Enabled @@ -228,6 +241,7 @@ Aktiviert Povoleno Ativado + Engedélyezve Only on Cursor @@ -236,6 +250,7 @@ Nur bei Maus Pouze na kurzor Somente no cursor + Csak kurzorra Only on Keypress @@ -244,6 +259,7 @@ Nur bei Tastendruck Pouze na klávesu Somente em tecla ativada + Csak gombnyomásra Only on Cursor and Keypress @@ -252,6 +268,7 @@ Nur Maus und Tastendruck Pouze na kurzor a klávesu Somente em cursor ou tecla ativada + Csak kurzorra és gombnyomásra Force Show Only on Cursor @@ -260,6 +277,7 @@ Vynuceno zobrazit pouze na kurzor Erzwinge nur mit Mauszeiger anzuzeigen Forçar mostrar somente no cursor + Erőltetett látható, csak kurzorra Force Show Only on Keypress @@ -268,6 +286,7 @@ Vynuceno zobrazit pouze na klávesu Erzwinge nur mit Tastendruck anzuzeigen Forçar somente mostrar em tecla ativada + Erőltetett látható, csak gombnyomásra Force Show Only on Cursor and Keypress @@ -276,6 +295,7 @@ Vynuceno zobrazit pouze na kurzor a klávesu Erzwinge nur mit Mauszeiger und Tastendruck anzuzeigen Forçar mostrar somente em cursor e tecla ativada + Erőltetett látható, csak kurzorra és gombnyomásra Use Nametag settings @@ -284,6 +304,7 @@ Verwende Namenanzeigen Použít nastavení jmenovky Usar ajustes de etiquetas de nome + Névcímkék beállításának használata Always Show All @@ -292,6 +313,7 @@ Immer alle zeigen Vždy zobrazit vše Sempre mostrar tudo + Mindig minden mutatása Show player names and set their activation. Default: Enabled @@ -300,6 +322,7 @@ Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno Erlaubt das Anzeigen von Spielernamen und stellt ein, ob sie standardmäßig aktiviert oder deaktiviert sind. Standard: aktiviert Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado + Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. @@ -308,6 +331,7 @@ Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. + Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. Nametags Size @@ -316,6 +340,7 @@ Velikost jmenovky Namensschildgröße Tamanho das etiquetas de nome + Névcímkék mérete Text and Icon Size Scaling @@ -324,6 +349,7 @@ Velikost textu a ikon Text- und Symbolgrößen Escala de tamanho dos ícones e textos + Szöveg és ikon méretének skálázása - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 74430baedc..b26bf6261a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -266,6 +266,7 @@ Erlaube alle Einstellungen in einer Server-Config zu exportieren. Povolit exportovat všechna nastavení do formátu server configu. Permitir exportação de todas as configurações para uma configuração formatada de servidor. + Az összes beállítás szerver-konfigurációba való exportálásának engedélyezése. When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. @@ -274,6 +275,7 @@ Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. + Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. Hide diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 2d0bc91314..71ef5a9704 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -32,6 +32,7 @@ Einheiten-Switch-System? Systém výměny stran Sistema de troca de unidades + Egységváltó-rendszer Switch to West? @@ -40,6 +41,7 @@ Nach BLUFOR wechseln? Přesunout k BLUFOR? Trocar para Oeste? + Átváltás BLUFOR-ra? Allow switching to west units? @@ -48,6 +50,7 @@ Erlaube das Wechseln zu BLUFOR-Einheiten? Povolit přesun k BLUFOR? Permitir troca de unidades para o Oeste? + Nyugat-fakciós egységekre való váltás engedélyezése? Switch to East? @@ -56,6 +59,7 @@ Nach OPFOR wechseln? Přesunout k OPFOR? Trocar para Leste? + Átváltás OPFOR-ra? Allow switching to east units? @@ -64,6 +68,7 @@ Erlaube das Wechseln zu OPFOR-Einheiten? Povolit přesun k OPFOR? Permitir troca de unidades para o Leste? + Kelet-fakciós egységekre való váltás engedélyezése? Switch to Independent? @@ -72,6 +77,7 @@ Nach INDFOR wechseln? Přesunout k INDFOR? Trocar para Indenpendente + Átváltás INDFOR-ra? Allow switching to independent units? @@ -80,6 +86,7 @@ Erlaube das Wechseln zu INDFOR-Einheiten? Povolit přesun k INDFOR? Permitir troca de unidades para o Indenpendente? + Független egységekre való váltás engedélyezése? Switch to Civilian? @@ -88,6 +95,7 @@ Nach CIVILIAN wechseln? Přesunout k CIVILISTŮM? Trocar para Civis? + Átváltás civilre? Allow switching to civilian units? @@ -96,6 +104,7 @@ Erlaube das Wechseln zu CIVILIAN-Einheiten? Povolit přesun k CIVILISTŮM? Permitir troca de unidades para o Civil? + Civil egységekre való váltás engedélyezése? Enable Safe Zone? @@ -104,6 +113,7 @@ Aktiviere Sicherheitszone? Povolit bezpečné oblasti? Habilitar zona segura? + Biztonságos zóna engedélyezése? Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. @@ -112,6 +122,7 @@ Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. + Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. Safe Zone Radius @@ -120,6 +131,7 @@ Sicherheitszonenradius Oblast bezpečné zóny Raio da zona segura + Biztonságos zóna hatóköre The safe zone around players from a different team. Default: 200 @@ -128,9 +140,9 @@ Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 + A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 200 - Moduł ten pozwala na zmianę strony w trakcie gry. Tento modul umožňuje přepínání mazi dostupnými stranami. Este módulo permite mudar o lado à disposição dos jogadores. diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 89a64faf8a..1d567fba62 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -180,6 +180,7 @@ Unverändert Jak je Como está + Úgy-ahogy Locked @@ -188,6 +189,7 @@ Gesperrt Zamčeno Fechado + Zárva Unlocked @@ -196,6 +198,7 @@ Offen Odemčeno Aberto + Nyitva Default Lockpick Strength diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index bdf96f35a0..f5757a55cc 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -8,6 +8,7 @@ Omezovač dohlednosti Sichtweitenbegrenzung Limitador de distância de visão + Látótáv-korlátozó Allows limiting maximum view distance that can be set by players. @@ -16,6 +17,7 @@ Umožňuje určit maximální dohlednost, kterou si může hráč nastavit Erlaubt das Einschränken der maximalen Sichtweite, welche von Spielern eingestellt werden kann. Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. + Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. Enable ACE viewdistance @@ -24,6 +26,7 @@ Povolit ACE dohlednost Aktiviere ACE-Sichtweite Habilitar distância de visão ACE + ACE látótávolság engedélyezése Enables ACE viewdistance @@ -32,6 +35,7 @@ Povolit ACE dohlednost Aktiviert ACE-Sichtweite Habilita a distância de visão ACE + Engedélyezi az ACE látótávolságot View Distance Limit @@ -40,6 +44,7 @@ Limit dohlednosti Sichtweitengrenze Limite da distância de visão + Látótáv-korlát Sets the limit for how high clients can raise their view distance (up to 10000) @@ -48,6 +53,7 @@ Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) Setze die Grenze fest, wie weit Spieler ihre Sichtweite erhöhen können (bis 10000) Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) + Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) Limit for client's view distance set here and can overridden by module @@ -56,6 +62,7 @@ Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. Stellt die Grenze für die Sichtweite des Spielers ein. Das kann von einem Modul überschrieben werden. Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. + A kliens látótávolsága itt állítható be, és felülbírálható modulok által Client View Distance (On Foot) @@ -64,6 +71,7 @@ Dohlednost (Pěšák) Spielersichtweite (zu Fuß) Distância de visão do cliente (A pé) + Kliens látótáv (gyalog) Changes in game view distance when the player is on foot. @@ -72,6 +80,7 @@ Změna dohlednosti pro hráče pokud jde po svých. Verändert die Sichtweite, wenn ein Spieler zu Fuß unterwegs ist. Muda a distância de visão do jogador dentro do jogo quando ele está a pé. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos gyalogosan van. Client View Distance (Land Vehicle) @@ -80,6 +89,7 @@ Dohlednost (Pozemní technika) Spielersichtweite (Landfahrzeuge) Distância de visão do cliente (Veículo terrestre) + Kliens látótáv (szárazföldi jármű) Changes in game view distance when the player is in a land vehicle. @@ -88,6 +98,7 @@ Změna dohlednosti pro hráče pokud je v pozemní technice. Verändert die Sichtweite, wenn ein Spieler in einem Landfahrzeug ist. Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. Client View Distance (Air Vehicle) @@ -96,6 +107,7 @@ Dohlednost (Vzdušná technika) Spielersichtweite (Luftfahrzeuge) Distância de visão do cliente (Veículo aéreo) + Kliens látótáv (légi jármű) Changes in game view distance when the player is in an air vehicle. @@ -104,6 +116,7 @@ Změna dohlednosti pro hráče pokud je ve vzdušné technice. Verändert die Sichtweite wenn ein Spieler in einem Luftfahrzeug ist. Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos légi járműben van. Dynamic Object View Distance @@ -112,6 +125,7 @@ Dynamická dohlednost objektů Dynamische Objektsichtweite Distância de visão dinâmica dos objetos + Dinamikus objektum-látótáv Sets the object view distance as a coefficient of the view distance. @@ -120,6 +134,7 @@ Nastaví objekt dohlednosti jako koeficient dohlednosti. Passt die Objektsichtweite dynamisch der Sichtweite an. Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. + Beállítja az objektum-látótávot a megadott látótáv koefficienseként. Off @@ -128,6 +143,7 @@ Vypnout Aus Desligado + Kikapcsolva Very Low @@ -136,6 +152,7 @@ Velmi málo Sehr niedrig Muito baixo + Minimális Low @@ -144,6 +161,7 @@ Málo Niedrig Baixo + Alacsony Medium @@ -152,6 +170,7 @@ Středně Mittel Médio + Közepes High @@ -160,6 +179,7 @@ Hodně Hoch Alto + Magas Very High @@ -168,6 +188,7 @@ Velmi hodně Sehr hoch Muito alto + Maximális View Distance: @@ -176,6 +197,7 @@ Dohlednost: Sichtweite: Distância de visão: + Látótávolság: Object View Distance is @@ -184,6 +206,7 @@ Dohlednost objektů je Objektsichtweite ist Distância de visão do objeto é + Az objektum-látótávolság: That option is invalid! The limit is @@ -192,6 +215,7 @@ Tato volba je neplatná! Limit je Diese Option ist ungültig! Die Grenze ist Essa opção é inválida. O limte é + Ez a beállítás érvénytelen! A maximum mennyiség Video Settings @@ -200,6 +224,7 @@ Nastavení videa Grafikeinstellungen Ajustes de vídeo + Videobeállítások - + \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 69e2d4a792..aa6243b519 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -20,6 +20,7 @@ Wetter Počasí Clima + Időjárás Multiplayer synchronized ACE weather module @@ -28,6 +29,7 @@ ACE-Wettermodul (synchron im Multiplayer) Synchronizovat ACE počasí v multiplayeru Módulo climático ACE para sincronismo multiplayer + Többjátékos szinkronizált ACE időjárás modul Weather propagation @@ -36,6 +38,7 @@ Wetterübertragung Změny počasí Propagação do clima + Időjárás-változás Enables server side weather propagation @@ -44,6 +47,7 @@ Aktiviere serverseitige Wetterübertragung Aktivuje změny počasí na straně serveru Ativa propagação de clima via server + Engedélyezi a szerveroldali időjárás-változást ACE Weather @@ -52,6 +56,7 @@ ACE-Wetter ACE počasí Clima ACE + ACE Időjárás Overrides the default weather (editor, mission settings) with ACE weather (map based) @@ -60,6 +65,7 @@ Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) + Felülbírálja az alapértelmezett időjárást (editor, küldetésbeállítások) az ACE időjárással (térkép-alapú) Sync Rain @@ -68,6 +74,7 @@ Regen synchronisieren Synchronizuj déšť Sincronizar chuva + Eső szinkronizálása Synchronizes rain @@ -76,6 +83,7 @@ Synchronisiert den Regen Synchronizace deště Sincroniza a chuva + Szinkronizálja az esőt Sync Wind @@ -84,6 +92,7 @@ Wind synchronisieren Synchronizuj vítr Sincronizar vento + Szél szinkronizálása Synchronizes wind @@ -92,6 +101,7 @@ Synchronisiert den Wind Synchronizace větru Sincroniza o vento + Szinkronizálja a szelet Sync Misc @@ -100,6 +110,7 @@ Sonstiges synchronisieren Synchronizuj různé Sincronizar outros + Egyéb szinkronizálása Synchronizes lightnings, rainbow, fog, ... @@ -108,6 +119,7 @@ Synchronisiert Blitze, Regenbögen, Nebel, ... Synchronizace blesků, duhy, mlhy, ... Sincroniza relâmpagos, arco-íris, neblina... + Szinkronizálja a villámokat, szivárványokat, ködöt, ... Update Interval @@ -116,6 +128,7 @@ Aktualisierungsintervall Interval aktualizace Intervalo de atualização + Frissítési intervallum Defines the interval (seconds) between weather updates @@ -124,6 +137,7 @@ Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen Určit interval (v sekundách) mezi aktualizacemi počasí Defina o intervalo (em segundos) entre as atualizações de clima + Megadja az intervallumot (másodpercben) az időjárás-frissítések között \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index f7b4324233..d643dbfd7f 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -108,6 +108,7 @@ Simulationsintervall Interval simulace Intervalo de simulação + Szimulációs intervallum Defines the interval between every calculation step @@ -116,6 +117,7 @@ Definiert das Intervall zwischen jedem Berechnungsschritt Určuje interval mezi každým výpočtem Define o intervalo entre cada cálculo + Megszabja a számítási lépések közötti intervallumot Simulation Radius @@ -124,6 +126,7 @@ Simulationsradius Oblast simulace Radio da Simulação + Szimulációs hatókör Defines the radius around the player (in meters) at which projectiles are wind deflected @@ -142,4 +145,4 @@ Influência do vento na trajetória dos projéteis - + \ No newline at end of file diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index 30887673e7..7a3a6bdef2 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -8,6 +8,7 @@ Yardage 450 Yardage 450 Yardage 450 + Yardage 450 Laser Rangefinder @@ -16,6 +17,7 @@ Telémetro láser Laserový dálkoměr Medidor de Distância a laser + Lézeres távolságmérő Yardage 450 - Power Button @@ -24,6 +26,7 @@ Yardage 450 - Botón de encendido Yardage 450 - Tlačítko napájení Yardage 450 - Botão de energia + Yardage 450 - Főkapcsoló gomb - + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 7c70978aa4..e4af41a208 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -8,6 +8,7 @@ Nastavení Zeuse Zeus-Einstellungen Ajustes do Zeus + Zeus beállítások Provides control over various aspects of Zeus. @@ -40,6 +41,7 @@ Orel Zeuse Zeus-Adler Águia do Zeus + Zeus sas Spawn an eagle that follows the Zeus camera. @@ -48,6 +50,7 @@ Vytvoří orla, který následuje kameru Zeuse. Erstelle einen Adler, der der Zeus-Kamera folgt. Cria uma águia que segue a câmera do Zeus + Lerak egy sast, ami követi a Zeus kamerát. Wind Sounds @@ -56,6 +59,7 @@ Zvuky větru Windgeräusche Sons de vento + Szélhangok Play wind sounds when Zeus remote controls a unit. @@ -72,6 +76,7 @@ Varování před dělostřelectvem Artilleriewarnung Aviso de explosivos + Tüzérségi figyelmeztetés Play a radio warning when Zeus uses ordnance. @@ -80,6 +85,7 @@ Přehrát varování (rádio) když Zeus použije dělostřelectvo. Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. Reproduz uma aviso via rádio quando o Zeus usa um explosivo. + Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. Reveal Mines @@ -88,6 +94,7 @@ Odhalit miny Enthülle Minen Revelar minas + Aknák feltárása Reveal mines to allies and place map markers. @@ -96,6 +103,7 @@ Odhalí miny pro spojence a umístnit jejich značku na mapu. Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. Revelar minas para aliados e colocar marcadores no mapa. + Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. Reveal to Allies @@ -104,6 +112,7 @@ Odhalit pro spojence An Verbündete weitergeben Revelar para aliados + Feltárás a szövetségeseknek Allies + Map Markers @@ -112,6 +121,7 @@ Spojenci + Značky na mapě Verbündete + Kartenmarkierungen Aliados + Marcadores no mapa + Szövetségesek + térkép jelölők Toggle Captive @@ -120,6 +130,7 @@ Přepnout - Vězeň Gefangennahme umschalten Alternar prisioneiro + Elfogott állapot váltása Toggle Surrender @@ -128,6 +139,7 @@ Přepnout - Vzdávání Aufgabe umschalten Alternar rendição + Kapituláló állapot váltása Toggle Unconscious @@ -136,6 +148,7 @@ Přepnout - Bezvědomí Bewusstlosigkeit umschalten Alternar inconsciência + Eszméletlen állapot váltása Unit must be alive @@ -168,6 +181,7 @@ Jednotka nemí být vězeň Einheit darf nicht gefangen sein Unidade não pode ser prisioneira + Csak elfogatlan egységeken használni Place on a unit @@ -188,6 +202,7 @@ Vyžaduje addon, který není přítomen Benötigt ein Addon, das nicht vorhanden ist Requer um addon que não está presente + Egy jelenleg hiányzó bővítményt igényel - + \ No newline at end of file From b2aa5eee45f601092061b11148707a78227d5bae Mon Sep 17 00:00:00 2001 From: Harakhti Date: Thu, 30 Jul 2015 16:28:50 +0200 Subject: [PATCH 010/620] Row 3 BINGO FUEL --- addons/slideshow/stringtable.xml | 13 +++++++++++++ addons/tripod/stringtable.xml | 10 +++++++--- addons/vehiclelock/stringtable.xml | 16 +++++++++++++--- addons/winddeflection/stringtable.xml | 7 +++++++ addons/zeus/stringtable.xml | 4 ++++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 63547c06e2..f9d96efe69 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -3,42 +3,55 @@ Slideshow + Vetítés This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. + Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. Objects + Objektumok Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. + Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. Controllers + Vezérlők Controller object names, separated by commas if multiple. + Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. Images + Képek List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). + A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) Interaction Names + Interakciós nevek List of names that will be used for interaction entries, separated by commas, in order of images. + Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. Slide Duration + Dia időtartam Duration of each slide. Default: 0 (Automatic Transitions Disabled) + A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) Slides + Diák \ No newline at end of file diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index caddca415f..fc74ed8b92 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -10,7 +10,7 @@ SSWT Kit SSWT souprava SSWT Kit - SSWT Kit + SSWT Készlet Kit SSWT @@ -22,7 +22,7 @@ Place SSWT Kit Rozlož souprava SSWT Place SSWT Kit - Place SSWT Kit + SSWT készlet elhelyezése Colocar kit SSWT @@ -32,6 +32,7 @@ Zvednout SSWT soupravu SSWT-Werkzeug aufheben Pegar kit SSWT + SSWT készlet felvétele Adjust SSWT Kit @@ -40,6 +41,7 @@ Regulovat SSWT soupravu SSWT-Werkzeug anpassen Ajustar kit SSWT + SSWT készlet állítása Done @@ -48,6 +50,7 @@ Hotovo Fertig Feito + Kész + Modifier, adjust @@ -56,6 +59,7 @@ + Modifikátor, regulace + Modifikator, anpassen + Modificador, ajuste + + Módosító, szabályzás - + \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 1d567fba62..c190117fd0 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -140,6 +140,7 @@ Fahrzeugsperreinstellungen Nastavení zámku vozidla Configuração de fechadura do veículo + Jármű-zár beállítás Lock Vehicle Inventory @@ -148,6 +149,7 @@ Sperre Fahrzeuginventar Inventář zamčeného vozidla Bloquear inventário do veículo + Jármű rakodótér zárás Locks the inventory of locked vehicles @@ -156,6 +158,7 @@ Sperrt das Inventar von gesperrten Fahrzeugen Zamknout inventář u zamčených vozidel Bloqueia o inventário de veículos fechados + Bezárja a zárt járművek rakterét is Vehicle Starting Lock State @@ -164,6 +167,7 @@ Fahrzeuge spawnen gesperrt Počáteční stav zámku vozidla Estado inicial da fechadura dos veículos + Jármű kezdő zár-állapot Set lock state for all vehicles (removes ambiguous lock states) @@ -172,6 +176,7 @@ Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) + Beállítja a zár-állapotot az összes járműhöz (eltávolítja az azonosíthatatlan zárállapotokat) As Is @@ -180,7 +185,7 @@ Unverändert Jak je Como está - Úgy-ahogy + Úgy-ahogy Locked @@ -189,7 +194,7 @@ Gesperrt Zamčeno Fechado - Zárva + Zárva Unlocked @@ -198,7 +203,7 @@ Offen Odemčeno Aberto - Nyitva + Nyitva Default Lockpick Strength @@ -207,6 +212,7 @@ Standard-Pick-Stärke Výchozí síla páčidla Durabilidade padrão da chave micha + Alapértelmezett zártörő-erősség Default Time to lockpick (in seconds). Default: 10 @@ -215,6 +221,7 @@ Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 Čas k vypáčení zámku (v sekundách). Výchozí: 10 Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 + Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo @@ -223,6 +230,7 @@ Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo + Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. <br />Forrás: vehiclelock.pbo Vehicle Key Assign @@ -231,6 +239,7 @@ Fahrzeugschlüsselzuweisung Přidělení klíče k vozidlu Atribuição de chave de veículo + Járműkulcs-osztás Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo @@ -239,6 +248,7 @@ Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo + Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. <br />Forrás: vehiclelock.pbo \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index d643dbfd7f..dd96760310 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -68,6 +68,7 @@ Účinky větru Windablenkung Desvio de vento + Szél-hárítás Wind Deflection @@ -76,6 +77,7 @@ Windablenkung Účinky větru Desvio de vento + Szél-hárítás Enables wind deflection @@ -84,6 +86,7 @@ Aktiviert Windablenkung Umožňit vliv větru Ativa o desvio de vento + Engedélyezi a szél-hárítást Vehicle Enabled @@ -92,6 +95,7 @@ Fahrzeuge aktiviert Vozidla povolena Ativado em veículos + Jármű engedélyezve Enables wind deflection for static/vehicle gunners @@ -100,6 +104,7 @@ Aktiviere Windablenkung für statische oder Fahrzeugschützen Umožnit vliv větru pro střelce z vozidla/statiky Ativa o desvio de vento para atiradores de estáticas e veículos + Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél Simulation Interval @@ -135,6 +140,7 @@ Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékeket háríthatja a szél Wind influence on projectiles trajectory @@ -143,6 +149,7 @@ Windeinfluss auf die Geschossbahnen Vítr ovlivňuje trajektorii projektilu Influência do vento na trajetória dos projéteis + Szél hatása a lövedékek röppályájára \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index e4af41a208..2246cd1786 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -17,6 +17,7 @@ Poskytuje kontrolu na různými aspekty Zeuse. Bietet die Steuerung verschiedener Zeus-Optionen an. Proporciona controle sobre diversos aspectos do Zeus. + Különböző beállítási lehetőségeket biztosít a Zeus részeihez. Ascension Messages @@ -25,6 +26,7 @@ Zpráva o novém Zeusovi Aufstiegsnachrichten Mensagens de ascensão + Felemelkedési üzenetek Display global popup messages when a player is assigned as Zeus. @@ -33,6 +35,7 @@ Zobrazit globální zprávu když je hráč přiřazen jako Zeus. Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. + Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. Zeus Eagle @@ -68,6 +71,7 @@ Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. + Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. Ordnance Warning From 33314f8a9e7675f7e6694ebf86062d9e02213924 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 31 Jul 2015 23:32:25 +0100 Subject: [PATCH 011/620] Adjust spectator camera boom speed Vertical camera movement (boom) was previously at a constant speed. However this felt too slow at times, half the horizontal (dolly) speed should improve this. --- addons/spectator/functions/fnc_handleInterface.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 864ae32adc..709c0263b2 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -224,7 +224,7 @@ switch (toLower _mode) do { [_display,nil,nil,true] call FUNC(toggleInterface); }; case 16: { // Q - GVAR(camBoom) = 0.5; + GVAR(camBoom) = 0.5 * GVAR(camSpeed); }; case 17: { // W GVAR(camDolly) set [1, GVAR(camSpeed)]; @@ -245,7 +245,7 @@ switch (toLower _mode) do { [_display,nil,true] call FUNC(toggleInterface); }; case 44: { // Z - GVAR(camBoom) = -0.5; + GVAR(camBoom) = -0.5 * GVAR(camSpeed); }; case 49: { // N if (_ctrl) then { From 861119f22fa2449bf77697a502ac46e246be9188 Mon Sep 17 00:00:00 2001 From: Harakhti Date: Sat, 1 Aug 2015 14:54:29 +0200 Subject: [PATCH 012/620] Sync rephrasing with upstream The humor wilts quickly. --- addons/finger/stringtable.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 57fab198fb..0b1b4f65d7 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -44,7 +44,7 @@ How far away players can finger each other. [default: 4] - Milyen messziről ujjazhatják egymást a játékosok. [alapértelmezett: 4] + A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] \ No newline at end of file From 612aa2d679515c0d74156c823852efe10083bf5a Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 1 Aug 2015 18:10:11 +0100 Subject: [PATCH 013/620] Separate spectator physical and virtual states With the changes planned to allow spectator in the true death state, physical changes aren't applicable in all of the possible usage cases. This separates the physical process into new function ace_spectator_fnc_stageSpectator --- addons/spectator/XEH_preInit.sqf | 1 + .../spectator/functions/fnc_setSpectator.sqf | 49 +++---------- .../functions/fnc_stageSpectator.sqf | 68 +++++++++++++++++++ 3 files changed, 77 insertions(+), 41 deletions(-) create mode 100644 addons/spectator/functions/fnc_stageSpectator.sqf diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index e5872c3272..2cc65602cc 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -16,6 +16,7 @@ PREP(handleUnits); PREP(moduleSpectatorSettings); PREP(setCameraAttributes); PREP(setSpectator); +PREP(stageSpectator); PREP(transitionCamera); PREP(toggleInterface); PREP(updateCameraModes); diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index fd3dd9861c..f4dc86c3da 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -1,10 +1,14 @@ /* * Author: SilentSpike - * Sets target unit to the given spectator state + * Sets target unit to the given spectator state (virtually) + * To physically handle a spectator see ace_spectator_fnc_stageSpectator + * + * Units will be able to communicate in ACRE/TFAR as appropriate + * The spectator interface will be opened/closed * * Arguments: * 0: Unit to put into spectator state - * 1: New spectator state + * 1: Spectator state * * Return Value: * None @@ -17,10 +21,7 @@ #include "script_component.hpp" -params ["_unit",["_set",true,[true]],["_target",objNull,[objNull]]]; - -// No change, no service (but allow spectators who respawn to be reset) -if !(_set || (_unit getVariable [QGVAR(isSpectator), false])) exitWith {}; +params ["_unit", ["_set",true,[true]]]; // Only run for player units if !(isPlayer _unit) exitWith {}; @@ -29,49 +30,15 @@ if !(local _unit) exitwith { [[_unit, _set, _target], QFUNC(setSpectator), _unit] call EFUNC(common,execRemoteFnc); }; -// Prevent player falling into water -_unit enableSimulation !_set; - -// Move to/from group as appropriate -[_unit, _set, QGVAR(isSpectator), side group _unit] call EFUNC(common,switchToGroupSide); - if (_set) then { - // Move and hide the player ASAP to avoid being seen - _unit setPos (getMarkerPos QGVAR(respawn)); - - // Ghosts can't talk - [_unit, QGVAR(isSpectator)] call EFUNC(common,hideUnit); - [_unit, QGVAR(isSpectator)] call EFUNC(common,muteUnit); - ["open"] call FUNC(handleInterface); } else { ["close"] call FUNC(handleInterface); - - // Physical beings can talk - [_unit, QGVAR(isSpectator)] call EFUNC(common,unhideUnit); - [_unit, QGVAR(isSpectator)] call EFUNC(common,unmuteUnit); - - private "_marker"; - _marker = ["respawn_west","respawn_east","respawn_guerrila","respawn_civilian"] select ([west,east,resistance,civilian] find (side group _unit)); - _unit setPos (getMarkerPos _marker); }; -// Enable/disable input as appropriate -//[QGVAR(isSpectator), _set] call EFUNC(common,setDisableUserInputStatus); - // Handle common addon audio if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableVolumeUpdate) = _set}; if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[_unit, _set] call TFAR_fnc_forceSpectator}; -// Spectators ignore damage (vanilla and ace_medical) -_unit allowDamage !_set; -_unit setVariable [QEGVAR(medical,allowDamage), !_set]; - -// No theoretical change if an existing spectator was reset -if !(_set && (_unit getVariable [QGVAR(isSpectator), false])) then { - // Mark spectator state for reference - _unit setVariable [QGVAR(isSpectator), _set, true]; - - ["spectatorChanged",[_set]] call EFUNC(common,localEvent); -}; +["spectatorSet",[_set]] call EFUNC(common,localEvent); diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf new file mode 100644 index 0000000000..2f6741e35a --- /dev/null +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -0,0 +1,68 @@ +/* + * Author: SilentSpike + * Sets target unit to the given spectator state (physically) + * To virtually handle a spectator see ace_spectator_fnc_setSpectator + * + * Units will be gathered at marker ace_spectator_respawn (or [0,0,0] by default) + * Upon unstage, units will be moved to the position they were in upon staging + * + * Arguments: + * 0: Unit to put into spectator stage + * 1: Spectator stage + * + * Return Value: + * None + * + * Example: + * [player, false] call ace_spectator_fnc_stageSpectator + * + * Public: Yes + */ + +#include "script_component.hpp" + +params ["_unit", ["_set",true,[true]]]; + +// No change, no service (but allow spectators who respawn to be reset) +if !(_set || (GETVAR(_unit,GVAR(isSpectator),false))) exitWith {}; + +// Only run for player units +if !(isPlayer _unit) exitWith {}; + +if !(local _unit) exitwith { + [[_unit, _set, _target], QFUNC(stageSpectator), _unit] call EFUNC(common,execRemoteFnc); +}; + +// Prevent player falling into water +_unit enableSimulation !_set; + +// Move to/from group as appropriate +[_unit, _set, QGVAR(isSpectator), side group _unit] call EFUNC(common,switchToGroupSide); + +if (_set) then { + // Move and hide the player ASAP to avoid being seen + GVAR(oldPos) = getPosATL _unit; + _unit setPos (getMarkerPos QGVAR(respawn)); + + // Ghosts can't talk + [_unit, QGVAR(isSpectator)] call EFUNC(common,hideUnit); + [_unit, QGVAR(isSpectator)] call EFUNC(common,muteUnit); +} else { + // Physical beings can talk + [_unit, QGVAR(isSpectator)] call EFUNC(common,unhideUnit); + [_unit, QGVAR(isSpectator)] call EFUNC(common,unmuteUnit); + + _unit setPosATL GVAR(oldPos); +}; + +// Spectators ignore damage (vanilla and ace_medical) +_unit allowDamage !_set; +_unit setVariable [QEGVAR(medical,allowDamage), !_set]; + +// No theoretical change if an existing spectator was reset +if !(_set isEqualTo (GETVAR(_unit,GVAR(isSpectator),false))) then { + // Mark spectator state for reference + _unit setVariable [QGVAR(isSpectator), _set, true]; + + ["spectatorStaged",[_set]] call EFUNC(common,localEvent); +}; From 38e08d513a91fe0c084ecfd2d8dfd575224961d2 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 2 Aug 2015 12:34:35 +0100 Subject: [PATCH 014/620] Clear spectator display variable at preInit uiNamespace persists between missions and should be reset on mission start --- addons/spectator/XEH_preInit.sqf | 2 ++ addons/spectator/functions/fnc_handleInterface.sqf | 8 ++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 2cc65602cc..a77d731478 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -38,6 +38,8 @@ GVAR(camUnit) = objNull; GVAR(camVision) = -2; GVAR(camZoom) = 1.25; +SETUVAR(GVAR(display),nil); + GVAR(showComp) = true; GVAR(showHelp) = true; GVAR(showIcons) = true; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 709c0263b2..2fa0d1439c 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -95,9 +95,7 @@ switch (toLower _mode) do { case "onload": { _args params ["_display"]; - with uiNamespace do { - GVAR(display) = _display; - }; + SETUVAR(GVAR(display),_display); // Always show interface and hide map upon opening [_display,nil,nil,!GVAR(showInterface),GVAR(showMap)] call FUNC(toggleInterface); @@ -151,9 +149,7 @@ switch (toLower _mode) do { //_display displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; }; case "onunload": { - with uiNamespace do { - GVAR(display) = nil; - }; + SETUVAR(GVAR(display),nil); GVAR(camHandler) = nil; GVAR(compHandler) = nil; From 63c034e348421d22a01e84f923841b48e76deebc Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 2 Aug 2015 12:47:26 +0100 Subject: [PATCH 015/620] Differentiate between staged and set spectators Existing variable "ace_spectator_isSpectator" split into counterparts "ace_spectator_isSet" and "ace_spectator_isStaged" in order to better manage spectator events --- addons/spectator/XEH_postInit.sqf | 2 +- .../spectator/functions/fnc_setSpectator.sqf | 11 ++++++++++- .../spectator/functions/fnc_stageSpectator.sqf | 18 +++++++++--------- addons/spectator/functions/fnc_updateUnits.sqf | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index bad3758c19..45ac78e89c 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -2,7 +2,7 @@ //#include "initKeybinds.sqf"; // Add interaction menu exception -["isNotSpectating", {!((_this select 0) getVariable [QGVAR(isSpectator), false])}] call EFUNC(common,addCanInteractWithCondition); +["isNotSpectating", {!(GETVAR((_this select 0),GVAR(isStaged),false))}] call EFUNC(common,addCanInteractWithCondition); ["SettingsInitialized", { GVAR(availableModes) = [[0,1,2], [1,2], [0], [1], [2]] select GVAR(restrictModes); diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index f4dc86c3da..2f8e1d3c2d 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -23,6 +23,9 @@ params ["_unit", ["_set",true,[true]]]; +// No change, no service (but allow spectators to be reset) +if !(_set || (GETVAR(_unit,GVAR(isSet),false))) exitWith {}; + // Only run for player units if !(isPlayer _unit) exitWith {}; @@ -41,4 +44,10 @@ if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableV if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[_unit, _set] call TFAR_fnc_forceSpectator}; -["spectatorSet",[_set]] call EFUNC(common,localEvent); +// No theoretical change if an existing spectator was reset +if !(_set isEqualTo (GETVAR(_unit,GVAR(isSet),false))) then { + // Mark spectator state for reference + _unit setVariable [QGVAR(isSet), _set, true]; + + ["spectatorSet",[_set]] call EFUNC(common,localEvent); +}; diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 2f6741e35a..84bd6ffced 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -23,8 +23,8 @@ params ["_unit", ["_set",true,[true]]]; -// No change, no service (but allow spectators who respawn to be reset) -if !(_set || (GETVAR(_unit,GVAR(isSpectator),false))) exitWith {}; +// No change, no service (but allow spectators to be reset) +if !(_set || (GETVAR(_unit,GVAR(isStaged),false))) exitWith {}; // Only run for player units if !(isPlayer _unit) exitWith {}; @@ -37,7 +37,7 @@ if !(local _unit) exitwith { _unit enableSimulation !_set; // Move to/from group as appropriate -[_unit, _set, QGVAR(isSpectator), side group _unit] call EFUNC(common,switchToGroupSide); +[_unit, _set, QGVAR(isStaged), side group _unit] call EFUNC(common,switchToGroupSide); if (_set) then { // Move and hide the player ASAP to avoid being seen @@ -45,12 +45,12 @@ if (_set) then { _unit setPos (getMarkerPos QGVAR(respawn)); // Ghosts can't talk - [_unit, QGVAR(isSpectator)] call EFUNC(common,hideUnit); - [_unit, QGVAR(isSpectator)] call EFUNC(common,muteUnit); + [_unit, QGVAR(isStaged)] call EFUNC(common,hideUnit); + [_unit, QGVAR(isStaged)] call EFUNC(common,muteUnit); } else { // Physical beings can talk - [_unit, QGVAR(isSpectator)] call EFUNC(common,unhideUnit); - [_unit, QGVAR(isSpectator)] call EFUNC(common,unmuteUnit); + [_unit, QGVAR(isStaged)] call EFUNC(common,unhideUnit); + [_unit, QGVAR(isStaged)] call EFUNC(common,unmuteUnit); _unit setPosATL GVAR(oldPos); }; @@ -60,9 +60,9 @@ _unit allowDamage !_set; _unit setVariable [QEGVAR(medical,allowDamage), !_set]; // No theoretical change if an existing spectator was reset -if !(_set isEqualTo (GETVAR(_unit,GVAR(isSpectator),false))) then { +if !(_set isEqualTo (GETVAR(_unit,GVAR(isStaged),false))) then { // Mark spectator state for reference - _unit setVariable [QGVAR(isSpectator), _set, true]; + _unit setVariable [QGVAR(isStaged), _set, true]; ["spectatorStaged",[_set]] call EFUNC(common,localEvent); }; diff --git a/addons/spectator/functions/fnc_updateUnits.sqf b/addons/spectator/functions/fnc_updateUnits.sqf index 0393fa0e36..ef8fc3b4f1 100644 --- a/addons/spectator/functions/fnc_updateUnits.sqf +++ b/addons/spectator/functions/fnc_updateUnits.sqf @@ -55,7 +55,7 @@ _filteredUnits = []; {(_x isKindOf "CAManBase")} && {(side group _x) in _sides} && // Side filter {simulationEnabled _x} && - {!(_x getVariable [QGVAR(isSpectator), false])} // Who watches the watchmen? + {!(_x getVariable [QGVAR(isStaged), false])} // Who watches the watchmen? ) then { _filteredUnits pushBack _x; }; From 52460182c9c662dacc76e27f21a5d9e8b37786e8 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 2 Aug 2015 16:42:24 +0100 Subject: [PATCH 016/620] Enable spectator on death system New spectator on death system should enter spectator mode upon dying and exit upon respawning. Only virtual spectator state is suitable for this system since the body should remain as is. --- addons/spectator/functions/fnc_handleKilled.sqf | 9 ++++----- addons/spectator/functions/fnc_handleRespawn.sqf | 6 +++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/addons/spectator/functions/fnc_handleKilled.sqf b/addons/spectator/functions/fnc_handleKilled.sqf index 67c556cc3f..05671ed749 100644 --- a/addons/spectator/functions/fnc_handleKilled.sqf +++ b/addons/spectator/functions/fnc_handleKilled.sqf @@ -1,7 +1,7 @@ /* * Author: SilentSpike - * Cache necessary details and process unit for spectator on death - * Part of the basic spectator system + * Set inital camera attributes and set as spectator on death + * Part of the spectator during death system * * Arguments: * 0: Corpse @@ -17,11 +17,10 @@ params ["_unit","_killer"]; -// Remove from group to prevent appearing on HUD upon respawn -[_unit, true, QGVAR(isSpectator), side group _unit] call EFUNC(common,switchToGroupSide); - if (isNull _killer) then { [2,_unit] call FUNC(setCameraAttributes); } else { [2,_killer] call FUNC(setCameraAttributes); }; + +[_unit] call FUNC(setSpectator); diff --git a/addons/spectator/functions/fnc_handleRespawn.sqf b/addons/spectator/functions/fnc_handleRespawn.sqf index 9b6b0bb802..3e7dfa41f3 100644 --- a/addons/spectator/functions/fnc_handleRespawn.sqf +++ b/addons/spectator/functions/fnc_handleRespawn.sqf @@ -1,7 +1,7 @@ /* * Author: SilentSpike - * Start the interface on respawn - * Part of the basic spectator system + * Un-set as spectator on respawn + * Part of the spectator during death system * * Arguments: * 0: New unit @@ -15,4 +15,4 @@ #include "script_component.hpp" -[_this select 0] call FUNC(setSpectator); +[_unit,false] call FUNC(setSpectator); From 9b764bbba45a3980114676842d07c260379c55c2 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 2 Aug 2015 17:27:32 +0100 Subject: [PATCH 017/620] Preserve Polish translations from master branch Since spectator was pushed back to a feature branch from the release branch these translations from a PR were also lost (as the commits were prior to the removal commit) when it was merged after the fact. --- addons/spectator/stringtable.xml | 70 +++++++++++++++++++++++++++++--- 1 file changed, 64 insertions(+), 6 deletions(-) diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 8b91608981..1f74d08c43 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -3,195 +3,253 @@ Spectator Settings + Ustawienia obserwatora Configure how the spectator system will operate by default. + Skonfiguruj domyślne ustawienia obserwatora. Spectate on death + Obserwator po śmierci Enables spectator upon death. + Włącz obserwatora po śmierci Unit filter + Filtr jednostek Method of filtering spectatable units. + Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. No units + Brak jednostek Only players + Tylko gracze All units + Wszystkie jednostki Side filter + Filtr stron Method of filtering spectatable sides. + Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. Player side + Strona gracza Friendly sides + Strony sojusznicze Hostile sides + Strony wrogie All sides + Wszystkie strony Camera modes + Tryby kamery Camera modes that can be used. + Tryby kamery, jakie mogą być używane. All + Wszystkie Free only + Tylko wolna Internal only + Tylko wewnętrzna External only + Tylko zewnętrzna Internal and external + Wewnętrzna i zewnętrzna Vision modes + Tryby wizji Vision modes that can be used. + Tryby wizji, jakie mogą być używane. Night vision + Noktowizja Thermal imaging + Termowizja Unit icons + Ikony jednostek Render icons above spectatable units. + Renderuj ikony nad głowami jednostek, które można obserwować. - Spectator Controls + Sterowanie obserwatorem Free + Wolna Internal + Wewnętrzna External + Zewnętrzna Normal + Normalna Night + Noc Thermal + Termo - Free Camera Controls + Wolne sterowanie kamerą Camera Forward + Kamera naprzód Camera Backward + Kamera w tył Camera Left + Kamera w lewo Camera Right + Kamera w prawo Camera Up + Kamera w górę Camera Down + Kamera w dół Pan Camera + Panoramowanie Dolly Camera + Płynna kamera Lock Camera to Target + Zablokuj kamerę na celu - Zoom In/Out + Zoom +/- + Zoom +/- - Speed Up/Down + Speed +/- + Prędkość +/- Next Vision Mode + Następny tryb wizji Previous Vision Mode + Poprzedni tryb wizji - Interface Controls + Sterowanie interfejsem Toggle Interface + Przełącz interfejs Toggle Unit Icons + Przełącz ikony jednostek Toggle Unit List + Przełącz listę jednostek Toggle Toolbar + Przełącz pasek narzędzi Toggle Compass + Przełącz kompas Toggle Map + Przełącz mapę Toggle Help + Przełącz pomoc - Other Controls + Pozostałe sterowanie Next Camera + Następna kamera Previous Camera + Poprzednia kamera Next Unit + Następna jednostka Previous Unit + Poprzednia jednostka From b87b4ea16aba273aca2ad287239bd45f60c890c5 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 3 Aug 2015 00:22:50 +0100 Subject: [PATCH 018/620] Improve spectator GUI reopening prevention Using boolean instead of simply checking for the display. Checking for diplay was unreliable since it can be technically closed while theoretically open during the escape menu and such. --- addons/spectator/XEH_preInit.sqf | 2 +- addons/spectator/functions/fnc_handleInterface.sqf | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index a77d731478..3b317ba904 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -38,7 +38,7 @@ GVAR(camUnit) = objNull; GVAR(camVision) = -2; GVAR(camZoom) = 1.25; -SETUVAR(GVAR(display),nil); +GVAR(open) = false; GVAR(showComp) = true; GVAR(showHelp) = true; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 2fa0d1439c..114f4e163b 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -23,7 +23,8 @@ switch (toLower _mode) do { // Safely open/close the interface case "open": { // Prevent reopening - if !(isNull (GETUVAR(GVAR(display),displayNull))) exitWith {}; + if (GVAR(open)) exitWith {}; + GVAR(open) = true; // Initalize camera variables GVAR(camBoom) = 0; @@ -57,13 +58,13 @@ switch (toLower _mode) do { }; case "close": { // Can't close a second time - if (isNull (GETUVAR(GVAR(display),displayNull))) exitWith {}; + if !(GVAR(open)) exitWith {}; + GVAR(open) = false; // Terminate interface while {dialog} do { closeDialog 0; }; - GETUVAR(GVAR(display),displayNull) closeDisplay 0; // Terminate camera GVAR(camera) cameraEffect ["terminate", "back"]; @@ -95,8 +96,6 @@ switch (toLower _mode) do { case "onload": { _args params ["_display"]; - SETUVAR(GVAR(display),_display); - // Always show interface and hide map upon opening [_display,nil,nil,!GVAR(showInterface),GVAR(showMap)] call FUNC(toggleInterface); @@ -149,8 +148,7 @@ switch (toLower _mode) do { //_display displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; }; case "onunload": { - SETUVAR(GVAR(display),nil); - + // Kill GUI PFHs GVAR(camHandler) = nil; GVAR(compHandler) = nil; GVAR(iconHandler) = nil; From 98b088f26f717d172c3bdb5e1a0695412ce38c5a Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 3 Aug 2015 00:24:36 +0100 Subject: [PATCH 019/620] Fix pre-spectator position saving When staging a spectator (physically applying the spectator state) the unit position is saved for potential later restoration. This shouldn't be done multiple times since the function can be called again to reset staged units. --- addons/spectator/functions/fnc_handleRespawn.sqf | 2 ++ addons/spectator/functions/fnc_stageSpectator.sqf | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/addons/spectator/functions/fnc_handleRespawn.sqf b/addons/spectator/functions/fnc_handleRespawn.sqf index 3e7dfa41f3..aa695dd553 100644 --- a/addons/spectator/functions/fnc_handleRespawn.sqf +++ b/addons/spectator/functions/fnc_handleRespawn.sqf @@ -15,4 +15,6 @@ #include "script_component.hpp" +params ["_unit","_oldUnit"]; + [_unit,false] call FUNC(setSpectator); diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 84bd6ffced..bac5174601 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -40,13 +40,16 @@ _unit enableSimulation !_set; [_unit, _set, QGVAR(isStaged), side group _unit] call EFUNC(common,switchToGroupSide); if (_set) then { - // Move and hide the player ASAP to avoid being seen - GVAR(oldPos) = getPosATL _unit; - _unit setPos (getMarkerPos QGVAR(respawn)); + // Position should only be saved on first entry + if !(GETVAR(_unit,GVAR(isStaged),false)) then { + GVAR(oldPos) = getPosATL _unit; + }; // Ghosts can't talk [_unit, QGVAR(isStaged)] call EFUNC(common,hideUnit); [_unit, QGVAR(isStaged)] call EFUNC(common,muteUnit); + + _unit setPos (getMarkerPos QGVAR(respawn)); } else { // Physical beings can talk [_unit, QGVAR(isStaged)] call EFUNC(common,unhideUnit); From f5e7185aec965d0166cf8cae2e85a6b81d717a44 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 3 Aug 2015 13:04:36 +0100 Subject: [PATCH 020/620] Fix spectator camera exiting mechanism When using ACE_Player the camera would return to the dead body. It makes sense to simply pass the reset unit by reference to the camera exit code. --- addons/spectator/functions/fnc_handleInterface.sqf | 4 +++- addons/spectator/functions/fnc_setSpectator.sqf | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 114f4e163b..255d282983 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -57,6 +57,8 @@ switch (toLower _mode) do { }; }; case "close": { + _args params ["_unit"]; + // Can't close a second time if !(GVAR(open)) exitWith {}; GVAR(open) = false; @@ -71,7 +73,7 @@ switch (toLower _mode) do { camDestroy GVAR(camera); // Return to player view - ACE_Player switchCamera "internal"; + _unit switchCamera "internal"; // Cleanup camera variables GVAR(camera) = nil; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 2f8e1d3c2d..b6e85926c5 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -36,7 +36,7 @@ if !(local _unit) exitwith { if (_set) then { ["open"] call FUNC(handleInterface); } else { - ["close"] call FUNC(handleInterface); + ["close",_unit] call FUNC(handleInterface); }; // Handle common addon audio From 5bfa4e597113356d534d28cef9b5dc011b761e6f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 3 Aug 2015 15:18:09 +0100 Subject: [PATCH 021/620] Improve spectator camera vision mode on start The spectator camera should start in night vision mode if the sun to moon transition state is appropriate --- addons/spectator/functions/fnc_handleInterface.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 255d282983..315398ab0c 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -37,6 +37,11 @@ switch (toLower _mode) do { GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; + // Camera starts with night vision if it's dark + if (sunOrMoon < 1) then { + [nil,nil,-1] call FUNC(setCameraAttributes); + }; + // Initalize the camera view GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); [] call FUNC(transitionCamera); From 7e9500f2ca6a240458b16031153565ff8e451efa Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 3 Aug 2015 21:38:44 +0100 Subject: [PATCH 022/620] Enable ace_spectator respawn framework integration Seamlessly integrates the spectator system with the vanilla respawn framework when the onDeath setting is enabled. This commit makes a lot of changes: - Edit BI functions used by the vanilla respawn framework to enable support for ace_spectator. - Set spectator state is now tracked using a GVAR for the local player since using a unit won't be reliable all of the time. However unit is still marked for any filtering purposes. - Instead of NV being used based on the sun to moon transition state by default, that functionality only takes place in the integrated system so that custom frameworks can do what they want. - Seagull units are hidden when using framework integration since they're spawned by the engine with respawn type 1 and they just hang around undesirably --- addons/spectator/XEH_postInit.sqf | 7 - addons/spectator/XEH_preInit.sqf | 12 +- addons/spectator/config.cpp | 35 +++ .../functions/fnc_bi_respawnBase.sqf | 35 +++ .../functions/fnc_bi_respawnCounter.sqf | 35 +++ .../functions/fnc_bi_respawnEndMission.sqf | 62 ++++ .../functions/fnc_bi_respawnInstant.sqf | 35 +++ .../functions/fnc_bi_respawnNone.sqf | 293 ++++++++++++++++++ .../functions/fnc_bi_respawnSeagull.sqf | 101 ++++++ .../functions/fnc_bi_respawnSpectator.sqf | 59 ++++ .../functions/fnc_bi_respawnWave.sqf | 43 +++ .../functions/fnc_handleInterface.sqf | 22 +- .../spectator/functions/fnc_handleKilled.sqf | 26 -- .../spectator/functions/fnc_handleRespawn.sqf | 20 -- .../functions/fnc_setCameraAttributes.sqf | 2 +- .../spectator/functions/fnc_setSpectator.sqf | 31 +- .../functions/fnc_stageSpectator.sqf | 4 +- 17 files changed, 736 insertions(+), 86 deletions(-) create mode 100644 addons/spectator/functions/fnc_bi_respawnBase.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnCounter.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnEndMission.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnInstant.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnNone.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnSeagull.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnSpectator.sqf create mode 100644 addons/spectator/functions/fnc_bi_respawnWave.sqf delete mode 100644 addons/spectator/functions/fnc_handleKilled.sqf delete mode 100644 addons/spectator/functions/fnc_handleRespawn.sqf diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 45ac78e89c..35b463837f 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -7,11 +7,4 @@ ["SettingsInitialized", { GVAR(availableModes) = [[0,1,2], [1,2], [0], [1], [2]] select GVAR(restrictModes); GVAR(availableVisions) = [[-2,-1,0,1], [-2,-1], [-2,0,1], [-2]] select GVAR(restrictVisions); - - if !(hasInterface) exitWith {}; - - if (GVAR(onDeath)) then { - player addEventHandler ["Killed",FUNC(handleKilled)]; - player addEventHandler ["Respawn",FUNC(handleRespawn)]; - }; }] call EFUNC(common,addEventHandler); diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 3b317ba904..73c629a0ce 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -2,15 +2,21 @@ ADDON = false; +PREP(bi_respawnBase); +PREP(bi_respawnCounter); +PREP(bi_respawnEndMission); +PREP(bi_respawnInstant); +PREP(bi_respawnNone); +PREP(bi_respawnSeagull); +PREP(bi_respawnSpectator); +PREP(bi_respawnWave); PREP(cacheUnitInfo); PREP(cycleCamera); PREP(handleCamera); PREP(handleCompass); PREP(handleIcons); PREP(handleInterface); -PREP(handleKilled); PREP(handleMouse); -PREP(handleRespawn); PREP(handleToolbar); PREP(handleUnits); PREP(moduleSpectatorSettings); @@ -38,7 +44,7 @@ GVAR(camUnit) = objNull; GVAR(camVision) = -2; GVAR(camZoom) = 1.25; -GVAR(open) = false; +GVAR(isSet) = false; GVAR(showComp) = true; GVAR(showHelp) = true; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index e686c75294..eb73761e5f 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -16,3 +16,38 @@ class CfgPatches { #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" #include "ui\interface.hpp" + +class CfgRespawnTemplates { + class None { + onPlayerKilled = QFUNC(bi_respawnNone); + }; + class Spectator { + onPlayerKilled = QFUNC(bi_respawnSpectator); + onPlayerRespawn = QFUNC(bi_respawnSpectator); + }; + class Instant { + onPlayerKilled = QFUNC(bi_respawnInstant); + onPlayerRespawn = QFUNC(bi_respawnInstant); + }; + class Base { + onPlayerKilled = QFUNC(bi_respawnBase); + onPlayerRespawn = QFUNC(bi_respawnBase); + }; + class EndMission + { + onPlayerKilled = QFUNC(bi_respawnEndMission); + onPlayerRespawn = QFUNC(bi_respawnEndMission); + }; + class Seagull { + onPlayerRespawn = QFUNC(bi_respawnSeagull); + }; + class Wave + { + onPlayerKilled = QFUNC(bi_respawnWave); + onPlayerRespawn = QFUNC(bi_respawnWave); + }; + class Counter { + onPlayerKilled = QFUNC(bi_respawnCounter); + onPlayerRespawn = QFUNC(bi_respawnCounter); + }; +}; diff --git a/addons/spectator/functions/fnc_bi_respawnBase.sqf b/addons/spectator/functions/fnc_bi_respawnBase.sqf new file mode 100644 index 0000000000..7ea5b0c745 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnBase.sqf @@ -0,0 +1,35 @@ +/* + * Author: Bohemia Interactive + * Part of the BI respawn framework + * Handles base respawn type (respawn on marker) + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +if !(GVAR(onDeath)) exitWith {}; + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; + +if (alive _unit) then { + [_unit,false] call FUNC(setSpectator); +} else { + private ["_vision","_pos"]; + if (isNull _killer) then {_killer = _unit}; + _vision = [-2,-1] select (sunOrMoon < 1); + _pos = (getPosATL _unit) vectorAdd [0,0,5]; + + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); +}; diff --git a/addons/spectator/functions/fnc_bi_respawnCounter.sqf b/addons/spectator/functions/fnc_bi_respawnCounter.sqf new file mode 100644 index 0000000000..0bee90ec61 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnCounter.sqf @@ -0,0 +1,35 @@ +/* + * Author: Bohemia Interactive (Karel Moricky) + * Part of the BI respawn framework + * Handles the respawn timer display + * Edited to disable counter when spectator is opened + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +_player = [_this,0,objNull,[objnull]] call bis_fnc_param; + +_respawnDelay = [_this,3,0,[0]] call bis_fnc_param; + +if (!isplayer _player && !isnull _player && _respawnDelay > 0) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; + +//--- Engine-triggered respawn +_layer = "BIS_fnc_respawnCounter" call bis_fnc_rscLayer; + +if (!alive _player) then { + if (GVAR(onDeath) || (playerrespawntime < 1)) exitwith {}; + _layer cutrsc ["RscRespawnCounter","plain"]; +} else { + _layer cuttext ["","plain"]; +}; diff --git a/addons/spectator/functions/fnc_bi_respawnEndMission.sqf b/addons/spectator/functions/fnc_bi_respawnEndMission.sqf new file mode 100644 index 0000000000..23b8dacc17 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnEndMission.sqf @@ -0,0 +1,62 @@ +/* + * Author: Bohemia Interactive (Karel Moricky) + * Part of the BI respawn framework + * Ends the mission when all players are dead + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; +private ["_vision","_pos"]; + +if (isNull _killer) then {_killer = _unit}; +_vision = [-2,-1] select (sunOrMoon < 1); +_pos = (getPosATL _unit) vectorAdd [0,0,5]; + +if (ismultiplayer) then { + + _respawnType = 0 call bis_fnc_missionRespawnType; + if (_respawnType in [0,1,4,5]) then { + + //--- No more respawn slots + if ({isplayer _x && alive _x} count playableunits == 0) then { + [["endDeath",false],"bis_fnc_endmission"] call bis_fnc_mp; + } else { + if (GVAR(onDeath) && (_respawnType in [0,1])) then { + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + }; + }; + + //--- Don't end the script to prevent premature mission end + waituntil {false}; + } else { + + if (!alive _unit) then { + + //--- No more respawn tickets + if ([] call bis_fnc_respawntickets == 0 && {isplayer _x} count playableunits == 0) then { + [["endDeath",false],"bis_fnc_endmission"] call bis_fnc_mp; + } else { + if (GVAR(onDeath)) then { + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + }; + }; + } else { + [_unit,false] call FUNC(setSpectator); + }; + }; +}; diff --git a/addons/spectator/functions/fnc_bi_respawnInstant.sqf b/addons/spectator/functions/fnc_bi_respawnInstant.sqf new file mode 100644 index 0000000000..fd1d255cf9 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnInstant.sqf @@ -0,0 +1,35 @@ +/* + * Author: Bohemia Interactive + * Part of the BI respawn framework + * Handles instant respawn type (respawn at position of death) + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +if !(GVAR(onDeath)) exitWith {}; + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; + +if (alive _unit) then { + [_unit,false] call FUNC(setSpectator); +} else { + private ["_vision","_pos"]; + if (isNull _killer) then {_killer = _unit}; + _vision = [-2,-1] select (sunOrMoon < 1); + _pos = (getPosATL _unit) vectorAdd [0,0,5]; + + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); +}; diff --git a/addons/spectator/functions/fnc_bi_respawnNone.sqf b/addons/spectator/functions/fnc_bi_respawnNone.sqf new file mode 100644 index 0000000000..a5031a8fd9 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnNone.sqf @@ -0,0 +1,293 @@ +/* + * Author: Bohemia Interactive (Karel Moricky) + * Part of the BI respawn framework + * Shows death screen for respawn type "None" + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse + * 1: Killer + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ +private ["_soundvolume","_musicvolume"]; + +#define BI_CONTROL (_display displayctrl _n) + +#include "script_component.hpp" + +disableserialization; +_player = _this select 0; +_killer = _this select 1; +if (isnull _killer) then {_killer = _player}; + +_musicvolume = musicvolume; +_soundvolume = soundvolume; //MUF-TODO: check if this is done before sound is faded in fn_feedbackMain.fsm + +_start = isnil "bis_fnc_respawnNone_start"; +if (_start) then { + bis_fnc_respawnNone_start = [daytime,time / 3600]; + + //3.5 fadesound 0; //MUF-commented + + sleep 2; + if (alive player) exitwith {}; + cutText ["","BLACK OUT",1]; + sleep 1.5; + BIS_fnc_feedback_allowPP = false; //MUF-switch health PP off + //(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",1];//MUF-black in (remove black screen that was launched in FSM PP) + + if (ismultiplayer) then { + if (GVAR(onDeath)) then { + private ["_vision","_pos"]; + _vision = [-2,-1] select (sunOrMoon < 1); + _pos = (getPosATL _player) vectorAdd [0,0,5]; + + [2,_killer,_vision,_pos,getDir _player] call FUNC(setCameraAttributes); + [_player] call FUNC(setSpectator); + } else { + (finddisplay 46) createdisplay "RscDisplayMissionEnd"; + }; + } else {enableenddialog}; +}; +if (alive player) exitwith { + [player,false] call FUNC(setSpectator); + cuttext ["","plain"]; +}; //--- Terminate when player manages to switch do different unit already + +if (GVAR(onDeath)) exitWith {}; + +waituntil {!isnull (finddisplay 58)}; +_display = finddisplay 58; + +//--- Black fade in +_n = 1060; +BI_CONTROL ctrlsetfade 1; +if (_start) then { + + //--- Play ambient radio + setacctime 1; + 0 fademusic 0; + 4 fademusic 0.8; + playmusic format ['RadioAmbient%1',ceil random 1/*30*/]; + _musicEH = addMusicEventHandler ["MusicStop",{[] spawn {playmusic format ['RadioAmbient%1',ceil random 1/*30*/];};}]; + uinamespace setvariable ["bis_fnc_respawnNone_musicEH",_musicEH]; + _display displayaddeventhandler ["unload","removeMusicEventHandler ['MusicStop',uinamespace getvariable ['bis_fnc_respawnNone_musicEH',-1]];"]; + + BI_CONTROL ctrlcommit 4; +} else { + BI_CONTROL ctrlcommit 0; +}; +cuttext ["","plain"]; + +//--- HUD +_n = 5800; +BI_CONTROL ctrlsettext gettext (configfile >> "cfgingameui" >> "cursor" >> "select"); +BI_CONTROL ctrlsetposition [-10,-10,safezoneH * 0.07 * 3/4,safezoneH * 0.07]; +BI_CONTROL ctrlsettextcolor [1,1,1,1]; +BI_CONTROL ctrlcommit 0; + +//--- SITREP (ToDO: Localize) +_sitrep = "SITREP||"; +if (name _player != "Error: No unit") then { + _sitrep = _sitrep + "KIA: %4. %5|"; +}; +_sitrep = _sitrep + "TOD: %2 [%3]|LOC: %6 \ %7"; +if (_killer != _player) then { + _sitrep = _sitrep + "||ENY: %8"; + if (currentweapon _killer != "") then { + _sitrep = _sitrep + "|ENW: %9" + }; +}; +_sitrep = format [ + _sitrep, + 1 * safezoneH, + [bis_fnc_respawnNone_start select 0,"HH:MM:SS"] call bis_fnc_timetostring, + [bis_fnc_respawnNone_start select 1,"HH:MM:SS"] call bis_fnc_timetostring, + toupper localize format ["STR_SHORT_%1",rank _player], + toupper name _player, + mapGridPosition _player, + toupper worldname, + toupper ((configfile >> "cfgvehicles" >> typeof _killer) call bis_fnc_displayname), + toupper ((configfile >> "cfgweapons" >> currentweapon _killer) call bis_fnc_displayname) + +]; + +_n = 11000; +_bcgPos = ctrlposition BI_CONTROL; +_n = 5858; +//BI_CONTROL ctrlsetposition [_bcgPos select 0,safezoneY + ((_bcgPos select 0) - safezoneX) * 4/3,safezoneW - 2 * (_bcgPos select 2),safezoneH / 2]; +BI_CONTROL ctrlsetposition [(((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX), + ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY), + safezoneW - 2 * (_bcgPos select 2), + safezoneH / 2]; +BI_CONTROL ctrlcommit 0; +[BI_CONTROL,_sitrep] spawn { + scriptname "bis_fnc_respawnNone: SITREP"; + disableserialization; + _control = _this select 0; + _sitrepArray = toarray (_this select 1); + {_sitrepArray set [_foreachindex,tostring [_x]]} foreach _sitrepArray; + _sitrep = ""; + //_sitrepFormat = "%1"; + _sitrepFormat = "%1"; + + sleep 1; + for "_i" from 0 to (count _sitrepArray - 1) do { + _letter = _sitrepArray select _i; + _delay = if (_letter == "|") then {_letter = "
"; 1} else {0.01}; + _sitrep = _sitrep + _letter; + _control ctrlsetstructuredtext parsetext format [_sitrepFormat,_sitrep + "_"]; + //playsound ["IncomingChallenge",true]; + sleep _delay; + if (isnull _control) exitwith {}; + }; + _control ctrlsetstructuredtext parsetext format [_sitrepFormat,_sitrep]; +}; + + +//--- Create UAV camera +_camera = "camera" camcreate position player; +_camera cameraeffect ["internal","back"]; +_camera campreparefov 0.4; +_camera campreparetarget _killer; +showcinemaborder false; + +//--- Set PP effects +_saturation = 0.0 + random 0.3; +_ppColor = ppEffectCreate ["ColorCorrections", 1999]; +_ppColor ppEffectEnable true; +_ppColor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1 - _saturation, 1 - _saturation, 1 - _saturation, _saturation], [1, 0.25, 0, 1.0]]; +_ppColor ppEffectCommit 0; + +_ppGrain = ppEffectCreate ["filmGrain", 2012]; +_ppGrain ppEffectEnable true; +_ppGrain ppEffectAdjust [random 0.2, 1, 1, 0, 1]; +_ppGrain ppEffectCommit 0; + +//--- Camera update executed every frame +bis_fnc_respawnNone_player = _player; +bis_fnc_respawnNone_killer = _killer; +bis_fnc_respawnNone_camera = _camera; +bis_fnc_respawnNone_loop = { + scriptname "bis_fnc_respawnNone: camera"; + _display = _this select 0; + _player = bis_fnc_respawnNone_player; + _killer = bis_fnc_respawnNone_killer; + _camera = bis_fnc_respawnNone_camera; + + _sin = 20 * sin (time * 7); + _killerPos = [ + (visiblepositionasl _killer select 0), + (visiblepositionasl _killer select 1) + (_sin), + (visiblepositionasl _killer select 2) + (_sin) + ]; + + _dirToKiller = if (_killer == _player) then { + direction _player; + } else { + ([_player,_killerPos] call bis_fnc_dirto) + _sin; + }; + _pos = [ + visiblepositionasl _player, + -20, + _dirToKiller + ] call bis_fnc_relpos; + _pos set [2,((_pos select 2) + 7) max (getterrainheightasl _pos + 7)]; + + //--- Pitch + _heightCamera = getterrainheightasl _pos; + _heightKiller = getterrainheightasl _killerPos; + _height = _heightCamera - _heightKiller; + _dis = _killerPos distance _pos; + _angle = (asin (_height/_dis)); + + _camera setdir _dirtokiller; + [_camera,-_angle,_sin] call bis_fnc_setpitchbank; + _camera setposasl _pos; + + //--- HUD + _n = 5800; + _hudPos = (worldtoscreen position _player); + if (count _hudPos > 0) then { + _hudPosW = ctrlposition BI_CONTROL select 2; + _hudPosH = ctrlposition BI_CONTROL select 3; + _hudPos = [ + (_hudPos select 0) - _hudPosW / 2, + (_hudPos select 1) - _hudPosH / 2, + _hudPosW, + _hudPosH + ]; + BI_CONTROL ctrlsetposition _hudPos; + BI_CONTROL ctrlcommit 0; + }; +}; + +bis_fnc_respawnNone_keydown = { + _key = _this select 1; + + if (_key in (actionkeys 'nightvision') || _key < 0) then { + bis_fnc_respawnNone_vision = bis_fnc_respawnNone_vision + 1; + _vision = bis_fnc_respawnNone_vision % 4; + switch (_vision) do { + case 0: { + camusenvg false; + call compile 'false SetCamUseTi 0'; + }; + case 1: { + camusenvg true; + call compile 'false SetCamUseTi 0'; + }; + case 2: { + camusenvg false; + call compile 'true SetCamUseTi 0'; + }; + case 3: { + camusenvg false; + call compile 'true SetCamUseTi 1'; + }; + }; + }; +}; +//bis_fnc_respawnNone_vision = (1 + floor random 3) % 4; //--- Random vision (not NVG) +bis_fnc_respawnNone_vision = -1; +if (sunormoon < 1) then {bis_fnc_respawnNone_vision = 0;}; +[-1,-1] call bis_fnc_respawnNone_keydown; + +_display displayaddeventhandler ["mousemoving","_this call bis_fnc_respawnNone_loop"]; +_display displayaddeventhandler ["mouseholding","_this call bis_fnc_respawnNone_loop"]; +_display displayaddeventhandler ["keydown","_this call bis_fnc_respawnNone_keydown"]; + + +//--- Team Switch display opened +waituntil {isnull _display}; +_displayTeamSwitch = finddisplay 632; + +//--- Team Switch display closed - cleanup and restart the view +waituntil {isnull _displayTeamSwitch}; + +_camera cameraeffect ["terminate","back"]; +camdestroy _camera; + +bis_fnc_respawnNone_player = nil; +bis_fnc_respawnNone_killer = nil; +bis_fnc_respawnNone_camera = nil; +bis_fnc_respawnNone_loop = nil; + +ppeffectdestroy _ppColor; +ppeffectdestroy _ppGrain; + +if (!alive player) exitwith {_this call bis_fnc_respawnNone;}; + + +//--- Resurrection! +BIS_fnc_feedback_allowPP = true; +0 fadesound _soundvolume; +0 fademusic _musicvolume; +playmusic ""; +bis_fnc_respawnNone_start = nil; diff --git a/addons/spectator/functions/fnc_bi_respawnSeagull.sqf b/addons/spectator/functions/fnc_bi_respawnSeagull.sqf new file mode 100644 index 0000000000..2e01ffa6ea --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnSeagull.sqf @@ -0,0 +1,101 @@ +/* + * Author: Bohemia Interactive + * Part of the BI respawn framework + * Correctly handles seagull respawn (not used by default) + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +_seagull = _this select 0; +_player = _this select 1; +_this call bis_fnc_log; + +if (!isplayer _player && !isplayer _seagull) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; + +waituntil {missionnamespace getvariable ["BIS_fnc_feedback_allowDeathScreen",true]}; +BIS_fnc_feedback_allowPP = false; +//(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",8]; + +if (GVAR(onDeath)) exitWith { + private ["_vision","_pos"]; + + if (isNull _player) then {_player = _seagull}; + _vision = [-2,-1] select (sunOrMoon < 1); + _pos = (getPosATL _player) vectorAdd [0,0,5]; + + [_seagull,QGVAR(isSeagull)] call EFUNC(common,hideUnit); + [2,_player,_vision,_pos,getDir _seagull] call FUNC(setCameraAttributes); + [_seagull] call FUNC(setSpectator); +}; + +_camera = "camera" camCreate [(position _player select 0)-0.75, (position _player select 1)-0.75,(position _player select 2) + 0.5]; +_camera cameraEffect ["internal","back"]; +_camera camSetFOV 0.800; +_camera camCommit 0; +waituntil {camCommitted _camera}; + +0 fadeMusic 0.5; +playMusic "Track06_Abandoned_Battlespace"; + +_camera camSetTarget vehicle _player; +_camera camSetRelPos [-0.82,-3.12,3.38]; +_camera camSetFOV 0.800; +_camera camCommit 7; + +sleep 1; +_preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (2 preloadObject _this)}}; +sleep 5; +waituntil {camCommitted _camera}; + +_camera camSetRelPos [1.17,-21.71,2.07]; +_camera camSetFOV 0.400; +_camera camCommit 10; +sleep 2; +terminate _preload; +sleep 3; +_preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (3 preloadObject _this)}}; +waituntil {camCommitted _camera}; + +_camera camSetTarget vehicle _player; +_camera camSetRelPos [5.80,1.29,5.07]; +_camera camSetFOV 0.300; +_camera camCommit 7; +sleep 2; +terminate _preload; +_preload = _seagull spawn {waitUntil {(preloadCamera getPos _this) && (4 preloadObject _this)}}; +waituntil {camCommitted _camera}; + +_camera camSetRelPos [2.71,19.55,12.94]; +_camera camSetFOV 0.700; +_camera camCommit 2; +waituntil {camCommitted _camera}; + +_camera camSetTarget _seagull; +_camera camSetRelPos [-6.66,18.99,2.59]; +_camera camSetFOV 0.700; +_camera camCommit 3; +waituntil {camCommitted _camera}; + +3 fadeMusic 0; + +_camera camSetRelPos [1.17,-21.71,-1.07]; +_camera camSetFOV 0.300; +_camera camCommit 3; +waituntil {camCommitted _camera}; +terminate _preload; + +_seagull switchCamera "EXTERNAL"; +_seagull cameraEffect ["terminate","back"]; +camDestroy _camera; diff --git a/addons/spectator/functions/fnc_bi_respawnSpectator.sqf b/addons/spectator/functions/fnc_bi_respawnSpectator.sqf new file mode 100644 index 0000000000..5097b61ab2 --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnSpectator.sqf @@ -0,0 +1,59 @@ +/* + * Author: Bohemia Interactive + * Part of the BI respawn framework + * Opens BI spectator interface (default used by seagull respawn) + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",-1,[0]]]; +private ["_vision","_pos"]; + +if (isNull _killer) then {_killer = _unit}; +_vision = [-2,-1] select (sunOrMoon < 1); +_pos = (getPosATL _unit) vectorAdd [0,0,5]; + +_layer = "BIS_fnc_respawnSpectator" call bis_fnc_rscLayer; + +if (!alive _unit) then { + if (GVAR(onDeath)) then { + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + } else { + _layer cutrsc ["RscSpectator","plain"]; + }; +} else { + if (_respawn == 1) then { + + //--- Open + waituntil {missionnamespace getvariable ["BIS_fnc_feedback_allowDeathScreen",true]}; + BIS_fnc_feedback_allowPP = false; + //(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",1]; + if (GVAR(onDeath)) then { + [_unit,QGVAR(isSeagull)] call EFUNC(common,hideUnit); + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + } else { + _layer cutrsc ["RscSpectator","plain"]; + }; + } else { + if (GVAR(onDeath)) then { + [_unit,false] call FUNC(setSpectator); + }; + + //--- Close + _layer cuttext ["","plain"]; + }; +}; diff --git a/addons/spectator/functions/fnc_bi_respawnWave.sqf b/addons/spectator/functions/fnc_bi_respawnWave.sqf new file mode 100644 index 0000000000..371a8edcdc --- /dev/null +++ b/addons/spectator/functions/fnc_bi_respawnWave.sqf @@ -0,0 +1,43 @@ +/* + * Author: Bohemia Interactive + * Part of the BI respawn framework + * Handles wave respawning system + * Edited to support ace_spectator integration + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",0,[0]], ["_respawnDelay",0,[0]]]; + +if (!isplayer _unit && !isnull _unit) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; + +if (!alive _unit) then { + //--- Set the time only when it was not modified already + if (_respawnDelay != 0 && _respawnDelay == playerrespawntime) then { + setplayerrespawntime (_respawnDelay + _respawnDelay - (servertime % _respawnDelay)); + + if !(GVAR(onDeath)) exitWith {}; + private ["_vision","_pos"]; + + if (isNull _killer) then {_killer = _unit}; + _vision = [-2,-1] select (sunOrMoon < 1); + _pos = (getPosATL _unit) vectorAdd [0,0,5]; + + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + }; +} else { + setplayerrespawntime _respawndelay; + [_unit,false] call FUNC(setSpectator); +}; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 315398ab0c..5c8c958451 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -23,8 +23,7 @@ switch (toLower _mode) do { // Safely open/close the interface case "open": { // Prevent reopening - if (GVAR(open)) exitWith {}; - GVAR(open) = true; + if (GVAR(isSet)) exitWith {}; // Initalize camera variables GVAR(camBoom) = 0; @@ -37,15 +36,17 @@ switch (toLower _mode) do { GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; - // Camera starts with night vision if it's dark - if (sunOrMoon < 1) then { - [nil,nil,-1] call FUNC(setCameraAttributes); - }; - // Initalize the camera view GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); [] call FUNC(transitionCamera); + // Close map + openMap [false,false]; + + // Close any BI layers/effects + BIS_fnc_feedback_allowPP = false; + ("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","plain"]; + // Close all existing dialogs while {dialog} do { closeDialog 0; @@ -65,8 +66,7 @@ switch (toLower _mode) do { _args params ["_unit"]; // Can't close a second time - if !(GVAR(open)) exitWith {}; - GVAR(open) = false; + if !(GVAR(isSet)) exitWith {}; // Terminate interface while {dialog} do { @@ -80,6 +80,10 @@ switch (toLower _mode) do { // Return to player view _unit switchCamera "internal"; + // Re-enable any BI effects + BIS_fnc_feedback_allowPP = true; + BIS_fnc_respawnNone_start = nil; + // Cleanup camera variables GVAR(camera) = nil; GVAR(camBoom) = nil; diff --git a/addons/spectator/functions/fnc_handleKilled.sqf b/addons/spectator/functions/fnc_handleKilled.sqf deleted file mode 100644 index 05671ed749..0000000000 --- a/addons/spectator/functions/fnc_handleKilled.sqf +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Author: SilentSpike - * Set inital camera attributes and set as spectator on death - * Part of the spectator during death system - * - * Arguments: - * 0: Corpse - * 1: Killer - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit","_killer"]; - -if (isNull _killer) then { - [2,_unit] call FUNC(setCameraAttributes); -} else { - [2,_killer] call FUNC(setCameraAttributes); -}; - -[_unit] call FUNC(setSpectator); diff --git a/addons/spectator/functions/fnc_handleRespawn.sqf b/addons/spectator/functions/fnc_handleRespawn.sqf deleted file mode 100644 index aa695dd553..0000000000 --- a/addons/spectator/functions/fnc_handleRespawn.sqf +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Author: SilentSpike - * Un-set as spectator on respawn - * Part of the spectator during death system - * - * Arguments: - * 0: New unit - * 1: Old unit - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params ["_unit","_oldUnit"]; - -[_unit,false] call FUNC(setSpectator); diff --git a/addons/spectator/functions/fnc_setCameraAttributes.sqf b/addons/spectator/functions/fnc_setCameraAttributes.sqf index da2373318d..278a8c4758 100644 --- a/addons/spectator/functions/fnc_setCameraAttributes.sqf +++ b/addons/spectator/functions/fnc_setCameraAttributes.sqf @@ -51,7 +51,7 @@ if !(_vision in GVAR(availableVisions)) then { }; GVAR(camPan) = _heading % 360; -GVAR(camPosition) = (ATLtoASL _position); +GVAR(camPos) = (ATLtoASL _position); GVAR(camSpeed) = (_speed max 0.05) min 10; GVAR(camTilt) = (_tilt max -89) min 89; GVAR(camUnit) = _unit; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index b6e85926c5..2d5ada415c 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -1,9 +1,9 @@ /* * Author: SilentSpike - * Sets target unit to the given spectator state (virtually) + * Sets target player to the given spectator state (virtually) * To physically handle a spectator see ace_spectator_fnc_stageSpectator * - * Units will be able to communicate in ACRE/TFAR as appropriate + * Player will be able to communicate in ACRE/TFAR as appropriate * The spectator interface will be opened/closed * * Arguments: @@ -23,20 +23,11 @@ params ["_unit", ["_set",true,[true]]]; -// No change, no service (but allow spectators to be reset) -if !(_set || (GETVAR(_unit,GVAR(isSet),false))) exitWith {}; - // Only run for player units if !(isPlayer _unit) exitWith {}; if !(local _unit) exitwith { - [[_unit, _set, _target], QFUNC(setSpectator), _unit] call EFUNC(common,execRemoteFnc); -}; - -if (_set) then { - ["open"] call FUNC(handleInterface); -} else { - ["close",_unit] call FUNC(handleInterface); + [[_unit, _set], QFUNC(setSpectator), _unit] call EFUNC(common,execRemoteFnc); }; // Handle common addon audio @@ -44,10 +35,14 @@ if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableV if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[_unit, _set] call TFAR_fnc_forceSpectator}; -// No theoretical change if an existing spectator was reset -if !(_set isEqualTo (GETVAR(_unit,GVAR(isSet),false))) then { - // Mark spectator state for reference - _unit setVariable [QGVAR(isSet), _set, true]; - - ["spectatorSet",[_set]] call EFUNC(common,localEvent); +if (_set) then { + ["open"] call FUNC(handleInterface); +} else { + ["close",_unit] call FUNC(handleInterface); }; + +// Mark spectator state for reference +_unit setVariable [QGVAR(isSet), _set, true]; +GVAR(isSet) = _set; + +["spectatorSet",[_set,_unit]] call EFUNC(common,localEvent); diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index bac5174601..3e17235e3e 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -30,7 +30,7 @@ if !(_set || (GETVAR(_unit,GVAR(isStaged),false))) exitWith {}; if !(isPlayer _unit) exitWith {}; if !(local _unit) exitwith { - [[_unit, _set, _target], QFUNC(stageSpectator), _unit] call EFUNC(common,execRemoteFnc); + [[_unit, _set], QFUNC(stageSpectator), _unit] call EFUNC(common,execRemoteFnc); }; // Prevent player falling into water @@ -49,7 +49,7 @@ if (_set) then { [_unit, QGVAR(isStaged)] call EFUNC(common,hideUnit); [_unit, QGVAR(isStaged)] call EFUNC(common,muteUnit); - _unit setPos (getMarkerPos QGVAR(respawn)); + _unit setPos (markerPos QGVAR(respawn)); } else { // Physical beings can talk [_unit, QGVAR(isStaged)] call EFUNC(common,unhideUnit); From b1f9e17ab01be6be62734f224697cf2f51919a0a Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Tue, 4 Aug 2015 02:11:24 +0200 Subject: [PATCH 023/620] Updated parameterization in Weather module. --- addons/weather/functions/fnc_calculateAirDensity.sqf | 4 ++-- .../weather/functions/fnc_calculateBarometricPressure.sqf | 4 ++-- addons/weather/functions/fnc_calculateDewPoint.sqf | 4 ++-- addons/weather/functions/fnc_calculateHeatIndex.sqf | 6 +++--- addons/weather/functions/fnc_calculateRoughnessLength.sqf | 4 ++-- .../weather/functions/fnc_calculateTemperatureAtHeight.sqf | 4 ++-- addons/weather/functions/fnc_calculateWetBulb.sqf | 4 ++-- addons/weather/functions/fnc_calculateWindChill.sqf | 6 +++--- addons/weather/functions/fnc_calculateWindSpeed.sqf | 4 ++-- addons/weather/functions/fnc_getWind.sqf | 5 +++-- addons/weather/functions/fnc_initModuleSettings.sqf | 7 +++---- addons/weather/functions/fnc_updateRain.sqf | 4 ++-- 12 files changed, 28 insertions(+), 28 deletions(-) diff --git a/addons/weather/functions/fnc_calculateAirDensity.sqf b/addons/weather/functions/fnc_calculateAirDensity.sqf index 921bff3bf3..f3de65f99d 100644 --- a/addons/weather/functions/fnc_calculateAirDensity.sqf +++ b/addons/weather/functions/fnc_calculateAirDensity.sqf @@ -9,14 +9,14 @@ * 2: relativeHumidity - value between 0.0 and 1.0 * * Return Value: - * 0: density of air - kg * m^(-3) + * density of air - kg * m^(-3) * * Return value: * None */ #include "script_component.hpp" -PARAMS_3(_temperature,_pressure,_relativeHumidity); +params ["_temperature", "_pressure", "_relativeHumidity"]; _pressure = _pressure * 100; // hPa to Pa diff --git a/addons/weather/functions/fnc_calculateBarometricPressure.sqf b/addons/weather/functions/fnc_calculateBarometricPressure.sqf index 869deb93cb..134a741127 100644 --- a/addons/weather/functions/fnc_calculateBarometricPressure.sqf +++ b/addons/weather/functions/fnc_calculateBarometricPressure.sqf @@ -4,10 +4,10 @@ * Calculates the barometric pressure based on altitude and weather * * Arguments: - * 0: altitude - meters + * altitude - meters * * Return Value: - * 0: barometric pressure - hPA + * barometric pressure - hPA * * Return value: * None diff --git a/addons/weather/functions/fnc_calculateDewPoint.sqf b/addons/weather/functions/fnc_calculateDewPoint.sqf index 76656b1f55..cbfc606054 100644 --- a/addons/weather/functions/fnc_calculateDewPoint.sqf +++ b/addons/weather/functions/fnc_calculateDewPoint.sqf @@ -8,7 +8,7 @@ * 2: relativeHumidity - value between 0.0 and 1.0 * * Return Value: - * 0: dew point + * dew point * * Return value: * None @@ -18,7 +18,7 @@ #define __b 17.67 #define __c 243.5 -PARAMS_2(_t,_rh); +params ["_t", "_rh"]; if (_rh == 0) exitWith { CELSIUS(0) }; diff --git a/addons/weather/functions/fnc_calculateHeatIndex.sqf b/addons/weather/functions/fnc_calculateHeatIndex.sqf index 473360c867..057c13d7ad 100644 --- a/addons/weather/functions/fnc_calculateHeatIndex.sqf +++ b/addons/weather/functions/fnc_calculateHeatIndex.sqf @@ -5,10 +5,10 @@ * * Arguments: * 0: temperature - degrees celcius - * 2: relativeHumidity - value between 0.0 and 1.0 + * 1: relativeHumidity - value between 0.0 and 1.0 * * Return Value: - * 0: heat index + * heat index * * Return value: * None @@ -24,7 +24,7 @@ #define __C7 0.000687678 #define __C8 0.000274954 -PARAMS_2(_t,_rh); +params ["_t", "_rh"]; // Source: https://en.wikipedia.org/wiki/Heat_index diff --git a/addons/weather/functions/fnc_calculateRoughnessLength.sqf b/addons/weather/functions/fnc_calculateRoughnessLength.sqf index 08ae44cc74..4fd0d18fb3 100644 --- a/addons/weather/functions/fnc_calculateRoughnessLength.sqf +++ b/addons/weather/functions/fnc_calculateRoughnessLength.sqf @@ -4,10 +4,10 @@ * Calculates the terrain roughness length at a given world position * * Arguments: - * 0: _this - world position + * world position * * Return Value: - * 0: roughness length + * roughness length * * Public: No */ diff --git a/addons/weather/functions/fnc_calculateTemperatureAtHeight.sqf b/addons/weather/functions/fnc_calculateTemperatureAtHeight.sqf index dd31dfe05e..5e02795d59 100644 --- a/addons/weather/functions/fnc_calculateTemperatureAtHeight.sqf +++ b/addons/weather/functions/fnc_calculateTemperatureAtHeight.sqf @@ -4,10 +4,10 @@ * Calculates the temperature based on altitude and weather * * Arguments: - * 0: height - meters + * height - meters * * Return Value: - * 0: temperature - degrees celsius + * temperature - degrees celsius * * Return value: * None diff --git a/addons/weather/functions/fnc_calculateWetBulb.sqf b/addons/weather/functions/fnc_calculateWetBulb.sqf index c180cf8384..94e96cd11b 100644 --- a/addons/weather/functions/fnc_calculateWetBulb.sqf +++ b/addons/weather/functions/fnc_calculateWetBulb.sqf @@ -9,7 +9,7 @@ * 2: relativeHumidity - value between 0.0 and 1.0 * * Return Value: - * 0: wet bulb + * wet bulb * * Return value: * None @@ -18,7 +18,7 @@ private ["_es", "_e", "_eDiff", "_eGuessPrev", "_cTempDelta", "_twGuess", "_eguess"]; -PARAMS_3(_temperature,_pressure,_relativeHumidity); +params ["_temperature", "_pressure", "_relativeHumidity"]; // Source: http://cosmoquest.org/forum/showthread.php?155366-Calculating-Wet-Bulb-Temperature-from-RH-amp-Dry-Bulb _es = 6.112 * exp((17.67 * _temperature) / (_temperature + 243.5)); diff --git a/addons/weather/functions/fnc_calculateWindChill.sqf b/addons/weather/functions/fnc_calculateWindChill.sqf index 021d2f8b99..ee3a20283b 100644 --- a/addons/weather/functions/fnc_calculateWindChill.sqf +++ b/addons/weather/functions/fnc_calculateWindChill.sqf @@ -5,16 +5,16 @@ * * Arguments: * 0: temperature - degrees celcius - * 2: wind speed - m/s + * 1: wind speed - m/s * * Return Value: - * 0: wind chill + * wind chill * * Public: No */ #include "script_component.hpp" -PARAMS_2(_t,_v); +params ["_t", "_v"]; // Source: https://en.wikipedia.org/wiki/Wind_chill diff --git a/addons/weather/functions/fnc_calculateWindSpeed.sqf b/addons/weather/functions/fnc_calculateWindSpeed.sqf index d991897b97..fc1ac81a57 100644 --- a/addons/weather/functions/fnc_calculateWindSpeed.sqf +++ b/addons/weather/functions/fnc_calculateWindSpeed.sqf @@ -10,7 +10,7 @@ * 3: Account for obstacles * * Return Value: - * 0: wind speed - m/s + * wind speed - m/s * * Public: No */ @@ -18,7 +18,7 @@ private ["_windSpeed", "_windDir", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"]; -PARAMS_4(_position,_windGradientEnabled,_terrainEffectEnabled,_obstacleEffectEnabled); +params ["_position", "_windGradientEnabled", "_terrainEffectEnabled", "_obstacleEffectEnabled"]; fnc_polar2vect = { private ["_mag2D"]; diff --git a/addons/weather/functions/fnc_getWind.sqf b/addons/weather/functions/fnc_getWind.sqf index 5b123afaa0..7e133896a6 100644 --- a/addons/weather/functions/fnc_getWind.sqf +++ b/addons/weather/functions/fnc_getWind.sqf @@ -11,11 +11,12 @@ */ #include "script_component.hpp" +private ["_periodPercent", "_periodPosition"]; + if (isNil "ACE_WIND_PARAMS") exitWith { [0, 0, 0] }; -EXPLODE_5_PVT(ACE_WIND_PARAMS,_dir,_dirChange,_spd,_spdChange,_period); +ACE_WIND_PARAMS params ["_dir", "_dirChange", "_spd", "_spdChange", "_period"]; -private ["_periodPercent", "_periodPosition"]; _periodPosition = (ACE_time - GVAR(wind_period_start_time)) min _period; _periodPercent = _periodPosition / _period; diff --git a/addons/weather/functions/fnc_initModuleSettings.sqf b/addons/weather/functions/fnc_initModuleSettings.sqf index eb0eaafc31..e6977f01f9 100644 --- a/addons/weather/functions/fnc_initModuleSettings.sqf +++ b/addons/weather/functions/fnc_initModuleSettings.sqf @@ -16,9 +16,8 @@ #include "script_component.hpp" private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; + +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; @@ -36,4 +35,4 @@ if !(_activated) exitWith {}; // Server weather update interval [_logic, QGVAR(serverUpdateInterval), "serverUpdateInterval"] call EFUNC(common,readSettingFromModule); -GVAR(serverUpdateInterval) = 1 max GVAR(serverUpdateInterval) min 600; \ No newline at end of file +GVAR(serverUpdateInterval) = 1 max GVAR(serverUpdateInterval) min 600; diff --git a/addons/weather/functions/fnc_updateRain.sqf b/addons/weather/functions/fnc_updateRain.sqf index ced8641f61..6c4c829747 100644 --- a/addons/weather/functions/fnc_updateRain.sqf +++ b/addons/weather/functions/fnc_updateRain.sqf @@ -14,8 +14,8 @@ if (!GVAR(syncRain)) exitWith {}; if (!isNil "ACE_RAIN_PARAMS") then { - EXPLODE_3_PVT(ACE_RAIN_PARAMS,_oldRain,_newRain,_period); - + ACE_RAIN_PARAMS params ["_oldRain", "_newRain", "_period"]; + private ["_periodPosition", "_periodPercent"]; _periodPosition = (ACE_time - GVAR(rain_period_start_time)) min _period; _periodPercent = (_periodPosition / _period) min 1; From 95f055f5a499c478c637efcd05044b0dd1aca075 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 5 Aug 2015 00:14:50 +0200 Subject: [PATCH 024/620] Small correction --- addons/weather/functions/fnc_initModuleSettings.sqf | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/weather/functions/fnc_initModuleSettings.sqf b/addons/weather/functions/fnc_initModuleSettings.sqf index e6977f01f9..034612ab58 100644 --- a/addons/weather/functions/fnc_initModuleSettings.sqf +++ b/addons/weather/functions/fnc_initModuleSettings.sqf @@ -15,8 +15,6 @@ #include "script_component.hpp" -private ["_logic", "_units", "_activated"]; - params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; From 1b12d3728437a948d4e6779f724f7a6387e50396 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 4 Aug 2015 22:11:34 +0100 Subject: [PATCH 025/620] Replace spectator respawn changes with a template Hacking the BI respawn framework to support a spectator setting was intrusive and limiting. Instead of using a setting, I've opted to introduce a new respawn template that can be used within BI's respawn framework. The benefits of this approach are: - Compatibility isn't a concern, that responsibility is shifted onto mission designers. - Mission designers can use the functionality of the BI framework alongside the spectator system (combining templates, using different templates for different sides, etc.). - If a custom respawn framework is used, then this doesn't change anything. Custom frameworks are still fully supported via the public functions provided. - Remains simple to set up, just requires a description.ext edit --- addons/spectator/ACE_Settings.hpp | 4 - addons/spectator/CfgVehicles.hpp | 6 - addons/spectator/XEH_preInit.sqf | 10 +- addons/spectator/config.cpp | 34 +- .../functions/fnc_bi_respawnBase.sqf | 35 --- .../functions/fnc_bi_respawnCounter.sqf | 35 --- .../functions/fnc_bi_respawnEndMission.sqf | 62 ---- .../functions/fnc_bi_respawnInstant.sqf | 35 --- .../functions/fnc_bi_respawnNone.sqf | 293 ------------------ .../functions/fnc_bi_respawnSeagull.sqf | 101 ------ .../functions/fnc_bi_respawnSpectator.sqf | 59 ---- .../functions/fnc_bi_respawnWave.sqf | 43 --- .../functions/fnc_handleInterface.sqf | 5 +- .../functions/fnc_moduleSpectatorSettings.sqf | 1 - .../functions/fnc_respawnTemplate.sqf | 39 +++ .../functions/fnc_transitionCamera.sqf | 8 +- addons/spectator/stringtable.xml | 8 - 17 files changed, 52 insertions(+), 726 deletions(-) delete mode 100644 addons/spectator/functions/fnc_bi_respawnBase.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnCounter.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnEndMission.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnInstant.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnNone.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnSeagull.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnSpectator.sqf delete mode 100644 addons/spectator/functions/fnc_bi_respawnWave.sqf create mode 100644 addons/spectator/functions/fnc_respawnTemplate.sqf diff --git a/addons/spectator/ACE_Settings.hpp b/addons/spectator/ACE_Settings.hpp index 5e7907d19f..539f7cef2d 100644 --- a/addons/spectator/ACE_Settings.hpp +++ b/addons/spectator/ACE_Settings.hpp @@ -1,8 +1,4 @@ class ACE_Settings { - class GVAR(onDeath) { - typeName = "BOOL"; - value = 0; - }; class GVAR(filterUnits) { typeName = "SCALAR"; value = 1; diff --git a/addons/spectator/CfgVehicles.hpp b/addons/spectator/CfgVehicles.hpp index 7067257f23..8e685dae07 100644 --- a/addons/spectator/CfgVehicles.hpp +++ b/addons/spectator/CfgVehicles.hpp @@ -9,12 +9,6 @@ class CfgVehicles { isGlobal = 1; author = ECSTRING(common,ACETeam); class Arguments { - class systemEnable { - displayName = CSTRING(system_DisplayName); - description = CSTRING(system_Description); - typeName = "BOOL"; - defaultValue = 0; - }; class unitsFilter { displayName = CSTRING(units_DisplayName); description = CSTRING(units_Description); diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 73c629a0ce..95c18f4a54 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -2,14 +2,6 @@ ADDON = false; -PREP(bi_respawnBase); -PREP(bi_respawnCounter); -PREP(bi_respawnEndMission); -PREP(bi_respawnInstant); -PREP(bi_respawnNone); -PREP(bi_respawnSeagull); -PREP(bi_respawnSpectator); -PREP(bi_respawnWave); PREP(cacheUnitInfo); PREP(cycleCamera); PREP(handleCamera); @@ -20,6 +12,7 @@ PREP(handleMouse); PREP(handleToolbar); PREP(handleUnits); PREP(moduleSpectatorSettings); +PREP(respawnTemplate); PREP(setCameraAttributes); PREP(setSpectator); PREP(stageSpectator); @@ -35,6 +28,7 @@ GVAR(availableModes) = [0,1,2]; GVAR(availableSides) = [west,east,resistance,civilian]; GVAR(availableVisions) = [-2,-1,0,1]; +GVAR(camAgent) = objNull; GVAR(camMode) = 0; GVAR(camPan) = 0; GVAR(camPos) = ATLtoASL [worldSize * 0.5, worldSize * 0.5, 20]; diff --git a/addons/spectator/config.cpp b/addons/spectator/config.cpp index eb73761e5f..6e32ed0413 100644 --- a/addons/spectator/config.cpp +++ b/addons/spectator/config.cpp @@ -18,36 +18,8 @@ class CfgPatches { #include "ui\interface.hpp" class CfgRespawnTemplates { - class None { - onPlayerKilled = QFUNC(bi_respawnNone); - }; - class Spectator { - onPlayerKilled = QFUNC(bi_respawnSpectator); - onPlayerRespawn = QFUNC(bi_respawnSpectator); - }; - class Instant { - onPlayerKilled = QFUNC(bi_respawnInstant); - onPlayerRespawn = QFUNC(bi_respawnInstant); - }; - class Base { - onPlayerKilled = QFUNC(bi_respawnBase); - onPlayerRespawn = QFUNC(bi_respawnBase); - }; - class EndMission - { - onPlayerKilled = QFUNC(bi_respawnEndMission); - onPlayerRespawn = QFUNC(bi_respawnEndMission); - }; - class Seagull { - onPlayerRespawn = QFUNC(bi_respawnSeagull); - }; - class Wave - { - onPlayerKilled = QFUNC(bi_respawnWave); - onPlayerRespawn = QFUNC(bi_respawnWave); - }; - class Counter { - onPlayerKilled = QFUNC(bi_respawnCounter); - onPlayerRespawn = QFUNC(bi_respawnCounter); + class ADDON { + onPlayerKilled = QFUNC(respawnTemplate); + onPlayerRespawn = QFUNC(respawnTemplate); }; }; diff --git a/addons/spectator/functions/fnc_bi_respawnBase.sqf b/addons/spectator/functions/fnc_bi_respawnBase.sqf deleted file mode 100644 index 7ea5b0c745..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnBase.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: Bohemia Interactive - * Part of the BI respawn framework - * Handles base respawn type (respawn on marker) - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -if !(GVAR(onDeath)) exitWith {}; - -params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; - -if (alive _unit) then { - [_unit,false] call FUNC(setSpectator); -} else { - private ["_vision","_pos"]; - if (isNull _killer) then {_killer = _unit}; - _vision = [-2,-1] select (sunOrMoon < 1); - _pos = (getPosATL _unit) vectorAdd [0,0,5]; - - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); -}; diff --git a/addons/spectator/functions/fnc_bi_respawnCounter.sqf b/addons/spectator/functions/fnc_bi_respawnCounter.sqf deleted file mode 100644 index 0bee90ec61..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnCounter.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: Bohemia Interactive (Karel Moricky) - * Part of the BI respawn framework - * Handles the respawn timer display - * Edited to disable counter when spectator is opened - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -_player = [_this,0,objNull,[objnull]] call bis_fnc_param; - -_respawnDelay = [_this,3,0,[0]] call bis_fnc_param; - -if (!isplayer _player && !isnull _player && _respawnDelay > 0) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; - -//--- Engine-triggered respawn -_layer = "BIS_fnc_respawnCounter" call bis_fnc_rscLayer; - -if (!alive _player) then { - if (GVAR(onDeath) || (playerrespawntime < 1)) exitwith {}; - _layer cutrsc ["RscRespawnCounter","plain"]; -} else { - _layer cuttext ["","plain"]; -}; diff --git a/addons/spectator/functions/fnc_bi_respawnEndMission.sqf b/addons/spectator/functions/fnc_bi_respawnEndMission.sqf deleted file mode 100644 index 23b8dacc17..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnEndMission.sqf +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Author: Bohemia Interactive (Karel Moricky) - * Part of the BI respawn framework - * Ends the mission when all players are dead - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; -private ["_vision","_pos"]; - -if (isNull _killer) then {_killer = _unit}; -_vision = [-2,-1] select (sunOrMoon < 1); -_pos = (getPosATL _unit) vectorAdd [0,0,5]; - -if (ismultiplayer) then { - - _respawnType = 0 call bis_fnc_missionRespawnType; - if (_respawnType in [0,1,4,5]) then { - - //--- No more respawn slots - if ({isplayer _x && alive _x} count playableunits == 0) then { - [["endDeath",false],"bis_fnc_endmission"] call bis_fnc_mp; - } else { - if (GVAR(onDeath) && (_respawnType in [0,1])) then { - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); - }; - }; - - //--- Don't end the script to prevent premature mission end - waituntil {false}; - } else { - - if (!alive _unit) then { - - //--- No more respawn tickets - if ([] call bis_fnc_respawntickets == 0 && {isplayer _x} count playableunits == 0) then { - [["endDeath",false],"bis_fnc_endmission"] call bis_fnc_mp; - } else { - if (GVAR(onDeath)) then { - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); - }; - }; - } else { - [_unit,false] call FUNC(setSpectator); - }; - }; -}; diff --git a/addons/spectator/functions/fnc_bi_respawnInstant.sqf b/addons/spectator/functions/fnc_bi_respawnInstant.sqf deleted file mode 100644 index fd1d255cf9..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnInstant.sqf +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Author: Bohemia Interactive - * Part of the BI respawn framework - * Handles instant respawn type (respawn at position of death) - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -if !(GVAR(onDeath)) exitWith {}; - -params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]]]; - -if (alive _unit) then { - [_unit,false] call FUNC(setSpectator); -} else { - private ["_vision","_pos"]; - if (isNull _killer) then {_killer = _unit}; - _vision = [-2,-1] select (sunOrMoon < 1); - _pos = (getPosATL _unit) vectorAdd [0,0,5]; - - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); -}; diff --git a/addons/spectator/functions/fnc_bi_respawnNone.sqf b/addons/spectator/functions/fnc_bi_respawnNone.sqf deleted file mode 100644 index a5031a8fd9..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnNone.sqf +++ /dev/null @@ -1,293 +0,0 @@ -/* - * Author: Bohemia Interactive (Karel Moricky) - * Part of the BI respawn framework - * Shows death screen for respawn type "None" - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse - * 1: Killer - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ -private ["_soundvolume","_musicvolume"]; - -#define BI_CONTROL (_display displayctrl _n) - -#include "script_component.hpp" - -disableserialization; -_player = _this select 0; -_killer = _this select 1; -if (isnull _killer) then {_killer = _player}; - -_musicvolume = musicvolume; -_soundvolume = soundvolume; //MUF-TODO: check if this is done before sound is faded in fn_feedbackMain.fsm - -_start = isnil "bis_fnc_respawnNone_start"; -if (_start) then { - bis_fnc_respawnNone_start = [daytime,time / 3600]; - - //3.5 fadesound 0; //MUF-commented - - sleep 2; - if (alive player) exitwith {}; - cutText ["","BLACK OUT",1]; - sleep 1.5; - BIS_fnc_feedback_allowPP = false; //MUF-switch health PP off - //(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",1];//MUF-black in (remove black screen that was launched in FSM PP) - - if (ismultiplayer) then { - if (GVAR(onDeath)) then { - private ["_vision","_pos"]; - _vision = [-2,-1] select (sunOrMoon < 1); - _pos = (getPosATL _player) vectorAdd [0,0,5]; - - [2,_killer,_vision,_pos,getDir _player] call FUNC(setCameraAttributes); - [_player] call FUNC(setSpectator); - } else { - (finddisplay 46) createdisplay "RscDisplayMissionEnd"; - }; - } else {enableenddialog}; -}; -if (alive player) exitwith { - [player,false] call FUNC(setSpectator); - cuttext ["","plain"]; -}; //--- Terminate when player manages to switch do different unit already - -if (GVAR(onDeath)) exitWith {}; - -waituntil {!isnull (finddisplay 58)}; -_display = finddisplay 58; - -//--- Black fade in -_n = 1060; -BI_CONTROL ctrlsetfade 1; -if (_start) then { - - //--- Play ambient radio - setacctime 1; - 0 fademusic 0; - 4 fademusic 0.8; - playmusic format ['RadioAmbient%1',ceil random 1/*30*/]; - _musicEH = addMusicEventHandler ["MusicStop",{[] spawn {playmusic format ['RadioAmbient%1',ceil random 1/*30*/];};}]; - uinamespace setvariable ["bis_fnc_respawnNone_musicEH",_musicEH]; - _display displayaddeventhandler ["unload","removeMusicEventHandler ['MusicStop',uinamespace getvariable ['bis_fnc_respawnNone_musicEH',-1]];"]; - - BI_CONTROL ctrlcommit 4; -} else { - BI_CONTROL ctrlcommit 0; -}; -cuttext ["","plain"]; - -//--- HUD -_n = 5800; -BI_CONTROL ctrlsettext gettext (configfile >> "cfgingameui" >> "cursor" >> "select"); -BI_CONTROL ctrlsetposition [-10,-10,safezoneH * 0.07 * 3/4,safezoneH * 0.07]; -BI_CONTROL ctrlsettextcolor [1,1,1,1]; -BI_CONTROL ctrlcommit 0; - -//--- SITREP (ToDO: Localize) -_sitrep = "SITREP||"; -if (name _player != "Error: No unit") then { - _sitrep = _sitrep + "KIA: %4. %5|"; -}; -_sitrep = _sitrep + "TOD: %2 [%3]|LOC: %6 \ %7"; -if (_killer != _player) then { - _sitrep = _sitrep + "||ENY: %8"; - if (currentweapon _killer != "") then { - _sitrep = _sitrep + "|ENW: %9" - }; -}; -_sitrep = format [ - _sitrep, - 1 * safezoneH, - [bis_fnc_respawnNone_start select 0,"HH:MM:SS"] call bis_fnc_timetostring, - [bis_fnc_respawnNone_start select 1,"HH:MM:SS"] call bis_fnc_timetostring, - toupper localize format ["STR_SHORT_%1",rank _player], - toupper name _player, - mapGridPosition _player, - toupper worldname, - toupper ((configfile >> "cfgvehicles" >> typeof _killer) call bis_fnc_displayname), - toupper ((configfile >> "cfgweapons" >> currentweapon _killer) call bis_fnc_displayname) - -]; - -_n = 11000; -_bcgPos = ctrlposition BI_CONTROL; -_n = 5858; -//BI_CONTROL ctrlsetposition [_bcgPos select 0,safezoneY + ((_bcgPos select 0) - safezoneX) * 4/3,safezoneW - 2 * (_bcgPos select 2),safezoneH / 2]; -BI_CONTROL ctrlsetposition [(((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX), - ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY), - safezoneW - 2 * (_bcgPos select 2), - safezoneH / 2]; -BI_CONTROL ctrlcommit 0; -[BI_CONTROL,_sitrep] spawn { - scriptname "bis_fnc_respawnNone: SITREP"; - disableserialization; - _control = _this select 0; - _sitrepArray = toarray (_this select 1); - {_sitrepArray set [_foreachindex,tostring [_x]]} foreach _sitrepArray; - _sitrep = ""; - //_sitrepFormat = "%1"; - _sitrepFormat = "%1"; - - sleep 1; - for "_i" from 0 to (count _sitrepArray - 1) do { - _letter = _sitrepArray select _i; - _delay = if (_letter == "|") then {_letter = "
"; 1} else {0.01}; - _sitrep = _sitrep + _letter; - _control ctrlsetstructuredtext parsetext format [_sitrepFormat,_sitrep + "_"]; - //playsound ["IncomingChallenge",true]; - sleep _delay; - if (isnull _control) exitwith {}; - }; - _control ctrlsetstructuredtext parsetext format [_sitrepFormat,_sitrep]; -}; - - -//--- Create UAV camera -_camera = "camera" camcreate position player; -_camera cameraeffect ["internal","back"]; -_camera campreparefov 0.4; -_camera campreparetarget _killer; -showcinemaborder false; - -//--- Set PP effects -_saturation = 0.0 + random 0.3; -_ppColor = ppEffectCreate ["ColorCorrections", 1999]; -_ppColor ppEffectEnable true; -_ppColor ppEffectAdjust [1, 1, 0, [1, 1, 1, 0], [1 - _saturation, 1 - _saturation, 1 - _saturation, _saturation], [1, 0.25, 0, 1.0]]; -_ppColor ppEffectCommit 0; - -_ppGrain = ppEffectCreate ["filmGrain", 2012]; -_ppGrain ppEffectEnable true; -_ppGrain ppEffectAdjust [random 0.2, 1, 1, 0, 1]; -_ppGrain ppEffectCommit 0; - -//--- Camera update executed every frame -bis_fnc_respawnNone_player = _player; -bis_fnc_respawnNone_killer = _killer; -bis_fnc_respawnNone_camera = _camera; -bis_fnc_respawnNone_loop = { - scriptname "bis_fnc_respawnNone: camera"; - _display = _this select 0; - _player = bis_fnc_respawnNone_player; - _killer = bis_fnc_respawnNone_killer; - _camera = bis_fnc_respawnNone_camera; - - _sin = 20 * sin (time * 7); - _killerPos = [ - (visiblepositionasl _killer select 0), - (visiblepositionasl _killer select 1) + (_sin), - (visiblepositionasl _killer select 2) + (_sin) - ]; - - _dirToKiller = if (_killer == _player) then { - direction _player; - } else { - ([_player,_killerPos] call bis_fnc_dirto) + _sin; - }; - _pos = [ - visiblepositionasl _player, - -20, - _dirToKiller - ] call bis_fnc_relpos; - _pos set [2,((_pos select 2) + 7) max (getterrainheightasl _pos + 7)]; - - //--- Pitch - _heightCamera = getterrainheightasl _pos; - _heightKiller = getterrainheightasl _killerPos; - _height = _heightCamera - _heightKiller; - _dis = _killerPos distance _pos; - _angle = (asin (_height/_dis)); - - _camera setdir _dirtokiller; - [_camera,-_angle,_sin] call bis_fnc_setpitchbank; - _camera setposasl _pos; - - //--- HUD - _n = 5800; - _hudPos = (worldtoscreen position _player); - if (count _hudPos > 0) then { - _hudPosW = ctrlposition BI_CONTROL select 2; - _hudPosH = ctrlposition BI_CONTROL select 3; - _hudPos = [ - (_hudPos select 0) - _hudPosW / 2, - (_hudPos select 1) - _hudPosH / 2, - _hudPosW, - _hudPosH - ]; - BI_CONTROL ctrlsetposition _hudPos; - BI_CONTROL ctrlcommit 0; - }; -}; - -bis_fnc_respawnNone_keydown = { - _key = _this select 1; - - if (_key in (actionkeys 'nightvision') || _key < 0) then { - bis_fnc_respawnNone_vision = bis_fnc_respawnNone_vision + 1; - _vision = bis_fnc_respawnNone_vision % 4; - switch (_vision) do { - case 0: { - camusenvg false; - call compile 'false SetCamUseTi 0'; - }; - case 1: { - camusenvg true; - call compile 'false SetCamUseTi 0'; - }; - case 2: { - camusenvg false; - call compile 'true SetCamUseTi 0'; - }; - case 3: { - camusenvg false; - call compile 'true SetCamUseTi 1'; - }; - }; - }; -}; -//bis_fnc_respawnNone_vision = (1 + floor random 3) % 4; //--- Random vision (not NVG) -bis_fnc_respawnNone_vision = -1; -if (sunormoon < 1) then {bis_fnc_respawnNone_vision = 0;}; -[-1,-1] call bis_fnc_respawnNone_keydown; - -_display displayaddeventhandler ["mousemoving","_this call bis_fnc_respawnNone_loop"]; -_display displayaddeventhandler ["mouseholding","_this call bis_fnc_respawnNone_loop"]; -_display displayaddeventhandler ["keydown","_this call bis_fnc_respawnNone_keydown"]; - - -//--- Team Switch display opened -waituntil {isnull _display}; -_displayTeamSwitch = finddisplay 632; - -//--- Team Switch display closed - cleanup and restart the view -waituntil {isnull _displayTeamSwitch}; - -_camera cameraeffect ["terminate","back"]; -camdestroy _camera; - -bis_fnc_respawnNone_player = nil; -bis_fnc_respawnNone_killer = nil; -bis_fnc_respawnNone_camera = nil; -bis_fnc_respawnNone_loop = nil; - -ppeffectdestroy _ppColor; -ppeffectdestroy _ppGrain; - -if (!alive player) exitwith {_this call bis_fnc_respawnNone;}; - - -//--- Resurrection! -BIS_fnc_feedback_allowPP = true; -0 fadesound _soundvolume; -0 fademusic _musicvolume; -playmusic ""; -bis_fnc_respawnNone_start = nil; diff --git a/addons/spectator/functions/fnc_bi_respawnSeagull.sqf b/addons/spectator/functions/fnc_bi_respawnSeagull.sqf deleted file mode 100644 index 2e01ffa6ea..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnSeagull.sqf +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Author: Bohemia Interactive - * Part of the BI respawn framework - * Correctly handles seagull respawn (not used by default) - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -_seagull = _this select 0; -_player = _this select 1; -_this call bis_fnc_log; - -if (!isplayer _player && !isplayer _seagull) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; - -waituntil {missionnamespace getvariable ["BIS_fnc_feedback_allowDeathScreen",true]}; -BIS_fnc_feedback_allowPP = false; -//(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",8]; - -if (GVAR(onDeath)) exitWith { - private ["_vision","_pos"]; - - if (isNull _player) then {_player = _seagull}; - _vision = [-2,-1] select (sunOrMoon < 1); - _pos = (getPosATL _player) vectorAdd [0,0,5]; - - [_seagull,QGVAR(isSeagull)] call EFUNC(common,hideUnit); - [2,_player,_vision,_pos,getDir _seagull] call FUNC(setCameraAttributes); - [_seagull] call FUNC(setSpectator); -}; - -_camera = "camera" camCreate [(position _player select 0)-0.75, (position _player select 1)-0.75,(position _player select 2) + 0.5]; -_camera cameraEffect ["internal","back"]; -_camera camSetFOV 0.800; -_camera camCommit 0; -waituntil {camCommitted _camera}; - -0 fadeMusic 0.5; -playMusic "Track06_Abandoned_Battlespace"; - -_camera camSetTarget vehicle _player; -_camera camSetRelPos [-0.82,-3.12,3.38]; -_camera camSetFOV 0.800; -_camera camCommit 7; - -sleep 1; -_preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (2 preloadObject _this)}}; -sleep 5; -waituntil {camCommitted _camera}; - -_camera camSetRelPos [1.17,-21.71,2.07]; -_camera camSetFOV 0.400; -_camera camCommit 10; -sleep 2; -terminate _preload; -sleep 3; -_preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (3 preloadObject _this)}}; -waituntil {camCommitted _camera}; - -_camera camSetTarget vehicle _player; -_camera camSetRelPos [5.80,1.29,5.07]; -_camera camSetFOV 0.300; -_camera camCommit 7; -sleep 2; -terminate _preload; -_preload = _seagull spawn {waitUntil {(preloadCamera getPos _this) && (4 preloadObject _this)}}; -waituntil {camCommitted _camera}; - -_camera camSetRelPos [2.71,19.55,12.94]; -_camera camSetFOV 0.700; -_camera camCommit 2; -waituntil {camCommitted _camera}; - -_camera camSetTarget _seagull; -_camera camSetRelPos [-6.66,18.99,2.59]; -_camera camSetFOV 0.700; -_camera camCommit 3; -waituntil {camCommitted _camera}; - -3 fadeMusic 0; - -_camera camSetRelPos [1.17,-21.71,-1.07]; -_camera camSetFOV 0.300; -_camera camCommit 3; -waituntil {camCommitted _camera}; -terminate _preload; - -_seagull switchCamera "EXTERNAL"; -_seagull cameraEffect ["terminate","back"]; -camDestroy _camera; diff --git a/addons/spectator/functions/fnc_bi_respawnSpectator.sqf b/addons/spectator/functions/fnc_bi_respawnSpectator.sqf deleted file mode 100644 index 5097b61ab2..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnSpectator.sqf +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Author: Bohemia Interactive - * Part of the BI respawn framework - * Opens BI spectator interface (default used by seagull respawn) - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",-1,[0]]]; -private ["_vision","_pos"]; - -if (isNull _killer) then {_killer = _unit}; -_vision = [-2,-1] select (sunOrMoon < 1); -_pos = (getPosATL _unit) vectorAdd [0,0,5]; - -_layer = "BIS_fnc_respawnSpectator" call bis_fnc_rscLayer; - -if (!alive _unit) then { - if (GVAR(onDeath)) then { - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); - } else { - _layer cutrsc ["RscSpectator","plain"]; - }; -} else { - if (_respawn == 1) then { - - //--- Open - waituntil {missionnamespace getvariable ["BIS_fnc_feedback_allowDeathScreen",true]}; - BIS_fnc_feedback_allowPP = false; - //(["HealthPP_black"] call bis_fnc_rscLayer) cutText ["","BLACK IN",1]; - if (GVAR(onDeath)) then { - [_unit,QGVAR(isSeagull)] call EFUNC(common,hideUnit); - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); - } else { - _layer cutrsc ["RscSpectator","plain"]; - }; - } else { - if (GVAR(onDeath)) then { - [_unit,false] call FUNC(setSpectator); - }; - - //--- Close - _layer cuttext ["","plain"]; - }; -}; diff --git a/addons/spectator/functions/fnc_bi_respawnWave.sqf b/addons/spectator/functions/fnc_bi_respawnWave.sqf deleted file mode 100644 index 371a8edcdc..0000000000 --- a/addons/spectator/functions/fnc_bi_respawnWave.sqf +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Author: Bohemia Interactive - * Part of the BI respawn framework - * Handles wave respawning system - * Edited to support ace_spectator integration - * - * Arguments: - * 0: Corpse/New Unit - * 1: Killer/Old Unit - * 2: Respawn Type - * 3: Respawn Delay - * - * Return Value: - * None - * - * Public: No - */ - -#include "script_component.hpp" - -params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",0,[0]], ["_respawnDelay",0,[0]]]; - -if (!isplayer _unit && !isnull _unit) exitwith {["Attempting to use the function on AI unit %1, can be used only on players."] call bis_fnc_error;}; - -if (!alive _unit) then { - //--- Set the time only when it was not modified already - if (_respawnDelay != 0 && _respawnDelay == playerrespawntime) then { - setplayerrespawntime (_respawnDelay + _respawnDelay - (servertime % _respawnDelay)); - - if !(GVAR(onDeath)) exitWith {}; - private ["_vision","_pos"]; - - if (isNull _killer) then {_killer = _unit}; - _vision = [-2,-1] select (sunOrMoon < 1); - _pos = (getPosATL _unit) vectorAdd [0,0,5]; - - [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); - }; -} else { - setplayerrespawntime _respawndelay; - [_unit,false] call FUNC(setSpectator); -}; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 5c8c958451..777e8d2ea9 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -43,7 +43,7 @@ switch (toLower _mode) do { // Close map openMap [false,false]; - // Close any BI layers/effects + // Disable BI damage effects and remove counter layer BIS_fnc_feedback_allowPP = false; ("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","plain"]; @@ -80,9 +80,8 @@ switch (toLower _mode) do { // Return to player view _unit switchCamera "internal"; - // Re-enable any BI effects + // Re-enable BI damage effects BIS_fnc_feedback_allowPP = true; - BIS_fnc_respawnNone_start = nil; // Cleanup camera variables GVAR(camera) = nil; diff --git a/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf b/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf index 1fd20f50e4..c23fb7ad20 100644 --- a/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf +++ b/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf @@ -19,7 +19,6 @@ params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; -[_logic, QGVAR(onDeath), "systemEnable"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(filterUnits), "unitsFilter"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(filterSides), "sidesFilter"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(restrictModes), "cameraModes"] call EFUNC(common,readSettingFromModule); diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf new file mode 100644 index 0000000000..b03c6dfb06 --- /dev/null +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -0,0 +1,39 @@ +/* + * Author: SilentSpike + * The ace_spectator respawn template, handles killed + respawn + * Can be used via BI's respawn framework, see: + * https://community.bistudio.com/wiki/Arma_3_Respawn + * + * Arguments: + * 0: Corpse/New Unit + * 1: Killer/Old Unit + * 2: Respawn Type + * 3: Respawn Delay + * + * Return Value: + * None + * + * Public: No + */ + +#include "script_component.hpp" + +params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",0,[0]], ["_respawnDelay",0,[0]]]; +private ["_vision","_pos"]; + +if (isNull _killer) then {_killer = _unit}; +_vision = [-2,-1] select (sunOrMoon < 1); +_pos = (getPosATL _unit) vectorAdd [0,0,5]; + +if (alive _unit) then { + if (_respawn == 1) then { + [_unit,QGVAR(isSeagull)] call EFUNC(common,hideUnit); + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); + } else { + [_unit,false] call FUNC(setSpectator); + }; +} else { + [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); + [_unit] call FUNC(setSpectator); +}; diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index 07abbc94ab..a4d99445fb 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -53,8 +53,12 @@ if (_newMode == 0) then { // Free GVAR(camera) camSetFov -(linearConversion [0.01,2,GVAR(camZoom),-2,-0.01,true]); GVAR(camera) camCommit 0; - // Switch to camera to stop AI group chat - ACE_Player switchCamera "internal"; + // Agent is switched to in free cam to hide death table and prevent AI chat + if (isNull GVAR(camAgent)) then { + GVAR(camAgent) = createAgent ["VirtualMan_F",markerPos QGVAR(respawn),[],0,""]; + }; + + GVAR(camAgent) switchCamera "internal"; clearRadio; // If new vision isn't available then keep current (unless current also isn't) diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 1f74d08c43..4eb0e25c0a 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -9,14 +9,6 @@ Configure how the spectator system will operate by default. Skonfiguruj domyślne ustawienia obserwatora. - - Spectate on death - Obserwator po śmierci - - - Enables spectator upon death. - Włącz obserwatora po śmierci - Unit filter Filtr jednostek From 83e13e3cd3a417904343c874d6a60c5584b17a9a Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 5 Aug 2015 01:53:11 +0200 Subject: [PATCH 026/620] Fixed non-private function and slightly improved performance --- .../functions/fnc_calculateWindSpeed.sqf | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/addons/weather/functions/fnc_calculateWindSpeed.sqf b/addons/weather/functions/fnc_calculateWindSpeed.sqf index fc1ac81a57..87c6c49d42 100644 --- a/addons/weather/functions/fnc_calculateWindSpeed.sqf +++ b/addons/weather/functions/fnc_calculateWindSpeed.sqf @@ -16,18 +16,20 @@ */ #include "script_component.hpp" -private ["_windSpeed", "_windDir", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"]; +private ["_fnc_polar2vect", "_windSpeed", "_windDir", "_windDirAdjusted", "_height", "_newWindSpeed", "_windSource", "_roughnessLength"]; params ["_position", "_windGradientEnabled", "_terrainEffectEnabled", "_obstacleEffectEnabled"]; -fnc_polar2vect = { +_fnc_polar2vect = { private ["_mag2D"]; - _mag2D = (_this select 0) * cos((_this select 2)); - [_mag2D * sin((_this select 1)), _mag2D * cos((_this select 1)), (_this select 0) * sin((_this select 2))]; + params ["_x", "_y", "_z"]; + _mag2D = _x * cos(_z); + [_mag2D * sin(_y), _mag2D * cos(_y), _x * sin(_z)]; }; _windSpeed = vectorMagnitude ACE_wind; _windDir = (ACE_wind select 0) atan2 (ACE_wind select 1); +_windDirAdjusted = _windDir + 180; // Wind gradient if (_windGradientEnabled) then { @@ -46,19 +48,19 @@ if (_terrainEffectEnabled) then { if (_windSpeed > 0.05) then { _newWindSpeed = 0; { - _windSource = [100, _windDir + 180, _x] call fnc_polar2vect; + _windSource = [100, _windDirAdjusted, _x] call _fnc_polar2vect; if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 9) * _windSpeed; }; - _windSource = [100, _windDir + 180 + _x, 0] call fnc_polar2vect; + _windSource = [100, _windDirAdjusted + _x, 0] call _fnc_polar2vect; if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 9) * _windSpeed; }; - _windSource = [100, _windDir + 180 - _x, 0] call fnc_polar2vect; + _windSource = [100, _windDirAdjusted - _x, 0] call _fnc_polar2vect; if (!(terrainIntersectASL [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 9) * _windSpeed; }; - } forEach [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; + } count [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; _windSpeed = _newWindSpeed; }; }; @@ -68,19 +70,19 @@ if (_obstacleEffectEnabled) then { if (_windSpeed > 0.05) then { _newWindSpeed = 0; { - _windSource = [20, _windDir + 180, _x] call fnc_polar2vect; + _windSource = [20, _windDirAdjusted, _x] call _fnc_polar2vect; if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 2) * _windSpeed; }; - _windSource = [20, _windDir + 180 + _x, 0] call fnc_polar2vect; + _windSource = [20, _windDirAdjusted + _x, 0] call _fnc_polar2vect; if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 2) * _windSpeed; }; - _windSource = [20, _windDir + 180 - _x, 0] call fnc_polar2vect; + _windSource = [20, _windDirAdjusted - _x, 0] call _fnc_polar2vect; if (!(lineIntersects [_position, _position vectorAdd _windSource])) exitWith { _newWindSpeed = cos(_x * 2) * _windSpeed; }; - } forEach [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; + } count [0, 5, 10, 15, 20, 25, 30, 35, 40, 45]; _windSpeed = _newWindSpeed; }; }; From 79e607836b20f828f00f5c0525c42a779e64d123 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 5 Aug 2015 12:51:13 +0100 Subject: [PATCH 027/620] Add contributor email for Head --- AUTHORS.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 70bd7af086..814ab311a3 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -68,8 +68,8 @@ Hamburger SV Harakhti havena Hawkins -Head -jokoho482 ` +Head +jokoho482 Jonpas Karneck Kavinsky From 07e09b60faa7b4b09663d53cb7baa414259bdbb8 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 5 Aug 2015 13:19:47 +0100 Subject: [PATCH 028/620] Stop spectator camera unit changing on corpses Previously the camera would be automatically moved away from corpses (when the unit currently being watched dies). This changes it to stay on them until the view is manually switched as users might want to stick around and watch whatever was going on at the time of death. --- addons/spectator/functions/fnc_handleInterface.sqf | 1 + addons/spectator/functions/fnc_handleUnits.sqf | 6 ++++-- addons/spectator/functions/fnc_transitionCamera.sqf | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 777e8d2ea9..b85e73dabb 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -78,6 +78,7 @@ switch (toLower _mode) do { camDestroy GVAR(camera); // Return to player view + clearRadio; _unit switchCamera "internal"; // Re-enable BI damage effects diff --git a/addons/spectator/functions/fnc_handleUnits.sqf b/addons/spectator/functions/fnc_handleUnits.sqf index b64a1a2717..e8cd561da0 100644 --- a/addons/spectator/functions/fnc_handleUnits.sqf +++ b/addons/spectator/functions/fnc_handleUnits.sqf @@ -26,9 +26,11 @@ if (isNull _display) exitWith { [_this select 1] call CBA_fnc_removePerFrameHand // Remove all dead and null units from the list [] call FUNC(updateUnits); -// Camera shouldn't stay on unit that isn't in the list +// Camera shouldn't stay on unit that isn't in the list (unless dead) if !(GVAR(camUnit) in GVAR(unitList)) then { - [nil,1] call FUNC(cycleCamera); + if (alive GVAR(camUnit) || isNull GVAR(camUnit)) then { + [nil,1] call FUNC(cycleCamera); + }; }; // Reduce overhead when unit tree is hidden diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index a4d99445fb..4957540fa4 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -33,7 +33,7 @@ if !(_newMode in GVAR(availableModes)) then { }; // When no units available to spectate, exit to freecam -if (GVAR(unitList) isEqualTo []) then { +if ((GVAR(unitList) isEqualTo []) && (alive _newUnit || isNull _newUnit)) then { _newMode = 0; _newUnit = objNull; }; From 5200fd6a0298a593fc21d4233de494ff2867a927 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 5 Aug 2015 14:15:27 +0100 Subject: [PATCH 029/620] Add new option to spectator unit filter setting Adds an option to use playableUnits for scenarios where AI playable units are enabled. --- addons/spectator/ACE_Settings.hpp | 4 ++-- addons/spectator/CfgVehicles.hpp | 6 +++++- addons/spectator/functions/fnc_updateUnits.sqf | 2 +- addons/spectator/stringtable.xml | 3 +++ 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/addons/spectator/ACE_Settings.hpp b/addons/spectator/ACE_Settings.hpp index 539f7cef2d..2889fd2e0f 100644 --- a/addons/spectator/ACE_Settings.hpp +++ b/addons/spectator/ACE_Settings.hpp @@ -1,8 +1,8 @@ class ACE_Settings { class GVAR(filterUnits) { typeName = "SCALAR"; - value = 1; - values[] = {CSTRING(units_none), CSTRING(units_players), CSTRING(units_all)}; + value = 2; + values[] = {CSTRING(units_none), CSTRING(units_players), CSTRING(units_playable), CSTRING(units_all)}; }; class GVAR(filterSides) { typeName = "SCALAR"; diff --git a/addons/spectator/CfgVehicles.hpp b/addons/spectator/CfgVehicles.hpp index 8e685dae07..b63f349b0a 100644 --- a/addons/spectator/CfgVehicles.hpp +++ b/addons/spectator/CfgVehicles.hpp @@ -21,11 +21,15 @@ class CfgVehicles { class players { name = CSTRING(units_players); value = 1; + }; + class playable { + name = CSTRING(units_playable); + value = 2; default = 1; }; class all { name = CSTRING(units_all); - value = 2; + value = 3; }; }; }; diff --git a/addons/spectator/functions/fnc_updateUnits.sqf b/addons/spectator/functions/fnc_updateUnits.sqf index ef8fc3b4f1..75f1402179 100644 --- a/addons/spectator/functions/fnc_updateUnits.sqf +++ b/addons/spectator/functions/fnc_updateUnits.sqf @@ -36,7 +36,7 @@ if !(_newUnits isEqualTo []) exitWith { private ["_sides","_cond","_filteredUnits","_color","_icon"]; // Unit setting filter -_newUnits = [[],allPlayers,allUnits] select GVAR(filterUnits); +_newUnits = [[],allPlayers,playableUnits,allUnits] select GVAR(filterUnits); // Side setting filter _sides = []; diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 4eb0e25c0a..5219ba7e2d 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -25,6 +25,9 @@ Only players Tylko gracze + + Playable Units + All units Wszystkie jednostki From 42b5abae116c27cad907aee5cc5dd85ad978c59c Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 5 Aug 2015 19:25:38 +0100 Subject: [PATCH 030/620] Add support for respawn counter to spectator UI Rather than hiding the BI respawn counter, it should be "integrated" into the UI via code if present. --- addons/spectator/UI/interface.hpp | 11 +++++- .../functions/fnc_handleInterface.sqf | 35 +++++++++++++++---- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index e8df31c280..bd6d34339f 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -1,6 +1,15 @@ +// Temporary fix until BI take care of it +class RscFrame { + x = 0; + y = 0; + w = 0; + h = 0; +}; + + class RscButtonMenu; class RscControlsGroupNoScrollbars; -class RscFrame; +//class RscFrame; class RscListNBox; class RscMapControl; class RscPicture; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index b85e73dabb..b6608959b7 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -43,9 +43,8 @@ switch (toLower _mode) do { // Close map openMap [false,false]; - // Disable BI damage effects and remove counter layer + // Disable BI damage effects BIS_fnc_feedback_allowPP = false; - ("BIS_fnc_respawnCounter" call BIS_fnc_rscLayer) cutText ["","plain"]; // Close all existing dialogs while {dialog} do { @@ -81,7 +80,7 @@ switch (toLower _mode) do { clearRadio; _unit switchCamera "internal"; - // Re-enable BI damage effects + // Enable BI damage effects BIS_fnc_feedback_allowPP = true; // Cleanup camera variables @@ -154,9 +153,33 @@ switch (toLower _mode) do { [localize LSTRING(prevUnit),"Left Arrow"] ]; - // Hacky way to enable keybindings - //_display displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; - //_display displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; + // Handle support for BI's respawn counter + [{ + if !(isNull (GETUVAR(RscRespawnCounter,displayNull))) then { + disableSerialization; + private ["_counter","_title","_back","_timer","_frame","_x","_y"]; + _counter = GETUVAR(RscRespawnCounter,displayNull); + _title = _counter displayCtrl 1001; + _back = _counter displayCtrl 1002; + _timer = _counter displayCtrl 1003; + _frame = _counter ctrlCreate ["RscFrame",1008]; + + _x = safeZoneX + safeZoneW - TOOL_W * 4 - MARGIN * 3; + _y = safeZoneY + safeZoneH - TOOL_H; + + // Timer + _title ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; + _back ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; + _timer ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; + _frame ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; + _timer ctrlSetFontHeight TOOL_H; + + _title ctrlCommit 0; + _back ctrlCommit 0; + _timer ctrlCommit 0; + _frame ctrlCommit 0; + }; + },[],0.5] call EFUNC(common,waitAndExecute); }; case "onunload": { // Kill GUI PFHs From c808021c7c9ae480d2d27a4735516ed02f688049 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 5 Aug 2015 21:11:25 +0100 Subject: [PATCH 031/620] Tweak spectator interface layout - Swap the FOV and vision mode tools into a more logical order. - Shorten the unit list to prevent overlay with main UI - Fix name tool on dead units --- addons/spectator/UI/interface.hpp | 14 +++++++------- addons/spectator/functions/fnc_handleToolbar.sqf | 12 ++++++------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index bd6d34339f..2ac33e4a64 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -121,11 +121,11 @@ class GVAR(interface) { idc = -1; style = 64; }; - class fovTool: viewTool { - idc = IDC_TOOL_FOV; + class visionTool: viewTool { + idc = IDC_TOOL_VISION; x = TOOL_W * 3 + MARGIN * 2; }; - class fovFrame: fovTool { + class visionFrame: visionTool { idc = -1; style = 64; }; @@ -137,11 +137,11 @@ class GVAR(interface) { idc = -1; style = 64; }; - class visionTool: viewTool { - idc = IDC_TOOL_VISION; + class fovTool: viewTool { + idc = IDC_TOOL_FOV; x = safeZoneW - TOOL_W * 2 - MARGIN; }; - class visionFrame: visionTool { + class fovFrame: fovTool { idc = -1; style = 64; }; @@ -160,7 +160,7 @@ class GVAR(interface) { x = safeZoneX; y = safeZoneY + TOOL_H * 2; w = TOOL_W * 2; - h = safeZoneH - TOOL_H * 4; + h = safeZoneH - TOOL_H * 6; sizeEx = H_PART(0.8); borderSize = 1; colorBorder[] = {COL_FORE}; diff --git a/addons/spectator/functions/fnc_handleToolbar.sqf b/addons/spectator/functions/fnc_handleToolbar.sqf index fd29ca532e..878f3e46de 100644 --- a/addons/spectator/functions/fnc_handleToolbar.sqf +++ b/addons/spectator/functions/fnc_handleToolbar.sqf @@ -1,6 +1,6 @@ /* * Author: Karel Moricky, SilentSpike - * Handles the spectator UI toolbar values and applies them to the camera + * Handles the spectator UI toolbar values * * Arguments: * 0: Parameters @@ -31,15 +31,15 @@ if (GVAR(camMode) == 0) then { _fov = format ["%1x", floor(GVAR(camZoom) * 100) * 0.01]; _speed = format ["%1 m/s", floor(GVAR(camSpeed) * 100) * 0.01]; } else { - _vision = format ["%1 m", floor(getPosASL GVAR(camUnit) select 2)]; - _fov = [side group GVAR(camUnit)] call BIS_fnc_sideName; + _vision = [side group GVAR(camUnit)] call BIS_fnc_sideName; + _fov = format ["%1 m", floor(getPosASL GVAR(camUnit) select 2)]; _speed = format ["%1 km/h", floor(speed GVAR(camUnit)) max 0]; }; -if (isNull GVAR(camUnit)) then { - _name = localize "STR_Special_None"; -} else { +if (alive GVAR(camUnit)) then { _name = GETVAR(GVAR(camUnit),GVAR(uName),""); +} else { + _name = localize "STR_Special_None"; }; _mode = [localize LSTRING(ViewFree),localize LSTRING(ViewInternal),localize LSTRING(ViewExternal)] select GVAR(camMode); From d1975a593dc6d88755b5792b1bd627181bc6d9f0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 6 Aug 2015 00:39:14 +0100 Subject: [PATCH 032/620] Improve spectator pause menu emulation Makes the fake pause menu closer to the real thing for UX purposes --- .../functions/fnc_handleInterface.sqf | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index b6608959b7..fdd84ee5ef 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -457,10 +457,10 @@ switch (toLower _mode) do { }; } forEach GVAR(unitList); }; - // Other + // Break from interface for escape menu case "escape": { _args params ["_display"]; - private ["_dlg","_key","_index","_ctrl","_config"]; + private "_dlg"; // Kill display _display closeDisplay 0; @@ -474,7 +474,6 @@ switch (toLower _mode) do { GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; - // Below is from EFUNC(common,disableUserInput) createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer); disableSerialization; @@ -484,30 +483,35 @@ switch (toLower _mode) do { !(_key == 1) }]; - for "_index" from 100 to 2000 do { - (_dlg displayCtrl _index) ctrlEnable false; + // Disable save, respawn, options & manual buttons + (_dlg displayCtrl 103) ctrlEnable false; + if !(alive player) then { + (_dlg displayCtrl 1010) ctrlEnable false; }; + (_dlg displayCtrl 101) ctrlEnable false; + (_dlg displayCtrl 122) ctrlEnable false; - _ctrl = _dlg displayctrl 103; - _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {dialog} do {closeDialog 0}; failMission 'LOSER';)]; - _ctrl ctrlEnable true; - _ctrl ctrlSetText "ABORT"; - _ctrl ctrlSetTooltip "Abort."; - - _ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer); - _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1;)]; - _ctrl ctrlEnable (call {_config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}}); - _ctrl ctrlSetText "RESPAWN"; - _ctrl ctrlSetTooltip "Respawn."; + // Initalize abort button (the "spawn" is a necessary evil) + (_dlg displayCtrl 104) ctrlAddEventHandler ["ButtonClick",{_this spawn { + disableSerialization; + _display = ctrlparent (_this select 0); + _abort = [localize "str_msg_confirm_return_lobby",nil,localize "str_disp_xbox_hint_yes",localize "str_disp_xbox_hint_no",_display,nil,true] call BIS_fnc_guiMessage; + if (_abort) then {_display closeDisplay 2; failMission "loser"}; + }}]; // PFH to re-open display when menu closes [{ if !(isNull (findDisplay 49)) exitWith {}; - createDialog QGVAR(interface); - [] call FUNC(transitionCamera); + // If still a spectator then re-enter the interface + if (GVAR(isSet)) then { + createDialog QGVAR(interface); + [] call FUNC(transitionCamera); + }; [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; + + true }; }; From d6cc14a39d20afbd4734ab4c90ddfdbde63cee12 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 6 Aug 2015 00:52:39 +0100 Subject: [PATCH 033/620] Add zeus support to spectator UI Can only use zeus while alive, so it won't work using the respawn template. However it's useful for communities usign custom frameworks --- .../functions/fnc_handleInterface.sqf | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index fdd84ee5ef..defe5332ba 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -225,6 +225,10 @@ switch (toLower _mode) do { case "onkeydown": { _args params ["_display","_dik","_shift","_ctrl","_alt"]; + if ((alive player) && {_dik in (actionKeys "curatorInterface")} && {!isNull (getAssignedCuratorLogic player)}) exitWith { + ["zeus", [_display]] call FUNC(handleInterface); + }; + // Handle held keys (prevent repeat calling) if (_dik in GVAR(heldKeys)) exitwith {}; // Exclude movement keys so that speed can be adjusted on fly @@ -457,7 +461,7 @@ switch (toLower _mode) do { }; } forEach GVAR(unitList); }; - // Break from interface for escape menu + // Break from interface for eexternal events case "escape": { _args params ["_display"]; private "_dlg"; @@ -511,6 +515,38 @@ switch (toLower _mode) do { [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; + }; + case "zeus": { + _args params ["_display"]; + + // Kill display + _display closeDisplay 0; + + // Reset cam/UI vars + GVAR(camBoom) = 0; + GVAR(camDolly) = [0,0]; + + GVAR(ctrlKey) = false; + GVAR(heldKeys) = []; + GVAR(mouse) = [false,false]; + GVAR(mousePos) = [0.5,0.5]; + + openCuratorInterface; + + [{ + // PFH to re-open display when menu closes + [{ + if !((isNull curatorCamera) && {isNull (GETMVAR(bis_fnc_moduleRemoteControl_unit,objNull))}) exitWith {}; + + // If still a spectator then re-enter the interface + if (GVAR(isSet)) then { + createDialog QGVAR(interface); + [] call FUNC(transitionCamera); + }; + + [_this select 1] call CBA_fnc_removePerFrameHandler; + },0] call CBA_fnc_addPerFrameHandler; + },[],5] call EFUNC(common,waitAndExecute); true }; From 92ef0bfe995632527c255099d45862a99a913a3f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 6 Aug 2015 11:34:24 +0100 Subject: [PATCH 034/620] Whitelist spectator free camera boom keys Now that booming the free camera is influenced by the camera speed, the keys should be whitelisted from the held-key prevention system to allow the speed to be adjusted on the move. Also includes a failed attempt to fix the free camera map teleporting functionality. --- addons/spectator/UI/interface.hpp | 2 +- addons/spectator/functions/fnc_handleInterface.sqf | 12 +++++++----- addons/spectator/functions/fnc_transitionCamera.sqf | 4 +++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 2ac33e4a64..182263e7b4 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -180,7 +180,7 @@ class GVAR(interface) { y = safeZoneY; w = safeZoneW; h = safeZoneH; - onMouseButtonDblClick = QUOTE([ARR_2('onMapDblClick',_this)] call FUNC(handleInterface)); + onMouseButtonDown = QUOTE([ARR_2('onMapClick',_this)] call FUNC(handleInterface)); onDraw = QUOTE([ARR_2('onDraw',_this)] call FUNC(handleInterface)); }; class helpSplash: RscControlsGroupNoScrollbars { diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index defe5332ba..502ce65fd4 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -40,8 +40,9 @@ switch (toLower _mode) do { GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); [] call FUNC(transitionCamera); - // Close map + // Close map and clear radio openMap [false,false]; + clearRadio; // Disable BI damage effects BIS_fnc_feedback_allowPP = false; @@ -76,8 +77,9 @@ switch (toLower _mode) do { GVAR(camera) cameraEffect ["terminate", "back"]; camDestroy GVAR(camera); - // Return to player view clearRadio; + + // Return to player view _unit switchCamera "internal"; // Enable BI damage effects @@ -232,7 +234,7 @@ switch (toLower _mode) do { // Handle held keys (prevent repeat calling) if (_dik in GVAR(heldKeys)) exitwith {}; // Exclude movement keys so that speed can be adjusted on fly - if !(_dik in [17,30,31,32]) then { + if !(_dik in [16,17,30,31,32,44]) then { GVAR(heldKeys) pushBack _dik; }; @@ -422,8 +424,8 @@ switch (toLower _mode) do { _tree tvSort [[],false]; }; // Map events - case "onmapdblclick": { - _args params ["_map","_button","_x","_y"]; + case "onmapclick": { + _args params ["_map","_button","_x","_y","_shift","_ctrl","_alt"]; private ["_newPos","_oldZ"]; if ((GVAR(camMode) == 0) && (_button == 0)) then { diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index 4957540fa4..90a2dc776b 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -53,7 +53,9 @@ if (_newMode == 0) then { // Free GVAR(camera) camSetFov -(linearConversion [0.01,2,GVAR(camZoom),-2,-0.01,true]); GVAR(camera) camCommit 0; - // Agent is switched to in free cam to hide death table and prevent AI chat + // Agent is switched to in free cam to hide death table and prevent AI chat while allowing icons to draw + // However, map click events don't fire in free cam for some reason... + // (Why is so much stuff tied into the current camera unit BI?!) if (isNull GVAR(camAgent)) then { GVAR(camAgent) = createAgent ["VirtualMan_F",markerPos QGVAR(respawn),[],0,""]; }; From bcb21b782e1ed9d52ca5c7ac61b30d09e90ef795 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 6 Aug 2015 13:42:31 +0100 Subject: [PATCH 035/620] Overhaul spectator icon handling and rendering - Optimize and improve 3D icon drawing - Combine 2D and 3D PFHs into 1 - Render group icons outside of 200m, unit icons within - Store list of groups on units update to cut down on what needs to be done each frame - Change map control type to 100 to remove all default unit icons - Improve colour caching, group colours don't change, unit colours do - Remove icon setting, toggling should be at users discretion --- addons/spectator/ACE_Settings.hpp | 4 -- addons/spectator/UI/interface.hpp | 3 +- addons/spectator/XEH_preInit.sqf | 2 + .../spectator/functions/fnc_cacheUnitInfo.sqf | 11 +++- .../spectator/functions/fnc_handleIcons.sqf | 57 ++++++++----------- .../functions/fnc_handleInterface.sqf | 32 ++--------- addons/spectator/functions/fnc_handleMap.sqf | 46 +++++++++++++++ .../functions/fnc_transitionCamera.sqf | 6 -- .../spectator/functions/fnc_updateUnits.sqf | 7 ++- addons/spectator/stringtable.xml | 8 --- 10 files changed, 90 insertions(+), 86 deletions(-) create mode 100644 addons/spectator/functions/fnc_handleMap.sqf diff --git a/addons/spectator/ACE_Settings.hpp b/addons/spectator/ACE_Settings.hpp index 2889fd2e0f..78402cff23 100644 --- a/addons/spectator/ACE_Settings.hpp +++ b/addons/spectator/ACE_Settings.hpp @@ -19,8 +19,4 @@ class ACE_Settings { value = 0; values[] = {CSTRING(modes_all), CSTRING(visions_nv), CSTRING(visions_ti), "$STR_Special_None"}; }; - class GVAR(unitIcons) { - typeName = "BOOL"; - value = 1; - }; }; diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 182263e7b4..0b4d33ea75 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -176,12 +176,13 @@ class GVAR(interface) { }; class mapOverlay: RscMapControl { idc = IDC_MAP; + type = 100; x = safeZoneX; y = safeZoneY; w = safeZoneW; h = safeZoneH; onMouseButtonDown = QUOTE([ARR_2('onMapClick',_this)] call FUNC(handleInterface)); - onDraw = QUOTE([ARR_2('onDraw',_this)] call FUNC(handleInterface)); + onDraw = QUOTE(_this call FUNC(handleMap)); }; class helpSplash: RscControlsGroupNoScrollbars { idc = IDC_HELP; diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 95c18f4a54..2c29598ebc 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -8,6 +8,7 @@ PREP(handleCamera); PREP(handleCompass); PREP(handleIcons); PREP(handleInterface); +PREP(handleMap); PREP(handleMouse); PREP(handleToolbar); PREP(handleUnits); @@ -51,5 +52,6 @@ GVAR(showUnit) = true; GVAR(unitList) = []; GVAR(unitBlacklist) = []; GVAR(unitWhitelist) = []; +GVAR(groupList) = []; ADDON = true; diff --git a/addons/spectator/functions/fnc_cacheUnitInfo.sqf b/addons/spectator/functions/fnc_cacheUnitInfo.sqf index 13977bf398..9f40651748 100644 --- a/addons/spectator/functions/fnc_cacheUnitInfo.sqf +++ b/addons/spectator/functions/fnc_cacheUnitInfo.sqf @@ -19,15 +19,20 @@ params ["_unit"]; private ["_color","_icon","_name"]; -_color = [side group _unit] call BIS_fnc_sideColor; +// Group info only needs to be cached once (groups can't change) +if (isNil { GETVAR((group _unit),GVAR(gColor),nil) }) then { + _color = [side group _unit] call BIS_fnc_sideColor; + SETVAR((group _unit),GVAR(gColor),_color); +}; + +// Unit info should be updated each time _icon = getText (configFile >> "CfgVehicles" >> typeOf _unit >> "Icon"); _name = [_unit,false] call EFUNC(common,getName); // Handle CfgVehicleIcons -if isText (configFile >> "CfgVehicleIcons" >> _icon) then { +if (isText (configFile >> "CfgVehicleIcons" >> _icon)) then { _icon = getText (configFile >> "CfgVehicleIcons" >> _icon); }; -SETVAR(_unit,GVAR(uColor),_color); SETVAR(_unit,GVAR(uIcon),_icon); SETVAR(_unit,GVAR(uName),_name); diff --git a/addons/spectator/functions/fnc_handleIcons.sqf b/addons/spectator/functions/fnc_handleIcons.sqf index c52943ad10..72c0d7dee6 100644 --- a/addons/spectator/functions/fnc_handleIcons.sqf +++ b/addons/spectator/functions/fnc_handleIcons.sqf @@ -1,5 +1,5 @@ /* - * Author: SilentSpike + * Author: Head, SilentSpike * Handles rendering the spectator 3D unit icons * * Arguments: @@ -17,41 +17,30 @@ #include "script_component.hpp" -// Kill PFH when not in free cam (or display is closed) -if (isNil QGVAR(iconHandler)) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; - if !(GVAR(showIcons)) exitWith {}; +private ["_refPoint","_drawVehicles","_leader","_color","_txt","_unit"]; -private ["_cachedVehicles","_unit","_cameraPos","_cameraDir","_lambda","_uPos","_cmd","_txt"]; -_cachedVehicles = []; +// Draw groups unless leader is within distance +_refPoint = [GVAR(camera),GVAR(camUnit)] select (GVAR(camMode) > 0); +_drawVehicles = []; { - _unit = vehicle _x; + _leader = leader _x; + if ((_leader distanceSqr _refPoint) > 40000) then { + _color = GETVAR(_x,GVAR(gColor),[ARR_4(0,0,0,0)]); + _txt = groupID _x; - // Only try each vehicle once - if !(_unit in _cachedVehicles) then { - _cachedVehicles pushBack _unit; - - // Within 200m - if ((GVAR(camera) distanceSqr _unit) < 40000) then { - _cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL); - _cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos; - - // Quick oclussion test (taken from interact_menu) - _lambda = ((getPosASL _x) vectorDiff _cameraPos) vectorDotProduct _cameraDir; - if (_lambda > -1) then { - _uPos = worldToScreen (visiblePosition _unit); - - // Only draw if onscreen - if ((_uPos select 0 > safeZoneXAbs) && (_uPos select 0 < safeZoneXAbs + safeZoneWAbs)) then { - if ((_uPos select 1 > safeZoneY) && (_uPos select 1 < safeZoneY + safeZoneH)) then { - // Use commander's info if available - _cmd = [_x, effectiveCommander _unit] select ((effectiveCommander _unit) in GVAR(unitList)); - _txt = ["", GETVAR(_cmd,GVAR(uName),"")] select (isPlayer _cmd); - - drawIcon3D ["\A3\ui_f\data\map\markers\military\dot_CA.paa", GETVAR(_cmd,GVAR(uColor),[ARR_4(0,0,0,0)]), _unit modelToWorldVisual [0,0,3], 0.7, 0.7, 0, _txt, 1, 0.02]; - }; - }; - }; - }; + drawIcon3D ["\A3\ui_f\data\map\markers\nato\b_inf.paa", _color, _leader modelToWorldVisual [0,0,30], 1, 1, 0, _txt, 2, 0.02]; + } else { + _drawVehicles append (units _x); }; -} forEach GVAR(unitList); + false +} count GVAR(groupList); + +// Draw units for groups within distance +{ + _color = GETVAR((group _x),GVAR(gColor),[ARR_4(0,0,0,0)]); + _txt = ["", GETVAR(_x,GVAR(uName),"")] select (isPlayer _x); + + drawIcon3D ["\A3\ui_f\data\map\markers\military\dot_CA.paa", _color, _x modelToWorldVisual [0,0,3], 0.7, 0.7, 0, _txt, 1, 0.02]; + false +} count (_drawVehicles arrayIntersect GVAR(unitList)); diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 502ce65fd4..d58566968c 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -114,6 +114,9 @@ switch (toLower _mode) do { // Keep unit list and tree up to date [FUNC(handleUnits), 21, _display] call CBA_fnc_addPerFrameHandler; + // Handle unit icons on map and 3D + GVAR(iconHandler) = addMissionEventHandler ["Draw3D",FUNC(handleIcons)]; + // Populate the help splash private "_help"; _help = (_display displayCtrl IDC_HELP) controlsGroupCtrl IDC_HELP_LIST; @@ -187,6 +190,7 @@ switch (toLower _mode) do { // Kill GUI PFHs GVAR(camHandler) = nil; GVAR(compHandler) = nil; + removeMissionEventHandler ["Draw3D",GVAR(iconHandler)]; GVAR(iconHandler) = nil; GVAR(toolHandler) = nil; }; @@ -435,34 +439,6 @@ switch (toLower _mode) do { [nil,nil,nil, _newPos] call FUNC(setCameraAttributes); }; }; - case "ondraw": { - _args params ["_map"]; - - if (GVAR(camMode) == 0) then { - _map drawIcon ["\A3\UI_F\Data\GUI\Rsc\RscDisplayMissionEditor\iconcamera_ca.paa",[0,0,0,1],GVAR(camera),24,24,GVAR(camPan)]; - }; - - if !(GVAR(showIcons)) exitWith {}; - - private ["_cachedVehicles","_unit","_color","_icon"]; - _cachedVehicles = []; - { - _unit = vehicle _x; - - if !(_unit in _cachedVehicles) then { - _cachedVehicles pushBack _unit; - - // Use previously cached info where possible - if (isNil { GETVAR(_unit,GVAR(uIcon),nil) }) then { - [_unit] call FUNC(cacheUnitInfo); - }; - - _color = GETVAR(_unit,GVAR(uColor),[ARR_4(0,0,0,0)]); - _icon = GETVAR(_unit,GVAR(uIcon),""); - _map drawIcon [_icon, _color, _unit, 24, 24, getDir _unit]; - }; - } forEach GVAR(unitList); - }; // Break from interface for eexternal events case "escape": { _args params ["_display"]; diff --git a/addons/spectator/functions/fnc_handleMap.sqf b/addons/spectator/functions/fnc_handleMap.sqf new file mode 100644 index 0000000000..a0000718bd --- /dev/null +++ b/addons/spectator/functions/fnc_handleMap.sqf @@ -0,0 +1,46 @@ +/* + * Author: Head, SilentSpike + * Handles rendering the spectator map icons + * + * Arguments: + * 0: Parameters + * 1: PFH handle + * + * Return Value: + * None + * + * Example: + * [ace_spectator_fnc_handleIcons, 0] call CBA_fnc_addPerFrameHandler; + * + * Public: No + */ + +#include "script_component.hpp" + +params ["_map"]; +private ["_cachedVehicles","_unit","_color","_icon"]; + +if (GVAR(camMode) == 0) then { + _map drawIcon ["\A3\UI_F\Data\GUI\Rsc\RscDisplayMissionEditor\iconcamera_ca.paa",[0,0,0,1],GVAR(camera),20,20,GVAR(camPan)]; +}; + +_cachedVehicles = []; +{ + _unit = vehicle _x; + + if !(_unit in _cachedVehicles) then { + _cachedVehicles pushBack _unit; + + // Use previously cached info where possible + if (GETVAR(_unit,GVAR(uIcon),"") == "") then { + [_unit] call FUNC(cacheUnitInfo); + }; + + // Function has caching built in + _color = [side effectiveCommander _unit] call BIS_fnc_sideColor; + _icon = GETVAR(_unit,GVAR(uIcon),""); + + _map drawIcon [_icon, _color, _unit, 19, 19, getDir _unit]; + }; + false +} count GVAR(unitList); diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index 90a2dc776b..b35b61b311 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -79,11 +79,6 @@ if (_newMode == 0) then { // Free // Handle camera movement if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; - - // Handle unit icons - if (GVAR(unitIcons)) then { - if (isNil QGVAR(iconHandler)) then { GVAR(iconHandler) = [FUNC(handleIcons), 0] call CBA_fnc_addPerFrameHandler; }; - }; } else { // When null unit is given choose random if (isNull _newUnit) then { @@ -111,7 +106,6 @@ if (_newMode == 0) then { // Free // Terminate camera view GVAR(camera) cameraEffect ["terminate", "back"]; GVAR(camHandler) = nil; - GVAR(iconHandler) = nil; cameraEffectEnableHUD true; }; diff --git a/addons/spectator/functions/fnc_updateUnits.sqf b/addons/spectator/functions/fnc_updateUnits.sqf index 75f1402179..50494cf499 100644 --- a/addons/spectator/functions/fnc_updateUnits.sqf +++ b/addons/spectator/functions/fnc_updateUnits.sqf @@ -33,7 +33,7 @@ if !(_newUnits isEqualTo []) exitWith { }; }; -private ["_sides","_cond","_filteredUnits","_color","_icon"]; +private ["_sides","_cond","_filteredUnits","_filteredGroups"]; // Unit setting filter _newUnits = [[],allPlayers,playableUnits,allUnits] select GVAR(filterUnits); @@ -63,10 +63,13 @@ _filteredUnits = []; _filteredUnits append GVAR(unitWhitelist); // Cache icons and colour for drawing +_filteredGroups = []; { // Intentionally re-applied to units in case their status changes [_x] call FUNC(cacheUnitInfo); + _filteredGroups pushBack (group _x); } forEach _filteredUnits; -// Replace previous list entirely (removes any no longer valid) +// Replace previous lists entirely (removes any no longer valid) GVAR(unitList) = _filteredUnits arrayIntersect _filteredUnits; +GVAR(groupList) = _filteredGroups arrayIntersect _filteredGroups; diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 5219ba7e2d..4d615d4e1e 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -100,14 +100,6 @@ Thermal imaging Termowizja - - Unit icons - Ikony jednostek - - - Render icons above spectatable units. - Renderuj ikony nad głowami jednostek, które można obserwować. - Spectator Controls From 4c9b6e94cfa915a70b3911d18acda892c7ff8c66 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 00:05:21 +0100 Subject: [PATCH 036/620] Overhaul and improve spectator unit tree UX The old method of refreshing the tree on each update would reset all expanded/collapsed nodes. Now the code will cull any units/groups/sides no longer spectatable from the list and cache the ones that are still valid. The cached data is then used to populate the list with new units. Add coloured unit icons beside units in the list for quick user reference of side and type. Store group netIDs in respective nodes for possible use in code. --- addons/spectator/UI/interface.hpp | 4 +- .../functions/fnc_handleInterface.sqf | 85 ++++++++++++------- 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 0b4d33ea75..ea5f5f0e53 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -158,9 +158,9 @@ class GVAR(interface) { class unitTree: RscTree { idc = IDC_UNIT; x = safeZoneX; - y = safeZoneY + TOOL_H * 2; + y = safeZoneY + TOOL_H * 6; w = TOOL_W * 2; - h = safeZoneH - TOOL_H * 6; + h = safeZoneH - TOOL_H * 13; sizeEx = H_PART(0.8); borderSize = 1; colorBorder[] = {COL_FORE}; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index d58566968c..9687ba8b2a 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -367,17 +367,43 @@ switch (toLower _mode) do { }; case "onunitsupdate": { _args params ["_tree"]; - private ["_curSelData","_cachedGrps","_cachedSides","_grp","_side","_sNode","_gNode","_uNode"]; + private ["_cachedUnits","_cachedGrps","_cachedSides","_s","_g","_grp","_u","_unit","_side"]; - // Cache current selection - _curSelData = _tree tvData (tvCurSel _tree); - - // Clear the tree - tvClear _tree; - - // Update the tree from the unit list + // Cache existing group and side nodes and cull removed data + _cachedUnits = []; _cachedGrps = []; _cachedSides = []; + for "_s" from 0 to ((_tree tvCount []) - 1) do { + for "_g" from 0 to ((_tree tvCount [_s]) - 1) do { + _grp = groupFromNetID (_tree tvData [_s,_g]); + + if (_grp in GVAR(groupList)) then { + _cachedGrps pushBack _grp; + _cachedGrps pushBack _g; + + for "_u" from 0 to ((_tree tvCount [_s,_g])) do { + _unit = objectFromNetId (_tree tvData [_s,_g,_u]); + + if (_unit in GVAR(unitList)) then { + _cachedUnits pushBack _unit; + } else { + _tree tvDelete [_s,_g,_u]; + }; + }; + } else { + _tree tvDelete [_s,_g]; + }; + }; + + if ((_tree tvCount [_s]) > 0) then { + _cachedSides pushBack (_tree tvText [_s]); + _cachedSides pushBack _s; + } else { + _tree tvDelete [_s]; + }; + }; + + // Update the tree from the unit list { _grp = group _x; _side = [side _grp] call BIS_fnc_sideName; @@ -385,47 +411,42 @@ switch (toLower _mode) do { // Use correct side node if !(_side in _cachedSides) then { // Add side node - _sNode = _tree tvAdd [[], _side]; + _s = _tree tvAdd [[], _side]; + _tree tvExpand [_s]; _cachedSides pushBack _side; - _cachedSides pushBack _sNode; + _cachedSides pushBack _s; } else { // If side already processed, use existing node - _sNode = _cachedSides select ((_cachedSides find _side) + 1); + _s = _cachedSides select ((_cachedSides find _side) + 1); }; // Use correct group node if !(_grp in _cachedGrps) then { // Add group node - _gNode = _tree tvAdd [[_sNode], groupID _grp]; + _g = _tree tvAdd [[_s], groupID _grp]; + _tree tvSetData [[_s,_g], netID _grp]; _cachedGrps pushBack _grp; - _cachedGrps pushBack _gNode; + _cachedGrps pushBack _g; } else { // If group already processed, use existing node - _gNode = _cachedGrps select ((_cachedGrps find _grp) + 1); + _g = _cachedGrps select ((_cachedGrps find _grp) + 1); }; - _uNode = _tree tvAdd [[_sNode,_gNode], GETVAR(_x,GVAR(uName),"")]; - _tree tvSetData [[_sNode,_gNode,_uNode], netID _x]; + _u = _tree tvAdd [[_s,_g], GETVAR(_x,GVAR(uName),"")]; + _tree tvSetData [[_s,_g,_u], netID _x]; + _tree tvSetPicture [[_s,_g,_u], GETVAR(_x,GVAR(uIcon),"")]; + _tree tvSetPictureColor [[_s,_g,_u], GETVAR(_grp,GVAR(gColor),[ARR_4(1,1,1,1)])]; - // Preserve the previous selection - if (_curSelData == (_tree tvData [_sNode,_gNode,_uNode])) then { - _tree tvSetCurSel [_sNode,_gNode,_uNode]; - }; - - _tree tvSort [[_sNode,_gNode],false]; - _tree tvExpand [_sNode,_gNode]; - } forEach GVAR(unitList); - - { - if (typeName _x == "SCALAR") then { - _tree tvSort [[_x],false]; - _tree tvExpand [_x]; - }; - } forEach _cachedSides; + _tree tvSort [[_s,_g],false]; + } forEach (GVAR(unitList) - _cachedUnits); _tree tvSort [[],false]; + + if ((_tree tvCount []) <= 0) then { + _tree tvAdd [[], localize LSTRING(units_none)]; + }; }; // Map events case "onmapclick": { @@ -439,7 +460,7 @@ switch (toLower _mode) do { [nil,nil,nil, _newPos] call FUNC(setCameraAttributes); }; }; - // Break from interface for eexternal events + // Break from interface for external events case "escape": { _args params ["_display"]; private "_dlg"; From f59536b5a3c26c1bee28f77ae01c8d739c06ad19 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 00:28:54 +0100 Subject: [PATCH 037/620] Remove legacy spectator settings module argument --- addons/spectator/CfgVehicles.hpp | 6 ------ addons/spectator/functions/fnc_moduleSpectatorSettings.sqf | 1 - 2 files changed, 7 deletions(-) diff --git a/addons/spectator/CfgVehicles.hpp b/addons/spectator/CfgVehicles.hpp index b63f349b0a..f6869462ac 100644 --- a/addons/spectator/CfgVehicles.hpp +++ b/addons/spectator/CfgVehicles.hpp @@ -109,12 +109,6 @@ class CfgVehicles { }; }; }; - class unitIcons { - displayName = CSTRING(icons_DisplayName); - description = CSTRING(icons_Description); - typeName = "BOOL"; - defaultValue = 1; - }; }; class ModuleDescription { description = CSTRING(Settings_Description); diff --git a/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf b/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf index c23fb7ad20..52b6e5d8fa 100644 --- a/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf +++ b/addons/spectator/functions/fnc_moduleSpectatorSettings.sqf @@ -23,4 +23,3 @@ if !(_activated) exitWith {}; [_logic, QGVAR(filterSides), "sidesFilter"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(restrictModes), "cameraModes"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(restrictVisions), "visionModes"] call EFUNC(common,readSettingFromModule); -[_logic, QGVAR(unitIcons), "unitIcons"] call EFUNC(common,readSettingFromModule); From 043c5c47c5765c64d32e8df23d408db87a8df75b Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 01:44:32 +0100 Subject: [PATCH 038/620] Improve spectator help window layout Having the help window in the centre of the screen blocked too much of the users view and also clashed with the MPTable element (the table that appears on death, aka "respawnDialog"). It was moved to the right of the screen and now mirrors the unit list. To save screen space, the action keys are given as tooltips for the listbox entries so users must mouse over for more info. --- addons/spectator/UI/interface.hpp | 53 +++++++++++-------- .../functions/fnc_handleInterface.sqf | 39 +++++++------- 2 files changed, 50 insertions(+), 42 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index ea5f5f0e53..5dbea22273 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -10,7 +10,7 @@ class RscFrame { class RscButtonMenu; class RscControlsGroupNoScrollbars; //class RscFrame; -class RscListNBox; +class RscListBox; class RscMapControl; class RscPicture; class RscText; @@ -163,12 +163,13 @@ class GVAR(interface) { h = safeZoneH - TOOL_H * 13; sizeEx = H_PART(0.8); borderSize = 1; + colorText[] = {COL_FORE}; colorBorder[] = {COL_FORE}; colorBackground[] = {COL_BACK}; colorSelect[] = { - "(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])", - "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])", - "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])", + QUOTE(GETPRVAR(GUI_BCG_RGB_R,0.77)), + QUOTE(GETPRVAR(GUI_BCG_RGB_G,0.51)), + QUOTE(GETPRVAR(GUI_BCG_RGB_B,0.08)), 1 }; multiselectEnabled = 0; @@ -184,35 +185,43 @@ class GVAR(interface) { onMouseButtonDown = QUOTE([ARR_2('onMapClick',_this)] call FUNC(handleInterface)); onDraw = QUOTE(_this call FUNC(handleMap)); }; - class helpSplash: RscControlsGroupNoScrollbars { + class helpWindow: RscControlsGroupNoScrollbars { idc = IDC_HELP; - x = 0.5 - W_PART(12); - y = 0.5 - H_PART(12); - w = W_PART(24); - h = H_PART(24); + x = safeZoneX + safeZoneW - TOOL_W * 2; + y = safeZoneY + TOOL_H * 6; + w = TOOL_W * 2; + h = safeZoneH - TOOL_H * 13; + colorText[] = {COL_FORE}; + colorSelectBackground[] = {COL_FORE_D}; + colorSelectBackground2[] = {COL_BACK}; + colorBackground[] = {0,0,0,0}; class controls { - class helpBack: RscText { + class helpTitle: RscText { x = 0; y = 0; - w = W_PART(24); - h = H_PART(24); - colorBackground[] = {COL_BACK}; - }; - class helpTitle: helpBack { + w = TOOL_W * 2; h = H_PART(1); - colorText[]={COL_FORE}; + colorText[] = {COL_FORE}; colorBackground[] = {COL_FORE_D}; sizeEx = H_PART(1); text = CSTRING(HelpTitle); }; - class helpContent: RscListNBox { + class helpContent: RscListBox { idc = IDC_HELP_LIST; - x = W_PART(1); - y = H_PART(2); - W = W_PART(22); - H = H_PART(21); + x = 0; + y = H_PART(1); + w = TOOL_W * 2; + h = safeZoneH - TOOL_H * 14; + colorBackground[] = {COL_BACK}; default = 1; - columns[] = {0.01,0.5}; + }; + class helpFrame: RscText { + x = 0; + y = 0; + w = TOOL_W * 2; + h = safeZoneH - TOOL_H * 13; + colorText[] = {COL_FORE}; + style = 64; }; }; }; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 9687ba8b2a..ef3363b72c 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -117,27 +117,27 @@ switch (toLower _mode) do { // Handle unit icons on map and 3D GVAR(iconHandler) = addMissionEventHandler ["Draw3D",FUNC(handleIcons)]; - // Populate the help splash + // Populate the help window private "_help"; _help = (_display displayCtrl IDC_HELP) controlsGroupCtrl IDC_HELP_LIST; { - // Add space before category titles - if (count _x == 1) then { - _help lnbAddRow [""]; + _i = _help lbAdd (_x select 0); + if ((_x select 1) == "") then { + _help lbSetPicture [_i,"\A3\ui_f\data\map\markers\military\dot_CA.paa"]; + _help lbSetPictureColor [_i,[COL_FORE]]; + } else { + _help lbSetTooltip [_i,_x select 1]; }; - - _help lnbAddRow _x; } forEach [ [localize LSTRING(uiControls),""], - [localize LSTRING(uiToggleHelp),"H"], - [localize LSTRING(uiToggleMap),"M"], [localize LSTRING(uiToggleUnits),"1"], - [localize LSTRING(uiToggleTools),"2"], - [localize LSTRING(uiToggleCompass),"3"], - [localize LSTRING(uiToggleIcons),"4"], + [localize LSTRING(uiToggleHelp),"2"], + [localize LSTRING(uiToggleTools),"3"], + [localize LSTRING(uiToggleCompass),"4"], + [localize LSTRING(uiToggleIcons),"5"], + [localize LSTRING(uiToggleMap),"M"], [localize LSTRING(uiToggleInterface),"Backspace"], - - [localize LSTRING(freeCamControls)], + [localize LSTRING(freeCamControls),""], [localize LSTRING(freeCamForward),"W"], [localize LSTRING(freeCamBackward),"S"], [localize LSTRING(freeCamLeft),"A"], @@ -150,8 +150,7 @@ switch (toLower _mode) do { [localize LSTRING(freeCamZoom),"Ctrl + Scrollwheel"], [localize LSTRING(freeCamNextVis),"N"], [localize LSTRING(freeCamPrevVis),"Ctrl + N"], - - [localize LSTRING(otherControls)], + [localize LSTRING(otherControls),""], [localize LSTRING(nextCam),"Up Arrow"], [localize LSTRING(prevCam),"Down Arrow"], [localize LSTRING(nextUnit),"Right Arrow"], @@ -250,12 +249,15 @@ switch (toLower _mode) do { [_display,nil,nil,nil,nil,nil,true] call FUNC(toggleInterface); }; case 3: { // 2 - [_display,nil,nil,nil,nil,true] call FUNC(toggleInterface); + [_display,nil,true] call FUNC(toggleInterface); }; case 4: { // 3 - [_display,true] call FUNC(toggleInterface); + [_display,nil,nil,nil,nil,true] call FUNC(toggleInterface); }; case 5: { // 4 + [_display,true] call FUNC(toggleInterface); + }; + case 6: { // 5 GVAR(showIcons) = !GVAR(showIcons); }; case 14: { // Backspace @@ -279,9 +281,6 @@ switch (toLower _mode) do { case 32: { // D GVAR(camDolly) set [0, GVAR(camSpeed)]; }; - case 35: { // H - [_display,nil,true] call FUNC(toggleInterface); - }; case 44: { // Z GVAR(camBoom) = -0.5 * GVAR(camSpeed); }; From 485f9438bb1e2aa56e908156b0a7fd5f883a69d5 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 01:51:46 +0100 Subject: [PATCH 039/620] Change spectator UI toggle to include help window With new layout of help window the toggle UX also changes. User expects help window to toggle as part of overall UI. --- .../spectator/functions/fnc_toggleInterface.sqf | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/addons/spectator/functions/fnc_toggleInterface.sqf b/addons/spectator/functions/fnc_toggleInterface.sqf index 609c7cd757..4a03de4271 100644 --- a/addons/spectator/functions/fnc_toggleInterface.sqf +++ b/addons/spectator/functions/fnc_toggleInterface.sqf @@ -31,17 +31,8 @@ _map = _display displayCtrl IDC_MAP; _tool = _display displayCtrl IDC_TOOL; _unit = _display displayCtrl IDC_UNIT; -// Map and help operate outside of interface -GVAR(showHelp) = [GVAR(showHelp), !GVAR(showHelp)] select _toggleHelp; +// Map operates outside of interface GVAR(showMap) = [GVAR(showMap), !GVAR(showMap)] select _toggleMap; - -// When help changes with map open, minimise the map -if (GVAR(showMap) && _toggleHelp) then { - GVAR(showHelp) = true; - GVAR(showMap) = false; -}; - -_help ctrlShow GVAR(showHelp); _map ctrlShow GVAR(showMap); if (GVAR(showMap)) then { @@ -62,16 +53,18 @@ if (GVAR(showMap)) then { if (GVAR(showInterface)) then { // Can only toggle interface elements with interface shown GVAR(showComp) = [GVAR(showComp), !GVAR(showComp)] select _toggleComp; + GVAR(showHelp) = [GVAR(showHelp), !GVAR(showHelp)] select _toggleHelp; GVAR(showTool) = [GVAR(showTool), !GVAR(showTool)] select _toggleTool; GVAR(showUnit) = [GVAR(showUnit), !GVAR(showUnit)] select _toggleUnit; _comp ctrlShow GVAR(showComp); + _help ctrlShow GVAR(showHelp); _tool ctrlShow GVAR(showTool); _unit ctrlShow GVAR(showUnit); } else { { _x ctrlShow false; - } forEach [_comp,_tool,_unit]; + } forEach [_comp,_help,_tool,_unit]; }; }; From f143db7fc067133e53e81897ff614297a5a25109 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 12:07:22 +0100 Subject: [PATCH 040/620] Draw player names on spectator map --- addons/spectator/UI/interface.hpp | 6 +++--- addons/spectator/functions/fnc_handleMap.sqf | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 5dbea22273..51105b216b 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -167,9 +167,9 @@ class GVAR(interface) { colorBorder[] = {COL_FORE}; colorBackground[] = {COL_BACK}; colorSelect[] = { - QUOTE(GETPRVAR(GUI_BCG_RGB_R,0.77)), - QUOTE(GETPRVAR(GUI_BCG_RGB_G,0.51)), - QUOTE(GETPRVAR(GUI_BCG_RGB_B,0.08)), + "profilenamespace getvariable ['GUI_BCG_RGB_R',0.77]", + "profilenamespace getvariable ['GUI_BCG_RGB_G',0.51]", + "profilenamespace getvariable ['GUI_BCG_RGB_B',0.08]", 1 }; multiselectEnabled = 0; diff --git a/addons/spectator/functions/fnc_handleMap.sqf b/addons/spectator/functions/fnc_handleMap.sqf index a0000718bd..4eeb5fd7e1 100644 --- a/addons/spectator/functions/fnc_handleMap.sqf +++ b/addons/spectator/functions/fnc_handleMap.sqf @@ -18,7 +18,7 @@ #include "script_component.hpp" params ["_map"]; -private ["_cachedVehicles","_unit","_color","_icon"]; +private ["_cachedVehicles","_unit","_color","_icon","_txt"]; if (GVAR(camMode) == 0) then { _map drawIcon ["\A3\UI_F\Data\GUI\Rsc\RscDisplayMissionEditor\iconcamera_ca.paa",[0,0,0,1],GVAR(camera),20,20,GVAR(camPan)]; @@ -39,8 +39,9 @@ _cachedVehicles = []; // Function has caching built in _color = [side effectiveCommander _unit] call BIS_fnc_sideColor; _icon = GETVAR(_unit,GVAR(uIcon),""); + _txt = ["", GETVAR(_x,GVAR(uName),"")] select (isPlayer _x); - _map drawIcon [_icon, _color, _unit, 19, 19, getDir _unit]; + _map drawIcon [_icon, _color, _unit, 19, 19, getDir _unit, _txt, 1, 0.03]; }; false } count GVAR(unitList); From 702e50b731fd849c59a1ee1a7e531601ff703b52 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 12:30:50 +0100 Subject: [PATCH 041/620] Improve spectator UI respawn counter blending When the BI respawn counter is blended with the spectator UI its colours are also updated to match --- addons/spectator/functions/fnc_handleInterface.sqf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index ef3363b72c..db701366b0 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -176,7 +176,11 @@ switch (toLower _mode) do { _back ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; _timer ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; _frame ctrlSetPosition [_x,_y,TOOL_W,TOOL_H]; + + _title ctrlSetBackgroundColor [0,0,0,0]; + _back ctrlSetBackgroundColor [COL_BACK]; _timer ctrlSetFontHeight TOOL_H; + _frame ctrlSetTextColor [COL_FORE]; _title ctrlCommit 0; _back ctrlCommit 0; From 1c79c8fa45fc55c85cd90458803879ae22a8e6de Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 15:15:04 +0100 Subject: [PATCH 042/620] Update spectator UI styling Adds a title to the unit tree to match the help list and enters the title text. --- addons/spectator/UI/interface.hpp | 67 +++++++++++++------ .../spectator/functions/fnc_handleUnits.sqf | 2 +- addons/spectator/script_component.hpp | 5 +- addons/spectator/stringtable.xml | 3 + 4 files changed, 53 insertions(+), 24 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 51105b216b..a7790d6da0 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -137,11 +137,11 @@ class GVAR(interface) { idc = -1; style = 64; }; - class fovTool: viewTool { + class zoomTool: viewTool { idc = IDC_TOOL_FOV; x = safeZoneW - TOOL_W * 2 - MARGIN; }; - class fovFrame: fovTool { + class zoomFrame: zoomTool { idc = -1; style = 64; }; @@ -155,25 +155,52 @@ class GVAR(interface) { }; }; }; - class unitTree: RscTree { + class unitTree: RscControlsGroupNoScrollbars { idc = IDC_UNIT; x = safeZoneX; y = safeZoneY + TOOL_H * 6; w = TOOL_W * 2; h = safeZoneH - TOOL_H * 13; - sizeEx = H_PART(0.8); - borderSize = 1; - colorText[] = {COL_FORE}; - colorBorder[] = {COL_FORE}; - colorBackground[] = {COL_BACK}; - colorSelect[] = { - "profilenamespace getvariable ['GUI_BCG_RGB_R',0.77]", - "profilenamespace getvariable ['GUI_BCG_RGB_G',0.51]", - "profilenamespace getvariable ['GUI_BCG_RGB_B',0.08]", - 1 + class controls { + class unitTitle: RscText { + x = 0; + y = 0; + w = TOOL_W * 2; + h = H_PART(1); + style = 2; + colorText[] = {COL_FORE}; + colorBackground[] = {COL_FORE_D}; + sizeEx = H_PART(1); + text = CSTRING(UnitTitle); + }; + class unitTree: RscTree { + idc = IDC_UNIT_TREE; + x = 0; + y = H_PART(1); + w = TOOL_W * 2; + h = safeZoneH - TOOL_H * 14; + sizeEx = H_PART(0.8); + colorText[] = {COL_FORE}; + colorBorder[] = {0,0,0,0}; + colorBackground[] = {COL_BACK}; + colorSelect[] = { + "profilenamespace getvariable ['GUI_BCG_RGB_R',0.77]", + "profilenamespace getvariable ['GUI_BCG_RGB_G',0.51]", + "profilenamespace getvariable ['GUI_BCG_RGB_B',0.08]", + 1 + }; + multiselectEnabled = 0; + onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface)); + }; + class unitFrame: RscFrame { + x = 0; + y = 0; + w = TOOL_W * 2; + h = safeZoneH - TOOL_H * 13; + shadow = 2; + colorText[] = {COL_FORE}; + }; }; - multiselectEnabled = 0; - onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface)); }; class mapOverlay: RscMapControl { idc = IDC_MAP; @@ -191,16 +218,13 @@ class GVAR(interface) { y = safeZoneY + TOOL_H * 6; w = TOOL_W * 2; h = safeZoneH - TOOL_H * 13; - colorText[] = {COL_FORE}; - colorSelectBackground[] = {COL_FORE_D}; - colorSelectBackground2[] = {COL_BACK}; - colorBackground[] = {0,0,0,0}; class controls { class helpTitle: RscText { x = 0; y = 0; w = TOOL_W * 2; h = H_PART(1); + style = 2; colorText[] = {COL_FORE}; colorBackground[] = {COL_FORE_D}; sizeEx = H_PART(1); @@ -213,15 +237,16 @@ class GVAR(interface) { w = TOOL_W * 2; h = safeZoneH - TOOL_H * 14; colorBackground[] = {COL_BACK}; + sizeEx = H_PART(0.8); default = 1; }; - class helpFrame: RscText { + class helpFrame: RscFrame { x = 0; y = 0; w = TOOL_W * 2; h = safeZoneH - TOOL_H * 13; + shadow = 2; colorText[] = {COL_FORE}; - style = 64; }; }; }; diff --git a/addons/spectator/functions/fnc_handleUnits.sqf b/addons/spectator/functions/fnc_handleUnits.sqf index e8cd561da0..c32961024c 100644 --- a/addons/spectator/functions/fnc_handleUnits.sqf +++ b/addons/spectator/functions/fnc_handleUnits.sqf @@ -36,5 +36,5 @@ if !(GVAR(camUnit) in GVAR(unitList)) then { // Reduce overhead when unit tree is hidden if (ctrlShown (_display displayCtrl IDC_UNIT)) then { // Reduce overhead by spreading across frames - [FUNC(handleInterface),["onUnitsUpdate",[_display displayCtrl IDC_UNIT]],1] call EFUNC(common,waitAndExecute); + [FUNC(handleInterface),["onUnitsUpdate",[(_display displayCtrl IDC_UNIT) controlsGroupCtrl IDC_UNIT_TREE]],1] call EFUNC(common,waitAndExecute); }; diff --git a/addons/spectator/script_component.hpp b/addons/spectator/script_component.hpp index a726c6c67f..de2ee22363 100644 --- a/addons/spectator/script_component.hpp +++ b/addons/spectator/script_component.hpp @@ -49,8 +49,9 @@ #define IDC_TOOL_VISION 3004 #define IDC_UNIT 6002 +#define IDC_UNIT_TREE 6005 // UI colours -#define COL_BACK 0.1,0.1,0.1,0.8 +#define COL_BACK 0.1,0.1,0.1,0.7 #define COL_FORE 1,1,1,1 -#define COL_FORE_D 0.1,0.1,0.1,1 +#define COL_FORE_D 0.1,0.1,0.1,0.8 diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 4d615d4e1e..30af5d1aa6 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -101,6 +101,9 @@ Termowizja + + Spectator Units + Spectator Controls Sterowanie obserwatorem From c5d9ec5d500a83db1bc3e85c4dc9c005f89f8fb0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 18:59:48 +0100 Subject: [PATCH 043/620] Add speed boost button to spectator free camera Sometimes you just want a burst of speed rather than to adjust it and then adjust it back. Also swapped the speed/zoom scrolling modifier around. --- .../functions/fnc_handleInterface.sqf | 33 ++++++++++--------- addons/spectator/stringtable.xml | 3 ++ 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index db701366b0..80d87cf40a 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -114,7 +114,7 @@ switch (toLower _mode) do { // Keep unit list and tree up to date [FUNC(handleUnits), 21, _display] call CBA_fnc_addPerFrameHandler; - // Handle unit icons on map and 3D + // Handle 3D unit icons GVAR(iconHandler) = addMissionEventHandler ["Draw3D",FUNC(handleIcons)]; // Populate the help window @@ -146,8 +146,9 @@ switch (toLower _mode) do { [localize LSTRING(freeCamDown),"Z"], [localize LSTRING(freeCamPan),"RMB (Hold)"], [localize LSTRING(freeCamDolly),"LMB (Hold)"], - [localize LSTRING(freeCamSpeed),"Scrollwheel"], - [localize LSTRING(freeCamZoom),"Ctrl + Scrollwheel"], + [localize LSTRING(freeCamZoom),"Scrollwheel"], + [localize LSTRING(freeCamSpeed),"Ctrl + Scrollwheel"], + [localize LSTRING(freeCamBoost),"Shift (Hold)"], [localize LSTRING(freeCamNextVis),"N"], [localize LSTRING(freeCamPrevVis),"Ctrl + N"], [localize LSTRING(otherControls),""], @@ -220,9 +221,9 @@ switch (toLower _mode) do { // Scroll to change speed, modifier for zoom if (GVAR(ctrlKey)) then { - [nil,nil,nil,nil,nil,nil, GVAR(camZoom) + _zChange * 0.1] call FUNC(setCameraAttributes); - } else { [nil,nil,nil,nil,nil,nil,nil, GVAR(camSpeed) + _zChange * 0.2] call FUNC(setCameraAttributes); + } else { + [nil,nil,nil,nil,nil,nil, GVAR(camZoom) + _zChange * 0.1] call FUNC(setCameraAttributes); }; }; case "onmousemoving": { @@ -268,31 +269,33 @@ switch (toLower _mode) do { [_display,nil,nil,true] call FUNC(toggleInterface); }; case 16: { // Q - GVAR(camBoom) = 0.5 * GVAR(camSpeed); + GVAR(camBoom) = 0.5 * GVAR(camSpeed) * ([1, 2] select _shift); }; case 17: { // W - GVAR(camDolly) set [1, GVAR(camSpeed)]; + GVAR(camDolly) set [1, GVAR(camSpeed) * ([1, 2] select _shift)]; }; case 29: { // Ctrl GVAR(ctrlKey) = true; }; case 30: { // A - GVAR(camDolly) set [0, -GVAR(camSpeed)]; + GVAR(camDolly) set [0, -GVAR(camSpeed) * ([1, 2] select _shift)]; }; case 31: { // S - GVAR(camDolly) set [1, -GVAR(camSpeed)]; + GVAR(camDolly) set [1, -GVAR(camSpeed) * ([1, 2] select _shift)]; }; case 32: { // D - GVAR(camDolly) set [0, GVAR(camSpeed)]; + GVAR(camDolly) set [0, GVAR(camSpeed) * ([1, 2] select _shift)]; }; case 44: { // Z - GVAR(camBoom) = -0.5 * GVAR(camSpeed); + GVAR(camBoom) = -0.5 * GVAR(camSpeed) * ([1, 2] select _shift); }; case 49: { // N - if (_ctrl) then { - [nil,nil,-1] call FUNC(cycleCamera); - } else { - [nil,nil,1] call FUNC(cycleCamera); + if (GVAR(camMode) == 0) then { + if (_ctrl) then { + [nil,nil,-1] call FUNC(cycleCamera); + } else { + [nil,nil,1] call FUNC(cycleCamera); + }; }; }; case 50: { // M diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 30af5d1aa6..b174608d03 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -181,6 +181,9 @@ Speed +/- Prędkość +/- + + Speed Boost + Next Vision Mode Następny tryb wizji From 57bda372f0f221f049ecbeebf9d9f0d2ff88ae15 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 7 Aug 2015 19:00:31 +0100 Subject: [PATCH 044/620] Adjust spectator free camera speed with zoom --- addons/spectator/functions/fnc_handleCamera.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/spectator/functions/fnc_handleCamera.sqf b/addons/spectator/functions/fnc_handleCamera.sqf index 7f53b59009..1d1d5bef9e 100644 --- a/addons/spectator/functions/fnc_handleCamera.sqf +++ b/addons/spectator/functions/fnc_handleCamera.sqf @@ -23,9 +23,9 @@ if (isNil QGVAR(camHandler)) exitWith { [_this select 1] call CBA_fnc_removePerF private ["_oldPos","_mX","_mY","_mZ","_pan","_x","_y","_z"]; _oldPos = getPosASL GVAR(camera); -_mX = GVAR(camDolly) select 0; -_mY = GVAR(camDolly) select 1; -_mZ = GVAR(camBoom); +_mX = (GVAR(camDolly) select 0) / ((GVAR(camZoom) * 0.8) max 1); +_mY = (GVAR(camDolly) select 1) / ((GVAR(camZoom) * 0.8) max 1); +_mZ = GVAR(camBoom) / ((GVAR(camZoom) * 0.8) max 1); _pan = (GVAR(camPan) + 360) % 360; _x = (_oldPos select 0) + (_mX * cos(_pan)) + (_mY * sin(_pan)); From e59f0ce822ab64c8a8fd6c330341e16113437282 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 12:24:49 +0100 Subject: [PATCH 045/620] Fix spectator respawn template for types 0 and 1 Type 0 worked, but the mission didn't end when all players were killed. Type 1 didn't work because isPlayer isn't true for seagulls. So spectator virtual state is now entirely unassociated from objects in the game. --- .../functions/fnc_handleInterface.sqf | 2 +- .../functions/fnc_respawnTemplate.sqf | 11 +++++--- .../spectator/functions/fnc_setSpectator.sqf | 26 +++++++------------ .../functions/fnc_stageSpectator.sqf | 9 +++---- 4 files changed, 22 insertions(+), 26 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 80d87cf40a..d06c19bd38 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -80,7 +80,7 @@ switch (toLower _mode) do { clearRadio; // Return to player view - _unit switchCamera "internal"; + player switchCamera "internal"; // Enable BI damage effects BIS_fnc_feedback_allowPP = true; diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf index b03c6dfb06..b808c43eab 100644 --- a/addons/spectator/functions/fnc_respawnTemplate.sqf +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -21,6 +21,11 @@ params [["_unit",objNull,[objNull]], ["_killer",objNull,[objNull]], ["_respawn",0,[0]], ["_respawnDelay",0,[0]]]; private ["_vision","_pos"]; +// End mission when all are dead with respawn type "None" +if ((_respawn == 0) && {{alive _x} count allPlayers <= 0}) exitWith { + [["endDeath",false],"BIS_fnc_endMission"] call EFUNC(common,execRemoteFnc); +}; + if (isNull _killer) then {_killer = _unit}; _vision = [-2,-1] select (sunOrMoon < 1); _pos = (getPosATL _unit) vectorAdd [0,0,5]; @@ -29,11 +34,11 @@ if (alive _unit) then { if (_respawn == 1) then { [_unit,QGVAR(isSeagull)] call EFUNC(common,hideUnit); [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); + [true] call FUNC(setSpectator); } else { - [_unit,false] call FUNC(setSpectator); + [false] call FUNC(setSpectator); }; } else { [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); - [_unit] call FUNC(setSpectator); + [true] call FUNC(setSpectator); }; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 2d5ada415c..4f41e073d7 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -1,48 +1,42 @@ /* * Author: SilentSpike - * Sets target player to the given spectator state (virtually) + * Sets local client to the given spectator state (virtually) * To physically handle a spectator see ace_spectator_fnc_stageSpectator * - * Player will be able to communicate in ACRE/TFAR as appropriate + * Client will be able to communicate in ACRE/TFAR as appropriate * The spectator interface will be opened/closed * * Arguments: - * 0: Unit to put into spectator state - * 1: Spectator state + * 0: Spectator state of local client * * Return Value: * None * * Example: - * [player, true] call ace_spectator_fnc_setSpectator + * [true] call ace_spectator_fnc_setSpectator * * Public: Yes */ #include "script_component.hpp" -params ["_unit", ["_set",true,[true]]]; +params [["_set",true,[true]]]; -// Only run for player units -if !(isPlayer _unit) exitWith {}; - -if !(local _unit) exitwith { - [[_unit, _set], QFUNC(setSpectator), _unit] call EFUNC(common,execRemoteFnc); -}; +// Only clients can be spectators +if !(hasInterface) exitWith {}; // Handle common addon audio if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableVolumeUpdate) = _set}; if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; -if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[_unit, _set] call TFAR_fnc_forceSpectator}; +if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[player, _set] call TFAR_fnc_forceSpectator}; if (_set) then { ["open"] call FUNC(handleInterface); } else { - ["close",_unit] call FUNC(handleInterface); + ["close"] call FUNC(handleInterface); }; // Mark spectator state for reference -_unit setVariable [QGVAR(isSet), _set, true]; GVAR(isSet) = _set; -["spectatorSet",[_set,_unit]] call EFUNC(common,localEvent); +["spectatorSet",[_set]] call EFUNC(common,localEvent); diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 3e17235e3e..7f0d862719 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -7,7 +7,7 @@ * Upon unstage, units will be moved to the position they were in upon staging * * Arguments: - * 0: Unit to put into spectator stage + * 0: Unit to put into spectator stage * 1: Spectator stage * * Return Value: @@ -21,19 +21,16 @@ #include "script_component.hpp" -params ["_unit", ["_set",true,[true]]]; +params [["_unit",player,[objNull]], ["_set",true,[true]]]; // No change, no service (but allow spectators to be reset) if !(_set || (GETVAR(_unit,GVAR(isStaged),false))) exitWith {}; -// Only run for player units -if !(isPlayer _unit) exitWith {}; - if !(local _unit) exitwith { [[_unit, _set], QFUNC(stageSpectator), _unit] call EFUNC(common,execRemoteFnc); }; -// Prevent player falling into water +// Prevent unit falling into water _unit enableSimulation !_set; // Move to/from group as appropriate From 5b881224c5a231c35fb96d79183f240265915e89 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 13:19:07 +0100 Subject: [PATCH 046/620] Allow admins to use chat in the spectator UI --- addons/spectator/functions/fnc_handleInterface.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index d06c19bd38..21d6266fba 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -238,6 +238,9 @@ switch (toLower _mode) do { if ((alive player) && {_dik in (actionKeys "curatorInterface")} && {!isNull (getAssignedCuratorLogic player)}) exitWith { ["zeus", [_display]] call FUNC(handleInterface); }; + if ((isServer || {serverCommandAvailable "#kick"}) && {_dik in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) exitWith { + false + }; // Handle held keys (prevent repeat calling) if (_dik in GVAR(heldKeys)) exitwith {}; From be7b156c49170da938b120cd16d45ec7c6daa245 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 15:49:07 +0100 Subject: [PATCH 047/620] Add "focus on unit" to spectator free camera Pressing F will move the free camera to a position viewing the unit currently selected in the list. Fixes map teleporting functionality also. --- addons/spectator/UI/interface.hpp | 23 ++++++++-------- .../functions/fnc_handleInterface.sqf | 26 +++++++++++++++++-- .../functions/fnc_setCameraAttributes.sqf | 9 ++++--- .../functions/fnc_transitionCamera.sqf | 3 +-- addons/spectator/stringtable.xml | 3 +++ 5 files changed, 45 insertions(+), 19 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index a7790d6da0..e8bc6c210f 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -155,7 +155,7 @@ class GVAR(interface) { }; }; }; - class unitTree: RscControlsGroupNoScrollbars { + class unitWindow: RscControlsGroupNoScrollbars { idc = IDC_UNIT; x = safeZoneX; y = safeZoneY + TOOL_H * 6; @@ -191,6 +191,7 @@ class GVAR(interface) { }; multiselectEnabled = 0; onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface)); + onTreeSelChanged = QUOTE([ARR_2('onTreeSelChanged',_this)] call FUNC(handleInterface)); }; class unitFrame: RscFrame { x = 0; @@ -202,16 +203,6 @@ class GVAR(interface) { }; }; }; - class mapOverlay: RscMapControl { - idc = IDC_MAP; - type = 100; - x = safeZoneX; - y = safeZoneY; - w = safeZoneW; - h = safeZoneH; - onMouseButtonDown = QUOTE([ARR_2('onMapClick',_this)] call FUNC(handleInterface)); - onDraw = QUOTE(_this call FUNC(handleMap)); - }; class helpWindow: RscControlsGroupNoScrollbars { idc = IDC_HELP; x = safeZoneX + safeZoneW - TOOL_W * 2; @@ -250,5 +241,15 @@ class GVAR(interface) { }; }; }; + class mapOverlay: RscMapControl { + idc = IDC_MAP; + type = 100; + x = safeZoneX; + y = safeZoneY; + w = safeZoneW; + h = safeZoneH; + onMouseButtonDown = QUOTE([ARR_2('onMapClick',_this)] call FUNC(handleInterface)); + onDraw = QUOTE(_this call FUNC(handleMap)); + }; }; }; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 21d6266fba..eda24dccf6 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -35,6 +35,7 @@ switch (toLower _mode) do { GVAR(heldKeys) = []; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; + GVAR(treeSel) = objNull; // Initalize the camera view GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); @@ -96,6 +97,7 @@ switch (toLower _mode) do { GVAR(heldKeys) = nil; GVAR(mouse) = nil; GVAR(mousePos) = nil; + GVAR(treeSel) = nil; // Reset nametag settings if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { @@ -146,11 +148,12 @@ switch (toLower _mode) do { [localize LSTRING(freeCamDown),"Z"], [localize LSTRING(freeCamPan),"RMB (Hold)"], [localize LSTRING(freeCamDolly),"LMB (Hold)"], + [localize LSTRING(freeCamFocus),"F"], + [localize LSTRING(freeCamNextVis),"N"], + [localize LSTRING(freeCamPrevVis),"Ctrl + N"], [localize LSTRING(freeCamZoom),"Scrollwheel"], [localize LSTRING(freeCamSpeed),"Ctrl + Scrollwheel"], [localize LSTRING(freeCamBoost),"Shift (Hold)"], - [localize LSTRING(freeCamNextVis),"N"], - [localize LSTRING(freeCamPrevVis),"Ctrl + N"], [localize LSTRING(otherControls),""], [localize LSTRING(nextCam),"Up Arrow"], [localize LSTRING(prevCam),"Down Arrow"], @@ -289,6 +292,14 @@ switch (toLower _mode) do { case 32: { // D GVAR(camDolly) set [0, GVAR(camSpeed) * ([1, 2] select _shift)]; }; + case 33: { // F + private ["_sel","_vector"]; + _sel = GVAR(treeSel); + if !((GVAR(camMode) == 0) && {isNull _sel} && {_sel in GVAR(unitList)}) then { + _vector = (positionCameraToWorld [0,0,0]) vectorDiff (positionCameraToWorld [0,0,25]); + [nil,nil,nil,(getPosATL _sel) vectorAdd _vector] call FUNC(setCameraAttributes); + }; + }; case 44: { // Z GVAR(camBoom) = -0.5 * GVAR(camSpeed) * ([1, 2] select _shift); }; @@ -374,6 +385,15 @@ switch (toLower _mode) do { [_newMode,_newUnit] call FUNC(transitionCamera); }; }; + case "ontreeselchanged": { + _args params ["_tree","_sel"]; + + if (count _sel == 3) then { + GVAR(treeSel) = objectFromNetId (_tree tvData _sel); + } else { + GVAR(treeSel) = objNull; + }; + }; case "onunitsupdate": { _args params ["_tree"]; private ["_cachedUnits","_cachedGrps","_cachedSides","_s","_g","_grp","_u","_unit","_side"]; @@ -485,6 +505,7 @@ switch (toLower _mode) do { GVAR(heldKeys) = []; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; + GVAR(treeSel) = objNull; createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer); @@ -538,6 +559,7 @@ switch (toLower _mode) do { GVAR(heldKeys) = []; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; + GVAR(treeSel) = objNull; openCuratorInterface; diff --git a/addons/spectator/functions/fnc_setCameraAttributes.sqf b/addons/spectator/functions/fnc_setCameraAttributes.sqf index 278a8c4758..8eb6fe51ac 100644 --- a/addons/spectator/functions/fnc_setCameraAttributes.sqf +++ b/addons/spectator/functions/fnc_setCameraAttributes.sqf @@ -51,7 +51,6 @@ if !(_vision in GVAR(availableVisions)) then { }; GVAR(camPan) = _heading % 360; -GVAR(camPos) = (ATLtoASL _position); GVAR(camSpeed) = (_speed max 0.05) min 10; GVAR(camTilt) = (_tilt max -89) min 89; GVAR(camUnit) = _unit; @@ -59,8 +58,10 @@ GVAR(camVision) = _vision; GVAR(camZoom) = (_zoom min 2) max 0.01; // Apply if camera exists -if !(isNil QGVAR(camera)) then { - [_mode,_unit,_vision] call FUNC(transitionCamera); -} else { +if (isNil QGVAR(camera)) then { GVAR(camMode) = _mode; + GVAR(camPos) = (ATLtoASL _position); +} else { + [_mode,_unit,_vision] call FUNC(transitionCamera); + GVAR(camera) setPosATL _position; }; diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index b35b61b311..72cb9f1a45 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -53,8 +53,7 @@ if (_newMode == 0) then { // Free GVAR(camera) camSetFov -(linearConversion [0.01,2,GVAR(camZoom),-2,-0.01,true]); GVAR(camera) camCommit 0; - // Agent is switched to in free cam to hide death table and prevent AI chat while allowing icons to draw - // However, map click events don't fire in free cam for some reason... + // Agent is switched to in free cam to hide death table and prevent AI chat while allowing icons to draw (also prevents systemChat and unit HUD) // (Why is so much stuff tied into the current camera unit BI?!) if (isNull GVAR(camAgent)) then { GVAR(camAgent) = createAgent ["VirtualMan_F",markerPos QGVAR(respawn),[],0,""]; diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index b174608d03..c4b9b6b631 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -184,6 +184,9 @@ Speed Boost + + Focus on Unit + Next Vision Mode Następny tryb wizji From d7730103c98c0cf5d677abeb42128de29e375aaf Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 17:22:04 +0100 Subject: [PATCH 048/620] Update ace_spectator readme --- addons/spectator/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/spectator/README.md b/addons/spectator/README.md index b3e586149b..b827bdcc49 100644 --- a/addons/spectator/README.md +++ b/addons/spectator/README.md @@ -1,7 +1,11 @@ ace_spectator ======= -Spectator. Includes features from Splendid Cam, and much more. +A flexible spectator framework for mission makers to use. + +Includes a public API for integration into custom respawn frameworks and a template for use with the vanilla respawn framework. + +For more information, see: http://ace3mod.com/wiki/feature/spectator.html ## Maintainers From 213deeffb405ac85138bd8376b25274922b6af02 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 18:31:37 +0100 Subject: [PATCH 049/620] Add keys to adjust spectator camera speed and zoom Allows for finer control of the speed and zoom, as well as a quick way to reset either. --- addons/spectator/XEH_preInit.sqf | 2 +- .../functions/fnc_handleInterface.sqf | 40 ++++++++++---- addons/spectator/stringtable.xml | 53 +++++++++++-------- 3 files changed, 61 insertions(+), 34 deletions(-) diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index 2c29598ebc..a40f4a0dcb 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -33,7 +33,7 @@ GVAR(camAgent) = objNull; GVAR(camMode) = 0; GVAR(camPan) = 0; GVAR(camPos) = ATLtoASL [worldSize * 0.5, worldSize * 0.5, 20]; -GVAR(camSpeed) = 1; +GVAR(camSpeed) = 2.5; GVAR(camTilt) = -10; GVAR(camUnit) = objNull; GVAR(camVision) = -2; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index eda24dccf6..80ee564ab5 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -148,17 +148,21 @@ switch (toLower _mode) do { [localize LSTRING(freeCamDown),"Z"], [localize LSTRING(freeCamPan),"RMB (Hold)"], [localize LSTRING(freeCamDolly),"LMB (Hold)"], - [localize LSTRING(freeCamFocus),"F"], - [localize LSTRING(freeCamNextVis),"N"], - [localize LSTRING(freeCamPrevVis),"Ctrl + N"], - [localize LSTRING(freeCamZoom),"Scrollwheel"], - [localize LSTRING(freeCamSpeed),"Ctrl + Scrollwheel"], [localize LSTRING(freeCamBoost),"Shift (Hold)"], - [localize LSTRING(otherControls),""], + [localize LSTRING(freeCamFocus),"F"], + [localize LSTRING(attributeControls),""], [localize LSTRING(nextCam),"Up Arrow"], [localize LSTRING(prevCam),"Down Arrow"], [localize LSTRING(nextUnit),"Right Arrow"], - [localize LSTRING(prevUnit),"Left Arrow"] + [localize LSTRING(prevUnit),"Left Arrow"], + [localize LSTRING(nextVis),"N"], + [localize LSTRING(prevVis),"Ctrl + N"], + [localize LSTRING(adjZoom),"Scrollwheel"], + [localize LSTRING(adjSpeed),"Ctrl + Scrollwheel"], + [localize LSTRING(incZoom),"Num-/Num+"], + [localize LSTRING(incSpeed),"Ctrl + Num-/Num+"], + [localize LSTRING(reZoom),"Alt + Num-"], + [localize LSTRING(reSpeed),"Alt + Num+"] ]; // Handle support for BI's respawn counter @@ -247,8 +251,8 @@ switch (toLower _mode) do { // Handle held keys (prevent repeat calling) if (_dik in GVAR(heldKeys)) exitwith {}; - // Exclude movement keys so that speed can be adjusted on fly - if !(_dik in [16,17,30,31,32,44]) then { + // Exclude movement/adjustment keys so that speed can be adjusted on fly + if !(_dik in [16,17,30,31,32,44,74,78]) then { GVAR(heldKeys) pushBack _dik; }; @@ -295,7 +299,7 @@ switch (toLower _mode) do { case 33: { // F private ["_sel","_vector"]; _sel = GVAR(treeSel); - if !((GVAR(camMode) == 0) && {isNull _sel} && {_sel in GVAR(unitList)}) then { + if ((GVAR(camMode) == 0) && {!isNull _sel} && {_sel in GVAR(unitList)}) then { _vector = (positionCameraToWorld [0,0,0]) vectorDiff (positionCameraToWorld [0,0,25]); [nil,nil,nil,(getPosATL _sel) vectorAdd _vector] call FUNC(setCameraAttributes); }; @@ -318,6 +322,22 @@ switch (toLower _mode) do { case 57: { // Spacebar // Freecam attachment here, if in external then set cam pos and attach }; + case 74: { // Num - + if (_alt) exitWith { [nil,nil,nil,nil,nil,nil, 1.25] call FUNC(setCameraAttributes); }; + if (_ctrl) then { + [nil,nil,nil,nil,nil,nil,nil, GVAR(camSpeed) - 0.05] call FUNC(setCameraAttributes); + } else { + [nil,nil,nil,nil,nil,nil, GVAR(camZoom) - 0.01] call FUNC(setCameraAttributes); + }; + }; + case 78: { // Num + + if (_alt) exitWith { [nil,nil,nil,nil,nil,nil,nil, 2.5] call FUNC(setCameraAttributes); }; + if (_ctrl) then { + [nil,nil,nil,nil,nil,nil,nil, GVAR(camSpeed) + 0.05] call FUNC(setCameraAttributes); + } else { + [nil,nil,nil,nil,nil,nil, GVAR(camZoom) + 0.01] call FUNC(setCameraAttributes); + }; + }; case 200: { // Up arrow [-1] call FUNC(cycleCamera); }; diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index c4b9b6b631..895a279844 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -134,8 +134,7 @@ - Free Camera Controls - Wolne sterowanie kamerą + Free Camera Camera Forward @@ -173,31 +172,14 @@ Lock Camera to Target Zablokuj kamerę na celu - - Zoom +/- - Zoom +/- - - - Speed +/- - Prędkość +/- - Speed Boost Focus on Unit - - Next Vision Mode - Następny tryb wizji - - - Previous Vision Mode - Poprzedni tryb wizji - - Interface Controls - Sterowanie interfejsem + Interface Toggle Interface @@ -227,9 +209,8 @@ Toggle Help Przełącz pomoc - - Other Controls - Pozostałe sterowanie + + Camera Attributes Next Camera @@ -247,5 +228,31 @@ Previous Unit Poprzednia jednostka + + Next Vision Mode + Następny tryb wizji + + + Previous Vision Mode + Poprzedni tryb wizji + + + Adjust Zoom + + + Adjust Speed + + + Increment Zoom + + + Increment Speed + + + Reset Zoom + + + Reset Speed + From 182eef39de65cc53d413df36db6b7286bca20c68 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 8 Aug 2015 18:41:38 +0100 Subject: [PATCH 050/620] Adjust spectator camera pan and tilt with zoom --- addons/spectator/functions/fnc_handleCamera.sqf | 11 +++++++---- addons/spectator/functions/fnc_handleMouse.sqf | 9 ++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/addons/spectator/functions/fnc_handleCamera.sqf b/addons/spectator/functions/fnc_handleCamera.sqf index 1d1d5bef9e..960a20df80 100644 --- a/addons/spectator/functions/fnc_handleCamera.sqf +++ b/addons/spectator/functions/fnc_handleCamera.sqf @@ -20,12 +20,15 @@ // Kill PFH when not in free cam (or display is closed) if (isNil QGVAR(camHandler)) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; -private ["_oldPos","_mX","_mY","_mZ","_pan","_x","_y","_z"]; +private ["_oldPos","_zoomMod","_mX","_mY","_mZ","_pan","_x","_y","_z"]; _oldPos = getPosASL GVAR(camera); -_mX = (GVAR(camDolly) select 0) / ((GVAR(camZoom) * 0.8) max 1); -_mY = (GVAR(camDolly) select 1) / ((GVAR(camZoom) * 0.8) max 1); -_mZ = GVAR(camBoom) / ((GVAR(camZoom) * 0.8) max 1); + +// Dolly/Boom amount should be influnced by zoom level (it should really be exponential) +_zoomMod = (GVAR(camZoom) * 0.8) max 1; +_mX = (GVAR(camDolly) select 0) / _zoomMod; +_mY = (GVAR(camDolly) select 1) / _zoomMod; +_mZ = GVAR(camBoom) / _zoomMod; _pan = (GVAR(camPan) + 360) % 360; _x = (_oldPos select 0) + (_mX * cos(_pan)) + (_mY * sin(_pan)); diff --git a/addons/spectator/functions/fnc_handleMouse.sqf b/addons/spectator/functions/fnc_handleMouse.sqf index 8158ba95b5..1c2b62798c 100644 --- a/addons/spectator/functions/fnc_handleMouse.sqf +++ b/addons/spectator/functions/fnc_handleMouse.sqf @@ -18,7 +18,7 @@ #include "script_component.hpp" params ["_x","_y"]; -private ["_leftButton","_rightButton","_oldX","_oldY","_deltaX","_deltaY"]; +private ["_leftButton","_rightButton","_oldX","_oldY","_deltaX","_deltaY","_zoomMod"]; _leftButton = GVAR(mouse) select 0; _rightButton = GVAR(mouse) select 1; @@ -35,8 +35,11 @@ if (_leftButton) then { GVAR(camDolly) set [1, _deltaY * 100 * GVAR(camSpeed)]; } else { if (_rightButton) then { - GVAR(camPan) = GVAR(camPan) - (_deltaX * 360); - GVAR(camTilt) = ((GVAR(camTilt) + (_deltaY * 180)) min 89) max -89; + // Pan/Tilt amount should be influnced by zoom level (it should really be exponential) + _zoomMod = (GVAR(camZoom) * 0.8) max 1; + + GVAR(camPan) = GVAR(camPan) - ((_deltaX * 360) / _zoomMod); + GVAR(camTilt) = ((GVAR(camTilt) + ((_deltaY * 180) / _zoomMod)) min 89) max -89; }; }; From 7bdfe03c922fcd92a306871b5a7a59ec476af640 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 9 Aug 2015 02:19:34 +0200 Subject: [PATCH 051/620] Code cleanup of Concertina_wire module --- addons/concertina_wire/XEH_init.sqf | 5 ++- .../concertina_wire/functions/fnc_deploy.sqf | 35 ++++++++++--------- .../functions/fnc_dismount.sqf | 8 ++--- .../functions/fnc_dismountSuccess.sqf | 22 ++++++------ .../functions/fnc_handleDamage.sqf | 9 ++--- .../functions/fnc_handleKilled.sqf | 8 ++--- .../functions/fnc_vehicleDamage.sqf | 12 +++---- 7 files changed, 45 insertions(+), 54 deletions(-) diff --git a/addons/concertina_wire/XEH_init.sqf b/addons/concertina_wire/XEH_init.sqf index dbce4a9b92..dc6424f172 100644 --- a/addons/concertina_wire/XEH_init.sqf +++ b/addons/concertina_wire/XEH_init.sqf @@ -1,4 +1,3 @@ #include "script_component.hpp" - -PARAMS_1(_wire); -_wire addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; \ No newline at end of file +params ["_wire"]; +_wire addEventHandler ["HandleDamage", FUNC(handleDamage)]; diff --git a/addons/concertina_wire/functions/fnc_deploy.sqf b/addons/concertina_wire/functions/fnc_deploy.sqf index 5548cad649..aedc8b9608 100644 --- a/addons/concertina_wire/functions/fnc_deploy.sqf +++ b/addons/concertina_wire/functions/fnc_deploy.sqf @@ -8,10 +8,9 @@ * 1: unit * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" @@ -22,7 +21,7 @@ private ["_wireNoGeo", "_dir", "_pos", "_wireNoGeoPos"]; _wireNoGeo = "ACE_ConcertinaWireNoGeo" createVehicle [0,0,0]; { _wireNoGeo animate [_x, 1]; -} foreach WIRE_FAST; +} count WIRE_FAST; GVAR(placer) = _unit; _dir = getDir _unit; @@ -37,8 +36,9 @@ deleteVehicle _wirecoil; _unit setVariable [QGVAR(wireDeployed), false]; GVAR(deployPFH) = [{ - EXPLODE_3_PVT(_this select 0,_wireNoGeo,_wireNoGeoPos,_unit); - + params ["_args", "_idPFH"]; + _args params ["_wireNoGeo", "_wireNoGeoPos", "_unit"]; + private ["_range", "_posStart", "_posEnd", "_dirVect", "_dir", "_anim", "_wire"]; _posStart = (_wireNoGeo modelToWorldVisual (_wireNoGeo selectionPosition "start")) call EFUNC(common,positionToASL); _posEnd = (getPosASL _unit) vectorAdd (vectorDir _unit); @@ -46,37 +46,38 @@ GVAR(deployPFH) = [{ _dir = _dirVect call CBA_fnc_vectDir; _range = vectorMagnitude _dirVect; _anim = 0 max (1 - (_range / 12)); - + if (!(alive _unit) || _range >= 12 || (_unit getVariable [QGVAR(wireDeployed), false])) exitWith { _wire = "ACE_ConcertinaWire" createvehicle [0, 0, 0]; { _wire animate [_x, _anim]; - } foreach WIRE_FAST; - + } count WIRE_FAST; + [{ - EXPLODE_5_PVT(_this select 0,_wireNoGeo,_wire,_anim,_dir,_wireNoGeoPos); + params ["_args", "_idPFH"]; + _args params ["_wireNoGeo", "_wire", "_anim", "_dir", "_wireNoGeoPos"]; if (_wire animationPhase "wire_2" == _anim) then { deleteVehicle _wireNoGeo; _wire setDir _dir; _wire setPosASL _wireNoGeoPos; - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_wireNoGeo, _wire, _anim, _dir, _wireNoGeoPos]] call CBA_fnc_addPerFrameHandler; - + [_unit, "DefaultAction", _unit getVariable [QGVAR(Deploy), -1]] call EFUNC(Common,removeActionEventHandler); call EFUNC(interaction,hideMouseHint); - - [_this select 1] call CBA_fnc_removePerFrameHandler; + + [_idPFH] call CBA_fnc_removePerFrameHandler; }; - + _wireNoGeo setDir _dir; { _wireNoGeo animate [_x, _anim]; - } foreach WIRE_FAST; + } count WIRE_FAST; }, 0, [_wireNoGeo, _wireNoGeoPos, _unit]] call CBA_fnc_addPerFrameHandler; [localize "STR_ACE_ROLLWIRE", "", ""] call EFUNC(interaction,showMouseHint); - + GVAR(placer) setVariable [QGVAR(Deploy), [GVAR(placer), "DefaultAction", {GVAR(deployPFH) != -1}, diff --git a/addons/concertina_wire/functions/fnc_dismount.sqf b/addons/concertina_wire/functions/fnc_dismount.sqf index c9a5d1f9ff..c7ba3f50b1 100644 --- a/addons/concertina_wire/functions/fnc_dismount.sqf +++ b/addons/concertina_wire/functions/fnc_dismount.sqf @@ -8,10 +8,9 @@ * 1: unit * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" @@ -21,8 +20,7 @@ if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exit _this call FUNC(dismount); }, _this] call EFUNC(common,execNextFrame); }; - -PARAMS_2(_wire,_unit); +params ["_wire", "_unit"]; private ["_config", "_delay"]; _config = (configFile >> "CfgVehicles" >> typeOf _unit); diff --git a/addons/concertina_wire/functions/fnc_dismountSuccess.sqf b/addons/concertina_wire/functions/fnc_dismountSuccess.sqf index a6e34fe44f..a3f5081271 100644 --- a/addons/concertina_wire/functions/fnc_dismountSuccess.sqf +++ b/addons/concertina_wire/functions/fnc_dismountSuccess.sqf @@ -7,10 +7,9 @@ * 0: wire * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" @@ -18,25 +17,26 @@ PARAMS_1(_wire); { _wire animate [_x, 1]; -} foreach WIRE_FAST; +} count WIRE_FAST; [{ - EXPLODE_1_PVT(_this select 0,_wire); - + params ["_args", "_idPFH"]; + _args params ["_wire"]; + if (_wire animationPhase "wire_2" == 1) then { private ["_dir", "_pos", "_wirecoil"]; - + _dir = getDir _wire; _pos = getPosASL _wire; - + _wirecoil = "ACE_ConcertinaWireCoil" createvehicle [0, 0, 0]; deleteVehicle _wire; - + _wirecoil setDir _dir; _wirecoil setPosASL _pos; _wirecoil setVelocity [0, 0, 0]; - - [_this select 1] call CBA_fnc_removePerFrameHandler; + + [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_wire]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/concertina_wire/functions/fnc_handleDamage.sqf b/addons/concertina_wire/functions/fnc_handleDamage.sqf index 61cd1c4e7c..43a04641dd 100644 --- a/addons/concertina_wire/functions/fnc_handleDamage.sqf +++ b/addons/concertina_wire/functions/fnc_handleDamage.sqf @@ -11,15 +11,12 @@ * 4: projectile * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" - -PARAMS_5(_wire,_selectionName,_damage,_source,_projectile); - +params ["_wire", "", "_damage", "_source", ""]; if (_damage < 0.5) exitWith { 0 }; if (!(isNull _source)) then { diff --git a/addons/concertina_wire/functions/fnc_handleKilled.sqf b/addons/concertina_wire/functions/fnc_handleKilled.sqf index f5f84a6afa..ac59798d10 100644 --- a/addons/concertina_wire/functions/fnc_handleKilled.sqf +++ b/addons/concertina_wire/functions/fnc_handleKilled.sqf @@ -8,14 +8,12 @@ * 1: killer (vehicle) * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" - -PARAMS_2(_wire,_killer); +params ["_wire", "_killer"]; private ["_distance", "_vehicle"]; diff --git a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf index e7dff30000..41050eb9b9 100644 --- a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf +++ b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf @@ -7,14 +7,12 @@ * 1: vehicle * * Return Value: - * Nothing - * - * Return value: * None + * + * Public: No */ #include "script_component.hpp" - -PARAMS_2(_wire,_vehicle); +params ["_wire", "_vehicle"]; private ["_type", "_mode", "_anim", "_parts", "_selectionPart", "_selection", "_pos_w", "_dir_w"]; @@ -43,8 +41,8 @@ _dir_w = getDir _wire; if (_mode == 0) then { private ["_x", "_y", "_found", "_wireCheckPosAr", "_no"]; - _x = _pos_w select 0; - _y = _pos_w select 1; + _pos_w params ["_x","_y"]; + // Check if two Single coils are placed next to each other (i.e playes have built a big wire obstacle) _wireCheckPosAr = [ [_x + (sin (_dir_w+90) * 1.5),_y + (cos (_dir_w+90) * 1.5)], From c30cb45bd63fc40a0f6d8087f82655ac0363227d Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 9 Aug 2015 20:59:57 +0100 Subject: [PATCH 052/620] Optimize spectator UI held key prevention system --- addons/spectator/functions/fnc_handleInterface.sqf | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 80ee564ab5..335b71bbe1 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -33,6 +33,7 @@ switch (toLower _mode) do { // Initalize display variables GVAR(ctrlKey) = false; GVAR(heldKeys) = []; + GVAR(heldKeys) resize 255; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; GVAR(treeSel) = objNull; @@ -250,10 +251,10 @@ switch (toLower _mode) do { }; // Handle held keys (prevent repeat calling) - if (_dik in GVAR(heldKeys)) exitwith {}; + if (GVAR(heldKeys) param [_dik,false]) exitwith {}; // Exclude movement/adjustment keys so that speed can be adjusted on fly if !(_dik in [16,17,30,31,32,44,74,78]) then { - GVAR(heldKeys) pushBack _dik; + GVAR(heldKeys) set [_dik,true]; }; switch (_dik) do { @@ -358,7 +359,7 @@ switch (toLower _mode) do { _args params ["_display","_dik","_shift","_ctrl","_alt"]; // No longer being held - GVAR(heldKeys) = GVAR(heldKeys) - [_dik]; + GVAR(heldKeys) set [_dik,nil]; switch (_dik) do { case 16: { // Q @@ -523,6 +524,7 @@ switch (toLower _mode) do { GVAR(ctrlKey) = false; GVAR(heldKeys) = []; + GVAR(heldKeys) resize 255; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; GVAR(treeSel) = objNull; @@ -577,6 +579,7 @@ switch (toLower _mode) do { GVAR(ctrlKey) = false; GVAR(heldKeys) = []; + GVAR(heldKeys) resize 255; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; GVAR(treeSel) = objNull; From 95aa9f604bf83d29ad51267cc1d62ded6eaf2f18 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 11 Aug 2015 13:53:55 +0100 Subject: [PATCH 053/620] Fix manual pre-setting of spectator camera unit If the spectator camera unit was set before the camera had ever opened then the unit list wouldn't be populated and as such the camera would automatically abort to free mode since the unit wasn't available to spectate. So now I'm running the updateUnits function before opening the camera to pre-populate the list. --- addons/spectator/functions/fnc_handleInterface.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 335b71bbe1..95f05d01ec 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -38,6 +38,9 @@ switch (toLower _mode) do { GVAR(mousePos) = [0.5,0.5]; GVAR(treeSel) = objNull; + // Update units before opening to support pre-set camera unit + [] call FUNC(updateUnits); + // Initalize the camera view GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); [] call FUNC(transitionCamera); From 17115b88466f31c76dd37d99bcbd9e70d2bda4c3 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 11 Aug 2015 20:58:00 +0200 Subject: [PATCH 054/620] test switch to adv medical handleDamage --- addons/medical/XEH_preInit.sqf | 2 + addons/medical/functions/fnc_handleDamage.sqf | 29 ++- .../functions/fnc_handleDamage_basic.sqf | 4 +- .../functions/fnc_handleDamage_basic2.sqf | 168 ++++++++++++++++++ 4 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 addons/medical/functions/fnc_handleDamage_basic2.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index b479383468..6ae9dbb866 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -2,6 +2,8 @@ ADDON = false; +PREP(handleDamage_basic2); + PREP(actionCheckBloodPressure); PREP(actionCheckBloodPressureLocal); PREP(actionCheckPulse); diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index a4e5525276..47234d09fd 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -44,7 +44,34 @@ if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith {_damageOld}; // Get return damage _damageReturn = _damage; if (GVAR(level) < 2) then { - _damageReturn = _this call FUNC(handleDamage_basic); + _newDamage = _this call FUNC(handleDamage_basic2); + _projectile = _this select 4; + _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); + + _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); + _minLethalDamage = 0.01; + if (_typeIndex >= 0) then { + _minLethalDamage = GVAR(minLethalDamages) select _typeIndex; + }; + + if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _shooter} && {_projectile == ""} && {_selection == ""}) then { + if (GVAR(enableVehicleCrashes)) then { + _selection = GVAR(SELECTIONS) select (floor(random(count GVAR(SELECTIONS)))); + }; + }; + + if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { + if ((_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)])) exitwith { + _damageReturn = 0.9; + }; + if ([_unit] call FUNC(setDead)) then { + _damageReturn = 1; + } else { + _damageReturn = _damageReturn min 0.89; + }; + } else { + _damageReturn = _damageReturn min 0.89; + }; } else { if !([_unit] call FUNC(hasMedicalEnabled)) exitwith { // Because of the config changes, we cannot properly disable the medical system for a unit. diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index 04049cfa7c..9b48a5d5c7 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -37,6 +37,8 @@ _threshold = [ _unit getVariable [QGVAR(damageThreshold), GVAR(AIDamageThreshold)], _unit getVariable [QGVAR(damageThreshold), GVAR(playerDamageThreshold)] ] select ([_unit] call EFUNC(common,isPlayer)); +if (_selectionName in ["leg_l", "leg_r", "hand_l", "hand_r"]) then {_threshold = _threshold * 1.7}; + _damage = _damage * (1 / _threshold); // This is a new hit, reset variables. @@ -63,7 +65,7 @@ if (diag_frameno > (_unit getVariable [QGVAR(basic_frameNo), -3]) + 2) then { (_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg"); if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then { - _unit setHitPointDamage ["HitBody", damage _unit]; + // _unit setHitPointDamage ["HitBody", damage _unit]; }; [(_this select 1)] call cba_fnc_removePerFrameHandler; }; diff --git a/addons/medical/functions/fnc_handleDamage_basic2.sqf b/addons/medical/functions/fnc_handleDamage_basic2.sqf new file mode 100644 index 0000000000..9da6fd405d --- /dev/null +++ b/addons/medical/functions/fnc_handleDamage_basic2.sqf @@ -0,0 +1,168 @@ +/* + * Author: KoffeinFlummi, Glowbal + * Cache a handleDamage call to execute it 3 frames later + * + * Arguments: + * 0: Unit That Was Hit + * 1: Name Of Hit Selection + * 2: Amount Of Damage + * 3: Shooter + * 4: Projectile + * 5: Current damage to be returned + * + * Return Value: + * + * + * Public: No + */ + +#include "script_component.hpp" + +private ["_unit", "_selectionName", "_damage", "_source", "_projectile", "_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"]; +_unit = _this select 0; +_selectionName = _this select 1; +_damage = _this select 2; +_source = _this select 3; +_projectile = _this select 4; + +_hitSelections = GVAR(SELECTIONS); +_hitPoints = GVAR(HITPOINTS); + +// Calculate change in damage. +_newDamage = _damage - (damage _unit); +if (_selectionName in _hitSelections) then { + _newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName))); +}; + +//_damage = _damage + _newDamage; + +// Check for vehicle crash +if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _source} && {_projectile == ""} && {_selectionName == ""}) then { + if (GVAR(enableVehicleCrashes)) then { + _selectionName = _hitSelections select (floor(random(count _hitSelections))); + _projectile = "vehiclecrash"; + _this set [1, _selectionName]; + _this set [4, _projectile]; + }; +}; + +// Handle falling damage +_impactVelocity = (velocity _unit) select 2; +if (_impactVelocity < -5 && {vehicle _unit == _unit}) then { + _unit setVariable [QGVAR(isFalling), true]; + _unit setVariable [QGVAR(impactVelocity), _impactVelocity]; +}; +if (_unit getVariable [QGVAR(isFalling), false]) then { + if !(_selectionName in ["", "leg_l", "leg_r"]) then { + if (_selectionName == "body") then { + _newDamage = _newDamage * abs(_unit getVariable [QGVAR(impactVelocity), _impactVelocity]) / 50; + } else { + _newDamage = _newDamage * 0.5; + }; + } else { + if (_selectionName == "") then { + _selectionName = ["leg_l", "leg_r"] select (floor(random 2)); + _this set [1, _selectionName]; + }; + _newDamage = _newDamage * 0.7; + }; + _projectile = "falling"; + _this set [4, "falling"]; +}; + +// Finished with the current frame, reset variables +// Note: sometimes handleDamage spans over 2 or even 3 frames. +if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) then { + _unit setVariable [QGVAR(frameNo_damageCaching), diag_frameno]; + + // handle the cached damages 3 frames later + [{ + params ["_args", "_id"]; + _args params ["_target", "_frameNo"]; + + if (diag_frameno > _frameNo + 2) then { + _target setDamage 0; + + _cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; + _cache_damages = _target getVariable QGVAR(cachedDamages); + _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; + { + _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; + if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { + _part = [_selectionName] call FUNC(selectionNameToNumber); + if (_part < 0) exitwith {}; + _damageBodyParts set [_part, (_damageBodyParts select _part) + (_cache_damages select _foreachIndex)]; + }; + }foreach _cache_params; + _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; + + EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); + _target setHitPointDamage ["hitHead", _headDamage min 0.95]; + _target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; + _target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; + _target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; + + { + _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; + }foreach GVAR(HITPOINTS); + [_id] call cba_fnc_removePerFrameHandler; + }; + }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; + + _unit setVariable [QGVAR(cachedProjectiles), []]; + _unit setVariable [QGVAR(cachedHitPoints), []]; + _unit setVariable [QGVAR(cachedDamages), []]; + _unit setVariable [QGVAR(cachedHandleDamageParams), []]; +}; + +// Caching of the damage events +if (_selectionName != "") then { + _cache_projectiles = _unit getVariable QGVAR(cachedProjectiles); + private ["_index","_otherDamage"]; + _index = _cache_projectiles find _projectile; + // Check if the current projectile has already been handled once + if (_index >= 0 && {_projectile != "falling"}) exitwith { + _cache_damages = _unit getVariable QGVAR(cachedDamages); + // Find the previous damage this projectile has done + _otherDamage = (_cache_damages select _index); + + // Take the highest damage of the two + if (_newDamage > _otherDamage) then { + _cache_params = _unit getVariable QGVAR(cachedHandleDamageParams); + _cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints); + + private ["_hitPoint", "_restore"]; + // Restore the damage before the previous damage was processed + _hitPoint = _cache_hitpoints select _index; + _restore = ((_unit getHitPointDamage _hitPoint) - _otherDamage) max 0; + _unit setHitPointDamage [_hitPoint, _restore]; + + _cache_hitpoints set [_index, (_hitPoints select (_hitSelections find _selectionName))]; + _cache_damages set [_index, _newDamage]; + _cache_params set[_index, _this]; + + _unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles]; + _unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints]; + _unit setVariable [QGVAR(cachedDamages), _cache_damages]; + _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; + }; + }; + + _cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints); + _cache_damages = _unit getVariable QGVAR(cachedDamages); + _cache_params = _unit getVariable QGVAR(cachedHandleDamageParams); + + // This is an unhandled projectile + _cache_projectiles pushBack _projectile; + _cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName)); + _cache_damages pushBack _newDamage; + _cache_params pushBack _this; + + // Store the new cached values + _unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles]; + _unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints]; + _unit setVariable [QGVAR(cachedDamages), _cache_damages]; + _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; +}; + +_newDamage; From c6fbdb420c13f0c3d0224079cd84fe8ec7d25c83 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Thu, 13 Aug 2015 23:42:20 +0200 Subject: [PATCH 055/620] Code cleanup of Hearing module --- addons/hearing/XEH_postInit.sqf | 2 +- addons/hearing/functions/fnc_addEarPlugs.sqf | 3 +- addons/hearing/functions/fnc_earRinging.sqf | 3 +- .../hearing/functions/fnc_explosionNear.sqf | 2 +- addons/hearing/functions/fnc_firedNear.sqf | 32 +++++++++---------- .../hearing/functions/fnc_hasEarPlugsIn.sqf | 3 +- .../hearing/functions/fnc_moduleHearing.sqf | 3 +- .../hearing/functions/fnc_putInEarplugs.sqf | 2 +- .../hearing/functions/fnc_removeEarplugs.sqf | 2 +- addons/hearing/functions/fnc_updateVolume.sqf | 4 +-- 10 files changed, 25 insertions(+), 31 deletions(-) diff --git a/addons/hearing/XEH_postInit.sqf b/addons/hearing/XEH_postInit.sqf index ad73ed55d5..66406ad917 100644 --- a/addons/hearing/XEH_postInit.sqf +++ b/addons/hearing/XEH_postInit.sqf @@ -15,7 +15,7 @@ GVAR(time4) = 0; ["SettingsInitialized", { // Spawn volume updating process - [FUNC(updateVolume), 1, [false] ] call CBA_fnc_addPerFrameHandler; + [FUNC(updateVolume), 1, [false]] call CBA_fnc_addPerFrameHandler; }] call EFUNC(common,addEventHandler); //Update veh attunation when player veh changes diff --git a/addons/hearing/functions/fnc_addEarPlugs.sqf b/addons/hearing/functions/fnc_addEarPlugs.sqf index 62ed4518e2..b2e43bc718 100644 --- a/addons/hearing/functions/fnc_addEarPlugs.sqf +++ b/addons/hearing/functions/fnc_addEarPlugs.sqf @@ -14,8 +14,7 @@ * Public: No */ #include "script_component.hpp" - -PARAMS_1(_unit); +params ["_unit"]; // Exit if hearing is disabled or soldier has earplugs already in (persistence scenarios) if (!GVAR(enableCombatDeafness) || {[_unit] call FUNC(hasEarPlugsIn)}) exitWith {}; diff --git a/addons/hearing/functions/fnc_earRinging.sqf b/addons/hearing/functions/fnc_earRinging.sqf index 6a896c1820..63ca3e5f1c 100644 --- a/addons/hearing/functions/fnc_earRinging.sqf +++ b/addons/hearing/functions/fnc_earRinging.sqf @@ -15,8 +15,7 @@ * Public: No */ #include "script_component.hpp" - -PARAMS_2(_unit,_strength); +params ["_unit", "_strength"]; if (_unit != ACE_player) exitWith {}; if (_strength < 0.05) exitWith {}; diff --git a/addons/hearing/functions/fnc_explosionNear.sqf b/addons/hearing/functions/fnc_explosionNear.sqf index dde9bc50cc..8cea263fec 100644 --- a/addons/hearing/functions/fnc_explosionNear.sqf +++ b/addons/hearing/functions/fnc_explosionNear.sqf @@ -19,7 +19,7 @@ //Only run if deafness or ear ringing is enabled: if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {}; -PARAMS_2(_unit,_damage); +params ["_unit", "_damage"]; private ["_strength"]; _strength = 0 max _damage; diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 6fc48b27fa..5adf66fb25 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -24,7 +24,7 @@ //Only run if deafness or ear ringing is enabled: if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {}; -PARAMS_7(_object,_firer,_distance,_weapon,_muzzle,_mode,_ammo); +params ["_object", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo"]; //Only run if firedNear object is player or player's vehicle: if ((ACE_player != _object) && {(vehicle ACE_player) != _object}) exitWith {}; @@ -37,11 +37,11 @@ _vehAttenuation = if ((ACE_player == (vehicle ACE_player)) || {isTurnedOut ACE_p _distance = 1 max _distance; -_silencer = switch (_weapon) do { - case (primaryWeapon _firer) : {(primaryWeaponItems _firer) select 0}; - case (secondaryWeapon _firer) : {(secondaryWeaponItems _firer) select 0}; - case (handgunWeapon _firer) : {(handgunItems _firer) select 0}; - default {""}; +_silencer = call { + if (primaryWeapon _firer) exitWith {(primaryWeaponItems _firer) select 0}; + if (secondaryWeapon _firer) exitWith {(secondaryWeaponItems _firer) select 0}; + if (handgunWeapon _firer) exitWith {(handgunItems _firer) select 0}; + "" }; _audibleFireCoef = 1; @@ -58,7 +58,7 @@ if (count _weaponMagazines == 0) then { _muzzleMagazines = getArray (configFile >> "CfgWeapons" >> _weapon >> _x >> "magazines"); _weaponMagazines append _muzzleMagazines; }; - } forEach _muzzles; + } count _muzzles; { _ammoType = getText(configFile >> "CfgMagazines" >> _x >> "ammo"); _weaponMagazines set [_forEachIndex, [_x, _ammoType]]; @@ -68,11 +68,11 @@ if (count _weaponMagazines == 0) then { _magazine = ""; { - EXPLODE_2_PVT(_x,_magazineType,_ammoType); + params ["_magazineType", "_ammoType"]; if (_ammoType == _ammo) exitWith { _magazine = _magazineType; }; -} forEach _weaponMagazines; +} count _weaponMagazines; if (_magazine == "") exitWith {}; @@ -80,14 +80,12 @@ _initSpeed = getNumber(configFile >> "CfgMagazines" >> _magazine >> "initSpeed") _ammoConfig = (configFile >> "CfgAmmo" >> _ammo); _parentClasses = [_ammoConfig, true] call BIS_fnc_returnParents; _caliber = getNumber(_ammoConfig >> "ACE_caliber"); -_caliber = switch (true) do { - case ("ShellBase" in _parentClasses): { 80 }; - case ("RocketBase" in _parentClasses): { 200 }; - case ("MissileBase" in _parentClasses): { 600 }; - case ("SubmunitionBase" in _parentClasses): { 80 }; - default { - if (_caliber <= 0) then { 6.5 } else { _caliber }; - }; +_caliber = call { + if ("ShellBase" in _parentClasses) exitWith { 80 }; + if ("RocketBase" in _parentClasses) exitWith { 200 }; + if ("MissileBase" in _parentClasses) exitWith { 600 }; + if ("SubmunitionBase" in _parentClasses) exitWith { 80 }; + if (_caliber <= 0) then { 6.5 } else { _caliber }; }; _loudness = (_caliber ^ 1.25 / 10) * (_initspeed / 1000) * _audibleFireCoef / 5; _strength = _vehAttenuation * (_loudness - (_loudness / 50 * _distance)); // linear drop off diff --git a/addons/hearing/functions/fnc_hasEarPlugsIn.sqf b/addons/hearing/functions/fnc_hasEarPlugsIn.sqf index 58dc302888..67a76685f4 100644 --- a/addons/hearing/functions/fnc_hasEarPlugsIn.sqf +++ b/addons/hearing/functions/fnc_hasEarPlugsIn.sqf @@ -14,7 +14,6 @@ * Public: No */ #include "script_component.hpp" - -PARAMS_1(_unit); +params ["_unit"]; _unit getVariable ["ACE_hasEarPlugsin", false] diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 6ec0af0231..50675022a0 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -9,8 +9,7 @@ * None */ #include "script_component.hpp" - -PARAMS_3(_logic,_units,_activated); +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; diff --git a/addons/hearing/functions/fnc_putInEarplugs.sqf b/addons/hearing/functions/fnc_putInEarplugs.sqf index 8b11e6ba25..8d5479c17b 100644 --- a/addons/hearing/functions/fnc_putInEarplugs.sqf +++ b/addons/hearing/functions/fnc_putInEarplugs.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_player); +params ["_player"]; // Plugs in inventory, putting them in _player removeItem "ACE_EarPlugs"; diff --git a/addons/hearing/functions/fnc_removeEarplugs.sqf b/addons/hearing/functions/fnc_removeEarplugs.sqf index 19a34831cd..f5b5ca2442 100644 --- a/addons/hearing/functions/fnc_removeEarplugs.sqf +++ b/addons/hearing/functions/fnc_removeEarplugs.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_player); +params ["_player"]; if !(_player canAdd "ACE_EarPlugs") exitWith { // inventory full [localize LSTRING(Inventory_Full)] call EFUNC(common,displayTextStructured); diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf index 3a72e8eb3b..f1cb063971 100644 --- a/addons/hearing/functions/fnc_updateVolume.sqf +++ b/addons/hearing/functions/fnc_updateVolume.sqf @@ -19,9 +19,9 @@ //Only run if deafness or ear ringing is enabled: if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {}; -EXPLODE_1_PVT((_this select 0),_justUpdateVolume); - private["_volume", "_soundTransitionTime"]; +(_this select 0) params ["_justUpdateVolume"]; + GVAR(deafnessDV) = (GVAR(deafnessDV) min 20) max 0; GVAR(volume) = (1 - (GVAR(deafnessDV) / 20)) max 0; From cb8d009ef033a629fbb41328007ba8cebdf8d816 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 14 Aug 2015 00:31:42 +0200 Subject: [PATCH 056/620] Woops --- addons/hearing/functions/fnc_firedNear.sqf | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 5adf66fb25..02de8db928 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -38,9 +38,9 @@ _vehAttenuation = if ((ACE_player == (vehicle ACE_player)) || {isTurnedOut ACE_p _distance = 1 max _distance; _silencer = call { - if (primaryWeapon _firer) exitWith {(primaryWeaponItems _firer) select 0}; - if (secondaryWeapon _firer) exitWith {(secondaryWeaponItems _firer) select 0}; - if (handgunWeapon _firer) exitWith {(handgunItems _firer) select 0}; + if (_weapon == primaryWeapon _firer) exitWith {(primaryWeaponItems _firer) select 0}; + if (_weapon == secondaryWeapon _firer) exitWith {(secondaryWeaponItems _firer) select 0}; + if (_weapon == handgunWeapon _firer) exitWith {(handgunItems _firer) select 0}; "" }; @@ -68,7 +68,7 @@ if (count _weaponMagazines == 0) then { _magazine = ""; { - params ["_magazineType", "_ammoType"]; + _x params ["_magazineType", "_ammoType"]; if (_ammoType == _ammo) exitWith { _magazine = _magazineType; }; From bd56d1bb83855cd055f21b2e779337e19fab87f1 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 14 Aug 2015 00:36:36 +0200 Subject: [PATCH 057/620] ok that is my fault --- addons/hearing/functions/fnc_firedNear.sqf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 02de8db928..1ede8db3ea 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -37,11 +37,11 @@ _vehAttenuation = if ((ACE_player == (vehicle ACE_player)) || {isTurnedOut ACE_p _distance = 1 max _distance; -_silencer = call { - if (_weapon == primaryWeapon _firer) exitWith {(primaryWeaponItems _firer) select 0}; - if (_weapon == secondaryWeapon _firer) exitWith {(secondaryWeaponItems _firer) select 0}; - if (_weapon == handgunWeapon _firer) exitWith {(handgunItems _firer) select 0}; - "" +_silencer = switch (_weapon) do { + case (primaryWeapon _firer) : {(primaryWeaponItems _firer) select 0}; + case (secondaryWeapon _firer) : {(secondaryWeaponItems _firer) select 0}; + case (handgunWeapon _firer) : {(handgunItems _firer) select 0}; + default {""}; }; _audibleFireCoef = 1; From 183aac191117d762983d251346d7854693696ee7 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 14 Aug 2015 01:55:54 +0200 Subject: [PATCH 058/620] Code cleanup of Kestrel 4500 module. --- addons/kestrel4500/XEH_preInit.sqf | 18 ++++ .../functions/fnc_buttonPressed.sqf | 4 +- addons/kestrel4500/functions/fnc_canShow.sqf | 6 +- .../kestrel4500/functions/fnc_collectData.sqf | 33 +++----- .../functions/fnc_createKestrelDialog.sqf | 4 +- .../functions/fnc_displayKestrel.sqf | 84 +++++++++++-------- .../functions/fnc_generateOutputData.sqf | 40 +++++---- .../functions/fnc_measureWindSpeed.sqf | 3 +- .../functions/fnc_onCloseDialog.sqf | 15 ++++ .../functions/fnc_onCloseDisplay.sqf | 15 ++++ .../functions/fnc_restoreUserData.sqf | 2 +- .../functions/fnc_storeUserData.sqf | 4 +- .../functions/fnc_updateDisplay.sqf | 30 ++----- .../functions/fnc_updateImpellerState.sqf | 4 +- 14 files changed, 150 insertions(+), 112 deletions(-) diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf index 7b36167a16..b7d66cbb94 100644 --- a/addons/kestrel4500/XEH_preInit.sqf +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -17,3 +17,21 @@ PREP(updateDisplay); PREP(updateImpellerState); ADDON = true; + +FUNC(updateMemory) = { + params ["_slot", "_value"]; + GVAR(MIN) set [_slot, (GVAR(MIN) select _slot) min _value]; + GVAR(MAX) set [_slot, _value max (GVAR(MAX) select _slot)]; + GVAR(TOTAL) set [_slot, (GVAR(TOTAL) select _slot) + _value]; +}; + +FUNC(dayOfWeek) = { + private "_table"; + params ["_year", "_month", "_day"]; + + _table = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; + if (_month < 3) then { + _year = _year - 1; + }; + (_year + floor(_year/4) - floor(_year/100) + floor(_year/400) + (_table select (_month - 1)) + _day) % 7 +}; diff --git a/addons/kestrel4500/functions/fnc_buttonPressed.sqf b/addons/kestrel4500/functions/fnc_buttonPressed.sqf index 8f38568462..83c471092a 100644 --- a/addons/kestrel4500/functions/fnc_buttonPressed.sqf +++ b/addons/kestrel4500/functions/fnc_buttonPressed.sqf @@ -3,10 +3,10 @@ * Handles the Kestrel 4500 dialog button actions * * Arguments: - * buttonID + * button ID * * Return Value: - * Nothing + * None * * Example: * 2 call ace_kestrel4500_fnc_buttonPressed diff --git a/addons/kestrel4500/functions/fnc_canShow.sqf b/addons/kestrel4500/functions/fnc_canShow.sqf index 0c9e29f9bc..f563138f5c 100644 --- a/addons/kestrel4500/functions/fnc_canShow.sqf +++ b/addons/kestrel4500/functions/fnc_canShow.sqf @@ -3,13 +3,13 @@ * Tests if the Kestrel 4500 can be shown * * Arguments: - * Nothing + * None * * Return Value: - * canShow (bool) + * canShow * * Example: - * [mode] call ace_kestrel4500_fnc_canShow + * call ace_kestrel4500_fnc_canShow * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_collectData.sqf b/addons/kestrel4500/functions/fnc_collectData.sqf index 244e719b37..2e25fbcf60 100644 --- a/addons/kestrel4500/functions/fnc_collectData.sqf +++ b/addons/kestrel4500/functions/fnc_collectData.sqf @@ -3,18 +3,19 @@ * Gathers the weather data for the Kestrel 4500 * * Arguments: - * Nothing + * None * * Return Value: - * Nothing + * None * * Example: + * call ace_kestrel4500_fnc_collectData * * Public: No */ #include "script_component.hpp" -private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_altitude", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_updateMemory", "_windSpeed", "_crosswind", "_headwind"]; +private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_altitude", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_windSpeed", "_crosswind", "_headwind"]; _playerDir = getDir ACE_player; _playerAltitude = (getPosASL ACE_player) select 2; _temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight); @@ -35,25 +36,19 @@ if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then { { GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1]; -} forEach [1, 5, 6, 7, 8, 9, 10, 11, 12, 13]; +} count [1, 5, 6, 7, 8, 9, 10, 11, 12, 13]; -_fnc_updateMemory = { - PARAMS_2(_slot,_value); - GVAR(MIN) set [_slot, (GVAR(MIN) select _slot) min _value]; - GVAR(MAX) set [_slot, _value max (GVAR(MAX) select _slot)]; - GVAR(TOTAL) set [_slot, (GVAR(TOTAL) select _slot) + _value]; -}; -[0, _playerDir] call _fnc_updateMemory; +[0, _playerDir] call FUNC(updateMemory); if (GVAR(MinAvgMaxMode) == 1) then { { GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1]; - } forEach [2, 3, 4]; + } count [2, 3, 4]; // Wind SPD _windSpeed = call FUNC(measureWindSpeed); - [2, _windSpeed] call _fnc_updateMemory; + [2, _windSpeed] call FUNC(updateMemory); // CROSSWIND _crosswind = 0; @@ -62,7 +57,7 @@ if (GVAR(MinAvgMaxMode) == 1) then { } else { _crosswind = abs(sin(GVAR(RefHeading)) * _windSpeed); }; - [3, _crosswind] call _fnc_updateMemory; + [3, _crosswind] call FUNC(updateMemory); // HEADWIND _headwind = 0; @@ -80,12 +75,4 @@ if (GVAR(MinAvgMaxMode) == 1) then { GVAR(TOTAL) set [4, (GVAR(TOTAL) select 4) + _headwind]; }; -[5, _temperature] call _fnc_updateMemory; -[6, _chill] call _fnc_updateMemory; -[7, _humidity] call _fnc_updateMemory; -[8, _heatIndex] call _fnc_updateMemory; -[9, _dewPoint] call _fnc_updateMemory; -[10, _wetBulb] call _fnc_updateMemory; -[11, _barometricPressure] call _fnc_updateMemory; -[12, _altitude] call _fnc_updateMemory; -[13, _densityAltitude] call _fnc_updateMemory; +{ _x call FUNC(updateMemory); true } count [[5, _temperature],[6, _chill],[7, _humidity],[8, _heatIndex],[9, _dewPoint],[10, _wetBulb],[11, _barometricPressure],[12, _altitude],[13, _densityAltitude]]; diff --git a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf index 289d0825fc..23ca70543b 100644 --- a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf +++ b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf @@ -3,7 +3,7 @@ * Opens the Kestrel 4500 dialog * * Arguments: - * Nothing + * None * * Return Value: * Nothing @@ -29,7 +29,7 @@ createDialog 'Kestrel4500_Display'; GVAR(Kestrel4500) = false; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - + [] call FUNC(updateDisplay); }, 1, _this select 0] call CBA_fnc_addPerFrameHandler; diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf index 679ecce6af..63a162a7b0 100644 --- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -3,12 +3,13 @@ * Shows the Kestrel 4500 as rsc title * * Arguments: - * Nothing + * None * * Return Value: * Nothing * * Example: + * call ace_kestrel4500_fnc_displayKestrell * * Public: No */ @@ -50,49 +51,66 @@ if (GVAR(Kestrel4500) && dialog) then { GVAR(Overlay) = true; -[{ +[{ // abort condition if (!GVAR(Overlay) || {!(("ACE_Kestrel4500" in (uniformItems ACE_player)) || ("ACE_Kestrel4500" in (vestItems ACE_player)))}) exitWith { GVAR(Overlay) = false; 3 cutText ["", "PLAIN"]; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - + if (ACE_diagTime > GVAR(updateTimer)) then { GVAR(updateTimer) = ACE_diagTime + 1; - + private ["_outputData"]; _outputData = [] call FUNC(generateOutputData); - + 3 cutRsc ["RscKestrel4500", "PLAIN", 1, false]; - - __ctrlTop ctrlSetText (_outputData select 0); - __ctrlCenterBig ctrlSetText (_outputData select 1); - - __ctrlTop ctrlSetText (_outputData select 0); - __ctrlCenterBig ctrlSetText (_outputData select 1); - __ctrlCenter ctrlSetText (_outputData select 2); - - __ctrlCenterLine1Left ctrlSetText (_outputData select 3); - __ctrlCenterLine2Left ctrlSetText (_outputData select 4); - __ctrlCenterLine3Left ctrlSetText (_outputData select 5); + _outputData params [ + "_ctrlTop", + "_ctrlCenterBig", + "_ctrlCenter", + "_ctrlCenterLine1Left", + "_ctrlCenterLine2Left", + "_ctrlCenterLine3Left", + "_ctrlCenterLine1Right", + "_ctrlCenterLine2Right", + "_ctrlCenterLine3Right", + "_ctrlInfoLine1", + "_ctrlInfoLine2", + "_ctrlBottomBig", + "_ctrlCenterLine1", + "_ctrlCenterLine2", + "_ctrlCenterLine3", + "_ctrlCenterLine4", + "_ctrlCenterLine5", + "_ctrlCenterLine6" + ]; - __ctrlCenterLine1Right ctrlSetText (_outputData select 6); - __ctrlCenterLine2Right ctrlSetText (_outputData select 7); - __ctrlCenterLine3Right ctrlSetText (_outputData select 8); + __ctrlTop ctrlSetText _ctrlTop; + __ctrlCenterBig ctrlSetText _ctrlCenterBig; + __ctrlCenter ctrlSetText _ctrlCenter; + + __ctrlCenterLine1Left ctrlSetText _ctrlCenterLine1Left; + __ctrlCenterLine2Left ctrlSetText _ctrlCenterLine2Left; + __ctrlCenterLine3Left ctrlSetText _ctrlCenterLine3Left; + + __ctrlCenterLine1Right ctrlSetText _ctrlCenterLine1Right; + __ctrlCenterLine2Right ctrlSetText _ctrlCenterLine2Right; + __ctrlCenterLine3Right ctrlSetText _ctrlCenterLine3Right; + + __ctrlInfoLine1 ctrlSetText _ctrlInfoLine1; + __ctrlInfoLine2 ctrlSetText _ctrlInfoLine2; + + __ctrlBottomBig ctrlSetText _ctrlBottomBig ; + + __ctrlCenterLine1 ctrlSetText _ctrlCenterLine1; + __ctrlCenterLine2 ctrlSetText _ctrlCenterLine2; + __ctrlCenterLine3 ctrlSetText _ctrlCenterLine3; + __ctrlCenterLine4 ctrlSetText _ctrlCenterLine4; + __ctrlCenterLine5 ctrlSetText _ctrlCenterLine5; + __ctrlCenterLine6 ctrlSetText _ctrlCenterLine6; - __ctrlInfoLine1 ctrlSetText (_outputData select 9); - __ctrlInfoLine2 ctrlSetText (_outputData select 10); - - __ctrlBottomBig ctrlSetText (_outputData select 11); - - __ctrlCenterLine1 ctrlSetText (_outputData select 12); - __ctrlCenterLine2 ctrlSetText (_outputData select 13); - __ctrlCenterLine3 ctrlSetText (_outputData select 14); - __ctrlCenterLine4 ctrlSetText (_outputData select 15); - __ctrlCenterLine5 ctrlSetText (_outputData select 16); - __ctrlCenterLine6 ctrlSetText (_outputData select 17); - if (GVAR(referenceHeadingMenu) == 1) then { if (GVAR(referenceHeadingAutoSet)) then { __ctrlCenterLine3 ctrlSetTextColor [0, 0, 0, 0.6]; @@ -106,10 +124,10 @@ GVAR(Overlay) = true; __ctrlCenterLine4 ctrlSetTextColor [0, 0, 0, 1.0]; }; }; - + call FUNC(updateImpellerState); __ctrlKestrel4500 ctrlSetText format [QUOTE(PATHTOF(UI\Kestrel4500_%1.paa)), floor(GVAR(ImpellerState) % 7)]; - + }, 0.01, []] call CBA_fnc_addPerFrameHandler; true diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf index d61a1f48e4..de62da31ff 100644 --- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf +++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf @@ -3,12 +3,29 @@ * Generates the Kestrel 4500 output text. * * Arguments: - * Nothing + * None * * Return Value: - * [top , centerBig , CenterLine1Left , CenterLine2Left , CenterLine3Left , CenterLine1Right , CenterLine2Right , CenterLine3Right , InfoLine1 , InfoLine2 ] + * 0: top + * 1: centerBig + * 2: CenterLine1Left + * 3: CenterLine2Left + * 4: CenterLine3Left + * 5: CenterLine1Right + * 6: CenterLine2Right + * 7: CenterLine3Right + * 8: InfoLine1 + * 9: InfoLine2 + * 10: Bottom Big + * 11: Center Line 1 + * 11: Center Line 2 + * 12: Center Line 3 + * 13: Center Line 4 + * 14: Center Line 5 + * 15: Center Line 6 * * Example: + * _var = call ace_kestrell4500_fnc_generateOutputData * * Public: No */ @@ -16,7 +33,7 @@ if (ACE_diagTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", " Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]}; -private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_dayOfWeek", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"]; +private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"]; [] call FUNC(collectData); @@ -59,19 +76,6 @@ _heatIndex = [_temperature, _humidity] call EFUNC(weather,calculateHeatIndex); _dewPoint = [_temperature, _humidity] call EFUNC(weather,calculateDewPoint); _wetBulb = [_temperature, _barometricPressure, _humidity] call EFUNC(weather,calculateWetBulb); -_fnc_dayOfWeek = { - private ["_year", "_month", "_day", "_table"]; - _year = _this select 0; - _month = _this select 1; - _day = _this select 2; - - _table = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; - if (_month < 3) then { - _year = _year - 1; - }; - (_year + floor(_year/4) - floor(_year/100) + floor(_year/400) + (_table select (_month - 1)) + _day) % 7 -}; - GVAR(Direction) = 4 * floor(_playerDir / 90); if (_playerDir % 90 > 10) then { GVAR(Direction) = GVAR(Direction) + 1}; if (_playerDir % 90 > 35) then { GVAR(Direction) = GVAR(Direction) + 1}; @@ -82,8 +86,8 @@ GVAR(Direction) = GVAR(Direction) % 16; if (GVAR(referenceHeadingMenu) == 0) then { switch (GVAR(Menu)) do { case 0: { // Date - EXPLODE_3_PVT(date,_year,_month,_day); - _dayString = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] select (date call _fnc_dayOfWeek); + date params ["_year", "_month", "_day"]; + _dayString = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] select (date call FUNC(dayOfWeek)); _monthString = localize (["str_january","str_february","str_march","str_april","str_may","str_june","str_july","str_august","str_september","str_october","str_november","str_december"] select (_month - 1)); _textTop = _dayString; _textCenter = format["%1 %2 %3", _day, _monthString, _year]; diff --git a/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf index 73b4e228d6..2a8a4bbbb3 100644 --- a/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf +++ b/addons/kestrel4500/functions/fnc_measureWindSpeed.sqf @@ -3,12 +3,13 @@ * Measures the wind speed, stores the information in GVAR(MeasuredWindSpeed) and updates GVAR(ImpellerState) * * Arguments: - * Nothing + * None * * Return Value: * wind speed * * Example: + * call ace_kestrel4500_fnc_canShow * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_onCloseDialog.sqf b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf index a45a9decc3..11fa76ff18 100644 --- a/addons/kestrel4500/functions/fnc_onCloseDialog.sqf +++ b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf @@ -1,3 +1,18 @@ +/* + * Author: Ruthberg + * Called if Kestrell Dialog is closed + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_kestrel4500_fnc_onCloseDialog + * + * Public: No + */ #include "script_component.hpp" uiNamespace setVariable ['Kestrel4500_Display', nil]; diff --git a/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf index efb60b322a..9228aedcef 100644 --- a/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf +++ b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf @@ -1,3 +1,18 @@ +/* + * Author: Ruthberg + * Called if Kestrell Display is closed + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_kestrel4500_fnc_onCloseDisplay + * + * Public: No + */ #include "script_component.hpp" uiNamespace setVariable ['RscKestrel4500', nil]; diff --git a/addons/kestrel4500/functions/fnc_restoreUserData.sqf b/addons/kestrel4500/functions/fnc_restoreUserData.sqf index 0ce463ad67..c1d9c0ebb3 100644 --- a/addons/kestrel4500/functions/fnc_restoreUserData.sqf +++ b/addons/kestrel4500/functions/fnc_restoreUserData.sqf @@ -6,7 +6,7 @@ * Nothing * * Return Value: - * Nothing + * None * * Example: * call ace_kestrel4500_fnc_restore_user_data diff --git a/addons/kestrel4500/functions/fnc_storeUserData.sqf b/addons/kestrel4500/functions/fnc_storeUserData.sqf index a5d069b31d..80fa219a3c 100644 --- a/addons/kestrel4500/functions/fnc_storeUserData.sqf +++ b/addons/kestrel4500/functions/fnc_storeUserData.sqf @@ -3,10 +3,10 @@ * Saves user data into profileNamespace * * Arguments: - * Nothing + * None * * Return Value: - * Nothing + * None * * Example: * call ace_kestrel4500_fnc_store_user_data diff --git a/addons/kestrel4500/functions/fnc_updateDisplay.sqf b/addons/kestrel4500/functions/fnc_updateDisplay.sqf index 90f77f5f6a..e63b18bcfc 100644 --- a/addons/kestrel4500/functions/fnc_updateDisplay.sqf +++ b/addons/kestrel4500/functions/fnc_updateDisplay.sqf @@ -3,10 +3,10 @@ * Updates the Kestrel 4500 dialog text boxes. * * Arguments: - * Nothing + * None * * Return Value: - * Nothing + * None * * Example: * @@ -22,29 +22,9 @@ private ["_outputData"]; _outputData = [] call FUNC(generateOutputData); -ctrlSetText [74100, _outputData select 0]; -ctrlSetText [74200, _outputData select 1]; -ctrlSetText [74201, _outputData select 2]; - -ctrlSetText [74300, _outputData select 3]; -ctrlSetText [74301, _outputData select 4]; -ctrlSetText [74302, _outputData select 5]; - -ctrlSetText [74303, _outputData select 6]; -ctrlSetText [74304, _outputData select 7]; -ctrlSetText [74305, _outputData select 8]; - -ctrlSetText [74400, _outputData select 9]; -ctrlSetText [74401, _outputData select 10]; - -ctrlSetText [74500, _outputData select 11]; - -ctrlSetText [74600, _outputData select 12]; -ctrlSetText [74601, _outputData select 13]; -ctrlSetText [74602, _outputData select 14]; -ctrlSetText [74603, _outputData select 15]; -ctrlSetText [74604, _outputData select 16]; -ctrlSetText [74605, _outputData select 17]; +{ + ctrlSetText [_x , _outputData select _foreachindex]; +} forEach [74100, 74200, 74201, 74300, 74301, 74302, 74303, 74304, 74305, 74400, 74401, 74500, 74600, 74601, 74602, 74603, 74604, 74605]; if (GVAR(referenceHeadingMenu) == 1) then { if (GVAR(referenceHeadingAutoSet)) then { diff --git a/addons/kestrel4500/functions/fnc_updateImpellerState.sqf b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf index 075ed80080..75a0d10f4c 100644 --- a/addons/kestrel4500/functions/fnc_updateImpellerState.sqf +++ b/addons/kestrel4500/functions/fnc_updateImpellerState.sqf @@ -3,10 +3,10 @@ * Updates the Kestrel 4500 Impeller state * * Arguments: - * Nothing + * None * * Return Value: - * Nothing + * None * * Example: * From 84685f4a84d22a130f5d583ef24eabe7a36f5055 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 14 Aug 2015 02:22:15 +0200 Subject: [PATCH 059/620] add dayOfWeek and updateMemory to Own File Update some Comments Fixing Spelling Issue --- addons/kestrel4500/XEH_preInit.sqf | 21 ++-------------- .../functions/fnc_createKestrelDialog.sqf | 3 ++- .../kestrel4500/functions/fnc_dayOfWeek.sqf | 25 +++++++++++++++++++ .../functions/fnc_displayKestrel.sqf | 4 +-- .../functions/fnc_generateOutputData.sqf | 2 +- .../functions/fnc_onCloseDialog.sqf | 2 +- .../functions/fnc_onCloseDisplay.sqf | 2 +- .../functions/fnc_updateMemory.sqf | 20 +++++++++++++++ .../functions/script_component.hpp | 2 +- 9 files changed, 55 insertions(+), 26 deletions(-) create mode 100644 addons/kestrel4500/functions/fnc_dayOfWeek.sqf create mode 100644 addons/kestrel4500/functions/fnc_updateMemory.sqf diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf index b7d66cbb94..b89f07173f 100644 --- a/addons/kestrel4500/XEH_preInit.sqf +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -15,23 +15,6 @@ PREP(restoreUserData); PREP(storeUserData); PREP(updateDisplay); PREP(updateImpellerState); - +PREP(updateMemory); +PREP(dayOfWeek) ADDON = true; - -FUNC(updateMemory) = { - params ["_slot", "_value"]; - GVAR(MIN) set [_slot, (GVAR(MIN) select _slot) min _value]; - GVAR(MAX) set [_slot, _value max (GVAR(MAX) select _slot)]; - GVAR(TOTAL) set [_slot, (GVAR(TOTAL) select _slot) + _value]; -}; - -FUNC(dayOfWeek) = { - private "_table"; - params ["_year", "_month", "_day"]; - - _table = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; - if (_month < 3) then { - _year = _year - 1; - }; - (_year + floor(_year/4) - floor(_year/100) + floor(_year/400) + (_table select (_month - 1)) + _day) % 7 -}; diff --git a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf index 23ca70543b..a11982968c 100644 --- a/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf +++ b/addons/kestrel4500/functions/fnc_createKestrelDialog.sqf @@ -6,9 +6,10 @@ * None * * Return Value: - * Nothing + * None * * Example: + * call ace_kestrel4500_fnc_createKestrelDialog * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_dayOfWeek.sqf b/addons/kestrel4500/functions/fnc_dayOfWeek.sqf new file mode 100644 index 0000000000..9e142f661c --- /dev/null +++ b/addons/kestrel4500/functions/fnc_dayOfWeek.sqf @@ -0,0 +1,25 @@ +/* + * Author: Ruthberg + * Calculate Current Day in the Week + * + * Arguments: + * 0: Year + * 1: Month + * 2: Day + * + * Return Value: + * Day of The Week + * + * Example: + * [1995, 10, 21] call ace_kestrel4500_fnc_buttonPressed + * + * Public: No + */ +private "_table"; +params ["_year", "_month", "_day"]; + +_table = [0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4]; +if (_month < 3) then { + _year = _year - 1; +}; +(_year + floor(_year/4) - floor(_year/100) + floor(_year/400) + (_table select (_month - 1)) + _day) % 7 diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf index 63a162a7b0..770347ec71 100644 --- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -6,10 +6,10 @@ * None * * Return Value: - * Nothing + * None * * Example: - * call ace_kestrel4500_fnc_displayKestrell + * call ace_kestrel4500_fnc_displayKestrel * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf index de62da31ff..016baebef7 100644 --- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf +++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf @@ -25,7 +25,7 @@ * 15: Center Line 6 * * Example: - * _var = call ace_kestrell4500_fnc_generateOutputData + * _var = call ace_kestrel4500_fnc_generateOutputData * * Public: No */ diff --git a/addons/kestrel4500/functions/fnc_onCloseDialog.sqf b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf index 11fa76ff18..2474f30d94 100644 --- a/addons/kestrel4500/functions/fnc_onCloseDialog.sqf +++ b/addons/kestrel4500/functions/fnc_onCloseDialog.sqf @@ -1,6 +1,6 @@ /* * Author: Ruthberg - * Called if Kestrell Dialog is closed + * Called if Kestrel Dialog is closed * * Arguments: * None diff --git a/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf index 9228aedcef..bdc701ddb1 100644 --- a/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf +++ b/addons/kestrel4500/functions/fnc_onCloseDisplay.sqf @@ -1,6 +1,6 @@ /* * Author: Ruthberg - * Called if Kestrell Display is closed + * Called if Kestrel Display is closed * * Arguments: * None diff --git a/addons/kestrel4500/functions/fnc_updateMemory.sqf b/addons/kestrel4500/functions/fnc_updateMemory.sqf new file mode 100644 index 0000000000..f38e9ee6df --- /dev/null +++ b/addons/kestrel4500/functions/fnc_updateMemory.sqf @@ -0,0 +1,20 @@ +/* + * Author: Ruthberg + * Update Memory of Kestrel + * + * Arguments: + * 0: Slot + * 1: Value + * + * Return Value: + * None + * + * Example: + * [1, "test"] call ace_kestrel4500_fnc_updateMemory + * + * Public: No + */ +params ["_slot", "_value"]; +GVAR(MIN) set [_slot, (GVAR(MIN) select _slot) min _value]; +GVAR(MAX) set [_slot, _value max (GVAR(MAX) select _slot)]; +GVAR(TOTAL) set [_slot, (GVAR(TOTAL) select _slot) + _value]; diff --git a/addons/kestrel4500/functions/script_component.hpp b/addons/kestrel4500/functions/script_component.hpp index 32c774cd89..bc42218de7 100644 --- a/addons/kestrel4500/functions/script_component.hpp +++ b/addons/kestrel4500/functions/script_component.hpp @@ -1 +1 @@ -#include "\z\ace\addons\kestrel4500\script_component.hpp" \ No newline at end of file +#include "\z\ace\addons\kestrel4500\script_component.hpp" From c35fc35eb34b80ae21a7df1dccc625f95948c183 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 14 Aug 2015 21:29:01 -0500 Subject: [PATCH 060/620] Captive FFV stuff --- addons/captives/XEH_postInit.sqf | 3 +- addons/captives/XEH_preInit.sqf | 1 + .../captives/functions/fnc_canLoadCaptive.sqf | 2 +- .../captives/functions/fnc_doFriskPerson.sqf | 1 - .../fnc_findEmptyNonFFVCargoSeat.sqf | 40 +++++++++++++++++++ .../captives/functions/fnc_handleGetOut.sqf | 1 + .../functions/fnc_handleUnitInitPost.sqf | 2 +- .../functions/fnc_moduleSurrender.sqf | 4 +- .../captives/functions/fnc_setHandcuffed.sqf | 39 +++++++++++++----- .../captives/functions/fnc_setSurrendered.sqf | 10 ++--- .../functions/fnc_vehicleCaptiveMoveIn.sqf | 6 ++- .../functions/fnc_vehicleCaptiveMoveOut.sqf | 1 + 12 files changed, 86 insertions(+), 24 deletions(-) create mode 100644 addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf index da2192d3d6..1372b4e10a 100644 --- a/addons/captives/XEH_postInit.sqf +++ b/addons/captives/XEH_postInit.sqf @@ -6,12 +6,11 @@ if (isServer) then { addMissionEventHandler ["HandleDisconnect", { - PARAMS_1(_disconnectedPlayer); + params ["_disconnectedPlayer"]; private "_escortedUnit"; _escortedUnit = _disconnectedPlayer getVariable [QGVAR(escortedUnit), objNull]; if ((!isNull _escortedUnit) && {(attachedTo _escortedUnit) == _disconnectedPlayer}) then { detach _escortedUnit; - //systemChat "debug: DC detach"; }; if (_disconnectedPlayer getVariable [QGVAR(isEscorting), false]) then { _disconnectedPlayer setVariable [QGVAR(isEscorting), false, true]; diff --git a/addons/captives/XEH_preInit.sqf b/addons/captives/XEH_preInit.sqf index 31bcbe8e02..d2b5b615bb 100644 --- a/addons/captives/XEH_preInit.sqf +++ b/addons/captives/XEH_preInit.sqf @@ -16,6 +16,7 @@ PREP(doFriskPerson); PREP(doLoadCaptive); PREP(doRemoveHandcuffs); PREP(doUnloadCaptive); +PREP(findEmptyNonFFVCargoSeat); PREP(handleGetIn); PREP(handleGetOut); PREP(handleKilled); diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index 0e028ac1ec..1cdc4d86a1 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -35,4 +35,4 @@ if (isNull _vehicle) then { && {!isNull _vehicle} && {_unit getVariable [QGVAR(isEscorting), false]} && {_target getVariable [QGVAR(isHandcuffed), false]} -&& {_vehicle emptyPositions "cargo" > 0} +&& {([_vehicle] call FUNC(findEmptyNonFFVCargoSeat)) != -1} diff --git a/addons/captives/functions/fnc_doFriskPerson.sqf b/addons/captives/functions/fnc_doFriskPerson.sqf index e14025b88f..9a8a423dc3 100644 --- a/addons/captives/functions/fnc_doFriskPerson.sqf +++ b/addons/captives/functions/fnc_doFriskPerson.sqf @@ -18,7 +18,6 @@ private ["_weapon", "_listedItemClasses", "_actions", "_allGear"]; -PARAMS_2(_player,_unit); params ["_player", "_unit"]; _weapon = currentWeapon _player; diff --git a/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf b/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf new file mode 100644 index 0000000000..a6bd625870 --- /dev/null +++ b/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf @@ -0,0 +1,40 @@ +#include "script_component.hpp" + +params ["_vehicle"]; + +_vehicleConfig = configFile >> "CfgVehicles" >> (typeOf _vehicle); + +_proxyOrder = getArray (_vehicleConfig >> "getInProxyOrder"); +_transportSoldier = getNumber (_vehicleConfig >> "transportSoldier"); +_realCargoCount = if (isArray (_vehicleConfig >> "getInProxyOrder")) then {count _proxyOrder} else {_transportSoldier}; + +//Find FFV turrets: +_ffvCargoIndexes = []; +{ + _turretConfig = [_vehicleConfig, _x] call EFUNC(common,getTurretConfigPath); + _isCargoProxy = ((getText (_turretConfig >> "proxyType")) == "CPCargo") && {isNumber (_turretConfig >> "proxyIndex")}; + + if (_isCargoProxy) then { + _proxyCargoIndex = getNumber (_turretConfig >> "proxyIndex"); + _cargoIndex = _proxyOrder find _proxyCargoIndex; + _ffvCargoIndexes pushBack _cargoIndex; + }; +} forEach (allTurrets [_vehicle, true]); + +//Find Empty Seats: +_occupiedSeats = []; +{ + _x params ["", "", "_xIndex"]; + if (_xIndex > -1) then {_occupiedSeats pushBack _xIndex;}; +} forEach (fullCrew _vehicle); + +TRACE_3("Searching for empty seat",_realCargoCount,_ffvCargoIndexes,_occupiedSeats); + +_emptyCargoSeatReturn = -1; +for "_index" from 0 to (_realCargoCount - 1) do { + if ((!(_index in _ffvCargoIndexes)) && {!(_index in _occupiedSeats)}) exitWith { + _emptyCargoSeatReturn = _index; + }; +}; + +_emptyCargoSeatReturn diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index daf88b7e34..756c14ec10 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -30,4 +30,5 @@ if ((local _unit) && {_unit getVariable [QGVAR(isHandcuffed), false]}) then { }; [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_handleUnitInitPost.sqf b/addons/captives/functions/fnc_handleUnitInitPost.sqf index 66cbcff794..52957acd68 100644 --- a/addons/captives/functions/fnc_handleUnitInitPost.sqf +++ b/addons/captives/functions/fnc_handleUnitInitPost.sqf @@ -18,7 +18,7 @@ params ["_unit"]; // prevent players from throwing grenades (added to all units) -[_unit, "Throw", {((_this select 1) getVariable [QGVAR(isHandcuffed), false]) || {(_this select 1) getVariable [QGVAR(isSurrendering), false]}}, {}] call EFUNC(common,addActionEventhandler); +// [_unit, "Throw", {systemChat "a"; ((_this select 1) getVariable [QGVAR(isHandcuffed), false]) || {(_this select 1) getVariable [QGVAR(isSurrendering), false]}; true}, {systemChat "b";}] call EFUNC(common,addActionEventhandler); if (local _unit) then { // reset status on mission start diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf index 64c80af35c..bdb0f7c1b5 100644 --- a/addons/captives/functions/fnc_moduleSurrender.sqf +++ b/addons/captives/functions/fnc_moduleSurrender.sqf @@ -26,11 +26,11 @@ if (!_activated) exitWith {}; if (local _logic) then { //Modules run before postInit can instal the event handler, so we need to wait a little bit [{ - PARAMS_1(_units); + params ["_units"]; { ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent); } forEach _units; - }, [_units], 0.05, 0.05]call EFUNC(common,waitAndExecute); + }, [_units], 0.05]call EFUNC(common,waitAndExecute); deleteVehicle _logic; }; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 9bde3b399d..413e3d59b5 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -43,24 +43,43 @@ if (_state) then { // fix anim on mission start (should work on dedicated servers) [{ params ["_unit"]; - if (_unit getVariable [QGVAR(isHandcuffed), false] && {vehicle _unit == _unit}) then { + if (!(_unit getVariable [QGVAR(isHandcuffed), false])) exitWith {}; + + if ((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) - private "_animChangedEHID"; - _animChangedEHID = _unit addEventHandler ["AnimChanged", { - PARAMS_2(_unit,_newAnimation); + //Adds an animation changed eh + //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) + private "_animChangedEHID"; + TRACE_1("Adding animChangedEH",_unit); + _animChangedEHID = _unit addEventHandler ["AnimChanged", { + params ["_unit", "_newAnimation"]; + TRACE_2("AnimChanged",_unit,_newAnimation); + if (_unit == (vehicle _unit)) then { if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { TRACE_1("Handcuff animation interrupted",_newAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; - }]; - _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; + } else { + // _turretPath = []; + // { + // _x params ["_xUnit", "", "", "_xTurretPath"]; + // if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; + // } forEach (fullCrew (vehicle _unit)); + // TRACE_1("turret Path",_turretPath); + // if (_turretPath isEqualTo []) exitWith {}; + // _turretConfig = [(configFile >> "CfgVehicles" >> (typeOf (vehicle _unit))), _turretPath] call EFUNC(common,getTurretConfigPath); + // _gunnerAction = getText (_turretConfig >> "gunnerAction"); + // TRACE_1("reseting to",_gunnerAction); + // [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); + // [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); + }; + }]; + _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; - }; - }, [_unit], 0.01, 0] call EFUNC(common,waitAndExecute); + }, [_unit], 0.01] call EFUNC(common,waitAndExecute); } else { _unit setVariable [QGVAR(isHandcuffed), false, true]; [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index 4fad2d3853..22736c8e59 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -43,13 +43,13 @@ if (_state) then { // fix anim on mission start (should work on dedicated servers) [{ - PARAMS_1(_unit); + params ["_unit"]; if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then { //Adds an animation changed eh //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) private "_animChangedEHID"; _animChangedEHID = _unit addEventHandler ["AnimChanged", { - PARAMS_2(_unit,_newAnimation); + params ["_unit", "_newAnimation"]; if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then { TRACE_1("Surrender animation interrupted",_newAnimation); [_unit, "ACE_AmovPercMstpSsurWnonDnon", 1] call EFUNC(common,doAnimation); @@ -57,7 +57,7 @@ if (_state) then { }]; _unit setVariable [QGVAR(surrenderAnimEHID), _animChangedEHID]; }; - }, [_unit], 0.01, 0] call EFUNC(common,waitAndExecute); + }, [_unit], 0.01] call EFUNC(common,waitAndExecute); } else { _unit setVariable [QGVAR(isSurrendering), false, true]; [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); @@ -85,8 +85,8 @@ if (_state) then { //spin up a PFEH, to watching animationState for the next 20 seconds to make sure we don't enter "hands up" //Handles long animation chains [{ - PARAMS_2(_args,_pfID); - EXPLODE_2_PVT(_args,_unit,_maxTime); + params ["_args", "_pfID"]; + _args params ["_unit", "_maxTime"]; //If waited long enough or they re-surrendered or they are unconscious, exit loop if ((ACE_time > _maxTime) || {_unit getVariable [QGVAR(isSurrendering), false]} || {_unit getVariable ["ACE_isUnconscious", false]}) exitWith { [_pfID] call CBA_fnc_removePerFrameHandler; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index 7e30fe4af4..6e79725242 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -20,7 +20,9 @@ private ["_cargoIndex"]; params ["_target","_vehicle"]; -_target moveInCargo _vehicle; +_cargoIndex = [_vehicle] call FUNC(findEmptyNonFFVCargoSeat); +if (_cargoIndex < 0) exitWith {ERROR("No Seat Avail");}; + +_target moveInCargo [_vehicle, _cargoIndex]; _target assignAsCargo _vehicle; -_cargoIndex = _vehicle getCargoIndex _target; _target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf index 000d5ef568..db8a7bd12e 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf @@ -20,4 +20,5 @@ _unit setVariable [QGVAR(CargoIndex), -1, true]; moveOut _unit; [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); +[_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); unassignVehicle _unit; From a420bccb0290dd4d5ce326a894fce0de7c21dd6b Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 16 Aug 2015 13:19:20 +0200 Subject: [PATCH 061/620] documentation pass 11 - Updated information center - Update mortar doc - Updated medical doc - Updated maptools doc - Updated huntIR doc - Added framework doc - disposables - explosives --- documentation/feature/huntIR.md | 2 +- documentation/feature/maptools.md | 2 +- documentation/feature/medical-system.md | 87 +++++++++++- documentation/feature/mk6mortar.md | 60 +++------ .../framework/disposables-framework.md | 40 ++++++ .../framework/explosives-framework.md | 127 ++++++++++++++++++ documentation/user/information-center.md | 8 +- 7 files changed, 277 insertions(+), 49 deletions(-) create mode 100644 documentation/framework/disposables-framework.md create mode 100644 documentation/framework/explosives-framework.md diff --git a/documentation/feature/huntIR.md b/documentation/feature/huntIR.md index bd4841c184..af587e8fed 100644 --- a/documentation/feature/huntIR.md +++ b/documentation/feature/huntIR.md @@ -29,7 +29,7 @@ Shortcut | Action ------------ | ------------- A | Lower zoom level D | Increase zoom level -N | Toggle NV and TI modes +N | Toggle NV S | Next camera W | Previous camera | Rotate camera anticlockwise diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md index 0e99b9feef..0bf41682c3 100644 --- a/documentation/feature/maptools.md +++ b/documentation/feature/maptools.md @@ -29,7 +29,7 @@ If you are equipped with a vanilla GPS it will be shown on the map. (You don't n - Note that you can drag the Roamer (map tool) around with LMB and rotate it with Ctrl + LMB. ### 2.2 Drawing lines -- To draw lines `Map Tools` are not required. +- To draw lines `Map Tools` are required. - Press ALT + LMB to start the line, left click again to end it. - To delete a line press Del around the center of the line. - Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened) diff --git a/documentation/feature/medical-system.md b/documentation/feature/medical-system.md index 4bc0ae1557..efd5d6db7c 100644 --- a/documentation/feature/medical-system.md +++ b/documentation/feature/medical-system.md @@ -5,9 +5,9 @@ description: ACE provide users with a more realistic medical system and comes in group: feature order: 4 category: realism -parent: wiki +parent: wiki --- -**Disclaimer:** The documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page. +**Disclaimer:**The documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page. ## 1. Overview ACE3 provides users with a more realistic medical system and comes in both a basic and an advanced version. This page will detail the differences between both systems and what they do as well as how to use them efficiently. @@ -109,6 +109,14 @@ Atropine | Serves no use in basic - If the revive system is in place your character will not die until the revive timer is at 0. Even if a tank shoots your ass off an epinephrine shot will bring you back up after your wounds are treated. (The timer is invisible and may vary from mission to mission, it also depends on the amount of lives remaining you have.) - You can't do an overdose in basic. +#### 2.1.4 Revive (Basic medical) +For the following procedure to work revive need to be enabled. + +- A unit in the revive state will be unconscious and will stay unconscious until he is either woken up or the revive timer runs out. +- A unit in the revive state can't die from any source of damage, only the timer ending can kill it. +- To wake up a patient treat all of his wounds, make sure he isn't in pain then use epinephrine. +- Each successful revive removes a life from the unit, once the lives runs out the next time the unit will take fatal damage he will not enter the revive state and will die. + ### 2.2 Advanced Same as with basic, when hit an injury is sustained. Different though is that the type of injury and the severity of it are based upon how the damage was done and what caused it. This affects both blood loss and immediate consequences, such as being knocked out or being killed right away. When a player has sustained an injury, this will be indicated by flashing red on the screen; this means the player is bleeding. @@ -140,7 +148,7 @@ Same as with basic, when hit an injury is sustained. Different though is that th - Sources: falling, vehicle crashes, punches. - Effects: pain - light, bleeding - extremely slowly. -##### 2.2.1.5 Cut wounds** +##### 2.2.1.5 Cut wounds - Slicing wounds made with a sharp instrument, leaving even edges. They may be as minimal as a paper cut or as significant as a surgical incision. - Sources: vehicle crashes, grenades, explosions, artillery shells, backblast, stabs. @@ -288,5 +296,76 @@ Note that keeping the patient's vitals stable is very important while treating h - You don't have to take epinephrine after you take morphine, just wait until your pulse stabilizes by itself (Provided that you are in a stable condition). - Giving too much morphine to a patient (more than one every 10 minutes) will put him in cardiac arrest because of a blood pressure / heart rate too low. -## 3. Dependencies +#### 2.2.5 Revive (Advanced medical) +For the following procedure to work revive need to be enabled. + +- A unit in the revive state will be unconscious and will stay unconscious until he is either woken up or the revive timer runs out. +- A unit in the revive state can't die from any source of damage, only the timer ending can kill it. +- To wake up a patient the use of a PAK is required. +- Each successful revive removes a life from the unit, once the lives runs out the next time the unit will take fatal damage he will not enter the revive state and will die. +- Each successful round of CPR (filled up completion bar) increase the time left in the revive state. + +## 3. Guides +### 3.1 Loadouts + +#### 3.1.1 Basic +- Soldier: + - 10 x Bandage (basic) + - 3 x Morphine Autoinjector + - 1 epinephrine Autoinjector + +- Medic: + - 15-25 x Bandage (basic) + - 6 x Blood IV (500ml) + - 10 x Morphine Autoinjector + - 10 x Epinephrine Autoinjector + +#### 3.1.2 Advanced + +- Soldier : + - 3-6 x Bandage (basic) + - 3-6 x Bandage (elastic) + - 3-6 x Bandage (packing) + - 3-6 x QuikClot + - 1 x Morphine Autoinjector + - 1 x Epinephrine Autoinjector + - 1 x Tourniquet + - **Optional**: 1 x Saline IV (500ml) - used only by qualified medic + + +- Combat First Responder (CFR): + - 10-15 x Bandage (basic) + - 10-15 x Bandage (elastic) + - 10-15 x Bandage (packing) + - 10-15 x QuikClot + - 3 x Tourniquet + - 4 x Saline IV (500ml) + - 5 x Morphine Autoinjector + - 5 x Epinephrine Autoinjector + - 8 x Atropine Autoinjector + + +- Medic: + - 10-15 x Bandage (basic) + - 15-20 x Bandage (elastic) + - 15-20 x Bandage (packing) + - 10-15 x QuikClot + - 5 x Tourniquet + - 6 x Saline IV (500ml) + - 8 x Morphine Autoinjector + - 8 x Epinephrine Autoinjector + - 12 x Atropine Autoinjector + - 1-3 x *Surgical kit* + - 1-3 x *Personal Aid Kit* + + +- Paramedic: + - 10-15 x Bandage (basic) + - 15-20 x Bandage (elastic) + - 15-20 x Bandage (packing) + - 10-15 x QuikClot + - 5 x Tourniquet + - 2 x Saline IV (500ml) + +## 4. Dependencies `ace_interaction`, `ace_modules`, `ace_apl` \ No newline at end of file diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md index 691a6bc8ef..670acd293a 100644 --- a/documentation/feature/mk6mortar.md +++ b/documentation/feature/mk6mortar.md @@ -17,50 +17,28 @@ ACE3 adds wind deflection for shells as well as a rangetable to accurately take ### 2.1 Switching charge - Press F (Arma 3 default key bind `Fire Mode Switch`) to switch between charges -### 2.2 Working with the rangetable -- To open the table: - - Self interact Ctrl + ⊞ Win - - Select `equipment`. - - Select `Open 82mm Rangetable`. +### 2.2 Opening the table +- Self interact Ctrl + ⊞ Win +- Select `equipment`. +- Select `Open 82mm Rangetable`. -- Using the table: - - Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 000m away and 50m below (we're at 20m they are at 70m, 70-20=50). - - - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. - - - Check the range column on the table, we're at 2 000 then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1339. - - - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 2 (4:2 = 2) if our target was 300m above us we would have to subtract 12 from our elevation (3x4 = 12). - - - Once you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1339-2 = 1337. - - - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. - - To adjust the ELV use Page Up and page Down. - - Once the number you found and ELV are the same FIRE ! - - On top of that you can calculate the time the shell will take to land by using the third row from the left, in our case the shell need to travel 2000m that's 20xthe number indicated. so 20x0,5 = 10s. +### 2.2 Getting your shells to land where you want. +For this you need a `82mm Rangetable`, `Map Tools` and a `Vector 21` are also recommended. -### 2.3 Working with the rangetable (Crosswinds enabled) -- Same as above there's just an extra step, I'll provide an other example in case you forgot. - - - Get the distance and elevation difference between you and the target for this you can use map tools. For this example we'll say we're 2 400m away and 223m below (we're at 2m they are at 225, 225-2=223) - - Select the charge you want to use (0 = close / 1 = medium / 2 = far). For this case we're using charge 2. - - - Check the range column on the table, we're 2 400m a then look at the corresponding entry in the column on the right (ELEV = elevation) For this example it's 1145. - - After that's done move by one column on the right that's the elevation for 100m heigh so in our case we're subtracting 22 (2,2 x 10 (2,2 because we're around 220m below)). - - Extra step needed here, a kestrel 4500 IS NEEDED. - - Pick the crosswind on your kestrel (for this refer to the kestrel documentation). - - - For this example the crosswind is of 2 MPS on my table I can see under Azimuth correction that for each 1MPS I need to correct by 2.5 mill. - - So in this case i'm subtracting 5 mill from the ELV. - - - It's MATH TIME the ELV given by the table is 1 145, we subtract 22 because of the heigh, we also subtract 5 for the crosswind ( 1 145-22-5 = 1 118 ). - - After you finished your maths, it's time to aim, get the cross of the mortar on target, if you don't see it use a waypoint if possible. In our case ELEV is 1 118. - - - On the right side of the screen, while looking through the mk6 scope you should see ELV, we need to match this number with the one we found. - - - FIREEEE !!!! - - Little advantage of having crosswind enabled is that you don't have to calculate the flight time, it's marked on the table in this case it's 33,8s. +- Get the distance and elevation difference between you and the target for this you can use map tools. +- Select the charge you want to use (0 = close / 1 = medium / 2 = far). +- Open the `82mm Rangetable` +- Calculate the correct ELEV (elevation): + - Open the `Rangetable` and click on the charge you're using. + - Find your range under the `RANGE` collumn + - Under the `ELEV` collumn find the number that match your range, that's the base elevation you're going to work with. + - Under the `D ELEV for 100m DR` find the number that match your ELEV and compensate: + - Example, if you're 200m above your target multiply the number by 2 and add it to your ELEV. + - If you're 200m below the target multiply the number by 2 and substract it to your ELEV. + - The lower the elev the closer to you it will land. + - Once you finished calculating the ELEV align the barrel of the mortar with your target (directly looking at it) and set your ELEV to what you calculated by using Page Up and Page Down. + - Once the ELEV is correctly set and the barrel is facing the right direction, shoot and enjoy your bananas while watching hell rain on your enemies. ## 3. Dependencies `ace_interaction` diff --git a/documentation/framework/disposables-framework.md b/documentation/framework/disposables-framework.md new file mode 100644 index 0000000000..858eaf3122 --- /dev/null +++ b/documentation/framework/disposables-framework.md @@ -0,0 +1,40 @@ +--- +layout: wiki +title: Disposable framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Making a launcher disposable + + +### 1.1 CfgWeapons +``` +class CfgWeapons { + + class Launcher_Base_F; + + class launch_banana: Launcher_Base_F { + ACE_UsedTube = "launch_banana_Used_F"; // The class name of the used tube. + magazines[] = {"ACE_PreloadedMissileDummy"}; // The dummy magazine + }; + + class launch_banana_Used_F: launch_banana { // the used tube should be a sub class of the disposable launcher + scope = 1; + ACE_isUsedLauncher = 1; + author = "someone"; + displayName = "Used banana launcher"; + descriptionShort = "A used banana launcher"; + magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again. + //picture = ""; + //model = ""; + weaponPoolAvailable = 0; + }; +}; +``` + +### 1.2 Notes + +- This is just the necessary to make a launcher disposable, this is not a guide to make your own launcher. diff --git a/documentation/framework/explosives-framework.md b/documentation/framework/explosives-framework.md new file mode 100644 index 0000000000..e28f5dc722 --- /dev/null +++ b/documentation/framework/explosives-framework.md @@ -0,0 +1,127 @@ +--- +layout: wiki +title: Explosives framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Explosives + +### 1.1 Setting the magazine + +``` +class CfgMagazines { + class CA_Magazine; + + class banana_satchel_remote_mag: CA_Magazine { + ACE_Placeable = 1; // Can be placed + useAction = 0; // Disable the vanilla interaction + ACE_SetupObject = "banana_satchel_place"; // The object placed before te explosive is armed. + class ACE_Triggers { // Trigger configurations + SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"}; // Triggers that can be used. + class Timer { + FuseTime = 0.5; // Time for the fuse to burn. + }; + class Command { + FuseTime = 0.5; + }; + class MK16_Transmitter: Command {}; + class DeadmanSwitch: Command {}; + }; + }; +}; +``` + +### 1.2 Setting the ammo + +``` +class CfgAmmo { + + class PipeBombBase; + class SatchelCharge_Remote_Ammo: PipeBombBase { + soundActivation[] = {"", 0, 0, 0}; // No sound on activation. + soundDeactivation[] = {"", 0, 0, 0}; // No sound on deactivation. + }; +}; +``` + +Some optionnal parameters: +- triggerWhenDestroyed = 1; // Explode when the object is shot and destroyed (after being placed) (0= disabled, 1= enabled). +- ACE_explodeOnDefuse = 0.02; // Add a chance for the explosive to detonate after being disarmed. (in percent) + +### 1.3 Adding the place item + +``` +class CfgVehicles { + + class ACE_Explosives_Place; + class banana_satchel_place: ACE_Explosives_Place { + displayName = "Banana satchel"; // Name of the item + model = ""; // Path to your model + ACE_offset[] = {0,0,0}; // Offset of the interaction point from the model in meters on the X,Y,Z axis. + }; +}; +``` + + +## 2. Mines + +### 2.1 Setting the magazine + +_Pretty much the same as Explosives except that we inherit from_ `ATMine_Range_Mag` _instead of_ `CA_Magazine` + +``` +class CfgMagazines { + + class ATMine_Range_Mag; + + class BananaMine_Range_Mag: ATMine_Range_Mag { + ACE_SetupObject = "BananaMine_Place"; // The object placed before the mine is armed. + class ACE_Triggers { // Triggers + SupportedTriggers[] = {"PressurePlate"}; // This mine only support pressure plate activation. + class PressurePlate { + digDistance = 0.05; + }; + }; + }; +}; +``` + +### 2.2 Setting up the Ammo + +The class you inherit from depends of what type of trigger you are using, for `PressurePlate` and `Tripwire` you can skip this step, for timers and clackers refer to the Explosives entry. + +Directional mines inherit from `DirectionalBombBase`. + +## 3. Adding your own detonators + +``` +class CfgWeapons { + + class ACE_ItemCore; // ACE3 base item class. + class ACE_Clacker; // Clacker base class. + + class banana_clacker: ACE_Clacker { + displayName = "banana clacker"; // Name of the item. + picture = ""; // Path to the item's picture. + ACE_Range = 9000; // Explosives activation range in meters. + }; +}; +``` +## 4. Trigger list + +Name | Use +---- | ----- +Command | Explode when activated via clacker. +MK16_Transmitter | Explode when activated via M26 clacker. +DeadManSwitch | Explode after activated via the switch or the person dies. +Cellphone | Explode when the number is called. +PressurePlate | Explode upon being stepped upon. +IRSensor | Explode after movement is detected in front of the mine. +Timer | Explode after timer drop to 0. +Tripwire | Explode when something touch the tripwire. + + +## 5. Events diff --git a/documentation/user/information-center.md b/documentation/user/information-center.md index b1a1e8e9f0..3df59822d7 100644 --- a/documentation/user/information-center.md +++ b/documentation/user/information-center.md @@ -39,10 +39,14 @@ Downloaded ACE3 and have no idea where to start? This page serves as a starting **A:** Fun fact, it isn't, you need to come from the direction of the laser, (laser is pointing to the east, you come from the west) and you drop the GBU, it will then guide itself to the target. The reasoning behind that is that the vehicle or building laser designated would obstruct the laser and the GBU would then be unable to lock on it.
**Q:** I take vanilla damage with ACE 3.1.1
-**A:** This has been fixed on ACE3 master and will be fixed in the next release, in the meantime Basic medical doesn't have that issue.
+**A:** This has been fixed in 3.2.0
**Q:** I'm having dll errors.
-**A:** Remove ACE3 from your Arma 3 folder and repeat the installation process (don't forget to re-download).
+**A:** Start the game once with the arma3 launcher, close it then open it with your usual launcher (arma3sync or PW6).
+The simple explanation to that is that battleye break itself and only starting it with the arma3 launcher fixes it.
+ +**Q:** ACE fonts is outdated.
+**A:** This happens because you're using the mod (stable) with the dev version on your P drive, remove simlinks in ARMA3 root and the P drive. ### 1.3 Compatibility From 96bd47bfbfdb0c9e99c63c77835852cc872c4e4b Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 16 Aug 2015 15:28:33 +0200 Subject: [PATCH 062/620] doc pass 11 update - Updated - fonts (added description) - huntIR - maptools - medical system - mk6mortar - disposable framework - explosives framework - settings framework - information center by @jonpas --- documentation/feature/fonts.md | 1 + documentation/feature/huntIR.md | 11 +- documentation/feature/maptools.md | 10 +- documentation/feature/medical-system.md | 124 +++++++++--------- documentation/feature/mk6mortar.md | 21 +-- .../framework/disposables-framework.md | 34 +++-- .../framework/explosives-framework.md | 82 ++++++------ .../{settings.md => settings-framework.md} | 71 +++++----- documentation/user/information-center.md | 18 +-- 9 files changed, 181 insertions(+), 191 deletions(-) rename documentation/framework/{settings.md => settings-framework.md} (58%) diff --git a/documentation/feature/fonts.md b/documentation/feature/fonts.md index 198e3f8bd0..7661feeaaf 100644 --- a/documentation/feature/fonts.md +++ b/documentation/feature/fonts.md @@ -1,6 +1,7 @@ --- layout: wiki title: Fonts +description: Custom fonts including fixed-width font. group: feature category: general parent: wiki diff --git a/documentation/feature/huntIR.md b/documentation/feature/huntIR.md index af587e8fed..be84c8b02b 100644 --- a/documentation/feature/huntIR.md +++ b/documentation/feature/huntIR.md @@ -1,6 +1,7 @@ --- layout: wiki title: HuntIR +description: High-altitude Unit Navigated Tactical Imaging Round group: feature category: equipment parent: wiki @@ -9,25 +10,25 @@ parent: wiki ## 1. Overview ### 1.1 The HuntIR -The **H**igh altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher. After being fired in the air the in built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down. +The **H**igh-altitude **U**nit **N**avigated **T**actical **I**maging **R**ound (HuntIR) is designed to be fired from a grenade launcher. After being fired in the air the in-built parachute will be deployed and the IR CMOS camera will activate, providing a video stream until it touches the ground or get shot down. ## 2. Usage -NOTE: the HuntIR round doesn't work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team. +NOTE: The HuntIR round does not work with modded weapons without a compatibility fix made either by the ACE3 team or the mod team. ### 2.1 Using the HuntIR -- To be able to connect to the IR CMOS camera you'll need a `HuntIR monitor`. +- To be able to connect to the IR CMOS camera you will need a `HuntIR monitor`. - Fire the HuntIR round as high as possible over the area you want to observe. - Open the `HuntIR monitor`. - To open the `HuntIR monitor` self interact Ctrl + ⊞ Win (ACE3 default) - Select `Equipment`. - Select `Activate HuntIR monitor`. -- You now have control of the IR CMOS camera to close the monitor press ESC or ⊞ Win +- You now have control of the IR CMOS camera, to close the monitor press ESC or ⊞ Win ### 2.2 IR CMOS camera controls Shortcut | Action ------------ | ------------- -A | Lower zoom level +A | Decrease zoom level D | Increase zoom level N | Toggle NV S | Next camera diff --git a/documentation/feature/maptools.md b/documentation/feature/maptools.md index 0bf41682c3..260c3409d3 100644 --- a/documentation/feature/maptools.md +++ b/documentation/feature/maptools.md @@ -16,23 +16,23 @@ This adds the possibility to draw accurate lines on the map screen. This adds map tools that can be used to measure distances between two points or bearings on the map. ### 1.3 GPS on map -If you are equipped with a vanilla GPS it will be shown on the map. (You don't need the map tools in your inventory for this.) +If you are equipped with a vanilla GPS it will be shown on the map. (You don't need the `Map Tools` item in your inventory for this.) ## 2. Usage ### 2.1 Using map tools -- For this you need to have `Map Tools`. +- To use map tools `Map Tools` in your inventory are required. - Open the map M (Arma 3 default key bind `Map`). - Press the self interaction key Ctrl + ⊞ Win (ACE3 default key bind `Self Interaction Key`). - Select `Map tools`. - Select the type of tools you want to use. -- Note that you can drag the Roamer (map tool) around with LMB and rotate it with Ctrl + LMB. +- Note that you can drag the Roamer (map tool) around with LMB and rotate it with Ctrl + LMB. ### 2.2 Drawing lines -- To draw lines `Map Tools` are required. +- To draw lines `Map Tools` in your inventory are required. - Press ALT + LMB to start the line, left click again to end it. - To delete a line press Del around the center of the line. -- Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened) +- Note that you can change the color of the lines by clicking on one of the coloured column on top of the screen (While the map is opened). ## 3. Dependencies diff --git a/documentation/feature/medical-system.md b/documentation/feature/medical-system.md index efd5d6db7c..cb4bf8fb24 100644 --- a/documentation/feature/medical-system.md +++ b/documentation/feature/medical-system.md @@ -1,13 +1,13 @@ --- layout: wiki title: Medical System -description: ACE provide users with a more realistic medical system and comes in both a basic and advanced version. Both versions have overlap but each have their own unique characteristics. +description: ACE3 provide users with a more realistic medical system and comes in both a basic and advanced version. Both versions have overlap but each have their own unique characteristics. group: feature order: 4 category: realism -parent: wiki +parent: wiki --- -**Disclaimer:**The documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page. +**Disclaimer:** As the documentation for the medical system being extremely long it's highly advised to use the table of contents at the top right corner of the page. ## 1. Overview ACE3 provides users with a more realistic medical system and comes in both a basic and an advanced version. This page will detail the differences between both systems and what they do as well as how to use them efficiently. @@ -34,7 +34,7 @@ Besides the 4 elements introduced by basic medical, advanced introduces the foll - Cardiac Arrest. - Various treatment methods such as CPR, different kinds of IVs and a working tourniquet. - A basic medication simulation. - + ## 2. Usage ### 2.1 Basic @@ -84,17 +84,17 @@ Atropine | Serves no use in basic - **Yes:** Ask him if he has wounds / he is in pain. - **No:** Go to step 2. - + - **Step 2:** Is the patient wounded? - **Yes:** Treat the wounds and go to step 3. - **No:** Skip this step. - + - **Step 3:** Is the patient in pain? - **Yes:** Give him morphine. - **No:** Skip this step. - + - **Step 4:** Did the patient lose blood? - **Yes:** Give blood via IV. - **No:** Go to step 5. @@ -109,13 +109,13 @@ Atropine | Serves no use in basic - If the revive system is in place your character will not die until the revive timer is at 0. Even if a tank shoots your ass off an epinephrine shot will bring you back up after your wounds are treated. (The timer is invisible and may vary from mission to mission, it also depends on the amount of lives remaining you have.) - You can't do an overdose in basic. -#### 2.1.4 Revive (Basic medical) +#### 2.1.4 Revive (Basic Medical) For the following procedure to work revive need to be enabled. - A unit in the revive state will be unconscious and will stay unconscious until he is either woken up or the revive timer runs out. - A unit in the revive state can't die from any source of damage, only the timer ending can kill it. -- To wake up a patient treat all of his wounds, make sure he isn't in pain then use epinephrine. -- Each successful revive removes a life from the unit, once the lives runs out the next time the unit will take fatal damage he will not enter the revive state and will die. +- To wake up a patient treat all of his wounds, make sure he isn't in pain and then use epinephrine. +- Each successful revive removes a life from the unit, once the lives run out the next time unit will take fatal damage he will not enter the revive state and will die. ### 2.2 Advanced @@ -224,7 +224,7 @@ Atropine | lower the heart rate of the patient #### 2.2.2 Vitals -##### 2.2.2.1 Blood pressure +##### 2.2.2.1 Blood pressure NOTE:the `systolic` blood pressure is the number on the left, the `diastolic` blood pressure is the number on the right. @@ -240,7 +240,7 @@ Atropine | lower the heart rate of the patient - **Low:** 45 and below - **Normal:** between 46 and 119 - **High:** 120 and above - + ##### 2.2.2.3 Cardiac arrest @@ -264,12 +264,12 @@ This is a step by step guide, follow the steps from 1 to 6 in order unless state - **Step 2:** Does the patient have a pulse? - **Yes:** Go to step 3. - **No:** If you are alone provide CPR, if you have someone else get him to do CPR while you treat the patient's wounds. skip to step 3 or 4 depending on the situation. - + - **Step 3:** Is the patient wounded? - **Yes**: Treat the wounds. - **No:** Skip this step. - + - **Step 4:** Did the patient lose blood? - **Yes:** Use IVs to restore the volume of liquid in the blood stream of the patient. @@ -296,13 +296,13 @@ Note that keeping the patient's vitals stable is very important while treating h - You don't have to take epinephrine after you take morphine, just wait until your pulse stabilizes by itself (Provided that you are in a stable condition). - Giving too much morphine to a patient (more than one every 10 minutes) will put him in cardiac arrest because of a blood pressure / heart rate too low. -#### 2.2.5 Revive (Advanced medical) +#### 2.2.5 Revive (Advanced Medical) For the following procedure to work revive need to be enabled. - A unit in the revive state will be unconscious and will stay unconscious until he is either woken up or the revive timer runs out. - A unit in the revive state can't die from any source of damage, only the timer ending can kill it. - To wake up a patient the use of a PAK is required. -- Each successful revive removes a life from the unit, once the lives runs out the next time the unit will take fatal damage he will not enter the revive state and will die. +- Each successful revive removes a life from the unit, once the lives run out the next time unit will take fatal damage he will not enter the revive state and will die. - Each successful round of CPR (filled up completion bar) increase the time left in the revive state. ## 3. Guides @@ -310,62 +310,62 @@ For the following procedure to work revive need to be enabled. #### 3.1.1 Basic - Soldier: - - 10 x Bandage (basic) - - 3 x Morphine Autoinjector - - 1 epinephrine Autoinjector + - 10 × Bandage (Basic) + - 3 × Morphine autoinjector + - 1 × Epinephrine autoinjector - Medic: - - 15-25 x Bandage (basic) - - 6 x Blood IV (500ml) - - 10 x Morphine Autoinjector - - 10 x Epinephrine Autoinjector - + - 15-25 × Bandage (Basic) + - 10 × Morphine autoinjector + - 10 × Epinephrine autoinjector + - 6 × Blood IV (500ml) + #### 3.1.2 Advanced - Soldier : - - 3-6 x Bandage (basic) - - 3-6 x Bandage (elastic) - - 3-6 x Bandage (packing) - - 3-6 x QuikClot - - 1 x Morphine Autoinjector - - 1 x Epinephrine Autoinjector - - 1 x Tourniquet - - **Optional**: 1 x Saline IV (500ml) - used only by qualified medic - + - 3-6 × Bandage (Basic) + - 3-6 × Bandage (Elastic) + - 3-6 × Packing Bandage + - 3-6 × Basic Field Dressing (QuikClot) + - 1 × Morphine autoinjector + - 1 × Epinephrine autoinjector + - 1 × Tourniquet (CAT) + - **Optional**: 1 × Saline IV (500ml) - used only by qualified medic + - Combat First Responder (CFR): - - 10-15 x Bandage (basic) - - 10-15 x Bandage (elastic) - - 10-15 x Bandage (packing) - - 10-15 x QuikClot - - 3 x Tourniquet - - 4 x Saline IV (500ml) - - 5 x Morphine Autoinjector - - 5 x Epinephrine Autoinjector - - 8 x Atropine Autoinjector - + - 10-15 × Bandage (Basic) + - 10-15 × Bandage (Elastic) + - 10-15 × Packing Bandage + - 10-15 × Basic Field Dressing (QuikClot) + - 8 × Atropine autoinjector + - 5 × Morphine autoinjector + - 5 × Epinephrine autoinjector + - 3 × Tourniquet (CAT) + - 4 × Saline IV (500ml) + - Medic: - - 10-15 x Bandage (basic) - - 15-20 x Bandage (elastic) - - 15-20 x Bandage (packing) - - 10-15 x QuikClot - - 5 x Tourniquet - - 6 x Saline IV (500ml) - - 8 x Morphine Autoinjector - - 8 x Epinephrine Autoinjector - - 12 x Atropine Autoinjector - - 1-3 x *Surgical kit* - - 1-3 x *Personal Aid Kit* - + - 10-15 × Bandage (Basic) + - 15-20 × Bandage (Elastic) + - 15-20 × Packing Bandage + - 10-15 × Basic Field Dressing (QuikClot) + - 12 × Atropine Autoinjector + - 8 × Morphine Autoinjector + - 8 × Epinephrine Autoinjector + - 5 × Tourniquet (CAT) + - 6 × Saline IV (500ml) + - 1-3 × *Surgical Kit* + - 1-3 × *Personal Aid Kit* + - Paramedic: - - 10-15 x Bandage (basic) - - 15-20 x Bandage (elastic) - - 15-20 x Bandage (packing) - - 10-15 x QuikClot - - 5 x Tourniquet - - 2 x Saline IV (500ml) + - 10-15 × Bandage (Basic) + - 15-20 × Bandage (Elastic) + - 15-20 × Packing Bandage + - 10-15 × Basic Field Dressing (QuikClot) + - 5 × Tourniquet (CAT) + - 2 × Saline IV (500ml) ## 4. Dependencies -`ace_interaction`, `ace_modules`, `ace_apl` \ No newline at end of file +`ace_interaction`, `ace_modules`, `ace_apl` diff --git a/documentation/feature/mk6mortar.md b/documentation/feature/mk6mortar.md index 670acd293a..c4afd42c53 100644 --- a/documentation/feature/mk6mortar.md +++ b/documentation/feature/mk6mortar.md @@ -1,7 +1,7 @@ --- layout: wiki title: Mk6 Mortar -description: Improve the existing mk6 mortar. +description: Improve the existing Mk6 Mortar. group: feature category: equipment parent: wiki @@ -9,9 +9,10 @@ parent: wiki ## 1. Overview -### 1.1 mk6 mortar overhaul +### 1.1 Mk6 Mortar overhaul ACE3 adds wind deflection for shells as well as a rangetable to accurately take out your target without the artillery computer. + ## 2. Usage ### 2.1 Switching charge @@ -19,26 +20,28 @@ ACE3 adds wind deflection for shells as well as a rangetable to accurately take ### 2.2 Opening the table - Self interact Ctrl + ⊞ Win -- Select `equipment`. +- Select `Equipment`. - Select `Open 82mm Rangetable`. ### 2.2 Getting your shells to land where you want. For this you need a `82mm Rangetable`, `Map Tools` and a `Vector 21` are also recommended. -- Get the distance and elevation difference between you and the target for this you can use map tools. +- Get the distance and elevation difference between you and the target (you can use map tools). - Select the charge you want to use (0 = close / 1 = medium / 2 = far). - Open the `82mm Rangetable` - Calculate the correct ELEV (elevation): - - Open the `Rangetable` and click on the charge you're using. - - Find your range under the `RANGE` collumn - - Under the `ELEV` collumn find the number that match your range, that's the base elevation you're going to work with. + - Open the `Rangetable` and click on the charge you are using. + - Find your range under the `RANGE` column + - Under the `ELEV` column find the number that match your range, that's the base elevation you are going to work with. - Under the `D ELEV for 100m DR` find the number that match your ELEV and compensate: - Example, if you're 200m above your target multiply the number by 2 and add it to your ELEV. - If you're 200m below the target multiply the number by 2 and substract it to your ELEV. - - The lower the elev the closer to you it will land. + - The lower the elevation the closer to you it will land. - Once you finished calculating the ELEV align the barrel of the mortar with your target (directly looking at it) and set your ELEV to what you calculated by using Page Up and Page Down. - - Once the ELEV is correctly set and the barrel is facing the right direction, shoot and enjoy your bananas while watching hell rain on your enemies. + - Once the ELEV is correctly set and the barrel is facing the right direction, shoot and enjoy your bananas while watching hell rain on your enemies. + + ## 3. Dependencies `ace_interaction` diff --git a/documentation/framework/disposables-framework.md b/documentation/framework/disposables-framework.md index 858eaf3122..22887ea2b0 100644 --- a/documentation/framework/disposables-framework.md +++ b/documentation/framework/disposables-framework.md @@ -1,40 +1,38 @@ --- layout: wiki -title: Disposable framework -description: +title: Disposables Framework +description: Explains how to set-up custom disposable launchers with the ACE3 disposables system. group: framework order: 5 parent: wiki --- +
+
Note:
+

This is just the necessary to make a launcher disposable, this is not a guide to make your own launcher.

+
+ ## 1. Making a launcher disposable - ### 1.1 CfgWeapons -``` -class CfgWeapons { - - class Launcher_Base_F; +```c++ +class CfgWeapons { + class Launcher_Base_F; class launch_banana: Launcher_Base_F { - ACE_UsedTube = "launch_banana_Used_F"; // The class name of the used tube. + ACE_UsedTube = "launch_banana_Used_F"; // The class name of the used tube magazines[] = {"ACE_PreloadedMissileDummy"}; // The dummy magazine }; - - class launch_banana_Used_F: launch_banana { // the used tube should be a sub class of the disposable launcher + class launch_banana_Used_F: launch_banana { // The used tube should be a sub class of the disposable launcher scope = 1; ACE_isUsedLauncher = 1; - author = "someone"; + author = "grandBanana"; displayName = "Used banana launcher"; descriptionShort = "A used banana launcher"; - magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again. - //picture = ""; - //model = ""; + magazines[] = {"ACE_FiredMissileDummy"}; // This will disable the used launcher class from being fired again + //picture = ""; // Not supported yet + //model = ""; // Not supported yet weaponPoolAvailable = 0; }; }; ``` - -### 1.2 Notes - -- This is just the necessary to make a launcher disposable, this is not a guide to make your own launcher. diff --git a/documentation/framework/explosives-framework.md b/documentation/framework/explosives-framework.md index e28f5dc722..abe6e016af 100644 --- a/documentation/framework/explosives-framework.md +++ b/documentation/framework/explosives-framework.md @@ -1,28 +1,32 @@ --- layout: wiki -title: Explosives framework -description: +title: Explosives Framework +description: Explains how to set-up custom explosives with the ACE3 explosives system. group: framework order: 5 parent: wiki --- +
+
Note:
+

This is just the necessary to make explosives using the framework, this is not a guide to make your own explosives.

+
+ ## 1. Explosives ### 1.1 Setting the magazine -``` +```c++ class CfgMagazines { class CA_Magazine; - class banana_satchel_remote_mag: CA_Magazine { ACE_Placeable = 1; // Can be placed useAction = 0; // Disable the vanilla interaction - ACE_SetupObject = "banana_satchel_place"; // The object placed before te explosive is armed. + ACE_SetupObject = "banana_satchel_place"; // The object placed before the explosive is armed class ACE_Triggers { // Trigger configurations - SupportedTriggers[] = {"Timer","Command", "MK16_Transmitter", "DeadmanSwitch"}; // Triggers that can be used. + SupportedTriggers[] = {"Timer", "Command", "MK16_Transmitter", "DeadmanSwitch"}; // Triggers that can be used class Timer { - FuseTime = 0.5; // Time for the fuse to burn. + FuseTime = 0.5; // Time for the fuse to burn }; class Command { FuseTime = 0.5; @@ -36,31 +40,27 @@ class CfgMagazines { ### 1.2 Setting the ammo -``` +```c++ class CfgAmmo { - class PipeBombBase; class SatchelCharge_Remote_Ammo: PipeBombBase { - soundActivation[] = {"", 0, 0, 0}; // No sound on activation. - soundDeactivation[] = {"", 0, 0, 0}; // No sound on deactivation. + soundActivation[] = {"", 0, 0, 0}; // No sound on activation + soundDeactivation[] = {"", 0, 0, 0}; // No sound on deactivation + triggerWhenDestroyed = 1; // (Optional) Explode when the object is shot and destroyed (after being placed) (0-disabled, 1-enabled). + ACE_explodeOnDefuse = 0.02; // (Optional) Add a chance for the explosive to detonate after being disarmed (in percent) }; }; ``` -Some optionnal parameters: -- triggerWhenDestroyed = 1; // Explode when the object is shot and destroyed (after being placed) (0= disabled, 1= enabled). -- ACE_explodeOnDefuse = 0.02; // Add a chance for the explosive to detonate after being disarmed. (in percent) - ### 1.3 Adding the place item -``` +```c++ class CfgVehicles { - class ACE_Explosives_Place; class banana_satchel_place: ACE_Explosives_Place { displayName = "Banana satchel"; // Name of the item model = ""; // Path to your model - ACE_offset[] = {0,0,0}; // Offset of the interaction point from the model in meters on the X,Y,Z axis. + ACE_offset[] = {0, 0, 0}; // Offset of the interaction point from the model in meters on the X,Y,Z axis. }; }; ``` @@ -70,17 +70,15 @@ class CfgVehicles { ### 2.1 Setting the magazine -_Pretty much the same as Explosives except that we inherit from_ `ATMine_Range_Mag` _instead of_ `CA_Magazine` +_Pretty much the same as Explosives except that we inherit from_ `ATMine_Range_Mag` _instead of_ `CA_Magazine`. -``` +```c++ class CfgMagazines { - class ATMine_Range_Mag; - class BananaMine_Range_Mag: ATMine_Range_Mag { - ACE_SetupObject = "BananaMine_Place"; // The object placed before the mine is armed. + ACE_SetupObject = "BananaMine_Place"; // The object placed before the mine is armed class ACE_Triggers { // Triggers - SupportedTriggers[] = {"PressurePlate"}; // This mine only support pressure plate activation. + SupportedTriggers[] = {"PressurePlate"}; // This mine only support pressure plate activation class PressurePlate { digDistance = 0.05; }; @@ -95,33 +93,31 @@ The class you inherit from depends of what type of trigger you are using, for `P Directional mines inherit from `DirectionalBombBase`. + ## 3. Adding your own detonators -``` +```c++ class CfgWeapons { - - class ACE_ItemCore; // ACE3 base item class. - class ACE_Clacker; // Clacker base class. - + class ACE_ItemCore; // ACE3 base item class + class ACE_Clacker; // Clacker base class class banana_clacker: ACE_Clacker { - displayName = "banana clacker"; // Name of the item. - picture = ""; // Path to the item's picture. - ACE_Range = 9000; // Explosives activation range in meters. + displayName = "banana clacker"; // Name of the item + picture = ""; // Path to the item's picture + ACE_Range = 9000; // Explosives activation range in meters }; }; ``` + + ## 4. Trigger list Name | Use ---- | ----- -Command | Explode when activated via clacker. -MK16_Transmitter | Explode when activated via M26 clacker. -DeadManSwitch | Explode after activated via the switch or the person dies. -Cellphone | Explode when the number is called. -PressurePlate | Explode upon being stepped upon. -IRSensor | Explode after movement is detected in front of the mine. -Timer | Explode after timer drop to 0. -Tripwire | Explode when something touch the tripwire. - - -## 5. Events +`Command` | Explode when activated via clacker. +`MK16_Transmitter` | Explode when activated via M26 clacker. +`DeadManSwitch` | Explode after activated via the switch or the person dies. +`Cellphone` | Explode when the number is called. +`PressurePlate` | Explode upon being stepped upon. +`IRSensor` | Explode after movement is detected in front of the mine. +`Timer` | Explode after timer drop to 0. +`Tripwire` | Explode when something touch the tripwire. diff --git a/documentation/framework/settings.md b/documentation/framework/settings-framework.md similarity index 58% rename from documentation/framework/settings.md rename to documentation/framework/settings-framework.md index 58208a873d..456a294c04 100644 --- a/documentation/framework/settings.md +++ b/documentation/framework/settings-framework.md @@ -1,78 +1,71 @@ --- layout: wiki title: Settings Framework -description: ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting pbos. +description: ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting PBOs. group: framework order: 5 parent: wiki --- -ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting pbos. These settings are all handled server side and broadcasted to the clients connecting to that server. This ensures that everyone playing on the server will have a uniform experience. +ACE3 contains an extensive settings framework that allows you to tweak the modification without having to mess around with deleting PBOs. These settings are all handled server side and broadcasted to the clients connecting to that server. This ensures that everyone playing on the server will have a uniform experience. Part of this settings framework are global settings and client settings. Both use the same underlaying framework, with the difference that client settings can be adjusted by clients, where global settings can not. ## 1. How do they work -Settings are entries in the config that get translated to `missionnamespace` global variables. An example settings entry looks like this: +Settings are entries in the config that get translated to `missionNamespace` global variables. An example settings entry looks like this: ```c++ class ACE_module_sampleSetting { - // Value - value = 1; + // Following 2 entries are redundant if isClientSettable = 0 + displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name + description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description - // Type (SCALAR, BOOL, STRING, ARRAY, COLOR) - typeName = "SCALAR"; + isClientSettable = 1; // Show in client options menu (0-no, 1-yes) + typeName = "SCALAR"; // Type (BOOL/SCALAR/STRING/ARRAY/COLOR) + value = 1; // Value - // Force the setting? - force = 0; + // Following entry is redundant if typeName is NOT "SCALAR" + values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // (Optional) Stringtable entries that describe the options - // Does it appear on the options menu? - isClientSettable = 1; - - // The following settings only apply when isClientSettable == 1 - // Stringtable entry with the setting name - displayName = "$STR_ACE_Common_SettingName"; - - // Stringtable entry with the setting description - description = "$STR_ACE_Common_SettingDescription"; - - // Stringtable entries that describe the options - // Only applies if typeName == "SCALAR"; and is optional - values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; + // Following entry is present only in export + force = 0; // Force the setting (0-no, 1-yes), exported settings are forced by default }; ``` -Settings are defined from the mods config but can be adjusted through the following methods: +Settings are defined from the mod's config but can be adjusted through the following methods: * Optional config entries -* Mission side modules +* Mission modules + ## 2. Load order The load order for the settings are: -* 1. Mod config -* 2. Server config -* 3. Mission config -* 4. Placed down mission modules +1. Mod Config +2. Server Config +3. Mission Config +4. Placed Mission Modules + +What this means is that at any the 3 points after the Mod Config it is possible to insert your adjusted settings and force those (optionally). This is a powerful tool for server admins, whom can ensure that everyone is using uniform settings across the board on their server. And it provides mission makers the ability to easily set settings for their mission, without creating a large dependency on ACE3; you do not have to place down mission modules. -What this means is that at any the 3 points after the mod config it is possible to insert your adjusted settings and force those (optionally). This is a powerful tool for server admins, whom can ensure that everyone is using uniform settings across the board on their server. And it provides mission makers the ability to easily set settings for their mission, without creating a large dependency on ACE3; you do not have to place down mission modules. ## 3. How do I use them? -In the 'how do they work' chapter an example of settings was shown. This is the same for any settings config. The only difference is the location. For ACE3 modules, the settings are placed in the class `ACE_settings`. The same goes for the mission config. +In the 'how do they work' chapter an example of settings was shown. This is the same for any settings config. The only difference is the location. For ACE3 modules, the settings are placed in the class `ACE_Settings`. The same goes for the mission config. -The server config setting entries are done through our optional ACE_server.pbo, which can be found in the optionals folder of @ace. It also contains a `userconfig` folder, which inside contains the file `ace\serverconfig.hpp`. This is the location ACE3 settings are placed. There is no need for a sub class. +The server config setting entries are done through our optional `ace_server.pbo`, which can be found in the optionals folder of `@ace`. It also contains a `userconfig` folder, which inside contains the file `ace\serverconfig.hpp`. This is the location where ACE3 settings are placed. There is no need for a sub-class. ### 3.1 Getting all the settings! -ACE3 contains a lot of settings; for that reason tweaking everything to your liking manually can be quite a task. We have provided the option to export all settings in the editor (single-player). For this, follow these simple steps: +ACE3 contains a lot of settings, for that reason tweaking everything to your liking manually can be quite a task. We have provided the option to export all settings in the editor (single-player). For this, follow these simple steps: * Open the editor (single-player). -* Under modules (F7), find ACE, `Config Export [ACE]`. -* Place down the module, ensure that the allow parameter is set to yes. -* Press preview, once in game, press Esc and open the ACE3 Options dialog (top left) +* Under modules (F7), find ACE, `Allow Config Export [ACE]`. +* Place down the module, ensure that the `Allow` parameter is set to `Yes`. +* Press preview, once in the game, press Esc and open the ACE3 Options dialog (top left) * This is the dialog where you can modify client side settings. On the bottom left of it, you will now see a button called `Config Export`. Press it and a new dialog opens. * You are now in the dialog that allows you to adjust all settings from ACE3. Tweak this to your liking. * Once you are done tweaking, press the `Export` button and all settings will be copied to your clipboard. @@ -82,14 +75,12 @@ Note that the format copied to your clipboard by this can also be used in the mi ```c++ class ACE_Settings { - // add exported settings here + // Add exported settings here }; ``` - ### 3.2 Loading up the server config -As stated before, the server config gets loaded through the optional `ACE_server.pbo`. This PBO is only required (and should only be used) on the server - clients do not need to have this! It is for this reason we have not signed this PBO. - -Load the `ACE_server.pbo` like any other addon on your server. It is advised to create an `@aceServer` mod folder with an `addons` sub folder where you would paste the `ACE_server.pbo` and load that through `-serverMod=@aceServer`. +As stated before, the server config gets loaded through the optional `ace_server.pbo`. This PBO is only required (and should only be used) on the server - clients do not need to have this! It is for this reason we have not signed this PBO. +Load the `ace_server.pbo` like any other addon on your server. It is advised to create an `@aceServer` mod folder with an `addons` sub folder where you would paste the `ace_server.pbo` and load that through `-serverMod=@aceServer`. diff --git a/documentation/user/information-center.md b/documentation/user/information-center.md index 3df59822d7..4cea2e3b83 100644 --- a/documentation/user/information-center.md +++ b/documentation/user/information-center.md @@ -20,7 +20,7 @@ Downloaded ACE3 and have no idea where to start? This page serves as a starting ## 1. FAQ -### 1.1 Features +### 1.1 Features **Q:** Where is X feature?
**A:** When it's done.
@@ -41,17 +41,17 @@ Downloaded ACE3 and have no idea where to start? This page serves as a starting **Q:** I take vanilla damage with ACE 3.1.1
**A:** This has been fixed in 3.2.0
-**Q:** I'm having dll errors.
-**A:** Start the game once with the arma3 launcher, close it then open it with your usual launcher (arma3sync or PW6).
-The simple explanation to that is that battleye break itself and only starting it with the arma3 launcher fixes it.
+**Q:** I am having dll errors.
+**A:** Start the game once with the Arma 3 Launcher, close it, then start the game with your usual launcher (ArmA3Sync or Play withSIx).
+The simple explanation is that BattlEye breaks itself and only starting it with the Arma 3 Launcher fixes it.
-**Q:** ACE fonts is outdated.
-**A:** This happens because you're using the mod (stable) with the dev version on your P drive, remove simlinks in ARMA3 root and the P drive. +**Q:** ACE3 fonts is outdated.
+**A:** This happens because you have ACE3 development environment set-up, which means file patching is enabled. Use `-noFilePatching` startup parameter (in the upcoming Arma 3 update this will not be needed as file patching will be disabled by default). ### 1.3 Compatibility -**Q:**(mod) doesn't have some ACE3 features.
-**A:**ACE3 isn't and can't be responsible for compatibility with every (mod), due it's size other (mod) authors are strongly encouraged to provide that from their side. Compatibility PBOs currently in ACE3 are there to kick-start and provide examples for (mod) authors.
+**Q:** (mod) doesn't have some ACE3 features.
+**A:** ACE3 isn't and can't be responsible for compatibility with every (mod), due it's size other (mod) authors are strongly encouraged to provide that from their side. Compatibility PBOs currently in ACE3 are there to kick-start and provide examples for (mod) authors.
**Q:** ACE3 causes issues in (mod).
-**A:**If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only @cba_a3 and @ACE3 on a newly created mission. ACE3 isn't and can't be responsible for all mod conflicts, due it's size other mod authors are strongly encouraged to provide that from their side.
\ No newline at end of file +**A:** If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission. ACE3 isn't and can't be responsible for all mod conflicts, due it's size other mod authors are strongly encouraged to provide that from their side.
From 1f9a98f77d7caf1242cfcb6391cb099756301464 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 17 Aug 2015 21:51:40 -0500 Subject: [PATCH 063/620] Cleanup / Params --- addons/maptools/XEH_postInitClient.sqf | 12 ++++------ .../maptools/functions/fnc_addLineMarker.sqf | 2 +- .../functions/fnc_calculateMapScale.sqf | 4 ++-- .../functions/fnc_copyMapReceiveMarkers.sqf | 2 +- .../functions/fnc_copyMapRemoteSend.sqf | 2 +- .../maptools/functions/fnc_copyMapStart.sqf | 2 +- .../maptools/functions/fnc_handleKeyDown.sqf | 4 +++- .../functions/fnc_handleMouseButton.sqf | 24 ++++++++----------- .../functions/fnc_handleMouseMove.sqf | 7 +++--- addons/maptools/functions/fnc_openMapGps.sqf | 2 +- .../functions/fnc_removeLineMarker.sqf | 2 +- .../functions/fnc_updateLineMarker.sqf | 2 +- .../functions/fnc_updateMapToolMarkers.sqf | 6 ++--- 13 files changed, 33 insertions(+), 38 deletions(-) diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index e227463711..34c0a9e750 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -26,11 +26,11 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; _fnc_installMapEvents = { private "_d"; _d = _this; - ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseMoving", {_this call FUNC(handleMouseMove);}]; - ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}]; - ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call FUNC(handleMouseButton)}]; - ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["Draw", {_this call FUNC(updateMapToolMarkers);}]; - (finddisplay _d) displayAddEventHandler ["KeyDown", {_this call FUNC(handleKeyDown);}]; + ((findDisplay _d) displayCtrl 51) ctrlAddEventHandler ["MouseMoving", {_this call FUNC(handleMouseMove);}]; + ((findDisplay _d) displayCtrl 51) ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}]; + ((findDisplay _d) displayCtrl 51) ctrlAddEventHandler ["MouseButtonUp", {[0, _this] call FUNC(handleMouseButton)}]; + ((findDisplay _d) displayCtrl 51) ctrlAddEventHandler ["Draw", {_this call FUNC(updateMapToolMarkers);}]; + (findDisplay _d) displayAddEventHandler ["KeyDown", {_this call FUNC(handleKeyDown);}]; }; // Wait until the briefing map is detected @@ -70,8 +70,6 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; }; ["mapOpened", { - // Show and update map tools if required - [] call FUNC(updateMapToolMarkers); // Show GPS if required [GVAR(mapGpsShow)] call FUNC(openMapGps); }] call EFUNC(common,addEventHandler); diff --git a/addons/maptools/functions/fnc_addLineMarker.sqf b/addons/maptools/functions/fnc_addLineMarker.sqf index 157891a262..017dc5b494 100644 --- a/addons/maptools/functions/fnc_addLineMarker.sqf +++ b/addons/maptools/functions/fnc_addLineMarker.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_4(_name,_startPos,_endPos,_color); +params ["_name", "_startPos", "_endPos", "_color"]; private ["_marker", "_difPos", "_mag"]; diff --git a/addons/maptools/functions/fnc_calculateMapScale.sqf b/addons/maptools/functions/fnc_calculateMapScale.sqf index 4723a4f5e1..78bfae43af 100644 --- a/addons/maptools/functions/fnc_calculateMapScale.sqf +++ b/addons/maptools/functions/fnc_calculateMapScale.sqf @@ -14,7 +14,7 @@ private ["_screenOffset", "_pos"]; -_pos = ((finddisplay 12) displayctrl 51) ctrlMapScreenToWorld [0.5, 0.5]; -_screenOffset = ((finddisplay 12) displayctrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)]; +_pos = ((findDisplay 12) displayCtrl 51) ctrlMapScreenToWorld [0.5, 0.5]; +_screenOffset = ((findDisplay 12) displayCtrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)]; (_screenOffset select 0) - 0.5 diff --git a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf index 44f6ed6203..6c3c706208 100644 --- a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf +++ b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -PARAMS_1(_lineMarkers); +params ["_lineMarkers"]; { private "_marker"; diff --git a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf index f4aebf6093..551019f900 100644 --- a/addons/maptools/functions/fnc_copyMapRemoteSend.sqf +++ b/addons/maptools/functions/fnc_copyMapRemoteSend.sqf @@ -12,6 +12,6 @@ #include "script_component.hpp" -PARAMS_1(_requester); +params ["_requester"]; ["drawing_sendbackMarkers", _requester, [GVAR(drawing_lineMarkers)]] call EFUNC(common,targetEvent); diff --git a/addons/maptools/functions/fnc_copyMapStart.sqf b/addons/maptools/functions/fnc_copyMapStart.sqf index a39c74d225..7295f6f499 100644 --- a/addons/maptools/functions/fnc_copyMapStart.sqf +++ b/addons/maptools/functions/fnc_copyMapStart.sqf @@ -17,6 +17,6 @@ #include "script_component.hpp" -PARAMS_1(_player,_target); +params ["_player", "_target"]; ["drawing_requestMarkers", _target, [_player]] call EFUNC(common,targetEvent); diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index d1f9e199c9..297c87e789 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -15,7 +15,7 @@ #include "script_component.hpp" -PARAMS_5(_display,_code,_shiftKey,_ctrlKey,_altKey); +params ["", "_code"]; private ["_handled", "_relPos", "_diffVector", "_magDiffVector", "_lambdaLong", "_lambdaTrasAbs"]; @@ -30,6 +30,7 @@ if (_code == DIK_ESCAPE) exitWith { call FUNC(cancelDrawing); _handled = true; }; + _handled }; if (_code == DIK_DELETE) exitWith { @@ -65,6 +66,7 @@ if (_code == DIK_DELETE) exitWith { }; } forEach GVAR(drawing_lineMarkers); }; + _handled }; _handled diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index 16cabe9719..ec0d1264fc 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -1,6 +1,5 @@ /* * Author: esteldunedain - * * Handle mouse buttons. * * Argument: @@ -13,23 +12,18 @@ #include "script_component.hpp" -private ["_control", "_button", "_screenPos", "_shiftKey", "_ctrlKey", "_handled", "_pos", "_altKey", "_gui", "_marker"]; +params ["_dir", "_params"]; +_params params ["_control", "_button", "_screenPosX", "_screenPosY", "_shiftKey", "_ctrlKey", "_altKey"]; -PARAMS_2(_dir,_params); -_control = _params select 0; -_button = _params select 1; -_screenPos = [_params select 2, _params select 3]; -_shiftKey = _params select 4; -_ctrlKey = _params select 5; -_altKey = _params select 6; -_handled = false; +private["_gui", "_handled", "_marker", "_pos"]; +_handled = false; // If it's not a left button event, exit -if (_button != 0) exitWith {}; +if (_button != 0) exitWith {_handled}; // If releasing -if (_dir != 1 && (GVAR(mapTool_isDragging) or GVAR(mapTool_isRotating))) exitWith { +if ((_dir != 1) && {(GVAR(mapTool_isDragging) || GVAR(mapTool_isRotating))}) exitWith { GVAR(mapTool_isDragging) = false; GVAR(mapTool_isRotating) = false; _handled = true; @@ -42,7 +36,7 @@ if (_dir == 1) exitWith { if !(call FUNC(canDraw)) exitWith {_handled = false;}; // Transform mouse screen position to coordinates - _pos = _control ctrlMapScreenToWorld _screenPos; + _pos = _control ctrlMapScreenToWorld [_screenPosX, _screenPosY]; _pos set [count _pos, 0]; if (GVAR(drawing_isDrawing)) exitWith { @@ -52,7 +46,7 @@ if (_dir == 1) exitWith { // [GVAR(drawing_tempLineMarker), "FUNC(addLineMarker)", 2] call EFUNC(common,execRemoteFnc); ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call EFUNC(common,globalEvent); // Log who drew on the briefing screen - (text format ["[ACE] Server: Player %1 drew on the briefing screen", name player]) call EFUNC(common,serverLog); + (text format ["[ACE] Server: Player %1 drew on the briefing screen", profileName]) call EFUNC(common,serverLog); } else { GVAR(drawing_tempLineMarker) call FUNC(updateLineMarker); GVAR(drawing_lineMarkers) pushBack (+GVAR(drawing_tempLineMarker)); @@ -96,6 +90,8 @@ if (_dir == 1) exitWith { }; _handled = true; }; + + _handled }; _handled diff --git a/addons/maptools/functions/fnc_handleMouseMove.sqf b/addons/maptools/functions/fnc_handleMouseMove.sqf index 2148c5a162..7e2883382b 100644 --- a/addons/maptools/functions/fnc_handleMouseMove.sqf +++ b/addons/maptools/functions/fnc_handleMouseMove.sqf @@ -1,6 +1,5 @@ /* * Author: esteldunedain - * * Handle mouse movement over the map tool. * * Argument: @@ -13,11 +12,11 @@ #include "script_component.hpp" +params ["_control", "_mousePosX", "_mousePosY"]; + private ["_control", "_pos"]; -_control = _this select 0; -_pos = [_this select 1, _this select 2]; -GVAR(mousePosition) = _control ctrlMapScreenToWorld _pos; +GVAR(mousePosition) = _control ctrlMapScreenToWorld [_mousePosX, _mousePosY]; GVAR(mousePosition) set [2, 0]; //convert 2d pos to 3d // If cannot draw then exit diff --git a/addons/maptools/functions/fnc_openMapGps.sqf b/addons/maptools/functions/fnc_openMapGps.sqf index 7d29d9e169..dc2df07b57 100644 --- a/addons/maptools/functions/fnc_openMapGps.sqf +++ b/addons/maptools/functions/fnc_openMapGps.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -PARAMS_1(_shouldOpenGps); +params ["_shouldOpenGps"]; private ["_isOpen"]; diff --git a/addons/maptools/functions/fnc_removeLineMarker.sqf b/addons/maptools/functions/fnc_removeLineMarker.sqf index be82970524..bd0a16adb1 100644 --- a/addons/maptools/functions/fnc_removeLineMarker.sqf +++ b/addons/maptools/functions/fnc_removeLineMarker.sqf @@ -11,7 +11,7 @@ #include "script_component.hpp" -PARAMS_1(_name); +params ["_name"]; deleteMarkerLocal _name; { diff --git a/addons/maptools/functions/fnc_updateLineMarker.sqf b/addons/maptools/functions/fnc_updateLineMarker.sqf index a745bfa123..6400d02461 100644 --- a/addons/maptools/functions/fnc_updateLineMarker.sqf +++ b/addons/maptools/functions/fnc_updateLineMarker.sqf @@ -13,7 +13,7 @@ */ #include "script_component.hpp" -PARAMS_4(_name,_startPos,_endPos,_color); +params ["_name", "_startPos", "_endPos", "_color"]; private ["_difPos", "_mag"]; diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index 959be6752e..c4f2f6f1dc 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -16,15 +16,15 @@ #define CENTER_OFFSET_Y_PERC 0.1606 #define CONSTANT_SCALE 0.2 -PARAMS_1(_theMap); +params ["_theMap"]; private ["_rotatingTexture", "_textureWidth", "_scale", "_xPos", "_yPos"]; // Show/Hide draw buttons if ("ACE_MapTools" in items ACE_player) then { - { ((finddisplay 12) displayctrl _x) ctrlShow true; } forEach GVAR(drawing_controls); + { ((findDisplay 12) displayCtrl _x) ctrlShow true; } forEach GVAR(drawing_controls); } else { - { ((finddisplay 12) displayctrl _x) ctrlShow false; } forEach GVAR(drawing_controls); + { ((findDisplay 12) displayCtrl _x) ctrlShow false; } forEach GVAR(drawing_controls); if (GVAR(drawing_isDrawing)) then { call FUNC(cancelDrawing); }; From 4a245bd935c8d5b77b8f0c974b7d6acfccec4586 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 17 Aug 2015 22:21:18 -0500 Subject: [PATCH 064/620] Remove Spawn for CBA_fnc_addPerFrameHandler --- addons/common/XEH_postInit.sqf | 35 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 43b5478eff..0dbbff04ec 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -373,21 +373,24 @@ GVAR(deviceKeyCurrentIndex) = -1; //Map opened/closed Events: GVAR(mapOpened) = false; -[] spawn { - waitUntil {(!isNull findDisplay 12)}; - ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", { - if (!GVAR(mapOpened)) then { - GVAR(mapOpened) = true; - ["mapOpened", []] call FUNC(localEvent); - [{ - if (!visibleMap) then { - GVAR(mapOpened) = false; - ["mapClosed", []] call FUNC(localEvent); - [_this select 1] call CBA_fnc_removePerFrameHandler; - }; - }, 0, []] call CBA_fnc_addPerFrameHandler; - }; - }]; -}; +[{ + if (!isNull (findDisplay 12)) then { + [_this select 1] call CBA_fnc_removePerFrameHandler; + TRACE_1("Installing Map Draw EH for MapOpened event"); + ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", { + if (!GVAR(mapOpened)) then { + GVAR(mapOpened) = true; + ["mapOpened", []] call FUNC(localEvent); + [{ + if (!visibleMap) then { + GVAR(mapOpened) = false; + ["mapClosed", []] call FUNC(localEvent); + [_this select 1] call CBA_fnc_removePerFrameHandler; + }; + }, 0, []] call CBA_fnc_addPerFrameHandler; + }; + }]; + }; +}, 0, []] call CBA_fnc_addPerFrameHandler; GVAR(commonPostInited) = true; From 3bcebf9033492874f4118fa2172c72281a350fa8 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 18 Aug 2015 23:41:25 +0200 Subject: [PATCH 065/620] Moved spare parts adding to init, Added module option to add spare parts or not, Added module to add specific spare part and amount of it to specific vehicle(s) --- addons/repair/ACE_Settings.hpp | 7 +++ addons/repair/CfgEventHandlers.hpp | 10 +-- addons/repair/CfgVehicles.hpp | 60 +++++++++++++++--- addons/repair/XEH_postInit.sqf | 14 +++++ addons/repair/XEH_preInit.sqf | 4 ++ addons/repair/functions/fnc_addSpareParts.sqf | 46 ++++++++++++++ .../functions/fnc_moduleAddSpareParts.sqf | 61 +++++++++++++++++++ .../functions/fnc_moduleRepairSettings.sqf | 2 + addons/repair/stringtable.xml | 32 ++++++++++ 9 files changed, 223 insertions(+), 13 deletions(-) create mode 100644 addons/repair/functions/fnc_addSpareParts.sqf create mode 100644 addons/repair/functions/fnc_moduleAddSpareParts.sqf diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index e956e853de..b4be91d1c3 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -61,4 +61,11 @@ class ACE_Settings { values[] = {CSTRING(engineerSetting_anyone), CSTRING(engineerSetting_EngineerOnly), CSTRING(engineerSetting_RepairSpecialistOnly)}; category = CSTRING(categoryName); }; + class GVAR(addSpareParts) { + displayName = CSTRING(addSpareParts_name); + description = CSTRING(addSpareParts_description); + typeName = "BOOL"; + value = 1; + category = CSTRING(categoryName); + }; }; diff --git a/addons/repair/CfgEventHandlers.hpp b/addons/repair/CfgEventHandlers.hpp index 27e14937cf..8a2d3e728c 100644 --- a/addons/repair/CfgEventHandlers.hpp +++ b/addons/repair/CfgEventHandlers.hpp @@ -13,31 +13,31 @@ class Extended_PostInit_EventHandlers { class Extended_Init_EventHandlers { class Car { class ADDON { - init = QUOTE(_this call DFUNC(addRepairActions)); + init = QUOTE(_this call DFUNC(addRepairActions); _this call DFUNC(addSpareParts)); }; }; class Tank { class ADDON { - init = QUOTE(_this call DFUNC(addRepairActions)); + init = QUOTE(_this call DFUNC(addRepairActions); _this call DFUNC(addSpareParts)); }; }; class Helicopter { class ADDON { - init = QUOTE(_this call DFUNC(addRepairActions)); + init = QUOTE(_this call DFUNC(addRepairActions); _this call DFUNC(addSpareParts)); }; }; class Plane { class ADDON { - init = QUOTE(_this call DFUNC(addRepairActions)); + init = QUOTE(_this call DFUNC(addRepairActions); _this call DFUNC(addSpareParts)); }; }; class Ship_F { class ADDON { - init = QUOTE(_this call DFUNC(addRepairActions)); + init = QUOTE(_this call DFUNC(addRepairActions); _this call DFUNC(addSpareParts)); }; }; class ACE_RepairItem_Base { diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index f24cd9bc9a..47cca3387b 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -91,6 +91,12 @@ class CfgVehicles { class Special { name = CSTRING(engineerSetting_RepairSpecialistOnly); value = 2; default = 1;}; }; }; + class addSpareParts { + displayName = CSTRING(addSpareParts_name); + description = CSTRING(addSpareParts_description); + typeName = "BOOL"; + defaultValue = 1; + }; }; class ModuleDescription { description = CSTRING(moduleDescription); @@ -215,19 +221,57 @@ class CfgVehicles { sync[] = {}; }; }; + class ACE_moduleAddSpareParts: Module_F { + scope = 2; + displayName = CSTRING(AddSpareParts_Module_DisplayName); + icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); + category = "ACE"; + function = QFUNC(moduleAddSpareParts); + functionPriority = 10; + isGlobal = 0; + isTriggerActivated = 0; + isDisposable = 0; + author = ECSTRING(common,ACETeam); + class Arguments { + class List { + displayName = CSTRING(AddSpareParts_List_DisplayName); + description = CSTRING(AddSpareParts_List_Description); + defaultValue = ""; + typeName = "STRING"; + }; + class Part { + displayName = CSTRING(AddSpareParts_Part_DisplayName); + description = CSTRING(AddSpareParts_Part_Description); + typeName = "STRING"; + class values { + class Wheel { + name = CSTRING(SpareWheel); + value = "ACE_Wheel"; + default = 1; + }; + class Track { + name = CSTRING(SpareTrack); + value = "ACE_Track"; + }; + }; + }; + class Amount { + displayName = CSTRING(AddSpareParts_Amount_DisplayName); + description = CSTRING(AddSpareParts_Amount_Description); + typeName = "NUMBER"; + defaultValue = 1; + }; + }; + class ModuleDescription { + description = CSTRING(AddSpareParts_Module_Description); + sync[] = {}; + }; + }; class LandVehicle; class Car: LandVehicle { MACRO_REPAIRVEHICLE - class ACE_Cargo { - class Cargo { - class ACE_Wheel { - type = "ACE_Wheel"; - amount = 1; - }; - }; - }; }; class Tank: LandVehicle { diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 44ca157b0c..d61f20a31e 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -5,3 +5,17 @@ // wheels ["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call EFUNC(common,addEventHandler); + +if (isServer) then { + ["SettingsInitialized", { + GVAR(settingInitted) = true; // Stop collecting in FUNC(addSpareParts) + + // Exit if adding spare parts disabled + if (!GVAR(addSpareParts)) exitWith {GVAR(addSparePartsCollection) = nil}; + + // Add spare parts to vehicles in collection + { + [_x] call FUNC(addSpareParts); + } forEach GVAR(addSparePartsCollection); + }] call EFUNC(common,addEventHandler); +}; diff --git a/addons/repair/XEH_preInit.sqf b/addons/repair/XEH_preInit.sqf index ebf4c87537..28078d1b9c 100644 --- a/addons/repair/XEH_preInit.sqf +++ b/addons/repair/XEH_preInit.sqf @@ -3,6 +3,7 @@ ADDON = false; PREP(addRepairActions); +PREP(addSpareParts); PREP(canRemove); PREP(canRepair); PREP(canRepairTrack); @@ -22,6 +23,7 @@ PREP(isEngineer); PREP(isInRepairFacility); PREP(isNearRepairVehicle); PREP(isRepairVehicle); +PREP(moduleAddSpareParts); PREP(moduleAssignEngineer); PREP(moduleAssignRepairVehicle); PREP(moduleAssignRepairFacility); @@ -36,4 +38,6 @@ PREP(spawnObject); PREP(useItem); PREP(useItems); +GVAR(addSparePartsCollection) = []; + ADDON = true; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf new file mode 100644 index 0000000000..dd6588b485 --- /dev/null +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -0,0 +1,46 @@ +/* + * Author: Jonpas + * Adds spare parts to the vehicle. Before SettingsInitialized only collect for later execution. + * + * Arguments: + * 0: Vehicle + * 1: Amount (default: 1) + * 2: Spare Part Classname (default: "") + * 3: Force (add even if setting is disabled) (default: false) + * + * Return Value: + * None + * + * Example: + * _added = [vehicle] call ace_repair_fnc_addSpareParts + * + * Public: No + */ +#include "script_component.hpp" + +private ["_part"]; +params ["_vehicle", ["_amount", 1], ["_part", ""], ["_force", false]]; +TRACE_2("params",_vehicle,_amount); + +// Exit if ace_cargo is not loaded +if !(["ace_cargo"] call EFUNC(common,isModLoaded)) exitWith {}; + +// Collect until SettingsInitialized +if (isNil QGVAR(settingInitted)) exitWith { + GVAR(addSparePartsCollection) pushBack _vehicle; +}; + +// Exit if not forced and add spare parts is disabled (after settings initted to make sure it really is) +if (!_force && !GVAR(addSpareParts)) exitWith {}; + +// Select appropriate part +if (_part == "") then { + if (_vehicle isKindOf "Car") then { _part = "ACE_Wheel" }; + if (_vehicle isKindOf "Tank") then { _part = "ACE_Track" }; +}; +// Exit if no appropriate part +if (_part == "") exitWith {}; + +// Load +//["LoadItem", [_part, _vehicle]] call EFUNC(cargo,loadItem); +[_part, _vehicle, _amount] call EFUNC(cargo,addItem); // Change to above event diff --git a/addons/repair/functions/fnc_moduleAddSpareParts.sqf b/addons/repair/functions/fnc_moduleAddSpareParts.sqf new file mode 100644 index 0000000000..46689951a7 --- /dev/null +++ b/addons/repair/functions/fnc_moduleAddSpareParts.sqf @@ -0,0 +1,61 @@ +/* + * Author: Jonpas + * Adds spare parts to a vehicle. + * + * Arguments: + * 0: The module logic + * 1: Synchronized units + * 2: Activated + * + * Return Value: + * None + * + * Example: + * function = "ace_repair_fnc_moduleAssignRepairVehicle" + * + * Public: No + */ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +params ["_logic"]; + +if (!isNull _logic) then { + private ["_list", "_part", "_amount", "_nilCheckPassedList"]; + // Module settings + _list = _logic getVariable ["List", ""]; + _part = _logic getVariable ["Part", 0]; + _amount = _logic getVariable ["Amount", 1]; + + // Parse list + _nilCheckPassedList = ""; + { + _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); + if !(isnil _x) then { + if (_nilCheckPassedList == "") then { + _nilCheckPassedList = _x; + } else { + _nilCheckPassedList = _nilCheckPassedList + "," + _x; + }; + }; + } forEach ([_list, ","] call BIS_fnc_splitString); + _list = "[" + _nilCheckPassedList + "]"; + _list = [] call compile _list; + + // Add synchronized objects to list + { + _list pushBack _x; + } forEach (synchronizedObjects _logic); + + if (_list isEqualTo []) exitWith {}; + + TRACE_3("module info parsed",_list,_part,_amount); + // Add spare parts + { + if (!isNil "_x" && {typeName _x == typeName objNull}) then { + [_x, _amount, _part, true] call FUNC(addSpareParts); + }; + } forEach _list; +}; + +true diff --git a/addons/repair/functions/fnc_moduleRepairSettings.sqf b/addons/repair/functions/fnc_moduleRepairSettings.sqf index 3b97d2f168..2c7e406490 100644 --- a/addons/repair/functions/fnc_moduleRepairSettings.sqf +++ b/addons/repair/functions/fnc_moduleRepairSettings.sqf @@ -31,4 +31,6 @@ if (!isServer) exitWith {}; [_logic, QGVAR(fullRepairLocation), "fullRepairLocation"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(engineerSetting_fullRepair), "engineerSetting_fullRepair"] call EFUNC(common,readSettingFromModule); +[_logic, QGVAR(addSpareParts), "addSpareParts"] call EFUNC(common,readSettingFromModule); + diag_log text "[ACE]: Repair Module Initialized."; diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index ffafc56683..ce53e79c6d 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -104,6 +104,12 @@ Who can perform a full repair on a vehicle? + + Add Spare Parts + + + Add spare parts to vehicles (requires Cargo component)? + Repair %1 Reparieren %1 @@ -635,6 +641,32 @@ Assign one or multiple objects as a repair Facility + + + Add Spare Parts + + + Add spare parts to one or multiple objects + + + List + + + List of objects that will get spare parts added, separated by commas. + + + Part + + + Spare part. + + + Amount + + + Number of selected spare parts. + + Vehicle Repair From ffb765bf7a7adaf311c8ced43328c4683af539ba Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 18 Aug 2015 23:43:34 +0200 Subject: [PATCH 066/620] Changed to AddCargoItem event --- addons/repair/functions/fnc_addSpareParts.sqf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index dd6588b485..4ec01a6cc1 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -12,7 +12,7 @@ * None * * Example: - * _added = [vehicle] call ace_repair_fnc_addSpareParts + * [vehicle] call ace_repair_fnc_addSpareParts * * Public: No */ @@ -42,5 +42,4 @@ if (_part == "") then { if (_part == "") exitWith {}; // Load -//["LoadItem", [_part, _vehicle]] call EFUNC(cargo,loadItem); -[_part, _vehicle, _amount] call EFUNC(cargo,addItem); // Change to above event +["AddCargoItem", [_part, _vehicle, _amount]] call EFUNC(common,localEvent); From 4e3bbfac1677c0f09178012521907671c2d55cdd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 18 Aug 2015 16:57:56 -0500 Subject: [PATCH 067/620] Clean old updateMapToolMarkers calls --- addons/maptools/CfgVehicles.hpp | 10 ++++---- addons/maptools/XEH_postInitClient.sqf | 3 --- .../maptools/functions/fnc_handleKeyDown.sqf | 3 ++- .../functions/fnc_handleMouseButton.sqf | 23 +++++++++---------- .../functions/fnc_handleMouseMove.sqf | 6 ++--- .../functions/fnc_updateLineMarker.sqf | 1 + .../functions/fnc_updateMapToolMarkers.sqf | 2 +- 7 files changed, 22 insertions(+), 26 deletions(-) diff --git a/addons/maptools/CfgVehicles.hpp b/addons/maptools/CfgVehicles.hpp index 5c3266d2d6..063f88f38b 100644 --- a/addons/maptools/CfgVehicles.hpp +++ b/addons/maptools/CfgVehicles.hpp @@ -14,7 +14,7 @@ class CfgVehicles { class ACE_MapToolsHide { displayName = CSTRING(MapToolsHide); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); - statement = QUOTE(GVAR(mapTool_Shown) = 0; [] call FUNC(updateMapToolMarkers)); + statement = QUOTE(GVAR(mapTool_Shown) = 0;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 5; @@ -22,7 +22,7 @@ class CfgVehicles { class ACE_MapToolsShowNormal { displayName = CSTRING(MapToolsShowNormal); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 1})); - statement = QUOTE(GVAR(mapTool_Shown) = 1; [] call FUNC(updateMapToolMarkers)); + statement = QUOTE(GVAR(mapTool_Shown) = 1;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 4; @@ -30,7 +30,7 @@ class CfgVehicles { class ACE_MapToolsShowSmall { displayName = CSTRING(MapToolsShowSmall); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 2})); - statement = QUOTE(GVAR(mapTool_Shown) = 2; [] call FUNC(updateMapToolMarkers)); + statement = QUOTE(GVAR(mapTool_Shown) = 2;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 3; @@ -38,7 +38,7 @@ class CfgVehicles { class ACE_MapToolsAlignNorth { displayName = CSTRING(MapToolsAlignNorth); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0})); - statement = QUOTE(GVAR(mapTool_angle) = 0; [] call FUNC(updateMapToolMarkers)); + statement = QUOTE(GVAR(mapTool_angle) = 0;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 2; @@ -46,7 +46,7 @@ class CfgVehicles { class ACE_MapToolsAlignCompass { displayName = CSTRING(MapToolsAlignCompass); condition = QUOTE((call FUNC(canUseMapTools) && {GVAR(mapTool_Shown) != 0} && {('ItemCompass' in assigneditems ACE_player) || {'ItemCompass' in assigneditems ACE_player}})); - statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player; [] call FUNC(updateMapToolMarkers)); + statement = QUOTE(GVAR(mapTool_angle) = getDir ACE_player;); exceptions[] = {"isNotDragging", "notOnMap", "isNotInside", "isNotSitting"}; showDisabled = 1; priority = 1; diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index 34c0a9e750..1e428f71b7 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -64,9 +64,6 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; // Install event handlers on the map control and display (control = 51) GVAR(drawing_syncMarkers) = false; 12 call _fnc_installMapEvents; - - // Update the size and rotation of map tools - [] call FUNC(updateMapToolMarkers); }; ["mapOpened", { diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf index 297c87e789..a83522ac91 100644 --- a/addons/maptools/functions/fnc_handleKeyDown.sqf +++ b/addons/maptools/functions/fnc_handleKeyDown.sqf @@ -16,10 +16,11 @@ #include "script_component.hpp" params ["", "_code"]; +TRACE_1("params",_code); private ["_handled", "_relPos", "_diffVector", "_magDiffVector", "_lambdaLong", "_lambdaTrasAbs"]; -_handled = false; +_handled = false; #define DIK_ESCAPE 0x01 #define DIK_DELETE 0xD3 diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index ec0d1264fc..442ec4d50e 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -14,6 +14,7 @@ params ["_dir", "_params"]; _params params ["_control", "_button", "_screenPosX", "_screenPosY", "_shiftKey", "_ctrlKey", "_altKey"]; +TRACE_2("params",_dir,_params); private["_gui", "_handled", "_marker", "_pos"]; @@ -23,16 +24,14 @@ _handled = false; if (_button != 0) exitWith {_handled}; // If releasing -if ((_dir != 1) && {(GVAR(mapTool_isDragging) || GVAR(mapTool_isRotating))}) exitWith { - GVAR(mapTool_isDragging) = false; - GVAR(mapTool_isRotating) = false; - _handled = true; - _handled -}; - -// If clicking -if (_dir == 1) exitWith { - +if (_dir != 1) then { + if (GVAR(mapTool_isDragging) || GVAR(mapTool_isRotating)) then { + GVAR(mapTool_isDragging) = false; + GVAR(mapTool_isRotating) = false; + _handled = true; + }; +} else { + // If clicking if !(call FUNC(canDraw)) exitWith {_handled = false;}; // Transform mouse screen position to coordinates @@ -43,7 +42,6 @@ if (_dir == 1) exitWith { // Already drawing -> Add tempLineMarker to permanent list if (GVAR(drawing_syncMarkers)) then { deleteMarkerLocal (GVAR(drawing_tempLineMarker) select 0); - // [GVAR(drawing_tempLineMarker), "FUNC(addLineMarker)", 2] call EFUNC(common,execRemoteFnc); ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call EFUNC(common,globalEvent); // Log who drew on the briefing screen (text format ["[ACE] Server: Player %1 drew on the briefing screen", profileName]) call EFUNC(common,serverLog); @@ -90,8 +88,9 @@ if (_dir == 1) exitWith { }; _handled = true; }; - _handled }; +diag_log text format ["HJa %1", _handled]; + _handled diff --git a/addons/maptools/functions/fnc_handleMouseMove.sqf b/addons/maptools/functions/fnc_handleMouseMove.sqf index 7e2883382b..b27087290b 100644 --- a/addons/maptools/functions/fnc_handleMouseMove.sqf +++ b/addons/maptools/functions/fnc_handleMouseMove.sqf @@ -13,6 +13,7 @@ #include "script_component.hpp" params ["_control", "_mousePosX", "_mousePosY"]; +TRACE_3("params",_control,_mousePosX,_mousePosY); private ["_control", "_pos"]; @@ -31,6 +32,7 @@ if !(call FUNC(canDraw)) exitWith { // Handle drawing if (GVAR(drawing_isDrawing)) exitWith { GVAR(drawing_tempLineMarker) set [2, GVAR(mousePosition)]; + TRACE_1("updating line pos",GVAR(mousePosition)); GVAR(drawing_tempLineMarker) call FUNC(updateLineMarker); false }; @@ -43,8 +45,6 @@ if (GVAR(mapTool_isDragging)) exitWith { GVAR(mapTool_pos) set [0, (GVAR(mapTool_startPos) select 0) + (GVAR(mousePosition) select 0) - (GVAR(mapTool_startDragPos) select 0)]; GVAR(mapTool_pos) set [1, (GVAR(mapTool_startPos) select 1) + (GVAR(mousePosition) select 1) - (GVAR(mapTool_startDragPos) select 1)]; - // Update the size and rotation of the maptool - [] call FUNC(updateMapToolMarkers); true }; @@ -55,8 +55,6 @@ if (GVAR(mapTool_isRotating)) exitWith { _angle = (180 + ((GVAR(mousePosition) select 0) - (GVAR(mapTool_startPos) select 0)) atan2 ((GVAR(mousePosition) select 1) - (GVAR(mapTool_startPos) select 1)) mod 360); GVAR(mapTool_angle) = GVAR(mapTool_startAngle) + _angle - GVAR(mapTool_startDragAngle); - // Update the size and rotation of the maptool - [] call FUNC(updateMapToolMarkers); true }; diff --git a/addons/maptools/functions/fnc_updateLineMarker.sqf b/addons/maptools/functions/fnc_updateLineMarker.sqf index 6400d02461..12aee5b1df 100644 --- a/addons/maptools/functions/fnc_updateLineMarker.sqf +++ b/addons/maptools/functions/fnc_updateLineMarker.sqf @@ -14,6 +14,7 @@ #include "script_component.hpp" params ["_name", "_startPos", "_endPos", "_color"]; +TRACE_4("params",_name,_startPos,_endPos,_color); private ["_difPos", "_mag"]; diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index c4f2f6f1dc..5c88d907b8 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -21,7 +21,7 @@ params ["_theMap"]; private ["_rotatingTexture", "_textureWidth", "_scale", "_xPos", "_yPos"]; // Show/Hide draw buttons -if ("ACE_MapTools" in items ACE_player) then { +if ([] call FUNC(canDraw)) then { { ((findDisplay 12) displayCtrl _x) ctrlShow true; } forEach GVAR(drawing_controls); } else { { ((findDisplay 12) displayCtrl _x) ctrlShow false; } forEach GVAR(drawing_controls); From 645e8a63efc42038ba7e11c83645003e1c5dacdb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 20 Aug 2015 04:20:46 -0500 Subject: [PATCH 068/620] Captive FFV Lock Animation --- addons/captives/CfgMoves.hpp | 13 ++++++ .../captives/functions/fnc_canLoadCaptive.sqf | 33 +++++++++------ .../captives/functions/fnc_doLoadCaptive.sqf | 40 ++++++++++++------- .../captives/functions/fnc_setHandcuffed.sqf | 12 +++++- .../functions/fnc_vehicleCaptiveMoveIn.sqf | 13 ++++-- addons/captives/script_component.hpp | 2 + 6 files changed, 81 insertions(+), 32 deletions(-) diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index aa64e85e22..6c0bfc3ce9 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -18,6 +18,11 @@ class CfgMovesBasic { default = "ACE_AmovPercMstpSsurWnonDnon"; PutDown = ""; }; + class ACE_CivilHandCuffedFFVActions: ACE_CivilStandHandcuffedActions { + stop = "ACE_HandcuffedFFV"; + StopRelaxed = "ACE_HandcuffedFFV"; + default = "ACE_HandcuffedFFV"; + }; }; }; @@ -55,6 +60,14 @@ class CfgMovesMaleSdr: CfgMovesBasic { InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; }; + //Handcuffed-FFV: + class ACE_HandcuffedFFV: ACE_AmovPercMstpScapWnonDnon { + file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm"; + actions = "ACE_CivilHandCuffedFFVActions"; + ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; + }; + + //Surrender Anims: class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon: CutSceneAnimationBase { actions = "ACE_CivilStandSurrenderActions"; diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index 1cdc4d86a1..254f0de693 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -17,22 +17,31 @@ */ #include "script_component.hpp" -private ["_objects"]; params ["_unit", "_target","_vehicle"]; -if (isNull _target) then { - _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); - if ((count _objects) > 0) then {_target = _objects select 0;}; +if ((isNull _target) && {_unit getVariable [QGVAR(isEscorting), false]}) then { + //Looking at a vehicle while escorting, get target from attached objects: + { + if (_x getVariable [QGVAR(isHandcuffed), false]) exitWith { + _target = _x; + }; + } forEach (attachedObjects _unit); }; +if ((isNull _target) || {(vehicle _target) != _target} || {!(_target getVariable [QGVAR(isHandcuffed), false])}) exitWith {false}; if (isNull _vehicle) then { - _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10]; - if ((count _objects) > 0) then {_vehicle = _objects select 0;}; + //Looking at a captive unit, search for nearby vehicles with valid seats: + { + // if (([_x] call FUNC(findEmptyNonFFVCargoSeat)) != -1) exitWith { + if ((_x emptyPositions "cargo") > 0) exitWith { + _vehicle = _x; + }; + } forEach (nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10]); +} else { + // if (([_vehicle] call FUNC(findEmptyNonFFVCargoSeat)) == -1) then { + if ((_vehicle emptyPositions "cargo") == 0) then { + _vehicle = objNull; + }; }; -(!isNull _target) -&& {!isNull _vehicle} -&& {_unit getVariable [QGVAR(isEscorting), false]} -&& {_target getVariable [QGVAR(isHandcuffed), false]} -&& {([_vehicle] call FUNC(findEmptyNonFFVCargoSeat)) != -1} +(!isNull _vehicle) diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf index d7df42eb0a..a4d7df8892 100644 --- a/addons/captives/functions/fnc_doLoadCaptive.sqf +++ b/addons/captives/functions/fnc_doLoadCaptive.sqf @@ -1,6 +1,6 @@ /* * Author: commy2 - * Unit loads the target object into a vehicle. + * Unit loads the target object into a vehicle. (logic same as canLoadCaptive) * * Arguments: * 0: Unit that wants to load a captive @@ -17,24 +17,34 @@ */ #include "script_component.hpp" -private "_objects"; - params ["_unit", "_target","_vehicle"]; -if (isNull _target) then { - _objects = attachedObjects _unit; - _objects = [_objects, {_this getVariable [QGVAR(isHandcuffed), false]}] call EFUNC(common,filter); - if ((count _objects) > 0) then {_target = _objects select 0;}; +if ((isNull _target) && {_unit getVariable [QGVAR(isEscorting), false]}) then { + //Looking at a vehicle while escorting, get target from attached objects: + { + if (_x getVariable [QGVAR(isHandcuffed), false]) exitWith { + _target = _x; + }; + } forEach (attachedObjects _unit); }; -if (isNull _target) exitWith {}; +if ((isNull _target) || {(vehicle _target) != _target} || {!(_target getVariable [QGVAR(isHandcuffed), false])}) exitWith {ERROR("");}; if (isNull _vehicle) then { - _objects = nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10]; - if ((count _objects) > 0) then {_vehicle = _objects select 0;}; + //Looking at a captive unit, search for nearby vehicles with valid seats: + { + // if (([_x] call FUNC(findEmptyNonFFVCargoSeat)) != -1) exitWith { + if ((_x emptyPositions "cargo") > 0) exitWith { + _vehicle = _x; + }; + } forEach (nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10]); +} else { + // if (([_vehicle] call FUNC(findEmptyNonFFVCargoSeat)) == -1) then { + if ((_vehicle emptyPositions "cargo") == 0) then { + _vehicle = objNull; + }; }; -if (isNull _vehicle) exitWith {}; -if ((!isNil "_target") && {!isNil "_vehicle"}) then { - _unit setVariable [QGVAR(isEscorting), false, true]; - ["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); -}; +if (isNull _vehicle) exitWith {ERROR("");}; + +_unit setVariable [QGVAR(isEscorting), false, true]; +["MoveInCaptive", [_target], [_target, _vehicle]] call EFUNC(common,targetEvent); diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 413e3d59b5..e1f06e2b61 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -48,6 +48,9 @@ if (_state) then { if ((vehicle _unit) == _unit) then { [_unit] call EFUNC(common,fixLoweredRifleAnimation); [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); + } else { + [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); }; //Adds an animation changed eh @@ -63,10 +66,11 @@ if (_state) then { [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; } else { + // _turretPath = []; // { - // _x params ["_xUnit", "", "", "_xTurretPath"]; - // if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; + // _x params ["_xUnit", "", "", "_xTurretPath"]; + // if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; // } forEach (fullCrew (vehicle _unit)); // TRACE_1("turret Path",_turretPath); // if (_turretPath isEqualTo []) exitWith {}; @@ -75,6 +79,10 @@ if (_state) then { // TRACE_1("reseting to",_gunnerAction); // [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); // [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); + + + [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); }; }]; _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index 6e79725242..cb1c2fd37a 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -20,9 +20,16 @@ private ["_cargoIndex"]; params ["_target","_vehicle"]; -_cargoIndex = [_vehicle] call FUNC(findEmptyNonFFVCargoSeat); -if (_cargoIndex < 0) exitWith {ERROR("No Seat Avail");}; +// _cargoIndex = [_vehicle] call FUNC(findEmptyNonFFVCargoSeat); +// if (_cargoIndex < 0) exitWith {ERROR("No Seat Avail");}; +// _target moveInCargo [_vehicle, _cargoIndex]; + +_target moveInCargo _vehicle; -_target moveInCargo [_vehicle, _cargoIndex]; _target assignAsCargo _vehicle; + +_cargoIndex = _vehicle getCargoIndex _target; _target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; + +[_target, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); +[_target, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); diff --git a/addons/captives/script_component.hpp b/addons/captives/script_component.hpp index e68eb19d2f..375c956129 100644 --- a/addons/captives/script_component.hpp +++ b/addons/captives/script_component.hpp @@ -1,6 +1,8 @@ #define COMPONENT captives #include "\z\ace\addons\main\script_mod.hpp" +// #define DEBUG_MODE_FULL + #ifdef DEBUG_ENABLED_CAPTIVES #define DEBUG_MODE_FULL #endif From 5b8708a179df47fbf4a2c87d117f8dcbaafc55d3 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Thu, 20 Aug 2015 18:17:37 +0100 Subject: [PATCH 069/620] Prevent CBA keybindings in zeus interface Checks if the key pressed matches the zeus menu keybind and only fires the code to handle CBA keybinds if true. Should fix the majority of weirdness with keybinds in zeus. However, not perfect as shared keybinds with different modifiers will still fire and it's really an un-ideal workaround. --- addons/interact_menu/XEH_clientInit.sqf | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index cbc28e66b4..7c7724d9b4 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -75,10 +75,24 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; }] call EFUNC(common,addEventHandler); -// Let key work with zeus open (not perfect, enables all added hotkeys in zeus interface rather than only menu) +// Let key work with zeus open (not perfect, contains workaround to prevent other CBA keybindings) ["zeusDisplayChanged",{ if (_this select 1) then { - (finddisplay 312) displayAddEventHandler ["KeyUp", {[_this,'keyup'] call CBA_events_fnc_keyHandler}]; - (finddisplay 312) displayAddEventHandler ["KeyDown", {[_this,'keydown'] call CBA_events_fnc_keyHandler}]; + (finddisplay 312) displayAddEventHandler ["KeyUp", { + _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; + _key = (_key select 5) select 0; + + if ((_this select 1) == _key) then { + [_this,'keyup'] call CBA_events_fnc_keyHandler + }; + }]; + (finddisplay 312) displayAddEventHandler ["KeyDown", { + _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; + _key = (_key select 5) select 0; + + if ((_this select 1) == _key) then { + [_this,'keydown'] call CBA_events_fnc_keyHandler + }; + }]; }; }] call EFUNC(common,addEventHandler); From 51a8cb79749f2a89aa4ad6cb511bbba01c6ec637 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 20 Aug 2015 23:58:06 -0500 Subject: [PATCH 070/620] Only force Animation for FFV Cargo Seats --- addons/captives/CfgMoves.hpp | 2 +- .../captives/functions/fnc_setHandcuffed.sqf | 21 +++++++------------ .../functions/fnc_vehicleCaptiveMoveIn.sqf | 11 ++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index 6c0bfc3ce9..161fcce9a4 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -64,7 +64,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { class ACE_HandcuffedFFV: ACE_AmovPercMstpScapWnonDnon { file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm"; actions = "ACE_CivilHandCuffedFFVActions"; - ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; + ConnectTo[] = {}; }; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index e1f06e2b61..c4bde3a839 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -67,20 +67,15 @@ if (_state) then { }; } else { - // _turretPath = []; - // { - // _x params ["_xUnit", "", "", "_xTurretPath"]; - // if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; - // } forEach (fullCrew (vehicle _unit)); - // TRACE_1("turret Path",_turretPath); - // if (_turretPath isEqualTo []) exitWith {}; - // _turretConfig = [(configFile >> "CfgVehicles" >> (typeOf (vehicle _unit))), _turretPath] call EFUNC(common,getTurretConfigPath); - // _gunnerAction = getText (_turretConfig >> "gunnerAction"); - // TRACE_1("reseting to",_gunnerAction); - // [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); - // [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); - + _turretPath = []; + { + _x params ["_xUnit", "", "", "_xTurretPath"]; + if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; + } forEach (fullCrew (vehicle _unit)); + TRACE_1("turret Path",_turretPath); + if (_turretPath isEqualTo []) exitWith {}; + TRACE_1("Handcuff (FFV) animation interrupted",_newAnimation); [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); [_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index cb1c2fd37a..959bbd71b9 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -31,5 +31,16 @@ _target assignAsCargo _vehicle; _cargoIndex = _vehicle getCargoIndex _target; _target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; +//Check if is a FFV turret: +_turretPath = []; +{ + _x params ["_xUnit", "", "", "_xTurretPath"]; + if (_target == _xUnit) exitWith {_turretPath = _xTurretPath}; +} forEach (fullCrew (vehicle _target)); +TRACE_1("turret Path",_turretPath); +if (_turretPath isEqualTo []) exitWith {}; + +TRACE_1("Setting FFV Animation",_newAnimation); + [_target, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); [_target, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); From 21b0ee087a48d55d7b86e901da6eeb6644882967 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 22 Aug 2015 00:26:01 +0100 Subject: [PATCH 071/620] Add spectator UI interrupt system A public API system to allow external systems to interrupt and resume the spectator interface. Also made use of it for the escape menu and zeus support. --- addons/spectator/XEH_preInit.sqf | 2 + .../functions/fnc_handleInterface.sqf | 66 +++++++------------ addons/spectator/functions/fnc_interrupt.sqf | 44 +++++++++++++ 3 files changed, 68 insertions(+), 44 deletions(-) create mode 100644 addons/spectator/functions/fnc_interrupt.sqf diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index a40f4a0dcb..d1bf48d106 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -12,6 +12,7 @@ PREP(handleMap); PREP(handleMouse); PREP(handleToolbar); PREP(handleUnits); +PREP(interrupt); PREP(moduleSpectatorSettings); PREP(respawnTemplate); PREP(setCameraAttributes); @@ -39,6 +40,7 @@ GVAR(camUnit) = objNull; GVAR(camVision) = -2; GVAR(camZoom) = 1.25; +GVAR(interrupts) = []; GVAR(isSet) = false; GVAR(showComp) = true; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 95f05d01ec..57026fb6fa 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -24,6 +24,7 @@ switch (toLower _mode) do { case "open": { // Prevent reopening if (GVAR(isSet)) exitWith {}; + GVAR(interrupts) = []; // Initalize camera variables GVAR(camBoom) = 0; @@ -68,16 +69,18 @@ switch (toLower _mode) do { }; }; case "close": { - _args params ["_unit"]; - // Can't close a second time if !(GVAR(isSet)) exitWith {}; + GVAR(interrupts) = []; // Terminate interface while {dialog} do { closeDialog 0; }; + // Kill the display + (findDisplay 12249) closeDisplay 0; + // Terminate camera GVAR(camera) cameraEffect ["terminate", "back"]; camDestroy GVAR(camera); @@ -203,11 +206,21 @@ switch (toLower _mode) do { }; case "onunload": { // Kill GUI PFHs + removeMissionEventHandler ["Draw3D",GVAR(iconHandler)]; GVAR(camHandler) = nil; GVAR(compHandler) = nil; - removeMissionEventHandler ["Draw3D",GVAR(iconHandler)]; GVAR(iconHandler) = nil; GVAR(toolHandler) = nil; + + // Reset variables + GVAR(camBoom) = 0; + GVAR(camDolly) = [0,0]; + GVAR(ctrlKey) = false; + GVAR(heldKeys) = []; + GVAR(heldKeys) resize 255; + GVAR(mouse) = [false,false]; + GVAR(mousePos) = [0.5,0.5]; + GVAR(treeSel) = objNull; }; // Mouse events case "onmousebuttondown": { @@ -247,7 +260,8 @@ switch (toLower _mode) do { _args params ["_display","_dik","_shift","_ctrl","_alt"]; if ((alive player) && {_dik in (actionKeys "curatorInterface")} && {!isNull (getAssignedCuratorLogic player)}) exitWith { - ["zeus", [_display]] call FUNC(handleInterface); + [QGVAR(zeus)] call FUNC(interrupt); + ["zeus"] call FUNC(handleInterface); }; if ((isServer || {serverCommandAvailable "#kick"}) && {_dik in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) exitWith { false @@ -262,7 +276,8 @@ switch (toLower _mode) do { switch (_dik) do { case 1: { // Esc - ["escape", [_display]] call FUNC(handleInterface); + [QGVAR(escape)] call FUNC(interrupt); + ["escape"] call FUNC(handleInterface); }; case 2: { // 1 [_display,nil,nil,nil,nil,nil,true] call FUNC(toggleInterface); @@ -515,23 +530,8 @@ switch (toLower _mode) do { }; // Break from interface for external events case "escape": { - _args params ["_display"]; private "_dlg"; - // Kill display - _display closeDisplay 0; - - // Reset cam/UI vars - GVAR(camBoom) = 0; - GVAR(camDolly) = [0,0]; - - GVAR(ctrlKey) = false; - GVAR(heldKeys) = []; - GVAR(heldKeys) resize 255; - GVAR(mouse) = [false,false]; - GVAR(mousePos) = [0.5,0.5]; - GVAR(treeSel) = objNull; - createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer); disableSerialization; @@ -562,31 +562,12 @@ switch (toLower _mode) do { if !(isNull (findDisplay 49)) exitWith {}; // If still a spectator then re-enter the interface - if (GVAR(isSet)) then { - createDialog QGVAR(interface); - [] call FUNC(transitionCamera); - }; + [QGVAR(escape),false] call FUNC(interrupt); [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; }; case "zeus": { - _args params ["_display"]; - - // Kill display - _display closeDisplay 0; - - // Reset cam/UI vars - GVAR(camBoom) = 0; - GVAR(camDolly) = [0,0]; - - GVAR(ctrlKey) = false; - GVAR(heldKeys) = []; - GVAR(heldKeys) resize 255; - GVAR(mouse) = [false,false]; - GVAR(mousePos) = [0.5,0.5]; - GVAR(treeSel) = objNull; - openCuratorInterface; [{ @@ -595,10 +576,7 @@ switch (toLower _mode) do { if !((isNull curatorCamera) && {isNull (GETMVAR(bis_fnc_moduleRemoteControl_unit,objNull))}) exitWith {}; // If still a spectator then re-enter the interface - if (GVAR(isSet)) then { - createDialog QGVAR(interface); - [] call FUNC(transitionCamera); - }; + [QGVAR(zeus),false] call FUNC(interrupt) [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; diff --git a/addons/spectator/functions/fnc_interrupt.sqf b/addons/spectator/functions/fnc_interrupt.sqf new file mode 100644 index 0000000000..48cca7d102 --- /dev/null +++ b/addons/spectator/functions/fnc_interrupt.sqf @@ -0,0 +1,44 @@ +/* + * Author: SilentSpike + * Interrupts the spectator interface for external systems + * + * Arguments: + * 0: Reason + * 1: Interrupting + * + * Return Value: + * None + * + * Example: + * ["mySystem"] call ace_spectator_fnc_interrupt + * + * Public: Yes + */ +#include "script_component.hpp" + +params [["_reason", "", [""]], ["_interrupt", true, [true]]]; + +// Nothing to do when spectator is closed +if !(GVAR(isSet)) exitWith {}; + +if (_reason == "") exitWith { ERROR("Invalid Reason"); }; +if (_interrupt) then { + GVAR(interrupts) pushBack _reason; +} else { + GVAR(interrupts) = GVAR(interrupts) - [_reason]; +}; + +if (GVAR(interrupts) isEqualTo []) then { + if (isNull (findDisplay 12249)) then { + createDialog QGVAR(interface); + [] call FUNC(transitionCamera); + }; +} else { + if !(isNull (findDisplay 12249)) then { + while {dialog} do { + closeDialog 0; + }; + + (findDisplay 12249) closeDisplay 0; + }; +}; From d09ca9ec8be5ce1102f740ae524b90fb8d16c2fa Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 16:25:10 +0200 Subject: [PATCH 072/620] Code Cleanup Medical Module (Part 1). --- .../fnc_actionCheckBloodPressure.sqf | 7 +- .../fnc_actionCheckBloodPressureLocal.sqf | 11 ++- .../functions/fnc_actionCheckPulse.sqf | 7 +- .../functions/fnc_actionCheckPulseLocal.sqf | 7 +- .../functions/fnc_actionCheckResponse.sqf | 14 ++-- .../medical/functions/fnc_actionDiagnose.sqf | 7 +- .../medical/functions/fnc_actionLoadUnit.sqf | 13 ++-- .../functions/fnc_actionPlaceInBodyBag.sqf | 3 +- .../functions/fnc_actionRemoveTourniquet.sqf | 8 +-- .../functions/fnc_actionUnloadUnit.sqf | 11 ++- .../functions/fnc_addHeartRateAdjustment.sqf | 9 +-- .../functions/fnc_addToInjuredCollection.sqf | 16 ++--- addons/medical/functions/fnc_addToLog.sqf | 23 +++--- .../medical/functions/fnc_addToTriageCard.sqf | 11 ++- .../functions/fnc_addUnconsciousCondition.sqf | 7 +- .../functions/fnc_addUnloadPatientActions.sqf | 5 +- .../medical/functions/fnc_adjustPainLevel.sqf | 2 +- .../fnc_canAccessMedicalEquipment.sqf | 7 +- addons/medical/functions/fnc_canTreat.sqf | 31 ++++---- .../medical/functions/fnc_canTreatCached.sqf | 3 +- addons/medical/functions/fnc_copyDeadBody.sqf | 7 +- addons/medical/functions/fnc_createLitter.sqf | 50 +++++++------ .../functions/fnc_determineIfFatal.sqf | 26 +++---- .../fnc_displayPatientInformation.sqf | 71 +++++++++---------- .../functions/fnc_displayTriageCard.sqf | 29 ++++---- .../functions/fnc_dropDownTriageCard.sqf | 8 +-- addons/medical/functions/fnc_getBloodLoss.sqf | 9 ++- .../functions/fnc_getBloodPressure.sqf | 19 +++-- .../functions/fnc_getBloodVolumeChange.sqf | 10 ++- .../functions/fnc_getCardiacOutput.sqf | 3 +- .../functions/fnc_getHeartRateChange.sqf | 11 ++- .../medical/functions/fnc_getTriageStatus.sqf | 8 ++- .../medical/functions/fnc_getTypeOfDamage.sqf | 32 ++++----- .../functions/fnc_getUnconsciousCondition.sqf | 6 +- .../functions/fnc_handleBandageOpening.sqf | 30 +++----- .../functions/fnc_handleCreateLitter.sqf | 32 ++++++--- addons/medical/functions/fnc_handleDamage.sqf | 11 +-- .../functions/fnc_handleDamage_advanced.sqf | 11 +-- .../fnc_handleDamage_advancedSetDamage.sqf | 6 +- .../functions/fnc_handleDamage_airway.sqf | 10 +-- .../functions/fnc_handleDamage_basic.sqf | 17 ++--- .../functions/fnc_handleDamage_caching.sqf | 28 ++++---- .../functions/fnc_handleDamage_fractures.sqf | 8 +-- .../fnc_handleDamage_internalInjuries.sqf | 10 +-- .../functions/fnc_handleDamage_wounds.sqf | 17 ++--- .../functions/fnc_handleDamage_woundsOld.sqf | 14 ++-- addons/medical/functions/fnc_handleKilled.sqf | 4 +- addons/medical/functions/fnc_handleLocal.sqf | 4 +- .../functions/fnc_handleUnitVitals.sqf | 10 ++- addons/medical/functions/fnc_hasItem.sqf | 12 ++-- addons/medical/functions/fnc_hasItems.sqf | 6 +- .../functions/fnc_hasMedicalEnabled.sqf | 32 +++++---- .../functions/fnc_hasTourniquetAppliedTo.sqf | 4 +- addons/medical/functions/fnc_init.sqf | 5 +- .../medical/functions/fnc_isBeingCarried.sqf | 2 +- .../medical/functions/fnc_isBeingDragged.sqf | 2 +- .../functions/fnc_isInMedicalFacility.sqf | 8 +-- .../functions/fnc_isInMedicalVehicle.sqf | 5 +- .../functions/fnc_isInStableCondition.sqf | 6 +- addons/medical/functions/fnc_isMedic.sqf | 5 +- .../functions/fnc_isMedicalVehicle.sqf | 3 +- addons/medical/functions/fnc_itemCheck.sqf | 5 +- .../functions/fnc_modifyMedicalAction.sqf | 9 +-- .../fnc_moduleAdvancedMedicalSettings.sqf | 7 +- .../functions/fnc_moduleAssignMedicRoles.sqf | 14 ++-- .../fnc_moduleAssignMedicalFacility.sqf | 8 +-- .../fnc_moduleAssignMedicalVehicle.sqf | 14 ++-- .../functions/fnc_moduleMedicalSettings.sqf | 7 +- .../functions/fnc_moduleReviveSettings.sqf | 7 +- .../functions/fnc_onMedicationUsage.sqf | 40 ++++------- .../functions/fnc_onPropagateWound.sqf | 7 +- .../functions/fnc_onWoundUpdateRequest.sqf | 7 +- .../functions/fnc_parseConfigForInjuries.sqf | 29 ++++---- .../functions/fnc_playInjuredSound.sqf | 6 +- .../functions/fnc_setCardiacArrest.sqf | 4 +- addons/medical/functions/fnc_setDead.sqf | 4 +- .../fnc_treatmentTourniquetLocal.sqf | 4 +- .../medical/functions/fnc_unconsciousPFH.sqf | 6 +- 78 files changed, 428 insertions(+), 543 deletions(-) diff --git a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf index e8e03bb4c0..96c9740b5d 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf @@ -7,14 +7,11 @@ * 1: The patient * * Return Value: -* NONE +* None * * Public: No */ #include "script_component.hpp" -private ["_caller","_target"]; -_caller = _this select 0; -_target = _this select 1; -[[_caller, _target], QUOTE(DFUNC(actionCheckBloodPressureLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +[_this, QUOTE(DFUNC(actionCheckBloodPressureLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 82edd1749f..c7b444de73 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -7,24 +7,21 @@ * 1: The patient * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_caller","_target","_bloodPressure","_bloodPressureHigh","_bloodPressureLow", "_logOutPut", "_output"]; -_caller = _this select 0; -_target = _this select 1; +private ["_bloodPressure", "_logOutPut", "_output"]; +params ["_caller", "_target"]; _bloodPressure = [_target] call FUNC(getBloodPressure); if (!alive _target) then { _bloodPressure = [0,0]; }; - -_bloodPressureHigh = _bloodPressure select 1; -_bloodPressureLow = _bloodPressure select 0; +_bloodPressure params ["_bloodPressureLow", "_bloodPressureLow"]; _output = ""; _logOutPut = ""; if ([_caller] call FUNC(isMedic)) then { diff --git a/addons/medical/functions/fnc_actionCheckPulse.sqf b/addons/medical/functions/fnc_actionCheckPulse.sqf index fd96321e8f..1861195a04 100644 --- a/addons/medical/functions/fnc_actionCheckPulse.sqf +++ b/addons/medical/functions/fnc_actionCheckPulse.sqf @@ -7,14 +7,11 @@ * 1: The patient * * Return Value: -* NONE +* None * * Public: No */ #include "script_component.hpp" -private ["_caller","_target"]; -_caller = _this select 0; -_target = _this select 1; -[[_caller, _target], QUOTE(DFUNC(actionCheckPulseLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +[_this, QUOTE(DFUNC(actionCheckPulseLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf index d759bf1bc8..74f9fc5eb5 100644 --- a/addons/medical/functions/fnc_actionCheckPulseLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckPulseLocal.sqf @@ -7,16 +7,15 @@ * 1: The patient * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_caller", "_unit", "_heartRateOutput", "_heartRate", "_logOutPut"]; -_caller = _this select 0; -_unit = _this select 1; +private ["_heartRateOutput", "_heartRate", "_logOutPut"]; +params ["_caller", "_unit"]; _heartRate = _unit getvariable [QGVAR(heartRate), 80]; diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index b5df63047e..7db4fe0a5d 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -7,22 +7,20 @@ * 1: The patient * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_caller","_target", "_output"]; -_caller = _this select 0; -_target = _this select 1; +private ["_output"]; +params ["_caller", "_target"]; -_output = ""; -if ([_target] call EFUNC(common,isAwake)) then { - _output = LSTRING(Check_Response_Responsive); +_output = if ([_target] call EFUNC(common,isAwake)) then { + LSTRING(Check_Response_Responsive) } else { - _output = LSTRING(Check_Response_Unresponsive); + LSTRING(Check_Response_Unresponsive) }; ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index 243edbdef8..5cc0d307da 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -7,16 +7,15 @@ * 1: The patient * * Return Value: -* NONE +* None * * Public: No */ #include "script_component.hpp" -private ["_caller", "_target", "_genericMessages"]; -_caller = _this select 0; -_target = _this select 1; +private "_genericMessages"; +params ["_caller", "_target"]; _genericMessages = [LSTRING(diagnoseMessage)]; diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 03d9a3ef54..f4b941383f 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -7,26 +7,25 @@ * 1: The patient * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_caller", "_target","_vehicle"]; -_caller = _this select 0; -_target = _this select 1; +private "_vehicle"; +params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitwith { // TODO localization ["displayTextStructured", [_caller], [["This person (%1) is awake and cannot be loaded", [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); }; if ([_target] call FUNC(isBeingCarried)) then { - [_caller, _target] call EFUNC(dragging,dropObject_carry); + _this call EFUNC(dragging,dropObject_carry); }; if ([_target] call FUNC(isBeingDragged)) then { - [_caller, _target] call EFUNC(dragging,dropObject); + _this call EFUNC(dragging,dropObject); }; -_vehicle = [_caller, _target] call EFUNC(common,loadPerson); +_vehicle = _this call EFUNC(common,loadPerson); diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index 73f9eeca4d..f416535701 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -14,9 +14,8 @@ #include "script_component.hpp" -PARAMS_2(_caller,_target); - private ["_position", "_headPos", "_spinePos", "_dirVect", "_direction", "_bodyBag"]; +params ["_caller", "_target"]; if (alive _target) then { [_target, true] call FUNC(setDead); diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index a14dbc3bcd..778042e9a6 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -8,17 +8,15 @@ * 2: SelectionName * * Return Value: - * NONE + * None * * Public: Yes */ #include "script_component.hpp" -private ["_caller", "_target", "_part", "_selectionName", "_tourniquets", "_output"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; +private ["_part", "_tourniquets", "_output"]; +params ["_caller", "_target", "_selectionName"]; // grab the required data _part = [_selectionName] call FUNC(selectionNameToNumber); diff --git a/addons/medical/functions/fnc_actionUnloadUnit.sqf b/addons/medical/functions/fnc_actionUnloadUnit.sqf index a73f32265a..6bb4f5beed 100644 --- a/addons/medical/functions/fnc_actionUnloadUnit.sqf +++ b/addons/medical/functions/fnc_actionUnloadUnit.sqf @@ -5,23 +5,20 @@ * Arguments: * 0: The medic * 1: The patient - * 2: Drag after unload + * 2: Drag after unload (default: false) * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_caller", "_target", "_drag"]; -_caller = _this select 0; -_target = _this select 1; -_drag = if (count _this > 2) then {_this select 2} else {false}; +params ["_caller", "_target", ["_drag", false]]; // cannot unload a unit not in a vehicle. if (vehicle _target == _target) exitwith {}; if (([_target] call EFUNC(common,isAwake))) exitwith {}; -["unloadPersonEvent", _target, [_target, vehicle _target]] call EFUNC(common,targetEvent) \ No newline at end of file +["unloadPersonEvent", _target, [_target, vehicle _target]] call EFUNC(common,targetEvent) diff --git a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf index f4516a100c..7171eee275 100644 --- a/addons/medical/functions/fnc_addHeartRateAdjustment.sqf +++ b/addons/medical/functions/fnc_addHeartRateAdjustment.sqf @@ -9,18 +9,15 @@ * 3: callback * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_unit", "_value", "_time", "_adjustment", "_callBack"]; -_unit = [_this, 0, objNull, [objNull]] call BIS_fnc_Param; -_value = [_this, 1, 0, [0]] call BIS_fnc_Param; -_time = [_this, 2, 1, [0]] call BIS_fnc_Param; -_callBack = [_this, 3, {}, [{}]] call BIS_fnc_Param; + +params [["_unit", objNull, [objNull]], ["_value", 0, [0]], ["_time", 1, [0]], ["_callBack", {}, [{}]]]; _adjustment = _unit getvariable [QGVAR(heartRateAdjustments), []]; _adjustment pushback [_value, _time, _callBack]; diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf index 083f949d9d..66433a5ed0 100644 --- a/addons/medical/functions/fnc_addToInjuredCollection.sqf +++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf @@ -6,16 +6,14 @@ * 0: The Unit * * ReturnValue: - * + * None * * Public: Yes */ #include "script_component.hpp" -private ["_unit", "_force"]; -_unit = _this select 0; -_force = if (count _this > 1) then {_this select 1} else {false}; +params ["_unit", ["_force", false]]; if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { @@ -27,13 +25,13 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { _unit setvariable [QGVAR(addedToUnitLoop), true, true]; [{ - private ["_unit", "_interval"]; - _unit = (_this select 0) select 0; - _interval = ACE_time - ((_this select 0) select 1); + params ["_args", "_idPFH"]; + _args params ["_unit", "_interval"]; + _interval = ACE_time - _interval; (_this select 0) set [1, ACE_time]; - + if (!alive _unit || !local _unit) then { - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; if (!local _unit) then { if (GVAR(level) >= 2) then { _unit setvariable [QGVAR(heartRate), _unit getvariable [QGVAR(heartRate), 80], true]; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index af7d9f3170..54a685611a 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -9,27 +9,26 @@ * 3: The arguments for localization * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_unit", "_type", "_message", "_arguments", "_lastNumber", "_moment", "_logVarName", "_log","_newLog", "_logs"]; -_unit = _this select 0; -_type = _this select 1; -_message = _this select 2; -_arguments = _this select 3; +private ["_moment", "_logVarName", "_log","_newLog", "_logs"]; +params ["_unit", "_type", "_allMapMarkers", "_arguments"]; if (!local _unit) exitwith { [_this, QUOTE(DFUNC(addToLog)), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ }; -_lastNumber = date select 4; -_moment = format["%1:%2",date select 3, _lastNumber]; -if (_lastNumber < 10) then { - _moment = format["%1:0%2",date select 3, _lastNumber]; +date params ["_minute", "_hour"]; + +_moment = if (_minute < 10) then { + format["%1:0%2", _hour, _minute] +} else { + format["%1:%2", _hour, _minute] }; _logVarName = format[QGVAR(logFile_%1), _type]; @@ -41,10 +40,10 @@ if (count _log >= 8) then { if (_foreachIndex > 0) then { _newLog pushback _x; }; - }foreach _log; + } foreach _log; _log = _newLog; }; -_log pushback [_message,_moment,_type, _arguments]; +_log pushback [_message, _moment, _type, _arguments]; _unit setvariable [_logVarName, _log, true]; ["medical_onLogEntryAdded", [_unit, _type, _message, _arguments]] call EFUNC(common,localEvent); diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index 7495c04a8a..1869340ad8 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -7,16 +7,15 @@ * 1: The new item classname * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" - -private ["_unit", "_newItem", "_log", "_inList", "_amount"]; -_unit = _this select 0; -_newItem = _this select 1; +d +private ["_log", "_inList", "_amount"]; +params ["_unit", "_newItem"]; if (!local _unit) exitwith { [_this, QUOTE(DFUNC(addToTriageList)), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ @@ -36,7 +35,7 @@ _amount = 1; _amount = (_info select 1); _inList = true; }; -}foreach _log; +} foreach _log; if (!_inList) then { _log pushback [_newItem, 1, ACE_time]; diff --git a/addons/medical/functions/fnc_addUnconsciousCondition.sqf b/addons/medical/functions/fnc_addUnconsciousCondition.sqf index 579a55ca1f..6a867088da 100644 --- a/addons/medical/functions/fnc_addUnconsciousCondition.sqf +++ b/addons/medical/functions/fnc_addUnconsciousCondition.sqf @@ -3,14 +3,13 @@ * Adds new condition for the unconscious state. Conditions are not actively checked for units unless unit is in unconscious state. * * Arguments: - * 0: Code, should return a boolean + * 0-N: Code, should return a boolean * * ReturnValue: - * + * None * * Public: Yes */ - #include "script_component.hpp" if (isnil QGVAR(unconsciousConditions)) then { @@ -21,5 +20,5 @@ if (typeName _this == typeName []) then { if (typeName _x == typeName {}) then { GVAR(unconsciousConditions) pushback _x; }; - }foreach _this; + } foreach _this; }; diff --git a/addons/medical/functions/fnc_addUnloadPatientActions.sqf b/addons/medical/functions/fnc_addUnloadPatientActions.sqf index 13a4177859..11e0463328 100644 --- a/addons/medical/functions/fnc_addUnloadPatientActions.sqf +++ b/addons/medical/functions/fnc_addUnloadPatientActions.sqf @@ -13,8 +13,7 @@ * Public: No */ #include "script_component.hpp" - -EXPLODE_3_PVT(_this,_vehicle,_player,_parameters); +params ["_vehicle", "_player", "_parameters"]; private ["_actions", "_unit"]; _actions = []; @@ -28,7 +27,7 @@ _actions = []; str(_unit), [_unit, true] call EFUNC(common,getName), "", - {[_player, (_this select 2) select 0] call FUNC(actionUnloadUnit);}, + {[_player, _parameters select 0] call FUNC(actionUnloadUnit);}, {true}, {}, [_unit] diff --git a/addons/medical/functions/fnc_adjustPainLevel.sqf b/addons/medical/functions/fnc_adjustPainLevel.sqf index 7e6ce2d5f1..c4aab9e48d 100644 --- a/addons/medical/functions/fnc_adjustPainLevel.sqf +++ b/addons/medical/functions/fnc_adjustPainLevel.sqf @@ -18,7 +18,7 @@ private ["_pain"]; -PARAMS_2(_unit,_addedPain); +params ["_unit", "_addedPain"]; //Only run on local units: if (!local _unit) exitWith {ERROR("unit is not local");}; diff --git a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf b/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf index 4b1940b7e3..0be01ac492 100644 --- a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf +++ b/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf @@ -14,9 +14,8 @@ #include "script_component.hpp" -private ["_target", "_caller", "_accessLevel", "_return"]; -_caller = _this select 0; -_target = _this select 1; +private ["_accessLevel", "_return"]; +params ["_caller", "_targ"]; _accessLevel = _target getvariable [QGVAR(allowSharedEquipmentAccess), -1]; @@ -28,4 +27,4 @@ if (_accessLevel >= 0) then { if (_accessLevel == 2) exitwith { _return = (group _target == group _caller); }; }; -_return; \ No newline at end of file +_return; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index e0cab95420..e1817d21fe 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -16,17 +16,16 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition", "_allowedSelections"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; +private ["_config", "_medicRequired", "_items", "_locations", "_return", "_condition", "_patientStateCondition", "_allowedSelections"]; +params ["_caller", "_target", "_selectionName", "_className"]; -if !(_target isKindOf "CAManBase") exitWith {false}; +if !(_target isKindOf "CAManBase") exitWith { false }; -_config = (ConfigFile >> "ACE_Medical_Actions" >> "Basic" >> _className); -if (GVAR(level)>=2) then { - _config = (ConfigFile >> "ACE_Medical_Actions" >> "Advanced" >> _className); + +_config = if (GVAR(level)>=2) then { + (ConfigFile >> "ACE_Medical_Actions" >> "Advanced" >> _className) +} else { + (ConfigFile >> "ACE_Medical_Actions" >> "Basic" >> _className) }; if !(isClass _config) exitwith {false}; @@ -35,17 +34,17 @@ _medicRequired = if (isNumber (_config >> "requiredMedic")) then { } else { // Check for required class if (isText (_config >> "requiredMedic")) exitwith { - missionNamespace getvariable [(getText (_config >> "requiredMedic")), 0]; + missionNamespace getvariable [(getText (_config >> "requiredMedic")), 0] }; 0; }; -if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith {false}; +if !([_caller, _medicRequired] call FUNC(isMedic)) exitwith { false }; _items = getArray (_config >> "items"); -if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith {false}; +if (count _items > 0 && {!([_caller, _target, _items] call FUNC(hasItems))}) exitwith { false }; _allowedSelections = getArray (_config >> "allowedSelections"); -if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith {false}; +if !("All" in _allowedSelections || {(_selectionName in _allowedSelections)}) exitwith { false }; _return = true; if (getText (_config >> "condition") != "") then { @@ -61,7 +60,7 @@ if (getText (_config >> "condition") != "") then { _return = [_caller, _target, _selectionName, _className] call _condition; }; }; -if (!_return) exitwith {false}; +if (!_return) exitwith { false }; _patientStateCondition = if (isText(_config >> "patientStateCondition")) then { missionNamespace getvariable [getText(_config >> "patientStateCondition"), 0] @@ -71,7 +70,7 @@ _patientStateCondition = if (isText(_config >> "patientStateCondition")) then { if (_patientStateCondition == 1 && {!([_target] call FUNC(isInStableCondition))}) exitwith {false}; _locations = getArray (_config >> "treatmentLocations"); -if ("All" in _locations) exitwith {true}; +if ("All" in _locations) exitwith { true }; private [ "_medFacility", "_medVeh"]; _medFacility = {([_caller] call FUNC(isInMedicalFacility)) || ([_target] call FUNC(isInMedicalFacility))}; @@ -93,6 +92,6 @@ _medVeh = {([_caller] call FUNC(isInMedicalVehicle)) || ([_target] call FUNC(isI }; }; }; -}foreach _locations; +} foreach _locations; _return; diff --git a/addons/medical/functions/fnc_canTreatCached.sqf b/addons/medical/functions/fnc_canTreatCached.sqf index b1dfaf7d12..273da7dc4b 100644 --- a/addons/medical/functions/fnc_canTreatCached.sqf +++ b/addons/medical/functions/fnc_canTreatCached.sqf @@ -17,6 +17,7 @@ #include "script_component.hpp" #define MAX_DURATION_CACHE 2 +params ["", "_target", "_selection", "_classname"]; // parameters, function, namespace, uid -[_this, DFUNC(canTreat), _this select 1, format[QGVAR(canTreat_%1_%2), _this select 2, _this select 3], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall); +[_this, DFUNC(canTreat), _target, format [QGVAR(canTreat_%1_%2), _selection, _classname], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall); diff --git a/addons/medical/functions/fnc_copyDeadBody.sqf b/addons/medical/functions/fnc_copyDeadBody.sqf index 36bcd91487..9a3936f009 100644 --- a/addons/medical/functions/fnc_copyDeadBody.sqf +++ b/addons/medical/functions/fnc_copyDeadBody.sqf @@ -7,16 +7,15 @@ * 1: The caller * * Return Value: - * OBJECT Returns the copy of the unit. If no copy could be made, returns the oldBody + * Returns the copy of the unit. If no copy could be made, returns the oldBody * * Public: No */ #include "script_component.hpp" -private ["_oldBody","_newUnit","_class","_group","_position","_side", "_caller", "_name"]; -_oldBody = _this select 0; -_caller = _this select 1; +private ["_newUnit", "_class", "_group", "_position", "_side", "_name"]; +params ["_oldBody", "_caller"]; if (alive _oldBody) exitwith {_oldBody}; // we only want to do this for dead bodies diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf index a3b71b7f9c..b25a3bbf94 100644 --- a/addons/medical/functions/fnc_createLitter.sqf +++ b/addons/medical/functions/fnc_createLitter.sqf @@ -3,11 +3,16 @@ * Spawns litter for the treatment action on the ground around the target * * Arguments: - * 0: The target - * 1: The treatment classname + * 0: The Caller + * 1: The target + * 2: The treatment Selection Name + * 3: The treatment classname + * 4: ? + * 5: Users of Items + * 6: Previous Damage * * Return Value: - * + * None * * Public: No */ @@ -16,13 +21,8 @@ #define MIN_ENTRIES_LITTER_CONFIG 3 -private ["_target", "_className", "_config", "_litter", "_createLitter", "_position", "_createdLitter", "_caller", "_selectionName", "_usersOfItems", "_previousDamage"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_usersOfItems = _this select 5; -_previousDamage = _this select 6; +private ["_config", "_litter", "_createLitter", "_position", "_createdLitter"]; +params ["_caller", "_target", "_selectionName", "_className", "", "_usersOfItems", "_previousDamage"]; if !(GVAR(allowLitterCreation)) exitwith {}; if (vehicle _caller != _caller || vehicle _target != _target) exitwith {}; @@ -38,19 +38,18 @@ if !(isArray (_config >> "litter")) exitwith {}; _litter = getArray (_config >> "litter"); _createLitter = { - private["_position", "_litterClass", "_direction"]; - + private["_position", "_direction"]; + params ["_unit", "_litter"]; // @TODO: handle carriers over water // For now, don't spawn litter if we are over water to avoid floating litter - if(surfaceIsWater (getPos (_this select 0))) exitWith { false }; - - _position = getPosATL (_this select 0); - _position = [_position select 0, _position select 1, 0]; - _litterClass = _this select 1; - if (random(1) >= 0.5) then { - _position = [(_position select 0) + random 1, (_position select 1) + random 1, _position select 2]; + if(surfaceIsWater (getPos _unit)) exitWith { false }; + + _position = getPosATL _unit; + _position params ["_posX", "_posY"]; + _position = if (random(1) >= 0.5) then { + [_posX + random 1, _posY + random 1, 0] } else { - _position = [(_position select 0) - random 1, (_position select 1) - random 1, _position select 2]; + [_posX - random 1, _posY - random 1, 0]; }; _direction = (random 360); @@ -65,11 +64,10 @@ _createdLitter = []; { if (typeName _x == "ARRAY") then { if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {}; - private ["_selection", "_litterCondition", "_litterOptions"]; - _selection = _x select 0; + + params ["_selection", "_litterCondition", "_litterOptions"]; + if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower. - _litterCondition = _x select 1; - _litterOptions = _x select 2; if (isnil _litterCondition) then { _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}}; @@ -88,8 +86,8 @@ _createdLitter = []; if (typeName _x == "STRING") then { [_target, _x] call _createLitter; }; - }foreach _litterOptions; + } foreach _litterOptions; }; }; }; -}foreach _litter; \ No newline at end of file +} foreach _litter; diff --git a/addons/medical/functions/fnc_determineIfFatal.sqf b/addons/medical/functions/fnc_determineIfFatal.sqf index bad15dbcad..939bf8c9b7 100644 --- a/addons/medical/functions/fnc_determineIfFatal.sqf +++ b/addons/medical/functions/fnc_determineIfFatal.sqf @@ -1,19 +1,21 @@ -/** - * fn_determineIfFatal.sqf - * @Descr: N/A - * @Author: Glowbal +/* + * Author: Glowbal + * Determine If Fatal * - * @Arguments: [] - * @Return: - * @PublicAPI: false + * Arguments: + * 0: Unit + * 1: Part + * 2: with Damage (default: 0) + * + * Return Value: + * None + * + * Public: No */ - #include "script_component.hpp" -private ["_unit","_part","_damageThreshold", "_withDamage", "_damageBodyPart"]; -_unit = _this select 0; -_part = _this select 1; -_withDamage = if (count _this > 2) then { _this select 2} else {0}; +private ["_damageThreshold", "_damageBodyPart"]; +params ["_unit", "_part", ["_withDamage", 0]]; if (!alive _unit) exitwith {true}; if (_part < 0 || _part > 5) exitwith {false}; diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index e181328318..82622bdca6 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -4,10 +4,11 @@ * * Arguments: * 0: The Unit - * 1: Show + * 1: Show (default: true) + * 2: Selection (default: 0) * * ReturnValue: - * nil + * None * * Public: No */ @@ -18,9 +19,7 @@ // Exit for basic medical if (GVAR(level) < 2) exitWith {}; private ["_target", "_show", "_selectionN", "_amountOfGeneric", "_bandagedwounds", "_logCtrl", "_part", "_partText", "_pointDamage", "_severity", "_total", "_totalIvVolume", "_triageStatus", "_type"]; -_target = _this select 0; -_show = if (count _this > 1) then {_this select 1} else {true}; -_selectionN = if (count _this > 2) then {_this select 2} else {0}; +params ["_target", ["_target", true], ["_selectionN", 0]]; GVAR(currentSelectedSelectionN) = if (typeName _selectionN == "SCALAR") then {_selectionN} else {0}; GVAR(displayPatientInformationTarget) = if (_show) then {_target} else {ObjNull}; @@ -34,22 +33,22 @@ if (_show) then { [{ private ["_target", "_display", "_alphaLevel", "_damaged", "_availableSelections", "_openWounds", "_selectionBloodLoss", "_red", "_green", "_blue", "_alphaLevel", "_allInjuryTexts", "_lbCtrl", "_genericMessages"]; - _target = (_this select 0) select 0; - _selectionN = (_this select 0) select 1; + params ["_args", "_idPFH"]; + _args params ["_target", "_selectionN"]; if (GVAR(displayPatientInformationTarget) != _target || GVAR(currentSelectedSelectionN) != _selectionN) exitwith { - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; if (ACE_player distance _target > MAX_DISTANCE) exitwith { ("ACE_MedicalRscDisplayInformation" call BIS_fnc_rscLayer) cutText ["","PLAIN"]; - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; ["displayTextStructured", [ACE_player], [[LSTRING(DistanceToFar), [_target] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent); }; disableSerialization; _display = uiNamespace getvariable QGVAR(DisplayInformation); if (isnil "_display") exitwith { - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; _allInjuryTexts = []; @@ -81,7 +80,7 @@ if (_show) then { if !(isnil "_value") then { _totalIvVolume = _totalIvVolume + (_target getvariable [_x, 0]); }; - }foreach GVAR(IVBags); + } foreach GVAR(IVBags); if (_totalIvVolume >= 1) then { _genericMessages pushback [format[localize LSTRING(receivingIvVolume), floor _totalIvVolume], [1, 1, 1, 1]]; }; @@ -92,33 +91,33 @@ if (_show) then { _openWounds = _target getvariable [QGVAR(openWounds), []]; private "_amountOf"; { - _amountOf = _x select 3; + _x params ["", "_x1", "_selectionX", "_amountOf", "_x4"]; // Find how much this bodypart is bleeding if (_amountOf > 0) then { - _damaged set[_x select 2, true]; - _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; + _damaged set[_selectionX, true]; + _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; - if (_selectionN == (_x select 2)) then { + if (_selectionN == _selectionX) then { // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] if (_amountOf >= 1) then { // TODO localization - _allInjuryTexts pushback [format["%2x %1", (GVAR(AllWoundInjuryTypes) select (_x select 1)) select 6, _amountOf], [1,1,1,1]]; + _allInjuryTexts pushback [format["%2x %1", (GVAR(AllWoundInjuryTypes) select _x1) select 6, _amountOf], [1,1,1,1]]; } else { // TODO localization - _allInjuryTexts pushback [format["Partial %1", (GVAR(AllWoundInjuryTypes) select (_x select 1)) select 6], [1,1,1,1]]; + _allInjuryTexts pushback [format["Partial %1", (GVAR(AllWoundInjuryTypes) select _x1) select 6], [1,1,1,1]]; }; }; }; - }foreach _openWounds; + } foreach _openWounds; _bandagedwounds = _target getvariable [QGVAR(bandagedWounds), []]; { - _amountOf = _x select 3; + _x params ["", "", "_selectionX", "_amountOf", "_x4"]; // Find how much this bodypart is bleeding - if !(_damaged select (_x select 2)) then { - _selectionBloodLoss set [(_x select 2), (_selectionBloodLoss select (_x select 2)) + (20 * ((_x select 4) * _amountOf))]; + if !(_damaged select _selectionX) then { + _selectionBloodLoss set [_selectionX, (_selectionBloodLoss select _selectionX) + (20 * (_x4 * _amountOf))]; }; - if (_selectionN == (_x select 2)) then { + if (_selectionN == _selectionX) then { // Collect the text to be displayed for this injury [ Select injury class type definition - select the classname DisplayName (6th), amount of injuries for this] if (_amountOf > 0) then { if (_amountOf >= 1) then { @@ -130,7 +129,7 @@ if (_show) then { }; }; }; - }foreach _bandagedwounds; + } foreach _bandagedwounds; } else { _damaged = [true, true, true, true, true, true]; { @@ -160,7 +159,7 @@ if (_show) then { _availableSelections = [50,51,52,53,54,55]; { - private ["_red", "_green", "_blue"]; + private ["_red", "_green", "_blue", "_total"]; _total = _x; _red = 1; @@ -177,20 +176,22 @@ if (_show) then { }; }; (_display displayCtrl (_availableSelections select _foreachIndex)) ctrlSetTextColor [_red, _green, _blue, 1.0]; - }foreach _selectionBloodLoss; + } foreach _selectionBloodLoss; _lbCtrl = (_display displayCtrl 200); lbClear _lbCtrl; { - _lbCtrl lbAdd (_x select 0); - _lbCtrl lbSetColor [_foreachIndex, _x select 1]; - }foreach _genericMessages; + _x params ["_add", "_color"]; + _lbCtrl lbAdd _add; + _lbCtrl lbSetColor [_foreachIndex, _color]; + } foreach _genericMessages; _amountOfGeneric = count _genericMessages; { - _lbCtrl lbAdd (_x select 0); - _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _x select 1]; - }foreach _allInjuryTexts; + _x params ["_add", "_color"]; + _lbCtrl lbAdd _add; + _lbCtrl lbSetColor [_foreachIndex + _amountOfGeneric, _color]; + } foreach _allInjuryTexts; if (count _allInjuryTexts == 0) then { _lbCtrl lbAdd (localize LSTRING(NoInjuriesBodypart)); }; @@ -202,9 +203,7 @@ if (_show) then { _logs = _target getvariable [QGVAR(logFile_Activity), []]; { // [_message,_moment,_type, _arguments] - _message = _x select 0; - _moment = _x select 1; - _arguments = _x select 3; + _x params ["_message", "_moment", "_arguments"]; if (isLocalized _message) then { _message = localize _message; }; @@ -213,10 +212,10 @@ if (_show) then { if (typeName _x == "STRING" && {isLocalized _x}) then { _arguments set [_foreachIndex, localize _x]; }; - }foreach _arguments; + } foreach _arguments; _message = format([_message] + _arguments); _logCtrl lbAdd format["%1 %2", _moment, _message]; - }foreach _logs; + } foreach _logs; _triageStatus = [_target] call FUNC(getTriageStatus); (_display displayCtrl 303) ctrlSetText (_triageStatus select 0); diff --git a/addons/medical/functions/fnc_displayTriageCard.sqf b/addons/medical/functions/fnc_displayTriageCard.sqf index c4ed4ad829..051efbfc70 100644 --- a/addons/medical/functions/fnc_displayTriageCard.sqf +++ b/addons/medical/functions/fnc_displayTriageCard.sqf @@ -4,18 +4,18 @@ * * Arguments: * 0: The unit + * 1: Show (default: true) * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_target", "_show", "_amount", "_item", "_log", "_message", "_triageCardTexts", "_triageStatus"]; -_target = _this select 0; -_show = if (count _this > 1) then {_this select 1} else {true}; +private ["_amount", "_item", "_log", "_message", "_triageCardTexts", "_triageStatus"]; +params ["_target", ["_show", true]]; GVAR(TriageCardTarget) = if (_show) then {_target} else {ObjNull}; @@ -25,15 +25,16 @@ if (_show) then { [{ private ["_target", "_display", "_alphaLevel", "_alphaLevel", "_lbCtrl"]; - _target = (_this select 0) select 0; + params ["_args", "_idPFH"]; + _args params ["_target"]; if (GVAR(TriageCardTarget) != _target) exitwith { - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; disableSerialization; _display = uiNamespace getvariable QGVAR(triageCard); if (isnil "_display") exitwith { - [_this select 1] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; _triageCardTexts = []; @@ -44,8 +45,7 @@ if (_show) then { _log = _target getvariable [QGVAR(triageCard), []]; { - _item = _x select 0; - _amount = _x select 1; + _x params ["_item", "_amount"]; _message = _item; if (isClass(configFile >> "CfgWeapons" >> _item)) then { _message = getText(configFile >> "CfgWeapons" >> _item >> "DisplayName"); @@ -55,18 +55,21 @@ if (_show) then { }; }; _triageCardTexts pushback format["%1x - %2", _amount, _message]; - }foreach _log; + } foreach _log; if (count _triageCardTexts == 0) then { _lbCtrl lbAdd (localize LSTRING(TriageCard_NoEntry)); }; { _lbCtrl lbAdd _x; - }foreach _triageCardTexts; + } foreach _triageCardTexts; _triageStatus = [_target] call FUNC(getTriageStatus); - (_display displayCtrl 2000) ctrlSetText (_triageStatus select 0); - (_display displayCtrl 2000) ctrlSetBackgroundColor (_triageStatus select 2); + + _triageStatus params ["_text", "_color"]; + + (_display displayCtrl 2000) ctrlSetText _text; + (_display displayCtrl 2000) ctrlSetBackgroundColor _color; }, 0, [_target]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_dropDownTriageCard.sqf b/addons/medical/functions/fnc_dropDownTriageCard.sqf index 6f30152c5f..d207c7f9a4 100644 --- a/addons/medical/functions/fnc_dropDownTriageCard.sqf +++ b/addons/medical/functions/fnc_dropDownTriageCard.sqf @@ -3,18 +3,18 @@ * Display triage card for a unit * * Arguments: - * 0: The unit + * 0: Show * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_show", "_ctrl", "_display", "_idc", "_pos"]; -_show = _this select 0; +private ["_ctrl", "_display", "_idc", "_pos"]; +params ["_show"]; disableSerialization; _display = uiNamespace getvariable QGVAR(triageCard); diff --git a/addons/medical/functions/fnc_getBloodLoss.sqf b/addons/medical/functions/fnc_getBloodLoss.sqf index 1881643d97..9ac1083f03 100644 --- a/addons/medical/functions/fnc_getBloodLoss.sqf +++ b/addons/medical/functions/fnc_getBloodLoss.sqf @@ -15,10 +15,9 @@ #define BLOODLOSSRATE_BASIC 0.2 -private ["_unit", "_totalBloodLoss","_tourniquets","_openWounds", "_cardiacOutput", "_internalWounds"]; +private ["_totalBloodLoss","_tourniquets","_openWounds", "_cardiacOutput", "_internalWounds"]; // TODO Only use this calculation if medium or higher, otherwise use vanilla calculations (for basic medical). - -_unit = _this select 0; +params ["_unit"]; _totalBloodLoss = 0; // Advanced medical bloodloss handling @@ -34,12 +33,12 @@ if (GVAR(level) >= 2) then { // (((BLOODLOSS_SMALL_WOUNDS * (_x select 0))) + ((BLOODLOSS_MEDIUM_WOUNDS * (_x select 1))) + ((BLOODLOSS_LARGE_WOUNDS * (_x select 2))) * (_cardiacOutput / DEFAULT_CARDIAC_OUTPUT)); }; - }foreach _openWounds; + } foreach _openWounds; _internalWounds = _unit getvariable [QGVAR(internalWounds), []]; { _totalBloodLoss = _totalBloodLoss + ((_x select 4) * (_x select 3)); - }foreach _internalWounds; + } foreach _internalWounds; // cap the blood loss to be no greater as the current cardiac output //(_totalBloodLoss min _cardiacOutput); diff --git a/addons/medical/functions/fnc_getBloodPressure.sqf b/addons/medical/functions/fnc_getBloodPressure.sqf index f5012c8735..2ba0b7366d 100644 --- a/addons/medical/functions/fnc_getBloodPressure.sqf +++ b/addons/medical/functions/fnc_getBloodPressure.sqf @@ -6,29 +6,28 @@ * 0: The Unit * * ReturnValue: - * Blood Pressuret ,> + * 0: BloodPressure Low + * 1: BloodPressure High * * Public: No */ #include "script_component.hpp" -/* - Value is taken because with cardic output and resistance at default values, it will put blood pressure High at 120. -*/ +// Value is taken because with cardic output and resistance at default values, it will put blood pressure High at 120. #define MODIFIER_BP_HIGH 0.229 -/* - Value is taken because with cardic output and resistance at default values, it will put blood pressure Low at 80. -*/ +// Value is taken because with cardic output and resistance at default values, it will put blood pressure Low at 80. #define MODIFIER_BP_LOW 0.1524 -private ["_unit", "_bloodPressureLow", "_bloodPressureHigh", "_cardiacOutput", "_resistance"]; -_unit = _this select 0; +private ["_bloodPressureLow", "_bloodPressureHigh", "_cardiacOutput", "_resistance"]; + +params ["_unit"]; + _cardiacOutput = [_unit] call FUNC(getCardiacOutput); _resistance = _unit getvariable [QGVAR(peripheralResistance), 100]; _bloodPressureHigh = (_cardiacOutput * MODIFIER_BP_HIGH) * _resistance; _bloodPressureLow = (_cardiacOutput * MODIFIER_BP_LOW) * _resistance; -[_bloodPressureLow, _bloodPressureHigh]; +[_bloodPressureLow, _bloodPressureHigh] diff --git a/addons/medical/functions/fnc_getBloodVolumeChange.sqf b/addons/medical/functions/fnc_getBloodVolumeChange.sqf index 23eba4a0c7..3524e15cb5 100644 --- a/addons/medical/functions/fnc_getBloodVolumeChange.sqf +++ b/addons/medical/functions/fnc_getBloodVolumeChange.sqf @@ -28,10 +28,8 @@ */ #define BLOOD_CHANGE_PER_SECOND 0.0595 - - -private ["_unit","_bloodVolume","_bloodVolumeChange", "_ivVolume"]; -_unit = _this select 0; +private ["_bloodVolume", "_bloodVolumeChange", "_ivVolume"]; +params ["_unit"]; _bloodVolume = _unit getvariable [QGVAR(bloodVolume), 100]; _bloodVolumeChange = -([_unit] call FUNC(getBloodLoss)); @@ -43,13 +41,13 @@ if (_bloodVolume < 100.0) then { _ivVolume = (_unit getvariable [_x, 0]) + IV_CHANGE_PER_SECOND; _unit setvariable [_x,_ivVolume]; }; - }foreach GVAR(IVBags); + } foreach GVAR(IVBags); } else { { if ((_unit getvariable [_x, 0]) > 0) then { _unit setvariable [_x, 0]; // lets get rid of exessive IV volume }; - }foreach GVAR(IVBags); + } foreach GVAR(IVBags); }; _bloodVolumeChange; diff --git a/addons/medical/functions/fnc_getCardiacOutput.sqf b/addons/medical/functions/fnc_getCardiacOutput.sqf index 34d7be33af..f24aa438ca 100644 --- a/addons/medical/functions/fnc_getCardiacOutput.sqf +++ b/addons/medical/functions/fnc_getCardiacOutput.sqf @@ -22,7 +22,6 @@ // to limit the amount of complex calculations necessary, we take a set modifier to calculate Stroke Volume. #define MODIFIER_CARDIAC_OUTPUT 19.04761 -private "_unit"; -_unit = _this select 0; +params ["_unit"]; ((_unit getvariable [QGVAR(bloodVolume), 100])/MODIFIER_CARDIAC_OUTPUT) + ((_unit getvariable [QGVAR(heartRate), 80])/80-1); diff --git a/addons/medical/functions/fnc_getHeartRateChange.sqf b/addons/medical/functions/fnc_getHeartRateChange.sqf index 92a2053737..d46733452a 100644 --- a/addons/medical/functions/fnc_getHeartRateChange.sqf +++ b/addons/medical/functions/fnc_getHeartRateChange.sqf @@ -15,8 +15,9 @@ #define HEART_RATE_MODIFIER 0.02 -private ["_unit", "_heartRate", "_hrIncrease", "_bloodLoss", "_time", "_values", "_adjustment", "_change", "_callBack", "_bloodVolume"]; -_unit = _this select 0; +private ["_heartRate", "_hrIncrease", "_bloodLoss", "_time", "_values", "_adjustment", "_change", "_callBack", "_bloodVolume"]; +params ["_unit"]; + _hrIncrease = 0; if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then { _heartRate = _unit getvariable [QGVAR(heartRate), 80]; @@ -24,10 +25,8 @@ if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then { _adjustment = _unit getvariable [QGVAR(heartRateAdjustments), []]; { - _values = (_x select 0); + _x params ["_values", "_time", "_callBack"]; if (abs _values > 0) then { - _time = (_x select 1); - _callBack = _x select 2; if (_time <= 0) then { _time = 1; }; @@ -47,7 +46,7 @@ if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then { [_unit] call _callBack; }; - }foreach _adjustment; + } foreach _adjustment; _adjustment = _adjustment - [ObjNull]; _unit setvariable [QGVAR(heartRateAdjustments), _adjustment]; diff --git a/addons/medical/functions/fnc_getTriageStatus.sqf b/addons/medical/functions/fnc_getTriageStatus.sqf index 812c20ed2a..4dcef530a3 100644 --- a/addons/medical/functions/fnc_getTriageStatus.sqf +++ b/addons/medical/functions/fnc_getTriageStatus.sqf @@ -6,7 +6,9 @@ * 0: The unit * * Return Value: - * Triage status from the unit. Name, statusID, color > + * 0: Name + * 1: Status ID + * 2: Color > * * Public: Yes */ @@ -14,7 +16,7 @@ #include "script_component.hpp" private ["_unit","_return","_status"]; -_unit = _this select 0; +params ["_unit"]; _status = _unit getvariable [QGVAR(triageLevel), -1]; _return = switch (_status) do { case 1: {[localize LSTRING(Triage_Status_Minor), 1, [0, 0.5, 0, 0.9]]}; @@ -23,4 +25,4 @@ _return = switch (_status) do { case 4: {[localize LSTRING(Triage_Status_Deceased), 4, [0, 0, 0, 0.9]]}; default {[localize LSTRING(Triage_Status_None), 0, [0, 0, 0, 0.9]]}; }; -_return; +_return diff --git a/addons/medical/functions/fnc_getTypeOfDamage.sqf b/addons/medical/functions/fnc_getTypeOfDamage.sqf index d51131ce0c..b8646e485f 100644 --- a/addons/medical/functions/fnc_getTypeOfDamage.sqf +++ b/addons/medical/functions/fnc_getTypeOfDamage.sqf @@ -13,23 +13,19 @@ #include "script_component.hpp" -PARAMS_1(_typeOfProjectile); +params ["_typeOfProjectile"]; -private ["_typeOfDamage"]; - -_typeOfDamage = switch (true) do { - case (_typeOfProjectile isKindOf "BulletBase"): {"bullet"}; - case (_typeOfProjectile isKindOf "GrenadeCore"): {"grenade"}; - case (_typeOfProjectile isKindOf "TimeBombCore"): {"explosive"}; - case (_typeOfProjectile isKindOf "MineCore"): {"explosive"}; - case (_typeOfProjectile isKindOf "FuelExplosion"): {"explosive"}; - case (_typeOfProjectile isKindOf "ShellBase"): {"shell"}; - case (_typeOfProjectile isKindOf "RocketBase"): {"explosive"}; - case (_typeOfProjectile isKindOf "MissileBase"): {"explosive"}; - case (_typeOfProjectile isKindOf "LaserBombCore"): {"explosive"}; - case (_typeOfProjectile isKindOf "BombCore"): {"explosive"}; - case (_typeOfProjectile isKindOf "Grenade"): {"grenade"}; - default {toLower _typeOfProjectile}; +call { + if (_typeOfProjectile isKindOf "BulletBase") exitWith {"bullet"}; + if (_typeOfProjectile isKindOf "GrenadeCore") exitWith {"grenade"}; + if (_typeOfProjectile isKindOf "TimeBombCore") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "MineCore") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "FuelExplosion") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "ShellBase") exitWith {"shell"}; + if (_typeOfProjectile isKindOf "RocketBase") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "MissileBase") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "LaserBombCore") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "BombCore") exitWith {"explosive"}; + if (_typeOfProjectile isKindOf "Grenade") exitWith {"grenade"}; + toLower _typeOfProjectile }; - -_typeOfDamage diff --git a/addons/medical/functions/fnc_getUnconsciousCondition.sqf b/addons/medical/functions/fnc_getUnconsciousCondition.sqf index 19d3bdec1d..c354dd6ebd 100644 --- a/addons/medical/functions/fnc_getUnconsciousCondition.sqf +++ b/addons/medical/functions/fnc_getUnconsciousCondition.sqf @@ -14,7 +14,7 @@ #include "script_component.hpp" private ["_unit","_return"]; -_unit = _this select 0; +params ["_unit"]; if (isnil QGVAR(unconsciousConditions)) then { GVAR(unconsciousConditions) = []; @@ -25,6 +25,6 @@ _return = false; if (typeName _x == typeName {} && {([_unit] call _x)}) exitwith { _return = true; }; -}foreach GVAR(unconsciousConditions); +} foreach GVAR(unconsciousConditions); -_return; +_return diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf index a86077cb3b..b617d1e64a 100644 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ b/addons/medical/functions/fnc_handleBandageOpening.sqf @@ -18,15 +18,10 @@ #include "script_component.hpp" -private ["_target", "_impact", "_part", "_injuryIndex", "_injury", "_bandage", "_classID", "_className", "_reopeningChance", "_reopeningMinDelay", "_reopeningMaxDelay", "_config", "_woundTreatmentConfig", "_bandagedWounds", "_exist", "_injuryId", "_existingInjury", "_delay", "_openWounds", "_selectedInjury", "_bandagedInjury"]; -_target = _this select 0; -_impact = _this select 1; -_part = _this select 2; -_injuryIndex = _this select 3; -_injury = _this select 4; -_bandage = _this select 5; +private ["_className", "_reopeningChance", "_reopeningMinDelay", "_reopeningMaxDelay", "_config", "_woundTreatmentConfig", "_bandagedWounds", "_exist", "_injuryId", "_existingInjury", "_delay", "_openWounds", "_selectedInjury", "_bandagedInjury"]; +params ["_target", "_impact", "_part", "_injuryIndex", "_injury", "_bandage"]; -_classID = _injury select 1; +_injury parmas ["_classID", "_injuryType"]; _className = GVAR(woundClassNames) select _classID; // default, just in case.. @@ -58,10 +53,10 @@ if (isClass (_config >> _className)) then { _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []]; _exist = false; -_injuryType = _injury select 1; _bandagedInjury = []; { - if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith { + _x params ["", "_injuryTypeX", "_injuryX"]; + if (_injuryTypeX == _injuryType && _injuryTypeX == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, (_existingInjury select 3) + _impact]; @@ -69,7 +64,7 @@ _bandagedInjury = []; _bandagedInjury = _existingInjury; }; -}foreach _bandagedWounds; +} foreach _bandagedWounds; if !(_exist) then { // [ID, classID, bodypart, percentage treated, bloodloss rate] @@ -83,12 +78,8 @@ _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true]; if (random(1) <= _reopeningChance) then { _delay = _reopeningMinDelay + random(_reopeningMaxDelay - _reopeningMinDelay); [{ - private ["_target", "_impact", "_part", "_injuryIndex", "_bandage", "_injury", "_openWounds", "_selectedInjury","_bandagedWounds","_exist"]; - _target = _this select 0; - _impact = _this select 1; - _part = _this select 2; - _injuryIndex = _this select 3; - _injury = _this select 4; + private ["_bandage", "_openWounds", "_selectedInjury","_bandagedWounds","_exist"]; + params ["_target", "_impact", "_part", "_injuryIndex", "_injury"]; //if (alive _target) then { _openWounds = _target getvariable [QGVAR(openWounds), []]; @@ -102,13 +93,14 @@ if (random(1) <= _reopeningChance) then { _exist = false; _injuryId = _injury select 1; { - if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith { + _x params ["_injuryIdX", "_injuryX"]; + if (_injuryIdX == _injuryId && _injuryX == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, ((_existingInjury select 3) - _impact) max 0]; _bandagedWounds set [_foreachIndex, _existingInjury]; }; - }foreach _bandagedWounds; + } foreach _bandagedWounds; if (_exist) then { _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true]; diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index d7595ec439..31e65218c2 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -1,9 +1,22 @@ -//#define DEBUG_MODE_FULL +/* + * Author: Glowbal + * handle Litter Create + * + * Arguments: + * 0: Litter Class + * 1: Position + * 2: Unit + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" if(!hasInterface) exitWith { false }; -PARAMS_3(_litterClass,_position,_direction); +params ["_litterClass", "_position", "_unit"]; private["_litterObject", "_maxLitterCount"]; //IGNORE_PRIVATE_WARNING(_values); @@ -16,9 +29,9 @@ _litterObject = _litterClass createVehicleLocal _position; _litterObject setDir _direction; _litterObject setPosATL _position; // Move the litter next frame to get rid of HORRIBLE spacing, fixes #1112 -[{ (_this select 0) setPosATL (_this select 1); }, [_litterObject, _position]] call EFUNC(common,execNextFrame); - -_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); +[{ params ["_object", "_pos"]; _object setPosATL _pos; }, [_litterObject, _position]] call EFUNC(common,execNextFrame); + +_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then { // gank the first litter object, and spawn ours. private["_oldLitter"]; @@ -34,10 +47,11 @@ if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then { GVAR(litterPFHRunning) = true; [{ { - if (ACE_time - (_x select 0) >= GVAR(litterCleanUpDelay)) then { + _x params ["_time", "_objects"]; + if (ACE_time - _time >= GVAR(litterCleanUpDelay)) then { { deleteVehicle _x; - } forEach (_x select 1); + } forEach _objects; GVAR(allCreatedLitter) set[_foreachIndex, objNull]; }; } forEach GVAR(allCreatedLitter); @@ -46,8 +60,6 @@ if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then { if ( (count GVAR(allCreatedLitter)) == 0) exitwith { [(_this select 1)] call CBA_fnc_removePerFrameHandler; GVAR(litterPFHRunning) = false; - }; + }; }, 30, []] call CBA_fnc_addPerFrameHandler; }; - -true \ No newline at end of file diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index a4e5525276..a3dea00235 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -17,12 +17,8 @@ #include "script_component.hpp" -private ["_unit", "_selection", "_damage", "_shooter", "_projectile", "_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_typeIndex", "_preventDeath"]; -_unit = _this select 0; -_selection = _this select 1; -_damage = _this select 2; -_shooter = _this select 3; -_projectile = _this select 4; +private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_typeIndex", "_preventDeath"]; +params ["_unit", "_selection", "_damage", "_shooter", "_projectile"]; if !(local _unit) exitWith {nil}; @@ -53,7 +49,6 @@ if (GVAR(level) < 2) then { }; _newDamage = _this call FUNC(handleDamage_caching); // handleDamage_caching may have modified the projectile string - _projectile = _this select 4; _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); @@ -123,4 +118,4 @@ if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_dam 0.89; }; -_damageReturn; +_damageReturn diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index e617738a90..f1ba5cc6f0 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -12,20 +12,15 @@ * 6: Type of Damage * * Return Value: - * Nothing + * None * * Public: No */ #include "script_component.hpp" -private ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage", "_part", "_damageBodyParts", "_newDamage", "_hitPoints"]; -_unit = _this select 0; -_selectionName = _this select 1; -_amountOfDamage = _this select 2; -_sourceOfDamage = _this select 3; -_typeOfProjectile = _this select 4; -_newDamage = _this select 5; +private ["_typeOfProjectile", "_part", "_damageBodyParts", "_hitPoints"]; +params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage", "_newDamage"]; // Most likely taking exessive fire damage. Lets exit. if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {}; diff --git a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf b/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf index 3df8a5ce0c..dc1e1a6fea 100644 --- a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf @@ -6,14 +6,14 @@ * 0: Unit for which the hitpoint damage will be sorted out * * Return Value: - * nil + * None * * Public: No */ #include "script_component.hpp" -PARAMS_1(_unit); +params ["_unit"]; if (!local _unit) exitwith {}; @@ -22,7 +22,7 @@ private ["_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDam // ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"] _bodyStatus = _unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; -EXPLODE_6_PVT(_bodyStatus,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); +_bodyStatus params ["_headDamage", "_torsoDamage", "_handsDamageR", "_handsDamageL", "_legsDamageR", "_legsDamageL"] _unit setHitPointDamage ["hitHead", _headDamage min 0.95]; _unit setHitPointDamage ["hitBody", _torsoDamage min 0.95]; diff --git a/addons/medical/functions/fnc_handleDamage_airway.sqf b/addons/medical/functions/fnc_handleDamage_airway.sqf index bc220eaad9..8b627faae1 100644 --- a/addons/medical/functions/fnc_handleDamage_airway.sqf +++ b/addons/medical/functions/fnc_handleDamage_airway.sqf @@ -10,19 +10,15 @@ * 4: Type of the damage done * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage", "_bodyPartn"]; -_unit = _this select 0; -_selectionName = _this select 1; -_amountOfDamage = _this select 2; -_sourceOfDamage = _this select 3; -_typeOfDamage = _this select 4; +private "_bodyPartn"; +params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; _bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); if (_bodyPartn > 1) exitwith {}; diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index 04049cfa7c..83563ad92a 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -24,13 +24,8 @@ #define ARMDAMAGETRESHOLD2 1.7 #define UNCONSCIOUSNESSTRESHOLD 0.7 -private ["_unit", "_selectionName", "_damage", "_shooter", "_projectile", "_damage", "_armdamage", "_hitPoint", "_index", "_legdamage", "_newDamage", "_otherDamage", "_pain", "_restore"]; - -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_shooter = _this select 3; -_projectile = _this select 4; +private ["_damage", "_armdamage", "_hitPoint", "_index", "_legdamage", "_newDamage", "_otherDamage", "_pain", "_restore"]; +params ["_unit", "_selectionName", "_damage", "_shooter", "_projectile"]; // Apply damage treshold / coefficient _threshold = [ @@ -52,8 +47,10 @@ if (diag_frameno > (_unit getVariable [QGVAR(basic_frameNo), -3]) + 2) then { if (isnil {_unit getvariable QGVAR(structDamagePFH)}) then { // Assign orphan structural damage to torso [{ - private ["_unit", "_damagesum"]; - _unit = (_this select 0) select 0; + private "_damagesum"; + params ["_args", "_idPFH"]; + _args params ["_unit"]; + if (ACE_diagTime - (_unit getvariable [QGVAR(structDamagePFH),-2]) >= 2) then { _unit setVariable [QGVAR(structDamagePFH), nil]; _damagesum = (_unit getHitPointDamage "HitHead") + @@ -65,7 +62,7 @@ if (diag_frameno > (_unit getVariable [QGVAR(basic_frameNo), -3]) + 2) then { if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then { _unit setHitPointDamage ["HitBody", damage _unit]; }; - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_unit]] call CBA_fnc_addPerFrameHandler; }; diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index 99816ee274..9d31e53b1e 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -18,12 +18,8 @@ #include "script_component.hpp" -private ["_unit", "_selectionName", "_damage", "_source", "_projectile", "_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"]; -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_source = _this select 3; -_projectile = _this select 4; +private ["_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"]; +params ["_unit", "_selectionName", "_damage", "_source", "_projectile"]; _hitSelections = GVAR(SELECTIONS); _hitPoints = GVAR(HITPOINTS); @@ -78,21 +74,21 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t // handle the cached damages 3 frames later [{ private ["_args", "_params"]; - _args = _this select 0; + params ["_args", "_idPFH"]; + params ["_unit", "_frameno"]; + if (diag_frameno > _frameno + 2) then { + _unit setDamage 0; - if (diag_frameno > (_args select 1) + 2) then { - (_args select 0) setDamage 0; - - _cache_params = (_args select 0) getVariable [QGVAR(cachedHandleDamageParams), []]; - _cache_damages = (_args select 0) getVariable QGVAR(cachedDamages); + _cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []]; + _cache_damages = _unit getVariable QGVAR(cachedDamages); { _params = _x + [_cache_damages select _foreachIndex]; _params call FUNC(handleDamage_advanced); - }foreach _cache_params; + } foreach _cache_params; - [(_args select 0)] call FUNC(handleDamage_advancedSetDamage); + [_unit] call FUNC(handleDamage_advancedSetDamage); - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; @@ -152,4 +148,4 @@ if (_selectionName != "") then { _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; }; -_newDamage; +_newDamage diff --git a/addons/medical/functions/fnc_handleDamage_fractures.sqf b/addons/medical/functions/fnc_handleDamage_fractures.sqf index 31fa1c8873..46000dbbdf 100644 --- a/addons/medical/functions/fnc_handleDamage_fractures.sqf +++ b/addons/medical/functions/fnc_handleDamage_fractures.sqf @@ -17,12 +17,8 @@ #include "script_component.hpp" -private ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage", "_bodyPartn", "_fractures", "_fractureType"]; -_unit = _this select 0; -_selectionName = _this select 1; -_amountOfDamage = _this select 2; -_sourceOfDamage = _this select 3; -_typeOfDamage = _this select 4; +private ["_bodyPartn", "_fractures", "_fractureType"]; +params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; _bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); _fractureType = 1; diff --git a/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf b/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf index 6ee256a977..d8d9be1506 100644 --- a/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf +++ b/addons/medical/functions/fnc_handleDamage_internalInjuries.sqf @@ -10,19 +10,15 @@ * 4: Type of the damage done * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage", "_bodyPartn"]; -_unit = _this select 0; -_selectionName = _this select 1; -_amountOfDamage = _this select 2; -_sourceOfDamage = _this select 3; -_typeOfDamage = _this select 4; +private "_bodyPartn"; +params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage"]; _bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); // TODO implement internal injuries diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 70eeb74f9d..5711d903de 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -10,19 +10,15 @@ * 4: Type of the damage done * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage", "_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_typeOfProjectile = _this select 3; -_typeOfDamage = _this select 4; +private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; +params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; // Administration for open wounds and ids _openWounds = _unit getvariable[QGVAR(openWounds), []]; @@ -36,14 +32,13 @@ _woundsCreated = []; call compile _extensionOutput; _foundIndex = -1; { - _toAddClassID = _x select 1; - _bodyPartNToAdd = _x select 2; + _x params ["_toAddClassID", "_bodyPartNToAdd"]; { // Check if we have an id of the given class on the given bodypart already if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { _foundIndex = _foreachIndex; }; - }foreach _openWounds; + } foreach _openWounds; if (_foundIndex < 0) then { // Since it is a new injury, we will have to add it to the open wounds array to store it @@ -53,7 +48,7 @@ _foundIndex = -1; _injury = _openWounds select _foundIndex; _injury set [3, (_injury select 3) + 1]; }; -}foreach _woundsCreated; +} foreach _woundsCreated; _unit setvariable [QGVAR(openWounds), _openWounds, true]; diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf index 1034ba9cae..0c08d1e884 100644 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -17,12 +17,8 @@ #include "script_component.hpp" -private ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage", "_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_typeOfProjectile = _this select 3; -_typeOfDamage = _this select 4; +private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; +params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; // Convert the selectionName to a number and ensure it is a valid selection. _bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); @@ -70,7 +66,7 @@ _allPossibleInjuries = []; _allPossibleInjuries pushback _x; }; }; -}foreach _allInjuriesForDamageType; +} foreach _allInjuriesForDamageType; // No possible wounds available for this damage type or damage amount. if (_highestPossibleSpot < 0) exitwith {}; @@ -98,7 +94,7 @@ _woundsCreated = []; if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { _foundIndex = _foreachIndex; }; - }foreach _openWounds; + } foreach _openWounds; }; _injury = []; @@ -123,7 +119,7 @@ _woundsCreated = []; _painToAdd = _painToAdd + (_toAddInjury select 3); }; }; -}foreach (_injuryTypeInfo select 0); // foreach damage thresholds +} foreach (_injuryTypeInfo select 0); // foreach damage thresholds _unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; diff --git a/addons/medical/functions/fnc_handleKilled.sqf b/addons/medical/functions/fnc_handleKilled.sqf index 5003ec189c..d4fbfee30a 100644 --- a/addons/medical/functions/fnc_handleKilled.sqf +++ b/addons/medical/functions/fnc_handleKilled.sqf @@ -13,8 +13,8 @@ #include "script_component.hpp" -private["_unit", "_openWounds"]; -_unit = _this select 0; +private "_openWounds"; +params ["_unit"]; if (!local _unit) exitwith {}; _unit setvariable [QGVAR(pain), 0]; diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf index c0f9c15292..50a30e90e8 100644 --- a/addons/medical/functions/fnc_handleLocal.sqf +++ b/addons/medical/functions/fnc_handleLocal.sqf @@ -15,9 +15,7 @@ #include "script_component.hpp" -private["_unit", "_local"]; -_unit = _this select 0; -_local = _this select 1; +params ["_unit", "_local"]; if (_local) then { if (_unit getvariable[QGVAR(addedToUnitLoop),false]) then { [_unit, true] call FUNC(addToInjuredCollection); diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 0c7113f69a..cbb8f6fdcc 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -13,9 +13,8 @@ #include "script_component.hpp" -private ["_unit", "_heartRate","_bloodPressure","_bloodVolume","_painStatus", "_lastTimeValuesSynced", "_syncValues", "_airwayStatus", "_blood", "_bloodPressureH", "_bloodPressureL", "_interval"]; -_unit = _this select 0; -_interval = _this select 1; +private ["_heartRate","_bloodPressure","_bloodVolume","_painStatus", "_lastTimeValuesSynced", "_syncValues", "_airwayStatus", "_blood"]; +params ["_unit", "_interval"]; if (_interval == 0) exitWith {}; @@ -140,8 +139,7 @@ if (GVAR(level) >= 2) then { // Check vitals for medical status // TODO check for in revive state instead of variable - _bloodPressureL = _bloodPressure select 0; - _bloodPressureH = _bloodPressure select 1; + _bloodPressure params ["_bloodPressureL", "_bloodPressureH"]; if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then { if (_heartRate < 10 || _bloodPressureH < 30 || _bloodVolume < 20) then { @@ -180,6 +178,6 @@ if (GVAR(level) >= 2) then { if !(isnil "_value") then { _unit setvariable [_x,(_unit getvariable [_x, 0]), true]; }; - }foreach GVAR(IVBags); + } foreach GVAR(IVBags); }; }; diff --git a/addons/medical/functions/fnc_hasItem.sqf b/addons/medical/functions/fnc_hasItem.sqf index cfec633b55..df1a3828f5 100644 --- a/addons/medical/functions/fnc_hasItem.sqf +++ b/addons/medical/functions/fnc_hasItem.sqf @@ -16,19 +16,17 @@ #include "script_component.hpp" private ["_medic", "_patient", "_item", "_return", "_crew"]; -_medic = _this select 0; -_patient = _this select 1; -_item = _this select 2; +params ["_medic", "_patient", "_item"]; if (isnil QGVAR(setting_allowSharedEquipment)) then { GVAR(setting_allowSharedEquipment) = true; }; if (GVAR(setting_allowSharedEquipment) && {[_patient, _item] call EFUNC(common,hasItem)}) exitwith { - true; + true }; if ([_medic, _item] call EFUNC(common,hasItem)) exitwith { - true; + true }; _return = false; @@ -38,7 +36,7 @@ if ((vehicle _medic != _medic) && {[vehicle _medic] call FUNC(isMedicalVehicle)} if ([_medic, _x] call FUNC(canAccessMedicalEquipment) && {([_x, _item] call EFUNC(common,hasItem))}) exitwith { _return = true; }; - }foreach _crew; + } foreach _crew; }; -_return; +_return diff --git a/addons/medical/functions/fnc_hasItems.sqf b/addons/medical/functions/fnc_hasItems.sqf index ea16edebc4..dd53cb3337 100644 --- a/addons/medical/functions/fnc_hasItems.sqf +++ b/addons/medical/functions/fnc_hasItems.sqf @@ -16,9 +16,7 @@ #include "script_component.hpp" private ["_medic", "_patient", "_items", "_return"]; -_medic = _this select 0; -_patient = _this select 1; -_items = _this select 2; +params ["_medic", "_patient", "_items"]; _return = true; { @@ -31,4 +29,4 @@ _return = true; }; }foreach _items; -_return; +_return diff --git a/addons/medical/functions/fnc_hasMedicalEnabled.sqf b/addons/medical/functions/fnc_hasMedicalEnabled.sqf index 63fddd16b4..cbf40078fd 100644 --- a/addons/medical/functions/fnc_hasMedicalEnabled.sqf +++ b/addons/medical/functions/fnc_hasMedicalEnabled.sqf @@ -1,21 +1,27 @@ -/** - * fn_hasMedicalEnabled.sqf - * @Descr: Check if unit has CMS enabled. - * @Author: Glowbal - * - * @Arguments: [unit OBJECT] - * @Return: BOOL - * @PublicAPI: true - */ +/* + * Author: Glowbal + * Check if unit has CMS enabled + * + * Arguments: + * 0: unit + * + * Return Value: + * enabled + * + * Example: + * [Unit] call ace_medical_fnc_hasMedicalEnabled + * + * Public: No + */ #include "script_component.hpp" -private ["_unit", "_medicalEnabled"]; -_unit = _this select 0; +private "_medicalEnabled"; +params ["_unit"]; _medicalEnabled = _unit getvariable QGVAR(enableMedical); if (isnil "_medicalEnabled") exitwith { - (((GVAR(enableFor) == 0 && (isPlayer _unit || (_unit getvariable [QEGVAR(common,isDeadPlayer), false])))) || (GVAR(enableFor) == 1) || GVAR(level) == 1); + (((GVAR(enableFor) == 0 && (isPlayer _unit || (_unit getvariable [QEGVAR(common,isDeadPlayer), false])))) || (GVAR(enableFor) == 1) || GVAR(level) == 1) }; -_medicalEnabled; +_medicalEnabled diff --git a/addons/medical/functions/fnc_hasTourniquetAppliedTo.sqf b/addons/medical/functions/fnc_hasTourniquetAppliedTo.sqf index 6183854e45..955665233a 100644 --- a/addons/medical/functions/fnc_hasTourniquetAppliedTo.sqf +++ b/addons/medical/functions/fnc_hasTourniquetAppliedTo.sqf @@ -14,8 +14,6 @@ #include "script_component.hpp" -private ["_target", "_selectionName"]; -_target = _this select 0; -_selectionName = _this select 1; +params ["_target", "_selectionName"]; (((_target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]) select ([_selectionName] call FUNC(selectionNameToNumber))) > 0); diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf index 27d80163a5..fe8715c352 100644 --- a/addons/medical/functions/fnc_init.sqf +++ b/addons/medical/functions/fnc_init.sqf @@ -13,9 +13,8 @@ #include "script_component.hpp" -private ["_unit", "_allUsedMedication", "_logs"]; - -_unit = _this select 0; +private ["_allUsedMedication", "_logs"]; +params ["_unit"]; _unit setVariable [QGVAR(pain), 0, true]; _unit setVariable [QGVAR(morphine), 0, true]; diff --git a/addons/medical/functions/fnc_isBeingCarried.sqf b/addons/medical/functions/fnc_isBeingCarried.sqf index 6505f8b51a..b47c5e475f 100644 --- a/addons/medical/functions/fnc_isBeingCarried.sqf +++ b/addons/medical/functions/fnc_isBeingCarried.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_target); +params ["_target"]; private "_owner"; diff --git a/addons/medical/functions/fnc_isBeingDragged.sqf b/addons/medical/functions/fnc_isBeingDragged.sqf index 4d09ed9e29..929b48ccb7 100644 --- a/addons/medical/functions/fnc_isBeingDragged.sqf +++ b/addons/medical/functions/fnc_isBeingDragged.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -PARAMS_1(_target); +params ["_target"]; private "_owner"; diff --git a/addons/medical/functions/fnc_isInMedicalFacility.sqf b/addons/medical/functions/fnc_isInMedicalFacility.sqf index bed660a46a..34f1cf4244 100644 --- a/addons/medical/functions/fnc_isInMedicalFacility.sqf +++ b/addons/medical/functions/fnc_isInMedicalFacility.sqf @@ -13,8 +13,8 @@ #include "script_component.hpp" -private ["_unit","_eyePos","_objects","_isInBuilding","_medicalFacility"]; -_unit = _this select 0; +private ["_eyePos", "_objects", "_isInBuilding", "_medicalFacility"]; +params ["_unit"]; _eyePos = eyePos _unit; _isInBuilding = false; @@ -42,13 +42,13 @@ _objects = (lineIntersectsWith [_unit modelToWorldVisual [0, 0, (_eyePos select if (((typeOf _x) in _medicalFacility) || (_x getVariable [QGVAR(isMedicalFacility),false])) exitwith { _isInBuilding = true; }; -}foreach _objects; +} foreach _objects; if (!_isInBuilding) then { _objects = position _unit nearObjects 7.5; { if (((typeOf _x) in _medicalFacility) || (_x getVariable [QGVAR(isMedicalFacility),false])) exitwith { _isInBuilding = true; }; - }foreach _objects; + } foreach _objects; }; _isInBuilding; diff --git a/addons/medical/functions/fnc_isInMedicalVehicle.sqf b/addons/medical/functions/fnc_isInMedicalVehicle.sqf index d376ce3824..1f1ff193fd 100644 --- a/addons/medical/functions/fnc_isInMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_isInMedicalVehicle.sqf @@ -13,9 +13,8 @@ #include "script_component.hpp" -private ["_unit", "_vehicle"]; - -_unit = _this select 0; +private ["_vehicle"]; +params ["_unit"]; _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {false}; diff --git a/addons/medical/functions/fnc_isInStableCondition.sqf b/addons/medical/functions/fnc_isInStableCondition.sqf index f7c22ed085..763185640c 100644 --- a/addons/medical/functions/fnc_isInStableCondition.sqf +++ b/addons/medical/functions/fnc_isInStableCondition.sqf @@ -13,8 +13,8 @@ #include "script_component.hpp" -private ["_unit"]; -_unit = _this select 0; +private ["_openWounds", "_openWounds"]; +params ["_unit"]; if (GVAR(level) <= 1) exitwith { ([_unit] call FUNC(getBloodloss)) == 0; @@ -25,6 +25,6 @@ _openWounds = _unit getvariable [QGVAR(openWounds), []]; { // total bleeding ratio * percentage of injury left _totalBloodLoss = _totalBloodLoss + ((_x select 4) * (_x select 3)); -}foreach _openWounds; +} foreach _openWounds; (_totalBloodLoss == 0); diff --git a/addons/medical/functions/fnc_isMedic.sqf b/addons/medical/functions/fnc_isMedic.sqf index 122d261238..ca974fb751 100644 --- a/addons/medical/functions/fnc_isMedic.sqf +++ b/addons/medical/functions/fnc_isMedic.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: The Unit - * 1: Class + * 1: Class (default: 1) * * ReturnValue: * Is in of medic class @@ -15,8 +15,7 @@ #include "script_component.hpp" private ["_unit", "_class", "_medicN"]; -_unit = _this select 0; -_medicN = if (count _this > 1) then {_this select 1} else {1}; +params ["_unit", ["_medicN", 1]]; _class = _unit getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _unit >> "attendant")]; diff --git a/addons/medical/functions/fnc_isMedicalVehicle.sqf b/addons/medical/functions/fnc_isMedicalVehicle.sqf index 5e9283852f..14499cb241 100644 --- a/addons/medical/functions/fnc_isMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_isMedicalVehicle.sqf @@ -12,7 +12,6 @@ */ #include "script_component.hpp" -private ["_vehicle"]; -_vehicle = _this select 0; +params ["_vehicle"]; (_vehicle getVariable [QGVAR(medicClass), getNumber (configFile >> "CfgVehicles" >> typeOf _vehicle >> "attendant")]) > 0 diff --git a/addons/medical/functions/fnc_itemCheck.sqf b/addons/medical/functions/fnc_itemCheck.sqf index c903417dfc..d49e04e774 100644 --- a/addons/medical/functions/fnc_itemCheck.sqf +++ b/addons/medical/functions/fnc_itemCheck.sqf @@ -6,15 +6,14 @@ * 0: The unit * * ReturnValue: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_unit"]; -_unit = _this select 0; +params ["_unit"]; while {({_x == "FirstAidKit"} count items _unit) > 0} do { _unit removeItem "FirstAidKit"; diff --git a/addons/medical/functions/fnc_modifyMedicalAction.sqf b/addons/medical/functions/fnc_modifyMedicalAction.sqf index 268ba8e253..1ac709059f 100644 --- a/addons/medical/functions/fnc_modifyMedicalAction.sqf +++ b/addons/medical/functions/fnc_modifyMedicalAction.sqf @@ -10,14 +10,15 @@ * 3: The action to modify * * ReturnValue: - * nil + * None * * Public: No */ #include "script_component.hpp" -EXPLODE_4_PVT(_this,_target,_player,_selectionN,_actionData); +params ["_target", "_player", "_selectionN", "_actionData"]; + if (GVAR(level) < 2) exitwith { private ["_pointDamage"]; _pointDamage = _target getHitPointDamage (["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"] select _selectionN); @@ -33,8 +34,8 @@ if (GVAR(level) < 2) exitwith { private ["_openWounds", "_amountOf"]; _openWounds = _target getvariable [QGVAR(openWounds), []]; { - _amountOf = _x select 3; - if (_amountOf > 0 && {(_selectionN == (_x select 2))} && {(_x select 4) > 0}) exitwith { + _x params ["", "", "_selectionX", "_amountOf", "_x4"]; + if (_amountOf > 0 && {(_selectionN == _selectionX)} && {_x4 > 0}) exitwith { _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))]; }; } foreach _openWounds; diff --git a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf b/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf index 2960c65b9d..b54196d75f 100644 --- a/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf +++ b/addons/medical/functions/fnc_moduleAdvancedMedicalSettings.sqf @@ -8,17 +8,14 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; diff --git a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf b/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf index 1c26eb53d4..e295c55a2e 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf @@ -8,15 +8,15 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_logic","_setting","_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +private ["_setting", "_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; +params [["_logic", objNull, [objNull]]]; if (!isNull _logic) then { _list = _logic getvariable ["EnableList",""]; @@ -32,7 +32,7 @@ if (!isNull _logic) then { _nilCheckPassedList = _nilCheckPassedList + ","+ _x; }; }; - }foreach _splittedList; + } foreach _splittedList; _list = "[" + _nilCheckPassedList + "]"; _parsedList = [] call compile _list; @@ -47,7 +47,7 @@ if (!isNull _logic) then { }; }; }; - }foreach _objects; + } foreach _objects; }; { if (!isnil "_x") then { @@ -57,7 +57,5 @@ if (!isNull _logic) then { }; }; }; - }foreach _parsedList; + } foreach _parsedList; }; - -true \ No newline at end of file diff --git a/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf b/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf index c08d737f4b..7a219f2559 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalFacility.sqf @@ -8,15 +8,15 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_logic","_setting","_objects"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +private ["_setting", "_objects"]; +params [["_logic", objNull, [objNull]]]; if (!isNull _logic) then { _setting = _logic getvariable ["class",0]; _objects = synchronizedObjects _logic; @@ -24,7 +24,7 @@ if (!isNull _logic) then { if (local _x) then { _x setvariable[QGVAR(isMedicalFacility), true, true]; }; - }foreach _objects; + } foreach _objects; }; true; diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf index af6de73ce1..9744ce5f7b 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf @@ -8,7 +8,7 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ @@ -16,8 +16,8 @@ #include "script_component.hpp" -private ["_logic","_setting","_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +private ["_setting", "_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; +params [["_logic", objNull, [objNull]]]; if (!isNull _logic) then { _list = _logic getvariable ["EnableList",""]; @@ -33,7 +33,7 @@ if (!isNull _logic) then { _nilCheckPassedList = _nilCheckPassedList + ","+ _x; }; }; - }foreach _splittedList; + } foreach _splittedList; _list = "[" + _nilCheckPassedList + "]"; _parsedList = [] call compile _list; @@ -48,7 +48,7 @@ if (!isNull _logic) then { }; }; }; - }foreach _objects; + } foreach _objects; }; { if (!isnil "_x") then { @@ -58,7 +58,5 @@ if (!isNull _logic) then { }; }; }; - }foreach _parsedList; + } foreach _parsedList; }; - -true; diff --git a/addons/medical/functions/fnc_moduleMedicalSettings.sqf b/addons/medical/functions/fnc_moduleMedicalSettings.sqf index 00b7a15fcf..4e1af0e86c 100644 --- a/addons/medical/functions/fnc_moduleMedicalSettings.sqf +++ b/addons/medical/functions/fnc_moduleMedicalSettings.sqf @@ -8,17 +8,14 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; diff --git a/addons/medical/functions/fnc_moduleReviveSettings.sqf b/addons/medical/functions/fnc_moduleReviveSettings.sqf index c96b1eb67c..19aa9579dd 100644 --- a/addons/medical/functions/fnc_moduleReviveSettings.sqf +++ b/addons/medical/functions/fnc_moduleReviveSettings.sqf @@ -8,17 +8,14 @@ * 2: activated * * Return Value: - * None + * None * * Public: No */ #include "script_component.hpp" -private ["_logic", "_units", "_activated"]; -_logic = _this select 0; -_units = _this select 1; -_activated = _this select 2; +params ["_logic", "_units", "_activated"]; if !(_activated) exitWith {}; diff --git a/addons/medical/functions/fnc_onMedicationUsage.sqf b/addons/medical/functions/fnc_onMedicationUsage.sqf index 904ad3ef88..d71896b6f0 100644 --- a/addons/medical/functions/fnc_onMedicationUsage.sqf +++ b/addons/medical/functions/fnc_onMedicationUsage.sqf @@ -11,28 +11,21 @@ * 5: Incompatable medication > * * Return Value: - * NONE + * None * * Public: No */ #include "script_component.hpp" -private ["_target", "_className", "_variable", "_maxDosage", "_timeInSystem", "_incompatabileMeds", "_foundEntry", "_allUsedMedication","_allMedsFromClassname", "_usedMeds", "_hasOverDosed", "_med", "_limit", "_classNamesUsed", "_decreaseAmount", "_viscosityChange", "_viscosityAdjustment", "_medicationConfig", "_onOverDose", "_painReduce"]; -_target = _this select 0; -_className = _this select 1; -_variable = _this select 2; -_maxDosage = _this select 3; -_timeInSystem = _this select 4; -_incompatabileMeds = _this select 5; -_viscosityChange = _this select 6; -_painReduce = _this select 7; +private ["_foundEntry", "_allUsedMedication","_allMedsFromClassname", "_usedMeds", "_hasOverDosed", "_med", "_limit", "_decreaseAmount", "_viscosityAdjustment", "_medicationConfig", "_onOverDose"]; +params ["_target", "_className", "_variable", "_maxDosage", "_timeInSystem", "_incompatabileMeds", "_viscosityChange", "_painReduce"]; _foundEntry = false; _allUsedMedication = _target getvariable [QGVAR(allUsedMedication), []]; { - if (_x select 0 == _variable) exitwith { - _allMedsFromClassname = _x select 1; + _x params ["_variableX", "_allMedsFromClassname"]; + if (_variableX== _variable) exitwith { if !(_className in _allMedsFromClassname) then { _allMedsFromClassname pushback _className; _x set [1, _allMedsFromClassname]; @@ -56,15 +49,14 @@ if (_usedMeds >= floor (_maxDosage + round(random(2))) && _maxDosage >= 1 && GVA _hasOverDosed = 0; { - _med = _x select 0; - _limit = _x select 1; + _x params ["_med", "_limit"]; { - _classNamesUsed = _x select 1; + _x params ["", "_classNamesUsed"]; if ({_x == _med} count _classNamesUsed > _limit) then { _hasOverDosed = _hasOverDosed + 1; }; - }foreach _allUsedMedication; -}foreach _incompatabileMeds; + } foreach _allUsedMedication; +} foreach _incompatabileMeds; if (_hasOverDosed > 0 && GVAR(enableOverdosing)) then { _medicationConfig = (configFile >> "ACE_Medical_Advanced" >> "Treatment" >> "Medication"); @@ -85,16 +77,8 @@ _decreaseAmount = 1 / _timeInSystem; _viscosityAdjustment = _viscosityChange / _timeInSystem; [{ - private ["_args", "_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_usedMeds", "_viscosityAdjustment", "_painReduce"]; - _args = _this select 0; - _target = _args select 0; - _timeInSystem = _args select 1; - _variable = _args select 2; - _amountDecreased = _args select 3; - _decreaseAmount = _args select 4; - _viscosityAdjustment = _args select 5; - _painReduce = _args select 6; - + params ["_args", "_idPFH"]; + _args params ["_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_usedMeds", "_viscosityAdjustment", "_painReduce"]; _usedMeds = _target getvariable [_variable, 0]; _usedMeds = _usedMeds - _decreaseAmount; _target setvariable [_variable, _usedMeds]; @@ -106,7 +90,7 @@ _viscosityAdjustment = _viscosityChange / _timeInSystem; _target setvariable [QGVAR(painSuppress), ((_target getvariable [QGVAR(painSuppress), 0]) - _painReduce) max 0]; if (_amountDecreased >= 1 || (_usedMeds <= 0) || !alive _target) then { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; _args set [3, _amountDecreased]; }, 1, [_target, _timeInSystem, _variable, 0, _decreaseAmount, _viscosityAdjustment, _painReduce / _timeInSystem] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_onPropagateWound.sqf b/addons/medical/functions/fnc_onPropagateWound.sqf index 934899eac4..f8b361ad17 100644 --- a/addons/medical/functions/fnc_onPropagateWound.sqf +++ b/addons/medical/functions/fnc_onPropagateWound.sqf @@ -7,7 +7,7 @@ * 1: injury * * Return Value: - * None + * None * * Public: No */ @@ -15,8 +15,7 @@ #include "script_component.hpp" private ["_unit", "_injury", "_openWounds", "_injuryID", "_exists"]; -_unit = _this select 0; -_injury = _this select 1; +params ["_unit", "_injury"]; if (!local _unit) then { _openWounds = _unit getvariable[QGVAR(openWounds), []]; @@ -28,7 +27,7 @@ if (!local _unit) then { _exists = true; _openWounds set [_foreachIndex, _injury]; }; - }foreach _openWounds; + } foreach _openWounds; if (!_exists) then { _openWounds pushback _injury; diff --git a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf index 3c99496d7b..091bea7ef8 100644 --- a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf +++ b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf @@ -7,19 +7,18 @@ * 1: Origin object * * ReturnValue: - * + * None * * Public: Yes */ #include "script_component.hpp" private ["_unit", "_openWounds", "_originOfrequest"]; -_unit = _this select 0; -_originOfrequest = _this select 1; +params ["_unit", "_originOfrequest"]; if (local _unit && !(local _originOfrequest)) then { _openWounds = _unit getvariable [QGVAR(openWounds), []]; { ["medical_propagateWound", [_originOfrequest], [_unit, _x]] call EFUNC(common,targetEvent); - }foreach _openWounds; + } foreach _openWounds; }; diff --git a/addons/medical/functions/fnc_parseConfigForInjuries.sqf b/addons/medical/functions/fnc_parseConfigForInjuries.sqf index 1b2db7c278..e72ec63969 100644 --- a/addons/medical/functions/fnc_parseConfigForInjuries.sqf +++ b/addons/medical/functions/fnc_parseConfigForInjuries.sqf @@ -3,9 +3,9 @@ * Parse the ACE_Medical_Advanced config for all injury types. * * Arguments: - * + * None * ReturnValue: - * + * None * * Public: No */ @@ -110,7 +110,7 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); if (_type in (_x select 5)) then { _woundTypes pushback _x; }; - }foreach _allWoundClasses; + } foreach _allWoundClasses; _typeThresholds = _thresholds; _selectionSpecificType = _selectionSpecific; if (isClass(_damageTypesConfig >> _x)) then { @@ -130,46 +130,41 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); _minDamageThresholds = _minDamageThresholds + ":"; _amountThresholds = _amountThresholds + ":"; }; - }foreach _typeThresholds; + } foreach _typeThresholds; "ace_medical" callExtension format ["addDamageType,%1,%2,%3,%4,%5", _type, GVAR(minLethalDamages) select _foreachIndex, _minDamageThresholds, _amountThresholds, _selectionSpecificType]; -}foreach _allFoundDamageTypes; +} foreach _allFoundDamageTypes; // Extension loading { - private ["_classID", "_className", "_allowedSelections", "_bloodLoss", "_pain", "_minDamage", "_maxDamage", "_causes", "_classDisplayName", "_extensionInput", "_selections", "_causesArray"]; + private ["_className", "_allowedSelections", "_causes"]; // add shit to addInjuryType - _classID = _x select 0; + params ["_classID", "_selections", "_bloodLoss", "_pain", "_damage", "_causesArray", "_classDisplayName"]; + _damage params ["_minDamage", "_maxDamage"]; _className = GVAR(woundClassNames) select _forEachIndex; _allowedSelections = ""; - _selections = _x select 1; { _allowedSelections = _allowedSelections + _x; if (_forEachIndex < (count _selections) - 1) then { _allowedSelections = _allowedSelections + ":"; }; - }foreach _selections; + } foreach _selections; - _bloodLoss = _x select 2; - _pain = _x select 3; - _minDamage = (_x select 4) select 0; - _maxDamage = (_x select 4) select 1; _causes = ""; - _causesArray = (_x select 5); + { _causes = _causes + _x; if (_forEachIndex < (count _causesArray) - 1) then { _causes = _causes + ":"; }; - }foreach _causesArray; - _classDisplayName = _x select 6; + } foreach _causesArray; "ace_medical" callExtension format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; -}foreach _allWoundClasses; +} foreach _allWoundClasses; "ace_medical" callExtension "ConfigComplete"; diff --git a/addons/medical/functions/fnc_playInjuredSound.sqf b/addons/medical/functions/fnc_playInjuredSound.sqf index 3d41ec70db..ddf107c840 100644 --- a/addons/medical/functions/fnc_playInjuredSound.sqf +++ b/addons/medical/functions/fnc_playInjuredSound.sqf @@ -6,9 +6,10 @@ * * Arguments: * 0: The Unit + * 1: Amount of Pain * * ReturnValue: - * + * None * * Public: No */ @@ -16,8 +17,7 @@ #include "script_component.hpp" private ["_unit","_availableSounds_A","_availableSounds_B","_availableSounds_C","_sound", "_pain"]; -_unit = _this select 0; -_pain = _this select 1; +params ["_unit", "_pain"]; if (!local _unit || !GVAR(enableScreams)) exitwith{}; // Lock if the unit is already playing a sound. diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index c33d83bb40..b28e1cd679 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -35,11 +35,11 @@ _timeInCardiacArrest = 120 + round(random(600)); _heartRate = _unit getvariable [QGVAR(heartRate), 80]; if (_heartRate > 0 || !alive _unit) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inCardiacArrest), nil,true]; }; if (ACE_time - _startTime >= _timeInCardiacArrest) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inCardiacArrest), nil,true]; [_unit] call FUNC(setDead); }; diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index c29edcd5e3..e2884da391 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -50,7 +50,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == _startTime = _unit getvariable [QGVAR(reviveStartTime), 0]; if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inReviveState), nil, true]; _unit setvariable [QGVAR(reviveStartTime), nil]; [_unit, true] call FUNC(setDead); @@ -64,7 +64,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == }; _unit setvariable [QGVAR(reviveStartTime), nil]; - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; if (GVAR(level) >= 2) then { if (_unit getvariable [QGVAR(heartRate), 60] > 0) then { diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index 5108bf8433..ceabb80587 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -36,13 +36,13 @@ _target setvariable [QGVAR(tourniquets), _tourniquets, true]; _part = _args select 2; _time = _args select 3; if (!alive _target) exitwith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; _tourniquets = _target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; if !((_tourniquets select _part) == _applyingTo) exitwith { // Tourniquet has been removed - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; if (ACE_time - _time > 120) then { _target setvariable [QGVAR(pain), (_target getvariable [QGVAR(pain), 0]) + 0.005]; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index 5b1ca04d2d..c66f6863c8 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -45,7 +45,7 @@ if (!alive _unit) exitwith { [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; // In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation @@ -99,7 +99,7 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith { ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); // EXIT PFH - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; if (!_hasMovedOut) then { // Reset the unit back to the previous captive state. @@ -132,7 +132,7 @@ if (_parachuteCheck) then { if (!local _unit) exitwith { _args set [3, _minWaitingTime - (ACE_time - _startingTime)]; _unit setvariable [QGVAR(unconsciousArguments), _args, true]; - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [(_this select 1)] call CBA_fnc_removePerFrameHandler; }; // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs From c2d94239a2dc4ecd6b0897f1a763ef82c7a995d2 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 16:26:53 +0200 Subject: [PATCH 073/620] Code Cleanup Medical Module (Part 2). --- addons/medical/XEH_init.sqf | 3 +-- addons/medical/XEH_postInit.sqf | 13 +++++-------- addons/medical/XEH_respawn.sqf | 4 +--- 3 files changed, 7 insertions(+), 13 deletions(-) diff --git a/addons/medical/XEH_init.sqf b/addons/medical/XEH_init.sqf index 0ded7d471f..0b86a927b2 100644 --- a/addons/medical/XEH_init.sqf +++ b/addons/medical/XEH_init.sqf @@ -1,7 +1,6 @@ #include "script_component.hpp" -private ["_unit"]; -_unit = _this select 0; +params ["_unit"]; _unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index f9f821eeb3..6ce81d396d 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -11,10 +11,9 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; ["interactMenuClosed", {[objNull, false] call FUNC(displayPatientInformation); }] call EFUNC(common,addEventHandler); ["medical_onUnconscious", { - if (local (_this select 0)) then { - private ["_unit"]; - _unit = _this select 0; - if (_this select 1) then { + params ["_unit", "_status"]; + if (local _unit) then { + if (_status) then { _unit setVariable ["tf_globalVolume", 0.4]; _unit setVariable ["tf_voiceVolume", 0, true]; _unit setVariable ["tf_unable_to_use_radio", true, true]; @@ -35,10 +34,8 @@ GVAR(heartBeatSounds_Slow) = ["ACE_heartbeat_slow_1", "ACE_heartbeat_slow_2"]; // Initialize all effects _fnc_createEffect = { - private ["_type", "_layer", "_default", "_effect"]; - _type = _this select 0; - _layer = _this select 1; - _default = _this select 2; + private "_effect"; + params ["_type", "_layer", "_default"]; _effect = ppEffectCreate [_type, _layer]; _effect ppEffectForceInNVG true; diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf index 44060fa15c..bd8a7a105b 100644 --- a/addons/medical/XEH_respawn.sqf +++ b/addons/medical/XEH_respawn.sqf @@ -1,8 +1,6 @@ #include "script_component.hpp" -private ["_unit"]; - -_unit = _this select 0; +params ["_unit"]; if !(local _unit) exitWith {}; From 10127ed9573239ad4230fd4d2daff96687d7bd6e Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 17:10:19 +0200 Subject: [PATCH 074/620] Fix Typo --- addons/medical/functions/fnc_addToTriageCard.sqf | 2 +- addons/medical/functions/fnc_handleBandageOpening.sqf | 9 ++++----- .../functions/fnc_handleDamage_advancedSetDamage.sqf | 4 ++-- addons/medical/functions/fnc_handleDamage_wounds.sqf | 3 ++- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/medical/functions/fnc_addToTriageCard.sqf b/addons/medical/functions/fnc_addToTriageCard.sqf index 1869340ad8..56b2042bc9 100644 --- a/addons/medical/functions/fnc_addToTriageCard.sqf +++ b/addons/medical/functions/fnc_addToTriageCard.sqf @@ -13,7 +13,7 @@ */ #include "script_component.hpp" -d + private ["_log", "_inList", "_amount"]; params ["_unit", "_newItem"]; diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf index b617d1e64a..4a32adb9e5 100644 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ b/addons/medical/functions/fnc_handleBandageOpening.sqf @@ -21,7 +21,7 @@ private ["_className", "_reopeningChance", "_reopeningMinDelay", "_reopeningMaxDelay", "_config", "_woundTreatmentConfig", "_bandagedWounds", "_exist", "_injuryId", "_existingInjury", "_delay", "_openWounds", "_selectedInjury", "_bandagedInjury"]; params ["_target", "_impact", "_part", "_injuryIndex", "_injury", "_bandage"]; -_injury parmas ["_classID", "_injuryType"]; +_classID = _injury select 1; _className = GVAR(woundClassNames) select _classID; // default, just in case.. @@ -52,11 +52,11 @@ if (isClass (_config >> _className)) then { }; _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []]; +_injuryType = _injury select 1; _exist = false; _bandagedInjury = []; { - _x params ["", "_injuryTypeX", "_injuryX"]; - if (_injuryTypeX == _injuryType && _injuryTypeX == (_injury select 2)) exitwith { + if ((_x select 1) == _injuryType && (_x select 2) == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, (_existingInjury select 3) + _impact]; @@ -93,8 +93,7 @@ if (random(1) <= _reopeningChance) then { _exist = false; _injuryId = _injury select 1; { - _x params ["_injuryIdX", "_injuryX"]; - if (_injuryIdX == _injuryId && _injuryX == (_injury select 2)) exitwith { + if ((_x select 1) == _injuryId && (_x select 2) == (_injury select 2)) exitwith { _exist = true; _existingInjury = _x; _existingInjury set [3, ((_existingInjury select 3) - _impact) max 0]; diff --git a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf b/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf index dc1e1a6fea..bac5a32976 100644 --- a/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage_advancedSetDamage.sqf @@ -17,12 +17,12 @@ params ["_unit"]; if (!local _unit) exitwith {}; -private ["_bodyStatus", "_headDamage", "_torsoDamage", "_handsDamage", "_legsDamage"]; +private "_bodyStatus"; // ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"] _bodyStatus = _unit getVariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; -_bodyStatus params ["_headDamage", "_torsoDamage", "_handsDamageR", "_handsDamageL", "_legsDamageR", "_legsDamageL"] +_bodyStatus params ["_headDamage", "_torsoDamage", "_handsDamageR", "_handsDamageL", "_legsDamageR", "_legsDamageL"]; _unit setHitPointDamage ["hitHead", _headDamage min 0.95]; _unit setHitPointDamage ["hitBody", _torsoDamage min 0.95]; diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 5711d903de..4438e9bb90 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -32,7 +32,8 @@ _woundsCreated = []; call compile _extensionOutput; _foundIndex = -1; { - _x params ["_toAddClassID", "_bodyPartNToAdd"]; + _toAddClassID = _x select 1; + _bodyPartNToAdd = _x select 2; { // Check if we have an id of the given class on the given bodypart already if (_x select 1 == _toAddClassID && {_x select 2 == _bodyPartNToAdd}) exitwith { From ff6c8a31bec90b34f0d78fb32fceead2c487b394 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 18:33:06 +0200 Subject: [PATCH 075/620] Code Cleanup Medical Module (Part 3). --- .../medical/functions/fnc_actionCheckBloodPressure.sqf | 4 ++-- .../functions/fnc_actionCheckBloodPressureLocal.sqf | 7 ++++--- addons/medical/functions/fnc_actionCheckPulse.sqf | 4 ++-- addons/medical/functions/fnc_actionLoadUnit.sqf | 9 ++++----- addons/medical/functions/fnc_actionRemoveTourniquet.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 6 +++--- addons/medical/functions/fnc_addUnloadPatientActions.sqf | 2 +- addons/medical/functions/fnc_getTypeOfDamage.sqf | 2 +- addons/medical/functions/fnc_handleDamage_caching.sqf | 2 +- addons/medical/stringtable.xml | 7 ++++++- 10 files changed, 25 insertions(+), 20 deletions(-) diff --git a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf index 96c9740b5d..ceab369a4e 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressure.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressure.sqf @@ -13,5 +13,5 @@ */ #include "script_component.hpp" - -[_this, QUOTE(DFUNC(actionCheckBloodPressureLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +params ["_caller", "_target"]; +[[_caller, _target], QUOTE(DFUNC(actionCheckBloodPressureLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index c7b444de73..c4c90845fd 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -17,9 +17,10 @@ private ["_bloodPressure", "_logOutPut", "_output"]; params ["_caller", "_target"]; -_bloodPressure = [_target] call FUNC(getBloodPressure); -if (!alive _target) then { - _bloodPressure = [0,0]; +_bloodPressure = if (!alive _target) then { + [0,0] +} else { + [_target] call FUNC(getBloodPressure) }; _bloodPressure params ["_bloodPressureLow", "_bloodPressureLow"]; _output = ""; diff --git a/addons/medical/functions/fnc_actionCheckPulse.sqf b/addons/medical/functions/fnc_actionCheckPulse.sqf index 1861195a04..58bac2e0ab 100644 --- a/addons/medical/functions/fnc_actionCheckPulse.sqf +++ b/addons/medical/functions/fnc_actionCheckPulse.sqf @@ -13,5 +13,5 @@ */ #include "script_component.hpp" - -[_this, QUOTE(DFUNC(actionCheckPulseLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ +params ["_caller","_target"]; +[[_caller, _target], QUOTE(DFUNC(actionCheckPulseLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index f4b941383f..0340da2e20 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -18,14 +18,13 @@ private "_vehicle"; params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitwith { - // TODO localization - ["displayTextStructured", [_caller], [["This person (%1) is awake and cannot be loaded", [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [_caller], [[localize LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); }; if ([_target] call FUNC(isBeingCarried)) then { - _this call EFUNC(dragging,dropObject_carry); + ["_caller", "_target"] call EFUNC(dragging,dropObject_carry); }; if ([_target] call FUNC(isBeingDragged)) then { - _this call EFUNC(dragging,dropObject); + ["_caller", "_target"] call EFUNC(dragging,dropObject); }; -_vehicle = _this call EFUNC(common,loadPerson); +_vehicle = ["_caller", "_target"] call EFUNC(common,loadPerson); diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 778042e9a6..2a39b63095 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -24,7 +24,7 @@ _tourniquets = _target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; // Check if there is a tourniquet on this bodypart if ((_tourniquets select _part) == 0) exitwith { - _output = "There is no tourniquet on this body part!"; + _output = localize LSTRING(noTourniquetOnBodyPart); ["displayTextStructured", [_caller], [_output, 1.5, _caller]] call EFUNC(common,targetEvent); }; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index 54a685611a..fff615a5b3 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -17,13 +17,13 @@ #include "script_component.hpp" private ["_moment", "_logVarName", "_log","_newLog", "_logs"]; -params ["_unit", "_type", "_allMapMarkers", "_arguments"]; +params ["_unit", "_type", "_message", "_arguments"]; if (!local _unit) exitwith { - [_this, QUOTE(DFUNC(addToLog)), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ + [_this, QFUNC(addToLog), _unit] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ }; -date params ["_minute", "_hour"]; +date params ["", "", "", "_minute", "_hour"]; _moment = if (_minute < 10) then { format["%1:0%2", _hour, _minute] diff --git a/addons/medical/functions/fnc_addUnloadPatientActions.sqf b/addons/medical/functions/fnc_addUnloadPatientActions.sqf index 11e0463328..f29b3923f1 100644 --- a/addons/medical/functions/fnc_addUnloadPatientActions.sqf +++ b/addons/medical/functions/fnc_addUnloadPatientActions.sqf @@ -27,7 +27,7 @@ _actions = []; str(_unit), [_unit, true] call EFUNC(common,getName), "", - {[_player, _parameters select 0] call FUNC(actionUnloadUnit);}, + {[_player, (_this select 2) select 0] call FUNC(actionUnloadUnit);}, {true}, {}, [_unit] diff --git a/addons/medical/functions/fnc_getTypeOfDamage.sqf b/addons/medical/functions/fnc_getTypeOfDamage.sqf index b8646e485f..d0aff19cc4 100644 --- a/addons/medical/functions/fnc_getTypeOfDamage.sqf +++ b/addons/medical/functions/fnc_getTypeOfDamage.sqf @@ -28,4 +28,4 @@ call { if (_typeOfProjectile isKindOf "BombCore") exitWith {"explosive"}; if (_typeOfProjectile isKindOf "Grenade") exitWith {"grenade"}; toLower _typeOfProjectile -}; +} diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index 9d31e53b1e..a9825a5c88 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -75,7 +75,7 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t [{ private ["_args", "_params"]; params ["_args", "_idPFH"]; - params ["_unit", "_frameno"]; + _args params ["_unit", "_frameno"]; if (diag_frameno > _frameno + 2) then { _unit setDamage 0; diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index a81f43848d..be30382226 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3617,5 +3617,10 @@ Distance to %1 has become to far for treatment %1 odszedł zbyt daleko, nie można kontynuować leczenia + + This person (%1) is awake and cannot be loaded + + + There is no tourniquet on this body part! - \ No newline at end of file + From 2d4ef164296f8b37b607a72da133be9ab2eb0818 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 18:54:51 +0200 Subject: [PATCH 076/620] fix CTD --- addons/medical/functions/fnc_parseConfigForInjuries.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_parseConfigForInjuries.sqf b/addons/medical/functions/fnc_parseConfigForInjuries.sqf index e72ec63969..764d0bf591 100644 --- a/addons/medical/functions/fnc_parseConfigForInjuries.sqf +++ b/addons/medical/functions/fnc_parseConfigForInjuries.sqf @@ -9,7 +9,6 @@ * * Public: No */ - #include "script_component.hpp" private ["_injuriesRootConfig", "_woundsConfig", "_allWoundClasses", "_amountOf", "_entry","_classType", "_selections", "_bloodLoss", "_pain","_minDamage","_causes", "_damageTypesConfig", "_thresholds", "_typeThresholds", "_selectionSpecific", "_selectionSpecificType", "_classDisplayName", "_subClassDisplayName", "_maxDamage", "_subClassmaxDamage", "_defaultMinLethalDamage", "_minLethalDamage", "_allFoundDamageTypes", "_classID", "_configDamageTypes", "_i", "_parseForSubClassWounds", "_subClass", "_subClassConfig", "_subClassbloodLoss", "_subClasscauses", "_subClassminDamage", "_subClasspain", "_subClassselections", "_subClasstype", "_type", "_varName", "_woundTypes"]; @@ -140,9 +139,9 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); // Extension loading { - private ["_className", "_allowedSelections", "_causes"]; + private ["_classID", "_className", "_allowedSelections", "_bloodLoss", "_pain", "_minDamage", "_maxDamage", "_causes", "_classDisplayName", "_extensionInput", "_selections", "_causesArray"]; // add shit to addInjuryType - params ["_classID", "_selections", "_bloodLoss", "_pain", "_damage", "_causesArray", "_classDisplayName"]; + _x params ["_classID", "_selections", "_bloodLoss", "_pain", "_damage", "_causesArray", "_classDisplayName"]; _damage params ["_minDamage", "_maxDamage"]; _className = GVAR(woundClassNames) select _forEachIndex; _allowedSelections = ""; @@ -162,6 +161,7 @@ _selectionSpecific = getNumber(_damageTypesConfig >> "selectionSpecific"); _causes = _causes + ":"; }; } foreach _causesArray; + _classDisplayName = _x select 6; "ace_medical" callExtension format["addInjuryType,%1,%2,%3,%4,%5,%6,%7,%8,%9", _classID, _className, _allowedSelections, _bloodLoss, _pain, _minDamage, _maxDamage, _causes, _classDisplayName]; From 19dd55147ae813dc6e0de515bc9290147236dce5 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 19:47:23 +0200 Subject: [PATCH 077/620] Code Cleanup Medical Module (Part 4). --- .../functions/fnc_requestWoundSync.sqf | 6 +-- .../functions/fnc_setCardiacArrest.sqf | 17 ++++----- addons/medical/functions/fnc_setDead.sqf | 18 ++++----- .../functions/fnc_setHitPointDamage.sqf | 11 ++---- .../medical/functions/fnc_setUnconscious.sqf | 18 ++++----- addons/medical/functions/fnc_treatment.sqf | 11 ++---- .../functions/fnc_treatmentAdvanced_CPR.sqf | 7 +--- .../fnc_treatmentAdvanced_CPRLocal.sqf | 5 +-- .../fnc_treatmentAdvanced_bandage.sqf | 13 ++----- .../fnc_treatmentAdvanced_bandageLocal.sqf | 17 ++++----- .../fnc_treatmentAdvanced_fullHeal.sqf | 7 +--- .../fnc_treatmentAdvanced_fullHealLocal.sqf | 7 ++-- ...reatmentAdvanced_fullHealTreatmentTime.sqf | 6 +-- .../fnc_treatmentAdvanced_medication.sqf | 9 +---- .../fnc_treatmentAdvanced_medicationLocal.sqf | 5 +-- ...eatmentAdvanced_surgicalKit_onProgress.sqf | 27 +++++++++----- .../functions/fnc_treatmentBasic_bandage.sqf | 9 ++--- .../functions/fnc_treatmentBasic_bloodbag.sqf | 7 +--- .../fnc_treatmentBasic_bloodbagLocal.sqf | 2 +- .../functions/fnc_treatmentBasic_epipen.sqf | 8 +--- .../functions/fnc_treatmentBasic_morphine.sqf | 6 +-- .../fnc_treatmentBasic_morphineLocal.sqf | 6 +-- addons/medical/functions/fnc_treatmentIV.sqf | 15 +++----- .../functions/fnc_treatmentIVLocal.sqf | 7 ++-- .../functions/fnc_treatmentTourniquet.sqf | 6 +-- .../fnc_treatmentTourniquetLocal.sqf | 23 +++++------- .../functions/fnc_treatment_failure.sqf | 37 +++++++++---------- .../functions/fnc_treatment_success.sqf | 23 +++++------- .../medical/functions/fnc_unconsciousPFH.sqf | 20 ++++------ addons/medical/functions/fnc_useItem.sqf | 13 +++---- addons/medical/functions/fnc_useItems.sqf | 10 ++--- 31 files changed, 150 insertions(+), 226 deletions(-) diff --git a/addons/medical/functions/fnc_requestWoundSync.sqf b/addons/medical/functions/fnc_requestWoundSync.sqf index 74fd3e230d..31cf726214 100644 --- a/addons/medical/functions/fnc_requestWoundSync.sqf +++ b/addons/medical/functions/fnc_requestWoundSync.sqf @@ -7,16 +7,14 @@ * 1: object belonging to the caller * * ReturnValue: - * + * None * * Public: Yes */ #include "script_component.hpp" -private [ "_target", "_caller"]; -_target = _this select 0; -_caller = _this select 1; +params [ "_target", "_caller"]; if (local _target || GVAR(level) < 2) exitwith {}; // if the target is local, we already got the most update to date information if (_target getvariable [QGVAR(isWoundSynced), false]) exitwith {}; diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf index b28e1cd679..017befcaad 100644 --- a/addons/medical/functions/fnc_setCardiacArrest.sqf +++ b/addons/medical/functions/fnc_setCardiacArrest.sqf @@ -7,15 +7,15 @@ * 0: The unit that will be put in cardiac arrest state * * ReturnValue: - * + * None * * Public: yes */ #include "script_component.hpp" -private ["_unit", "_timeInCardiacArrest"]; -_unit = _this select 0; +private "_timeInCardiacArrest"; +params ["_unit"]; if (_unit getvariable [QGVAR(inCardiacArrest),false]) exitwith {}; _unit setvariable [QGVAR(inCardiacArrest), true,true]; @@ -28,20 +28,17 @@ _timeInCardiacArrest = 120 + round(random(600)); [{ private ["_args","_unit","_startTime","_timeInCardiacArrest","_heartRate"]; - _args = _this select 0; - _unit = _args select 0; - _startTime = _args select 1; - _timeInCardiacArrest = _args select 2; + params ["_args", "_idPFH"]; + _args params ["_unit", "_startTime", "_timeInCardiacArrest"]; _heartRate = _unit getvariable [QGVAR(heartRate), 80]; if (_heartRate > 0 || !alive _unit) exitwith { - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inCardiacArrest), nil,true]; }; if (ACE_time - _startTime >= _timeInCardiacArrest) exitwith { - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inCardiacArrest), nil,true]; [_unit] call FUNC(setDead); }; }, 1, [_unit, ACE_time, _timeInCardiacArrest] ] call CBA_fnc_addPerFrameHandler; - diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index e2884da391..db84ff72c5 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -6,7 +6,7 @@ * 0: The unit that will be killed * * ReturnValue: - * + * None * * Public: yes */ @@ -14,11 +14,7 @@ #include "script_component.hpp" private ["_unit", "_force", "_reviveVal", "_lifesLeft"]; -_unit = _this select 0; -_force = false; -if (count _this >= 2) then { - _force = _this select 1; -}; +params ["_unit", ["_force", false]]; if (!alive _unit) exitwith{true}; if (!local _unit) exitwith { @@ -44,13 +40,13 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == [_unit, true] call FUNC(setUnconscious); [{ - private ["_args","_unit","_startTime"]; - _args = _this select 0; - _unit = _args select 0; + private "_startTime"; + params ["_args", "_idPFH"]; + _args params ["_unit"]; _startTime = _unit getvariable [QGVAR(reviveStartTime), 0]; if (GVAR(maxReviveTime) > 0 && {ACE_time - _startTime > GVAR(maxReviveTime)}) exitwith { - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; _unit setvariable [QGVAR(inReviveState), nil, true]; _unit setvariable [QGVAR(reviveStartTime), nil]; [_unit, true] call FUNC(setDead); @@ -64,7 +60,7 @@ if (((_reviveVal == 1 && {[_unit] call EFUNC(common,isPlayer)} || _reviveVal == }; _unit setvariable [QGVAR(reviveStartTime), nil]; - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; if (GVAR(level) >= 2) then { if (_unit getvariable [QGVAR(heartRate), 60] > 0) then { diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 18d4fc616e..1713c02243 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -7,10 +7,10 @@ * 0: Unit * 1: HitPoint * 2: Damage - * 3: Disable overall damage adjustment (optional) + * 3: Disable overall damage adjustment (default: false) * * Return Value: - * nil + * None * * Public: Yes */ @@ -22,10 +22,7 @@ #define ARMDAMAGETRESHOLD2 1.7 private ["_unit", "_selection", "_damage", "_selections", "_damages", "_damageOld", "_damageSumOld", "_damageNew", "_damageSumNew", "_damageFinal", "_armdamage", "_legdamage"]; - -_unit = _this select 0; -_selection = _this select 1; -_damage = _this select 2; +params ["_unit", "_selection", "_damage", ["_disalbed", false]]; // Unit isn't local, give function to machine where it is. if !(local _unit) exitWith { @@ -33,7 +30,7 @@ if !(local _unit) exitWith { }; // Check if overall damage adjustment is disabled -if (count _this > 3 && {_this select 3}) exitWith { +if (_disalbed) exitWith { _unit setHitPointDamage [_selection, _damage]; }; diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf index 7e5cd8c1b7..3de62db974 100644 --- a/addons/medical/functions/fnc_setUnconscious.sqf +++ b/addons/medical/functions/fnc_setUnconscious.sqf @@ -4,9 +4,9 @@ * * Arguments: * 0: The unit that will be put in an unconscious state - * 1: Set unconsciouns - * 2: Minimum unconscious ACE_time - * 3: Force AI Unconscious (skip random death chance) + * 1: Set unconsciouns (default: true) + * 2: Minimum unconscious ACE_time (default: (round(random(10)+5))) + * 3: Force AI Unconscious (skip random death chance) (default: false) * * ReturnValue: * nil @@ -19,13 +19,10 @@ #include "script_component.hpp" -#define DEFAULT_DELAY (round(random(10)+5)) +#define DEFAULT_DELAY (round(random(10)+5)) -private ["_unit", "_set", "_animState", "_originalPos", "_startingTime","_minWaitingTime", "_force", "_isDead"]; -_unit = _this select 0; -_set = if (count _this > 1) then {_this select 1} else {true}; -_minWaitingTime = if (count _this > 2) then {_this select 2} else {DEFAULT_DELAY}; -_force = if (count _this > 3) then {_this select 3} else {false}; +private ["_animState", "_originalPos", "_startingTime", "_isDead"]; +params ["_unit", ["_set", true], ["_minWaitingTime", DEFAULT_DELAY], ["_force", false]]; // No change, fuck off. (why is there no xor?) if (_set isEqualTo (_unit getVariable ["ACE_isUnconscious", false])) exitWith {}; @@ -97,8 +94,7 @@ if (GVAR(moveUnitsFromGroupOnUnconscious)) then { _anim = [_unit] call EFUNC(common,getDeathAnim); [_unit, _anim, 1, true] call EFUNC(common,doAnimation); [{ - _unit = _this select 0; - _anim = _this select 1; + params ["_unit", "_anim"]; if ((_unit getVariable "ACE_isUnconscious") and (animationState _unit != _anim)) then { [_unit, _anim, 2, true] call EFUNC(common,doAnimation); }; diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index a319d50440..a39375a05e 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -16,11 +16,8 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition", "_allowedSelections"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; +private ["_config", "_medicRequired", "_items", "_locations", "_return", "_callbackProgress", "_treatmentTime", "_callerAnim", "_patientAnim", "_iconDisplayed", "_return", "_usersOfItems", "_consumeItems", "_condition", "_displayText", "_wpn", "_treatmentTimeConfig", "_patientStateCondition", "_allowedSelections"]; +params ["_caller", "_target", "_selectionName", "_className"]; // If the cursorMenu is open, the loading bar will fail. If we execute the function one frame later, it will work fine if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith { @@ -107,7 +104,7 @@ if ("All" in _locations) then { }; }; }; - }foreach _locations; + } foreach _locations; }; if !(_return) exitwith {false}; @@ -180,7 +177,7 @@ if (vehicle _caller == _caller && {_callerAnim != ""}) then { TRACE_1("Weapon Deployed, breaking out first",(stance _caller)); [_caller, "", 0] call EFUNC(common,doAnimation); }; - + if ((stance _caller) == "STAND") then { switch (_wpn) do {//If standing, end in a crouched animation based on their current weapon case ("rfl"): {_caller setvariable [QGVAR(treatmentPrevAnimCaller), "AmovPknlMstpSrasWrflDnon"];}; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf index ade74a6ccb..f09de600ae 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPR.sqf @@ -16,12 +16,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_items"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; +params ["_caller", "_target", "_selectionName", "_className", "_items"]; if (alive _target && {(_target getvariable [QGVAR(inCardiacArrest), false] || _target getvariable [QGVAR(inReviveState), false])}) then { [[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_CPRLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index a7c8ea6744..cd943fc8d0 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -14,9 +14,8 @@ #include "script_component.hpp" -private ["_caller","_target", "_reviveStartTime"]; -_caller = _this select 0; -_target = _this select 1; +private "_reviveStartTime"; +param ["_caller","_target"]; if (_target getvariable [QGVAR(inReviveState), false]) then { _reviveStartTime = _target getvariable [QGVAR(reviveStartTime),0]; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index 1278994a11..f2159c37ef 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -7,7 +7,8 @@ * 1: The patient * 2: SelectionName * 3: Treatment classname - * + * 4: Item + * 5: specific Spot (default: -1) * * Return Value: * Succesful treatment started @@ -16,15 +17,7 @@ */ #include "script_component.hpp" - -private ["_caller", "_target", "_selectionName", "_className", "_items", "_specificSpot"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; - -_specificSpot = if (count _this > 6) then {_this select 6} else {-1}; +params ["_caller", "_target", "_selectionName", "_className", "_items", ["_specificSpot", -1]]; if !([_target] call FUNC(hasMedicalEnabled)) exitwith { _this call FUNC(treatmentBasic_bandage); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index d6c490d3c6..b36a551458 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -15,19 +15,16 @@ #include "script_component.hpp" -private ["_target", "_bandage", "_part", "_selectionName", "_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectivenss", "_mostEffectiveInjury", "_impact", "_exit", "_specificClass", "_classID", "_effectivenessFound", "_className", "_hitPoints", "_hitSelections", "_point", "_woundTreatmentConfig"]; -_target = _this select 0; -_bandage = _this select 1; -_selectionName = _this select 2; -_specificClass = if (count _this > 3) then {_this select 3} else { -1 }; +private ["_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectivenss", "_mostEffectiveInjury", "_impact", "_exit", "_classID", "_effectivenessFound", "_className", "_hitPoints", "_hitSelections", "_point", "_woundTreatmentConfig"]; +params ["_target", "_bandage", "_selectionName", ["_specificClass", -1]]; // Ensure it is a valid bodypart _part = [_selectionName] call FUNC(selectionNameToNumber); -if (_part < 0) exitwith {}; +if (_part < 0) exitwith {false}; // Get the open wounds for this unit _openWounds = _target getvariable [QGVAR(openWounds), []]; -if (count _openWounds == 0) exitwith {}; // nothing to do here! +if (count _openWounds == 0) exitwith {false}; // nothing to do here! // Get the default effectiveness for the used bandage _config = (ConfigFile >> "ACE_Medical_Advanced" >> "Treatment" >> "Bandaging"); @@ -43,10 +40,10 @@ _effectivenessFound = -1; _mostEffectiveInjury = _openWounds select 0; _exit = false; { + params ["", "_classID", "_partX"]; // Only parse injuries that are for the selected bodypart. - if (_x select 2 == _part) then { + if (_partX == _part) then { _woundEffectivenss = _effectiveness; - _classID = (_x select 1); // Select the classname from the wound classname storage _className = GVAR(woundClassNames) select _classID; @@ -74,7 +71,7 @@ _exit = false; }; }; if (_exit) exitwith {}; -}foreach _openWounds; +} foreach _openWounds; if (_effectivenessFound == -1) exitwith {}; // Seems everything is patched up on this body part already.. diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf index 37627a8c5d..64ce319341 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf @@ -10,12 +10,7 @@ #include "script_component.hpp" -private ["_target", "_caller", "_selectionName", "_className", "_items"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; +params ["_target", "_caller", "_selectionName", "_className", "_items"]; // TODO replace by event system [[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_fullHealLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf index df7594921d..ed5eb0858d 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf @@ -10,9 +10,8 @@ #include "script_component.hpp" -private ["_target", "_caller", "_allUsedMedication"]; -_caller = _this select 0; -_target = _this select 1; +private "_allUsedMedication"; +params ["_caller", "_target"]; if (alive _target) exitwith { @@ -64,7 +63,7 @@ if (alive _target) exitwith { _allUsedMedication = _target getVariable [QGVAR(allUsedMedication), []]; { _target setvariable [_x select 0, nil]; - }foreach _allUsedMedication; + } foreach _allUsedMedication; // Resetting damage _target setDamage 0; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf index 108bdd4a5d..a0539948ea 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHealTreatmentTime.sqf @@ -15,12 +15,12 @@ */ #include "script_component.hpp" -private ["_target", "_totalDamage"]; -_target = _this; +private "_totalDamage"; + _totalDamage = 0; { _totalDamage = _totalDamage + _x; -} forEach (_target getVariable [QGVAR(bodyPartStatus), []]); +} forEach (_this getVariable [QGVAR(bodyPartStatus), []]); (10 max (_totalDamage * 10) min 120) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index 0b401a73cc..b5b0af1401 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -17,12 +17,7 @@ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_items"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; +params ["_caller", "_target", "_selectionName", "_className", "_items"]; [[_target, _className], QUOTE(DFUNC(treatmentAdvanced_medicationLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ @@ -32,7 +27,7 @@ _items = _this select 4; [_target, "activity", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); [_target, "activity_view", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); }; -}foreach _items; +} foreach _items; true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf index c4ba840398..00a4fae8d9 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medicationLocal.sqf @@ -15,9 +15,8 @@ #include "script_component.hpp" -private ["_target", "_className", "_currentInSystem", "_medicationConfig", "_painReduce", "_hrIncreaseLow", "_hrIncreaseNorm", "_hrIncreaseHigh", "_maxDose", "_inCompatableMedication", "_timeInSystem", "_heartRate", "_pain", "_resistance", "_hrCallback", "_varName", "_viscosityChange"]; -_target = _this select 0; -_className = _this select 1; +private ["_currentInSystem", "_medicationConfig", "_painReduce", "_hrIncreaseLow", "_hrIncreaseNorm", "_hrIncreaseHigh", "_maxDose", "_inCompatableMedication", "_timeInSystem", "_heartRate", "_pain", "_resistance", "_hrCallback", "_varName", "_viscosityChange"]; +params ["_target", "_className"]; // We have added a new dose of this medication to our system, so let's increase it _varName = format[QGVAR(%1_inSystem), _className]; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf index c0e1037027..aadcb40d45 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_surgicalKit_onProgress.sqf @@ -1,23 +1,30 @@ /* * Author: BaerMitUmlaut - * Handles treatment via surgical kit per frame. + * Handles treatment via surgical kit per frame + * + * Arguments: + * 0: Arguments + * 0: Caller + * 1: Target + * 1: Elapsed Time + * 2: Total Time + * + * Return Value: + * Succesful treatment started * * Public: No */ - #include "script_component.hpp" -private ["_args", "_target", "_caller", "_elapsedTime", "_totalTime", "_bandagedWounds"]; -_args = _this select 0; -_caller = _args select 0; -_target = _args select 1; -_elapsedTime = _this select 1; -_totalTime = _this select 2; + +private "_bandagedWounds"; +params ["_args", "_elapsedTime", "_totalTime"]; +_args params ["_caller", "_target"]; _bandagedWounds = _target getVariable [QGVAR(bandagedWounds), []]; //In case two people stitch up one patient and the last wound has already been closed we can stop already -if (count _bandagedWounds == 0) exitWith {false}; +if (count _bandagedWounds == 0) exitWith { false }; //Has enough time elapsed that we can close another wound? if ((_totalTime - _elapsedTime) <= (((count _bandagedWounds) - 1) * 5)) then { @@ -25,4 +32,4 @@ if ((_totalTime - _elapsedTime) <= (((count _bandagedWounds) - 1) * 5)) then { _target setVariable [QGVAR(bandagedWounds), _bandagedWounds, true]; }; -true \ No newline at end of file +true diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index 75b0b6bfdd..c0ebc35472 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -9,7 +9,7 @@ * 3: Treatment classname * * Return Value: - * nil + * None * * Public: No */ @@ -17,11 +17,8 @@ #include "script_component.hpp" #define BANDAGEHEAL 0.8 -private ["_caller", "_target","_selection","_className","_target","_hitSelections","_hitPoints","_point", "_damage"]; -_caller = _this select 0; -_target = _this select 1; -_selection = _this select 2; -_className = _this select 3; +private ["_hitSelections", "_hitPoints", "_point", "_damage"]; +params ["_caller", "_target", "_selection", "_className"]; if (_selection == "all") then { _target setDamage ((damage _target - BANDAGEHEAL) max 0); diff --git a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf index 7cfb65a909..5700d351cb 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bloodbag.sqf @@ -9,16 +9,13 @@ * 3: Treatment classname * * Return Value: - * nil + * None * * Public: No */ #include "script_component.hpp" -private ["_caller", "_target", "_treatmentClassname"]; -_caller = _this select 0; -_target = _this select 1; -_treatmentClassname = _this select 3; +params ["_caller", "_target", "_treatmentClassname"]; [[_target, _treatmentClassname], QUOTE(DFUNC(treatmentBasic_bloodbagLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentBasic_bloodbagLocal.sqf b/addons/medical/functions/fnc_treatmentBasic_bloodbagLocal.sqf index 08057c9492..64ba6e031b 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bloodbagLocal.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bloodbagLocal.sqf @@ -15,7 +15,7 @@ #include "script_component.hpp" #define BLOODBAGHEAL 70 -PARAMS_2(_target,_treatmentClassname); +params ["_target", "_treatmentClassname"]; private ["_blood", "_bloodAdded"]; diff --git a/addons/medical/functions/fnc_treatmentBasic_epipen.sqf b/addons/medical/functions/fnc_treatmentBasic_epipen.sqf index bdfb95fb2a..d387e91f89 100644 --- a/addons/medical/functions/fnc_treatmentBasic_epipen.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_epipen.sqf @@ -9,17 +9,13 @@ * 3: Treatment classname * * Return Value: - * nil + * None * * Public: No */ - #include "script_component.hpp" -private ["_caller", "_target","_className"]; -_caller = _this select 0; -_target = _this select 1; -_className = _this select 3; +params ["_caller", "_target","_className"]; [_target, false] call FUNC(setUnconscious); diff --git a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf index 048b314781..87559d0dd2 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphine.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphine.sqf @@ -9,7 +9,7 @@ * 3: Treatment classname * * Return Value: - * nil + * None * * Public: No */ @@ -17,8 +17,6 @@ #include "script_component.hpp" #define MORPHINEHEAL 0.4 -private ["_caller", "_target"]; -_caller = _this select 0; -_target = _this select 1; +params ["_caller", "_target"]; [[_target], QUOTE(DFUNC(treatmentBasic_morphineLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentBasic_morphineLocal.sqf b/addons/medical/functions/fnc_treatmentBasic_morphineLocal.sqf index 9dddf743e2..780196819b 100644 --- a/addons/medical/functions/fnc_treatmentBasic_morphineLocal.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_morphineLocal.sqf @@ -7,7 +7,7 @@ * 1: The patient * * Return Value: - * nil + * None * * Public: No */ @@ -15,8 +15,8 @@ #include "script_component.hpp" #define MORPHINEHEAL 0.4 -private ["_target", "_morphine", "_pain"]; -_target = _this select 0; +private ["_morphine", "_pain"]; +params ["_target"]; // reduce pain, pain sensitivity _morphine = ((_target getVariable [QGVAR(morphine), 0]) + MORPHINEHEAL) min 1; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index e0c4d20ed6..2a7bbc6adf 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -8,26 +8,23 @@ * 2: SelectionName * 3: Treatment classname * - * * Return Value: - * + * Succesful treatment started * * Public: Yes */ #include "script_component.hpp" -private ["_caller", "_target", "_selectionName", "_className", "_items", "_removeItem"]; -_caller = _this select 0; -_target = _this select 1; -_selectionName = _this select 2; -_className = _this select 3; -_items = _this select 4; +private "_removeItem"; +params ["_caller", "_target", "_selectionName", "_className", "_items"]; -if (count _items == 0) exitwith {}; +if (count _items == 0) exitwith {false}; _removeItem = _items select 0; [[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); [_target, "activity", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); [_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message + +true diff --git a/addons/medical/functions/fnc_treatmentIVLocal.sqf b/addons/medical/functions/fnc_treatmentIVLocal.sqf index 9abb5fda2f..37cba2ad1b 100644 --- a/addons/medical/functions/fnc_treatmentIVLocal.sqf +++ b/addons/medical/functions/fnc_treatmentIVLocal.sqf @@ -8,16 +8,15 @@ * * * Return Value: - * nil + * None * * Public: Yes */ #include "script_component.hpp" -private ["_target", "_treatmentClassname", "_config", "_volumeAdded", "_typeOf", "_varName", "_bloodVolume"]; -_target = _this select 0; -_treatmentClassname = _this select 1; +private ["_config", "_volumeAdded", "_typeOf", "_varName", "_bloodVolume"]; +params ["_target", "_treatmentClassname"]; _bloodVolume = _target getvariable [QGVAR(bloodVolume), 100]; if (_bloodVolume >= 100) exitwith {}; diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index 148ed06252..2a169a50d0 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -10,7 +10,7 @@ * * * Return Value: - * + * Succesful treatment started * * Public: No */ @@ -24,7 +24,7 @@ _selectionName = _this select 2; _className = _this select 3; _items = _this select 4; -if (count _items == 0) exitwith {}; +if (count _items == 0) exitwith {false}; _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part == 0 || _part == 1) exitwith { @@ -47,4 +47,4 @@ _removeItem = _items select 0; [_target, "activity_view", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message -true; +true diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index ceabb80587..fb7394866e 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -7,16 +7,14 @@ * 1: Item used classname * * Return Value: - * nil + * None * * Public: No */ #include "script_component.hpp" -private ["_target", "_tourniquetItem", "_part", "_tourniquets", "_applyingTo", "_selectionName"]; -_target = _this select 0; -_tourniquetItem = _this select 1; -_selectionName = _this select 2; +private ["_tourniquetItem", "_part", "_applyingTo"]; +params ["_target", "_tourniquets", "_selectionName"]; [_target] call FUNC(addToInjuredCollection); @@ -29,24 +27,21 @@ _tourniquets set[_part, _applyingTo]; _target setvariable [QGVAR(tourniquets), _tourniquets, true]; [{ - private ["_args","_target","_applyingTo","_part", "_tourniquets", "_time"]; - _args = _this select 0; - _target = _args select 0; - _applyingTo = _args select 1; - _part = _args select 2; - _time = _args select 3; + params ["_args", "_idPFH"]; + _args params ["_target", "_applyingTo", "_part", "_time"]; + if (!alive _target) exitwith { - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; _tourniquets = _target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; if !((_tourniquets select _part) == _applyingTo) exitwith { // Tourniquet has been removed - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; if (ACE_time - _time > 120) then { _target setvariable [QGVAR(pain), (_target getvariable [QGVAR(pain), 0]) + 0.005]; }; }, 5, [_target, _applyingTo, _part, ACE_time] ] call CBA_fnc_addPerFrameHandler; -true; +true diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index 8a5d784301..483a8923eb 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -10,21 +10,16 @@ * 4: Items available > * * Return Value: - * nil + * None * * Public: No */ #include "script_component.hpp" -private ["_args", "_caller", "_target","_selectionName","_className","_config","_callback", "_usersOfItems", "_weaponSelect", "_lastAnim"]; - -_args = _this select 0; -_caller = _args select 0; -_target = _args select 1; -_selectionName = _args select 2; -_className = _args select 3; -_usersOfItems = _args select 5; +private ["_config", "_callback", "_weaponSelect", "_lastAnim"]; +params ["_args"]; +_args params ["_caller", "_target", "_selectionName", "_className", "_usersOfItems"]; if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { _caller removeWeapon "ACE_FakePrimaryWeapon"; @@ -33,14 +28,15 @@ if (vehicle _caller == _caller) then { _lastAnim = _caller getvariable [QGVAR(treatmentPrevAnimCaller), ""]; //Don't play another medic animation (when player is rapidily treating) TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch (true) do { - case (_lastAnim == "AinvPknlMstpSlayWrflDnon_medic"): {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case (_lastAnim == "AinvPpneMstpSlayWrflDnon_medic"): {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case (_lastAnim == "AinvPknlMstpSlayWnonDnon_medic"): {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case (_lastAnim == "AinvPpneMstpSlayWpstDnon_medic"): {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case (_lastAnim == "AinvPknlMstpSlayWpstDnon_medic"): {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; + switch _lastAnim do { + case "AinvPknlMstpSlayWrflDnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; + case "AinvPpneMstpSlayWrflDnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; + case "AinvPknlMstpSlayWnonDnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; + case "AinvPpneMstpSlayWpstDnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; + case "AinvPknlMstpSlayWpstDnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); + [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); }; _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; @@ -57,8 +53,9 @@ if ((_weaponSelect params [["_previousWeapon", ""]]) && {(_previousWeapon != "") }; { - (_x select 0) addItem (_x select 1); -}foreach _usersOfItems; + _x params ["_unit", "_item"]; + _unit addItem _item; +} foreach _usersOfItems; // Record specific callback _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className); @@ -67,10 +64,10 @@ if (GVAR(level) >= 2) then { }; _callback = getText (_config >> "callbackFailure"); -if (isNil _callback) then { - _callback = compile _callback; +_callback = if (isNil _callback) then { + compile _callback } else { - _callback = missionNamespace getvariable _callback; + missionNamespace getvariable _callback }; _args call _callback; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index f5cb9baf71..0ba34d5a85 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -10,19 +10,16 @@ * 4: Items available > * * Return Value: - * nil + * None * * Public: No */ #include "script_component.hpp" -private ["_args", "_caller", "_target","_selectionName","_className","_config","_callback", "_weaponSelect", "_lastAnim"]; -_args = _this select 0; -_caller = _args select 0; -_target = _args select 1; -_selectionName = _args select 2; -_className = _args select 3; +private ["_config", "_callback", "_weaponSelect", "_lastAnim"]; +params ["_args"]; +_args params ["_caller", "_target","_selectionName","_className"]; if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { _caller removeWeapon "ACE_FakePrimaryWeapon"; @@ -31,12 +28,12 @@ if (vehicle _caller == _caller) then { _lastAnim = _caller getvariable [QGVAR(treatmentPrevAnimCaller), ""]; //Don't play another medic animation (when player is rapidily treating) TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch (true) do { - case (_lastAnim == "AinvPknlMstpSlayWrflDnon_medic"): {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case (_lastAnim == "AinvPpneMstpSlayWrflDnon_medic"): {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case (_lastAnim == "AinvPknlMstpSlayWnonDnon_medic"): {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case (_lastAnim == "AinvPpneMstpSlayWpstDnon_medic"): {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case (_lastAnim == "AinvPknlMstpSlayWpstDnon_medic"): {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; + switch _lastAnim do { + case "AinvPknlMstpSlayWrflDnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; + case "AinvPpneMstpSlayWrflDnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; + case "AinvPknlMstpSlayWnonDnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; + case "AinvPpneMstpSlayWpstDnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; + case "AinvPknlMstpSlayWpstDnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); }; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index c66f6863c8..f230b9dbf8 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -13,21 +13,15 @@ * 1: PFEH ID * * ReturnValue: - * nil + * None * * Public: yes */ - #include "script_component.hpp" private ["_unit", "_minWaitingTime", "_slotInfo", "_hasMovedOut", "_parachuteCheck", "_args", "_originalPos", "_startingTime", "_awakeInVehicleAnimation", "_oldVehicleAnimation", "_vehicle"]; -_args = _this select 0; -_unit = _args select 0; -_originalPos = _args select 1; -_startingTime = _args select 2; -_minWaitingTime = _args select 3; -_hasMovedOut = _args select 4; -_parachuteCheck = _args select 5; +params ["_args", "_idPFH"]; +_args params ["_unit", "_originalPos", "_startingTime", "_minWaitingTime", "_hasMovedOut", "_parachuteCheck"]; if (!alive _unit) exitwith { if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then { @@ -45,7 +39,7 @@ if (!alive _unit) exitwith { [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; // In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation @@ -57,7 +51,7 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith { TRACE_1("Removing fake weapon [on wakeup]",_unit); _unit removeWeapon "ACE_FakePrimaryWeapon"; }; - + if (vehicle _unit == _unit) then { if (animationState _unit == "AinjPpneMstpSnonWrflDnon") then { [_unit,"AinjPpneMstpSnonWrflDnon_rolltofront", 2] call EFUNC(common,doAnimation); @@ -99,7 +93,7 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith { ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); // EXIT PFH - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; if (!_hasMovedOut) then { // Reset the unit back to the previous captive state. @@ -132,7 +126,7 @@ if (_parachuteCheck) then { if (!local _unit) exitwith { _args set [3, _minWaitingTime - (ACE_time - _startingTime)]; _unit setvariable [QGVAR(unconsciousArguments), _args, true]; - [(_this select 1)] call CBA_fnc_removePerFrameHandler; + [_idPFH] call CBA_fnc_removePerFrameHandler; }; // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs diff --git a/addons/medical/functions/fnc_useItem.sqf b/addons/medical/functions/fnc_useItem.sqf index 750ea0452f..770d8b6ea7 100644 --- a/addons/medical/functions/fnc_useItem.sqf +++ b/addons/medical/functions/fnc_useItem.sqf @@ -8,17 +8,16 @@ * 2: Item * * ReturnValue: - * + * 0: success + * 1: Unit * * Public: Yes */ #include "script_component.hpp" -private ["_medic", "_patient", "_item", "_return","_crew"]; -_medic = _this select 0; -_patient = _this select 1; -_item = _this select 2; +private ["_return","_crew"]; +params ["_medic", "_patient", "_item"]; if (isnil QGVAR(setting_allowSharedEquipment)) then { GVAR(setting_allowSharedEquipment) = true; @@ -42,7 +41,7 @@ if ([vehicle _medic] call FUNC(isMedicalVehicle) && {vehicle _medic != _medic}) _return = [true, _x]; [[_x, _item], QUOTE(EFUNC(common,useItem)), _x] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ }; - }foreach _crew; + } foreach _crew; }; -_return; +_return diff --git a/addons/medical/functions/fnc_useItems.sqf b/addons/medical/functions/fnc_useItems.sqf index fbaa324022..0d937c0938 100644 --- a/addons/medical/functions/fnc_useItems.sqf +++ b/addons/medical/functions/fnc_useItems.sqf @@ -8,7 +8,7 @@ * 2: Items > * * ReturnValue: - * + * None * * Public: Yes */ @@ -16,9 +16,7 @@ #include "script_component.hpp" private ["_medic", "_patient", "_items", "_itemUsedInfo", "_itemsUsedBy"]; -_medic = _this select 0; -_patient = _this select 1; -_items = _this select 2; +params ["_medic", "_patient", "_items"]; _itemsUsedBy = []; { @@ -27,7 +25,7 @@ _itemsUsedBy = []; { _itemUsedInfo = [_medic, _patient, _x] call FUNC(useItem); if (_itemUsedInfo select 0) exitwith { _itemsUsedBy pushback [(_itemUsedInfo select 1), _x]}; - }foreach _x; + } foreach _x; }; // handle required item @@ -35,6 +33,6 @@ _itemsUsedBy = []; _itemUsedInfo = [_medic, _patient, _x] call FUNC(useItem); if (_itemUsedInfo select 0) exitwith { _itemsUsedBy pushback [(_itemUsedInfo select 1), _x]}; }; -}foreach _items; +} foreach _items; [count _items == count _itemsUsedBy, _itemsUsedBy]; From fab4c6a67f8a462684e77e45cfbde79750e52f0e Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 22 Aug 2015 21:32:36 +0200 Subject: [PATCH 078/620] fix Spelling Issues --- addons/medical/functions/fnc_actionLoadUnit.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 0340da2e20..9dc711a5a7 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -21,10 +21,10 @@ if ([_target] call EFUNC(common,isAwake)) exitwith { ["displayTextStructured", [_caller], [[localize LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); }; if ([_target] call FUNC(isBeingCarried)) then { - ["_caller", "_target"] call EFUNC(dragging,dropObject_carry); + [_caller, _target] call EFUNC(dragging,dropObject_carry); }; if ([_target] call FUNC(isBeingDragged)) then { - ["_caller", "_target"] call EFUNC(dragging,dropObject); + [_caller, _target] call EFUNC(dragging,dropObject); }; -_vehicle = ["_caller", "_target"] call EFUNC(common,loadPerson); +_vehicle = [_caller, _target] call EFUNC(common,loadPerson); From 69df301e677056ea2801a2f81fc8a1922f3d824b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 23 Aug 2015 02:29:51 -0500 Subject: [PATCH 079/620] Replace one more macro --- addons/captives/functions/fnc_doEscortCaptive.sqf | 4 +++- addons/captives/functions/fnc_setHandcuffed.sqf | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/captives/functions/fnc_doEscortCaptive.sqf b/addons/captives/functions/fnc_doEscortCaptive.sqf index bb070b057a..08b64195f3 100644 --- a/addons/captives/functions/fnc_doEscortCaptive.sqf +++ b/addons/captives/functions/fnc_doEscortCaptive.sqf @@ -35,7 +35,9 @@ if (_state) then { nil, 20, false, true, "", QUOTE(!isNull (GETVAR(_target,QGVAR(escortedUnit),objNull)))]; [{ - EXPLODE_3_PVT((_this select 0),_unit,_target,_actionID); + params ["_args", "_pfID"]; + _args params ["_unit", "_target", "_actionID"]; + if (_unit getVariable [QGVAR(isEscorting), false]) then { if (!alive _target || {!alive _unit} || {!canStand _target} || {!canStand _unit} || {_target getVariable ["ACE_isUnconscious", false]} || {_unit getVariable ["ACE_isUnconscious", false]} || {!isNull (attachedTo _unit)}) then { _unit setVariable [QGVAR(isEscorting), false, true]; diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index c4bde3a839..a8c8e02fd4 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -17,6 +17,7 @@ #include "script_component.hpp" params ["_unit","_state"]; +TRACE_2("params",_unit,_state); if (!local _unit) exitwith { ERROR("running setHandcuffed on remote unit"); @@ -56,7 +57,7 @@ if (_state) then { //Adds an animation changed eh //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) private "_animChangedEHID"; - TRACE_1("Adding animChangedEH",_unit); + _animChangedEHID = _unit addEventHandler ["AnimChanged", { params ["_unit", "_newAnimation"]; TRACE_2("AnimChanged",_unit,_newAnimation); @@ -80,6 +81,7 @@ if (_state) then { [_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); }; }]; + TRACE_2("Adding animChangedEH",_unit,_animChangedEHID); _unit setVariable [QGVAR(handcuffAnimEHID), _animChangedEHID]; }, [_unit], 0.01] call EFUNC(common,waitAndExecute); @@ -90,6 +92,7 @@ if (_state) then { //remove AnimChanged EH private "_animChangedEHID"; _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; + TRACE_1("removing animChanged EH",_animChangedEHID); _unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit setVariable [QGVAR(handcuffAnimEHID), -1]; From 260b048da4e179923b537a9445e0b9ac36753a90 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 23 Aug 2015 14:13:55 +0200 Subject: [PATCH 080/620] some more Improvements --- addons/medical/functions/fnc_actionCheckResponse.sqf | 6 +----- addons/medical/functions/fnc_setHitPointDamage.sqf | 4 ++-- addons/medical/functions/fnc_treatment_failure.sqf | 12 ++++++------ addons/medical/functions/fnc_treatment_success.sqf | 12 ++++++------ 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 7db4fe0a5d..6910545a9d 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -17,11 +17,7 @@ private ["_output"]; params ["_caller", "_target"]; -_output = if ([_target] call EFUNC(common,isAwake)) then { - LSTRING(Check_Response_Responsive) -} else { - LSTRING(Check_Response_Unresponsive) -}; +_output = [LSTRING(Check_Response_Unresponsive), LSTRING(Check_Response_Responsive)] select ([_target] call EFUNC(common,isAwake)); ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); diff --git a/addons/medical/functions/fnc_setHitPointDamage.sqf b/addons/medical/functions/fnc_setHitPointDamage.sqf index 1713c02243..f8698a7fe0 100644 --- a/addons/medical/functions/fnc_setHitPointDamage.sqf +++ b/addons/medical/functions/fnc_setHitPointDamage.sqf @@ -22,7 +22,7 @@ #define ARMDAMAGETRESHOLD2 1.7 private ["_unit", "_selection", "_damage", "_selections", "_damages", "_damageOld", "_damageSumOld", "_damageNew", "_damageSumNew", "_damageFinal", "_armdamage", "_legdamage"]; -params ["_unit", "_selection", "_damage", ["_disalbed", false]]; +params ["_unit", "_selection", "_damage", ["_disabled", false]]; // Unit isn't local, give function to machine where it is. if !(local _unit) exitWith { @@ -30,7 +30,7 @@ if !(local _unit) exitWith { }; // Check if overall damage adjustment is disabled -if (_disalbed) exitWith { +if (_disabled) exitWith { _unit setHitPointDamage [_selection, _damage]; }; diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index 483a8923eb..84526daa88 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -28,12 +28,12 @@ if (vehicle _caller == _caller) then { _lastAnim = _caller getvariable [QGVAR(treatmentPrevAnimCaller), ""]; //Don't play another medic animation (when player is rapidily treating) TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch _lastAnim do { - case "AinvPknlMstpSlayWrflDnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case "AinvPpneMstpSlayWrflDnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case "AinvPknlMstpSlayWnonDnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case "AinvPpneMstpSlayWpstDnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case "AinvPknlMstpSlayWpstDnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; + switch (toLower _lastAnim) do { + case "ainvpknlmstpslaywrfldnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; + case "ainvppnemstpslaywrfldnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; + case "ainvpknlmstpslaywnondnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; + case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; + case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 0ba34d5a85..f21f027ee7 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -28,12 +28,12 @@ if (vehicle _caller == _caller) then { _lastAnim = _caller getvariable [QGVAR(treatmentPrevAnimCaller), ""]; //Don't play another medic animation (when player is rapidily treating) TRACE_2("Reseting to old animation", animationState player, _lastAnim); - switch _lastAnim do { - case "AinvPknlMstpSlayWrflDnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; - case "AinvPpneMstpSlayWrflDnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; - case "AinvPknlMstpSlayWnonDnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; - case "AinvPpneMstpSlayWpstDnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; - case "AinvPknlMstpSlayWpstDnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; + switch (tolower _lastAnim) do { + case "ainvpknlmstpslaywrfldnon_medic": {_lastAnim = "AmovPknlMstpSrasWrflDnon"}; + case "ainvppnemstpslaywrfldnon_medic": {_lastAnim = "AmovPpneMstpSrasWrflDnon"}; + case "ainvpknlmstpslaywnondnon_medic": {_lastAnim = "AmovPknlMstpSnonWnonDnon"}; + case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; + case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); }; From 8ca06a9a76f14348dd0df65db05cf09807cc8737 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 23 Aug 2015 12:32:46 -0500 Subject: [PATCH 081/620] More FFV animation stuff --- .../fnc_findEmptyNonFFVCargoSeat.sqf | 31 ++++++++++++++++-- addons/captives/functions/fnc_handleGetIn.sqf | 21 ++++++++++-- .../captives/functions/fnc_handleGetOut.sqf | 19 ++++++----- .../captives/functions/fnc_setSurrendered.sqf | 1 + .../functions/fnc_vehicleCaptiveMoveIn.sqf | 32 ++++++------------- .../functions/fnc_vehicleCaptiveMoveOut.sqf | 2 ++ 6 files changed, 70 insertions(+), 36 deletions(-) diff --git a/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf b/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf index a6bd625870..cf67614f91 100644 --- a/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf +++ b/addons/captives/functions/fnc_findEmptyNonFFVCargoSeat.sqf @@ -1,6 +1,22 @@ +/* + * Author: PabstMirror + * Finds a free cargo seat, searching non FFV first + * + * Arguments: + * 0: The Vehicle + * + * Return Value: + * ARRAY [seat index , is FFV ] + * + * Example: + * [car1] call ACE_captives_fnc_findEmptyNonFFVCargoSeat + * + * Public: No + */ #include "script_component.hpp" params ["_vehicle"]; +TRACE_1("params", _vehicle); _vehicleConfig = configFile >> "CfgVehicles" >> (typeOf _vehicle); @@ -30,10 +46,21 @@ _occupiedSeats = []; TRACE_3("Searching for empty seat",_realCargoCount,_ffvCargoIndexes,_occupiedSeats); -_emptyCargoSeatReturn = -1; +_emptyCargoSeatReturn = [-1, false]; + +//First seach for non-ffv seats: for "_index" from 0 to (_realCargoCount - 1) do { if ((!(_index in _ffvCargoIndexes)) && {!(_index in _occupiedSeats)}) exitWith { - _emptyCargoSeatReturn = _index; + _emptyCargoSeatReturn = [_index, false]; + }; +}; + +//Only use FFV if none found: +if (_emptyCargoSeatReturn isEqualTo [-1, false]) then { + for "_index" from 0 to (_realCargoCount - 1) do { + if (!(_index in _occupiedSeats)) exitWith { + _emptyCargoSeatReturn = [_index, true]; + }; }; }; diff --git a/addons/captives/functions/fnc_handleGetIn.sqf b/addons/captives/functions/fnc_handleGetIn.sqf index 487e7d4179..5476073b38 100644 --- a/addons/captives/functions/fnc_handleGetIn.sqf +++ b/addons/captives/functions/fnc_handleGetIn.sqf @@ -4,8 +4,8 @@ * * Arguments: * 0: _vehicle - * 2: dunno - * 1: _unit + * 1: dunno + * 2: _unit * * Return Value: * The return value @@ -17,7 +17,8 @@ */ #include "script_component.hpp" -params ["_vehicle", "_dontcare","_unit"]; +params ["_vehicle", "","_unit"]; +TRACE_2("params",_vehicle,_unit); if (local _unit) then { if (_unit getVariable [QGVAR(isEscorting), false]) then { @@ -27,4 +28,18 @@ if (local _unit) then { if (_unit getVariable [QGVAR(isSurrendering), false]) then { [_unit, false] call FUNC(setSurrender); }; + + if (_unit getVariable [QGVAR(isHandcuffed), false]) then { + //Need to force animation for FFV turrets + _turretPath = []; + { + _x params ["_xUnit", "", "", "_xTurretPath"]; + if (_unit == _xUnit) exitWith {_turretPath = _xTurretPath}; + } forEach (fullCrew (vehicle _unit)); + if (!(_turretPath isEqualTo [])) then { + TRACE_1("Setting FFV Handcuffed Animation",_turretPath); + [_unit, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); + }; + }; }; diff --git a/addons/captives/functions/fnc_handleGetOut.sqf b/addons/captives/functions/fnc_handleGetOut.sqf index 756c14ec10..dea97eb600 100644 --- a/addons/captives/functions/fnc_handleGetOut.sqf +++ b/addons/captives/functions/fnc_handleGetOut.sqf @@ -4,8 +4,8 @@ * * Arguments: * 0: _vehicle - * 2: dunno - * 1: _unit + * 1: dunno + * 2: _unit * * Return Value: * The return value @@ -17,18 +17,21 @@ */ #include "script_component.hpp" -params ["_vehicle", "_dontcare","_unit"]; +params ["_vehicle", "", "_unit"]; +TRACE_2("params",_vehicle,_unit); if ((local _unit) && {_unit getVariable [QGVAR(isHandcuffed), false]}) then { private ["_cargoIndex"]; _cargoIndex = _unit getVariable [QGVAR(CargoIndex), -1]; - //If captive was not "unloaded", then move them back into the vehicle. - if (_cargoIndex != -1) exitWith { + if (_cargoIndex != -1) then { + //If captive was not "unloaded", then move them back into the vehicle. + TRACE_1("forcing back into vehicle",_cargoIndex); _unit moveInCargo [_vehicle, _cargoIndex]; + } else { + //Getting out of vehicle: + [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); + [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; - - [_unit, "ACE_AmovPercMstpScapWnonDnon", 2] call EFUNC(common,doAnimation); - [_unit, "ACE_AmovPercMstpScapWnonDnon", 1] call EFUNC(common,doAnimation); }; diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index 22736c8e59..dd9ac417c5 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -17,6 +17,7 @@ #include "script_component.hpp" params ["_unit","_state"]; +TRACE_2("params",_unit,_state); if (!local _unit) exitwith { ERROR("running surrender on remote unit"); diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf index 959bbd71b9..0839c61ea1 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveIn.sqf @@ -16,31 +16,17 @@ */ #include "script_component.hpp" +params ["_target","_vehicle"]; +TRACE_2("params",_target,_vehicle); + private ["_cargoIndex"]; -params ["_target","_vehicle"]; +_getSeat = [_vehicle] call FUNC(findEmptyNonFFVCargoSeat); +TRACE_1("free cargo seat",_getSeat); +_cargoIndex = _getSeat select 0; +if (_cargoIndex == -1) exitWith {ERROR("cargo index -1");}; -// _cargoIndex = [_vehicle] call FUNC(findEmptyNonFFVCargoSeat); -// if (_cargoIndex < 0) exitWith {ERROR("No Seat Avail");}; -// _target moveInCargo [_vehicle, _cargoIndex]; +_target moveInCargo [_vehicle, _cargoIndex]; +_target assignAsCargoIndex [_vehicle, _cargoIndex]; -_target moveInCargo _vehicle; - -_target assignAsCargo _vehicle; - -_cargoIndex = _vehicle getCargoIndex _target; _target setVariable [QGVAR(CargoIndex), _cargoIndex, true]; - -//Check if is a FFV turret: -_turretPath = []; -{ - _x params ["_xUnit", "", "", "_xTurretPath"]; - if (_target == _xUnit) exitWith {_turretPath = _xTurretPath}; -} forEach (fullCrew (vehicle _target)); -TRACE_1("turret Path",_turretPath); -if (_turretPath isEqualTo []) exitWith {}; - -TRACE_1("Setting FFV Animation",_newAnimation); - -[_target, "ACE_HandcuffedFFV", 2] call EFUNC(common,doAnimation); -[_target, "ACE_HandcuffedFFV", 1] call EFUNC(common,doAnimation); diff --git a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf index db8a7bd12e..ce44b5926f 100644 --- a/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf +++ b/addons/captives/functions/fnc_vehicleCaptiveMoveOut.sqf @@ -16,6 +16,8 @@ #include "script_component.hpp" params ["_unit"]; +TRACE_1("params",_unit); + _unit setVariable [QGVAR(CargoIndex), -1, true]; moveOut _unit; From ca1b47beb5e52b3c35e0073d0ae2227c977d8a24 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 23 Aug 2015 19:54:55 +0200 Subject: [PATCH 082/620] Use correct module group --- addons/repair/CfgVehicles.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 53f1aa7a46..d0f3645678 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -224,7 +224,7 @@ class CfgVehicles { scope = 2; displayName = CSTRING(AddSpareParts_Module_DisplayName); icon = QUOTE(PATHTOF(ui\Icon_Module_Repair_ca.paa)); - category = "ACE"; + category = "ACE_Logistics"; function = QFUNC(moduleAddSpareParts); functionPriority = 10; isGlobal = 0; From 7f2c91308c59e7ad989d79aca0358aa4f7598c5c Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:02:37 +0200 Subject: [PATCH 083/620] renamed already existing framework doc renamed already existing framework doc to fit with the rest --- .../{carry-drag.md => dragging-framework.md} | 19 +++++----- ...ion-configuration.md => frag-framework.md} | 2 +- ...dance.md => missile-guidance-framework.md} | 36 +++++++++---------- 3 files changed, 28 insertions(+), 29 deletions(-) rename documentation/framework/{carry-drag.md => dragging-framework.md} (91%) rename documentation/framework/{fragmentation-configuration.md => frag-framework.md} (99%) rename documentation/framework/{advanced-missile-guidance.md => missile-guidance-framework.md} (94%) diff --git a/documentation/framework/carry-drag.md b/documentation/framework/dragging-framework.md similarity index 91% rename from documentation/framework/carry-drag.md rename to documentation/framework/dragging-framework.md index cfa4eb13af..6a15f6f4fe 100644 --- a/documentation/framework/carry-drag.md +++ b/documentation/framework/dragging-framework.md @@ -1,6 +1,6 @@ --- layout: wiki -title: Carry and Drag System +title: Carry and Drag framework description: group: framework order: 5 @@ -9,10 +9,10 @@ parent: wiki ## 1. Config Values -``` +```c++ class CfgVehicles { class MyVehicle { - + ace_dragging_canDrag = 1; // can this object be dragged?; 1 yes, 0 no (0 default) ace_dragging_dragPosition[] = {0,1.2,0} // Offset of the model from the body while dragging, comparable to the offset in attachTo (It's the same actually) @@ -32,7 +32,7 @@ class CfgVehicles { Also note that if the item is too heavy you won't be able to carry / drag it, the mass is also affected by what's inside it.
-To bypass this empty the object and / or use setMass.
+To bypass this empty the object and / or use setMass.
### 2.1 Enabling / disabling dragging @@ -40,7 +40,7 @@ To bypass this empty the object and / or use setMass.
Enable the object to be dragged.
| Arguments | | ---------------| -------- | +--------------| -------- | 0 | Any object (Object) 1: | true to enable dragging, false to disable (Bool) 2:| Position offset for attachTo command (Array, optional; default: [0,0,0]) @@ -52,7 +52,7 @@ Return value: NONE
[foo,true,[0,2,0],45] call ace_dragging_fnc_setDraggable ``` | Arguments | | ---------------| -------- | +--------------| -------- | 0:| foo (my object) 1:| true (dragging is enabled) 2:| `[0,2,0]` (0 meters sideways, 2 meters forward, 0 meters upwards) @@ -64,7 +64,7 @@ Return value: NONE
``` | Arguments | | ---------------| -------- | +--------------| -------- | 0:| bar (object) 1:| false (dragging is disabled) 2:| 3 meters sideways, -2 meters backwards, 2 meters upwards @@ -75,7 +75,7 @@ Return value: NONE
Enable the object to be carried.
| Arguments | | ---------------| -------- | +--------------| -------- | 0 | Any object (Object) 1:| true to enable carrying, false to disable (Bool) 2:| Position offset for attachTo command (Array, optional; default: [0,1,1]) @@ -88,9 +88,8 @@ Return value: NONE
[foo,true,[0,3,1],10] call ace_dragging_fnc_setCarryable ``` | Arguments | | ---------------| -------- | +--------------| -------- | 0:| foo (my object) 1:| true (carrying is enabled) 2:| `[0,2,0]` (0 meters sideways, 3 meters forward, 1 meters upwards) 3:| 10 (the object is rotated by 10°) - diff --git a/documentation/framework/fragmentation-configuration.md b/documentation/framework/frag-framework.md similarity index 99% rename from documentation/framework/fragmentation-configuration.md rename to documentation/framework/frag-framework.md index 876074e6f4..14e55ecac8 100644 --- a/documentation/framework/fragmentation-configuration.md +++ b/documentation/framework/frag-framework.md @@ -1,6 +1,6 @@ --- layout: wiki -title: Fragmentation Configuration +title: Fragmentation framework description: The fragmentation system (ace_frag) in ACE3 is a significant improvement over the fragmentation system in ACE2. group: framework parent: wiki diff --git a/documentation/framework/advanced-missile-guidance.md b/documentation/framework/missile-guidance-framework.md similarity index 94% rename from documentation/framework/advanced-missile-guidance.md rename to documentation/framework/missile-guidance-framework.md index 14f1d1feae..32c4fa7888 100644 --- a/documentation/framework/advanced-missile-guidance.md +++ b/documentation/framework/missile-guidance-framework.md @@ -1,6 +1,6 @@ --- layout: wiki -title: Advanced Missile Guidance +title: Advanced Missile Guidance framework description: The ACE3 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 ACE3. group: framework order: 5 @@ -11,7 +11,7 @@ parent: wiki The ACE3 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 ACE3. 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 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. @@ -26,18 +26,18 @@ The framework is broken up into 3 major components: Locking Types, Seeker Types ### 2.1 Components #### 2.1.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. +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.1.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. #### 2.1.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. +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. ## 3. 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. +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. @@ -46,36 +46,36 @@ In the simplest sense, the entire system provides the flight trajectory of the m ## 4. Adding AMG to a missile ### 4.1 Enabling guidance on Ammo Types -``` +```c++ 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" }; - + 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" }; @@ -86,13 +86,13 @@ class CfgAmmo { ### 5.1 Adding seeker types and attack profiles -``` +```c++ class ace_missileguidance_attackProfiles{ class MyAttackProfile { name = ""; visualName = ""; description = ""; - + functionName = "my_fnc_doAttackProfile"; }; }; @@ -101,7 +101,7 @@ class ace_missileguidance_seekerTypes { name = ""; visualName = ""; description = ""; - + functionName = "my_fnc_doSeekerType"; }; }; From 4e0fb5020437dcdc4a8a2f6dd27b72955e0235a3 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:03:00 +0200 Subject: [PATCH 084/620] goggles framework --- documentation/framework/goggles-framework.md | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 documentation/framework/goggles-framework.md diff --git a/documentation/framework/goggles-framework.md b/documentation/framework/goggles-framework.md new file mode 100644 index 0000000000..f716532399 --- /dev/null +++ b/documentation/framework/goggles-framework.md @@ -0,0 +1,22 @@ +--- +layout: wiki +title: Goggles framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. + +```c++ +class CfgGlasses { + class None; + + class G_bananas:None{ + ACE_TintAmount=COLOUR*2; // Amount of tint, the color is picked from ACE_Color + ACE_Color[] = {0,0,-1}; // If anyone knows please do tell + ACE_Resistance = 1; // Resistance to breaking. + }; +}; +``` From 46eee0d368c00b8b71f7914f29d74ce7d7ffb2e9 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:03:08 +0200 Subject: [PATCH 085/620] hearing framework --- documentation/framework/hearing-framework.md | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 documentation/framework/hearing-framework.md diff --git a/documentation/framework/hearing-framework.md b/documentation/framework/hearing-framework.md new file mode 100644 index 0000000000..7b10a515bd --- /dev/null +++ b/documentation/framework/hearing-framework.md @@ -0,0 +1,25 @@ +--- +layout: wiki +title: Hearing framework +description: +group: framework +order: 5 +parent: wiki +--- + + +## 1. Adding ace_hearing support for helmets +```c++ +class CfgWeapons { + class H_HelmetB; + + class H_superHelmet: H_HelmetB { + GVAR(protection) = 0.80; // Protection against deafening (0 = less, 1 = more) + GVAR(lowerVolume) = 0.60; // Muffling of the sound (0 = less, 1 = more) + }; +}; +``` + +### 1.1 Notes +- The protection is a multiplier and not an absolute value, you can still be deafened with a value of 1. +- Same as above for the sound muffling. From 2e291c39cf49570a98406d9f7f63875d0cca7090 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:03:17 +0200 Subject: [PATCH 086/620] huntir framework --- documentation/framework/huntIR-framework.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 documentation/framework/huntIR-framework.md diff --git a/documentation/framework/huntIR-framework.md b/documentation/framework/huntIR-framework.md new file mode 100644 index 0000000000..5004331037 --- /dev/null +++ b/documentation/framework/huntIR-framework.md @@ -0,0 +1,21 @@ +--- +layout: wiki +title: huntIR framework +description: Explains how to add huntIR support to your weapons +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding huntIR support for your weapons + +```c++ +class CfgWeapons { + class Rifle_Base_F; + class your_rifle_base_class: Rifle_Base_F { + class your_gl_class: UGL_F { + magazines[] = {,"ACE_HuntIR_M203"}; + }; + }; +}; +``` From 0c4539b8589af2413e84546eeaeb1c8c3204c32f Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:03:31 +0200 Subject: [PATCH 087/620] javelin framework --- documentation/framework/javelin-framework.md | 24 ++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 documentation/framework/javelin-framework.md diff --git a/documentation/framework/javelin-framework.md b/documentation/framework/javelin-framework.md new file mode 100644 index 0000000000..1d36895fde --- /dev/null +++ b/documentation/framework/javelin-framework.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: javelin framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding javelin style locking to your Launcher + +```c++ +class CfgWeapons { + class your_launcher : launch_O_Titan_F { + ace_javelin_enabled = 1; // enable javelin style locking + weaponInfoType = "ACE_RscOptics_javelin"; + modelOptics = "\z\ace\addons\javelin\data\reticle_titan.p3d"; + + canLock = 0; // disable vanilla locking + lockingTargetSound[] = {"",0,1}; // locking sound + lockedTargetSound[] = {"",0,1}; // target acquired sound + }; +}; +``` From e71362462ac3218f9b43b20d8e8e65334b05ad75 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:03:53 +0200 Subject: [PATCH 088/620] nightvision framework --- .../framework/nightvision-framework.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 documentation/framework/nightvision-framework.md diff --git a/documentation/framework/nightvision-framework.md b/documentation/framework/nightvision-framework.md new file mode 100644 index 0000000000..b0861edb7e --- /dev/null +++ b/documentation/framework/nightvision-framework.md @@ -0,0 +1,24 @@ +--- +layout: wiki +title: nightvision framework +description: +group: framework +order: 5 +parent: wiki +--- +## 1. Configuring your NVGs + +```c++ +class CfgWeapons { + class Binocular; + class your_nvgs: Binocular { + displayName = "your nvg"; // name displayed in the inventory + ACE_NightVision_grain = 0.75; // amount of grain (dots) on the screen (0= less) + ACE_NightVision_blur = 0.055; // blur amount, (0= less) keep low + ACE_NightVision_radBlur = 0.001; // radial blur amount (0=less) keep low + }; +}; +``` + +- There's no escape here, you'll have to fiddle with the values to find the value that please you. +- `ACE_NightVision_grain` can be higher than 1, it's on 2.25 for gen1 goggles for example. From 0a012f94f85fd3df55305a4bccd606b8513a9c32 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 21:09:43 +0200 Subject: [PATCH 089/620] overheating framework --- .../framework/overheating-framework.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 documentation/framework/overheating-framework.md diff --git a/documentation/framework/overheating-framework.md b/documentation/framework/overheating-framework.md new file mode 100644 index 0000000000..c5a6ad5385 --- /dev/null +++ b/documentation/framework/overheating-framework.md @@ -0,0 +1,48 @@ +--- +layout: wiki +title: overheating framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding barrel switching + +```c++ +class CfgWeapons { + + class Rifle_Long_Base_F; + class your_MMG: Rifle_Long_Base_F { + + // Dispersion, SlowdownFactor and JamChance arrays have 4 values for different temperatures, which are interpolated between. + // These values correspond to temperatures Converted to real life values: 0: 0°C, 1: 333°C, 2: 666°C, 3: 1000°C. + + ACE_Overheating_allowSwapBarrel = 1; // 1 to enable barrel swap. 0 to disable. Meant for machine guns where you can easily swap the barrel without dismantling the whole weapon. + + // Dispersion in radians. First value is for temp. 0, second for temp. 1 and so on. Values inbetween get interpolated. Negative values get ignored and can be used to move the starting point to hotter temperatures. + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; + + // How much the projectile gets slowed down before leaving the barrel. 0.9 means the bullet will lose 10% velocity. Values inbetween get interpolated. Numbers greater 1 increase the velocity, smaller 1 decrease it. + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + + // Chance to jam the weapon. 0.0003 means 3 malfunctions on 10,000 rounds fired at this temperature. Values inbetween get interpolated. Negative values get ignored and can be used to move the starting point to hotter temperatures. + // When no reliable data exists for temperature vs. jam chance except MRBS, the following uniform criteria was adopted: [0, 1/MRBS, 5/MRBS, 25/MRBS]. + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; + }; +}; +``` + +## 2. Adding custom animations + +```c++ +class CfgWeapons { + + class Rifle_Long_Base_F; + class your_MMG: Rifle_Long_Base_F { + ACE_clearJamAction = "GestureReload"; // Custom jam clearing action. Default uses reload animation. + ACE_checkTemperatureAction = "Gear"; // Custom check temperature action. Default uses gear animation. + ACE_clearJamAction = ""; // Custom jam clearing action. Use empty string to undefine. + }; +}; +``` From 36f9ffd5dc00d013a128a3c90d9867b81c53bb09 Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 23:17:42 +0200 Subject: [PATCH 090/620] overheating framework - update forgot a lil' bit, fixed --- documentation/framework/overheating-framework.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/framework/overheating-framework.md b/documentation/framework/overheating-framework.md index c5a6ad5385..3d466c9449 100644 --- a/documentation/framework/overheating-framework.md +++ b/documentation/framework/overheating-framework.md @@ -12,7 +12,7 @@ parent: wiki ```c++ class CfgWeapons { - class Rifle_Long_Base_F; + class Rifle_Long_Base_F; // base class for LMGs and MMGs class your_MMG: Rifle_Long_Base_F { // Dispersion, SlowdownFactor and JamChance arrays have 4 values for different temperatures, which are interpolated between. From cde5f2812815538919015b363e818e4e78980eaf Mon Sep 17 00:00:00 2001 From: alganthe Date: Sun, 23 Aug 2015 23:56:48 +0200 Subject: [PATCH 091/620] parachute framework --- .../framework/parachute-framework.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 documentation/framework/parachute-framework.md diff --git a/documentation/framework/parachute-framework.md b/documentation/framework/parachute-framework.md new file mode 100644 index 0000000000..d05c330925 --- /dev/null +++ b/documentation/framework/parachute-framework.md @@ -0,0 +1,22 @@ +--- +layout: wiki +title: Parachute framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding a reserve parachute to an existing parachute + +```c++ +class CfgVehicles { + + class banana_parachute; // your parachute base class + + class banana_parachute_02: banana_parachute { // your parachute class + ace_hasReserveParachute = 1; // 1 = enabled, 0 = disabled + ace_reserveParachute = "ACE_ReserveParachute"; // classname of the reserve parachute + }; +}; +``` From 62f20f5756895c36e43a16190868a75d880bb4af Mon Sep 17 00:00:00 2001 From: alganthe Date: Mon, 24 Aug 2015 00:06:43 +0200 Subject: [PATCH 092/620] reloadlaunchers framework --- .../framework/reloadlaunchers-framework.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 documentation/framework/reloadlaunchers-framework.md diff --git a/documentation/framework/reloadlaunchers-framework.md b/documentation/framework/reloadlaunchers-framework.md new file mode 100644 index 0000000000..7d836ca8fd --- /dev/null +++ b/documentation/framework/reloadlaunchers-framework.md @@ -0,0 +1,21 @@ +--- +layout: wiki +title: reloadlaunchers framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding third party reload + +```c++ +class CfgWeapons { + + class Launcher_Base_F; // launcher base class + + class yourlauncher: Launcher_Base_F { // launcher class + ACE_reloadlaunchers_enabled = 1; // enable third party reload (your buddies reloading for you) + }; +}; +``` From e55c80429fee03fe4f436944b3647e6a92c0ea5e Mon Sep 17 00:00:00 2001 From: alganthe Date: Mon, 24 Aug 2015 00:43:31 +0200 Subject: [PATCH 093/620] scopes framework --- documentation/framework/scopes-framework.md | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 documentation/framework/scopes-framework.md diff --git a/documentation/framework/scopes-framework.md b/documentation/framework/scopes-framework.md new file mode 100644 index 0000000000..b13d8d5e9f --- /dev/null +++ b/documentation/framework/scopes-framework.md @@ -0,0 +1,32 @@ +--- +layout: wiki +title: Scopes framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. Adding scope adjustement support + +```c++ +class CfgWeapons { + class ItemCore; + class InventoryOpticsItem_Base_F; + + class yourHighPoweredScope : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; // max vertical adjustement limits + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; // max horizontal adjustement limits + ACE_ScopeAdjust_VerticalIncrement = 0.1; // vertical incrementation + ACE_ScopeAdjust_HorizontalIncrement = 0.1; // horizontal incrementation + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class Snip { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; +}; +``` From 152faf63886e43e752b8fc53498a5cf1b3b86a58 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 23 Aug 2015 17:50:11 +0100 Subject: [PATCH 094/620] Improve spectator interface entry and exit - Use a display rather than a dialog (contextually makes more sense). - Move the entry/exit functionality to the setSpectator function. Preserves the handleInterface function for purely display related events and makes more sense. - Fix missing semi-colon --- .../functions/fnc_handleInterface.sqf | 98 +------------------ .../spectator/functions/fnc_setSpectator.sqf | 88 ++++++++++++++++- 2 files changed, 88 insertions(+), 98 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 57026fb6fa..93c6ca3ddd 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -20,100 +20,6 @@ params ["_mode",["_args",[]]]; switch (toLower _mode) do { - // Safely open/close the interface - case "open": { - // Prevent reopening - if (GVAR(isSet)) exitWith {}; - GVAR(interrupts) = []; - - // Initalize camera variables - GVAR(camBoom) = 0; - GVAR(camDolly) = [0,0]; - GVAR(camGun) = false; - - // Initalize display variables - GVAR(ctrlKey) = false; - GVAR(heldKeys) = []; - GVAR(heldKeys) resize 255; - GVAR(mouse) = [false,false]; - GVAR(mousePos) = [0.5,0.5]; - GVAR(treeSel) = objNull; - - // Update units before opening to support pre-set camera unit - [] call FUNC(updateUnits); - - // Initalize the camera view - GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); - [] call FUNC(transitionCamera); - - // Close map and clear radio - openMap [false,false]; - clearRadio; - - // Disable BI damage effects - BIS_fnc_feedback_allowPP = false; - - // Close all existing dialogs - while {dialog} do { - closeDialog 0; - }; - - // Create the dialog - createDialog QGVAR(interface); - - // Cache and disable nametag settings - if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { - GVAR(nametagSettingCache) = [EGVAR(nametags,showPlayerNames), EGVAR(nametags,showNamesForAI)]; - EGVAR(nametags,showPlayerNames) = 0; - EGVAR(nametags,showNamesForAI) = false; - }; - }; - case "close": { - // Can't close a second time - if !(GVAR(isSet)) exitWith {}; - GVAR(interrupts) = []; - - // Terminate interface - while {dialog} do { - closeDialog 0; - }; - - // Kill the display - (findDisplay 12249) closeDisplay 0; - - // Terminate camera - GVAR(camera) cameraEffect ["terminate", "back"]; - camDestroy GVAR(camera); - - clearRadio; - - // Return to player view - player switchCamera "internal"; - - // Enable BI damage effects - BIS_fnc_feedback_allowPP = true; - - // Cleanup camera variables - GVAR(camera) = nil; - GVAR(camBoom) = nil; - GVAR(camDolly) = nil; - GVAR(camGun) = nil; - - // Cleanup display variables - GVAR(ctrlKey) = nil; - GVAR(heldKeys) = nil; - GVAR(mouse) = nil; - GVAR(mousePos) = nil; - GVAR(treeSel) = nil; - - // Reset nametag settings - if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { - EGVAR(nametags,showPlayerNames) = GVAR(nametagSettingCache) select 0; - EGVAR(nametags,showNamesForAI) = GVAR(nametagSettingCache) select 1; - GVAR(nametagSettingCache) = nil; - }; - }; - // Dialog events case "onload": { _args params ["_display"]; @@ -528,7 +434,7 @@ switch (toLower _mode) do { [nil,nil,nil, _newPos] call FUNC(setCameraAttributes); }; }; - // Break from interface for external events + // Interrupt events case "escape": { private "_dlg"; @@ -576,7 +482,7 @@ switch (toLower _mode) do { if !((isNull curatorCamera) && {isNull (GETMVAR(bis_fnc_moduleRemoteControl_unit,objNull))}) exitWith {}; // If still a spectator then re-enter the interface - [QGVAR(zeus),false] call FUNC(interrupt) + [QGVAR(zeus),false] call FUNC(interrupt); [_this select 1] call CBA_fnc_removePerFrameHandler; },0] call CBA_fnc_addPerFrameHandler; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 4f41e073d7..621100a5ba 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -25,17 +25,101 @@ params [["_set",true,[true]]]; // Only clients can be spectators if !(hasInterface) exitWith {}; +// Exit if no change +if (_set isEqualTo GVAR(isSet)) exitwith {}; + // Handle common addon audio if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableVolumeUpdate) = _set}; if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[player, _set] call TFAR_fnc_forceSpectator}; if (_set) then { - ["open"] call FUNC(handleInterface); + // Initalize camera variables + GVAR(camBoom) = 0; + GVAR(camDolly) = [0,0]; + GVAR(camGun) = false; + + // Initalize display variables + GVAR(ctrlKey) = false; + GVAR(heldKeys) = []; + GVAR(heldKeys) resize 255; + GVAR(mouse) = [false,false]; + GVAR(mousePos) = [0.5,0.5]; + GVAR(treeSel) = objNull; + + // Update units before opening to support pre-set camera unit + [] call FUNC(updateUnits); + + // Initalize the camera view + GVAR(camera) = "Camera" camCreate (ASLtoATL GVAR(camPos)); + [] call FUNC(transitionCamera); + + // Close map and clear radio + openMap [false,false]; + clearRadio; + + // Disable BI damage effects + BIS_fnc_feedback_allowPP = false; + + // Close any open dialogs + while {dialog} do { + closeDialog 0; + }; + + // Create the display + (findDisplay 46) createDisplay QGVAR(interface); + + // Cache and disable nametag settings + if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { + GVAR(nametagSettingCache) = [EGVAR(nametags,showPlayerNames), EGVAR(nametags,showNamesForAI)]; + EGVAR(nametags,showPlayerNames) = 0; + EGVAR(nametags,showNamesForAI) = false; + }; } else { - ["close"] call FUNC(handleInterface); + // Close any open dialogs (could be interrupts) + while {dialog} do { + closeDialog 0; + }; + + // Kill the display + (findDisplay 12249) closeDisplay 0; + + // Terminate camera + GVAR(camera) cameraEffect ["terminate", "back"]; + camDestroy GVAR(camera); + + clearRadio; + + // Return to player view + player switchCamera "internal"; + + // Enable BI damage effects + BIS_fnc_feedback_allowPP = true; + + // Cleanup camera variables + GVAR(camera) = nil; + GVAR(camBoom) = nil; + GVAR(camDolly) = nil; + GVAR(camGun) = nil; + + // Cleanup display variables + GVAR(ctrlKey) = nil; + GVAR(heldKeys) = nil; + GVAR(mouse) = nil; + GVAR(mousePos) = nil; + GVAR(treeSel) = nil; + + // Reset nametag settings + if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { + EGVAR(nametags,showPlayerNames) = GVAR(nametagSettingCache) select 0; + EGVAR(nametags,showNamesForAI) = GVAR(nametagSettingCache) select 1; + GVAR(nametagSettingCache) = nil; + }; }; +// Reset interruptions +GVAR(interrupts) = []; + // Mark spectator state for reference GVAR(isSet) = _set; From 40634318f00977c5047945cf7f2e09cea9ee8e04 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 23 Aug 2015 23:41:35 -0500 Subject: [PATCH 095/620] Move RemoveHandcuffs to Main (always blocked by hands) --- addons/captives/CfgVehicles.hpp | 32 +++++++++---------- .../functions/fnc_canRemoveHandcuffs.sqf | 3 +- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 774ecf87e3..afda86cfda 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -12,17 +12,17 @@ class CfgVehicles { exceptions[] = {}; icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); }; - class ACE_RemoveHandcuffs { - displayName = CSTRING(ReleaseCaptive); - selection = "righthand"; - distance = 2; - condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); - statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); - exceptions[] = {}; - icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); - }; class ACE_MainActions { + class ACE_RemoveHandcuffs { + displayName = CSTRING(ReleaseCaptive); + selection = "righthand"; + distance = 2; + condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)); + statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs)); + exceptions[] = {}; + icon = QUOTE(PATHTOF(UI\handcuff_ca.paa)); + }; class ACE_EscortCaptive { displayName = CSTRING(EscortCaptive); distance = 4; @@ -97,7 +97,7 @@ class CfgVehicles { }; }; -#define MACRO_LOADUNLOADCAPTIVE \ +#define MACRO_LOADCAPTIVE \ class ACE_Actions { \ class ACE_MainActions { \ class GVAR(LoadCaptive) { \ @@ -113,27 +113,27 @@ class CfgVehicles { class LandVehicle; class Car: LandVehicle { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class Tank: LandVehicle { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class Air; class Helicopter: Air { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class Plane: Air { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class Ship; class Ship_F: Ship { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class StaticWeapon: LandVehicle { - MACRO_LOADUNLOADCAPTIVE + MACRO_LOADCAPTIVE }; class Box_NATO_Support_F; diff --git a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf index e8bbe3b50e..e36ba5cd5b 100644 --- a/addons/captives/functions/fnc_canRemoveHandcuffs.sqf +++ b/addons/captives/functions/fnc_canRemoveHandcuffs.sqf @@ -20,4 +20,5 @@ params ["_unit", "_target"]; //Unit is handcuffed and not currently being escorted _target getVariable [QGVAR(isHandcuffed), false] && -{isNull (attachedTo _target)} +{isNull (attachedTo _target)} && +{(vehicle _target) == _target} From d3db5ad2ed58f1fbffd0de40f68b414134963a27 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 24 Aug 2015 00:07:40 -0500 Subject: [PATCH 096/620] Cleanup --- addons/captives/functions/fnc_canLoadCaptive.sqf | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/captives/functions/fnc_canLoadCaptive.sqf b/addons/captives/functions/fnc_canLoadCaptive.sqf index 254f0de693..a59c2e3be6 100644 --- a/addons/captives/functions/fnc_canLoadCaptive.sqf +++ b/addons/captives/functions/fnc_canLoadCaptive.sqf @@ -11,7 +11,7 @@ * The return value * * Example: - * [player, bob] call ACE_captives_fnc_canLoadCaptive + * [player, bob, car] call ACE_captives_fnc_canLoadCaptive * * Public: No */ @@ -32,13 +32,12 @@ if ((isNull _target) || {(vehicle _target) != _target} || {!(_target getVariable if (isNull _vehicle) then { //Looking at a captive unit, search for nearby vehicles with valid seats: { - // if (([_x] call FUNC(findEmptyNonFFVCargoSeat)) != -1) exitWith { if ((_x emptyPositions "cargo") > 0) exitWith { _vehicle = _x; }; } forEach (nearestObjects [_unit, ["Car", "Tank", "Helicopter", "Plane", "Ship"], 10]); } else { - // if (([_vehicle] call FUNC(findEmptyNonFFVCargoSeat)) == -1) then { + //We have a vehicle picked, make sure it has empty seats: if ((_vehicle emptyPositions "cargo") == 0) then { _vehicle = objNull; }; From 69c6d0a373202f77ae2ab84bef9ce63104180b41 Mon Sep 17 00:00:00 2001 From: alganthe Date: Mon, 24 Aug 2015 12:13:24 +0200 Subject: [PATCH 097/620] sitting framework --- documentation/framework/sitting-framework.md | 47 ++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 documentation/framework/sitting-framework.md diff --git a/documentation/framework/sitting-framework.md b/documentation/framework/sitting-framework.md new file mode 100644 index 0000000000..c707671c84 --- /dev/null +++ b/documentation/framework/sitting-framework.md @@ -0,0 +1,47 @@ +--- +layout: wiki +title: Sitting framework +description: +group: framework +order: 5 +parent: wiki +--- + +## 1. adding sitting support to a chair + +```c++ +class CfgVehicles { + + #define MACRO_SEAT_ACTION \ // better use a macro, nobody wants to type this two times or more, right ? + class ACE_Actions { \ + class ACE_MainActions { \ + displayName = "$STR_ACE_Interaction_MainAction"; \ + selection = ""; \ + distance = 1.5; \ + condition = "true"; \ + class ACE_sitting_Sit { \ + displayName = "$STR_ACE_Sitting_Sit"; \ + condition = "_this call ace_sitting_fnc_canSit"; \ + statement = "_this call ace_sitting_fnc_sit"; \ + showDisabled = 0; \ + priority = 0; \ + icon = "z\ace\sitting\UI\sit_ca.paa"; \ + }; \ + }; \ + }; + + class ThingX; // base class for objects + + class yourChair: ThingX { // your chair class + XEH_ENABLED; // enable XEH on that object class + MACRO_SEAT_ACTION // add the interaction + ACE_sitting_canSit = 1; // enable sitting + ACE_sitting_sitDirection = 180; // sitting direction in degrees + ACE_sitting_sitPosition[] = {0, -0.1, -0.45}; // sitting position in a X Y Z plane + ACE_sitting_sitRotation = 10; // maximum rotation possible in degrees, left and right. + }; +}; +``` + +- No escape possible here, you'll have to fiddle with the position direction and rotation to have a normal pose. +- For the sitRotation 10 is use for chairs with arms, 45 for the ones without. From 0fa10045d2507bf4a42247c5576c28d804a460af Mon Sep 17 00:00:00 2001 From: gienkov Date: Mon, 24 Aug 2015 14:35:15 +0200 Subject: [PATCH 098/620] pl translation of spectator --- addons/spectator/stringtable.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 895a279844..e6cf1d7fd4 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -27,6 +27,7 @@ Playable Units + Grywalne jednostki All units @@ -103,6 +104,7 @@ Spectator Units + Obserwatorzy Spectator Controls @@ -135,6 +137,7 @@ Free Camera + Kamera swobodna Camera Forward @@ -174,12 +177,15 @@ Speed Boost + Przyśpieszenie kamery Focus on Unit + Skup na jednostce Interface + Interfejs Toggle Interface @@ -211,6 +217,7 @@ Camera Attributes + Atrybuty kamery Next Camera @@ -238,21 +245,27 @@ Adjust Zoom + Reguluj zoom Adjust Speed + Reguluj prędkość Increment Zoom + Reguluj zoom (krok) Increment Speed + Reguluj prędkość (krok) Reset Zoom + Resetuj zoom Reset Speed + Resetuj prędkość - + \ No newline at end of file From e152af7f453e7f43f166b642932319f0186f34ab Mon Sep 17 00:00:00 2001 From: alganthe Date: Mon, 24 Aug 2015 14:59:13 +0200 Subject: [PATCH 099/620] updated settings framework --- documentation/framework/settings-framework.md | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/documentation/framework/settings-framework.md b/documentation/framework/settings-framework.md index 456a294c04..107e9378bf 100644 --- a/documentation/framework/settings-framework.md +++ b/documentation/framework/settings-framework.md @@ -36,8 +36,8 @@ class ACE_module_sampleSetting { Settings are defined from the mod's config but can be adjusted through the following methods: -* Optional config entries -* Mission modules +- Optional config entries +- Mission modules ## 2. Load order @@ -58,18 +58,18 @@ In the 'how do they work' chapter an example of settings was shown. This is the The server config setting entries are done through our optional `ace_server.pbo`, which can be found in the optionals folder of `@ace`. It also contains a `userconfig` folder, which inside contains the file `ace\serverconfig.hpp`. This is the location where ACE3 settings are placed. There is no need for a sub-class. -### 3.1 Getting all the settings! +### 3.1 Exporting the settings ACE3 contains a lot of settings, for that reason tweaking everything to your liking manually can be quite a task. We have provided the option to export all settings in the editor (single-player). For this, follow these simple steps: -* Open the editor (single-player). -* Under modules (F7), find ACE, `Allow Config Export [ACE]`. -* Place down the module, ensure that the `Allow` parameter is set to `Yes`. -* Press preview, once in the game, press Esc and open the ACE3 Options dialog (top left) -* This is the dialog where you can modify client side settings. On the bottom left of it, you will now see a button called `Config Export`. Press it and a new dialog opens. -* You are now in the dialog that allows you to adjust all settings from ACE3. Tweak this to your liking. -* Once you are done tweaking, press the `Export` button and all settings will be copied to your clipboard. -* Paste the settings in your `serverconfig.hpp` file and you're done. +- Open the editor (single-player). +- Under modules (F7), find ACE, `Allow Config Export [ACE]`. +- Place down the module, ensure that the `Allow` parameter is set to `Yes`. +- Press preview, once in the game, press Esc and open the ACE3 Options dialog (top left) +- This is the dialog where you can modify client side settings. On the bottom left of it, you will now see a button called `Config Export`. Press it and a new dialog opens. +- You are now in the dialog that allows you to adjust all settings from ACE3. Tweak this to your liking. +- Once you are done tweaking, press the `Export` button and all settings will be copied to your clipboard. +- Paste the settings in your `serverconfig.hpp` file and you're done. Note that the format copied to your clipboard by this can also be used in the mission config (`description.ext`), as long as they are in the class `ACE_Settings`. @@ -79,6 +79,21 @@ class ACE_Settings { }; ``` +#### 3.1.1 Notes + +- If a setting is forced it cannot be changed further down the line, see `2. Load order` for the hierarchy. +- Client settings can be forced, include them while exporting (the button is right next to export on the UI) +- You can use `ACE_common_forceAllSettings` to force settings in a mission, it will lock **all** the settings (which are not already forced) to the values they are set in either modules or server config + - example of `ACE_common_forceAllSettings` + ```c++ + //^^ rest of your description.ext + //------------------------- ACE settings + class ACE_common_forceAllSettings { + value = 1; + typeName = "BOOL"; + }; + ``` + ### 3.2 Loading up the server config As stated before, the server config gets loaded through the optional `ace_server.pbo`. This PBO is only required (and should only be used) on the server - clients do not need to have this! It is for this reason we have not signed this PBO. From 8553396b1d6b5e10af5d108f0fbffc4808ec3698 Mon Sep 17 00:00:00 2001 From: alganthe Date: Mon, 24 Aug 2015 15:06:24 +0200 Subject: [PATCH 100/620] issue reporting guide update --- documentation/user/how-to-report-an-issue.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/documentation/user/how-to-report-an-issue.md b/documentation/user/how-to-report-an-issue.md index 96f2dd76c3..4960baa3af 100644 --- a/documentation/user/how-to-report-an-issue.md +++ b/documentation/user/how-to-report-an-issue.md @@ -1,7 +1,7 @@ --- layout: wiki title: How to report an issue -description: If you've found an issue with ACE3 please read this entry before reporting it. +description: If you've found an issue with ACE3 please read this entry before reporting it. group: user order: 10 parent: wiki @@ -24,6 +24,8 @@ Indicate if the issue appears on stable or development version. In case it is th Head over to the ACE3 GitHub issue tracker and press the "New issue" button in the top right corner. Add a descriptive title and copy the following issue template in to the text area: ``` +*PRO-TIP :The english language allows individuals to correct each other's mistakes in a respectful manner.* + ACE3 Version: 3.x.x (indicate if stable or dev, if dev indicate the commit the version is based on) From 203c4d8a6ca46551b6535c4581d37a76bf48c23e Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Mon, 24 Aug 2015 17:10:54 +0200 Subject: [PATCH 101/620] add WaitUntilAndExecute --- addons/common/XEH_postInit.sqf | 16 ++++++++++++-- .../functions/fnc_waitUnilAndExecute.sqf | 22 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 addons/common/functions/fnc_waitUnilAndExecute.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index bf699ab83c..e57dab3521 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -3,9 +3,9 @@ //IGNORE_PRIVATE_WARNING("_handleNetEvent", "_handleRequestAllSyncedEvents", "_handleRequestSyncedEvent", "_handleSyncedEvent"); -//Singe PFEH to handle execNextFrame and waitAndExec: +//Singe PFEH to handle execNextFrame, waitAndExec and waitUntilAndExec: [{ - private ["_entry"]; + private ["_entry", "_deleted"]; //Handle the waitAndExec array: while {((count GVAR(waitAndExecArray)) > 0) && {((GVAR(waitAndExecArray) select 0) select 0) <= ACE_Time}} do { @@ -17,6 +17,18 @@ { (_x select 0) call (_x select 1); } forEach GVAR(nextFrameBufferA); + + + _deleted = 0; + { + _x params ["_condition", "_code", "_args"]; + if ((_args call _condition)) then { + GVAR(waitUntilAndExecArray) deleteAt (_forEachIndex + _deleted); + _deleted = _deleted + 1; + _args call _code; + }; + } forEach GVAR(waitUntilAndExecArray); + //Swap double-buffer: GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB); GVAR(nextFrameBufferB) = []; diff --git a/addons/common/functions/fnc_waitUnilAndExecute.sqf b/addons/common/functions/fnc_waitUnilAndExecute.sqf new file mode 100644 index 0000000000..de4623b4ae --- /dev/null +++ b/addons/common/functions/fnc_waitUnilAndExecute.sqf @@ -0,0 +1,22 @@ +/* + * Author: joko // Jonas + * + * Executes a code once with after the Condition is True, using a PFH + * + * Argument: + * 0: Condition + * 1: Code to execute + * 2: Parameters to run the code with + + * + * Return value: + * None + * + * Example: + * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player], false] call ace_common_fnc_waitAndExecute + * + * Public: No + */ +#include "script_component.hpp" + +GVAR(waitUntilAndExecArray) pushBack _this; From 288457d3665d43125a60ccfff56f6b462205ad8f Mon Sep 17 00:00:00 2001 From: Grzegorz Date: Mon, 24 Aug 2015 17:43:02 +0200 Subject: [PATCH 102/620] fix --- addons/spectator/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index e6cf1d7fd4..5c24224b72 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -104,7 +104,7 @@ Spectator Units - Obserwatorzy + Jednostki obserwatora Spectator Controls @@ -268,4 +268,4 @@ Resetuj prędkość - \ No newline at end of file + From ef2924623f05142ea960e857ed230aec02ba9547 Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 24 Aug 2015 21:45:02 +0200 Subject: [PATCH 103/620] Added common parseList function for module list parsing --- addons/common/XEH_preInit.sqf | 1 + .../functions/fnc_assignObjectsInList.sqf | 39 +++++------- addons/common/functions/fnc_parseList.sqf | 61 +++++++++++++++++++ addons/slideshow/XEH_preInit.sqf | 1 - addons/slideshow/functions/fnc_makeList.sqf | 57 ----------------- addons/slideshow/functions/fnc_moduleInit.sqf | 8 +-- 6 files changed, 80 insertions(+), 87 deletions(-) create mode 100644 addons/common/functions/fnc_parseList.sqf delete mode 100644 addons/slideshow/functions/fnc_makeList.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6fdf99113c..705e8e8b4b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -144,6 +144,7 @@ PREP(numberToDigitsString); PREP(numberToString); PREP(onAnswerRequest); PREP(owned); +PREP(parseList); PREP(player); PREP(playerSide); PREP(positionToASL); diff --git a/addons/common/functions/fnc_assignObjectsInList.sqf b/addons/common/functions/fnc_assignObjectsInList.sqf index 0d10066d01..89c8a3352d 100644 --- a/addons/common/functions/fnc_assignObjectsInList.sqf +++ b/addons/common/functions/fnc_assignObjectsInList.sqf @@ -4,47 +4,36 @@ * Used by moduleAssign* within various parts of the ACE3 project. * * Arguments: - * 0: list - * 1: variableName - * 2: value + * 0: List + * 1: Variable Name + * 2: Value * 3: Global * * Return Value: - * None + * None + * + * Example: + * ["text", "variable", value, true] call ace_common_fnc_assignObjectsInList * * Public: No */ - +#define DEBUG_MODE_FULL #include "script_component.hpp" -private ["_splittedList", "_nilCheckPassedList"]; params ["_list", "_variable", "_setting", "_global"]; if (typeName _list == "STRING") then { - _splittedList = [_list, ","] call BIS_fnc_splitString; - _nilCheckPassedList = ""; - { - _x = [_x] call FUNC(stringRemoveWhiteSpace); - if !(isnil _x) then { - if (_nilCheckPassedList == "") then { - _nilCheckPassedList = _x; - } else { - _nilCheckPassedList = _nilCheckPassedList + ","+ _x; - }; - }; - }foreach _splittedList; - - _list = [] call compile format["[%1]",_nilCheckPassedList]; + _list = [_list, true, true] call FUNC(parseList); + TRACE_1("Parsed",_list) }; { - if (!isnil "_x") then { + if (!isNil "_x") then { if (typeName _x == typeName objNull) then { if (local _x) then { - _x setvariable [_variable, _setting, _global]; + _x setVariable [_variable, _setting, _global]; + TRACE_4("Set variable",_x,_variable,_setting,_global); }; }; }; -}foreach _list; - -true +} count _list; diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf new file mode 100644 index 0000000000..20630e1109 --- /dev/null +++ b/addons/common/functions/fnc_parseList.sqf @@ -0,0 +1,61 @@ +/* + * Author: Jonpas + * Makes a list from a string using comma as a delimiter, optionally trim or remove whitespace and check each for object existence. + * + * Arguments: + * 0: List + * 1: Remove or Trim Whitespace (default: false (trim)) + * 2: Check Nil (default: false) + * + * Return Value: + * Parsed List + * + * Example: + * ["text", true, false] call ace_common_fnc_parseList + * + * Public: No + */ +#define DEBUG_MODE_FULL +#include "script_component.hpp" + +private ["_splittedList", "_whitespaceList", "_nilCheckedList"]; +params ["_list", ["_removeWhitespace", false], ["_checkNil", false]]; + + +// Split using comma delimiter +_splittedList = [_list, ","] call BIS_fnc_splitString; + + +// Remove or Trim Whitespace +_whitespaceList = []; +{ + if (_removeWhitespace) then { + _whitespaceList pushBack ([_x] call FUNC(stringRemoveWhiteSpace)); + } else { + _whitespaceList pushBack ([_x] call CBA_fnc_trim); + }; + nil +} count _splittedList; +_list = _whitespaceList; + + +// Check for object existence +_nilCheckedList = ""; +if (_checkNil) then { + { + if !(isNil _x) then { + if (_nilCheckedList == "") then { + _nilCheckedList = _x; + } else { + _nilCheckedList = _nilCheckedList + "," + _x; + }; + }; + } count _list; + + // Add Array characters and parse into array + _list = [] call compile format ["[%1]", _nilCheckedList]; +}; + +TRACE_4("Lists",_splittedList,_whitespaceList,_nilCheckedList,_list); + +_list diff --git a/addons/slideshow/XEH_preInit.sqf b/addons/slideshow/XEH_preInit.sqf index 0f9e270896..152c02ec77 100644 --- a/addons/slideshow/XEH_preInit.sqf +++ b/addons/slideshow/XEH_preInit.sqf @@ -5,7 +5,6 @@ ADDON = false; PREP(addSlideActions); PREP(autoTransition); PREP(createSlideshow); -PREP(makeList); PREP(moduleInit); GVAR(slideshows) = 0; diff --git a/addons/slideshow/functions/fnc_makeList.sqf b/addons/slideshow/functions/fnc_makeList.sqf deleted file mode 100644 index 6736fabbdb..0000000000 --- a/addons/slideshow/functions/fnc_makeList.sqf +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Author: Jonpas - * Makes a list from a string using comma as a delimiter, optionally remove whitespace and check each for object existence. - * - * Arguments: - * 0: Text - * 1: Trim Whitespace - * 2: Check Nil - * - * Return Value: - * Parsed List - * - * Example: - * ["text", true, false] call ace_slideshow_fnc_makeList - * - * Public: No - */ -#include "script_component.hpp" - -params ["_list", "_trimWhitespace", "_checkNil"]; - -private ["_splittedList", "_listTrimmedWhitespace", "_nilCheckPassedList"]; - -// Split using comma delimiter -_splittedList = [_list, ","] call BIS_fnc_splitString; - -// Remove whitespace -_listTrimmedWhitespace = []; -if (_trimWhitespace) then { - { - _listTrimmedWhitespace pushBack ([_x] call CBA_fnc_trim); - nil - } count _splittedList; - _list = _listTrimmedWhitespace; -}; - -// Check for object existence -_nilCheckPassedList = ""; -if (_checkNil) then { - { - if !(isNil _x) then { - if (_nilCheckPassedList == "") then { - _nilCheckPassedList = _x; - } else { - _nilCheckPassedList = _nilCheckPassedList + "," + _x; - }; - }; - } count _list; - - // Add Array characters and parse into array - _list = "[" + _nilCheckPassedList + "]"; - _list = [] call compile _list; -}; - -TRACE_4("Lists",_splittedList,_listTrimmedWhitespace,_nilCheckPassedList,_list); - -_list // return diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index da1724dfcc..e4f7fbb56c 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -25,10 +25,10 @@ if !(_activated) exitWith {}; if (isNull _logic) exitWith {}; // Extract variables from logic -_objects = [_logic getVariable ["Objects", ""], true, true] call FUNC(makeList); -_controllers = [_logic getVariable ["Controllers", ""], true, true] call FUNC(makeList); -_images = [_logic getVariable ["Images", ""], true, false] call FUNC(makeList); -_names = [_logic getVariable ["Names", ""], true, false] call FUNC(makeList); +_objects = [_logic getVariable ["Objects", ""], true, true] call EFUNC(common,parseList); +_controllers = [_logic getVariable ["Controllers", ""], true, true] call EFUNC(common,parseList); +_images = [_logic getVariable ["Images", ""], false, false] call EFUNC(common,parseList); +_names = [_logic getVariable ["Names", ""], false, false] call EFUNC(common,parseList); _duration = _logic getVariable ["Duration", 0]; // Prepare with actions From 5b6429f23e84bd3af7439d88cd5aa9860f72006a Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 24 Aug 2015 21:55:48 +0200 Subject: [PATCH 104/620] Made more modules use assignObjectsInList common function --- .../functions/fnc_moduleAssignMedicRoles.sqf | 59 ++++-------------- .../fnc_moduleAssignMedicalVehicle.sqf | 60 ++++--------------- .../functions/fnc_moduleAssignEngineer.sqf | 8 +-- .../fnc_moduleAssignRepairFacility.sqf | 6 +- .../fnc_moduleAssignRepairVehicle.sqf | 8 +-- 5 files changed, 30 insertions(+), 111 deletions(-) diff --git a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf b/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf index 1c26eb53d4..a884bfe300 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicRoles.sqf @@ -1,63 +1,26 @@ /* * Author: Glowbal - * Assign a medical role to a unit + * Assign a medical role to a unit. * * Arguments: - * 0: The module logic - * 1: units - * 2: activated + * 0: The module logic + * 1: Synchronized units + * 2: Activated * * Return Value: * None * * Public: No */ - #include "script_component.hpp" -private ["_logic","_setting","_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +params ["_logic"]; if (!isNull _logic) then { - _list = _logic getvariable ["EnableList",""]; + private ["_list", "_setting"]; + _list = _logic getVariable ["EnableList", ""]; + _setting = _logic getVariable ["role", 0]; - _splittedList = [_list, ","] call BIS_fnc_splitString; - _nilCheckPassedList = ""; - { - _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); - if !(isnil _x) then { - if (_nilCheckPassedList == "") then { - _nilCheckPassedList = _x; - } else { - _nilCheckPassedList = _nilCheckPassedList + ","+ _x; - }; - }; - }foreach _splittedList; - - _list = "[" + _nilCheckPassedList + "]"; - _parsedList = [] call compile _list; - _setting = _logic getvariable ["role",0]; - _objects = synchronizedObjects _logic; - if (!(_objects isEqualTo []) && _parsedList isEqualTo []) then { - { - if (!isnil "_x") then { - if (typeName _x == typeName objNull) then { - if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; - }; - }; - }; - }foreach _objects; - }; - { - if (!isnil "_x") then { - if (typeName _x == typeName objNull) then { - if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; - }; - }; - }; - }foreach _parsedList; - }; - -true \ No newline at end of file + [_list, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); + [synchronizedObjects _logic, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); +}; diff --git a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf index af6de73ce1..d073ffaecb 100644 --- a/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf +++ b/addons/medical/functions/fnc_moduleAssignMedicalVehicle.sqf @@ -1,64 +1,26 @@ /* * Author: Glowbal - * Assign vehicle as a medical vehicle + * Assign vehicle as a medical vehicle. * * Arguments: - * 0: The module logic - * 1: units - * 2: activated + * 0: The module logic + * 1: Synchronized units + * 2: Activated * * Return Value: * None * * Public: No */ - - #include "script_component.hpp" -private ["_logic","_setting","_objects", "_list", "_splittedList", "_nilCheckPassedList", "_parsedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; +params ["_logic"]; if (!isNull _logic) then { - _list = _logic getvariable ["EnableList",""]; + private ["_list", "_setting"]; + _list = _logic getVariable ["EnableList", ""]; + _setting = _logic getVariable ["enabled", 0]; - _splittedList = [_list, ","] call BIS_fnc_splitString; - _nilCheckPassedList = ""; - { - _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); - if !(isnil _x) then { - if (_nilCheckPassedList == "") then { - _nilCheckPassedList = _x; - } else { - _nilCheckPassedList = _nilCheckPassedList + ","+ _x; - }; - }; - }foreach _splittedList; - - _list = "[" + _nilCheckPassedList + "]"; - _parsedList = [] call compile _list; - _setting = _logic getvariable ["enabled", 0]; - _objects = synchronizedObjects _logic; - if (!(_objects isEqualTo []) && _parsedList isEqualTo []) then { - { - if (!isnil "_x") then { - if (typeName _x == typeName objNull) then { - if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; - }; - }; - }; - }foreach _objects; - }; - { - if (!isnil "_x") then { - if (typeName _x == typeName objNull) then { - if (local _x) then { - _x setvariable [QGVAR(medicClass), _setting, true]; - }; - }; - }; - }foreach _parsedList; - }; - -true; + [_list, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); + [synchronizedObjects _logic, QGVAR(medicClass), _setting, true] call EFUNC(common,assignObjectsInList); +}; diff --git a/addons/repair/functions/fnc_moduleAssignEngineer.sqf b/addons/repair/functions/fnc_moduleAssignEngineer.sqf index 9fb9ed8431..240a8c3b62 100644 --- a/addons/repair/functions/fnc_moduleAssignEngineer.sqf +++ b/addons/repair/functions/fnc_moduleAssignEngineer.sqf @@ -21,11 +21,9 @@ params ["_logic"]; if (!isNull _logic) then { private ["_list", "_setting"]; - _list = _logic getVariable ["EnableList",""]; - _setting = _logic getVariable ["role",0]; + _list = _logic getVariable ["EnableList", ""]; + _setting = _logic getVariable ["role", 0]; [_list, "ACE_IsEngineer", _setting, true] call EFUNC(common,assignObjectsInList); [synchronizedObjects _logic, "ACE_IsEngineer", _setting, true] call EFUNC(common,assignObjectsInList); - }; - -true +}; diff --git a/addons/repair/functions/fnc_moduleAssignRepairFacility.sqf b/addons/repair/functions/fnc_moduleAssignRepairFacility.sqf index 00cb847866..7150d0226b 100644 --- a/addons/repair/functions/fnc_moduleAssignRepairFacility.sqf +++ b/addons/repair/functions/fnc_moduleAssignRepairFacility.sqf @@ -21,11 +21,9 @@ params ["_logic"]; if (!isNull _logic) then { private ["_list", "_setting"]; - _list = _logic getVariable ["EnableList",""]; - _setting = _logic getVariable ["role",0]; + _list = _logic getVariable ["EnableList", ""]; + _setting = _logic getVariable ["role", 0]; [_list, "ACE_isRepairFacility", _setting, true] call EFUNC(common,assignObjectsInList); [synchronizedObjects _logic, "ACE_isRepairFacility", _setting, true] call EFUNC(common,assignObjectsInList); }; - -true diff --git a/addons/repair/functions/fnc_moduleAssignRepairVehicle.sqf b/addons/repair/functions/fnc_moduleAssignRepairVehicle.sqf index 69d2a2c52f..647b5fe52c 100644 --- a/addons/repair/functions/fnc_moduleAssignRepairVehicle.sqf +++ b/addons/repair/functions/fnc_moduleAssignRepairVehicle.sqf @@ -21,11 +21,9 @@ params ["_logic"]; if (!isNull _logic) then { private ["_list", "_setting"]; - _list = _logic getVariable ["EnableList",""]; - _setting = _logic getVariable ["role",0]; + _list = _logic getVariable ["EnableList", ""]; + _setting = _logic getVariable ["role", 0]; [_list, "ACE_isRepairVehicle", _setting, true] call EFUNC(common,assignObjectsInList); [synchronizedObjects _logic, "ACE_isRepairVehicle", _setting, true] call EFUNC(common,assignObjectsInList); - }; - -true +}; From 3f41882a0673b2bdf8cbf1a42319b431c140fb9f Mon Sep 17 00:00:00 2001 From: jonpas Date: Mon, 24 Aug 2015 21:56:21 +0200 Subject: [PATCH 105/620] Removed debug --- addons/common/functions/fnc_assignObjectsInList.sqf | 1 - addons/common/functions/fnc_parseList.sqf | 1 - 2 files changed, 2 deletions(-) diff --git a/addons/common/functions/fnc_assignObjectsInList.sqf b/addons/common/functions/fnc_assignObjectsInList.sqf index 89c8a3352d..eddd792500 100644 --- a/addons/common/functions/fnc_assignObjectsInList.sqf +++ b/addons/common/functions/fnc_assignObjectsInList.sqf @@ -17,7 +17,6 @@ * * Public: No */ -#define DEBUG_MODE_FULL #include "script_component.hpp" params ["_list", "_variable", "_setting", "_global"]; diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf index 20630e1109..8cce3c1837 100644 --- a/addons/common/functions/fnc_parseList.sqf +++ b/addons/common/functions/fnc_parseList.sqf @@ -15,7 +15,6 @@ * * Public: No */ -#define DEBUG_MODE_FULL #include "script_component.hpp" private ["_splittedList", "_whitespaceList", "_nilCheckedList"]; From 126ae37a9a7edfb70de59d05639dee0a6f402ae9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 02:33:34 +0200 Subject: [PATCH 106/620] Cleaned up dragging-framework --- documentation/framework/dragging-framework.md | 125 +++++++++--------- 1 file changed, 62 insertions(+), 63 deletions(-) diff --git a/documentation/framework/dragging-framework.md b/documentation/framework/dragging-framework.md index 6a15f6f4fe..1038815cdc 100644 --- a/documentation/framework/dragging-framework.md +++ b/documentation/framework/dragging-framework.md @@ -1,7 +1,7 @@ --- layout: wiki -title: Carry and Drag framework -description: +title: Dragging/Carrying Framework +description: Explains how to set-up dragging and carrying of objects with the ACE3 dragging and carrying system. group: framework order: 5 parent: wiki @@ -12,84 +12,83 @@ parent: wiki ```c++ class CfgVehicles { class MyVehicle { + // Dragging + ace_dragging_canDrag = 1; // Can be dragged (0-no, 1-yes) + ace_dragging_dragPosition[] = {0, 1.2, 0}; // Offset of the model from the body while dragging (same as attachTo) + ace_dragging_dragDirection = 0; // Model direction while dragging (same as setDir after attachTo) - - ace_dragging_canDrag = 1; // can this object be dragged?; 1 yes, 0 no (0 default) - ace_dragging_dragPosition[] = {0,1.2,0} // Offset of the model from the body while dragging, comparable to the offset in attachTo (It's the same actually) - ace_dragging_dragDirection = 0; // how much degrees is the model rotatated after dragging it (a global setDir after attachTo) - - ace_dragging_canCarry = 1; // can this object be carried?; 1 yes, 0 no (0 default) - ace_dragging_carryPosition[] = {0,1.2,0}; // Same as drag, but for carrying objects - ace_dragging_carryDirection = 0; // Same as drag, but for carrying objects - + // Carrying + ace_dragging_canCarry = 1; // Can be carried (0-no, 1-yes) + ace_dragging_carryPosition[] = {0, 1.2, 0}; // Offset of the model from the body while dragging (same as attachTo) + ace_dragging_carryDirection = 0; // Model direction while dragging (same as setDir after attachTo) }; }; ``` + ## 2. Functions -**NOTE THAT THE FOLLOWING FUNCTIONS ARE NOT PUBLIC AND THUS MAY CHANGE IN THE FUTURE.**
+
+
Note:
+

The following functions are NOT public and are likely to change in the future!

+
- -Also note that if the item is too heavy you won't be able to carry / drag it, the mass is also affected by what's inside it.
-To bypass this empty the object and / or use setMass.
+You will **not** be able to carry / drag objects that are too heavy, the mass is also affected by what is inside the object. To bypass this empty the object and/or use `setMass`. ### 2.1 Enabling / disabling dragging -`ace_dragging_fnc_setDraggable.`
-Enable the object to be dragged.
+`ace_dragging_fnc_setDraggable` -| Arguments | | ---------------| -------- | -0 | Any object (Object) -1: | true to enable dragging, false to disable (Bool) -2:| Position offset for attachTo command (Array, optional; default: [0,0,0]) -3: | Direction in degree to rotate the object after attachTo (Number, optional; default: 0) -Return value: NONE
+ | Arguments | Type | Optional (default value) | +- | --------- | ---- | ------------------------ | +0 | Any object | Object | Required +1 | Enable dragging, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +**R** | None | None | Return value -#### 2.1.1 example 1: -``` -[foo,true,[0,2,0],45] call ace_dragging_fnc_setDraggable -``` -| Arguments | | ---------------| -------- | -0:| foo (my object) -1:| true (dragging is enabled) -2:| `[0,2,0]` (0 meters sideways, 2 meters forward, 0 meters upwards) -3:| 45 (the object is rotated by 45°) +#### 2.1.1 Example 1 -#### 2.1.2 example 2 -``` -[bar,false,[3,-2,2],20] call ace_dragging_fnc_setDraggable -``` +`[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;` + + | Arguments | Explanation | +- | --------- | ----------- | +0 | `foo` | My object +1 | `true` | Dragging is enabled +2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards +3 | `45` | Rotated by 45° + +#### 2.1.2 Example 2 + +`[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;` + + | Arguments | Explanation | +- | --------- | ----------- | +0 | `bar` | My object +1 | `false` | Dragging is disabled +2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards +3 | `20` | Rotated by 20° -| Arguments | | ---------------| -------- | -0:| bar (object) -1:| false (dragging is disabled) -2:| 3 meters sideways, -2 meters backwards, 2 meters upwards -3:| the object is rotated by 20° ### 2.2 Enabling / disabling carrying -`ace_dragging_fnc_setCarryable.`
-Enable the object to be carried.
-| Arguments | | ---------------| -------- | -0 | Any object (Object) -1:| true to enable carrying, false to disable (Bool) -2:| Position offset for attachTo command (Array, optional; default: [0,1,1]) -3:| Direction in degree to rotate the object after attachTo (Number, optional; default: 0) -Return value: NONE
+`ace_dragging_fnc_setCarryable` + | Arguments | Type | Optional (default value) +- | --------- | ---- | ------------------------ | +0 | Any object | Object | Required +1 | Enable carrying, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +**R** | None | None | Return value -#### 2.1.1 example 1: -``` -[foo,true,[0,3,1],10] call ace_dragging_fnc_setCarryable -``` -| Arguments | | ---------------| -------- | -0:| foo (my object) -1:| true (carrying is enabled) -2:| `[0,2,0]` (0 meters sideways, 3 meters forward, 1 meters upwards) -3:| 10 (the object is rotated by 10°) +#### 2.2.1 Example + +`[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;` + + | Arguments | Explanation | +- | --------- | ----------- | +0 | `foo` | My object +1 | `true`| Carrying is enabled +2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards +3 | `10` | Rotated by 10° From ba53ce88a8d8d067633f55291892afcc9c4ad7a4 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 02:56:11 +0200 Subject: [PATCH 107/620] Updated frag-framework, fixed typo in dragging-framework --- documentation/framework/dragging-framework.md | 18 +-- documentation/framework/frag-framework.md | 139 ++++++++++++------ 2 files changed, 99 insertions(+), 58 deletions(-) diff --git a/documentation/framework/dragging-framework.md b/documentation/framework/dragging-framework.md index 1038815cdc..661dd2d9c7 100644 --- a/documentation/framework/dragging-framework.md +++ b/documentation/framework/dragging-framework.md @@ -39,8 +39,8 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `ace_dragging_fnc_setDraggable` - | Arguments | Type | Optional (default value) | -- | --------- | ---- | ------------------------ | + | Arguments | Type | Optional (default value) +- | --------- | ---- | ------------------------ 0 | Any object | Object | Required 1 | Enable dragging, true to enable, false to disable | Boolean | Required 2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) @@ -51,8 +51,8 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;` - | Arguments | Explanation | -- | --------- | ----------- | + | Arguments | Explanation +- | --------- | ----------- 0 | `foo` | My object 1 | `true` | Dragging is enabled 2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards @@ -62,8 +62,8 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;` - | Arguments | Explanation | -- | --------- | ----------- | + | Arguments | Explanation +- | --------- | ----------- 0 | `bar` | My object 1 | `false` | Dragging is disabled 2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards @@ -75,7 +75,7 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `ace_dragging_fnc_setCarryable` | Arguments | Type | Optional (default value) -- | --------- | ---- | ------------------------ | +- | --------- | ---- | ------------------------ 0 | Any object | Object | Required 1 | Enable carrying, true to enable, false to disable | Boolean | Required 2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) @@ -86,8 +86,8 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;` - | Arguments | Explanation | -- | --------- | ----------- | + | Arguments | Explanation +- | --------- | ----------- 0 | `foo` | My object 1 | `true`| Carrying is enabled 2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards diff --git a/documentation/framework/frag-framework.md b/documentation/framework/frag-framework.md index 14e55ecac8..5de0b3f6cc 100644 --- a/documentation/framework/frag-framework.md +++ b/documentation/framework/frag-framework.md @@ -1,77 +1,118 @@ --- layout: wiki -title: Fragmentation framework -description: The fragmentation system (ace_frag) in ACE3 is a significant improvement over the fragmentation system in ACE2. +title: Fragmentation Framework +description: The fragmentation system in ACE3 is a significant improvement over the fragmentation system in ACE2. group: framework parent: wiki order: 7 --- -The fragmentation system (ace_frag) in ACE3 is a significant improvement over the fragmentation system in ACE2. Previously the system relied on fuzzy math from the values of `indirectHit` and `indirectHitRange` in CfgAmmo to calculate roughly the velocity and range of fragmentation. This had some serious drawbacks, especially in the case of smaller explosives such as hand grenades and 40mm grenades where casualty production was lower than desired. +The fragmentation system in ACE3 is a significant improvement over the fragmentation system in ACE2. Previously the system relied on fuzzy math from the values of `indirectHit` and `indirectHitRange` in `CfgAmmo` to calculate roughly the velocity and range of fragmentation. This had some serious drawbacks, especially in the case of smaller explosives such as hand grenades and 40mm grenades where casualty production was lower than desired. In ACE3 the system has moved away from what "feels" right to actual explosive engineering equations, primarily the [Gurney equations](http://en.wikipedia.org/wiki/Gurney_equations). This allows us to get close to the actual fragmentation velocities that would be produced by an explosive configuration similar to type of ammo we are simulating. -The system for the end-developer is easy to use, and only requires minimal research into the type of ammo being represented. I will describe how to do this in this ticket. +The system for the end-developer is easy to use, and only requires minimal research into the type of ammo being represented. -Below is an example set of explosives configuration properties for sys_frag (in this case an M67 hand grenade): +Below is an example set of explosives configuration properties (in this case an M67 hand grenade): + +## 1. Config Values ```c++ -ace_frag_metal = 210; // metal in grams -ace_frag_charge = 185; // explosive in grams -ace_frag_gurney_c = 2843; // Gurney velocity constant for explosive type. See: http://en.wikipedia.org/wiki/Gurney_equations -ace_frag_gurney_k = 3/5; // Gurney shape factor, in this case a sphere. See: http://en.wikipedia.org/wiki/Gurney_equations +class CfgAmmo { + class MyGrenade { + ace_frag_enabled = 1; // Enable fragmentation (0-disabled, 1-enabled) + ace_frag_metal = 210; // Amount of metal being fragmented (grams) - information below + ace_frag_charge = 185; // Amount of explosive filler (grams) - information below + ace_frag_gurney_c = 2843; // Gurney velocity constant for explosive type - information below + ace_frag_gurney_k = 3/5; // Gurney shape factor - information below + ace_frag_classes[] = {"ACE_frag_large"}; // Type of fragments - information below + ace_frag_skip = 0; // (Optional) Skip fragmentation for this ammo type (0-disabled, 1-enabled) - information below + ace_frag_force = 1; // (Optional) Force fragmentation system (0-disabled, 1-enabled) - information below + }; +}; ``` -`ace_frag_metal` is the amount of metal being fragmented (generally taken as the entire weight of the warhead, though in some cases you might want to only include the fragmentation jacket or body. `ace_frag_charge` is the amount of explosive filler in the warhead. `ace_frag_metal` and `ace_frag_charge` are dimensionless values, as long as they are both in the same unit (for example kg/kg g/g lbs/lbs). +### 1.1 Metal amount -`ace_frag_gurney_c` is the Gurney constant for explosive force. You can find a list of common explosive types below. If you can not find it here, or want more accurate numbers, just google the type of explosive and Gurney constant and you can find substantial information. This is *NOT* the detonation velocity of the explosive, do not confuse them! +`ace_frag_metal` -| Type | Speed | -|------------------|----------| -|Composition B | 2700 m/s | -|Composition C-3 | 2680 m/s | -|Cyclotol 75/25 | 2790 m/s | -|HMX | 2800 m/s | -|LX-14 | 2970 m/s | -|Octol 75/25 | 2800 m/s | -|PBX 9404 | 2900 m/s | -|PBX 9502 | 2377 m/s | -|PETN | 2930 m/s | -|RDX | 2830 m/s | -|Tetryl | 2500 m/s | -|TNT | 2440 m/s | -|Tritonal | 2320 m/s | +Amount of metal being fragmented (generally taken as the entire weight of the warhead, though in some cases you might want to only include the fragmentation jacket or body. +Dimensionless value, as long as same unit as `ace_frag_charge` (for example `kg/kg` or `g/g` or `lbs/lbs`). -`ace_frag_gurney_k` is the shape factor for the explosive configuration. You should choose it based on the general configuration of explosives/metal in the warhead. Most grenades for example are a sphere. Artillery and aircraft bombs are a cylinder. Mines generally a flat plate. Below is a list of the three common shapes and their factors. +### 1.2 Explosives filler amount -``` -Sphere = 3/5 -Cylinder = 1/2 -Plate = 3/5 -``` +`ace_frag_charge` -There are other configurations but these are the most common. If you are interested in others check out the wikipedia link given above. Most of these will not correctly function in sys_frag though due to additional variables for the equation. +Amount of explosive filler in the warhead. `ace_frag_metal` and `ace_frag_charge` are dimensionless values, as long as they are both in the same unit (for example kg/kg g/g lbs/lbs). -In addition to these variables there are different types of fragmentation fragments to choose from, and they can be defined in the config value `ace_frag_classes[]`. Below are a list of the types. +Dimensionless value, as long as same unit as `ace_frag_metal` (for example `kg/kg` or `g/g` or `lbs/lbs`). -``` -ACE_frag_tiny -ACE_frag_tiny_HD -ACE_frag_small -ACE_frag_small_HD -ACE_frag_medium -ACE_frag_medium_HD -ACE_frag_large -ACE_frag_large_HD -ACE_frag_huge -ACE_frag_huge_HD -``` +### 1.3 Gurney velocity constant + +`ace_frag_gurney_c` + +Gurney constant for explosive force. You can find a list of common explosive types below. If you can not find it here, or want more accurate numbers, just google the type of explosive and Gurney constant and you can find substantial information. This is **not** the detonation velocity of the explosive, do not confuse them! + +Type | Speed +--------------- | -------- +Composition B | 2700 m/s +Composition C-3 | 2680 m/s +Cyclotol 75/25 | 2790 m/s +HMX | 2800 m/s +LX-14 | 2970 m/s +Octol 75/25 | 2800 m/s +PBX 9404 | 2900 m/s +PBX 9502 | 2377 m/s +PETN | 2930 m/s +RDX | 2830 m/s +Tetryl | 2500 m/s +TNT | 2440 m/s +Tritonal | 2320 m/s + +### 1.4 Gurney shape factor + +`ace_frag_gurney_k` + +Shape factor for the explosive configuration. You should choose it based on the general configuration of explosives/metal in the warhead. Most grenades for example are a sphere. Artillery and aircraft bombs are a cylinder. Mines generally a flat plate. Below is a list of the three common shapes and their factors. + +Shape | Factor +-------- | ------ +Sphere | 3/5 +Cylinder | 1/2 +Plate | 3/5 + +There are other configurations but these are the most common. If you are interested in others check out the wikipedia link given above. Most of these will not correctly function in ACE3 though due to additional variables for the equation. + +### 1.5 Fragments type + +`ace_frag_classes[]` + +There are different types of fragmentation fragments to choose from, and they can be defined in this config value. + +| Type +| ---- +| ACE_frag_tiny +| ACE_frag_tiny_HD +| ACE_frag_small +| ACE_frag_small_HD +| ACE_frag_medium +| ACE_frag_medium_HD +| ACE_frag_large +| ACE_frag_large_HD +| ACE_frag_huge +| ACE_frag_huge_HD The tinier the piece of fragmentation the shorter the distance of travel. The `_HD` variants are all even higher drag versions. Grenades generally should use the `_HD` variants. Experimentation here is important. -The final information needed is a couple of entries for forcing or ignoring fragmentation for this ammo. +### 1.6 Ignore fragmentation -If you set `ace_frag_skip` to 1 then you will skip fragmentation for ammo of this type. This is useful for things that might cause high network load, such as FFAR rockets, or possibly even 40mm grenades from AGLs. Experimentation under network conditions is required. +`ace_frag_skip` -If you set `ace_frag_force` to 1 it will force the fragmentation system to use frag on this ammo, ignoring sys_frags internal qualifications based on hit values. +Setting this to `1` will skip fragmentation for ammo of this type. This is useful for things that might cause high network load, such as FFAR rockets, or possibly even 40mm grenades from AGLs. Experimentation under network conditions is required. + +### 1.7 Force fragmentation + +`ace_frag_force` + +Settings this to `1` will force the fragmentation system to use frag on this ammo, ignoring internal qualifications based on hit values. From fa84effb9b27d3589fab7bd4e9aae6f71adca6a7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 02:57:28 +0200 Subject: [PATCH 108/620] Small update in frag-framework --- documentation/framework/frag-framework.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/documentation/framework/frag-framework.md b/documentation/framework/frag-framework.md index 5de0b3f6cc..2800d78f52 100644 --- a/documentation/framework/frag-framework.md +++ b/documentation/framework/frag-framework.md @@ -1,21 +1,22 @@ --- layout: wiki title: Fragmentation Framework -description: The fragmentation system in ACE3 is a significant improvement over the fragmentation system in ACE2. +description: Explains how to set-up fragmentation system for explosives using ACE3 fragmentation system. group: framework parent: wiki order: 7 --- +## 1. Overview + The fragmentation system in ACE3 is a significant improvement over the fragmentation system in ACE2. Previously the system relied on fuzzy math from the values of `indirectHit` and `indirectHitRange` in `CfgAmmo` to calculate roughly the velocity and range of fragmentation. This had some serious drawbacks, especially in the case of smaller explosives such as hand grenades and 40mm grenades where casualty production was lower than desired. In ACE3 the system has moved away from what "feels" right to actual explosive engineering equations, primarily the [Gurney equations](http://en.wikipedia.org/wiki/Gurney_equations). This allows us to get close to the actual fragmentation velocities that would be produced by an explosive configuration similar to type of ammo we are simulating. The system for the end-developer is easy to use, and only requires minimal research into the type of ammo being represented. -Below is an example set of explosives configuration properties (in this case an M67 hand grenade): -## 1. Config Values +## 2. Config Values ```c++ class CfgAmmo { From ae1e7afdc84f1e4c2d72429d71b469f0839d1f58 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:13:59 +0200 Subject: [PATCH 109/620] Updated missile-guidance-framework --- .../framework/missile-guidance-framework.md | 111 +++++++++--------- 1 file changed, 56 insertions(+), 55 deletions(-) diff --git a/documentation/framework/missile-guidance-framework.md b/documentation/framework/missile-guidance-framework.md index 32c4fa7888..2072026d5c 100644 --- a/documentation/framework/missile-guidance-framework.md +++ b/documentation/framework/missile-guidance-framework.md @@ -1,7 +1,7 @@ --- layout: wiki title: Advanced Missile Guidance framework -description: The ACE3 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 ACE3. +description: The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for mod makers to integrate with the missile guidance and targeting mechanisms of ACE3. group: framework order: 5 parent: wiki @@ -9,100 +9,101 @@ parent: wiki ## 1. Overview -The ACE3 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 ACE3. It also provides for mod makers to create their own custom guidance methods within the framework. +The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and an execution framework for mod makers to integrate with the missile guidance and targeting mechanisms of ACE3. It also provides the 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 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 mods 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. +The framework also provides mod 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 mod 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). +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 ...) as well as the different common attack profiles utilized with guided munitions (such as top-down attack). -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. +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 available with other missile types. -## 2. Details + +## 2. Components 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. -### 2.1 Components +#### 2.1 Locking Types +Locking types provide the basic functionality of targeting which will be based to a seeker type, providing target acquisition for seekers. This provides the basic functionality for providing pre-determined targets for a seeker, or allowing the seeker to perform its own target acquisition and locking. Additionally, the seeker may reference back into the locking type in order to re-perform target acquisition. -#### 2.1.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.1.2 Seeker Types +#### 2.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. -#### 2.1.3 Attack Profiles +#### 2.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. + ## 3. 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. +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. +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, which 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. +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 on top of the target - thus "walking the missile" along its flight path and to the impact. -## 4. Adding AMG to a missile + +## 4. Config Values ### 4.1 Enabling guidance on Ammo Types + ```c++ class CfgAmmo { - class MissileBase; - class MyMissileType : MissileBase { - // Turn off arma crosshair-guidance - manualControl = 0; + class MyMissile { + manualControl = 0; // Turn off vanilla crosshair guidance // Begin ACE guidance Configs class ace_missileguidance { - enabled = 1; + enabled = 1; // Enable missile guidance (0-disabled, 1-enabled) - 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. + minDeflection = 0.00025; // Minimum flap deflection for guidance + maxDeflection = 0.001; // Maximum flap deflection for guidance + incDeflection = 0.0005; // The increment in which deflection adjusts - canVanillaLock = 0; // Can this default vanilla lock? Only applicable to non-cadet modes. All 'recruit' games use vanilla locking + canVanillaLock = 0; // Enable vanilla lock, only applicable to non-cadet modes, 'recruit' always uses vanilla locking (0-disabled, 1-enabled) - // Seeker type and settings for munitions - defaultSeekerType = "SALH"; - seekerTypes[] = { "SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS" }; + defaultSeekerType = "SALH"; // Default seeker type + seekerTypes[] = {"SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS"}; // Seeker types available - defaultSeekerLockMode = "LOAL"; - seekerLockModes[] = { "LOAL", "LOBL" }; + defaultSeekerLockMode = "LOAL"; // Default seeker lock mode + seekerLockModes[] = {"LOAL", "LOBL"}; // Seeker lock modes available - seekerAngle = 90; // Angle in front of the missile which can be searched - seekerAccuracy = 1; // seeker accuracy multiplier + 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 + seekerMinRange = 1; // Minimum range from the missile which the seeker can visually search + seekerMaxRange = 2500; // Maximum from the missile which the seeker can visually search - // Attack profile type selection - defaultAttackProfile = "LIN"; - attackProfiles[] = { "LIN", "DIR", "MID", "HI" }; + defaultAttackProfile = "LIN"; // Default attack profile + attackProfiles[] = {"LIN", "DIR", "MID", "HI"}; // Attack profiles available }; ``` -## 5. Creating your own custom seekers and attack profiles - -### 5.1 Adding seeker types and attack profiles +### 4.2 Custom Seeker Types ```c++ -class ace_missileguidance_attackProfiles{ +class ace_missileguidance_attackProfiles { class MyAttackProfile { - name = ""; - visualName = ""; - description = ""; + name = ""; // Name + visualName = ""; // Visual name + description = ""; // Description - functionName = "my_fnc_doAttackProfile"; - }; -}; -class ace_missileguidance_seekerTypes { - class MySeekerType { - name = ""; - visualName = ""; - description = ""; - - functionName = "my_fnc_doSeekerType"; + functionName = "my_fnc_doSeekerType"; // Function that handles the seeker type + }; +}; +``` + +### 4.3 Custom Attack Profiles + +```c++ +class ace_missileguidance_seekerTypes { + class MySeekerType { + name = ""; // Name + visualName = ""; // Visual name + description = ""; // Description + + functionName = "my_fnc_doAttackProfile"; // Function that handles the attack profile }; }; ``` From 93baa3b6fa4f60868001a6f0337ee47fa53c60f2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:23:37 +0200 Subject: [PATCH 110/620] Updated goggles-framework --- documentation/framework/goggles-framework.md | 21 +++++++++++-------- .../framework/missile-guidance-framework.md | 2 +- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/documentation/framework/goggles-framework.md b/documentation/framework/goggles-framework.md index f716532399..471f66cbac 100644 --- a/documentation/framework/goggles-framework.md +++ b/documentation/framework/goggles-framework.md @@ -1,22 +1,25 @@ --- layout: wiki -title: Goggles framework -description: +title: Goggles Framework +description: Explains how to set-up goggles with ACE3 goggles system. group: framework order: 5 parent: wiki --- -## 1. +## 1. Config Values ```c++ class CfgGlasses { - class None; - - class G_bananas:None{ - ACE_TintAmount=COLOUR*2; // Amount of tint, the color is picked from ACE_Color - ACE_Color[] = {0,0,-1}; // If anyone knows please do tell - ACE_Resistance = 1; // Resistance to breaking. + class MyGoggles { + ace_color[] = {0, 0, -1}; // Post-proccess color + ace_tintAmount = 8; // Amount of tint applied to the color + ace_resistance = 1; // Resistance to breaking (0 or 1 or 2) + ace_protection = 0; // Provides protection (0-no, 1-yes) + ace_overlay = ""; // (Optional) Default overlay image path ("" for none) + ace_overlayDirt = "A3\Ui_f\data\igui\rsctitles\HealthTextures\dust_upper_ca.paa"; // (Optional) Dirt overlay image path + ace_overlayCracked = "mod\textures\HUD\Cracked.paa"; // (Optional) Cracked overlay image path + ace_dustPath = "mod\textures\fx\dust\dust1.paa"; // (Optional) Dust overlay image path }; }; ``` diff --git a/documentation/framework/missile-guidance-framework.md b/documentation/framework/missile-guidance-framework.md index 2072026d5c..c1bae60a93 100644 --- a/documentation/framework/missile-guidance-framework.md +++ b/documentation/framework/missile-guidance-framework.md @@ -1,6 +1,6 @@ --- layout: wiki -title: Advanced Missile Guidance framework +title: Advanced Missile Guidance Framework description: The ACE3 Advanced Missile Guidance Framework provides a setup of configuration settings, functions and a execution framework for mod makers to integrate with the missile guidance and targeting mechanisms of ACE3. group: framework order: 5 From d51ad8280ac76a3661fad7b0de4600214847695a Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:26:06 +0200 Subject: [PATCH 111/620] Updated hearing-framework --- documentation/framework/hearing-framework.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/documentation/framework/hearing-framework.md b/documentation/framework/hearing-framework.md index 7b10a515bd..6d83665916 100644 --- a/documentation/framework/hearing-framework.md +++ b/documentation/framework/hearing-framework.md @@ -1,25 +1,21 @@ --- layout: wiki -title: Hearing framework -description: +title: Hearing Framework +description: Explains how to set-up headgear with ACE3 hearing system. group: framework order: 5 parent: wiki --- +## 1. Config Values -## 1. Adding ace_hearing support for helmets ```c++ class CfgWeapons { - class H_HelmetB; - - class H_superHelmet: H_HelmetB { - GVAR(protection) = 0.80; // Protection against deafening (0 = less, 1 = more) - GVAR(lowerVolume) = 0.60; // Muffling of the sound (0 = less, 1 = more) + class MyHelmet { + ace_hearing_protection = 0.80; // Protection against deafening (0 to 1, higher means more protection) + ace_hearing_lowerVolume = 0.60; // Muffling of the sound (0 to 1, higher means more muffling) }; }; ``` -### 1.1 Notes -- The protection is a multiplier and not an absolute value, you can still be deafened with a value of 1. -- Same as above for the sound muffling. +The protection/muffling is a multiplier and not an absolute value, you can still be deafened/muffled with a value of 1. From 6d84977fd83f2774b9094f70e0488334551a73c2 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:28:26 +0200 Subject: [PATCH 112/620] Updated huntIR-framework --- documentation/framework/huntIR-framework.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/documentation/framework/huntIR-framework.md b/documentation/framework/huntIR-framework.md index 5004331037..6ed24ad158 100644 --- a/documentation/framework/huntIR-framework.md +++ b/documentation/framework/huntIR-framework.md @@ -1,20 +1,26 @@ --- layout: wiki -title: huntIR framework -description: Explains how to add huntIR support to your weapons +title: HuntIR Framework +description: Explains how to add HuntIR support to your weapons. group: framework order: 5 parent: wiki --- -## 1. Adding huntIR support for your weapons +## 1. Config Values ```c++ class CfgWeapons { - class Rifle_Base_F; - class your_rifle_base_class: Rifle_Base_F { - class your_gl_class: UGL_F { - magazines[] = {,"ACE_HuntIR_M203"}; + class MyRifle { + class MyGL: UGL_F { + magazines[] = { + // All default UGL magazines + "MyFirstMag", + "MySecondMag", + "MyLastMag", + // HUntIR magazine + "ACE_HuntIR_M203" + }; }; }; }; From bf1c77fcb4bcbf7cf00a31bae5c5111ba1b4ffb7 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:30:36 +0200 Subject: [PATCH 113/620] Updated javelin-framework --- documentation/framework/huntIR-framework.md | 2 +- documentation/framework/javelin-framework.md | 21 ++++++++++---------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/documentation/framework/huntIR-framework.md b/documentation/framework/huntIR-framework.md index 6ed24ad158..8f4968f548 100644 --- a/documentation/framework/huntIR-framework.md +++ b/documentation/framework/huntIR-framework.md @@ -1,7 +1,7 @@ --- layout: wiki title: HuntIR Framework -description: Explains how to add HuntIR support to your weapons. +description: Explains how to add HuntIR support to a weapon. group: framework order: 5 parent: wiki diff --git a/documentation/framework/javelin-framework.md b/documentation/framework/javelin-framework.md index 1d36895fde..dd384fd282 100644 --- a/documentation/framework/javelin-framework.md +++ b/documentation/framework/javelin-framework.md @@ -1,24 +1,23 @@ --- layout: wiki -title: javelin framework -description: +title: Javelin Framework +description: Explains how to set-up Javelin-style locking system to a launcher. group: framework order: 5 parent: wiki --- -## 1. Adding javelin style locking to your Launcher +## 1. Config Values ```c++ class CfgWeapons { - class your_launcher : launch_O_Titan_F { - ace_javelin_enabled = 1; // enable javelin style locking - weaponInfoType = "ACE_RscOptics_javelin"; - modelOptics = "\z\ace\addons\javelin\data\reticle_titan.p3d"; - - canLock = 0; // disable vanilla locking - lockingTargetSound[] = {"",0,1}; // locking sound - lockedTargetSound[] = {"",0,1}; // target acquired sound + class MyLauncher { + ace_javelin_enabled = 1; // Enable Javelin-style locking (0-disabled, 1-enabled) + weaponInfoType = "ACE_RscOptics_javelin"; // Inteface + modelOptics = "\z\ace\addons\javelin\data\reticle_titan.p3d"; // Optics model + canLock = 0; // Disable vanilla locking (0-disabled, 1-enabled) + lockingTargetSound[] = {"", 0, 1}; // Locking sound + lockedTargetSound[] = {"", 0, 1}; // Target acquired sound }; }; ``` From a7ba540b97e48f84b627fd4ebfb1f9d012b335a3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:35:58 +0200 Subject: [PATCH 114/620] Updated NVG-framework --- .../framework/nightvision-framework.md | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/documentation/framework/nightvision-framework.md b/documentation/framework/nightvision-framework.md index b0861edb7e..73d78a222a 100644 --- a/documentation/framework/nightvision-framework.md +++ b/documentation/framework/nightvision-framework.md @@ -1,24 +1,21 @@ --- layout: wiki -title: nightvision framework -description: +title: Night Vision Framework +description: Explains how to set-up night vision goggles with ACE3 night vision system. group: framework order: 5 parent: wiki --- -## 1. Configuring your NVGs + +## 1. Config Values ```c++ class CfgWeapons { - class Binocular; - class your_nvgs: Binocular { - displayName = "your nvg"; // name displayed in the inventory - ACE_NightVision_grain = 0.75; // amount of grain (dots) on the screen (0= less) - ACE_NightVision_blur = 0.055; // blur amount, (0= less) keep low - ACE_NightVision_radBlur = 0.001; // radial blur amount (0=less) keep low + class MyNightVision { + displayName = "Banana NVGs"; // Name displayed in the inventory + ace_nightVision_grain = 0.75; // Amount of grain (dots) on the screen (more means more grain) - can be higher than 1 + ace_nightVision_blur = 0.055; // Blur amount (more means more blur) - keep low values! + ace_nightVision_radBlur = 0.001; // Radial blur amount (more means more blur) - keep low values! }; }; ``` - -- There's no escape here, you'll have to fiddle with the values to find the value that please you. -- `ACE_NightVision_grain` can be higher than 1, it's on 2.25 for gen1 goggles for example. From e02d28eddfed375829521eb9ea8a0fbfd469032a Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:46:55 +0200 Subject: [PATCH 115/620] Updated overheating-framework --- .../framework/overheating-framework.md | 86 +++++++++++++------ 1 file changed, 58 insertions(+), 28 deletions(-) diff --git a/documentation/framework/overheating-framework.md b/documentation/framework/overheating-framework.md index 3d466c9449..21cca53516 100644 --- a/documentation/framework/overheating-framework.md +++ b/documentation/framework/overheating-framework.md @@ -1,48 +1,78 @@ --- layout: wiki -title: overheating framework -description: +title: Overheating Framework +description: Explains how to set-up weapon overheating with ACE3 overheating system. group: framework order: 5 parent: wiki --- -## 1. Adding barrel switching +## 1. Config Values + +### 1.1 Barrel Switching ```c++ class CfgWeapons { - - class Rifle_Long_Base_F; // base class for LMGs and MMGs - class your_MMG: Rifle_Long_Base_F { - - // Dispersion, SlowdownFactor and JamChance arrays have 4 values for different temperatures, which are interpolated between. - // These values correspond to temperatures Converted to real life values: 0: 0°C, 1: 333°C, 2: 666°C, 3: 1000°C. - - ACE_Overheating_allowSwapBarrel = 1; // 1 to enable barrel swap. 0 to disable. Meant for machine guns where you can easily swap the barrel without dismantling the whole weapon. - - // Dispersion in radians. First value is for temp. 0, second for temp. 1 and so on. Values inbetween get interpolated. Negative values get ignored and can be used to move the starting point to hotter temperatures. - ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; - - // How much the projectile gets slowed down before leaving the barrel. 0.9 means the bullet will lose 10% velocity. Values inbetween get interpolated. Numbers greater 1 increase the velocity, smaller 1 decrease it. - ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; - - // Chance to jam the weapon. 0.0003 means 3 malfunctions on 10,000 rounds fired at this temperature. Values inbetween get interpolated. Negative values get ignored and can be used to move the starting point to hotter temperatures. - // When no reliable data exists for temperature vs. jam chance except MRBS, the following uniform criteria was adopted: [0, 1/MRBS, 5/MRBS, 25/MRBS]. - ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; + class MyMG { + ace_overheating_allowSwapBarrel = 1; // Enable barrel swap (0-disabled, 1-enabled) - information below + ace_overheating_dispersion[] = {0, -0.001, 0.001, 0.004}; // Bullet dispersion (in radians) - information below + ace_overheating_slowdownFactor[] = {1, 1, 1, 0.9}; // Slowdown factor inside the barrel - information below + ace_overheating_jamChance[] = {0, 0.0003, 0.0015, 0.0075}; // Jam chance - information below }; }; ``` -## 2. Adding custom animations +#### 1.1.1 Temperatures + +`ace_overheating_dispersion[]` +`ace_overheating_slowdownFactor[]` +`ace_overheating_jamChance[]` + +Above arrays have 4 values for different temperatures, which are interpolated between. These values correspond to temperatures converted to real life values from. + +Config | Real Life +------ | --------- +0 | 0°C +1 | 333°C +2 | 666°C +3 | 1000°C + +### 1.1.2 Barrel Swapping + +`ace_overheating_allowSwapBarrel` + +Meant for machine guns where you can easily swap the barrel without dismantling the whole weapon. + +### 1.1.3 Dispersion + +`ace_overheating_dispersion[]` + +Dispersion in radians. First value is for temperature 0, second for temperature 1 and so on. Values in-between get interpolated. Negative values are ignored and can be used to move the starting point to hotter temperatures. + +### 1.1.4 Slowdown Factor + +`ace_overheating_slowdownFactor[]` + +How much the projectile gets slowed down before leaving the barrel. `0.9` means the bullet will lose 10% velocity. Values in-between get interpolated. Numbers greater than `1` increase the velocity, smaller decrease it. + +### 1.1.5 Jam Chance + +`ace_overheating_jamChance[]` + +Chance to jam the weapon. `0.0003` means 3 malfunctions on 10,000 rounds fired at this temperature. Values in-between get interpolated. Negative values are ignored and can be used to move the starting point to hotter temperatures. + +When no reliable data exists for temperature versus jam chance except MRBS, the following uniform criteria was adopted. +`[0, 1/MRBS, 5/MRBS, 25/MRBS]` + + +### 1.2 Custom Animations ```c++ class CfgWeapons { - - class Rifle_Long_Base_F; - class your_MMG: Rifle_Long_Base_F { - ACE_clearJamAction = "GestureReload"; // Custom jam clearing action. Default uses reload animation. - ACE_checkTemperatureAction = "Gear"; // Custom check temperature action. Default uses gear animation. - ACE_clearJamAction = ""; // Custom jam clearing action. Use empty string to undefine. + class MyMG { + ace_clearJamAction = "GestureReload"; // Custom jam clearing action, default uses reload animation + ace_checkTemperatureAction = "Gear"; // Custom check temperature action, default uses gear animation + ace_clearJamAction = ""; // Custom jam clearing action, use empty string to undefine }; }; ``` From 3b74cc4f47b6a8670ab92820f8274b1f82edcb6c Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:50:06 +0200 Subject: [PATCH 116/620] Updated parachute-framework and reloadlaunchers-framework --- documentation/framework/parachute-framework.md | 15 ++++++--------- .../framework/reloadlaunchers-framework.md | 11 ++++------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/documentation/framework/parachute-framework.md b/documentation/framework/parachute-framework.md index d05c330925..2548a3ab4d 100644 --- a/documentation/framework/parachute-framework.md +++ b/documentation/framework/parachute-framework.md @@ -1,22 +1,19 @@ --- layout: wiki -title: Parachute framework -description: +title: Parachute Framework +description: Explains how to set-up a parachute with ACE3 parachute system. group: framework order: 5 parent: wiki --- -## 1. Adding a reserve parachute to an existing parachute +## 1. Adding reserve parachute to existing parachute ```c++ class CfgVehicles { - - class banana_parachute; // your parachute base class - - class banana_parachute_02: banana_parachute { // your parachute class - ace_hasReserveParachute = 1; // 1 = enabled, 0 = disabled - ace_reserveParachute = "ACE_ReserveParachute"; // classname of the reserve parachute + class BananaParachute { + ace_hasReserveParachute = 1; // Add reserve parachute (1-enabled, 0-disabled) + ace_reserveParachute = "ACE_ReserveParachute"; // Classname of the reserve parachute }; }; ``` diff --git a/documentation/framework/reloadlaunchers-framework.md b/documentation/framework/reloadlaunchers-framework.md index 7d836ca8fd..0c36a6f1a7 100644 --- a/documentation/framework/reloadlaunchers-framework.md +++ b/documentation/framework/reloadlaunchers-framework.md @@ -1,7 +1,7 @@ --- layout: wiki -title: reloadlaunchers framework -description: +title: Reload Launchers Framework +description: Explains how to set-up launchers with ACE3 reload launchers system. group: framework order: 5 parent: wiki @@ -11,11 +11,8 @@ parent: wiki ```c++ class CfgWeapons { - - class Launcher_Base_F; // launcher base class - - class yourlauncher: Launcher_Base_F { // launcher class - ACE_reloadlaunchers_enabled = 1; // enable third party reload (your buddies reloading for you) + class MyLauncher { + ace_reloadlaunchers_enabled = 1; // Allow your buddies reloading for you (0-disabled, 1-enabled) }; }; ``` From 1019450c3014742366ffc1ba7da543dc27f210cb Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 03:59:56 +0200 Subject: [PATCH 117/620] Updated sitting-framework, added unfinished note --- documentation/framework/scopes-framework.md | 23 +++++----- documentation/framework/sitting-framework.md | 47 ++++++-------------- 2 files changed, 24 insertions(+), 46 deletions(-) diff --git a/documentation/framework/scopes-framework.md b/documentation/framework/scopes-framework.md index b13d8d5e9f..fc318a13f6 100644 --- a/documentation/framework/scopes-framework.md +++ b/documentation/framework/scopes-framework.md @@ -1,28 +1,27 @@ --- layout: wiki -title: Scopes framework -description: +title: Scopes Framework +description: Explains how to set-up scopes with ACE3 scope adjustment system. group: framework order: 5 parent: wiki --- -## 1. Adding scope adjustement support +## 1. Adding scope adjustment support ```c++ class CfgWeapons { - class ItemCore; - class InventoryOpticsItem_Base_F; + class InventoryOpticsItem_Base_F; // ItemInfo base class - class yourHighPoweredScope : ItemCore { - ACE_ScopeAdjust_Vertical[] = { -4, 30 }; // max vertical adjustement limits - ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; // max horizontal adjustement limits - ACE_ScopeAdjust_VerticalIncrement = 0.1; // vertical incrementation - ACE_ScopeAdjust_HorizontalIncrement = 0.1; // horizontal incrementation - class ItemInfo : InventoryOpticsItem_Base_F { + class YourScope { + ace_scopeAdjust_vertical[] = {-4, 30}; // Maxmimum vertical adjustment limits + ace_scopeAdjust_horizontal[] = {-6, 6}; // Maximum horizontal adjustment limits + ace_scopeAdjust_verticalIncrement = 0.1; // Vertical increment + ace_scopeAdjust_horizontalIncrement = 0.1; // Horizontal increment + class ItemInfo: InventoryOpticsItem_Base_F { class OpticsModes { class Snip { - discreteDistance[] = { 100 }; + discreteDistance[] = {100}; discreteDistanceInitIndex = 0; }; }; diff --git a/documentation/framework/sitting-framework.md b/documentation/framework/sitting-framework.md index c707671c84..cc39ccdfaa 100644 --- a/documentation/framework/sitting-framework.md +++ b/documentation/framework/sitting-framework.md @@ -1,47 +1,26 @@ --- layout: wiki -title: Sitting framework -description: +title: Sitting Framework +description: Explains how to set-up sitting furniture with ACE3 sitting system. group: framework order: 5 parent: wiki --- -## 1. adding sitting support to a chair +## 1. Adding sitting support to a chair + +
+
Note:
+

Unfinished! What you see below will not work in ACE 3.2.1

+
```c++ class CfgVehicles { - - #define MACRO_SEAT_ACTION \ // better use a macro, nobody wants to type this two times or more, right ? - class ACE_Actions { \ - class ACE_MainActions { \ - displayName = "$STR_ACE_Interaction_MainAction"; \ - selection = ""; \ - distance = 1.5; \ - condition = "true"; \ - class ACE_sitting_Sit { \ - displayName = "$STR_ACE_Sitting_Sit"; \ - condition = "_this call ace_sitting_fnc_canSit"; \ - statement = "_this call ace_sitting_fnc_sit"; \ - showDisabled = 0; \ - priority = 0; \ - icon = "z\ace\sitting\UI\sit_ca.paa"; \ - }; \ - }; \ - }; - - class ThingX; // base class for objects - - class yourChair: ThingX { // your chair class - XEH_ENABLED; // enable XEH on that object class - MACRO_SEAT_ACTION // add the interaction - ACE_sitting_canSit = 1; // enable sitting - ACE_sitting_sitDirection = 180; // sitting direction in degrees - ACE_sitting_sitPosition[] = {0, -0.1, -0.45}; // sitting position in a X Y Z plane - ACE_sitting_sitRotation = 10; // maximum rotation possible in degrees, left and right. + class MyChair { + ace_sitting_canSit = 1; // Enable sitting (0-disabled, 1-enabled) + ace_sitting_sitDirection = 180; // Initial sitting direction (in degrees) + ace_sitting_sitPosition[] = {0, -0.1, -0.45}; // Sitting position in model space + ace_sitting_sitRotation = 10; // Maximum rotation possible in degrees, left and right. }; }; ``` - -- No escape possible here, you'll have to fiddle with the position direction and rotation to have a normal pose. -- For the sitRotation 10 is use for chairs with arms, 45 for the ones without. From 1048562a42e51cc2f4bcab8340ae734024734f23 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 04:05:43 +0200 Subject: [PATCH 118/620] Updated settings-fraemwork and how-to-report-an-issue --- documentation/framework/settings-framework.md | 38 ++++++++++--------- documentation/user/how-to-report-an-issue.md | 18 ++++----- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/documentation/framework/settings-framework.md b/documentation/framework/settings-framework.md index 107e9378bf..b809e19a61 100644 --- a/documentation/framework/settings-framework.md +++ b/documentation/framework/settings-framework.md @@ -17,20 +17,22 @@ Part of this settings framework are global settings and client settings. Both us Settings are entries in the config that get translated to `missionNamespace` global variables. An example settings entry looks like this: ```c++ -class ACE_module_sampleSetting { - // Following 2 entries are redundant if isClientSettable = 0 - displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name - description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description +class ACE_Settings { + class ACE_module_sampleSetting { + // Following 2 entries are redundant if isClientSettable = 0 + displayName = "$STR_ACE_Common_SettingName"; // Stringtable entry with the setting name + description = "$STR_ACE_Common_SettingDescription"; // Stringtable entry with the setting description - isClientSettable = 1; // Show in client options menu (0-no, 1-yes) - typeName = "SCALAR"; // Type (BOOL/SCALAR/STRING/ARRAY/COLOR) - value = 1; // Value + isClientSettable = 1; // Show in client options menu (0-no, 1-yes) + typeName = "SCALAR"; // Type (BOOL/SCALAR/STRING/ARRAY/COLOR) + value = 1; // Value - // Following entry is redundant if typeName is NOT "SCALAR" - values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // (Optional) Stringtable entries that describe the options + // Following entry is redundant if typeName is NOT "SCALAR" + values[] = {"Disabled", "Enabled", "Only Cursor", "Only On Keypress", "Only Cursor and KeyPress"}; // (Optional) Stringtable entries that describe the options - // Following entry is present only in export - force = 0; // Force the setting (0-no, 1-yes), exported settings are forced by default + // Following entry is present only in export + force = 0; // Force the setting (0-no, 1-yes), exported settings are forced by default + }; }; ``` @@ -82,17 +84,19 @@ class ACE_Settings { #### 3.1.1 Notes - If a setting is forced it cannot be changed further down the line, see `2. Load order` for the hierarchy. -- Client settings can be forced, include them while exporting (the button is right next to export on the UI) +- Client settings can be forced, include while exporting (the button is next to export on the UI) - You can use `ACE_common_forceAllSettings` to force settings in a mission, it will lock **all** the settings (which are not already forced) to the values they are set in either modules or server config - - example of `ACE_common_forceAllSettings` - ```c++ - //^^ rest of your description.ext - //------------------------- ACE settings + +Example of `ACE_common_forceAllSettings`: +```c++ +class ACE_Settings { class ACE_common_forceAllSettings { value = 1; typeName = "BOOL"; }; - ``` +}; +``` + ### 3.2 Loading up the server config diff --git a/documentation/user/how-to-report-an-issue.md b/documentation/user/how-to-report-an-issue.md index 4960baa3af..5c6ed78997 100644 --- a/documentation/user/how-to-report-an-issue.md +++ b/documentation/user/how-to-report-an-issue.md @@ -1,7 +1,7 @@ --- layout: wiki title: How to report an issue -description: If you've found an issue with ACE3 please read this entry before reporting it. +description: If you have found an issue with ACE3 please read this entry before reporting it. group: user order: 10 parent: wiki @@ -9,13 +9,13 @@ parent: wiki ### Before reporting -If you've found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@cba_a3` and `@ACE3` on a newly created mission. +If you have found an issue with ACE3 please make sure that ACE3 is really the cause of the problem. To do this try to reproduce the issue with using only `@CBA_A3` and `@ace` on a newly created mission. Indicate if the issue appears on stable or development version. In case it is the development version, please also include the commit SHA-1 hash.
Please note:
-

It's not a valid to simply remove @ACE3 from the mod list to confirm that ACE3 is the culprit.

+

It's not a valid to simply remove @ace from the mod list to confirm that ACE3 is the culprit.

If the error happens when using a third-party mod contact the author of the appropriate mod and report the issue there.

@@ -24,29 +24,29 @@ Indicate if the issue appears on stable or development version. In case it is th Head over to the ACE3 GitHub issue tracker and press the "New issue" button in the top right corner. Add a descriptive title and copy the following issue template in to the text area: ``` -*PRO-TIP :The english language allows individuals to correct each other's mistakes in a respectful manner.* +*PRO-TIP: The english language allows individuals to correct each other's mistakes in a respectful manner.* ACE3 Version: 3.x.x (indicate if stable or dev, if dev indicate the commit the version is based on) **Mods:** -* @cba_a3 -* @ace3 +* `@CBA_A3` +* `@ace` **Placed ACE3 Modules:** * *Add the list of modules you have placed on the map. Use 'None' if the error occurs without using any modules.* **Description:** -*Add a detailed description of the error. This makes it easier for us to fix the issue.* +* Add a detailed description of the error. This makes it easier for us to fix the issue.* **Steps to reproduce:** * *Add the steps needed to reproduce the issue.* **Where did the issue occur?** -*A possible answer might be "Multiplayer", "Singleplayer"* +* A possible answer might be "Multiplayer" or "Singleplayer" or "Editor"* **RPT log file:** -*Add a link (pastebin.com) to the client or server RPT file.* +* Add a link (pastebin.com) to the client or server RPT file.* ``` A video of the issue might be helpful in resolving it faster. From d159043ce5e2a2f8eeb512cd66f7041a66adfa77 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 04:18:13 +0200 Subject: [PATCH 119/620] Added goggled events --- documentation/framework/goggles-framework.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/documentation/framework/goggles-framework.md b/documentation/framework/goggles-framework.md index 471f66cbac..27f762685a 100644 --- a/documentation/framework/goggles-framework.md +++ b/documentation/framework/goggles-framework.md @@ -23,3 +23,13 @@ class CfgGlasses { }; }; ``` + + +## 5. Events + +### 5.1 Listenable + +Event Name | Description | Passed Parameter(s) | Locality +---------- | ----------- | ------------------- | -------- +`"GlassesChanged"` | Glasses Changed | `[_glassesClass]` | Local +`"GlassesCracked"` | Glasses Cracked | `[_player]` | Local From 258ec6b3f2d6226ac1cdba0df2f36344830b530f Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 04:32:04 +0200 Subject: [PATCH 120/620] Added missile-guidance and reloadlaunchers events --- documentation/framework/goggles-framework.md | 6 +++--- documentation/framework/missile-guidance-framework.md | 8 ++++++++ documentation/framework/reloadlaunchers-framework.md | 8 ++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/documentation/framework/goggles-framework.md b/documentation/framework/goggles-framework.md index 27f762685a..3dea205af9 100644 --- a/documentation/framework/goggles-framework.md +++ b/documentation/framework/goggles-framework.md @@ -25,11 +25,11 @@ class CfgGlasses { ``` -## 5. Events +## 2. Events -### 5.1 Listenable +### 2.1 Listenable Event Name | Description | Passed Parameter(s) | Locality ---------- | ----------- | ------------------- | -------- `"GlassesChanged"` | Glasses Changed | `[_glassesClass]` | Local -`"GlassesCracked"` | Glasses Cracked | `[_player]` | Local +`"GlassesCracked"` | Glasses Cracked | `[_unit]` | Local diff --git a/documentation/framework/missile-guidance-framework.md b/documentation/framework/missile-guidance-framework.md index c1bae60a93..f09a5c0bc3 100644 --- a/documentation/framework/missile-guidance-framework.md +++ b/documentation/framework/missile-guidance-framework.md @@ -107,3 +107,11 @@ class ace_missileguidance_seekerTypes { }; }; ``` + +## 5. Events + +### 5.1 Listenable + +Event Name | Description | Passed Parameter(s) | Locality +---------- | ----------- | ------------------- | -------- +`"ace_missileguidance_handoff"` | Missile handed off | `[_target, _args]` | Global diff --git a/documentation/framework/reloadlaunchers-framework.md b/documentation/framework/reloadlaunchers-framework.md index 0c36a6f1a7..612bdf67c5 100644 --- a/documentation/framework/reloadlaunchers-framework.md +++ b/documentation/framework/reloadlaunchers-framework.md @@ -16,3 +16,11 @@ class CfgWeapons { }; }; ``` + +## 2. Events + +### 2.1 Listenable + +Event Name | Description | Passed Parameter(s) | Locality +---------- | ----------- | ------------------- | -------- +`"reloadLauncher"` | Launcher reloaded | `[_unit, _target, _weapon, _magazine]` | Target From 6fc24cde83321333f7ab42ead9a117b21554d3b0 Mon Sep 17 00:00:00 2001 From: alganthe Date: Tue, 25 Aug 2015 08:51:04 +0200 Subject: [PATCH 121/620] dragging framework table fix --- documentation/framework/dragging-framework.md | 60 +++++++++---------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/documentation/framework/dragging-framework.md b/documentation/framework/dragging-framework.md index 661dd2d9c7..230df5d181 100644 --- a/documentation/framework/dragging-framework.md +++ b/documentation/framework/dragging-framework.md @@ -39,56 +39,56 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `ace_dragging_fnc_setDraggable` - | Arguments | Type | Optional (default value) -- | --------- | ---- | ------------------------ -0 | Any object | Object | Required -1 | Enable dragging, true to enable, false to disable | Boolean | Required -2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) -3 | Direction in degree to rotate the object | Number | Optional (default: `0`) + Arguments | | Type | Optional (default value) +--- | --------- | ---- | ------------------------ +0 | Any object | Object | Required +1 | Enable dragging, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) **R** | None | None | Return value #### 2.1.1 Example 1 `[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;` - | Arguments | Explanation -- | --------- | ----------- -0 | `foo` | My object -1 | `true` | Dragging is enabled -2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards -3 | `45` | Rotated by 45° +Arguments | | Explanation +--- | --------- | ----------- +0 | `foo` | My object +1 | `true` | Dragging is enabled +2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards +3 | `45` | Rotated by 45° #### 2.1.2 Example 2 `[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;` - | Arguments | Explanation -- | --------- | ----------- -0 | `bar` | My object -1 | `false` | Dragging is disabled -2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards -3 | `20` | Rotated by 20° +Arguments | | Explanation +--- | --------- | ----------- +0 | `bar` | My object +1 | `false` | Dragging is disabled +2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards +3 | `20` | Rotated by 20° ### 2.2 Enabling / disabling carrying `ace_dragging_fnc_setCarryable` - | Arguments | Type | Optional (default value) -- | --------- | ---- | ------------------------ -0 | Any object | Object | Required -1 | Enable carrying, true to enable, false to disable | Boolean | Required -2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) -3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +Arguments | | Type | Optional (default value) +--- | --------- | ---- | ------------------------ +0 | Any object | Object | Required +1 | Enable carrying, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) **R** | None | None | Return value #### 2.2.1 Example `[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;` - | Arguments | Explanation -- | --------- | ----------- -0 | `foo` | My object -1 | `true`| Carrying is enabled -2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards -3 | `10` | Rotated by 10° +Arguments | | Explanation +--- | --------- | ----------- +0 | `foo` | My object +1 | `true`| Carrying is enabled +2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards +3 | `10` | Rotated by 10° From e5cf6bc74c33a662200135f074568ff4f3d72efb Mon Sep 17 00:00:00 2001 From: alganthe Date: Tue, 25 Aug 2015 14:37:54 +0200 Subject: [PATCH 122/620] overpressure framework --- .../framework/overpressure-framework.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 documentation/framework/overpressure-framework.md diff --git a/documentation/framework/overpressure-framework.md b/documentation/framework/overpressure-framework.md new file mode 100644 index 0000000000..e3a50bfabf --- /dev/null +++ b/documentation/framework/overpressure-framework.md @@ -0,0 +1,38 @@ +--- +layout: wiki +title: Overpressure Framework +description: Explains how to set-up launchers and cannon backblasts with ACE3 overpressure system. +group: framework +order: 5 +parent: wiki +--- + +## 1. Config Values + +### 1.1 Launchers + +```c++ +class CfgWeapons { + + class MyLauncher { + ACE_overpressure_angle = 60; // cone in which the damage is applied (in degrees from the back end of the launcher) + ACE_overpressure_range = 15; // range in meters in which the damage is applied + ACE_overpressure_damage = 0.7; // damage multiplier + }; +}; +``` + +### 1.2 Cannons + +```c++ +class CfgWeapons { + + class MyBananaCannon { + ACE_overpressure_angle = 90; // cone in which the damage is applied (in degrees from the muzzle of the cannon) + ACE_overpressure_range = 50; // range in meters in which the damage is applied + ACE_overpressure_damage = 0.85; // damage multiplier + }; +}; +``` + +- You can note that the angle range and damage are higher, that's because this is a cannon and the backblast is higher. From d0f5a73dab5d8ce5eecb33ab16b03a4fde5a4538 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 18:31:58 +0200 Subject: [PATCH 123/620] Fixed dragging-framework tables even more --- documentation/framework/dragging-framework.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/documentation/framework/dragging-framework.md b/documentation/framework/dragging-framework.md index 230df5d181..ffe86a2b83 100644 --- a/documentation/framework/dragging-framework.md +++ b/documentation/framework/dragging-framework.md @@ -39,56 +39,56 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `ace_dragging_fnc_setDraggable` - Arguments | | Type | Optional (default value) ---- | --------- | ---- | ------------------------ -0 | Any object | Object | Required -1 | Enable dragging, true to enable, false to disable | Boolean | Required -2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) -3 | Direction in degree to rotate the object | Number | Optional (default: `0`) -**R** | None | None | Return value +| | Arguments | Type | Optional (default value) +| - | --------- | ---- | ------------------------ +| 0 | Any object | Object | Required +| 1 | Enable dragging, true to enable, false to disable | Boolean | Required +| 2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) +| 3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +| **R** | None | None | Return value #### 2.1.1 Example 1 `[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;` -Arguments | | Explanation ---- | --------- | ----------- -0 | `foo` | My object -1 | `true` | Dragging is enabled -2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards -3 | `45` | Rotated by 45° +| | Arguments | Explanation +| - | --------- | ----------- +| 0 | `foo` | My object +| 1 | `true` | Dragging is enabled +| 2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards +| 3 | `45` | Rotated by 45° #### 2.1.2 Example 2 `[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;` -Arguments | | Explanation ---- | --------- | ----------- -0 | `bar` | My object -1 | `false` | Dragging is disabled -2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards -3 | `20` | Rotated by 20° +| | Arguments | Explanation +| - | --------- | ----------- +| 0 | `bar` | My object +| 1 | `false` | Dragging is disabled +| 2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards +| 3 | `20` | Rotated by 20° ### 2.2 Enabling / disabling carrying `ace_dragging_fnc_setCarryable` -Arguments | | Type | Optional (default value) ---- | --------- | ---- | ------------------------ -0 | Any object | Object | Required -1 | Enable carrying, true to enable, false to disable | Boolean | Required -2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) -3 | Direction in degree to rotate the object | Number | Optional (default: `0`) -**R** | None | None | Return value +| | Arguments | Type | Optional (default value) +| - | --------- | ---- | ------------------------ +| 0 | Any object | Object | Required +| 1 | Enable carrying, true to enable, false to disable | Boolean | Required +| 2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) +| 3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +| **R** | None | None | Return value #### 2.2.1 Example `[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;` -Arguments | | Explanation ---- | --------- | ----------- -0 | `foo` | My object -1 | `true`| Carrying is enabled -2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards -3 | `10` | Rotated by 10° +| | Arguments | Explanation +| - | --------- | ----------- +| 0 | `foo` | My object +| 1 | `true`| Carrying is enabled +| 2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards +| 3 | `10` | Rotated by 10° From 2af486ab6b09f8e42c33eb1c45d7f4a6a53baae4 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Tue, 25 Aug 2015 18:34:10 +0200 Subject: [PATCH 124/620] Update Main Config File --- addons/main/config.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 9399b14279..52f2c6d4ac 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -541,26 +541,28 @@ class CfgPatches { "a3_weapons_f_vests", "a3data", "map_vr", - "extended_eventhandlers", "CBA_UI", "CBA_XEH", "CBA_XEH_A3" + "extended_eventhandlers", "CBA_UI", "CBA_XEH", "CBA_XEH_A3", + "ace_common" }; - author[] = {"ACE Team"}; - authorUrl = ""; - versionDesc = "A.C.E."; - versionAct = QUOTE(['MAIN',_this] execVM '\z\ace\addons\main\about.sqf';); + author[] = {ELSTRING(common,ACETeam)}; + authorUrl = "http://ace3mod.com/"; + versionDesc = "ACE3"; + //versionAct = QUOTE(['MAIN',_this] execVM '\z\ace\addons\main\about.sqf';); + versionAct = ""; VERSION_CONFIG; }; }; class CfgMods { class PREFIX { - dir = "@ACE"; - name = "Core - Advanced Combat Environment"; + dir = "@ACE3"; + name = "Advanced Combat Environment 3"; picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca"; hidePicture = "true"; hideName = "true"; actionName = "Website"; - action = "http://ace.dev-heaven.net"; - description = "Bugtracker: "; + action = "http://ace3mod.com/"; + description = "Bugtracker: https://github.com/acemod/ACE3/issues"; }; }; From 3470346d301ccafad0d5789438501871c447a4bc Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 18:39:58 +0200 Subject: [PATCH 125/620] Fixed tables even more --- documentation/framework/dragging-framework.md | 64 +++++++++---------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/documentation/framework/dragging-framework.md b/documentation/framework/dragging-framework.md index ffe86a2b83..14352182b7 100644 --- a/documentation/framework/dragging-framework.md +++ b/documentation/framework/dragging-framework.md @@ -39,56 +39,56 @@ You will **not** be able to carry / drag objects that are too heavy, the mass is `ace_dragging_fnc_setDraggable` -| | Arguments | Type | Optional (default value) -| - | --------- | ---- | ------------------------ -| 0 | Any object | Object | Required -| 1 | Enable dragging, true to enable, false to disable | Boolean | Required -| 2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) -| 3 | Direction in degree to rotate the object | Number | Optional (default: `0`) -| **R** | None | None | Return value + | Arguments | Type | Optional (default value) +---| --------- | ---- | ------------------------ +0 | Any object | Object | Required +1 | Enable dragging, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 0, 0]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +**R** | None | None | Return value #### 2.1.1 Example 1 `[foo, true, [0, 2, 0], 45] call ace_dragging_fnc_setDraggable;` -| | Arguments | Explanation -| - | --------- | ----------- -| 0 | `foo` | My object -| 1 | `true` | Dragging is enabled -| 2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards -| 3 | `45` | Rotated by 45° + | Arguments | Explanation +---| --------- | ----------- +0 | `foo` | My object +1 | `true` | Dragging is enabled +2 | `[0,2,0]` | 0 meters sideways, 2 meters forward, 0 meters upwards +3 | `45` | Rotated by 45° #### 2.1.2 Example 2 `[bar, false, [3, -2, 2], 20] call ace_dragging_fnc_setDraggable;` -| | Arguments | Explanation -| - | --------- | ----------- -| 0 | `bar` | My object -| 1 | `false` | Dragging is disabled -| 2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards -| 3 | `20` | Rotated by 20° + | Arguments | Explanation +---| --------- | ----------- +0 | `bar` | My object +1 | `false` | Dragging is disabled +2 | `[3, -2, 2]` | 3 meters sideways, 2 meters backwards, 2 meters upwards +3 | `20` | Rotated by 20° ### 2.2 Enabling / disabling carrying `ace_dragging_fnc_setCarryable` -| | Arguments | Type | Optional (default value) -| - | --------- | ---- | ------------------------ -| 0 | Any object | Object | Required -| 1 | Enable carrying, true to enable, false to disable | Boolean | Required -| 2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) -| 3 | Direction in degree to rotate the object | Number | Optional (default: `0`) -| **R** | None | None | Return value + | Arguments | Type | Optional (default value) +---| --------- | ---- | ------------------------ +0 | Any object | Object | Required +1 | Enable carrying, true to enable, false to disable | Boolean | Required +2 | Position to offset the object from player | Array | Optional (default: `[0, 1, 1]`) +3 | Direction in degree to rotate the object | Number | Optional (default: `0`) +**R** | None | None | Return value #### 2.2.1 Example `[foo, true, [0, 3, 1], 10] call ace_dragging_fnc_setCarryable;` -| | Arguments | Explanation -| - | --------- | ----------- -| 0 | `foo` | My object -| 1 | `true`| Carrying is enabled -| 2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards -| 3 | `10` | Rotated by 10° + | Arguments | Explanation +---| --------- | ----------- +0 | `foo` | My object +1 | `true`| Carrying is enabled +2 | `[0,2,0]` | 0 meters sideways, 3 meters forward, 1 meter upwards +3 | `10` | Rotated by 10° From 9ffa7701477a56d2b1b8dc34a46e383b70d287b1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 18:46:03 +0200 Subject: [PATCH 126/620] Small fix in overpressure-framework --- .../framework/overpressure-framework.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/documentation/framework/overpressure-framework.md b/documentation/framework/overpressure-framework.md index e3a50bfabf..62e077a3ff 100644 --- a/documentation/framework/overpressure-framework.md +++ b/documentation/framework/overpressure-framework.md @@ -1,7 +1,7 @@ --- layout: wiki title: Overpressure Framework -description: Explains how to set-up launchers and cannon backblasts with ACE3 overpressure system. +description: Explains how to set-up launchers and cannons with backblast and overpressure areas with the ACE3 overpressure system. group: framework order: 5 parent: wiki @@ -13,11 +13,10 @@ parent: wiki ```c++ class CfgWeapons { - class MyLauncher { - ACE_overpressure_angle = 60; // cone in which the damage is applied (in degrees from the back end of the launcher) - ACE_overpressure_range = 15; // range in meters in which the damage is applied - ACE_overpressure_damage = 0.7; // damage multiplier + ace_overpressure_angle = 60; // Cone in which the damage is applied (in degrees from the back end of the launcher) + ace_overpressure_range = 15; // Range in meters in which the damage is applied + ace_overpressure_damage = 0.7; // Damage multiplier }; }; ``` @@ -26,13 +25,12 @@ class CfgWeapons { ```c++ class CfgWeapons { - class MyBananaCannon { - ACE_overpressure_angle = 90; // cone in which the damage is applied (in degrees from the muzzle of the cannon) - ACE_overpressure_range = 50; // range in meters in which the damage is applied - ACE_overpressure_damage = 0.85; // damage multiplier + ace_overpressure_angle = 90; // Cone in which the damage is applied (in degrees from the muzzle of the cannon) + ace_overpressure_range = 50; // Range in meters in which the damage is applied + ace_overpressure_damage = 0.85; // Damage multiplier }; }; ``` -- You can note that the angle range and damage are higher, that's because this is a cannon and the backblast is higher. +- You can note that the angle range and damage values are higher, that's because this is a cannon and the backblast area is bigger. From ac645ef186493db00b11f99991a9cf65266e99e5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 18:52:41 +0200 Subject: [PATCH 127/620] Added events to overpressure-framework --- documentation/framework/overpressure-framework.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/documentation/framework/overpressure-framework.md b/documentation/framework/overpressure-framework.md index 62e077a3ff..229200cb46 100644 --- a/documentation/framework/overpressure-framework.md +++ b/documentation/framework/overpressure-framework.md @@ -34,3 +34,12 @@ class CfgWeapons { ``` - You can note that the angle range and damage values are higher, that's because this is a cannon and the backblast area is bigger. + + +## 2. Events + +### 2.1 Listenable + +Event Name | Description | Passed Parameter(s) | Locality +---------- | ----------- | ------------------- | -------- +`"overpressure"` | Overpressure damage inflicted | `[_firer, _position, _direction, _weapon]` | Target From ea79e5ef0153f85db1484dee65e8d932b5d9bdd1 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 19:30:34 +0200 Subject: [PATCH 128/620] Updated DE readme, Fixed issues, ACE to ACE3 --- AUTHORS.txt | 2 +- README.md | 18 +++++++++--------- documentation/README_DE.md | 32 +++++++++++++++++++------------- documentation/README_PL.md | 28 +++++++++++----------------- 4 files changed, 40 insertions(+), 40 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 62329d7c1d..0a9322e924 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,4 +1,4 @@ -# ACE 3 CONTRIBUTOR LIST +# ACE3 CONTRIBUTOR LIST # If you contributed, but are not listed here, contact me: # koffeinflummi@gmail.com # diff --git a/README.md b/README.md index 2739ce55be..73e959d4ea 100644 --- a/README.md +++ b/README.md @@ -3,19 +3,19 @@

- ACE3 version + ACE3 Version - ACE3 download + ACE3 Download - ACE3 issues + ACE3 Issues - - BIF thread + + BIF Thread - ACE3 license + ACE3 License

Requires the latest version of CBA A3. Visit us on Facebook | YouTube | Twitter | Reddit

@@ -24,7 +24,7 @@ The project is entirely **open-source** and all contributions are welcome. Feel free to maintain your own custom version, so long as the changes you make are open to the public in accordance with the GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)). -The mod is **built modularly**, so almost any included PBO can be easily removed from the configuration. This way, a team can maintain its own tailored version of ACE by simply excluding any components they don't need, or those possibly in conflict with other add-ons. Modules themselves, e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience. +The mod is **built modularly**, so almost any included PBO can be easily removed from the configuration. This way, a team can maintain its own tailored version of ACE3 by simply excluding any components they don't need, or those possibly in conflict with other mods. Modules themselves, e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience. ### Core features * Brand new 3D interaction/action system @@ -66,7 +66,7 @@ If you installed ACE3 but have trouble understanding how it all works, or where * [Getting started](http://ace3mod.com/wiki/user/getting-started.html) #### Contributing -You can help out with the ongoing development by looking for potential bugs in our code base, or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address. +You can help out with the ongoing development by looking for potential bugs in our code base, or by contributing new features. To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address. Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also: * [How to report an issue](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) @@ -74,4 +74,4 @@ Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report #### Testing & building To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build: -* [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE for testing purposes. +* [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes. diff --git a/documentation/README_DE.md b/documentation/README_DE.md index 0b5ca4d0ef..6d932e2450 100644 --- a/documentation/README_DE.md +++ b/documentation/README_DE.md @@ -1,27 +1,31 @@

- +

- ACE version + ACE3 Version - - ACE download + + ACE3 Download - ACE issues + ACE3 Issues + + + BIF Thread - ACE license + ACE3 License

Benötigt eine Aktuelle Version von CBA A3 | BIF thread

+

Requires the latest version of CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

**ACE3** ist ein Gemeinschaftsprojekt der sich zusammengeschlossenen Moddinggruppen von **ACE2**, **AGM** und **CSE** mit dem Ziel den Realismus und die Spieltiefe von Arma 3 zu steigern. Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem frei Änderungen vorzuschlagen, oder seine eigene, modifizierte Version zu erstellen, solange diese ebenfalls der Öffentlichkeit zugänglich ist und mit GNU General Public License übereinstimmt. (Weitere Informationen ist der Lizenzdatei in diesem Projekt entnehmbar) -Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird. +Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird. ### Features * Verbessertes medizinisches System @@ -35,14 +39,16 @@ Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, so ***und noch viel mehr...*** #### Anleitungen -Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet? [Erste Schritte](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md). +Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet? +* [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html). #### Mitwirken -Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in "AUTHORS.txt" mit deinem Nutzernamen und einer gütligen Email-Adresse ein. +Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gütligen Email-Adresse ein. -Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). +Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch: +* [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) +* [Wie kann ich ein Feature Request erstellen](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) #### Testen & MOD erstellen -Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du Git - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link] (https://github.com/acemod/ACE3/archive/master.zip) herunter. - -Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE erstellst folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md). +Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter. +Wie du deine eigene Entwicklungsumgebung und eine Testversion von ACE3 erstellst folge [dieser Anleitung](https://github.com/acemod/ACE3/blob/master/documentation/development/setting-up-the-development-environment.md). diff --git a/documentation/README_PL.md b/documentation/README_PL.md index 4d4c36a619..157a254742 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -1,27 +1,21 @@

- +

- ACE wersja + ACE3 Wersja - - ACE pobierz + + ACE3 Pobierz - ACE zagadnienia + ACE3 Zagadnienia - - Temat BIF + + Temat BIF - ACE licencja + ACE3 Licencja

Wymaga najnowszej wersji CBA A3. Odwiedź nas na Facebook | YouTube | Twitter | Reddit

@@ -30,7 +24,7 @@ Projekt ten jest całkowicie **otwarty źródłowo** i wszelki wkład w rozwój jest mile widziany. Możesz bez przeszkód prowadzić swoją własną dostosowaną wersję, o ile zmiany jakie wprowadzisz będą otwarte dla publiki zgodnie z GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)). -Modyfikacja ta jest **budowana modułowo**, dzięki temu prawie każdy dostarczony plik PBO może zostać łatwo usunięty z konfiguracji. Dzięki temu, grupa może prowadzić własną, dostosowaną do siebie, wersję ACE wyłączając elementy, których nie potrzebują, lub które po prostu nie działają z innymi addonami. Moduły same w sobie np. system medyczny, posiadają wiele możliwości konfiguracji, pozwalając mission designerom dostosować ogólne doświadczenie z gry. +Modyfikacja ta jest **budowana modułowo**, dzięki temu prawie każdy dostarczony plik PBO może zostać łatwo usunięty z konfiguracji. Dzięki temu, grupa może prowadzić własną, dostosowaną do siebie, wersję ACE3 wyłączając elementy, których nie potrzebują, lub które po prostu nie działają z innymi addonami. Moduły same w sobie np. system medyczny, posiadają wiele możliwości konfiguracji, pozwalając mission designerom dostosować ogólne doświadczenie z gry. ### Główne cechy * Całkowicie nowy system akcji/interakcji 3D @@ -72,7 +66,7 @@ Jeżeli zainstalowałeś ACE3 lecz masz problem ze zrozumieniem jak to wszystko * [Wprowadzenie](http://ace3mod.com/wiki/user/getting-started.html) #### Współpraca -Możesz pomóc w rozwoju addonu szukając potencjalnych bugów w naszym kodzie, lub zgłaszając nowe funkcje. Aby wnieść swój wkład do ACE, po prostu zforkuj to repozytorium na swoje konto GitHub i zgłoś swoje pull requesty do przeglądu przez innych współpracowników. Pamiętaj, aby dodać siebie do listy autorów każdego PBO jakie edytujesz oraz do pliku ['AUTHORS.txt'](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) dodając także swój adres e-mail. +Możesz pomóc w rozwoju addonu szukając potencjalnych bugów w naszym kodzie, lub zgłaszając nowe funkcje. Aby wnieść swój wkład do ACE3, po prostu zforkuj to repozytorium na swoje konto GitHub i zgłoś swoje pull requesty do przeglądu przez innych współpracowników. Pamiętaj, aby dodać siebie do listy autorów każdego PBO jakie edytujesz oraz do pliku ['AUTHORS.txt'](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) dodając także swój adres e-mail. Używaj naszego [Issue Tracker-a](https://github.com/acemod/ACE3/issues) aby zgłaszać bugi, proponować nowe funkcje lub sugerować zmiany do aktualnie istniejących. Zobacz także: * [Jak zgłosić bug-a](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) @@ -80,4 +74,4 @@ Używaj naszego [Issue Tracker-a](https://github.com/acemod/ACE3/issues) aby zg #### Testowanie i budowanie Aby pomóc nam w testowaniu najnowszych zmian rozwojowych, pobierz nasz master branch ([bezpośrednio](https://github.com/acemod/ACE3/archive/master.zip), lub [korzystając z git](https://help.github.com/articles/fetching-a-remote/)), a następnie złóż testowego build-a: -* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE do celów testowych. +* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE3 do celów testowych. From 8d291705513c249af323eef1dc2ff85a0ceb0d05 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Tue, 25 Aug 2015 19:33:10 +0200 Subject: [PATCH 129/620] fixing Spelling Issues Change from DEBUG_SETTINGS_CORE to DEBUG_SETTINGS_MAIN --- addons/main/config.cpp | 33 ++++---------------------------- addons/main/script_component.hpp | 6 +++--- 2 files changed, 7 insertions(+), 32 deletions(-) diff --git a/addons/main/config.cpp b/addons/main/config.cpp index 52f2c6d4ac..241183bc87 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -541,50 +541,25 @@ class CfgPatches { "a3_weapons_f_vests", "a3data", "map_vr", - "extended_eventhandlers", "CBA_UI", "CBA_XEH", "CBA_XEH_A3", - "ace_common" + "extended_eventhandlers", "CBA_UI", "CBA_XEH", "CBA_XEH_A3" }; - author[] = {ELSTRING(common,ACETeam)}; + author[] = {ECSTRING(common,ACETeam)}; authorUrl = "http://ace3mod.com/"; versionDesc = "ACE3"; - //versionAct = QUOTE(['MAIN',_this] execVM '\z\ace\addons\main\about.sqf';); - versionAct = ""; VERSION_CONFIG; }; }; class CfgMods { class PREFIX { - dir = "@ACE3"; + dir = "@ace"; name = "Advanced Combat Environment 3"; picture = "A3\Ui_f\data\Logos\arma3_expansion_alpha_ca"; hidePicture = "true"; hideName = "true"; actionName = "Website"; action = "http://ace3mod.com/"; - description = "Bugtracker: https://github.com/acemod/ACE3/issues"; - }; -}; - -class CfgSettings { - class CBA { - class Versioning { - class PREFIX { - level = DEFAULT_VERSIONING_LEVEL; - handler = "ace_common_fnc_mismatch"; - class Dependencies { - CBA[]={"cba_main", {1,0,0}, "true"}; - XEH[]={"cba_xeh", {1,0,0}, "true"}; - }; - }; - }; - /* - class Registry { - class PREFIX { - removed[] = {}; - }; - }; - */ + description = "Issue Tracker: https://github.com/acemod/ACE3/issues"; }; }; diff --git a/addons/main/script_component.hpp b/addons/main/script_component.hpp index 9a18b78a7a..3ac1d0b7aa 100644 --- a/addons/main/script_component.hpp +++ b/addons/main/script_component.hpp @@ -3,12 +3,12 @@ // #define DEBUG_MODE_FULL -#ifdef DEBUG_ENABLED_CORE +#ifdef DEBUG_ENABLED_MAIN #define DEBUG_MODE_FULL #endif -#ifdef DEBUG_SETTINGS_CORE - #define DEBUG_SETTINGS DEBUG_SETTINGS_CORE +#ifdef DEBUG_SETTINGS_MAIN + #define DEBUG_SETTINGS DEBUG_SETTINGS_MAIN #endif #include "\z\ace\addons\main\script_macros.hpp" From 393b69f20c2d3a400805ce5ac9e200f94d7dbc68 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 25 Aug 2015 19:48:18 +0200 Subject: [PATCH 130/620] Readme * to - --- README.md | 68 +++++++++++++++++++------------------- documentation/README_DE.md | 24 +++++++------- documentation/README_PL.md | 68 +++++++++++++++++++------------------- 3 files changed, 80 insertions(+), 80 deletions(-) diff --git a/README.md b/README.md index 73e959d4ea..827e7d2562 100644 --- a/README.md +++ b/README.md @@ -27,51 +27,51 @@ The project is entirely **open-source** and all contributions are welcome. Feel The mod is **built modularly**, so almost any included PBO can be easily removed from the configuration. This way, a team can maintain its own tailored version of ACE3 by simply excluding any components they don't need, or those possibly in conflict with other mods. Modules themselves, e.g. the medical system, also include various customization options, allowing mission designers to tweak the overall experience. ### Core features -* Brand new 3D interaction/action system -* Performance and reliability framework -* Focus on modularity and customization -* New flexible client and server settings & configuration -* Improved medical system with various levels (basic/advanced) focus on gameplay/realism -* Proper & consistent network-synced weather -* Wind and weather-based ballistics -* Captivity system -* Explosives system, including different trigger types -* Map screen improvements – marker placement and map tools -* Advanced missile guidance and laser designation +- Brand new 3D interaction/action system +- Performance and reliability framework +- Focus on modularity and customization +- New flexible client and server settings & configuration +- Improved medical system with various levels (basic/advanced) focus on gameplay/realism +- Proper & consistent network-synced weather +- Wind and weather-based ballistics +- Captivity system +- Explosives system, including different trigger types +- Map screen improvements – marker placement and map tools +- Advanced missile guidance and laser designation #### Additional features -* Carrying and dragging -* Realistic names for vehicles and weapons -* A fire control system (FCS) for armored vehicles and helicopters -* Realistic ballistics/FCS calculated in C/C++ extensions -* Backblast area and overpressure simulation -* Disposable launchers -* Realistic G-forces -* Vehicle locking -* Realistic night and thermal vision modes -* Magazine repacking -* Realistic weapon overheating mechanic -* Combat deafness (temporary loss of hearing) simulation -* Improved ragdoll physics -* Improved interactions for AARs and ammo bearers -* Adjustable sniper scopes -* No idle animation with lowered weapon -* No talking player avatar -* Jumping over obstacles, climbing over walls and cutting down fences -* Vector, MicroDAGR and Kestrel devices
+- Carrying and dragging +- Realistic names for vehicles and weapons +- A fire control system (FCS) for armored vehicles and helicopters +- Realistic ballistics/FCS calculated in C/C++ extensions +- Backblast area and overpressure simulation +- Disposable launchers +- Realistic G-forces +- Vehicle locking +- Realistic night and thermal vision modes +- Magazine repacking +- Realistic weapon overheating mechanic +- Combat deafness (temporary loss of hearing) simulation +- Improved ragdoll physics +- Improved interactions for AARs and ammo bearers +- Adjustable sniper scopes +- No idle animation with lowered weapon +- No talking player avatar +- Jumping over obstacles, climbing over walls and cutting down fences +- Vector, MicroDAGR and Kestrel devices
***and much more...*** ### Guides & how-tos If you installed ACE3 but have trouble understanding how it all works, or where to start, read this first: -* [Getting started](http://ace3mod.com/wiki/user/getting-started.html) +- [Getting started](http://ace3mod.com/wiki/user/getting-started.html) #### Contributing You can help out with the ongoing development by looking for potential bugs in our code base, or by contributing new features. To contribute something to ACE3, simply fork this repository and submit your pull requests for review by other collaborators. Remember to add yourself to the author array of any PBO you will be editing and the [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) file; including a valid email address. Please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues) to report a bug, propose a feature, or suggest changes to the existing ones. See also: -* [How to report an issue](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) -* [How to make a feature request](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) +- [How to report an issue](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) +- [How to make a feature request](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) #### Testing & building To help us test the latest development changes, download our master branch ([directly](https://github.com/acemod/ACE3/archive/master.zip), or [with git](https://help.github.com/articles/fetching-a-remote/)), then assemble a test build: -* [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes. +- [Setting up the development environment](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – step-by-step instructions on how to properly setup and build a version of ACE3 for testing purposes. diff --git a/documentation/README_DE.md b/documentation/README_DE.md index 6d932e2450..f70562e389 100644 --- a/documentation/README_DE.md +++ b/documentation/README_DE.md @@ -28,26 +28,26 @@ Da die MOD vollkommen als **open-source** Projekt gestaltet ist, steht es jedem Die Mod ist **modular gestaltet** — beinahe jede PBO kann entfernt werden, sodass jede Gemeinschaft ihre eigene Version der Mod unterhalten kann. Dies kann zum Beispiel einige Funktionalitäten ausschließen, da das Feature nicht gewünscht ist, oder es mit einer anderen MOD in Konflikt gerät etc. .Ebenfalls können viele Einstellungen vom Missionsersteller vorgenommen werden (u.a. am medizinischem System), sodass eine individuelle Erfahrung gewährleistet wird. ### Features -* Verbessertes medizinisches System -* Logistik System: U.a. Transport und Fahrzeugreparatur -* Sprengstoffsystem mit unterschiedlichen Zündern -* Gefangenensystem -* Reale Namen für Arma 3 Fahrzeuge und Waffen -* Realistisches, ballistisches Verhalten (Wind und Luftfeuchtigkeit) -* Simulation der Rückstrahlzone -* Ein Feuerleitsystem für gepanzerte Fahrzeuge und Hubschrauber - ***und noch viel mehr...*** +- Verbessertes medizinisches System +- Logistik System: U.a. Transport und Fahrzeugreparatur +- Sprengstoffsystem mit unterschiedlichen Zündern +- Gefangenensystem +- Reale Namen für Arma 3 Fahrzeuge und Waffen +- Realistisches, ballistisches Verhalten (Wind und Luftfeuchtigkeit) +- Simulation der Rückstrahlzone +- Ein Feuerleitsystem für gepanzerte Fahrzeuge und Hubschrauber +***und noch viel mehr...*** #### Anleitungen Du hast ACE3 installiert, hast aber keine Ahnung was und wie alles funktioniert und wo sich was befindet? -* [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html). +- [Erste Schritte](http://ace3mod.com/wiki/user/getting-started.html). #### Mitwirken Wenn du bei der Entwicklung der MOD mithelfen möchtest, so kannst du dies tun, indem du nach Fehlern Ausschau hältst, oder neue Funktionen vorschlägst. Um etwas beizutragen, "Forke" einfach dieses Archiv (bzw. repository) und erstelle deine "Pull-Request", welche von anderen Entwicklern und Beiträgern überprüft wird. Bitte trage dich dabei in [`AUTHORS.txt`](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) mit deinem Nutzernamen und einer gütligen Email-Adresse ein. Um einen Fehler oder ein Feature zu melden bzw. ein bereits Bestehendes zu ändern - nutze unseren [Issue Tracker](https://github.com/acemod/ACE3/issues). Besuche auch: -* [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) -* [Wie kann ich ein Feature Request erstellen](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) +- [Wie kann ich ein Problem melden](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) +- [Wie kann ich ein Feature Request erstellen](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) #### Testen & MOD erstellen Wenn du die neusten Entwicklungen erleben und uns dabei helfen möchtest bestehende Fehler zu entdecken, lade dir einfach die "Master Branch" herunter. Entweder nutzt du [Git](https://help.github.com/articles/fetching-a-remote/) - wenn die Schritte bekannt sind - oder du lädst es dir direkt über [diesen Link](https://github.com/acemod/ACE3/archive/master.zip) herunter. diff --git a/documentation/README_PL.md b/documentation/README_PL.md index 157a254742..56a9c72caa 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -27,51 +27,51 @@ Projekt ten jest całkowicie **otwarty źródłowo** i wszelki wkład w rozwój Modyfikacja ta jest **budowana modułowo**, dzięki temu prawie każdy dostarczony plik PBO może zostać łatwo usunięty z konfiguracji. Dzięki temu, grupa może prowadzić własną, dostosowaną do siebie, wersję ACE3 wyłączając elementy, których nie potrzebują, lub które po prostu nie działają z innymi addonami. Moduły same w sobie np. system medyczny, posiadają wiele możliwości konfiguracji, pozwalając mission designerom dostosować ogólne doświadczenie z gry. ### Główne cechy -* Całkowicie nowy system akcji/interakcji 3D -* Wydajna i niezawodna struktura -* Skupienie na modułowości i customizacji -* Elastyczny system ustawień i konfiguracji opcji u klienta i serwera -* Ulepszony system medyczny z różnymi stopniami zaawansowania (podstawowy/rozszerzony) skupiony na grywalności i realizmowi -* Prawidłowa i spójna synchronizowana pogoda -* Balistyka oparta na warunkach pogodowych i wietrze -* Możliwość brania jeńców -* Rozszerzony system ładunków wybuchowych, włączając w to użycie różnego rodzaju zapalników -* Ulepszenia mapy - stawianie markerów i przybory mapy -* Zaawansowane naprowadzanie rakiet i wskazywanie laserem +- Całkowicie nowy system akcji/interakcji 3D +- Wydajna i niezawodna struktura +- Skupienie na modułowości i customizacji +- Elastyczny system ustawień i konfiguracji opcji u klienta i serwera +- Ulepszony system medyczny z różnymi stopniami zaawansowania (podstawowy/rozszerzony) skupiony na grywalności i realizmowi +- Prawidłowa i spójna synchronizowana pogoda +- Balistyka oparta na warunkach pogodowych i wietrze +- Możliwość brania jeńców +- Rozszerzony system ładunków wybuchowych, włączając w to użycie różnego rodzaju zapalników +- Ulepszenia mapy - stawianie markerów i przybory mapy +- Zaawansowane naprowadzanie rakiet i wskazywanie laserem #### Dodatkowe cechy -* Przeciąganie i przenoszenie -* Realistyczne nazwy pojazdów i broni -* System kontroli ognia (SKO) dla pojazdów opancerzonych oraz śmigłowców -* Realistyczna balistyka/SKO obliczana w rozszerzeniach C/C++ -* Symulacja strefy backblastu i podciśnienia -* Jednorazowe wyrzutnie -* Realistyczne siły G -* Zamykanie pojazdów na kluczyk -* Realistyczne tryby termowizji oraz noktowizji -* Przepakowywanie magazynków -* Realistyczna mechanika przegrzewania broni -* Symulacja głuchoty bitewnej (tymczasowej utraty słuchu) -* Ulepszona fizyka ragdoll -* Ulepszona interakcja dla asystentów i amunicyjnych -* Regulowane celowniki snajperskie -* Usunięte animacje bezczynności z opuszczoną bronią -* Usunięte głosy awatara gracza -* Skakanie przez przeszkody, wspinanie się na ściany i przecinanie płotów -* Urządzenia Vector, MicroDAGR, Kestrel
+- Przeciąganie i przenoszenie +- Realistyczne nazwy pojazdów i broni +- System kontroli ognia (SKO) dla pojazdów opancerzonych oraz śmigłowców +- Realistyczna balistyka/SKO obliczana w rozszerzeniach C/C++ +- Symulacja strefy backblastu i podciśnienia +- Jednorazowe wyrzutnie +- Realistyczne siły G +- Zamykanie pojazdów na kluczyk +- Realistyczne tryby termowizji oraz noktowizji +- Przepakowywanie magazynków +- Realistyczna mechanika przegrzewania broni +- Symulacja głuchoty bitewnej (tymczasowej utraty słuchu) +- Ulepszona fizyka ragdoll +- Ulepszona interakcja dla asystentów i amunicyjnych +- Regulowane celowniki snajperskie +- Usunięte animacje bezczynności z opuszczoną bronią +- Usunięte głosy awatara gracza +- Skakanie przez przeszkody, wspinanie się na ściany i przecinanie płotów +- Urządzenia Vector, MicroDAGR, Kestrel
***i wiele wiele więcej...*** ### Poradniki i instrukcje Jeżeli zainstalowałeś ACE3 lecz masz problem ze zrozumieniem jak to wszystko działa, lub gdzie zacząć, zacznij od przeczytania tego: -* [Wprowadzenie](http://ace3mod.com/wiki/user/getting-started.html) +- [Wprowadzenie](http://ace3mod.com/wiki/user/getting-started.html) #### Współpraca Możesz pomóc w rozwoju addonu szukając potencjalnych bugów w naszym kodzie, lub zgłaszając nowe funkcje. Aby wnieść swój wkład do ACE3, po prostu zforkuj to repozytorium na swoje konto GitHub i zgłoś swoje pull requesty do przeglądu przez innych współpracowników. Pamiętaj, aby dodać siebie do listy autorów każdego PBO jakie edytujesz oraz do pliku ['AUTHORS.txt'](https://github.com/acemod/ACE3/blob/master/AUTHORS.txt) dodając także swój adres e-mail. Używaj naszego [Issue Tracker-a](https://github.com/acemod/ACE3/issues) aby zgłaszać bugi, proponować nowe funkcje lub sugerować zmiany do aktualnie istniejących. Zobacz także: -* [Jak zgłosić bug-a](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) -* [Jak zgłosić feature request-a](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) +- [Jak zgłosić bug-a](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) +- [Jak zgłosić feature request-a](http://ace3mod.com/wiki/user/how-to-make-a-feature-request.html) #### Testowanie i budowanie Aby pomóc nam w testowaniu najnowszych zmian rozwojowych, pobierz nasz master branch ([bezpośrednio](https://github.com/acemod/ACE3/archive/master.zip), lub [korzystając z git](https://help.github.com/articles/fetching-a-remote/)), a następnie złóż testowego build-a: -* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE3 do celów testowych. +- [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE3 do celów testowych. From 275f04d8762020b5f2d1dcff373d73fafff52331 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 25 Aug 2015 13:18:59 -0500 Subject: [PATCH 131/620] preInit defines and fix func name --- addons/common/XEH_postInit.sqf | 12 ++++++------ addons/common/XEH_preInit.sqf | 4 +++- ...nilAndExecute.sqf => fnc_waitUntilAndExecute.sqf} | 6 +++--- 3 files changed, 12 insertions(+), 10 deletions(-) rename addons/common/functions/{fnc_waitUnilAndExecute.sqf => fnc_waitUntilAndExecute.sqf} (81%) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index e57dab3521..9477dcf235 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -18,7 +18,12 @@ (_x select 0) call (_x select 1); } forEach GVAR(nextFrameBufferA); - + //Swap double-buffer for execNextFrame: + GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB); + GVAR(nextFrameBufferB) = []; + GVAR(nextFrameNo) = diag_frameno + 1; + + //Handle the waitUntilAndExec array: _deleted = 0; { _x params ["_condition", "_code", "_args"]; @@ -28,11 +33,6 @@ _args call _code; }; } forEach GVAR(waitUntilAndExecArray); - - //Swap double-buffer: - GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB); - GVAR(nextFrameBufferB) = []; - GVAR(nextFrameNo) = diag_frameno + 1; }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6fdf99113c..306eec12da 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -194,6 +194,7 @@ PREP(unmuteUnit); PREP(useItem); PREP(useMagazine); PREP(waitAndExecute); +PREP(waitUntilAndExecute); PREP(waveHeightAt); PREP(translateToWeaponSpace); @@ -297,11 +298,12 @@ PREP(_handleRequestAllSyncedEvents); GVAR(syncedEvents) = HASH_CREATE; -//GVARS for execNextFrame and waitAndExec +//GVARS for execNextFrame and waitAndExec and waitUntilAndExecute GVAR(waitAndExecArray) = []; GVAR(nextFrameNo) = diag_frameno; GVAR(nextFrameBufferA) = []; GVAR(nextFrameBufferB) = []; +GVAR(waitUntilAndExecArray) = []; // @TODO: Generic local-managed global-synced objects (createVehicleLocal) diff --git a/addons/common/functions/fnc_waitUnilAndExecute.sqf b/addons/common/functions/fnc_waitUntilAndExecute.sqf similarity index 81% rename from addons/common/functions/fnc_waitUnilAndExecute.sqf rename to addons/common/functions/fnc_waitUntilAndExecute.sqf index de4623b4ae..630ec4e2ce 100644 --- a/addons/common/functions/fnc_waitUnilAndExecute.sqf +++ b/addons/common/functions/fnc_waitUntilAndExecute.sqf @@ -1,22 +1,22 @@ /* * Author: joko // Jonas - * * Executes a code once with after the Condition is True, using a PFH * * Argument: * 0: Condition * 1: Code to execute * 2: Parameters to run the code with - * * Return value: * None * * Example: - * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player], false] call ace_common_fnc_waitAndExecute + * [{(_this select 0) == vehicle (_this select 0)}, {(_this select 0) setDamage 1;}, [ACE_player]] call ace_common_fnc_waitAndExecute * * Public: No */ #include "script_component.hpp" +TRACE_1("Adding",_this); + GVAR(waitUntilAndExecArray) pushBack _this; From f1e5ca24bfdacd7102c577d83b1dced11249e4a9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 06:11:52 +0200 Subject: [PATCH 132/620] Updated required CBA files --- .../cba/addons/main/script_macros_common.hpp | 1159 ++++++++++------- tools/cba/addons/xeh/init_pre.sqf | 310 ++--- tools/cba/addons/xeh/script_xeh.hpp | 45 +- 3 files changed, 839 insertions(+), 675 deletions(-) diff --git a/tools/cba/addons/main/script_macros_common.hpp b/tools/cba/addons/main/script_macros_common.hpp index 1385d7b389..78893db662 100644 --- a/tools/cba/addons/main/script_macros_common.hpp +++ b/tools/cba/addons/main/script_macros_common.hpp @@ -1,11 +1,11 @@ /* - Header: script_macros_common.hpp + Header: script_macros_common.hpp - Description: - A general set of useful macro functions for use by CBA itself or by any module that uses CBA. + Description: + A general set of useful macro functions for use by CBA itself or by any module that uses CBA. - Authors: - Sickboy and Spooner + Authors: + Sickboy and Spooner */ /* **************************************************** @@ -40,27 +40,27 @@ */ #ifndef MAINPREFIX - #define MAINPREFIX x + #define MAINPREFIX x #endif #ifndef SUBPREFIX - #define SUBPREFIX addons + #define SUBPREFIX addons #endif #ifndef MAINLOGIC - #define MAINLOGIC main + #define MAINLOGIC main #endif #ifndef VERSION - #define VERSION 0 + #define VERSION 0 #endif #ifndef VERSION_AR - #define VERSION_AR VERSION + #define VERSION_AR VERSION #endif #ifndef VERSION_CONFIG - #define VERSION_CONFIG version = VERSION; versionStr = QUOTE(VERSION); versionAr[] = {VERSION_AR} + #define VERSION_CONFIG version = VERSION; versionStr = QUOTE(VERSION); versionAr[] = {VERSION_AR} #endif #define ADDON DOUBLES(PREFIX,COMPONENT) @@ -72,50 +72,50 @@ Group: Debugging /* ------------------------------------------- Macros: DEBUG_MODE_x - Managing debugging based on debug level. + Managing debugging based on debug level. - According to the *highest* level of debugging that has been defined *before* script_macros_common.hpp is included, - only the appropriate debugging commands will be functional. With no level explicitely defined, assume DEBUG_MODE_NORMAL. + According to the *highest* level of debugging that has been defined *before* script_macros_common.hpp is included, + only the appropriate debugging commands will be functional. With no level explicitely defined, assume DEBUG_MODE_NORMAL. - DEBUG_MODE_FULL - Full debugging output. - DEBUG_MODE_NORMAL - All debugging except and (Default setting if none specified). - DEBUG_MODE_MINIMAL - Only and enabled. + DEBUG_MODE_FULL - Full debugging output. + DEBUG_MODE_NORMAL - All debugging except and (Default setting if none specified). + DEBUG_MODE_MINIMAL - Only and enabled. Examples: - In order to turn on full debugging for a single file, - (begin example) - // Top of individual script file. - #define DEBUG_MODE_FULL - #include "script_component.hpp" - (end) + In order to turn on full debugging for a single file, + (begin example) + // Top of individual script file. + #define DEBUG_MODE_FULL + #include "script_component.hpp" + (end) - In order to force minimal debugging for a single component, - (begin example) - // Top of addons\\script_component.hpp - // Ensure that any FULL and NORMAL setting from the individual files are undefined and MINIMAL is set. - #ifdef DEBUG_MODE_FULL - #undef DEBUG_MODE_FULL - #endif - #ifdef DEBUG_MODE_NORMAL - #undef DEBUG_MODE_NORMAL - #endif - #ifndef DEBUG_MODE_MINIMAL - #define DEBUG_MODE_MINIMAL - #endif - #include "script_macros.hpp" - (end) + In order to force minimal debugging for a single component, + (begin example) + // Top of addons\\script_component.hpp + // Ensure that any FULL and NORMAL setting from the individual files are undefined and MINIMAL is set. + #ifdef DEBUG_MODE_FULL + #undef DEBUG_MODE_FULL + #endif + #ifdef DEBUG_MODE_NORMAL + #undef DEBUG_MODE_NORMAL + #endif + #ifndef DEBUG_MODE_MINIMAL + #define DEBUG_MODE_MINIMAL + #endif + #include "script_macros.hpp" + (end) - In order to turn on full debugging for a whole addon, - (begin example) - // Top of addons\main\script_macros.hpp - #ifndef DEBUG_MODE_FULL - #define DEBUG_MODE_FULL - #endif - #include "\x\cba\addons\main\script_macros_common.hpp" - (end) + In order to turn on full debugging for a whole addon, + (begin example) + // Top of addons\main\script_macros.hpp + #ifndef DEBUG_MODE_FULL + #define DEBUG_MODE_FULL + #endif + #include "\x\cba\addons\main\script_macros_common.hpp" + (end) Author: - Spooner + Spooner ------------------------------------------- */ // If DEBUG_MODE_FULL, then also enable DEBUG_MODE_NORMAL. @@ -142,20 +142,20 @@ Author: /* ------------------------------------------- Macro: LOG() - Log a timestamped message into the RPT log. + Log a timestamped message into the RPT log. - Only run if or higher is defined. + Only run if or higher is defined. Parameters: - MESSAGE - Message to record [String] + MESSAGE - Message to record [String] Example: - (begin example) - LOG("Initiated clog-dancing simulator."); - (end) + (begin example) + LOG("Initiated clog-dancing simulator."); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #ifdef DEBUG_MODE_FULL #define LOG(MESSAGE) [THIS_FILE_, __LINE__, MESSAGE] call CBA_fnc_log @@ -165,20 +165,20 @@ Author: /* ------------------------------------------- Macro: WARNING() - Record a timestamped, non-critical error in the RPT log. + Record a timestamped, non-critical error in the RPT log. - Only run if or higher is defined. + Only run if or higher is defined. Parameters: - MESSAGE - Message to record [String] + MESSAGE - Message to record [String] Example: - (begin example) - WARNING("This function has been deprecated. Please don't use it in future!"); - (end) + (begin example) + WARNING("This function has been deprecated. Please don't use it in future!"); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #ifdef DEBUG_MODE_NORMAL #define WARNING(MESSAGE) [THIS_FILE_, __LINE__, ('WARNING: ' + MESSAGE)] call CBA_fnc_log @@ -188,152 +188,171 @@ Author: /* ------------------------------------------- Macro: ERROR() - Record a timestamped, critical error in the RPT log. + Record a timestamped, critical error in the RPT log. - The heading is "ERROR" (use for a specific title). + The heading is "ERROR" (use for a specific title). - TODO: Popup an error dialog & throw an exception. + TODO: Popup an error dialog & throw an exception. Parameters: - MESSAGE - Message to record [String] + MESSAGE - Message to record [String] Example: - (begin example) - ERROR("Value not found","value of frog not found in config ...yada...yada..."); - (end) + (begin example) + ERROR("Value not found","value of frog not found in config ...yada...yada..."); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ERROR(MESSAGE) \ - [THIS_FILE_, __LINE__, "ERROR", MESSAGE] call CBA_fnc_error; + [THIS_FILE_, __LINE__, "ERROR", MESSAGE] call CBA_fnc_error; /* ------------------------------------------- Macro: ERROR_WITH_TITLE() - Record a timestamped, critical error in the RPT log. + Record a timestamped, critical error in the RPT log. - The title can be specified (in the heading is always just "ERROR") - Newlines (\n) in the MESSAGE will be put on separate lines. + The title can be specified (in the heading is always just "ERROR") + Newlines (\n) in the MESSAGE will be put on separate lines. - TODO: Popup an error dialog & throw an exception. + TODO: Popup an error dialog & throw an exception. Parameters: - TITLE - Title of error message [String] - MESSAGE - Body of error message [String] + TITLE - Title of error message [String] + MESSAGE - Body of error message [String] Example: - (begin example) - ERROR_WITH_TITLE("Value not found","Value of frog not found in config ...yada...yada..."); - (end) + (begin example) + ERROR_WITH_TITLE("Value not found","Value of frog not found in config ...yada...yada..."); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ERROR_WITH_TITLE(TITLE,MESSAGE) \ - [THIS_FILE_, __LINE__, TITLE, MESSAGE] call CBA_fnc_error; + [THIS_FILE_, __LINE__, TITLE, MESSAGE] call CBA_fnc_error; + +/* ------------------------------------------- +Macro: MESSAGE_WITH_TITLE() + Record a single line, timestamped log entry in the RPT log. + +Parameters: + TITLE - Title of log message [String] + MESSAGE - Body of message [String] + +Example: + (begin example) + MESSAGE_WITH_TITLE("Value found","Value of frog found in config "); + (end) + +Author: + Killswitch +------------------------------------------- */ +#define MESSAGE_WITH_TITLE(TITLE,MESSAGE) \ + [THIS_FILE_, __LINE__, TITLE + ': ' + (MESSAGE)] call CBA_fnc_log; /* ------------------------------------------- Macro: RETNIL() - If a variable is undefined, return the value nil. Otherwise, return the - variable itself. + If a variable is undefined, return the value nil. Otherwise, return the + variable itself. Parameters: - VARIABLE - the variable to check + VARIABLE - the variable to check Example: - (begin example) - // _var is undefined - hintSilent format ["_var=%1", RETNIL(_var) ]; // "_var=any" - (end example) + (begin example) + // _var is undefined + hintSilent format ["_var=%1", RETNIL(_var) ]; // "_var=any" + (end example) Author: - Alef (see CBA issue #8514) + Alef (see CBA issue #8514) ------------------------------------------- */ #define RETNIL(VARIABLE) if (isNil{VARIABLE}) then {nil} else {VARIABLE} /* ------------------------------------------- Macros: TRACE_n() - Log a message and 1-8 variables to the RPT log. + Log a message and 1-8 variables to the RPT log. - Only run if is defined. + Only run if is defined. - TRACE_1(MESSAGE,A) - Log 1 variable. - TRACE_2(MESSAGE,A,B) - Log 2 variables. - TRACE_3(MESSAGE,A,B,C) - Log 3 variables. - TRACE_4(MESSAGE,A,B,C,D) - Log 4 variables. - TRACE_5(MESSAGE,A,B,C,D,E) - Log 5 variables. - TRACE_6(MESSAGE,A,B,C,D,E,F) - Log 6 variables. - TRACE_7(MESSAGE,A,B,C,D,E,F,G) - Log 7 variables. - TRACE_8(MESSAGE,A,B,C,D,E,F,G,H) - Log 8 variables. - TRACE_9(MESSAGE,A,B,C,D,E,F,G,H,I) - Log 9 variables. + TRACE_1(MESSAGE,A) - Log 1 variable. + TRACE_2(MESSAGE,A,B) - Log 2 variables. + TRACE_3(MESSAGE,A,B,C) - Log 3 variables. + TRACE_4(MESSAGE,A,B,C,D) - Log 4 variables. + TRACE_5(MESSAGE,A,B,C,D,E) - Log 5 variables. + TRACE_6(MESSAGE,A,B,C,D,E,F) - Log 6 variables. + TRACE_7(MESSAGE,A,B,C,D,E,F,G) - Log 7 variables. + TRACE_8(MESSAGE,A,B,C,D,E,F,G,H) - Log 8 variables. + TRACE_9(MESSAGE,A,B,C,D,E,F,G,H,I) - Log 9 variables. Parameters: - MESSAGE - Message to add to the trace [String] - A..H - Variable names to log values of [Any] + MESSAGE - Message to add to the trace [String] + A..H - Variable names to log values of [Any] Example: - (begin example) - TRACE_3("After takeoff",_vehicle player,getPos (_vehicle player), getPosASL (_vehicle player)); - (end) + (begin example) + TRACE_3("After takeoff",_vehicle player,getPos (_vehicle player), getPosASL (_vehicle player)); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define PFORMAT_1(MESSAGE,A) \ - format ['%1: A=%2', MESSAGE, RETNIL(A)] + format ['%1: A=%2', MESSAGE, RETNIL(A)] #define PFORMAT_2(MESSAGE,A,B) \ - format ['%1: A=%2, B=%3', MESSAGE, RETNIL(A), RETNIL(B)] + format ['%1: A=%2, B=%3', MESSAGE, RETNIL(A), RETNIL(B)] #define PFORMAT_3(MESSAGE,A,B,C) \ - format ['%1: A=%2, B=%3, C=%4', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C)] + format ['%1: A=%2, B=%3, C=%4', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C)] #define PFORMAT_4(MESSAGE,A,B,C,D) \ - format ['%1: A=%2, B=%3, C=%4, D=%5', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D)] + format ['%1: A=%2, B=%3, C=%4, D=%5', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D)] #define PFORMAT_5(MESSAGE,A,B,C,D,E) \ - format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E)] + format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E)] #define PFORMAT_6(MESSAGE,A,B,C,D,E,F) \ - format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F)] + format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F)] #define PFORMAT_7(MESSAGE,A,B,C,D,E,F,G) \ - format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G)] + format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G)] #define PFORMAT_8(MESSAGE,A,B,C,D,E,F,G,H) \ - format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8, H=%9', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G), RETNIL(H)] + format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8, H=%9', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G), RETNIL(H)] #define PFORMAT_9(MESSAGE,A,B,C,D,E,F,G,H,I) \ - format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8, H=%9, I=%10', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G), RETNIL(H), RETNIL(I)] + format ['%1: A=%2, B=%3, C=%4, D=%5, E=%6, F=%7, G=%8, H=%9, I=%10', MESSAGE, RETNIL(A), RETNIL(B), RETNIL(C), RETNIL(D), RETNIL(E), RETNIL(F), RETNIL(G), RETNIL(H), RETNIL(I)] #ifdef DEBUG_MODE_FULL #define TRACE_1(MESSAGE,A) \ - [THIS_FILE_, __LINE__, PFORMAT_1(MESSAGE,A)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_1(MESSAGE,A)] call CBA_fnc_log #define TRACE_2(MESSAGE,A,B) \ - [THIS_FILE_, __LINE__, PFORMAT_2(MESSAGE,A,B)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_2(MESSAGE,A,B)] call CBA_fnc_log #define TRACE_3(MESSAGE,A,B,C) \ - [THIS_FILE_, __LINE__, PFORMAT_3(MESSAGE,A,B,C)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_3(MESSAGE,A,B,C)] call CBA_fnc_log #define TRACE_4(MESSAGE,A,B,C,D) \ - [THIS_FILE_, __LINE__, PFORMAT_4(MESSAGE,A,B,C,D)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_4(MESSAGE,A,B,C,D)] call CBA_fnc_log #define TRACE_5(MESSAGE,A,B,C,D,E) \ - [THIS_FILE_, __LINE__, PFORMAT_5(MESSAGE,A,B,C,D,E)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_5(MESSAGE,A,B,C,D,E)] call CBA_fnc_log #define TRACE_6(MESSAGE,A,B,C,D,E,F) \ - [THIS_FILE_, __LINE__, PFORMAT_6(MESSAGE,A,B,C,D,E,F)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_6(MESSAGE,A,B,C,D,E,F)] call CBA_fnc_log #define TRACE_7(MESSAGE,A,B,C,D,E,F,G) \ - [THIS_FILE_, __LINE__, PFORMAT_7(MESSAGE,A,B,C,D,E,F,G)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_7(MESSAGE,A,B,C,D,E,F,G)] call CBA_fnc_log #define TRACE_8(MESSAGE,A,B,C,D,E,F,G,H) \ - [THIS_FILE_, __LINE__, PFORMAT_8(MESSAGE,A,B,C,D,E,F,G,H)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_8(MESSAGE,A,B,C,D,E,F,G,H)] call CBA_fnc_log #define TRACE_9(MESSAGE,A,B,C,D,E,F,G,H,I) \ - [THIS_FILE_, __LINE__, PFORMAT_9(MESSAGE,A,B,C,D,E,F,G,H,I)] call CBA_fnc_log + [THIS_FILE_, __LINE__, PFORMAT_9(MESSAGE,A,B,C,D,E,F,G,H,I)] call CBA_fnc_log #else @@ -360,37 +379,37 @@ Group: General #define QUOTE(var1) #var1 #ifdef MODULAR - #define COMPONENT_T DOUBLES(t,COMPONENT) - #define COMPONENT_M DOUBLES(m,COMPONENT) - #define COMPONENT_S DOUBLES(s,COMPONENT) - #define COMPONENT_C DOUBLES(c,COMPONENT) - #define COMPONENT_F COMPONENT_C + #define COMPONENT_T DOUBLES(t,COMPONENT) + #define COMPONENT_M DOUBLES(m,COMPONENT) + #define COMPONENT_S DOUBLES(s,COMPONENT) + #define COMPONENT_C DOUBLES(c,COMPONENT) + #define COMPONENT_F COMPONENT_C #else - #define COMPONENT_T COMPONENT - #define COMPONENT_M COMPONENT - #define COMPONENT_S COMPONENT - #define COMPONENT_F COMPONENT - #define COMPONENT_C COMPONENT + #define COMPONENT_T COMPONENT + #define COMPONENT_M COMPONENT + #define COMPONENT_S COMPONENT + #define COMPONENT_F COMPONENT + #define COMPONENT_C COMPONENT #endif /* ------------------------------------------- Macro: INC() Description: - Increase a number by one. + Increase a number by one. Parameters: - VAR - Variable to increment [Number] + VAR - Variable to increment [Number] Example: - (begin example) - _counter = 0; - INC(_counter); - // _counter => 1 - (end) + (begin example) + _counter = 0; + INC(_counter); + // _counter => 1 + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define INC(var) var = (var) + 1 @@ -398,20 +417,20 @@ Author: Macro: DEC() Description: - Decrease a number by one. + Decrease a number by one. Parameters: - VAR - Variable to decrement [Number] + VAR - Variable to decrement [Number] Example: - (begin example) - _counter = 99; - DEC(_counter); - // _counter => 98 - (end) + (begin example) + _counter = 99; + DEC(_counter); + // _counter => 98 + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define DEC(var) var = (var) - 1 @@ -419,27 +438,27 @@ Author: Macro: ADD() Description: - Add a value to a variable. Variable and value should be both Numbers or both Strings. + Add a value to a variable. Variable and value should be both Numbers or both Strings. Parameters: - VAR - Variable to add to [Number or String] - VALUE - Value to add [Number or String] + VAR - Variable to add to [Number or String] + VALUE - Value to add [Number or String] Examples: - (begin example) - _counter = 2; - ADD(_counter,3); - // _counter => 5 - (end) - (begin example) - _str = "hello"; - ADD(_str," "); - ADD(_str,"Fred"); - // _str => "hello Fred" - (end) + (begin example) + _counter = 2; + ADD(_counter,3); + // _counter => 5 + (end) + (begin example) + _str = "hello"; + ADD(_str," "); + ADD(_str,"Fred"); + // _str => "hello Fred" + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define ADD(var1,var2) var1 = (var1) + (var2) @@ -447,18 +466,18 @@ Author: Macro: SUB() Description: - Subtract a value from a number variable. VAR and VALUE should both be Numbers. + Subtract a value from a number variable. VAR and VALUE should both be Numbers. Parameters: - VAR - Variable to subtract from [Number] - VALUE - Value to subtract [Number] + VAR - Variable to subtract from [Number] + VALUE - Value to subtract [Number] Examples: - (begin example) - _numChickens = 2; - SUB(_numChickens,3); - // _numChickens => -1 - (end) + (begin example) + _numChickens = 2; + SUB(_numChickens,3); + // _numChickens => -1 + (end) ------------------------------------------- */ #define SUB(var1,var2) var1 = (var1) - (var2) @@ -466,24 +485,24 @@ Examples: Macro: REM() Description: - Remove an element from an array each time it occurs. + Remove an element from an array each time it occurs. - This recreates the entire array, so use BIS_fnc_removeIndex if modification of the original array is required - or if only one of the elements that matches ELEMENT needs to be removed. + This recreates the entire array, so use BIS_fnc_removeIndex if modification of the original array is required + or if only one of the elements that matches ELEMENT needs to be removed. Parameters: - ARRAY - Array to modify [Array] - ELEMENT - Element to remove [Any] + ARRAY - Array to modify [Array] + ELEMENT - Element to remove [Any] Examples: - (begin example) - _array = [1, 2, 3, 4, 3, 8]; - REM(_array,3); - // _array = [1, 2, 4, 8]; - (end) + (begin example) + _array = [1, 2, 3, 4, 3, 8]; + REM(_array,3); + // _array = [1, 2, 4, 8]; + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define REM(var1,var2) SUB(var1,[var2]) @@ -491,21 +510,21 @@ Author: Macro: PUSH() Description: - Appends a single value onto the end of an ARRAY. Change is made to the ARRAY itself, not creating a new array. + Appends a single value onto the end of an ARRAY. Change is made to the ARRAY itself, not creating a new array. Parameters: - ARRAY - Array to push element onto [Array] - ELEMENT - Element to push [Any] + ARRAY - Array to push element onto [Array] + ELEMENT - Element to push [Any] Examples: - (begin example) - _fish = ["blue", "green", "smelly"]; - PUSH(_fish,"monkey-flavoured"); - // _fish => ["blue", "green", "smelly", "monkey-flavoured"] - (end) + (begin example) + _fish = ["blue", "green", "smelly"]; + PUSH(_fish,"monkey-flavoured"); + // _fish => ["blue", "green", "smelly", "monkey-flavoured"] + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define PUSH(var1,var2) (var1) pushBack (var2) @@ -513,27 +532,27 @@ Author: Macro: ISNILS() Description: - Sets a variable with a value, but only if it is undefined. + Sets a variable with a value, but only if it is undefined. Parameters: - VARIABLE - Variable to set [Any, not nil] - DEFAULT_VALUE - Value to set VARIABLE to if it is undefined [Any, not nil] + VARIABLE - Variable to set [Any, not nil] + DEFAULT_VALUE - Value to set VARIABLE to if it is undefined [Any, not nil] Examples: - (begin example) - // _fish is undefined - ISNILS(_fish,0); - // _fish => 0 - (end) - (begin example) - _fish = 12; - // ...later... - ISNILS(_fish,0); - // _fish => 12 - (end) + (begin example) + // _fish is undefined + ISNILS(_fish,0); + // _fish => 0 + (end) + (begin example) + _fish = 12; + // ...later... + ISNILS(_fish,0); + // _fish => 12 + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define ISNILS(VARIABLE,DEFAULT_VALUE) if (isNil #VARIABLE) then { ##VARIABLE = ##DEFAULT_VALUE } #define ISNILS2(var1,var2,var3,var4) ISNILS(TRIPLES(var1,var2,var3),var4) @@ -550,14 +569,14 @@ Author: #define GETVARMAINS(var1,var2) GETVARS(var1,MAINLOGIC,var2) #ifndef PATHTO_SYS - #define PATHTO_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3.sqf + #define PATHTO_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3.sqf #endif #ifndef PATHTOF_SYS - #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 + #define PATHTOF_SYS(var1,var2,var3) \MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 #endif #ifndef PATHTOF2_SYS - #define PATHTOF2_SYS(var1,var2,var3) MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 + #define PATHTOF2_SYS(var1,var2,var3) MAINPREFIX\##var1\SUBPREFIX\##var2\##var3 #endif #define PATHTO_R(var1) PATHTOF2_SYS(PREFIX,COMPONENT_C,var1) @@ -606,7 +625,7 @@ Author: #define CACHE_DIS(var1) (!isNil "CBA_RECOMPILE" || CACHE_DIS_SYS(configFile,var1) || CACHE_DIS_SYS(missionConfigFile,var1)) #ifndef DEBUG_SETTINGS - #define DEBUG_SETTINGS [false, true, false] + #define DEBUG_SETTINGS [false, true, false] #endif #define MSG_INIT QUOTE(Initializing: ADDON version: VERSION) @@ -625,34 +644,34 @@ Author: #define VERSIONING_SYS(var1) class CfgSettings \ { \ - class CBA \ - { \ - class Versioning \ - { \ - class var1 \ - { \ - }; \ - }; \ - }; \ + class CBA \ + { \ + class Versioning \ + { \ + class var1 \ + { \ + }; \ + }; \ + }; \ }; #define VERSIONING VERSIONING_SYS(PREFIX) /* ------------------------------------------- Macro: GVAR() - Get full variable identifier for a global variable owned by this component. + Get full variable identifier for a global variable owned by this component. Parameters: - VARIABLE - Partial name of global variable owned by this component [Any]. + VARIABLE - Partial name of global variable owned by this component [Any]. Example: - (begin example) - GVAR(frog) = 12; - // In SPON_FrogDancing component, equivalent to SPON_FrogDancing_frog = 12 - (end) + (begin example) + GVAR(frog) = 12; + // In SPON_FrogDancing component, equivalent to SPON_FrogDancing_frog = 12 + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define GVAR(var1) DOUBLES(ADDON,var1) #define EGVAR(var1,var2) DOUBLES(DOUBLES(PREFIX,var1),var2) @@ -660,19 +679,19 @@ Author: /* ------------------------------------------- Macro: GVARMAIN() - Get full variable identifier for a global variable owned by this addon. + Get full variable identifier for a global variable owned by this addon. Parameters: - VARIABLE - Partial name of global variable owned by this addon [Any]. + VARIABLE - Partial name of global variable owned by this addon [Any]. Example: - (begin example) - GVARMAIN(frog) = 12; - // In SPON_FrogDancing component, equivalent to SPON_frog = 12 - (end) + (begin example) + GVARMAIN(frog) = 12; + // In SPON_FrogDancing component, equivalent to SPON_frog = 12 + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define GVARMAIN(var1) GVARMAINS(PREFIX,var1) // TODO: What's this? @@ -693,7 +712,7 @@ Author: #define PREP(var1) TRIPLES(ADDON,fnc,var1) = compile preProcessFileLineNumbers 'PATHTO_SYS(PREFIX,COMPONENT_F,DOUBLES(fnc,var1))' #define PREPMAIN(var1) TRIPLES(PREFIX,fnc,var1) = compile preProcessFileLineNumbers 'PATHTO_SYS(PREFIX,COMPONENT_F,DOUBLES(fnc,var1))' #else - #define PREP(var1) ['PATHTO_SYS(PREFIX,COMPONENT_F,DOUBLES(fnc,var1))', 'TRIPLES(ADDON,fnc,var1)'] call SLX_XEH_COMPILE_NEW + #define PREP(var1) ['PATHTO_SYS(PREFIX,COMPONENT_F,DOUBLES(fnc,var1))', 'TRIPLES(ADDON,fnc,var1)'] call SLX_XEH_COMPILE_NEW #define PREPMAIN(var1) ['PATHTO_SYS(PREFIX,COMPONENT_F,DOUBLES(fnc,var1))', 'TRIPLES(PREFIX,fnc,var1)'] call SLX_XEH_COMPILE_NEW #endif @@ -703,27 +722,27 @@ Author: #define EFUNC(var1,var2) FUNC_INNER(var1,var2) #ifndef PRELOAD_ADDONS - #define PRELOAD_ADDONS class CfgAddons \ + #define PRELOAD_ADDONS class CfgAddons \ { \ - class PreloadAddons \ - { \ - class ADDON \ - { \ - list[]={ QUOTE(ADDON) }; \ - }; \ - }; \ + class PreloadAddons \ + { \ + class ADDON \ + { \ + list[]={ QUOTE(ADDON) }; \ + }; \ + }; \ } #endif /* ------------------------------------------- Macros: ARG_#() - Select from list of array arguments + Select from list of array arguments Parameters: - VARIABLE(1-8) - elements for the list + VARIABLE(1-8) - elements for the list Author: - Rommel + Rommel ------------------------------------------- */ #define ARG_1(A,B) ((A) select (B)) #define ARG_2(A,B,C) (ARG_1(ARG_1(A,B),C)) @@ -736,14 +755,14 @@ Author: /* ------------------------------------------- Macros: ARR_#() - Create list from arguments. Useful for working around , in macro parameters. - 1-8 arguments possible. + Create list from arguments. Useful for working around , in macro parameters. + 1-8 arguments possible. Parameters: - VARIABLE(1-8) - elements for the list + VARIABLE(1-8) - elements for the list Author: - Nou + Nou ------------------------------------------- */ #define ARR_1(ARG1) ARG1 #define ARR_2(ARG1,ARG2) ARG1, ARG2 @@ -756,15 +775,15 @@ Author: /* ------------------------------------------- Macros: FORMAT_#(STR, ARG1) - Format - Useful for working around , in macro parameters. - 1-8 arguments possible. + Format - Useful for working around , in macro parameters. + 1-8 arguments possible. Parameters: - STRING - string used by format - VARIABLE(1-8) - elements for usage in format + STRING - string used by format + VARIABLE(1-8) - elements for usage in format Author: - Nou & Sickboy + Nou & Sickboy ------------------------------------------- */ #define FORMAT_1(STR,ARG1) format[STR, ARG1] #define FORMAT_2(STR,ARG1,ARG2) format[STR, ARG1, ARG2] @@ -781,32 +800,32 @@ Author: /* ------------------------------------------- Macros: IS_x() - Checking the data types of variables. + Checking the data types of variables. - IS_ARRAY() - Array - IS_BOOL() - Boolean - IS_BOOLEAN() - UI display handle(synonym for ) - IS_CODE() - Code block (i.e a compiled function) - IS_CONFIG() - Configuration - IS_CONTROL() - UI control handle. - IS_DISPLAY() - UI display handle. - IS_FUNCTION() - A compiled function (synonym for ) - IS_GROUP() - Group. - IS_INTEGER() - Is a number a whole number? - IS_LOCATION() - World location. - IS_NUMBER() - A floating point number (synonym for ) - IS_OBJECT() - World object. - IS_SCALAR() - Floating point number. - IS_SCRIPT() - A script handle (as returned by execVM and spawn commands). - IS_SIDE() - Game side. - IS_STRING() - World object. - IS_TEXT() - Structured text. + IS_ARRAY() - Array + IS_BOOL() - Boolean + IS_BOOLEAN() - UI display handle(synonym for ) + IS_CODE() - Code block (i.e a compiled function) + IS_CONFIG() - Configuration + IS_CONTROL() - UI control handle. + IS_DISPLAY() - UI display handle. + IS_FUNCTION() - A compiled function (synonym for ) + IS_GROUP() - Group. + IS_INTEGER() - Is a number a whole number? + IS_LOCATION() - World location. + IS_NUMBER() - A floating point number (synonym for ) + IS_OBJECT() - World object. + IS_SCALAR() - Floating point number. + IS_SCRIPT() - A script handle (as returned by execVM and spawn commands). + IS_SIDE() - Game side. + IS_STRING() - World object. + IS_TEXT() - Structured text. Parameters: - VARIABLE - Variable to check if it is of a particular type [Any, not nil] + VARIABLE - Variable to check if it is of a particular type [Any, not nil] Author: - Spooner + Spooner ------------------------------------------- */ #define IS_META_SYS(VAR,TYPE) (if (isNil {VAR}) then { false } else { (typeName (VAR)) == TYPE }) #define IS_ARRAY(VAR) IS_META_SYS(VAR,"ARRAY") @@ -829,107 +848,120 @@ Author: #define IS_INTEGER(VAR) if ( IS_SCALAR(VAR) ) then { (floor(VAR) == (VAR)) } else { false } #define IS_NUMBER(VAR) IS_SCALAR(VAR) +#define FLOAT_TO_STRING(num) (str parseNumber (str (_this%_this) + str floor abs _this) + "." + (str (abs _this-floor abs _this) select [2]) + "0") + /* ------------------------------------------- Macro: SCRIPT() - Sets name of script (relies on PREFIX and COMPONENT values being #defined). + Sets name of script (relies on PREFIX and COMPONENT values being #defined). Parameters: - NAME - Name of script [Indentifier] + NAME - Name of script [Indentifier] Example: - (begin example) - SCRIPT(eradicateMuppets); - (end) + (begin example) + SCRIPT(eradicateMuppets); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define SCRIPT(NAME) \ - scriptName 'PREFIX\COMPONENT\NAME' + scriptName 'PREFIX\COMPONENT\NAME' /* ------------------------------------------- Macros: EXPLODE_n() - Splitting an ARRAY into a number of variables (A, B, C, etc). + DEPRECATED - Use param/params commands added in Arma 3 1.48 - Note that this NOT does make the created variables private. - _PVT variants do. + Splitting an ARRAY into a number of variables (A, B, C, etc). - EXPLODE_1(ARRAY,A,B) - Split a 1-element array into separate variable. - EXPLODE_2(ARRAY,A,B) - Split a 2-element array into separate variables. - EXPLODE_3(ARRAY,A,B,C) - Split a 3-element array into separate variables. - EXPLODE_4(ARRAY,A,B,C,D) - Split a 4-element array into separate variables. - EXPLODE_5(ARRAY,A,B,C,D,E) - Split a 5-element array into separate variables. - EXPLODE_6(ARRAY,A,B,C,D,E,F) - Split a 6-element array into separate variables. - EXPLODE_7(ARRAY,A,B,C,D,E,F,G) - Split a 7-element array into separate variables. - EXPLODE_8(ARRAY,A,B,C,D,E,F,G,H) - Split a 8-element array into separate variables. - EXPLODE_9(ARRAY,A,B,C,D,E,F,G,H,I) - Split a 9-element array into separate variables. + Note that this NOT does make the created variables private. + _PVT variants do. + + EXPLODE_1(ARRAY,A,B) - Split a 1-element array into separate variable. + EXPLODE_2(ARRAY,A,B) - Split a 2-element array into separate variables. + EXPLODE_3(ARRAY,A,B,C) - Split a 3-element array into separate variables. + EXPLODE_4(ARRAY,A,B,C,D) - Split a 4-element array into separate variables. + EXPLODE_5(ARRAY,A,B,C,D,E) - Split a 5-element array into separate variables. + EXPLODE_6(ARRAY,A,B,C,D,E,F) - Split a 6-element array into separate variables. + EXPLODE_7(ARRAY,A,B,C,D,E,F,G) - Split a 7-element array into separate variables. + EXPLODE_8(ARRAY,A,B,C,D,E,F,G,H) - Split a 8-element array into separate variables. + EXPLODE_9(ARRAY,A,B,C,D,E,F,G,H,I) - Split a 9-element array into separate variables. Parameters: - ARRAY - Array to read from [Array] - A..H - Names of variables to set from array [Identifier] + ARRAY - Array to read from [Array] + A..H - Names of variables to set from array [Identifier] Example: - (begin example) - _array = ["fred", 156.8, 120.9]; - EXPLODE_3(_array,_name_height,_weight); - (end) + (begin example) + _array = ["fred", 156.8, 120.9]; + EXPLODE_3(_array,_name,_height,_weight); + (end) Author: - Spooner + Spooner ------------------------------------------- */ -#define EXPLODE_1_SYS(ARRAY,A) A = if (IS_ARRAY((ARRAY))) then { (ARRAY) select 0 } else { ARRAY } +#define EXPLODE_1_SYS(ARRAY,A) A = ARRAY param [0] #define EXPLODE_1(ARRAY,A) EXPLODE_1_SYS(ARRAY,A); TRACE_1("EXPLODE_1, " + QUOTE(ARRAY),A) -#define EXPLODE_1_PVT(ARRAY,A) \ - private #A; \ - EXPLODE_1(ARRAY,A) +#define EXPLODE_1_PVT(ARRAY,A) ARRAY params [#A]; TRACE_1("EXPLODE_1, " + QUOTE(ARRAY),A) -#define EXPLODE_2_SYS(ARRAY,A,B) EXPLODE_1_SYS(ARRAY,A); B = (ARRAY) select 1 +#define EXPLODE_2_SYS(ARRAY,A,B) EXPLODE_1_SYS(ARRAY,A); B = ARRAY param [1] #define EXPLODE_2(ARRAY,A,B) EXPLODE_2_SYS(ARRAY,A,B); TRACE_2("EXPLODE_2, " + QUOTE(ARRAY),A,B) -#define EXPLODE_2_PVT(ARRAY,A,B) \ - private [#A,#B]; \ - EXPLODE_2(ARRAY,A,B) +#define EXPLODE_2_PVT(ARRAY,A,B) ARRAY params [#A,#B]; TRACE_2("EXPLODE_2, " + QUOTE(ARRAY),A,B) -#define EXPLODE_3_SYS(ARRAY,A,B,C) EXPLODE_2_SYS(ARRAY,A,B); C = (ARRAY) select 2 +#define EXPLODE_3_SYS(ARRAY,A,B,C) EXPLODE_2_SYS(ARRAY,A,B); C = ARRAY param [2] #define EXPLODE_3(ARRAY,A,B,C) EXPLODE_3_SYS(ARRAY,A,B,C); TRACE_3("EXPLODE_3, " + QUOTE(ARRAY),A,B,C) -#define EXPLODE_3_PVT(ARRAY,A,B,C) \ - private [#A,#B,#C]; \ - EXPLODE_3(ARRAY,A,B,C) - -#define EXPLODE_4_SYS(ARRAY,A,B,C,D) EXPLODE_3_SYS(ARRAY,A,B,C); D = (ARRAY) select 3 +#define EXPLODE_3_PVT(ARRAY,A,B,C) ARRAY params [#A,#B,#C]; TRACE_3("EXPLODE_3, " + QUOTE(ARRAY),A,B,C) + +#define EXPLODE_4_SYS(ARRAY,A,B,C,D) EXPLODE_3_SYS(ARRAY,A,B,C); D = ARRAY param [3] #define EXPLODE_4(ARRAY,A,B,C,D) EXPLODE_4_SYS(ARRAY,A,B,C,D); TRACE_4("EXPLODE_4, " + QUOTE(ARRAY),A,B,C,D) -#define EXPLODE_4_PVT(ARRAY,A,B,C,D) \ - private [#A,#B,#C,#D]; \ - EXPLODE_4(ARRAY,A,B,C,D) +#define EXPLODE_4_PVT(ARRAY,A,B,C,D) ARRAY params [#A,#B,#C,#D]; TRACE_4("EXPLODE_4, " + QUOTE(ARRAY),A,B,C,D) -#define EXPLODE_5_SYS(ARRAY,A,B,C,D,E) EXPLODE_4_SYS(ARRAY,A,B,C,D); E = (ARRAY) select 4 +#define EXPLODE_5_SYS(ARRAY,A,B,C,D,E) EXPLODE_4_SYS(ARRAY,A,B,C,D); E = ARRAY param [4] #define EXPLODE_5(ARRAY,A,B,C,D,E) EXPLODE_5_SYS(ARRAY,A,B,C,D,E); TRACE_5("EXPLODE_5, " + QUOTE(ARRAY),A,B,C,D,E) -#define EXPLODE_5_PVT(ARRAY,A,B,C,D,E) \ - private [#A,#B,#C,#D,#E]; \ - EXPLODE_5(ARRAY,A,B,C,D,E) +#define EXPLODE_5_PVT(ARRAY,A,B,C,D,E) ARRAY params [#A,#B,#C,#D,#E]; TRACE_5("EXPLODE_5, " + QUOTE(ARRAY),A,B,C,D,E) -#define EXPLODE_6_SYS(ARRAY,A,B,C,D,E,F) EXPLODE_5_SYS(ARRAY,A,B,C,D,E); F = (ARRAY) select 5 +#define EXPLODE_6_SYS(ARRAY,A,B,C,D,E,F) EXPLODE_5_SYS(ARRAY,A,B,C,D,E); F = ARRAY param [5] #define EXPLODE_6(ARRAY,A,B,C,D,E,F) EXPLODE_6_SYS(ARRAY,A,B,C,D,E,F); TRACE_6("EXPLODE_6, " + QUOTE(ARRAY),A,B,C,D,E,F) -#define EXPLODE_6_PVT(ARRAY,A,B,C,D,E,F) \ - private [#A,#B,#C,#D,#E,#F]; \ - EXPLODE_6(ARRAY,A,B,C,D,E,F) +#define EXPLODE_6_PVT(ARRAY,A,B,C,D,E,F) ARRAY params [#A,#B,#C,#D,#E,#F]; TRACE_6("EXPLODE_6, " + QUOTE(ARRAY),A,B,C,D,E,F) -#define EXPLODE_7_SYS(ARRAY,A,B,C,D,E,F,G) EXPLODE_6_SYS(ARRAY,A,B,C,D,E,F); G = (ARRAY) select 6 +#define EXPLODE_7_SYS(ARRAY,A,B,C,D,E,F,G) EXPLODE_6_SYS(ARRAY,A,B,C,D,E,F); G = ARRAY param [6] #define EXPLODE_7(ARRAY,A,B,C,D,E,F,G) EXPLODE_7_SYS(ARRAY,A,B,C,D,E,F,G); TRACE_7("EXPLODE_7, " + QUOTE(ARRAY),A,B,C,D,E,F,G) -#define EXPLODE_7_PVT(ARRAY,A,B,C,D,E,F,G) \ - private [#A,#B,#C,#D,#E,#F,#G]; \ - EXPLODE_7(ARRAY,A,B,C,D,E,F,G) +#define EXPLODE_7_PVT(ARRAY,A,B,C,D,E,F,G) ARRAY params [#A,#B,#C,#D,#E,#F,#G]; TRACE_7("EXPLODE_7, " + QUOTE(ARRAY),A,B,C,D,E,F,G) -#define EXPLODE_8_SYS(ARRAY,A,B,C,D,E,F,G,H) EXPLODE_7_SYS(ARRAY,A,B,C,D,E,F,G); H = (ARRAY) select 7 +#define EXPLODE_8_SYS(ARRAY,A,B,C,D,E,F,G,H) EXPLODE_7_SYS(ARRAY,A,B,C,D,E,F,G); H = ARRAY param [7] #define EXPLODE_8(ARRAY,A,B,C,D,E,F,G,H) EXPLODE_8_SYS(ARRAY,A,B,C,D,E,F,G,H); TRACE_8("EXPLODE_8, " + QUOTE(ARRAY),A,B,C,D,E,F,G,H) -#define EXPLODE_8_PVT(ARRAY,A,B,C,D,E,F,G,H) \ - private [#A,#B,#C,#D,#E,#F,#G,#H]; \ - EXPLODE_8(ARRAY,A,B,C,D,E,F,G,H) +#define EXPLODE_8_PVT(ARRAY,A,B,C,D,E,F,G,H) ARRAY params [#A,#B,#C,#D,#E,#F,#G,#H]; TRACE_8("EXPLODE_8, " + QUOTE(ARRAY),A,B,C,D,E,F,G,H) -#define EXPLODE_9_SYS(ARRAY,A,B,C,D,E,F,G,H,I) EXPLODE_8_SYS(ARRAY,A,B,C,D,E,F,G,H); I = (ARRAY) select 8 +#define EXPLODE_9_SYS(ARRAY,A,B,C,D,E,F,G,H,I) EXPLODE_8_SYS(ARRAY,A,B,C,D,E,F,G,H); I = ARRAY param [8] #define EXPLODE_9(ARRAY,A,B,C,D,E,F,G,H,I) EXPLODE_9_SYS(ARRAY,A,B,C,D,E,F,G,H,I); TRACE_9("EXPLODE_9, " + QUOTE(ARRAY),A,B,C,D,E,F,G,H,I) -#define EXPLODE_9_PVT(ARRAY,A,B,C,D,E,F,G,H,I) \ - private [#A,#B,#C,#D,#E,#F,#G,#H,#I]; \ - EXPLODE_9(ARRAY,A,B,C,D,E,F,G,H,I) +#define EXPLODE_9_PVT(ARRAY,A,B,C,D,E,F,G,H,I) ARRAY params [#A,#B,#C,#D,#E,#F,#G,#H,#I]; TRACE_9("EXPLODE_9, " + QUOTE(ARRAY),A,B,C,D,E,F,G,H,I) + +/* ------------------------------------------- +Macro: xSTRING() + Get full string identifier from a stringtable owned by this component. + +Parameters: + VARIABLE - Partial name of global variable owned by this component [Any]. + +Example: + ADDON is CBA_Balls. + (begin example) + // Localized String (localize command must still be used with it) + LSTRING(Example); // STR_CBA_Balls_Example; + // Config String (note the $) + CSTRING(Example); // $STR_CBA_Balls_Example; + (end) + +Author: + Jonpas +------------------------------------------- */ +#ifndef STRING_MACROS_GUARD +#define STRING_MACROS_GUARD + #define LSTRING(var1) QUOTE(TRIPLES(STR,ADDON,var1)) + #define ELSTRING(var1,var2) QUOTE(TRIPLES(STR,DOUBLES(PREFIX,var1),var2)) + #define CSTRING(var1) QUOTE(TRIPLES($STR,ADDON,var1)) + #define ECSTRING(var1,var2) QUOTE(TRIPLES($STR,DOUBLES(PREFIX,var1),var2)) +#endif /* ------------------------------------------- @@ -938,37 +970,39 @@ Group: Managing Function Parameters /* ------------------------------------------- Macros: PARAMS_n() - Setting variables based on parameters passed to a function. + DEPRECATED - Use param/params commands added in Arma 3 1.48 - Each parameter is defines as private and set to the appropriate value from _this. + Setting variables based on parameters passed to a function. - PARAMS_1(A) - Get 1 parameter from the _this array (or _this if it's not an array). - PARAMS_2(A,B) - Get 2 parameters from the _this array. - PARAMS_3(A,B,C) - Get 3 parameters from the _this array. - PARAMS_4(A,B,C,D) - Get 4 parameters from the _this array. - PARAMS_5(A,B,C,D,E) - Get 5 parameters from the _this array. - PARAMS_6(A,B,C,D,E,F) - Get 6 parameters from the _this array. - PARAMS_7(A,B,C,D,E,F,G) - Get 7 parameters from the _this array. - PARAMS_8(A,B,C,D,E,F,G,H) - Get 8 parameters from the _this array. + Each parameter is defines as private and set to the appropriate value from _this. + + PARAMS_1(A) - Get 1 parameter from the _this array (or _this if it's not an array). + PARAMS_2(A,B) - Get 2 parameters from the _this array. + PARAMS_3(A,B,C) - Get 3 parameters from the _this array. + PARAMS_4(A,B,C,D) - Get 4 parameters from the _this array. + PARAMS_5(A,B,C,D,E) - Get 5 parameters from the _this array. + PARAMS_6(A,B,C,D,E,F) - Get 6 parameters from the _this array. + PARAMS_7(A,B,C,D,E,F,G) - Get 7 parameters from the _this array. + PARAMS_8(A,B,C,D,E,F,G,H) - Get 8 parameters from the _this array. Parameters: - A..H - Name of variable to read from _this [Identifier] + A..H - Name of variable to read from _this [Identifier] Example: - A function called like this: - (begin example) - [_name,_address,_telephone] call recordPersonalDetails; - (end) - expects 3 parameters and those variables could be initialised at the start of the function definition with: - (begin example) - recordPersonalDetails = { - PARAMS_3(_name,_address,_telephone); - // Rest of function follows... - }; - (end) + A function called like this: + (begin example) + [_name,_address,_telephone] call recordPersonalDetails; + (end) + expects 3 parameters and those variables could be initialised at the start of the function definition with: + (begin example) + recordPersonalDetails = { + PARAMS_3(_name,_address,_telephone); + // Rest of function follows... + }; + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define PARAMS_1(A) EXPLODE_1_PVT(_this,A) #define PARAMS_2(A,B) EXPLODE_2_PVT(_this,A,B) @@ -982,59 +1016,62 @@ Author: /* ------------------------------------------- Macro: DEFAULT_PARAM() - Getting a default function parameter. This may be used together with to have a mix of required and - optional parameters. + DEPRECATED - Use param/params commands added in Arma 3 1.48 + + Getting a default function parameter. This may be used together with to have a mix of required and + optional parameters. Parameters: - INDEX - Index of parameter in _this [Integer, 0+] - NAME - Name of the variable to set [Identifier] - DEF_VALUE - Default value to use in case the array is too short or the value at INDEX is nil [Any] + INDEX - Index of parameter in _this [Integer, 0+] + NAME - Name of the variable to set [Identifier] + DEF_VALUE - Default value to use in case the array is too short or the value at INDEX is nil [Any] Example: - A function called with optional parameters: - (begin example) - [_name] call myFunction; - [_name, _numberOfLegs] call myFunction; - [_name, _numberOfLegs, _hasAHead] call myFunction; - (end) - 1 required parameter and 2 optional parameters. Those variables could be initialised at the start of the function - definition with: - (begin example) - myFunction = { - PARAMS_1(_name); - DEFAULT_PARAM(1,_numberOfLegs,2); - DEFAULT_PARAM(2,_hasAHead,true); - // Rest of function follows... - }; - (end) + A function called with optional parameters: + (begin example) + [_name] call myFunction; + [_name, _numberOfLegs] call myFunction; + [_name, _numberOfLegs, _hasAHead] call myFunction; + (end) + 1 required parameter and 2 optional parameters. Those variables could be initialised at the start of the function + definition with: + (begin example) + myFunction = { + PARAMS_1(_name); + DEFAULT_PARAM(1,_numberOfLegs,2); + DEFAULT_PARAM(2,_hasAHead,true); + // Rest of function follows... + }; + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define DEFAULT_PARAM(INDEX,NAME,DEF_VALUE) \ - private #NAME; \ - NAME = [RETNIL(_this), INDEX, DEF_VALUE] call CBA_fnc_defaultParam; \ - TRACE_3("DEFAULT_PARAM",INDEX,NAME,DEF_VALUE) + private [#NAME,"_this"]; \ + ISNILS(_this,[]); \ + NAME = _this param [INDEX, DEF_VALUE]; \ + TRACE_3("DEFAULT_PARAM",INDEX,NAME,DEF_VALUE) /* ------------------------------------------- Macro: KEY_PARAM() - Get value from key in _this list, return default when key is not included in list. + Get value from key in _this list, return default when key is not included in list. Parameters: - KEY - Key name [String] - NAME - Name of the variable to set [Identifier] - DEF_VALUE - Default value to use in case key not found [ANY] + KEY - Key name [String] + NAME - Name of the variable to set [Identifier] + DEF_VALUE - Default value to use in case key not found [ANY] Example: Author: - Muzzleflash + Muzzleflash ------------------------------------------- */ #define KEY_PARAM(KEY,NAME,DEF_VALUE) \ - private #NAME; \ - NAME = [toLower KEY, toUpper KEY, DEF_VALUE, RETNIL(_this)] call CBA_fnc_getArg; \ - TRACE_3("KEY_PARAM",KEY,NAME,DEF_VALUE) + private #NAME; \ + NAME = [toLower KEY, toUpper KEY, DEF_VALUE, RETNIL(_this)] call CBA_fnc_getArg; \ + TRACE_3("KEY_PARAM",KEY,NAME,DEF_VALUE) /* ------------------------------------------- Group: Assertions @@ -1044,94 +1081,210 @@ Group: Assertions /* ------------------------------------------- Macro: ASSERT_TRUE() - Asserts that a CONDITION is true. When an assertion fails, an error is raised with the given MESSAGE. + Asserts that a CONDITION is true. When an assertion fails, an error is raised with the given MESSAGE. Parameters: - CONDITION - Condition to assert as true [Boolean] - MESSSAGE - Message to display if (A OPERATOR B) is false [String] + CONDITION - Condition to assert as true [Boolean] + MESSSAGE - Message to display if (A OPERATOR B) is false [String] Example: - (begin example) - ASSERT_TRUE(_frogIsDead,"The frog is alive"); - (end) + (begin example) + ASSERT_TRUE(_frogIsDead,"The frog is alive"); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ASSERT_TRUE(CONDITION,MESSAGE) \ - if (not (CONDITION)) then \ - { \ - ASSERTION_ERROR('Assertion (CONDITION) failed!\n\n' + (MESSAGE)); \ - } + if (not (CONDITION)) then \ + { \ + ASSERTION_ERROR('Assertion (CONDITION) failed!\n\n' + (MESSAGE)); \ + } /* ------------------------------------------- Macro: ASSERT_FALSE() - Asserts that a CONDITION is false. When an assertion fails, an error is raised with the given MESSAGE. + Asserts that a CONDITION is false. When an assertion fails, an error is raised with the given MESSAGE. Parameters: - CONDITION - Condition to assert as false [Boolean] - MESSSAGE - Message to display if (A OPERATOR B) is true [String] + CONDITION - Condition to assert as false [Boolean] + MESSSAGE - Message to display if (A OPERATOR B) is true [String] Example: - (begin example) - ASSERT_FALSE(_frogIsDead,"The frog died"); - (end) + (begin example) + ASSERT_FALSE(_frogIsDead,"The frog died"); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ASSERT_FALSE(CONDITION,MESSAGE) \ - if (CONDITION) then \ - { \ - ASSERTION_ERROR('Assertion (not (CONDITION)) failed!\n\n' + (MESSAGE)) \ - } + if (CONDITION) then \ + { \ + ASSERTION_ERROR('Assertion (not (CONDITION)) failed!\n\n' + (MESSAGE)) \ + } /* ------------------------------------------- Macro: ASSERT_OP() - Asserts that (A OPERATOR B) is true. When an assertion fails, an error is raised with the given MESSAGE. + Asserts that (A OPERATOR B) is true. When an assertion fails, an error is raised with the given MESSAGE. Parameters: - A - First value [Any] - OPERATOR - Binary operator to use [Operator] - B - Second value [Any] - MESSSAGE - Message to display if (A OPERATOR B) is false. [String] + A - First value [Any] + OPERATOR - Binary operator to use [Operator] + B - Second value [Any] + MESSSAGE - Message to display if (A OPERATOR B) is false. [String] Example: - (begin example) - ASSERT_OP(_fish,>,5,"Too few fish!"); - (end) + (begin example) + ASSERT_OP(_fish,>,5,"Too few fish!"); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ASSERT_OP(A,OPERATOR,B,MESSAGE) \ - if (not ((A) OPERATOR (B))) then \ - { \ - ASSERTION_ERROR('Assertion (A OPERATOR B) failed!\n' + 'A: ' + (str (A)) + '\n' + 'B: ' + (str (B)) + "\n\n" + (MESSAGE)); \ - } + if (not ((A) OPERATOR (B))) then \ + { \ + ASSERTION_ERROR('Assertion (A OPERATOR B) failed!\n' + 'A: ' + (str (A)) + '\n' + 'B: ' + (str (B)) + "\n\n" + (MESSAGE)); \ + } /* ------------------------------------------- Macro: ASSERT_DEFINED() - Asserts that a VARIABLE is defined. When an assertion fails, an error is raised with the given MESSAGE.. + Asserts that a VARIABLE is defined. When an assertion fails, an error is raised with the given MESSAGE.. Parameters: - VARIABLE - Variable to test if defined [String or Function]. - MESSAGE - Message to display if variable is undefined [String]. + VARIABLE - Variable to test if defined [String or Function]. + MESSAGE - Message to display if variable is undefined [String]. Examples: - (begin example) - ASSERT_DEFINED("_anUndefinedVar","Too few fish!"); - ASSERT_DEFINED({ obj getVariable "anUndefinedVar" },"Too many fish!"); - (end) + (begin example) + ASSERT_DEFINED("_anUndefinedVar","Too few fish!"); + ASSERT_DEFINED({ obj getVariable "anUndefinedVar" },"Too many fish!"); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define ASSERT_DEFINED(VARIABLE,MESSAGE) \ - if (isNil VARIABLE) then \ - { \ - ASSERTION_ERROR('Assertion (VARIABLE is defined) failed!\n\n' + (MESSAGE)); \ - } + if (isNil VARIABLE) then \ + { \ + ASSERTION_ERROR('Assertion (VARIABLE is defined) failed!\n\n' + (MESSAGE)); \ + } + +/* ------------------------------------------- +Group: Unit tests +------------------------------------------- */ +#define TEST_SUCCESS(MESSAGE) MESSAGE_WITH_TITLE("Test OK",MESSAGE) +#define TEST_FAIL(MESSAGE) ERROR_WITH_TITLE("Test FAIL",MESSAGE) + +/* ------------------------------------------- +Macro: TEST_TRUE() + Tests that a CONDITION is true. + If the condition is not true, an error is raised with the given MESSAGE. + +Parameters: + CONDITION - Condition to assert as true [Boolean] + MESSSAGE - Message to display if (A OPERATOR B) is false [String] + +Example: + (begin example) + TEST_TRUE(_frogIsDead,"The frog is alive"); + (end) + +Author: + Killswitch +------------------------------------------- */ +#define TEST_TRUE(CONDITION, MESSAGE) \ + if (CONDITION) then \ + { \ + TEST_SUCCESS('(CONDITION)'); \ + } \ + else \ + { \ + TEST_FAIL('(CONDITION) ' + (MESSAGE)); \ + } + +/* ------------------------------------------- +Macro: TEST_FALSE() + Tests that a CONDITION is false. + If the condition is not false, an error is raised with the given MESSAGE. + +Parameters: + CONDITION - Condition to test as false [Boolean] + MESSSAGE - Message to display if (A OPERATOR B) is true [String] + +Example: + (begin example) + TEST_FALSE(_frogIsDead,"The frog died"); + (end) + +Author: + Killswitch +------------------------------------------- */ +#define TEST_FALSE(CONDITION, MESSAGE) \ + if (not (CONDITION)) then \ + { \ + TEST_SUCCESS('(not (CONDITION))'); \ + } \ + else \ + { \ + TEST_FAIL('(not (CONDITION)) ' + (MESSAGE)); \ + } + +/* ------------------------------------------- +Macro: TEST_OP() + Tests that (A OPERATOR B) is true. + If the test fails, an error is raised with the given MESSAGE. + +Parameters: + A - First value [Any] + OPERATOR - Binary operator to use [Operator] + B - Second value [Any] + MESSSAGE - Message to display if (A OPERATOR B) is false. [String] + +Example: + (begin example) + TEST_OP(_fish,>,5,"Too few fish!"); + (end) + +Author: + Killswitch +------------------------------------------- */ +#define TEST_OP(A,OPERATOR,B,MESSAGE) \ + if ((A) OPERATOR (B)) then \ + { \ + TEST_SUCCESS('(A OPERATOR B)') \ + } \ + else \ + { \ + TEST_FAIL('(A OPERATOR B)') \ + }; + +/* ------------------------------------------- +Macro: TEST_DEFINED() + Tests that a VARIABLE is defined. + +Parameters: + VARIABLE - Variable to test if defined [String or Function]. + MESSAGE - Message to display if variable is undefined [String]. + +Examples: + (begin example) + TEST_DEFINED("_anUndefinedVar","Too few fish!"); + TEST_DEFINED({ obj getVariable "anUndefinedVar" },"Too many fish!"); + (end) + +Author: + Killswitch +------------------------------------------- */ +#define TEST_DEFINED(VARIABLE,MESSAGE) \ + if (not isNil VARIABLE) then \ + { \ + TEST_SUCCESS('(' + VARIABLE + ' is defined)'); \ + } \ + else \ + { \ + TEST_FAIL('(' + VARIABLE + ' is not defined)' + (MESSAGE)); \ + } /* ------------------------------------------- Group: Managing Deprecation @@ -1139,117 +1292,117 @@ Group: Managing Deprecation /* ------------------------------------------- Macro: DEPRECATE_SYS() - Allow deprecation of a function that has been renamed. + Allow deprecation of a function that has been renamed. - Replaces an old OLD_FUNCTION (which will have PREFIX_ prepended) with a NEW_FUNCTION - (PREFIX_ prepended) with the intention that the old function will be disabled in the future. + Replaces an old OLD_FUNCTION (which will have PREFIX_ prepended) with a NEW_FUNCTION + (PREFIX_ prepended) with the intention that the old function will be disabled in the future. - Shows a warning in RPT each time the deprecated function is used, but runs the new function. + Shows a warning in RPT each time the deprecated function is used, but runs the new function. Parameters: - OLD_FUNCTION - Full name of old function [Identifier for function that does not exist any more] - NEW_FUNCTION - Full name of new function [Function] + OLD_FUNCTION - Full name of old function [Identifier for function that does not exist any more] + NEW_FUNCTION - Full name of new function [Function] Example: - (begin example) - // After renaming CBA_fnc_frog as CBA_fnc_fish - DEPRECATE_SYS(CBA_fnc_frog,CBA_fnc_fish); - (end) + (begin example) + // After renaming CBA_fnc_frog as CBA_fnc_fish + DEPRECATE_SYS(CBA_fnc_frog,CBA_fnc_fish); + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define DEPRECATE_SYS(OLD_FUNCTION,NEW_FUNCTION) \ - OLD_FUNCTION = { \ - WARNING('Deprecated function used: OLD_FUNCTION (new: NEW_FUNCTION) in ADDON'); \ - if (isNil "_this") then { call NEW_FUNCTION } else { _this call NEW_FUNCTION }; \ - } + OLD_FUNCTION = { \ + WARNING('Deprecated function used: OLD_FUNCTION (new: NEW_FUNCTION) in ADDON'); \ + if (isNil "_this") then { call NEW_FUNCTION } else { _this call NEW_FUNCTION }; \ + } /* ------------------------------------------- Macro: DEPRECATE() - Allow deprecation of a function, in the current component, that has been renamed. + Allow deprecation of a function, in the current component, that has been renamed. - Replaces an OLD_FUNCTION (which will have PREFIX_ prepended) with a NEW_FUNCTION - (PREFIX_ prepended) with the intention that the old function will be disabled in the future. + Replaces an OLD_FUNCTION (which will have PREFIX_ prepended) with a NEW_FUNCTION + (PREFIX_ prepended) with the intention that the old function will be disabled in the future. - Shows a warning in RPT each time the deprecated function is used, but runs the new function. + Shows a warning in RPT each time the deprecated function is used, but runs the new function. Parameters: - OLD_FUNCTION - Name of old function, assuming PREFIX [Identifier for function that does not exist any more] - NEW_FUNCTION - Name of new function, assuming PREFIX [Function] + OLD_FUNCTION - Name of old function, assuming PREFIX [Identifier for function that does not exist any more] + NEW_FUNCTION - Name of new function, assuming PREFIX [Function] Example: - (begin example) - // After renaming CBA_fnc_frog as CBA_fnc_fish - DEPRECATE(fnc_frog,fnc_fish); - (end) + (begin example) + // After renaming CBA_fnc_frog as CBA_fnc_fish + DEPRECATE(fnc_frog,fnc_fish); + (end) Author: - Sickboy + Sickboy ------------------------------------------- */ #define DEPRECATE(OLD_FUNCTION,NEW_FUNCTION) \ - DEPRECATE_SYS(DOUBLES(PREFIX,OLD_FUNCTION),DOUBLES(PREFIX,NEW_FUNCTION)) + DEPRECATE_SYS(DOUBLES(PREFIX,OLD_FUNCTION),DOUBLES(PREFIX,NEW_FUNCTION)) /* ------------------------------------------- Macro: OBSOLETE_SYS() - Replace a function that has become obsolete. + Replace a function that has become obsolete. - Replace an obsolete OLD_FUNCTION with a simple COMMAND_FUNCTION, with the intention that anyone - using the function should replace it with the simple command, since the function will be disabled in the future. + Replace an obsolete OLD_FUNCTION with a simple COMMAND_FUNCTION, with the intention that anyone + using the function should replace it with the simple command, since the function will be disabled in the future. - Shows a warning in RPT each time the deprecated function is used, and runs the command function. + Shows a warning in RPT each time the deprecated function is used, and runs the command function. Parameters: - OLD_FUNCTION - Full name of old function [Identifier for function that does not exist any more] - COMMAND_CODE - Code to replace the old function [Function] + OLD_FUNCTION - Full name of old function [Identifier for function that does not exist any more] + COMMAND_CODE - Code to replace the old function [Function] Example: - (begin example) - // In Arma2, currentWeapon command made the CBA_fMyWeapon function obsolete: - OBSOLETE_SYS(CBA_fMyWeapon,{ currentWeapon player }); - (end) + (begin example) + // In Arma2, currentWeapon command made the CBA_fMyWeapon function obsolete: + OBSOLETE_SYS(CBA_fMyWeapon,{ currentWeapon player }); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define OBSOLETE_SYS(OLD_FUNCTION,COMMAND_CODE) \ - OLD_FUNCTION = { \ - WARNING('Obsolete function used: (use: OLD_FUNCTION) in ADDON'); \ - if (isNil "_this") then { call COMMAND_CODE } else { _this call COMMAND_CODE }; \ - } + OLD_FUNCTION = { \ + WARNING('Obsolete function used: (use: OLD_FUNCTION) in ADDON'); \ + if (isNil "_this") then { call COMMAND_CODE } else { _this call COMMAND_CODE }; \ + } /* ------------------------------------------- Macro: OBSOLETE() - Replace a function, in the current component, that has become obsolete. + Replace a function, in the current component, that has become obsolete. - Replace an obsolete OLD_FUNCTION (which will have PREFIX_ prepended) with a simple - COMMAND_CODE, with the intention that anyone using the function should replace it with the simple - command. + Replace an obsolete OLD_FUNCTION (which will have PREFIX_ prepended) with a simple + COMMAND_CODE, with the intention that anyone using the function should replace it with the simple + command. - Shows a warning in RPT each time the deprecated function is used. + Shows a warning in RPT each time the deprecated function is used. Parameters: - OLD_FUNCTION - Name of old function, assuming PREFIX [Identifier for function that does not exist any more] - COMMAND_CODE - Code to replace the old function [Function] + OLD_FUNCTION - Name of old function, assuming PREFIX [Identifier for function that does not exist any more] + COMMAND_CODE - Code to replace the old function [Function] Example: - (begin example) - // In Arma2, currentWeapon command made the CBA_fMyWeapon function obsolete: - OBSOLETE(fMyWeapon,{ currentWeapon player }); - (end) + (begin example) + // In Arma2, currentWeapon command made the CBA_fMyWeapon function obsolete: + OBSOLETE(fMyWeapon,{ currentWeapon player }); + (end) Author: - Spooner + Spooner ------------------------------------------- */ #define OBSOLETE(OLD_FUNCTION,COMMAND_CODE) \ - OBSOLETE_SYS(DOUBLES(PREFIX,OLD_FUNCTION),COMMAND_CODE) + OBSOLETE_SYS(DOUBLES(PREFIX,OLD_FUNCTION),COMMAND_CODE) #define BWC_CONFIG(NAME) class NAME { \ - units[] = {}; \ - weapons[] = {}; \ - requiredVersion = REQUIRED_VERSION; \ - requiredAddons[] = {}; \ - version = VERSION; \ + units[] = {}; \ + weapons[] = {}; \ + requiredVersion = REQUIRED_VERSION; \ + requiredAddons[] = {}; \ + version = VERSION; \ } // XEH Specific diff --git a/tools/cba/addons/xeh/init_pre.sqf b/tools/cba/addons/xeh/init_pre.sqf index 8e6a31f8c8..44b4657aca 100644 --- a/tools/cba/addons/xeh/init_pre.sqf +++ b/tools/cba/addons/xeh/init_pre.sqf @@ -23,10 +23,10 @@ uiNamespace setVariable ["CBA_isCached", CBA_isCached]; if (isNil "SLX_XEH_RECOMPILE") then { SLX_XEH_RECOMPILE = CACHE_DIS(xeh) }; if (!isMultiplayer || {isDedicated} || {CBA_isCached == -1}) then { - uiNamespace setVariable ["SLX_XEH_CACHE_KEYS", []]; - uiNamespace setVariable ["SLX_XEH_CACHE_KEYS2", []]; - uiNamespace setVariable ["SLX_XEH_CACHE_KEYS3", []]; - uiNamespace setVariable ["CBA_CACHE_KEYS", []]; + uiNamespace setVariable ["SLX_XEH_CACHE_KEYS", []]; + uiNamespace setVariable ["SLX_XEH_CACHE_KEYS2", []]; + uiNamespace setVariable ["SLX_XEH_CACHE_KEYS3", []]; + uiNamespace setVariable ["CBA_CACHE_KEYS", []]; }; SLX_XEH_CACHE_KEYS = uiNamespace getVariable "SLX_XEH_CACHE_KEYS"; @@ -46,24 +46,24 @@ SLX_XEH_DisableLogging = isClass(configFile/"CfgPatches"/"Disable_XEH_Logging"); /* CBA_fnc_defaultParam = { - PARAMS_3(_params,_index,_defaultValue); - - private "_value"; - - if (!isNil "_defaultValue") then { - _value = _defaultValue; - }; - - if (!isNil "_params" && {(typeName _params) == "ARRAY"} && {count _params > _index} && {!isNil { _params select _index }}) then { - _value = _params select _index; - }; - - // Return. - if (isNil "_value") then { - nil; - } else { - _value; - }; + params ["_params","_index","_defaultValue"]; + + private "_value"; + + if (!isNil "_defaultValue") then { + _value = _defaultValue; + }; + + if (!isNil "_params" && {(typeName _params) == "ARRAY"} && {count _params > _index} && {!isNil { _params select _index }}) then { + _value = _params select _index; + }; + + // Return. + if (isNil "_value") then { + nil; + } else { + _value; + }; }; */ @@ -74,10 +74,10 @@ if (time > 0) then { XEH_LOG("XEH WARNING: Time > 0; This probably means there a _cfgRespawn = (missionConfigFile/"respawn"); _respawn = false; if ( isNumber(_cfgRespawn) ) then { - _respawn = !(getNumber(_cfgRespawn) in [0, 1, 4, 5]); + _respawn = !(getNumber(_cfgRespawn) in [0, 1, 4, 5]); }; if ( isText(_cfgRespawn) ) then { - _respawn = !(getText(_cfgRespawn) in ["none", "bird", "group", "side"]); + _respawn = !(getText(_cfgRespawn) in ["none", "bird", "group", "side"]); }; SLX_XEH_objects = []; // Temporary array, to track InitPosts at mission initialization @@ -90,81 +90,81 @@ _level = 0; // pre v1.60 // TODO: Improve v1.60 detection // TODO: Temporary disabled due to #28652 //if ((isNumber (configFile >> "CfgDifficulties" >> "recruit" >> "recoilCoef")) && (isNumber (configFile >> "CfgVehicles" >> "Car" >> "turnCoef"))) then { - //_level = 1; // v1.60 + //_level = 1; // v1.60 //}; FUNC(determineProductVersion) = { - private "_pv"; - _pv = call {productVersion}; + private "_pv"; + _pv = call {productVersion}; - // A2 (and OA pre 1.61beta, and TOH pre 1.05?) does not support productVersion so we deal with it manually - if (isNil "_pv") then { - _pv = if (isClass(configFile >> "CfgPatches" >> "A3_Map_Stratis")) then { - // A3 Backup - ["Arma 3 Alpha","Arma3Alpha", -1, -1]; //,5,102571] + // A2 (and OA pre 1.61beta, and TOH pre 1.05?) does not support productVersion so we deal with it manually + if (isNil "_pv") then { + _pv = if (isClass(configFile >> "CfgPatches" >> "A3_Map_Stratis")) then { + // A3 Backup + ["Arma 3 Alpha","Arma3Alpha", -1, -1]; //,5,102571] - } else { - if (isClass(configFile >> "CfgPatches" >> "United_States_H")) then { - // TOH Backup - ["TakeOn H", "TakeOnH", -1, -1]; - } else { - if (isClass(configFile >> "CfgPatches" >> "Takistan")) then { - // OA Backup - ["ArmA 2OA", "ArmA2OA", -1, -1]; - } else { - // A2 Backup - ["ArmA 2", "ArmA2", -1, -1]; - }; - }; - }; - }; + } else { + if (isClass(configFile >> "CfgPatches" >> "United_States_H")) then { + // TOH Backup + ["TakeOn H", "TakeOnH", -1, -1]; + } else { + if (isClass(configFile >> "CfgPatches" >> "Takistan")) then { + // OA Backup + ["ArmA 2OA", "ArmA2OA", -1, -1]; + } else { + // A2 Backup + ["ArmA 2", "ArmA2", -1, -1]; + }; + }; + }; + }; - _pv; + _pv; }; FUNC(determineGame) = { - // 0 = A2 - // 1 = OA - // 2 = TOH - // 3 = A3 :P - private "_pv"; - _pv = call FUNC(determineProductVersion); + // 0 = A2 + // 1 = OA + // 2 = TOH + // 3 = A3 :P + private "_pv"; + _pv = call FUNC(determineProductVersion); - switch (_pv select 1) do { - case "ArmA2": {0}; - case "ArmA2OA": {1}; - case "TakeOnH": {2}; - case "Arma3Alpha": {3}; - case "Arma3": {3}; - default {0}; - }; + switch (_pv select 1) do { + case "ArmA2": {0}; + case "ArmA2OA": {1}; + case "TakeOnH": {2}; + case "Arma3Alpha": {3}; + case "Arma3": {3}; + default {0}; + }; }; // System array with machine / mission / session information SLX_XEH_MACHINE = [ - !isDedicated, // 0 - isClient (and thus has player) - false, // 1 - isJip - !isServer, // 2 - isDedicatedClient (and thus not a Client-Server) - isServer, // 3 - isServer - isDedicated, // 4 - isDedicatedServer (and thus not a Client-Server) - false, // 5 - Player Check Finished - !isMultiplayer, // 6 - SP? - false, // 7 - StartInit Passed - false, // 8 - Postinit Passed - isMultiplayer && {_respawn}, // 9 - Multiplayer && respawn? - if (isDedicated) then { 0 } else { if (isServer) then { 1 } else { 2 } }, // 10 - Machine type (only 3 possible configurations) - _id, // 11 - SESSION_ID - _level, // 12 - LEVEL - Used for version determination - false, // 13 - TIMEOUT - PostInit timedOut - call FUNC(determineGame), // 14 - Game - call FUNC(determineProductVersion) // 15 - Product+Version + !isDedicated, // 0 - isClient (and thus has player) + false, // 1 - isJip + !isServer, // 2 - isDedicatedClient (and thus not a Client-Server) + isServer, // 3 - isServer + isDedicated, // 4 - isDedicatedServer (and thus not a Client-Server) + false, // 5 - Player Check Finished + !isMultiplayer, // 6 - SP? + false, // 7 - StartInit Passed + false, // 8 - Postinit Passed + isMultiplayer && {_respawn}, // 9 - Multiplayer && respawn? + if (isDedicated) then { 0 } else { if (isServer) then { 1 } else { 2 } }, // 10 - Machine type (only 3 possible configurations) + _id, // 11 - SESSION_ID + _level, // 12 - LEVEL - Used for version determination + false, // 13 - TIMEOUT - PostInit timedOut + call FUNC(determineGame), // 14 - Game + call FUNC(determineProductVersion) // 15 - Product+Version ]; SLX_XEH_DUMMY = switch (SLX_XEH_MACHINE select 14) do { - case 2: {"Helipad_Invisible_H" }; - case 3: {"Land_HelipadEmpty_F" }; - default { "HeliHEmpty" }; + case 2: {"Helipad_Invisible_H" }; + case 3: {"Land_HelipadEmpty_F" }; + default { "HeliHEmpty" }; }; SLX_XEH_STR = ""; // Empty string @@ -259,24 +259,24 @@ call COMPILE_FILE(init_eh); // All XEH Event functions GVAR(init_obj) = SLX_XEH_DUMMY createVehicleLocal [0, 0, 0]; GVAR(init_obj) addEventHandler ["killed", { - #ifdef DEBUG_MODE_FULL - XEH_LOG("XEH: VehicleCrewInit: "+str(count vehicles)); - #endif + #ifdef DEBUG_MODE_FULL + XEH_LOG("XEH: VehicleCrewInit: "+str(count vehicles)); + #endif - { - _sim = getText(configFile/"CfgVehicles"/(typeOf _x)/"simulation"); - _crew = crew _x; - /* - * If it's a vehicle then start event handlers for the crew. - * (Vehicles have crew and are neither humanoids nor game logics) - */ - if (count _crew > 0 && {{ _sim == _x }count["soldier", "invisible"] == 0}) then { - { if !(_x in SLX_XEH_INIT_MEN) then { [_x] call SLX_XEH_EH_Init } } forEach _crew; - }; - } forEach vehicles; - SLX_XEH_INIT_MEN = nil; - - deleteVehicle GVAR(init_obj);GVAR(init_obj) = nil + { + _sim = getText(configFile/"CfgVehicles"/(typeOf _x)/"simulation"); + _crew = crew _x; + /* + * If it's a vehicle then start event handlers for the crew. + * (Vehicles have crew and are neither humanoids nor game logics) + */ + if (count _crew > 0 && {{ _sim == _x }count["soldier", "invisible"] == 0}) then { + { if !(_x in SLX_XEH_INIT_MEN) then { [_x] call SLX_XEH_EH_Init } } forEach _crew; + }; + } forEach vehicles; + SLX_XEH_INIT_MEN = nil; + + deleteVehicle GVAR(init_obj);GVAR(init_obj) = nil }]; GVAR(init_obj) setDamage 1; // Schedule to run itsy bitsy later @@ -284,73 +284,75 @@ GVAR(init_obj) setDamage 1; // Schedule to run itsy bitsy later // Prepare postInit GVAR(init_obj2) = SLX_XEH_DUMMY createVehicleLocal [0, 0, 0]; GVAR(init_obj2) addEventHandler ["killed", { - call COMPILE_FILE(init_post); - deleteVehicle GVAR(init_obj2);GVAR(init_obj2) = nil; + call COMPILE_FILE(init_post); + deleteVehicle GVAR(init_obj2);GVAR(init_obj2) = nil; }]; // Schedule PostInit SLX_XEH_STR spawn { - // Warn if PostInit takes longer than 10 tickTime seconds - SLX_XEH_STR spawn { - private["_time2Wait"]; - _time2Wait = diag_ticktime + 10; - waituntil {diag_ticktime > _time2Wait}; - if !(SLX_XEH_MACHINE select 8) then { - XEH_LOG("WARNING: PostInit did not finish in a timely fashion"); - waitUntil {time > 0}; - // Consider there will be no player if neither PostInit-Ready, nor PlayerCheck-Ready - if !(SLX_XEH_MACHINE select 8 || {SLX_XEH_MACHINE select 5}) then { SLX_XEH_MACHINE set [13, true]; }; - }; - }; + // Warn if PostInit takes longer than 10 tickTime seconds + SLX_XEH_STR spawn { + private["_time2Wait"]; + _time2Wait = diag_ticktime + 10; + waituntil {diag_ticktime > _time2Wait}; + if !(SLX_XEH_MACHINE select 8) then { + XEH_LOG("WARNING: PostInit did not finish in a timely fashion"); + waitUntil {time > 0}; + // Consider there will be no player if neither PostInit-Ready, nor PlayerCheck-Ready + if !(SLX_XEH_MACHINE select 8 || {SLX_XEH_MACHINE select 5}) then { SLX_XEH_MACHINE set [13, true]; }; + }; + }; - // On Server + Non JIP Client, we are now after all objects have inited - // and at the briefing, still time == 0 - if (isNull player) then { - #ifdef DEBUG_MODE_FULL - "NULL PLAYER" call SLX_XEH_LOG; - #endif - if !((SLX_XEH_MACHINE select 4) || {(SLX_XEH_MACHINE select 6)}) then { // only if MultiPlayer and not dedicated - #ifdef DEBUG_MODE_FULL - "JIP" call SLX_XEH_LOG; - #endif - - SLX_XEH_MACHINE set [1, true]; // set JIP - // TEST for weird jip-is-server-issue :S - if (!(SLX_XEH_MACHINE select 2) || {SLX_XEH_MACHINE select 3} || {SLX_XEH_MACHINE select 4}) then { - str(["WARNING: JIP Client, yet wrong detection", SLX_XEH_MACHINE]) call SLX_XEH_LOG; - SLX_XEH_MACHINE set [2, true]; // set Dedicated client - SLX_XEH_MACHINE set [3, false]; // set server - SLX_XEH_MACHINE set [4, false]; // set dedicatedserver - }; - waitUntil { !(isNull player) || {SLX_XEH_MACHINE select 13} }; - if (SLX_XEH_MACHINE select 13) then { XEH_LOG("WARNING: TimedOut waiting for player object to be ready. Continueing PostInit without Player ready") }; - }; - }; - - if !(isNull player) then { - if (isNull (group player) && {player isKindOf "CAManBase"}) then { - // DEBUG TEST: Crashing due to JIP, or when going from briefing - // into game - #ifdef DEBUG_MODE_FULL - "NULLGROUP" call SLX_XEH_LOG; - #endif - waitUntil { !(isNull (group player)) }; - }; - waitUntil { local player }; - }; + // On Server + Non JIP Client, we are now after all objects have inited + // and at the briefing, still time == 0 + if (isNull player) then { + #ifdef DEBUG_MODE_FULL + "NULL PLAYER" call SLX_XEH_LOG; + #endif + if !((SLX_XEH_MACHINE select 4) || {(SLX_XEH_MACHINE select 6)}) then { // only if MultiPlayer and not dedicated + #ifdef DEBUG_MODE_FULL + "JIP" call SLX_XEH_LOG; + #endif - GVAR(init_obj2) setDamage 1; // Schedule to run itsy bitsy later + // TEST for weird jip-is-server-issue :S + if (!(SLX_XEH_MACHINE select 2) || {SLX_XEH_MACHINE select 3} || {SLX_XEH_MACHINE select 4}) then { + str(["WARNING: JIP Client, yet wrong detection", SLX_XEH_MACHINE]) call SLX_XEH_LOG; + SLX_XEH_MACHINE set [2, true]; // set Dedicated client + SLX_XEH_MACHINE set [3, false]; // set server + SLX_XEH_MACHINE set [4, false]; // set dedicatedserver + }; + waitUntil { !(isNull player) || {SLX_XEH_MACHINE select 13} }; + if (SLX_XEH_MACHINE select 13) then { XEH_LOG("WARNING: TimedOut waiting for player object to be ready. Continueing PostInit without Player ready") }; + }; + }; - SLX_XEH_MACHINE set [5, true]; // set player check = complete + if !(isNull player) then { + if (isNull (group player) && {player isKindOf "CAManBase"}) then { + // DEBUG TEST: Crashing due to JIP, or when going from briefing + // into game + #ifdef DEBUG_MODE_FULL + "NULLGROUP" call SLX_XEH_LOG; + #endif + waitUntil { !(isNull (group player)) }; + }; + waitUntil { local player }; + }; + + // set JIP + SLX_XEH_MACHINE set [1, !isDedicated && getClientState in ["BRIEFING SHOWN","BRIEFING READ","GAME FINISHED","DEBRIEFING READ"]]; + + GVAR(init_obj2) setDamage 1; // Schedule to run itsy bitsy later + + SLX_XEH_MACHINE set [5, true]; // set player check = complete }; // Load and call any "pre-init", run-once event handlers /* - Compile code strings in the Extended_PreInit_EventHandlers class and call - them. This is done once per mission and before any extended init event - handler code is run. An addon maker can put run-once initialisation code - in such a pre-init "EH" rather than in a normal XEH init EH which might be - called several times. + Compile code strings in the Extended_PreInit_EventHandlers class and call + them. This is done once per mission and before any extended init event + handler code is run. An addon maker can put run-once initialisation code + in such a pre-init "EH" rather than in a normal XEH init EH which might be + called several times. */ { (_x/SLX_XEH_STR_PreInit) call FUNC(init_once) } forEach SLX_XEH_CONFIG_FILES; diff --git a/tools/cba/addons/xeh/script_xeh.hpp b/tools/cba/addons/xeh/script_xeh.hpp index ec7a1d8b88..ba55dbc917 100644 --- a/tools/cba/addons/xeh/script_xeh.hpp +++ b/tools/cba/addons/xeh/script_xeh.hpp @@ -1,8 +1,14 @@ +/* + Header: script_xeh.hpp + + Description: + Used internally. +*/ ///////////////////////////////////////////////////////////////////////////////// // MACRO: EXTENDED_EVENTHANDLERS -// XEH uses all existing event handlers +// Add all XEH event handlers ///////////////////////////////////////////////////////////////////////////////// -#define EXTENDED_EVENTHANDLERS init = QUOTE(if(isNil'SLX_XEH_MACHINE')then{call compile preProcessFileLineNumbers '\x\cba\addons\xeh\init_pre.sqf'};_this call SLX_XEH_EH_Init); \ +#define EXTENDED_EVENTHANDLERS init = "_this call SLX_XEH_EH_Init"; \ fired = "_this call SLX_XEH_EH_Fired"; \ animChanged = "_this call SLX_XEH_EH_AnimChanged"; \ animDone = "_this call SLX_XEH_EH_AnimDone"; \ @@ -45,22 +51,25 @@ weaponDisAssembled = "_this call SLX_XEH_EH_WeaponDisassembled"; -///////////////////////////////////////////////////////////////////////////////// -// MACRO: DELETE_EVENTHANDLERS -// -// Example: -// -// class DefaultEventhandlers; -// class Car_F; -// class MRAP_01_base_F: Car_F { -// class EventHandlers; -// }; -// class B_MRAP_01_F: MRAP_01_base_F { -// class Eventhandlers: EventHandlers { -// DELETE_EVENTHANDLERS -// }; -// }; -///////////////////////////////////////////////////////////////////////////////// +/* + MACRO: DELETE_EVENTHANDLERS + + Removes all event handlers. + + Example: + (begin example) + class DefaultEventhandlers; + class Car_F; + class MRAP_01_base_F: Car_F { + class EventHandlers; + }; + class B_MRAP_01_F: MRAP_01_base_F { + class Eventhandlers: EventHandlers { + DELETE_EVENTHANDLERS + }; + }; + (end example) +*/ #define DELETE_EVENTHANDLERS delete init; \ delete fired; \ From 0cfb492916ba7d58865bbaf617432e9c82681147 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Wed, 26 Aug 2015 10:04:51 +0200 Subject: [PATCH 133/620] Fixes and removal of duplicate code --- .../fnc_actionCheckBloodPressureLocal.sqf | 2 +- addons/medical/functions/fnc_createLitter.sqf | 6 +- .../fnc_displayPatientInformation.sqf | 6 +- addons/medical/functions/fnc_handleDamage.sqf | 87 +++------ .../functions/fnc_handleDamage_advanced.sqf | 8 +- .../functions/fnc_handleDamage_basic2.sqf | 170 +++--------------- .../functions/fnc_handleDamage_caching.sqf | 20 ++- .../functions/fnc_handleDamage_wounds.sqf | 4 + .../fnc_treatmentAdvanced_bandage.sqf | 2 +- .../fnc_treatmentAdvanced_bandageLocal.sqf | 4 +- 10 files changed, 80 insertions(+), 229 deletions(-) diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index c4c90845fd..6f58683d61 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -22,7 +22,7 @@ _bloodPressure = if (!alive _target) then { } else { [_target] call FUNC(getBloodPressure) }; -_bloodPressure params ["_bloodPressureLow", "_bloodPressureLow"]; +_bloodPressure params ["_bloodPressureHigh", "_bloodPressureLow"]; _output = ""; _logOutPut = ""; if ([_caller] call FUNC(isMedic)) then { diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf index b25a3bbf94..c234574abc 100644 --- a/addons/medical/functions/fnc_createLitter.sqf +++ b/addons/medical/functions/fnc_createLitter.sqf @@ -39,7 +39,7 @@ _litter = getArray (_config >> "litter"); _createLitter = { private["_position", "_direction"]; - params ["_unit", "_litter"]; + params ["_unit", "_litterClass"]; // @TODO: handle carriers over water // For now, don't spawn litter if we are over water to avoid floating litter if(surfaceIsWater (getPos _unit)) exitWith { false }; @@ -55,7 +55,7 @@ _createLitter = { // Create the litter, and timeout the event based on the cleanup delay // The cleanup delay for events in MP is handled by the server side - [QGVAR(createLitter), [_litterClass,_position,_direction], 0] call EFUNC(common,syncedEvent); + [QGVAR(createLitter), [_litterClass, _position, _direction], 0] call EFUNC(common,syncedEvent); true }; @@ -65,7 +65,7 @@ _createdLitter = []; if (typeName _x == "ARRAY") then { if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {}; - params ["_selection", "_litterCondition", "_litterOptions"]; + _x params ["_selection", "_litterCondition", "_litterOptions"]; if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower. diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 82622bdca6..934bcc72dc 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -18,8 +18,8 @@ // Exit for basic medical if (GVAR(level) < 2) exitWith {}; -private ["_target", "_show", "_selectionN", "_amountOfGeneric", "_bandagedwounds", "_logCtrl", "_part", "_partText", "_pointDamage", "_severity", "_total", "_totalIvVolume", "_triageStatus", "_type"]; -params ["_target", ["_target", true], ["_selectionN", 0]]; +private ["_amountOfGeneric", "_bandagedwounds", "_logCtrl", "_part", "_partText", "_pointDamage", "_severity", "_total", "_totalIvVolume", "_triageStatus", "_type"]; +params ["_target", ["_show", true], ["_selectionN", 0]]; GVAR(currentSelectedSelectionN) = if (typeName _selectionN == "SCALAR") then {_selectionN} else {0}; GVAR(displayPatientInformationTarget) = if (_show) then {_target} else {ObjNull}; @@ -203,7 +203,7 @@ if (_show) then { _logs = _target getvariable [QGVAR(logFile_Activity), []]; { // [_message,_moment,_type, _arguments] - _x params ["_message", "_moment", "_arguments"]; + _x params ["_message", "_moment", "_type", "_arguments"]; if (isLocalized _message) then { _message = localize _message; }; diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index eb6c2aa9b2..444643c806 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -31,79 +31,46 @@ if (typeName _projectile == "OBJECT") then { if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0}; // Exit if we disable damage temporarily -_damageOld = damage _unit; -if (_selection in GVAR(SELECTIONS)) then { - _damageOld = _unit getHit _selection; +if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { + _damageOld = damage _unit; + if (_selection in GVAR(SELECTIONS)) then { + _damageOld = _unit getHit _selection; + }; + _damageOld; }; -if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith {_damageOld}; // Get return damage _damageReturn = _damage; -if (GVAR(level) < 2) then { - _newDamage = _this call FUNC(handleDamage_basic2); - _projectile = _this select 4; - _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); - _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); - _minLethalDamage = 0.01; - if (_typeIndex >= 0) then { - _minLethalDamage = GVAR(minLethalDamages) select _typeIndex; +_newDamage = _this call FUNC(handleDamage_caching); +// handleDamage_caching may have modified the projectile string +_typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); + +_typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); +_minLethalDamage = 0.01; +if (_typeIndex >= 0) then { + _minLethalDamage = GVAR(minLethalDamages) select _typeIndex; +}; + +if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _shooter} && {_projectile == ""} && {_selection == ""}) then { + if (GVAR(enableVehicleCrashes)) then { + _selection = GVAR(SELECTIONS) select (floor(random(count GVAR(SELECTIONS)))); }; +}; - if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _shooter} && {_projectile == ""} && {_selection == ""}) then { - if (GVAR(enableVehicleCrashes)) then { - _selection = GVAR(SELECTIONS) select (floor(random(count GVAR(SELECTIONS)))); - }; +if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { + if ((_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)])) exitwith { + _damageReturn = 0.9; }; - - if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { - if ((_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)])) exitwith { - _damageReturn = 0.9; - }; - if ([_unit] call FUNC(setDead)) then { - _damageReturn = 1; - } else { - _damageReturn = _damageReturn min 0.89; - }; + if ([_unit] call FUNC(setDead)) then { + _damageReturn = 1; } else { _damageReturn = _damageReturn min 0.89; }; } else { - if !([_unit] call FUNC(hasMedicalEnabled)) exitwith { - // Because of the config changes, we cannot properly disable the medical system for a unit. - // lets use basic for the ACE_time being.. - _damageReturn = _this call FUNC(handleDamage_basic); - }; - _newDamage = _this call FUNC(handleDamage_caching); - // handleDamage_caching may have modified the projectile string - _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); - - _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); - _minLethalDamage = 0.01; - if (_typeIndex >= 0) then { - _minLethalDamage = GVAR(minLethalDamages) select _typeIndex; - }; - - if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _shooter} && {_projectile == ""} && {_selection == ""}) then { - if (GVAR(enableVehicleCrashes)) then { - _selection = GVAR(SELECTIONS) select (floor(random(count GVAR(SELECTIONS)))); - }; - }; - - if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)}) then { - if ((_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)])) exitwith { - _damageReturn = 0.9; - }; - if ([_unit] call FUNC(setDead)) then { - _damageReturn = 1; - } else { - _damageReturn = _damageReturn min 0.89; - }; - } else { - _damageReturn = _damageReturn min 0.89; - }; - + _damageReturn = _damageReturn min 0.89; }; + [_unit] call FUNC(addToInjuredCollection); if (_unit getVariable [QGVAR(preventInstaDeath), GVAR(preventInstaDeath)]) exitWith { diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index f1ba5cc6f0..09ea6cd3db 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -20,7 +20,7 @@ #include "script_component.hpp" private ["_typeOfProjectile", "_part", "_damageBodyParts", "_hitPoints"]; -params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfDamage", "_newDamage"]; +params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfProjectile", "_newDamage"]; // Most likely taking exessive fire damage. Lets exit. if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {}; @@ -35,7 +35,11 @@ _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); -[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds); + + +systemChat format["ASSIGNING INJURIES: %1", _unit]; + +[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds); //FUNC(handleDamage_assignWounds); // TODO Disabled until implemented fully //if (GVAR(enableAirway)) then { diff --git a/addons/medical/functions/fnc_handleDamage_basic2.sqf b/addons/medical/functions/fnc_handleDamage_basic2.sqf index 9da6fd405d..3a79b1525f 100644 --- a/addons/medical/functions/fnc_handleDamage_basic2.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic2.sqf @@ -3,12 +3,6 @@ * Cache a handleDamage call to execute it 3 frames later * * Arguments: - * 0: Unit That Was Hit - * 1: Name Of Hit Selection - * 2: Amount Of Damage - * 3: Shooter - * 4: Projectile - * 5: Current damage to be returned * * Return Value: * @@ -18,151 +12,29 @@ #include "script_component.hpp" -private ["_unit", "_selectionName", "_damage", "_source", "_projectile", "_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"]; -_unit = _this select 0; -_selectionName = _this select 1; -_damage = _this select 2; -_source = _this select 3; -_projectile = _this select 4; +private ["_damageBodyParts", "_cache_params", "_cache_damages"]; +params ["_target"]; -_hitSelections = GVAR(SELECTIONS); -_hitPoints = GVAR(HITPOINTS); +_damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; +_cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; +_cache_damages = _target getVariable QGVAR(cachedDamages); -// Calculate change in damage. -_newDamage = _damage - (damage _unit); -if (_selectionName in _hitSelections) then { - _newDamage = _damage - (_unit getHitPointDamage (_hitPoints select (_hitSelections find _selectionName))); -}; - -//_damage = _damage + _newDamage; - -// Check for vehicle crash -if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _source} && {_projectile == ""} && {_selectionName == ""}) then { - if (GVAR(enableVehicleCrashes)) then { - _selectionName = _hitSelections select (floor(random(count _hitSelections))); - _projectile = "vehiclecrash"; - _this set [1, _selectionName]; - _this set [4, _projectile]; +{ + _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; + if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { + _part = [_selectionName] call FUNC(selectionNameToNumber); + if (_part < 0) exitwith {}; + _damageBodyParts set [_part, (_damageBodyParts select _part) + (_cache_damages select _foreachIndex)]; }; -}; +}foreach _cache_params; +_target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; -// Handle falling damage -_impactVelocity = (velocity _unit) select 2; -if (_impactVelocity < -5 && {vehicle _unit == _unit}) then { - _unit setVariable [QGVAR(isFalling), true]; - _unit setVariable [QGVAR(impactVelocity), _impactVelocity]; -}; -if (_unit getVariable [QGVAR(isFalling), false]) then { - if !(_selectionName in ["", "leg_l", "leg_r"]) then { - if (_selectionName == "body") then { - _newDamage = _newDamage * abs(_unit getVariable [QGVAR(impactVelocity), _impactVelocity]) / 50; - } else { - _newDamage = _newDamage * 0.5; - }; - } else { - if (_selectionName == "") then { - _selectionName = ["leg_l", "leg_r"] select (floor(random 2)); - _this set [1, _selectionName]; - }; - _newDamage = _newDamage * 0.7; - }; - _projectile = "falling"; - _this set [4, "falling"]; -}; +EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); +_target setHitPointDamage ["hitHead", _headDamage min 0.95]; +_target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; +_target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; +_target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; -// Finished with the current frame, reset variables -// Note: sometimes handleDamage spans over 2 or even 3 frames. -if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) then { - _unit setVariable [QGVAR(frameNo_damageCaching), diag_frameno]; - - // handle the cached damages 3 frames later - [{ - params ["_args", "_id"]; - _args params ["_target", "_frameNo"]; - - if (diag_frameno > _frameNo + 2) then { - _target setDamage 0; - - _cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; - _cache_damages = _target getVariable QGVAR(cachedDamages); - _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; - { - _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; - if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { - _part = [_selectionName] call FUNC(selectionNameToNumber); - if (_part < 0) exitwith {}; - _damageBodyParts set [_part, (_damageBodyParts select _part) + (_cache_damages select _foreachIndex)]; - }; - }foreach _cache_params; - _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; - - EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); - _target setHitPointDamage ["hitHead", _headDamage min 0.95]; - _target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; - _target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; - _target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; - - { - _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; - }foreach GVAR(HITPOINTS); - [_id] call cba_fnc_removePerFrameHandler; - }; - }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; - - _unit setVariable [QGVAR(cachedProjectiles), []]; - _unit setVariable [QGVAR(cachedHitPoints), []]; - _unit setVariable [QGVAR(cachedDamages), []]; - _unit setVariable [QGVAR(cachedHandleDamageParams), []]; -}; - -// Caching of the damage events -if (_selectionName != "") then { - _cache_projectiles = _unit getVariable QGVAR(cachedProjectiles); - private ["_index","_otherDamage"]; - _index = _cache_projectiles find _projectile; - // Check if the current projectile has already been handled once - if (_index >= 0 && {_projectile != "falling"}) exitwith { - _cache_damages = _unit getVariable QGVAR(cachedDamages); - // Find the previous damage this projectile has done - _otherDamage = (_cache_damages select _index); - - // Take the highest damage of the two - if (_newDamage > _otherDamage) then { - _cache_params = _unit getVariable QGVAR(cachedHandleDamageParams); - _cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints); - - private ["_hitPoint", "_restore"]; - // Restore the damage before the previous damage was processed - _hitPoint = _cache_hitpoints select _index; - _restore = ((_unit getHitPointDamage _hitPoint) - _otherDamage) max 0; - _unit setHitPointDamage [_hitPoint, _restore]; - - _cache_hitpoints set [_index, (_hitPoints select (_hitSelections find _selectionName))]; - _cache_damages set [_index, _newDamage]; - _cache_params set[_index, _this]; - - _unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles]; - _unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints]; - _unit setVariable [QGVAR(cachedDamages), _cache_damages]; - _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; - }; - }; - - _cache_hitpoints = _unit getVariable QGVAR(cachedHitPoints); - _cache_damages = _unit getVariable QGVAR(cachedDamages); - _cache_params = _unit getVariable QGVAR(cachedHandleDamageParams); - - // This is an unhandled projectile - _cache_projectiles pushBack _projectile; - _cache_hitpoints pushBack (_hitPoints select (_hitSelections find _selectionName)); - _cache_damages pushBack _newDamage; - _cache_params pushBack _this; - - // Store the new cached values - _unit setVariable [QGVAR(cachedProjectiles), _cache_projectiles]; - _unit setVariable [QGVAR(cachedHitPoints), _cache_hitpoints]; - _unit setVariable [QGVAR(cachedDamages), _cache_damages]; - _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; -}; - -_newDamage; +{ + _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; +}foreach GVAR(HITPOINTS); diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index a9825a5c88..2422dcd9e3 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -79,15 +79,17 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t if (diag_frameno > _frameno + 2) then { _unit setDamage 0; - _cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []]; - _cache_damages = _unit getVariable QGVAR(cachedDamages); - { - _params = _x + [_cache_damages select _foreachIndex]; - _params call FUNC(handleDamage_advanced); - } foreach _cache_params; - - [_unit] call FUNC(handleDamage_advancedSetDamage); - + if (GVAR(level) < 2 || {!([_unit] call FUNC(hasMedicalEnabled))}) then { + [_unit] call FUNC(handleDamage_basic2); + } else { + _cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []]; + _cache_damages = _unit getVariable QGVAR(cachedDamages); + { + _params = _x + [_cache_damages select _foreachIndex]; + _params call FUNC(handleDamage_advanced); + } foreach _cache_params; + [_unit] call FUNC(handleDamage_advancedSetDamage); + }; [_idPFH] call CBA_fnc_removePerFrameHandler; }; }, 0, [_unit, diag_frameno] ] call CBA_fnc_addPerFrameHandler; diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 4438e9bb90..10aec5c459 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -20,11 +20,15 @@ private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; +systemChat format["input: %1", _this]; +diag_log format["input: %1", _this]; + // Administration for open wounds and ids _openWounds = _unit getvariable[QGVAR(openWounds), []]; _woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; _extensionOutput = "ace_medical" callExtension format ["HandleDamageWounds,%1,%2,%3,%4", _selectionName, _damage, _typeOfDamage, _woundID]; +systemChat format["EXTENSION OUTPUT: %1", _extensionOutput]; _painToAdd = 0; _woundsCreated = []; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index f2159c37ef..aa3669c227 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -17,7 +17,7 @@ */ #include "script_component.hpp" -params ["_caller", "_target", "_selectionName", "_className", "_items", ["_specificSpot", -1]]; +params ["_caller", "_target", "_selectionName", "_className", "_items", "", ["_specificSpot", -1]]; if !([_target] call FUNC(hasMedicalEnabled)) exitwith { _this call FUNC(treatmentBasic_bandage); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index b36a551458..effa1e74a7 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -40,7 +40,8 @@ _effectivenessFound = -1; _mostEffectiveInjury = _openWounds select 0; _exit = false; { - params ["", "_classID", "_partX"]; + _x params ["", "_classID", "_partX"]; + diag_log format["OPENWOUND: %1", _x]; // Only parse injuries that are for the selected bodypart. if (_partX == _part) then { _woundEffectivenss = _effectiveness; @@ -56,6 +57,7 @@ _exit = false; }; }; + diag_log format["_specificClass: %1 vs classId %2", _specificClass, _classID]; if (_specificClass == _classID) exitwith { _effectivenessFound = _woundEffectivenss; _mostEffectiveSpot = _foreachIndex; From 9e10aa86d7fe98e9b3184bf09d6e20b489feb0ce Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 26 Aug 2015 15:20:11 +0200 Subject: [PATCH 134/620] Standardize logging format through ACE_LOG macros --- addons/cargo/functions/fnc_moduleSettings.sqf | 2 +- addons/common/XEH_postInit.sqf | 14 +++++++------- .../common/functions/fnc__handleNetEvent.sqf | 18 +++++++++--------- .../fnc__handleRequestSyncedEvent.sqf | 16 ++++++++-------- .../functions/fnc__handleSyncedEvent.sqf | 8 ++++---- .../functions/fnc_addSyncedEventHandler.sqf | 8 ++++---- addons/common/functions/fnc_addToInventory.sqf | 4 +++- addons/common/functions/fnc_cachedCall.sqf | 6 +++--- addons/common/functions/fnc_checkFiles.sqf | 16 ++++++++-------- addons/common/functions/fnc_checkPBOs.sqf | 2 +- addons/common/functions/fnc_claim.sqf | 4 ++-- addons/common/functions/fnc_debug.sqf | 2 +- addons/common/functions/fnc_doAnimation.sqf | 2 +- .../common/functions/fnc_executePersistent.sqf | 2 +- addons/common/functions/fnc_filter.sqf | 2 +- addons/common/functions/fnc_getMapGridData.sqf | 8 ++++---- .../fnc_loadSettingsLocalizedText.sqf | 2 +- addons/common/functions/fnc_localEvent.sqf | 12 ++++++------ addons/common/functions/fnc_map.sqf | 2 +- .../common/functions/fnc_moduleCheckPBOs.sqf | 2 +- .../common/functions/fnc_moduleLSDVehicles.sqf | 2 +- .../functions/fnc_readSettingFromModule.sqf | 2 +- .../functions/fnc_removeSyncedEventHandler.sqf | 6 +++--- addons/common/functions/fnc_serverEvent.sqf | 4 ++-- addons/common/functions/fnc_syncedEvent.sqf | 6 +++--- addons/common/functions/fnc_targetEvent.sqf | 6 +++--- .../common/functions/fnc_unloadPersonLocal.sqf | 14 +++++++++----- .../functions/fnc_eventCallerFinish.sqf | 2 +- .../functions/fnc_eventTargetFinish.sqf | 2 +- addons/explosives/functions/fnc_module.sqf | 2 +- .../functions/fnc_placeExplosive.sqf | 4 ++-- addons/frag/functions/fnc_doSpall.sqf | 4 ++-- addons/frag/functions/fnc_frago.sqf | 10 +++++----- addons/hearing/functions/fnc_moduleHearing.sqf | 2 +- .../functions/fnc_addActionToClass.sqf | 2 +- .../functions/fnc_moduleInteraction.sqf | 2 +- .../functions/fnc_drawVisibleLaserTargets.sqf | 10 +++++----- .../functions/fnc_switchLaserLightMode.sqf | 2 +- .../functions/fnc_blueForceTrackingModule.sqf | 2 +- addons/map/functions/fnc_moduleMap.sqf | 2 +- .../functions/fnc_handleMouseZChanged.sqf | 2 -- addons/medical/XEH_postInit.sqf | 2 +- .../nametags/functions/fnc_initIsSpeaking.sqf | 4 ++-- .../nametags/functions/fnc_moduleNameTags.sqf | 2 +- addons/overheating/functions/fnc_cooldown.sqf | 2 +- addons/reload/XEH_postInit.sqf | 4 ---- .../repair/functions/fnc_addRepairActions.sqf | 2 +- .../functions/fnc_moduleRepairSettings.sqf | 2 +- .../respawn/functions/fnc_initRallypoint.sqf | 14 +++++++------- addons/respawn/functions/fnc_module.sqf | 4 ++-- .../functions/fnc_moduleFriendlyFire.sqf | 12 ++++++------ .../respawn/functions/fnc_moduleRallypoint.sqf | 10 +++++----- addons/sitting/functions/fnc_moduleInit.sqf | 2 +- .../functions/fnc_createSlideshow.sqf | 4 ++-- addons/slideshow/functions/fnc_moduleInit.sqf | 2 +- addons/switchunits/functions/fnc_module.sqf | 2 +- .../viewdistance/functions/fnc_initModule.sqf | 4 ++-- 57 files changed, 146 insertions(+), 146 deletions(-) diff --git a/addons/cargo/functions/fnc_moduleSettings.sqf b/addons/cargo/functions/fnc_moduleSettings.sqf index 35e6aede7a..2027fb4bbb 100644 --- a/addons/cargo/functions/fnc_moduleSettings.sqf +++ b/addons/cargo/functions/fnc_moduleSettings.sqf @@ -25,4 +25,4 @@ if (!_activated) exitWith {}; [_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Cargo Module Initialized."; +ACE_LOGINFO("Cargo Module Initialized."); diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 6535b79257..60d1101e6b 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -40,7 +40,7 @@ ["HeadbugFixUsed", { PARAMS_2(_profileName,_animation); - diag_log text format ["[ACE] Headbug Used: Name: %1, Animation: %2", _profileName, _animation]; + ACE_LOGINFO(format ["Headbug Used: Name: %1, Animation: %2", _profileName, _animation]); }] call FUNC(addEventHandler); @@ -100,7 +100,7 @@ if (_currentVersion != _previousVersion) then { // Handle JIP scenario if(!isServer) then { ["PlayerJip", { - diag_log text format["[ACE] * JIP event synchronization initialized"]; + ACE_LOGINFO("JIP event synchronization initialized"); ["SEH_all", [player]] call FUNC(serverEvent); }] call FUNC(addEventHandler); } else { @@ -126,13 +126,13 @@ call FUNC(checkFiles); if (isNil QGVAR(settings) || {(!isServer) && (isNil QEGVAR(modules,serverModulesRead))}) exitWith { if (!_waitingMsgSent) then { _args set [0, true]; - diag_log text format["[ACE] Waiting on settings from server"]; + ACE_LOGINFO("Waiting on settings from server..."); }; }; [(_this select 1)] call cba_fnc_removePerFrameHandler; - diag_log text format["[ACE] Settings received from server"]; + ACE_LOGINFO("Settings received from server."); // Event so that ACE_Modules have their settings loaded: ["InitSettingsFromModules", []] call FUNC(localEvent); @@ -143,7 +143,7 @@ call FUNC(checkFiles); call FUNC(loadSettingsLocalizedText); }; - diag_log text format["[ACE] Settings initialized"]; + ACE_LOGINFO("Settings initialized."); //Event that settings are safe to use: ["SettingsInitialized", []] call FUNC(localEvent); @@ -272,7 +272,7 @@ GVAR(OldVisibleMap) = false; GVAR(OldPlayerWeapon) = _newPlayerWeapon; ["playerWeaponChanged", [ACE_player, _newPlayerWeapon]] call FUNC(localEvent); }; - + // "visibleMapChanged" event _newVisibleMap = visibleMap; if (!_newVisibleMap isEqualTo GVAR(OldVisibleMap)) then { @@ -280,7 +280,7 @@ GVAR(OldVisibleMap) = false; GVAR(OldVisibleMap) = _newVisibleMap; ["visibleMapChanged", [ACE_player, _newVisibleMap]] call FUNC(localEvent); }; - + }, 0, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index 7ee1f9c502..0203b5da0c 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -11,22 +11,22 @@ PARAMS_2(_eventType,_event); if (_eventType == "ACEg") then { _eventName = _event select 0; _eventArgs = _event select 1; - + _eventNames = GVAR(events) select 0; _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { _events = (GVAR(events) select 1) select _eventIndex; - + #ifdef DEBUG_EVENTS - diag_log text format[ARR_2("* Net Event %1",_eventName)]; - diag_log text format[ARR_2(" args=%1",_eventArgs)]; + ACE_LOGINFO(format ["* Net Event %1", _eventName]); + ACE_LOGINFO(format [" args=%1", _eventArgs]); #endif - + { if (!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format[ARR_3("Net Event %1 ID: %2",_eventName,_forEachIndex)]); + _eventArgs call CALLSTACK_NAMED(_x, format ["Net Event %1 ID: %2", _eventName, _forEachIndex]); #ifdef DEBUG_EVENTS_CALLSTACK - diag_log text format[ARR_2(" ID: %1",_forEachIndex)]; + ACE_LOGINFO(format [" ID: %1", _forEachIndex]); #endif }; } forEach _events; @@ -38,7 +38,7 @@ if (_eventType == "ACEc") then { _eventName = _event select 0; _eventTargets = _event select 1; _eventArgs = _event select 2; - + _sentEvents = []; if (!IS_ARRAY(_eventTargets)) then { _eventTargets = [_eventTargets]; @@ -72,4 +72,4 @@ if (_eventType == "ACEc") then { }; } forEach _eventTargets; }; -}; \ No newline at end of file +}; diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index fe05bc498b..2a0fd471a0 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -1,16 +1,16 @@ /* * Author: jaynus - * + * * Receives either requests for synchronization from clients, or the synchronization data from the server. * * Arguments [Client] : * 0: eventName (String) * 1: eventLog (Array) - * + * * Arguments [Server] : * 0: eventName (String) * 1: client (Object) - * + * * Return value: * Boolean of success */ @@ -24,14 +24,14 @@ if(isServer) then { // Find the event name, and shovel out the events to the client PARAMS_2(_eventName,_client); private["_eventEntry", "_eventLog"]; - + if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith { - diag_log text format["[ACE] Error, request for synced event - key not found."]; + ACE_LOGERROR("Request for synced event - key not found."); false }; _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); _eventLog = _eventEntry select 1; - + ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent); } else { PARAMS_2(_eventName,_eventLog); @@ -42,7 +42,7 @@ if(isServer) then { _eventArgs = _x select 1; [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent); } forEach _eventLog; - diag_log text format["[ACE] + [%1] synchronized", _eventName]; + ACE_LOGINFO(format ["[%1] synchronized", _eventName]); }; -true \ No newline at end of file +true diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf index 053ecb60b7..aaa6fbdaff 100644 --- a/addons/common/functions/fnc__handleSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleSyncedEvent.sqf @@ -1,13 +1,13 @@ /* * Author: jaynus - * + * * Handles synced events being received. Server will log them, and server/client will execute them. * * Arguments [Client] : * 0: eventName (String) * 1: arguments (Array) * 2: ttl (Scalar) - * + * * Return value: * Boolean of success */ @@ -17,7 +17,7 @@ PARAMS_3(_name,_args,_ttl); private["_internalData", "_eventLog", "_eventCode"]; if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - diag_log text format["[ACE] Error, synced event key not found."]; + ACE_LOGERROR("Synced event key not found."); false }; @@ -33,4 +33,4 @@ if(isServer) then { }; _eventCode = _internalData select 0; -_args call _eventCode; \ No newline at end of file +_args call _eventCode; diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf index 60c90672ef..7225a45e59 100644 --- a/addons/common/functions/fnc_addSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf @@ -5,9 +5,9 @@ * * Argument: * 0: Name (String) - * 1: Handler (Code) + * 1: Handler (Code) * 2: TTL (Number or Code) [Optional] - * + * * Return value: * Boolean of success */ @@ -25,10 +25,10 @@ if( (count _this) > 2) then { }; if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - diag_log text format["[ACE] Error, duplicate synced event creation."]; + ACE_LOGERROR("Duplicate synced event creation."); false }; _eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); _data = [_handler,[],_ttl,_eventId]; -HASH_SET(GVAR(syncedEvents),_name,_data); \ No newline at end of file +HASH_SET(GVAR(syncedEvents),_name,_data); diff --git a/addons/common/functions/fnc_addToInventory.sqf b/addons/common/functions/fnc_addToInventory.sqf index ba76831ba4..0ee8455d70 100644 --- a/addons/common/functions/fnc_addToInventory.sqf +++ b/addons/common/functions/fnc_addToInventory.sqf @@ -87,7 +87,9 @@ switch ((_type select 0)) do { _unit setPosATL _pos; }; }; - default {diag_log format ["ACE: Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type];}; + default { + ACE_LOGWARNING(format ["Incorrect item type passed to %1, passed: %2", QFUNC(AddToInventory), _type]); + }; }; [_addedToPlayer,_unit] diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index f9d9c74dd3..2b08d81c05 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -40,7 +40,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { private ["_varName","_cacheList"]; // _eventName is defined on the function that calls the event #ifdef DEBUG_MODE_FULL - diag_log text format ["ACE: Clear cached variables on event: %1", _eventName]; + ACE_LOGINFO(format ["Clear cached variables on event: %1", _eventName]); #endif // Get the list of caches to clear _varName = format [QGVAR(clearCache_%1),_eventName]; @@ -58,9 +58,9 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { _cacheList pushBack [_namespace, _uid]; }; #ifdef DEBUG_MODE_FULL - diag_log format ["Calculated result: %1 %2", _namespace, _uid]; + ACE_LOGINFO(format ["Calculated result: %1 %2", _namespace, _uid]); } else { - diag_log format ["Cached result : %1 %2", _namespace, _uid]; + ACE_LOGINFO(format ["Cached result: %1 %2", _namespace, _uid]); #endif }; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 647a1b00a6..c6dcff242e 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -17,7 +17,7 @@ private "_version"; _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); -diag_log text format ["[ACE]: ACE is version %1.", _version]; +ACE_LOGINFO(format ["ACE is version %1.", _version]); private "_addons"; _addons = activatedAddons; @@ -28,7 +28,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); private "_errorMsg"; _errorMsg = format ["File %1.pbo is outdated.", _x]; - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + ACE_LOGERROR(_errorMsg); if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); @@ -44,14 +44,14 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); private "_errorMsg"; _errorMsg = format ["Extension %1.dll not installed.", _x]; - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + ACE_LOGERROR(_errorMsg); if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; } else { // Print the current extension version - diag_log text format ["[ACE] Extension version: %1: %2", _x, (_x callExtension "version")]; + ACE_LOGINFO(format ["Extension version: %1: %2", _x, (_x callExtension "version")]); }; } forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); @@ -78,9 +78,9 @@ if (isMultiplayer) then { private "_errorMsg"; _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + ACE_LOGERROR(_errorMsg); - if (hasInterface) then {diag_log str "1"; + if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; }; @@ -89,9 +89,9 @@ if (isMultiplayer) then { if !(_addons isEqualTo []) then { _errorMsg = format ["Client/Server Addon Mismatch. Client has extra addons: %1.",_addons]; - diag_log text format ["[ACE] ERROR: %1", _errorMsg]; + ACE_LOGERROR(_errorMsg); - if (hasInterface) then {diag_log str "1"; + if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; }; diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index 5665ee632c..d1441ffd83 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -67,7 +67,7 @@ if (!isServer) then { }; //[_error, "{systemChat _this}"] call FUNC(execRemoteFnc); - diag_log text _error; + ACE_LOGERROR(_error); if (_mode < 2) then { _text = composeText [lineBreak, parseText format ["%1", _text]]; diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index f97b69e194..5c8014ee5f 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -13,7 +13,7 @@ * */ #include "script_component.hpp" - + PARAMS_3(_unit,_target,_lockTarget); if (isNil "_lockTarget") then {_lockTarget = false}; @@ -22,7 +22,7 @@ private "_owner"; _owner = _target getVariable [QGVAR(owner), objNull]; if (!isNull _owner && {!isNull _unit} && {_unit != _owner}) then { - diag_log text "[ACE] ERROR: Claiming already owned object."; + ACE_LOGERROR("Claiming already owned object."); }; // transfer this immediately diff --git a/addons/common/functions/fnc_debug.sqf b/addons/common/functions/fnc_debug.sqf index fd1d3d59fa..df770c6e25 100644 --- a/addons/common/functions/fnc_debug.sqf +++ b/addons/common/functions/fnc_debug.sqf @@ -55,4 +55,4 @@ if (_level <= _defaultLoglevel) then { // pass it onwards to the log function: // [0, [], compile format["%1",_msg], true] call FUNC(log); }; -true \ No newline at end of file +true diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index 07d9ec9e35..9588460ba1 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -23,7 +23,7 @@ _force = False; // no animation given if (isNil "_animation") exitWith { - diag_log format ["[ACE] ERROR: No animation specified in %1", _fnc_scriptNameParent]; + ACE_LOGERROR(format ["No animation specified in %1.", _fnc_scriptNameParent]); }; if (isNil "_priority") then { diff --git a/addons/common/functions/fnc_executePersistent.sqf b/addons/common/functions/fnc_executePersistent.sqf index a11fbb07aa..af32efb434 100644 --- a/addons/common/functions/fnc_executePersistent.sqf +++ b/addons/common/functions/fnc_executePersistent.sqf @@ -5,7 +5,7 @@ PARAMS_1(_target); { if (isNil "_x") then { - diag_log text format ["[ACE] ERROR: No argument and function for remote function. ID: %1", _forEachIndex]; + ACE_LOGERROR(format ["No argument and function for remote function. ID: %1", _forEachIndex]); } else { if (typeName _x == "ARRAY") then { [_x select 0, _target] call (_x select 1); diff --git a/addons/common/functions/fnc_filter.sqf b/addons/common/functions/fnc_filter.sqf index 8d4146faa5..783a1338e8 100644 --- a/addons/common/functions/fnc_filter.sqf +++ b/addons/common/functions/fnc_filter.sqf @@ -20,7 +20,7 @@ private ["_newArray", "_index"]; PARAMS_2(_array,_code); if (isNil "_array") exitWith { - diag_log text format ["[ACE] ERROR: No array for function filter in %1", _fnc_scriptNameParent]; + ACE_LOGERROR(format ["No array for function filter in %1.", _fnc_scriptNameParent]); [] }; diff --git a/addons/common/functions/fnc_getMapGridData.sqf b/addons/common/functions/fnc_getMapGridData.sqf index 308772bfff..c264b6fd50 100644 --- a/addons/common/functions/fnc_getMapGridData.sqf +++ b/addons/common/functions/fnc_getMapGridData.sqf @@ -44,7 +44,7 @@ _letterGrid = false; if (((toLower _formatX) find "a") != -1) then {_letterGrid = true}; if (((toLower _formatY) find "a") != -1) then {_letterGrid = true}; if (_letterGrid) exitWith { - diag_log text format ["[ACE] Map Grid Warning (%1) - Map uses letter grids [%2,%3]", worldName, _formatX, _formatY]; + ACE_LOGWARNING(format ["Map Grid Warning (%1) - Map uses letter grids [%2, %3]", worldName, _formatX, _formatY]); }; //Start at [0, 500] and move north until we get a change in grid @@ -64,13 +64,13 @@ _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5); _stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5); if (_stepYat5 < 0) then { - diag_log text format ["[ACE] Map Grid Warning (%1) - Northing is reversed", worldName]; + ACE_LOGWARNING(format ["Map Grid Warning (%1) - Northing is reversed.", worldName]); }; if (_stepXat5 != 1) then { - diag_log text format ["[ACE] Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x", worldName, _stepXat5]; + ACE_LOGWARNING(format ["Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.", worldName, _stepXat5]); }; if ((_stepYat5 != 1) && {_stepYat5 != -1}) then { - diag_log text format ["[ACE] Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y", worldName, _stepXat5]; + ACE_LOGWARNING(format ["Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.", worldName, _stepXat5]); }; GVAR(mapGridData) = [_offsetX, _realOffsetY, _stepXat5, _stepYat5]; diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 4479ba04fa..1d41d2991a 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -42,7 +42,7 @@ _parseConfigForDisplayNames = { if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then { if !([missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { - diag_log text format ["[ACE] - Setting found, but couldn't localize [%1] (server has but we don't?)", _name]; + ACE_LOGWARNING(format ["Setting found, but couldn't localize [%1] (server has but we don't?)", _name]); }; }; }; diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index 256282f97f..b6b6bef5a9 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -21,16 +21,16 @@ _eventIndex = _eventNames find _eventName; if(_eventIndex != -1) then { _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS - diag_log text format[ARR_2("* Local Event: %1",_eventName)]; - diag_log text format[ARR_2(" args=%1",_eventArgs)]; + ACE_LOGINFO(format ["* Local Event: %1", _eventName]); + ACE_LOGINFO(format [" args=%1", _eventArgs]); #endif - + { if(!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format[ARR_3("Local Event %1 ID: %2",_eventName,_forEachIndex)]); + _eventArgs call CALLSTACK_NAMED(_x, format ["Local Event %1 ID: %2", _eventName, _forEachIndex]); #ifdef DEBUG_EVENTS_CALLSTACK - diag_log text format[ARR_2(" ID: %1",_forEachIndex)]; + ACE_LOGINFO(format [" ID: %1", _forEachIndex]); #endif }; } forEach _events; -}; \ No newline at end of file +}; diff --git a/addons/common/functions/fnc_map.sqf b/addons/common/functions/fnc_map.sqf index 16ed168218..455a19e2f7 100644 --- a/addons/common/functions/fnc_map.sqf +++ b/addons/common/functions/fnc_map.sqf @@ -21,7 +21,7 @@ _array = + _this select 0; _code = _this select 1; if (isNil "_array") exitWith { - diag_log text format ["[ACE] ERROR: No array for function map in %1", _fnc_scriptNameParent]; + ACE_LOGERROR(format ["No array for function map in %1.", _fnc_scriptNameParent]); [] }; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index c75324c9a3..bc87ff6fc5 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -22,4 +22,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); -diag_log text format ["[ACE]: Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)]; +ACE_LOGINFO(format ["Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)]); diff --git a/addons/common/functions/fnc_moduleLSDVehicles.sqf b/addons/common/functions/fnc_moduleLSDVehicles.sqf index 59744016ce..0814451f79 100644 --- a/addons/common/functions/fnc_moduleLSDVehicles.sqf +++ b/addons/common/functions/fnc_moduleLSDVehicles.sqf @@ -44,4 +44,4 @@ if !(_activated) exitWith {}; }; } count _units; -diag_log text "[ACE]: WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE."; +ACE_LOGINFO("WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE."); diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index 0bf2693eba..b037224d19 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -20,7 +20,7 @@ PARAMS_3(_logic,_settingName,_moduleVariable); // Check if the parameter is defined in the module if (isNil {_logic getVariable _moduleVariable}) exitWith { - diag_log text format["[ACE]: Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleVariable]; + ACE_LOGWARNING(format["Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleVariable]); }; // Set the setting globally and force it diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf index 84aa98c0ea..7202ec00b9 100644 --- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf @@ -5,7 +5,7 @@ * * Argument: * 0: Name (String) - * + * * Return value: * Boolean of success */ @@ -16,7 +16,7 @@ PARAMS_1(_name); private ["_data", "_eventId"]; if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - diag_log text format["[ACE] Error, synced event key not found."]; + ACE_LOGERROR(format ["Synced event key not found."]); false }; @@ -24,4 +24,4 @@ _data = HASH_GET(GVAR(syncedEvents),_name); _eventId = _data select 3; [_eventId] call ace_common_fnc_removeEventHandler; -HASH_REM(GVAR(syncedEvents),_name); \ No newline at end of file +HASH_REM(GVAR(syncedEvents),_name); diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf index 9227b1a783..f3118c481b 100644 --- a/addons/common/functions/fnc_serverEvent.sqf +++ b/addons/common/functions/fnc_serverEvent.sqf @@ -16,8 +16,8 @@ PARAMS_2(_eventName,_eventArgs); #ifdef DEBUG_EVENTS - diag_log text format[ARR_2("* Server Event: %1",_eventName)]; - diag_log text format[ARR_2(" args=%1",_eventArgs)]; + ACE_LOGINFO(format ["* Server Event: %1", _eventName]); + ACE_LOGINFO(format [" args=%1", _eventArgs]); #endif ACEg = [_eventName, _eventArgs]; diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 9100e5a19a..42b2147f10 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -7,7 +7,7 @@ * 0: Name (String) * 1: Arguments (Array) * 2: TTL (Number or Code) [Optional] for this specific event call - * + * * Return value: * Boolean of success */ @@ -25,9 +25,9 @@ if( (count _this) > 2) then { }; if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - diag_log text format["[ACE] Error, synced event key not found."]; + ACE_LOGERROR("Synced event key not found."); false }; _eventData = [_name, _args,_ttl]; -["SEH", _eventData] call FUNC(globalEvent); \ No newline at end of file +["SEH", _eventData] call FUNC(globalEvent); diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf index 22bd7431f5..1e4fed1a4e 100644 --- a/addons/common/functions/fnc_targetEvent.sqf +++ b/addons/common/functions/fnc_targetEvent.sqf @@ -21,8 +21,8 @@ PARAMS_3(_eventName,_eventTargets,_eventArgs); #ifdef DEBUG_EVENTS - diag_log text format[ARR_3("* Target Event: %1 - %2",_eventName,_eventTargets)]; - diag_log text format[ARR_2(" args=%1",_eventArgs)]; + ACE_LOGINFO(format ["* Target Event: %1 - %2", _eventName, _eventTargets]); + ACE_LOGINFO(format [" args=%1", _eventArgs]); #endif ACEc = [_eventName, _eventTargets, _eventArgs]; @@ -30,4 +30,4 @@ if(!isServer) then { publicVariableServer "ACEc"; } else { ["ACEc", ACEc] call FUNC(_handleNetEvent); -}; \ No newline at end of file +}; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index da2d9ea77e..fadb276670 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -37,11 +37,15 @@ if (_vehicle isKindOf "Ship" ) then { }; TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle); -if (!_validVehiclestate) exitwith { diag_log format["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]; false }; +if (!_validVehiclestate) exitwith { + ACE_LOGWARNING(format ["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]); + false +}; -diag_log str _emptyPos; - -if (count _emptyPos == 0) exitwith {diag_log format["No safe empty spots to unload patient. %1", _emptyPos]; false}; //consider displaying text saying there are no safe places to exit the vehicle +if (count _emptyPos == 0) exitwith { + ACE_LOGWARNING(format ["No safe empty spots to unload patient. %1", _emptyPos]); + false +}; //consider displaying text saying there are no safe places to exit the vehicle unassignVehicle _unit; @@ -75,4 +79,4 @@ _loaded = _vehicle getvariable [QGVAR(loaded_persons),[]]; _loaded = _loaded - [_unit]; _vehicle setvariable [QGVAR(loaded_persons),_loaded,true]; -true \ No newline at end of file +true diff --git a/addons/disarming/functions/fnc_eventCallerFinish.sqf b/addons/disarming/functions/fnc_eventCallerFinish.sqf index bc48a26b70..7f270173e8 100644 --- a/addons/disarming/functions/fnc_eventCallerFinish.sqf +++ b/addons/disarming/functions/fnc_eventCallerFinish.sqf @@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"]; if (_caller != ACE_player) exitWith {}; systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg]; -diag_log text format ["[ACE_Disarming] %1 - eventCallerFinish: %2", ACE_time, _this]; +ACE_LOGINFO(format ["%1 - eventCallerFinish: %2", ACE_time, _this]); diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index b9fb461356..a43592def1 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -22,6 +22,6 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { - diag_log text format ["[ACE_Disarming] %1 - eventTargetFinish: %2", ACE_time, _this]; + ACE_LOGINFO(format ["%1 - eventTargetFinish: %2", ACE_time, _this]); ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); }; diff --git a/addons/explosives/functions/fnc_module.sqf b/addons/explosives/functions/fnc_module.sqf index c74c73e679..6764e9bea4 100644 --- a/addons/explosives/functions/fnc_module.sqf +++ b/addons/explosives/functions/fnc_module.sqf @@ -23,4 +23,4 @@ params ["_logic"]; [_logic, QGVAR(PunishNonSpecialists),"PunishNonSpecialists"] call EFUNC(Common,readSettingFromModule); [_logic, QGVAR(ExplodeOnDefuse),"ExplodeOnDefuse"] call EFUNC(Common,readSettingFromModule); -diag_log text "[ACE]: Explosive Module Initialized."; +ACE_LOGINFO("Explosive Module Initialized."); diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 544566b4c6..d414c40a6d 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -36,7 +36,7 @@ if (!isNull _setupPlaceholderObject) then { }; if (isNil "_triggerConfig") exitWith { - diag_log format ["ACE_Explosives: Error config not passed to PlaceExplosive: %1", _this]; + ACE_LOGERROR(format ["Config not passed to PlaceExplosive: %1", _this]); objNull }; @@ -44,7 +44,7 @@ _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Trigge _triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig; if (isNil "_triggerConfig") exitWith { - diag_log format ["ACE_Explosives: Error config not found in PlaceExplosive: %1", _this]; + ACE_LOGERROR(format ["Config not found in PlaceExplosive: %1", _this]); objNull }; diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index a5a5472e1b..3f9a4834d1 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -1,6 +1,6 @@ //fnc_doSpall.sqf #include "script_component.hpp" -// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; +// ACE_player sideChat "WAAAAAAAAAAAAAAAAAAAAA"; private ["_hitData", "_initialData", "_hpData", "_object", "_foundObjects", "_index", "_foundObjecsts", "_roundType", "_round", "_caliber", "_explosive", "_idh", "_alive", "_exit", "_vm", "_velocity", "_oldVelocity", "_curVelocity", "_diff", "_polar", "_unitDir", "_spallPos", "_pos1", "_i", "_pos2", "_blah", "_data", "_spallPolar", "_warn", "_c", "_m", "_k", "_gC", "_fragPower", "_fragTypes", "_spread", "_spallCount", "_elev", "_dir", "_vel", "_spallFragVect", "_fragType", "_fragment", "_pos"]; @@ -86,7 +86,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then { if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]; //TODO: turn this off when we get closer to release + ACE_LOGWARNING(format ["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index e8d0f0ffa6..e775b423cf 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -67,7 +67,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C"); if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - diag_log text format["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]; //TODO: turn this off when we get closer to release + ACE_LOGWARNING(format ["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; @@ -187,9 +187,9 @@ if(_isArmed && (count _objects) > 0) then { _sectorOffset = 360 * (_i - 1) / (_randomCount max 1); _randomDir = random(_sectorSize); _vec = [cos(_sectorOffset + _randomDir), sin(_sectorOffset + _randomDir), sin(30 - (random 45))]; - + _fp = (_fragPower-(random (_fragPowerRandom))); - + _vel = _vec vectorMultiply _fp; _fragType = round (random ((count _fragTypes)-1)); @@ -197,7 +197,7 @@ if(_isArmed && (count _objects) > 0) then { _fragObj setPosASL _lastPos; _fragObj setVectorDir _vec; _fragObj setVelocity _vel; - + if(GVAR(traceFrags)) then { GVAR(TOTALFRAGS) = GVAR(TOTALFRAGS) + 1; [ACE_player, _fragObj, [1,0.5,0,1]] call FUNC(addTrack); @@ -205,7 +205,7 @@ if(_isArmed && (count _objects) > 0) then { _fragCount = _fragCount + 1; }; }; - + }; // #ifdef DEBUG_MODE_FULL // ACE_player sideChat format["total frags: %1", GVAR(TOTALFRAGS)]; diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 6ec0af0231..0c720ba278 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -21,4 +21,4 @@ if ((_logic getVariable "DisableEarRinging") != -1) then { [_logic, QGVAR(DisableEarRinging), "DisableEarRinging"] call EFUNC(common,readSettingFromModule); }; -diag_log text "[ACE]: Hearing Module Initialized."; +ACE_LOGINFO("Hearing Module Initialized."); diff --git a/addons/interact_menu/functions/fnc_addActionToClass.sqf b/addons/interact_menu/functions/fnc_addActionToClass.sqf index 4d300d35a2..5befbd8427 100644 --- a/addons/interact_menu/functions/fnc_addActionToClass.sqf +++ b/addons/interact_menu/functions/fnc_addActionToClass.sqf @@ -44,7 +44,7 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then { _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); if (isNil {_parentNode}) exitWith { ERROR("Failed to add action"); - diag_log text format ["action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum]; + ACE_LOGERROR(format ["action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum]); }; // Add action node as children of the correct node of action tree diff --git a/addons/interaction/functions/fnc_moduleInteraction.sqf b/addons/interaction/functions/fnc_moduleInteraction.sqf index bd02093aa0..4d6ef3f1c0 100644 --- a/addons/interaction/functions/fnc_moduleInteraction.sqf +++ b/addons/interaction/functions/fnc_moduleInteraction.sqf @@ -26,4 +26,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(EnableTeamManagement), "EnableTeamManagement"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Interaction Module Initialized."; +ACE_LOGINFO("Interaction Module Initialized."); diff --git a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf index 10d5f1e1b6..690d38ce49 100644 --- a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf +++ b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf @@ -1,9 +1,9 @@ // This is a debug function for displaying visible lasers for ourselves #include "script_component.hpp" -diag_log text format["[ACE]: Laser Emitter Dump"]; +ACE_LOGINFO("Laser Emitter Dump"); -{ - diag_log text format[" %1", _x]; - diag_log text format[" %2", HASH_GET(GVAR(laserEmitters), _x)]; -} forEach GVAR(laserEmitters) select 0; \ No newline at end of file +{ + ACE_LOGINFO(format[" %1", _x]); + ACE_LOGINFO(format[" %2", HASH_GET(GVAR(laserEmitters), _x)]); +} forEach GVAR(laserEmitters) select 0; diff --git a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf index 99549ec18f..d52cb1237c 100644 --- a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf +++ b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf @@ -84,6 +84,6 @@ switch (_currentWeaponType) do { if (!_error) then { [_description, _picture] call EFUNC(common,displayTextPicture); } else { - diag_log text format ["Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer]; + ACE_LOGERROR(format ["Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer]); }; playSound "ACE_Sound_Click"; diff --git a/addons/map/functions/fnc_blueForceTrackingModule.sqf b/addons/map/functions/fnc_blueForceTrackingModule.sqf index bab776c9ab..f4477bd1c5 100644 --- a/addons/map/functions/fnc_blueForceTrackingModule.sqf +++ b/addons/map/functions/fnc_blueForceTrackingModule.sqf @@ -22,5 +22,5 @@ if !(_activated) exitWith {}; [_logic, QGVAR(BFT_Interval), "Interval"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(BFT_HideAiGroups), "HideAiGroups"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Blue Force Tracking Module initialized."; +ACE_LOGINFO("Blue Force Tracking Module Initialized."); TRACE_2("[ACE]: Blue Force Tracking Module initialized.", GVAR(BFT_Interval), GVAR(BFT_HideAiGroups)); diff --git a/addons/map/functions/fnc_moduleMap.sqf b/addons/map/functions/fnc_moduleMap.sqf index b763db7eea..b7db6996d6 100644 --- a/addons/map/functions/fnc_moduleMap.sqf +++ b/addons/map/functions/fnc_moduleMap.sqf @@ -23,4 +23,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(mapLimitZoom), "MapLimitZoom" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(mapShowCursorCoordinates), "MapShowCursorCoordinates"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Map Module Initialized."; +ACE_LOGINFO("Map Module Initialized."); diff --git a/addons/maptools/functions/fnc_handleMouseZChanged.sqf b/addons/maptools/functions/fnc_handleMouseZChanged.sqf index 35626238e5..0af86a81c5 100644 --- a/addons/maptools/functions/fnc_handleMouseZChanged.sqf +++ b/addons/maptools/functions/fnc_handleMouseZChanged.sqf @@ -17,8 +17,6 @@ private ["_dir", "_params", "_control", "_button", "_screenPos", "_shiftKey", "_ _control = _this select 0; _dir = _this select 1; -diag_log "Scroll"; -diag_log _this; _handled = false; _handled = true; diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index f9f821eeb3..d3bcc4559e 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -284,7 +284,7 @@ if (USE_WOUND_EVENT_SYNC) then { if (hasInterface) then { ["PlayerJip", { - diag_log format["[ACE] JIP Medical init for player"]; + ACE_LOGINFO("JIP Medical init for player."); [player] call FUNC(init); }] call EFUNC(common,addEventHandler); }; diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf index 9299611d3b..4d4d576c52 100644 --- a/addons/nametags/functions/fnc_initIsSpeaking.sqf +++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf @@ -38,14 +38,14 @@ if (!hasInterface) exitWith {}; if (isClass (configFile >> "cfgPatches" >> "acre_api")) then { - diag_log text format ["[ACE_nametags] - ACRE Detected"]; + ACE_LOGINFO("ACRE Detected."); DFUNC(isSpeaking) = { params ["_unit"]; (([_unit] call acre_api_fnc_isSpeaking) || {[ACE_player] call acre_api_fnc_isBroadcasting}) && {!(_unit getVariable ["ACE_isUnconscious", false])} }; } else { if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then { - diag_log text format ["[ACE_nametags] - TFR Detected"]; + ACE_LOGINFO("TFR Detected."); DFUNC(isSpeaking) = { params ["_unit"]; (_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])} diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf index 1b209cb32a..079e4aa704 100644 --- a/addons/nametags/functions/fnc_moduleNameTags.sqf +++ b/addons/nametags/functions/fnc_moduleNameTags.sqf @@ -33,4 +33,4 @@ if ((_logic getVariable "showVehicleCrewInfo") != -1) then { [_logic, QGVAR(showVehicleCrewInfo), "showVehicleCrewInfo" ] call EFUNC(common,readSettingFromModule); }; -diag_log text "[ACE]: NameTags Module Initialized."; +ACE_LOGINFO("Nametags Module Initialized."); diff --git a/addons/overheating/functions/fnc_cooldown.sqf b/addons/overheating/functions/fnc_cooldown.sqf index 8fb0e0127b..0a6f93ee0f 100644 --- a/addons/overheating/functions/fnc_cooldown.sqf +++ b/addons/overheating/functions/fnc_cooldown.sqf @@ -39,7 +39,7 @@ while {true} do { if (_temperature < 1) exitWith {0}; if (isNil "_temperature") exitWith { - diag_log text format ["[ACE] ERROR: _totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]; + ACE_LOGERROR(format ["_totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]); 0 }; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index 9d5110d330..519cac00f0 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -27,8 +27,6 @@ if !(hasInterface) exitWith {}; // Listen for attempts to link ammo ["linkedAmmo", { EXPLODE_3_PVT(_this,_receiver,_giver,_magazine); - diag_log "linkedAmmo"; - diag_log _this; private ["_magazineCfg","_magazineType"]; _magazineType = currentMagazine _receiver; @@ -62,8 +60,6 @@ if !(hasInterface) exitWith {}; // Listen for returned magazines ["returnedAmmo", { EXPLODE_3_PVT(_this,_receiver,_giver,_magazine); - diag_log "returnedAmmo"; - diag_log _this; _receiver addMagazine _magazine; }] call EFUNC(common,addEventhandler); diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf index 0a0e35c06e..88f038e447 100644 --- a/addons/repair/functions/fnc_addRepairActions.sqf +++ b/addons/repair/functions/fnc_addRepairActions.sqf @@ -110,7 +110,7 @@ if (_type in _initializedClasses) exitWith {}; if (typeName _position == "STRING") exitWith { _selection = _vehicle selectionPosition _position; // Selection name }; - diag_log text format ["[ACE] ERROR: Invalid custom position %1 of hitpoint %2 in vehicle %3", _position, _hitpoint, _vehicle]; + ACE_LOGERROR(format ["Invalid custom position %1 of hitpoint %2 in vehicle %3.", _position, _hitpoint, _vehicle]); }; } forEach (getArray _customSelectionsConfig); }; diff --git a/addons/repair/functions/fnc_moduleRepairSettings.sqf b/addons/repair/functions/fnc_moduleRepairSettings.sqf index 3b97d2f168..a0fc93d259 100644 --- a/addons/repair/functions/fnc_moduleRepairSettings.sqf +++ b/addons/repair/functions/fnc_moduleRepairSettings.sqf @@ -31,4 +31,4 @@ if (!isServer) exitWith {}; [_logic, QGVAR(fullRepairLocation), "fullRepairLocation"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(engineerSetting_fullRepair), "engineerSetting_fullRepair"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Repair Module Initialized."; +ACE_LOGINFO("Repair Module Initialized."); diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf index 2ef158a419..bb295a1809 100644 --- a/addons/respawn/functions/fnc_initRallypoint.sqf +++ b/addons/respawn/functions/fnc_initRallypoint.sqf @@ -1,15 +1,15 @@ /* Name: ACE_Respawn_fnc_initRallypoint - + Author(s): commy2 - + Description: init code for rally points - + Parameters: 0: OBJECT - rally - + Returns: VOID */ @@ -26,9 +26,9 @@ if (hasInterface) then { // fix init having wrong position, vars etc. [_rallypoint, _respawnMarker, _side, _name] spawn { PARAMS_4(_rallypoint,_respawnMarker,_side,_name); - + private ["_marker", "_type"]; - + _marker = format ["ACE_Marker_%1", _name]; // exit if it already exist @@ -65,5 +65,5 @@ if (isNil _name) then { } else { deleteVehicle _rallypoint; - diag_log text "[ACE] Respawn: ERROR Multiple Rallypoints of same type."; + ACE_LOGERROR("Multiple Rallypoints of same type."); }; diff --git a/addons/respawn/functions/fnc_module.sqf b/addons/respawn/functions/fnc_module.sqf index 3f1ef89a1f..8921c75f54 100644 --- a/addons/respawn/functions/fnc_module.sqf +++ b/addons/respawn/functions/fnc_module.sqf @@ -18,7 +18,7 @@ #include "script_component.hpp" -PARAMS_3(_logic,_units,_activated); +PARAMS_3(_logic,_units,_activated); if !(isServer) exitWith {}; @@ -45,4 +45,4 @@ if (isServer) then { }; }; -diag_log text "[ACE]: Respawn Module Initialized."; +ACE_LOGINFO("Respawn Module Initialized."); diff --git a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf index 7641db806d..2d81372e85 100644 --- a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf +++ b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf @@ -1,17 +1,17 @@ /* Name: ACE_Respawn_fnc_moduleFriendlyFire - + Author(s): commy2 - + Description: initializes the Friendly Fire Messages module - + Parameters: 0: OBJECT - logic 1: ARRAY - synced units 2: BOOLEAN - activated - + Returns: VOID */ @@ -19,7 +19,7 @@ #include "script_component.hpp" _this spawn { - PARAMS_3(_logic,_units,_activated); + PARAMS_3(_logic,_units,_activated); if !(_activated) exitWith {}; @@ -28,5 +28,5 @@ _this spawn { publicVariable QGVAR(showFriendlyFireMessage); }; - diag_log text "[ACE]: Friendly Fire Messages Module Initialized."; + ACE_LOGINFO("Friendly Fire Messages Module Initialized."); }; diff --git a/addons/respawn/functions/fnc_moduleRallypoint.sqf b/addons/respawn/functions/fnc_moduleRallypoint.sqf index 15c415027d..86a83bf061 100644 --- a/addons/respawn/functions/fnc_moduleRallypoint.sqf +++ b/addons/respawn/functions/fnc_moduleRallypoint.sqf @@ -1,17 +1,17 @@ /* Name: ACE_Respawn_fnc_moduleRallypoint - + Author(s): commy2 - + Description: initializes the Rallypoint module - + Parameters: 0: OBJECT - logic 1: ARRAY - synced units 2: BOOLEAN - activated - + Returns: VOID */ @@ -26,4 +26,4 @@ if !(_activated) exitWith {}; _x setVariable ["ACE_canMoveRallypoint", true]; } forEach _units; -diag_log text "[ACE]: Rallypoint Module Initialized."; +ACE_LOGINFO("Rallypoint Module Initialized."); diff --git a/addons/sitting/functions/fnc_moduleInit.sqf b/addons/sitting/functions/fnc_moduleInit.sqf index ae476317db..c21d92afbb 100644 --- a/addons/sitting/functions/fnc_moduleInit.sqf +++ b/addons/sitting/functions/fnc_moduleInit.sqf @@ -22,4 +22,4 @@ if (!_activated) exitWith {}; [_logic, QGVAR(enable), "enable"] call EFUNC(common,readSettingFromModule); -diag_log text "[ACE]: Sitting Module Initialized."; +ACE_LOGINFO("Sitting Module Initialized."); diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 665b954496..5c91a3fa10 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -25,7 +25,7 @@ params ["_objects", "_controllers", "_images", "_names", "_duration"]; // Verify data if (count _images != count _names || {count _images == 0} || {count _names == 0}) exitWith { - diag_log "[ACE] ERROR: Slideshow Images or Names fields can NOT be empty and must have equal number of items!" + ACE_LOGERROR("Slideshow Images or Names fields can NOT be empty and must have equal number of items!"); }; // Objects synced to the module @@ -56,7 +56,7 @@ _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets change // If interaction menu module is not present, set default duration value if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { _duration = 5; - diag_log text format ["[ACE]: Slideshow: Interaction Menu module not present, defaulting duration value to %1", _duration]; + ACE_LOGINFO(format ["Interaction Menu module not present, defaulting duration value to %1", _duration]); }; // Add interactions if automatic transitions are disabled, else setup automatic transitions diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index da1724dfcc..e887e58915 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -34,4 +34,4 @@ _duration = _logic getVariable ["Duration", 0]; // Prepare with actions [_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow); -diag_log text format ["[ACE]: Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration]; +ACE_LOGINFO(format ["Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration]); diff --git a/addons/switchunits/functions/fnc_module.sqf b/addons/switchunits/functions/fnc_module.sqf index ec9164a866..3b8cea4037 100644 --- a/addons/switchunits/functions/fnc_module.sqf +++ b/addons/switchunits/functions/fnc_module.sqf @@ -35,4 +35,4 @@ GVAR(Module) = true; [QGVAR(EnableSwitchUnits), true, false, true] call EFUNC(common,setSetting); -diag_log text "[ACE]: SwitchUnits Module Initialized."; +ACE_LOGINFO("Switch Unit Module Initialized."); diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 912242f373..3150d56908 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -20,10 +20,10 @@ if (!isServer) exitWith {}; params ["_logic", "_units", "_activated"]; if (!_activated) exitWith { - diag_log text "[ACE]: View Distance Limit Module is placed but NOT active."; + ACE_LOGWARNING("View Distance Limit Module is placed but NOT active."); }; [_logic, QGVAR(enabled),"moduleViewDistanceEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(limitViewDistance),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -diag_log format ["[ACE]: View Distance Limit Module Initialized. Limit set by module: %1",GVAR(limitViewDistance)]; +ACE_LOGINFO(format ["View Distance Limit Module Initialized. Limit set by module: %1", GVAR(limitViewDistance)]); From 097506076f9e25feb00ec171944fb10daef544d4 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 26 Aug 2015 16:48:55 +0200 Subject: [PATCH 135/620] Fixed format usage in macros requiring ARR_# for it to work --- addons/common/XEH_postInit.sqf | 2 +- addons/common/functions/fnc__handleNetEvent.sqf | 8 ++++---- addons/common/functions/fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_addToInventory.sqf | 2 +- addons/common/functions/fnc_cachedCall.sqf | 6 +++--- addons/common/functions/fnc_checkFiles.sqf | 4 ++-- addons/common/functions/fnc_doAnimation.sqf | 2 +- addons/common/functions/fnc_executePersistent.sqf | 2 +- addons/common/functions/fnc_filter.sqf | 2 +- addons/common/functions/fnc_getMapGridData.sqf | 8 ++++---- addons/common/functions/fnc_loadSettingsLocalizedText.sqf | 2 +- addons/common/functions/fnc_localEvent.sqf | 8 ++++---- addons/common/functions/fnc_map.sqf | 2 +- addons/common/functions/fnc_moduleCheckPBOs.sqf | 2 +- addons/common/functions/fnc_removeSyncedEventHandler.sqf | 2 +- addons/common/functions/fnc_serverEvent.sqf | 4 ++-- addons/common/functions/fnc_targetEvent.sqf | 4 ++-- addons/common/functions/fnc_unloadPersonLocal.sqf | 4 ++-- addons/disarming/functions/fnc_eventCallerFinish.sqf | 2 +- addons/disarming/functions/fnc_eventTargetFinish.sqf | 2 +- addons/explosives/functions/fnc_placeExplosive.sqf | 4 ++-- addons/frag/functions/fnc_doSpall.sqf | 2 +- addons/frag/functions/fnc_frago.sqf | 2 +- addons/interact_menu/functions/fnc_addActionToClass.sqf | 2 +- .../laserpointer/functions/fnc_switchLaserLightMode.sqf | 2 +- addons/overheating/functions/fnc_cooldown.sqf | 2 +- addons/repair/functions/fnc_addRepairActions.sqf | 2 +- addons/slideshow/functions/fnc_createSlideshow.sqf | 2 +- addons/slideshow/functions/fnc_moduleInit.sqf | 2 +- addons/viewdistance/functions/fnc_initModule.sqf | 2 +- 30 files changed, 46 insertions(+), 46 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 60d1101e6b..97c54945e8 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -40,7 +40,7 @@ ["HeadbugFixUsed", { PARAMS_2(_profileName,_animation); - ACE_LOGINFO(format ["Headbug Used: Name: %1, Animation: %2", _profileName, _animation]); + ACE_LOGINFO(format [ARR_3("Headbug Used: Name: %1, Animation: %2", _profileName, _animation)]); }] call FUNC(addEventHandler); diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index 0203b5da0c..516be7c666 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -18,15 +18,15 @@ if (_eventType == "ACEg") then { _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS - ACE_LOGINFO(format ["* Net Event %1", _eventName]); - ACE_LOGINFO(format [" args=%1", _eventArgs]); + ACE_LOGINFO(format [ARR_2("* Net Event %1", _eventName)]); + ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); #endif { if (!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format ["Net Event %1 ID: %2", _eventName, _forEachIndex]); + _eventArgs call CALLSTACK_NAMED(_x, format [ARR_3("Net Event %1 ID: %2", _eventName, _forEachIndex)]); #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO(format [" ID: %1", _forEachIndex]); + ACE_LOGINFO(format [ARR_2(" ID: %1", _forEachIndex)]); #endif }; } forEach _events; diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index 2a0fd471a0..f94c2c76fe 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -42,7 +42,7 @@ if(isServer) then { _eventArgs = _x select 1; [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent); } forEach _eventLog; - ACE_LOGINFO(format ["[%1] synchronized", _eventName]); + ACE_LOGINFO(format [ARR_2("[%1] synchronized", _eventName)]); }; true diff --git a/addons/common/functions/fnc_addToInventory.sqf b/addons/common/functions/fnc_addToInventory.sqf index 0ee8455d70..dec3384dee 100644 --- a/addons/common/functions/fnc_addToInventory.sqf +++ b/addons/common/functions/fnc_addToInventory.sqf @@ -88,7 +88,7 @@ switch ((_type select 0)) do { }; }; default { - ACE_LOGWARNING(format ["Incorrect item type passed to %1, passed: %2", QFUNC(AddToInventory), _type]); + ACE_LOGWARNING(format [ARR_3("Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type)]); }; }; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 2b08d81c05..ad58fb3cb7 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -40,7 +40,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { private ["_varName","_cacheList"]; // _eventName is defined on the function that calls the event #ifdef DEBUG_MODE_FULL - ACE_LOGINFO(format ["Clear cached variables on event: %1", _eventName]); + ACE_LOGINFO(format [ARR_2("Clear cached variables on event: %1", _eventName)]); #endif // Get the list of caches to clear _varName = format [QGVAR(clearCache_%1),_eventName]; @@ -58,9 +58,9 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { _cacheList pushBack [_namespace, _uid]; }; #ifdef DEBUG_MODE_FULL - ACE_LOGINFO(format ["Calculated result: %1 %2", _namespace, _uid]); + ACE_LOGINFO(format [ARR_3("Calculated result: %1 %2", _namespace, _uid)]); } else { - ACE_LOGINFO(format ["Cached result: %1 %2", _namespace, _uid]); + ACE_LOGINFO(format [ARR_3("Cached result: %1 %2", _namespace, _uid)]); #endif }; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index c6dcff242e..5d29420402 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -17,7 +17,7 @@ private "_version"; _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); -ACE_LOGINFO(format ["ACE is version %1.", _version]); +ACE_LOGINFO(format [ARR_2("ACE is version %1.", _version)]); private "_addons"; _addons = activatedAddons; @@ -51,7 +51,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); }; } else { // Print the current extension version - ACE_LOGINFO(format ["Extension version: %1: %2", _x, (_x callExtension "version")]); + ACE_LOGINFO(format [ARR_3("Extension version: %1: %2", _x, (_x callExtension "version"))]); }; } forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index 9588460ba1..e3fd5265ba 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -23,7 +23,7 @@ _force = False; // no animation given if (isNil "_animation") exitWith { - ACE_LOGERROR(format ["No animation specified in %1.", _fnc_scriptNameParent]); + ACE_LOGERROR(format [ARR_2("No animation specified in %1.", _fnc_scriptNameParent)]); }; if (isNil "_priority") then { diff --git a/addons/common/functions/fnc_executePersistent.sqf b/addons/common/functions/fnc_executePersistent.sqf index af32efb434..1f9da6cd12 100644 --- a/addons/common/functions/fnc_executePersistent.sqf +++ b/addons/common/functions/fnc_executePersistent.sqf @@ -5,7 +5,7 @@ PARAMS_1(_target); { if (isNil "_x") then { - ACE_LOGERROR(format ["No argument and function for remote function. ID: %1", _forEachIndex]); + ACE_LOGERROR(format [ARR_2("No argument and function for remote function. ID: %1", _forEachIndex)]); } else { if (typeName _x == "ARRAY") then { [_x select 0, _target] call (_x select 1); diff --git a/addons/common/functions/fnc_filter.sqf b/addons/common/functions/fnc_filter.sqf index 783a1338e8..06080d046a 100644 --- a/addons/common/functions/fnc_filter.sqf +++ b/addons/common/functions/fnc_filter.sqf @@ -20,7 +20,7 @@ private ["_newArray", "_index"]; PARAMS_2(_array,_code); if (isNil "_array") exitWith { - ACE_LOGERROR(format ["No array for function filter in %1.", _fnc_scriptNameParent]); + ACE_LOGERROR(format [ARR_2("No array for function filter in %1.", _fnc_scriptNameParent)]); [] }; diff --git a/addons/common/functions/fnc_getMapGridData.sqf b/addons/common/functions/fnc_getMapGridData.sqf index c264b6fd50..d831253713 100644 --- a/addons/common/functions/fnc_getMapGridData.sqf +++ b/addons/common/functions/fnc_getMapGridData.sqf @@ -44,7 +44,7 @@ _letterGrid = false; if (((toLower _formatX) find "a") != -1) then {_letterGrid = true}; if (((toLower _formatY) find "a") != -1) then {_letterGrid = true}; if (_letterGrid) exitWith { - ACE_LOGWARNING(format ["Map Grid Warning (%1) - Map uses letter grids [%2, %3]", worldName, _formatX, _formatY]); + ACE_LOGWARNING(format [ARR_4("Map Grid Warning (%1) - Map uses letter grids [%2, %3]", worldName, _formatX, _formatY)]); }; //Start at [0, 500] and move north until we get a change in grid @@ -64,13 +64,13 @@ _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5); _stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5); if (_stepYat5 < 0) then { - ACE_LOGWARNING(format ["Map Grid Warning (%1) - Northing is reversed.", worldName]); + ACE_LOGWARNING(format [ARR_2("Map Grid Warning (%1) - Northing is reversed.", worldName)]); }; if (_stepXat5 != 1) then { - ACE_LOGWARNING(format ["Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.", worldName, _stepXat5]); + ACE_LOGWARNING(format [ARR_3("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.", worldName, _stepXat5)]); }; if ((_stepYat5 != 1) && {_stepYat5 != -1}) then { - ACE_LOGWARNING(format ["Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.", worldName, _stepXat5]); + ACE_LOGWARNING(format [ARR_3("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.", worldName, _stepXat5)]); }; GVAR(mapGridData) = [_offsetX, _realOffsetY, _stepXat5, _stepYat5]; diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 1d41d2991a..742ed7a6bd 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -42,7 +42,7 @@ _parseConfigForDisplayNames = { if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then { if !([missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { - ACE_LOGWARNING(format ["Setting found, but couldn't localize [%1] (server has but we don't?)", _name]); + ACE_LOGWARNING(format [ARR_2("Setting found, but couldn't localize [%1] (server has but we don't?)", _name)]); }; }; }; diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index b6b6bef5a9..88ff3c11aa 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -21,15 +21,15 @@ _eventIndex = _eventNames find _eventName; if(_eventIndex != -1) then { _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS - ACE_LOGINFO(format ["* Local Event: %1", _eventName]); - ACE_LOGINFO(format [" args=%1", _eventArgs]); + ACE_LOGINFO(format [ARR_2("* Local Event: %1", _eventName)]); + ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); #endif { if(!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format ["Local Event %1 ID: %2", _eventName, _forEachIndex]); + _eventArgs call CALLSTACK_NAMED(_x, format [ARR_3("Local Event %1 ID: %2", _eventName, _forEachIndex)]); #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO(format [" ID: %1", _forEachIndex]); + ACE_LOGINFO(format [ARR_2(" ID: %1", _forEachIndex)]); #endif }; } forEach _events; diff --git a/addons/common/functions/fnc_map.sqf b/addons/common/functions/fnc_map.sqf index 455a19e2f7..53e5b39fe9 100644 --- a/addons/common/functions/fnc_map.sqf +++ b/addons/common/functions/fnc_map.sqf @@ -21,7 +21,7 @@ _array = + _this select 0; _code = _this select 1; if (isNil "_array") exitWith { - ACE_LOGERROR(format ["No array for function map in %1.", _fnc_scriptNameParent]); + ACE_LOGERROR(format [ARR_2("No array for function map in %1.", _fnc_scriptNameParent)]); [] }; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index bc87ff6fc5..496a857698 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -22,4 +22,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); -ACE_LOGINFO(format ["Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction)]); +ACE_LOGINFO(format [ARR_2("Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction))]); diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf index 7202ec00b9..924bb0aa25 100644 --- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf @@ -16,7 +16,7 @@ PARAMS_1(_name); private ["_data", "_eventId"]; if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { - ACE_LOGERROR(format ["Synced event key not found."]); + ACE_LOGERROR("Synced event key not found."); false }; diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf index f3118c481b..6bc056dd6f 100644 --- a/addons/common/functions/fnc_serverEvent.sqf +++ b/addons/common/functions/fnc_serverEvent.sqf @@ -16,8 +16,8 @@ PARAMS_2(_eventName,_eventArgs); #ifdef DEBUG_EVENTS - ACE_LOGINFO(format ["* Server Event: %1", _eventName]); - ACE_LOGINFO(format [" args=%1", _eventArgs]); + ACE_LOGINFO(format [ARR_2("* Server Event: %1", _eventName)]); + ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); #endif ACEg = [_eventName, _eventArgs]; diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf index 1e4fed1a4e..3653cc4669 100644 --- a/addons/common/functions/fnc_targetEvent.sqf +++ b/addons/common/functions/fnc_targetEvent.sqf @@ -21,8 +21,8 @@ PARAMS_3(_eventName,_eventTargets,_eventArgs); #ifdef DEBUG_EVENTS - ACE_LOGINFO(format ["* Target Event: %1 - %2", _eventName, _eventTargets]); - ACE_LOGINFO(format [" args=%1", _eventArgs]); + ACE_LOGINFO(format [ARR_3("* Target Event: %1 - %2", _eventName, _eventTargets)]); + ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); #endif ACEc = [_eventName, _eventTargets, _eventArgs]; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index fadb276670..49646fa38a 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -38,12 +38,12 @@ if (_vehicle isKindOf "Ship" ) then { TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle); if (!_validVehiclestate) exitwith { - ACE_LOGWARNING(format ["Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle]); + ACE_LOGWARNING(format [ARR_5("Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle)]); false }; if (count _emptyPos == 0) exitwith { - ACE_LOGWARNING(format ["No safe empty spots to unload patient. %1", _emptyPos]); + ACE_LOGWARNING(format [ARR_2("No safe empty spots to unload patient. %1", _emptyPos)]); false }; //consider displaying text saying there are no safe places to exit the vehicle diff --git a/addons/disarming/functions/fnc_eventCallerFinish.sqf b/addons/disarming/functions/fnc_eventCallerFinish.sqf index 7f270173e8..13e4e50921 100644 --- a/addons/disarming/functions/fnc_eventCallerFinish.sqf +++ b/addons/disarming/functions/fnc_eventCallerFinish.sqf @@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"]; if (_caller != ACE_player) exitWith {}; systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg]; -ACE_LOGINFO(format ["%1 - eventCallerFinish: %2", ACE_time, _this]); +ACE_LOGINFO(format [ARR_3("%1 - eventCallerFinish: %2", ACE_time, _this)]); diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index a43592def1..a887eb8092 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -22,6 +22,6 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { - ACE_LOGINFO(format ["%1 - eventTargetFinish: %2", ACE_time, _this]); + ACE_LOGINFO(format [ARR_3("%1 - eventTargetFinish: %2", ACE_time, _this)]); ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); }; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index d414c40a6d..40ca6a3900 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -36,7 +36,7 @@ if (!isNull _setupPlaceholderObject) then { }; if (isNil "_triggerConfig") exitWith { - ACE_LOGERROR(format ["Config not passed to PlaceExplosive: %1", _this]); + ACE_LOGERROR(format [ARR_2("Config not passed to PlaceExplosive: %1",_this)]); objNull }; @@ -44,7 +44,7 @@ _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Trigge _triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig; if (isNil "_triggerConfig") exitWith { - ACE_LOGERROR(format ["Config not found in PlaceExplosive: %1", _this]); + ACE_LOGERROR(format [ARR_2("Config not found in PlaceExplosive: %1",_this)]); objNull }; diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index 3f9a4834d1..1f6b813a8a 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -86,7 +86,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then { if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - ACE_LOGWARNING(format ["Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType]); //TODO: turn this off when we get closer to release + ACE_LOGWARNING(format [ARR_2("Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType)]); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index e775b423cf..15ffe4d97d 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -67,7 +67,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C"); if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - ACE_LOGWARNING(format ["Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType]); //TODO: turn this off when we get closer to release + ACE_LOGWARNING(format [ARR_2("Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType)]); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; diff --git a/addons/interact_menu/functions/fnc_addActionToClass.sqf b/addons/interact_menu/functions/fnc_addActionToClass.sqf index 5befbd8427..55b300fe7f 100644 --- a/addons/interact_menu/functions/fnc_addActionToClass.sqf +++ b/addons/interact_menu/functions/fnc_addActionToClass.sqf @@ -44,7 +44,7 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then { _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); if (isNil {_parentNode}) exitWith { ERROR("Failed to add action"); - ACE_LOGERROR(format ["action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum]); + ACE_LOGERROR(format [ARR_5("action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum)]); }; // Add action node as children of the correct node of action tree diff --git a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf index d52cb1237c..4b1b45b75c 100644 --- a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf +++ b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf @@ -84,6 +84,6 @@ switch (_currentWeaponType) do { if (!_error) then { [_description, _picture] call EFUNC(common,displayTextPicture); } else { - ACE_LOGERROR(format ["Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer]); + ACE_LOGERROR(format [ARR_4("Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer)]); }; playSound "ACE_Sound_Click"; diff --git a/addons/overheating/functions/fnc_cooldown.sqf b/addons/overheating/functions/fnc_cooldown.sqf index 0a6f93ee0f..934c9a0abc 100644 --- a/addons/overheating/functions/fnc_cooldown.sqf +++ b/addons/overheating/functions/fnc_cooldown.sqf @@ -39,7 +39,7 @@ while {true} do { if (_temperature < 1) exitWith {0}; if (isNil "_temperature") exitWith { - ACE_LOGERROR(format ["_totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime]); + ACE_LOGERROR(format [ARR_4("_totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime)]); 0 }; diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf index 88f038e447..a6ecde45a9 100644 --- a/addons/repair/functions/fnc_addRepairActions.sqf +++ b/addons/repair/functions/fnc_addRepairActions.sqf @@ -110,7 +110,7 @@ if (_type in _initializedClasses) exitWith {}; if (typeName _position == "STRING") exitWith { _selection = _vehicle selectionPosition _position; // Selection name }; - ACE_LOGERROR(format ["Invalid custom position %1 of hitpoint %2 in vehicle %3.", _position, _hitpoint, _vehicle]); + ACE_LOGERROR(format [ARR_4("Invalid custom position %1 of hitpoint %2 in vehicle %3.", _position, _hitpoint, _vehicle)]); }; } forEach (getArray _customSelectionsConfig); }; diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 5c91a3fa10..96089dc986 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -56,7 +56,7 @@ _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets change // If interaction menu module is not present, set default duration value if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { _duration = 5; - ACE_LOGINFO(format ["Interaction Menu module not present, defaulting duration value to %1", _duration]); + ACE_LOGINFO(format [ARR_2("Interaction Menu module not present, defaulting duration value to %1", _duration)]); }; // Add interactions if automatic transitions are disabled, else setup automatic transitions diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index e887e58915..0e205a7530 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -34,4 +34,4 @@ _duration = _logic getVariable ["Duration", 0]; // Prepare with actions [_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow); -ACE_LOGINFO(format ["Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration]); +ACE_LOGINFO(format [ARR_3("Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration)]); diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 3150d56908..948fd56ef1 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -26,4 +26,4 @@ if (!_activated) exitWith { [_logic, QGVAR(enabled),"moduleViewDistanceEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(limitViewDistance),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -ACE_LOGINFO(format ["View Distance Limit Module Initialized. Limit set by module: %1", GVAR(limitViewDistance)]); +ACE_LOGINFO(format [ARR_2("View Distance Limit Module Initialized. Limit set by module: %1", GVAR(limitViewDistance))]); From c0379c78097cc233baf72da9df063f9bc645aef5 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 17:02:29 +0200 Subject: [PATCH 136/620] Updated with correct cargo events and settings category --- addons/repair/ACE_Settings.hpp | 2 +- addons/repair/functions/fnc_addSpareParts.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index 9116ff61ef..9dbcd21731 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -66,6 +66,6 @@ class ACE_Settings { description = CSTRING(addSpareParts_description); typeName = "BOOL"; value = 1; - category = CSTRING(categoryName); + category = ECSTRING(OptionsMenu,CategoryLogistics); }; }; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 4ec01a6cc1..c7366b27ba 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -42,4 +42,4 @@ if (_part == "") then { if (_part == "") exitWith {}; // Load -["AddCargoItem", [_part, _vehicle, _amount]] call EFUNC(common,localEvent); +["AddCargoByClass", [_part, _vehicle, _amount]] call EFUNC(common,localEvent); From 5047d4de1c49a3c88c3f830fa1f9b6a28b9adc32 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 26 Aug 2015 17:39:44 +0200 Subject: [PATCH 137/620] Switched to ACE_LOG_# variation --- addons/common/XEH_postInit.sqf | 2 +- addons/common/functions/fnc__handleNetEvent.sqf | 6 +++--- addons/common/functions/fnc__handleRequestSyncedEvent.sqf | 2 +- addons/common/functions/fnc_addToInventory.sqf | 2 +- addons/common/functions/fnc_cachedCall.sqf | 6 +++--- addons/common/functions/fnc_checkFiles.sqf | 4 ++-- addons/common/functions/fnc_doAnimation.sqf | 2 +- addons/common/functions/fnc_executePersistent.sqf | 2 +- addons/common/functions/fnc_filter.sqf | 2 +- addons/common/functions/fnc_getMapGridData.sqf | 8 ++++---- addons/common/functions/fnc_loadSettingsLocalizedText.sqf | 2 +- addons/common/functions/fnc_localEvent.sqf | 8 ++++---- addons/common/functions/fnc_map.sqf | 2 +- addons/common/functions/fnc_moduleCheckPBOs.sqf | 2 +- addons/common/functions/fnc_readSettingFromModule.sqf | 2 +- addons/common/functions/fnc_serverEvent.sqf | 4 ++-- addons/common/functions/fnc_targetEvent.sqf | 4 ++-- addons/common/functions/fnc_unloadPersonLocal.sqf | 4 ++-- addons/disarming/functions/fnc_eventCallerFinish.sqf | 2 +- addons/disarming/functions/fnc_eventTargetFinish.sqf | 2 +- addons/explosives/functions/fnc_placeExplosive.sqf | 4 ++-- addons/frag/functions/fnc_doSpall.sqf | 2 +- addons/frag/functions/fnc_frago.sqf | 2 +- addons/interact_menu/functions/fnc_addActionToClass.sqf | 2 +- addons/laser/functions/fnc_drawVisibleLaserTargets.sqf | 4 ++-- .../laserpointer/functions/fnc_switchLaserLightMode.sqf | 2 +- addons/overheating/functions/fnc_cooldown.sqf | 2 +- addons/repair/functions/fnc_addRepairActions.sqf | 2 +- addons/slideshow/functions/fnc_createSlideshow.sqf | 2 +- addons/slideshow/functions/fnc_moduleInit.sqf | 2 +- addons/viewdistance/functions/fnc_initModule.sqf | 2 +- 31 files changed, 47 insertions(+), 47 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 97c54945e8..00831b60f5 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -40,7 +40,7 @@ ["HeadbugFixUsed", { PARAMS_2(_profileName,_animation); - ACE_LOGINFO(format [ARR_3("Headbug Used: Name: %1, Animation: %2", _profileName, _animation)]); + ACE_LOGINFO_2("Headbug Used: Name: %1, Animation: %2",_profileName,_animation); }] call FUNC(addEventHandler); diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index 516be7c666..b83501bc42 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -18,15 +18,15 @@ if (_eventType == "ACEg") then { _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS - ACE_LOGINFO(format [ARR_2("* Net Event %1", _eventName)]); - ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); + ACE_LOGINFO_1("* Net Event %1",_eventName); + ACE_LOGINFO_1(" args=%1",_eventArgs); #endif { if (!isNil "_x") then { _eventArgs call CALLSTACK_NAMED(_x, format [ARR_3("Net Event %1 ID: %2", _eventName, _forEachIndex)]); #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO(format [ARR_2(" ID: %1", _forEachIndex)]); + ACE_LOGINFO_1(" ID: %1",_forEachIndex); #endif }; } forEach _events; diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index f94c2c76fe..b93347b8d8 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -42,7 +42,7 @@ if(isServer) then { _eventArgs = _x select 1; [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent); } forEach _eventLog; - ACE_LOGINFO(format [ARR_2("[%1] synchronized", _eventName)]); + ACE_LOGINFO_1("[%1] synchronized",_eventName); }; true diff --git a/addons/common/functions/fnc_addToInventory.sqf b/addons/common/functions/fnc_addToInventory.sqf index dec3384dee..05fc2ca48f 100644 --- a/addons/common/functions/fnc_addToInventory.sqf +++ b/addons/common/functions/fnc_addToInventory.sqf @@ -88,7 +88,7 @@ switch ((_type select 0)) do { }; }; default { - ACE_LOGWARNING(format [ARR_3("Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type)]); + ACE_LOGWARNING_2("Incorrect item type passed to %1, passed: %2",QFUNC(AddToInventory),_type); }; }; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index ad58fb3cb7..e093f44393 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -40,7 +40,7 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { private ["_varName","_cacheList"]; // _eventName is defined on the function that calls the event #ifdef DEBUG_MODE_FULL - ACE_LOGINFO(format [ARR_2("Clear cached variables on event: %1", _eventName)]); + ACE_LOGINFO_1("Clear cached variables on event: %1",_eventName); #endif // Get the list of caches to clear _varName = format [QGVAR(clearCache_%1),_eventName]; @@ -58,9 +58,9 @@ if (((_namespace getVariable [_uid, [-99999]]) select 0) < ACE_diagTime) then { _cacheList pushBack [_namespace, _uid]; }; #ifdef DEBUG_MODE_FULL - ACE_LOGINFO(format [ARR_3("Calculated result: %1 %2", _namespace, _uid)]); + ACE_LOGINFO_2("Calculated result: %1 %2",_namespace,_uid); } else { - ACE_LOGINFO(format [ARR_3("Cached result: %1 %2", _namespace, _uid)]); + ACE_LOGINFO_2("Cached result: %1 %2",_namespace,_uid); #endif }; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 5d29420402..68f134ab5b 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -17,7 +17,7 @@ private "_version"; _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); -ACE_LOGINFO(format [ARR_2("ACE is version %1.", _version)]); +ACE_LOGINFO_1("ACE is version %1.",_version); private "_addons"; _addons = activatedAddons; @@ -51,7 +51,7 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); }; } else { // Print the current extension version - ACE_LOGINFO(format [ARR_3("Extension version: %1: %2", _x, (_x callExtension "version"))]); + ACE_LOGINFO_2("Extension version: %1: %2",_x,(_x callExtension "version")); }; } forEach getArray (configFile >> "ACE_Extensions" >> "extensions"); diff --git a/addons/common/functions/fnc_doAnimation.sqf b/addons/common/functions/fnc_doAnimation.sqf index e3fd5265ba..81301ce1dc 100644 --- a/addons/common/functions/fnc_doAnimation.sqf +++ b/addons/common/functions/fnc_doAnimation.sqf @@ -23,7 +23,7 @@ _force = False; // no animation given if (isNil "_animation") exitWith { - ACE_LOGERROR(format [ARR_2("No animation specified in %1.", _fnc_scriptNameParent)]); + ACE_LOGERROR_1("No animation specified in %1.",_fnc_scriptNameParent); }; if (isNil "_priority") then { diff --git a/addons/common/functions/fnc_executePersistent.sqf b/addons/common/functions/fnc_executePersistent.sqf index 1f9da6cd12..bbc4e91ea7 100644 --- a/addons/common/functions/fnc_executePersistent.sqf +++ b/addons/common/functions/fnc_executePersistent.sqf @@ -5,7 +5,7 @@ PARAMS_1(_target); { if (isNil "_x") then { - ACE_LOGERROR(format [ARR_2("No argument and function for remote function. ID: %1", _forEachIndex)]); + ACE_LOGERROR_1("No argument and function for remote function. ID: %1",_forEachIndex); } else { if (typeName _x == "ARRAY") then { [_x select 0, _target] call (_x select 1); diff --git a/addons/common/functions/fnc_filter.sqf b/addons/common/functions/fnc_filter.sqf index 06080d046a..3d84d9d3a2 100644 --- a/addons/common/functions/fnc_filter.sqf +++ b/addons/common/functions/fnc_filter.sqf @@ -20,7 +20,7 @@ private ["_newArray", "_index"]; PARAMS_2(_array,_code); if (isNil "_array") exitWith { - ACE_LOGERROR(format [ARR_2("No array for function filter in %1.", _fnc_scriptNameParent)]); + ACE_LOGERROR_1("No array for function filter in %1.",_fnc_scriptNameParent); [] }; diff --git a/addons/common/functions/fnc_getMapGridData.sqf b/addons/common/functions/fnc_getMapGridData.sqf index d831253713..838b753e91 100644 --- a/addons/common/functions/fnc_getMapGridData.sqf +++ b/addons/common/functions/fnc_getMapGridData.sqf @@ -44,7 +44,7 @@ _letterGrid = false; if (((toLower _formatX) find "a") != -1) then {_letterGrid = true}; if (((toLower _formatY) find "a") != -1) then {_letterGrid = true}; if (_letterGrid) exitWith { - ACE_LOGWARNING(format [ARR_4("Map Grid Warning (%1) - Map uses letter grids [%2, %3]", worldName, _formatX, _formatY)]); + ACE_LOGWARNING_3("Map Grid Warning (%1) - Map uses letter grids [%2, %3]",worldName,_formatX,_formatY); }; //Start at [0, 500] and move north until we get a change in grid @@ -64,13 +64,13 @@ _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5); _stepYat5 = -1 * _stepY * 10 ^ ((count _formatY) - 5); if (_stepYat5 < 0) then { - ACE_LOGWARNING(format [ARR_2("Map Grid Warning (%1) - Northing is reversed.", worldName)]); + ACE_LOGWARNING_1("Map Grid Warning (%1) - Northing is reversed.",worldName); }; if (_stepXat5 != 1) then { - ACE_LOGWARNING(format [ARR_3("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.", worldName, _stepXat5)]); + ACE_LOGWARNING_2("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for x.",worldName,_stepXat5); }; if ((_stepYat5 != 1) && {_stepYat5 != -1}) then { - ACE_LOGWARNING(format [ARR_3("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.", worldName, _stepXat5)]); + ACE_LOGWARNING_2("Map Grid Warning (%1) - MGRS 10 digit grid does not equal 1 meter: (%2) for y.",worldName,_stepXat5); }; GVAR(mapGridData) = [_offsetX, _realOffsetY, _stepXat5, _stepYat5]; diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 742ed7a6bd..25a67b6079 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -42,7 +42,7 @@ _parseConfigForDisplayNames = { if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then { if !([missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then { - ACE_LOGWARNING(format [ARR_2("Setting found, but couldn't localize [%1] (server has but we don't?)", _name)]); + ACE_LOGWARNING_1("Setting found, but couldn't localize [%1] (server has but we don't?)",_name); }; }; }; diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index 88ff3c11aa..fb0cbaf40f 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -21,15 +21,15 @@ _eventIndex = _eventNames find _eventName; if(_eventIndex != -1) then { _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS - ACE_LOGINFO(format [ARR_2("* Local Event: %1", _eventName)]); - ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); + ACE_LOGINFO_1("* Local Event: %1",_eventName); + ACE_LOGINFO_1(" args=%1",_eventArgs); #endif { if(!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format [ARR_3("Local Event %1 ID: %2", _eventName, _forEachIndex)]); + _eventArgs call CALLSTACK_NAMED(_x, FORMAT_2("Local Event %1 ID: %2",_eventName,_forEachIndex)); #ifdef DEBUG_EVENTS_CALLSTACK - ACE_LOGINFO(format [ARR_2(" ID: %1", _forEachIndex)]); + ACE_LOGINFO_1(" ID: %1",_forEachIndex); #endif }; } forEach _events; diff --git a/addons/common/functions/fnc_map.sqf b/addons/common/functions/fnc_map.sqf index 53e5b39fe9..bca205e34a 100644 --- a/addons/common/functions/fnc_map.sqf +++ b/addons/common/functions/fnc_map.sqf @@ -21,7 +21,7 @@ _array = + _this select 0; _code = _this select 1; if (isNil "_array") exitWith { - ACE_LOGERROR(format [ARR_2("No array for function map in %1.", _fnc_scriptNameParent)]); + ACE_LOGERROR_1("No array for function map in %1.",_fnc_scriptNameParent); [] }; diff --git a/addons/common/functions/fnc_moduleCheckPBOs.sqf b/addons/common/functions/fnc_moduleCheckPBOs.sqf index 496a857698..0288badf2d 100644 --- a/addons/common/functions/fnc_moduleCheckPBOs.sqf +++ b/addons/common/functions/fnc_moduleCheckPBOs.sqf @@ -22,4 +22,4 @@ if !(_activated) exitWith {}; [_logic, QGVAR(checkPBOsCheckAll), "CheckAll" ] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(checkPBOsWhitelist), "Whitelist" ] call EFUNC(common,readSettingFromModule); -ACE_LOGINFO(format [ARR_2("Check-PBOs Module Initialized. Mode: %1.", GVAR(checkPBOsAction))]); +ACE_LOGINFO_1("Check-PBOs Module Initialized. Mode: %1.",GVAR(checkPBOsAction)); diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index b037224d19..843ac2ba8f 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -20,7 +20,7 @@ PARAMS_3(_logic,_settingName,_moduleVariable); // Check if the parameter is defined in the module if (isNil {_logic getVariable _moduleVariable}) exitWith { - ACE_LOGWARNING(format["Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.", typeOf _logic, _moduleVariable]); + ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable]); }; // Set the setting globally and force it diff --git a/addons/common/functions/fnc_serverEvent.sqf b/addons/common/functions/fnc_serverEvent.sqf index 6bc056dd6f..4a9960c197 100644 --- a/addons/common/functions/fnc_serverEvent.sqf +++ b/addons/common/functions/fnc_serverEvent.sqf @@ -16,8 +16,8 @@ PARAMS_2(_eventName,_eventArgs); #ifdef DEBUG_EVENTS - ACE_LOGINFO(format [ARR_2("* Server Event: %1", _eventName)]); - ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); + ACE_LOGINFO_1("* Server Event: %1",_eventName); + ACE_LOGINFO_1(" args=%1",_eventArgs); #endif ACEg = [_eventName, _eventArgs]; diff --git a/addons/common/functions/fnc_targetEvent.sqf b/addons/common/functions/fnc_targetEvent.sqf index 3653cc4669..75023a38b5 100644 --- a/addons/common/functions/fnc_targetEvent.sqf +++ b/addons/common/functions/fnc_targetEvent.sqf @@ -21,8 +21,8 @@ PARAMS_3(_eventName,_eventTargets,_eventArgs); #ifdef DEBUG_EVENTS - ACE_LOGINFO(format [ARR_3("* Target Event: %1 - %2", _eventName, _eventTargets)]); - ACE_LOGINFO(format [ARR_2(" args=%1", _eventArgs)]); + ACE_LOGINFO_2("* Target Event: %1 - %2",_eventName,_eventTargets); + ACE_LOGINFO_1(" args=%1",_eventArgs); #endif ACEc = [_eventName, _eventTargets, _eventArgs]; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index 49646fa38a..150ea8c500 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -38,12 +38,12 @@ if (_vehicle isKindOf "Ship" ) then { TRACE_1("getPosASL Vehicle Check", getPosASL _vehicle); if (!_validVehiclestate) exitwith { - ACE_LOGWARNING(format [ARR_5("Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4", _vehicle, getPos _vehicle, isTouchingGround _vehicle, speed _vehicle)]); + ACE_LOGWARNING_4("Unable to unload patient because invalid (%1) vehicle state. Either moving or Not close enough on the ground. position: %2 isTouchingGround: %3 Speed: %4",_vehicle,getPos _vehicle,isTouchingGround _vehicle,speed _vehicle); false }; if (count _emptyPos == 0) exitwith { - ACE_LOGWARNING(format [ARR_2("No safe empty spots to unload patient. %1", _emptyPos)]); + ACE_LOGWARNING_1("No safe empty spots to unload patient. %1",_emptyPos); false }; //consider displaying text saying there are no safe places to exit the vehicle diff --git a/addons/disarming/functions/fnc_eventCallerFinish.sqf b/addons/disarming/functions/fnc_eventCallerFinish.sqf index 13e4e50921..e1376f4052 100644 --- a/addons/disarming/functions/fnc_eventCallerFinish.sqf +++ b/addons/disarming/functions/fnc_eventCallerFinish.sqf @@ -23,4 +23,4 @@ params ["_caller", "_target", "_errorMsg"]; if (_caller != ACE_player) exitWith {}; systemChat format ["Debug-Caller: Disarm finished from [%1] with code [%2]", _target, _errorMsg]; -ACE_LOGINFO(format [ARR_3("%1 - eventCallerFinish: %2", ACE_time, _this)]); +ACE_LOGINFO_2("%1 - eventCallerFinish: %2",ACE_time,_this); diff --git a/addons/disarming/functions/fnc_eventTargetFinish.sqf b/addons/disarming/functions/fnc_eventTargetFinish.sqf index a887eb8092..b7364a8f40 100644 --- a/addons/disarming/functions/fnc_eventTargetFinish.sqf +++ b/addons/disarming/functions/fnc_eventTargetFinish.sqf @@ -22,6 +22,6 @@ params ["_caller", "_target", "_errorMsg"]; if (_errorMsg != "") then { - ACE_LOGINFO(format [ARR_3("%1 - eventTargetFinish: %2", ACE_time, _this)]); + ACE_LOGINFO_2("%1 - eventTargetFinish: %2",ACE_time,_this); ["DisarmDebugCallback", [_caller], [_caller, _target, _errorMsg]] call EFUNC(common,targetEvent); }; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 40ca6a3900..5e4999b1f4 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -36,7 +36,7 @@ if (!isNull _setupPlaceholderObject) then { }; if (isNil "_triggerConfig") exitWith { - ACE_LOGERROR(format [ARR_2("Config not passed to PlaceExplosive: %1",_this)]); + ACE_LOGERROR_1("Config not passed to PlaceExplosive: %1",_this); objNull }; @@ -44,7 +44,7 @@ _magazineTrigger = ConfigFile >> "CfgMagazines" >> _magazineClass >> "ACE_Trigge _triggerConfig = ConfigFile >> "ACE_Triggers" >> _triggerConfig; if (isNil "_triggerConfig") exitWith { - ACE_LOGERROR(format [ARR_2("Config not found in PlaceExplosive: %1",_this)]); + ACE_LOGERROR_1("Config not found in PlaceExplosive: %1",_this); objNull }; diff --git a/addons/frag/functions/fnc_doSpall.sqf b/addons/frag/functions/fnc_doSpall.sqf index 1f6b813a8a..57b5d330c7 100644 --- a/addons/frag/functions/fnc_doSpall.sqf +++ b/addons/frag/functions/fnc_doSpall.sqf @@ -86,7 +86,7 @@ if(_alive || {_caliber >= 2.5} || {(_explosive > 0 && {_idh >= 1})}) then { if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - ACE_LOGWARNING(format [ARR_2("Ammo class %1 lacks proper explosive properties definitions for frag!", _roundType)]); //TODO: turn this off when we get closer to release + ACE_LOGWARNING_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_roundType); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; diff --git a/addons/frag/functions/fnc_frago.sqf b/addons/frag/functions/fnc_frago.sqf index 15ffe4d97d..3507a7ab6e 100644 --- a/addons/frag/functions/fnc_frago.sqf +++ b/addons/frag/functions/fnc_frago.sqf @@ -67,7 +67,7 @@ _gC = getNumber(configFile >> "CfgAmmo" >> _shellType >> "ACE_frag_GURNEY_C"); if(_gC == 0) then { _gC = 2440; _warn = true;}; if(_warn) then { - ACE_LOGWARNING(format [ARR_2("Ammo class %1 lacks proper explosive properties definitions for frag!", _shellType)]); //TODO: turn this off when we get closer to release + ACE_LOGWARNING_1("Ammo class %1 lacks proper explosive properties definitions for frag!",_shellType); //TODO: turn this off when we get closer to release }; _fragPower = (((_m/_c)+_k)^-(1/2))*_gC; diff --git a/addons/interact_menu/functions/fnc_addActionToClass.sqf b/addons/interact_menu/functions/fnc_addActionToClass.sqf index 55b300fe7f..f720903a6d 100644 --- a/addons/interact_menu/functions/fnc_addActionToClass.sqf +++ b/addons/interact_menu/functions/fnc_addActionToClass.sqf @@ -44,7 +44,7 @@ if (_parentPath isEqualTo ["ACE_MainActions"]) then { _parentNode = [_actionTrees, _parentPath] call FUNC(findActionNode); if (isNil {_parentNode}) exitWith { ERROR("Failed to add action"); - ACE_LOGERROR(format [ARR_5("action (%1) to parent %2 on object %3 [%4]", (_action select 0), _parentPath, _objectType, _typeNum)]); + ACE_LOGERROR_4("action (%1) to parent %2 on object %3 [%4]",(_action select 0),_parentPath,_objectType,_typeNum); }; // Add action node as children of the correct node of action tree diff --git a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf index 690d38ce49..8cdb497267 100644 --- a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf +++ b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf @@ -4,6 +4,6 @@ ACE_LOGINFO("Laser Emitter Dump"); { - ACE_LOGINFO(format[" %1", _x]); - ACE_LOGINFO(format[" %2", HASH_GET(GVAR(laserEmitters), _x)]); + ACE_LOGINFO_1(" %1", _x); + ACE_LOGINFO_1(" %1",HASH_GET(GVAR(laserEmitters),_x)); } forEach GVAR(laserEmitters) select 0; diff --git a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf index 4b1b45b75c..3332631c49 100644 --- a/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf +++ b/addons/laserpointer/functions/fnc_switchLaserLightMode.sqf @@ -84,6 +84,6 @@ switch (_currentWeaponType) do { if (!_error) then { [_description, _picture] call EFUNC(common,displayTextPicture); } else { - ACE_LOGERROR(format [ARR_4("Failed to add %1 to %2 - reverting to %3", _nextPointer, _weapon, _pointer)]); + ACE_LOGERROR_3("Failed to add %1 to %2 - reverting to %3",_nextPointer,_weapon,_pointer); }; playSound "ACE_Sound_Click"; diff --git a/addons/overheating/functions/fnc_cooldown.sqf b/addons/overheating/functions/fnc_cooldown.sqf index 934c9a0abc..9e54d35b56 100644 --- a/addons/overheating/functions/fnc_cooldown.sqf +++ b/addons/overheating/functions/fnc_cooldown.sqf @@ -39,7 +39,7 @@ while {true} do { if (_temperature < 1) exitWith {0}; if (isNil "_temperature") exitWith { - ACE_LOGERROR(format [ARR_4("_totalTime = %1; _time = %2; _deltaTime = %3;", _totalTime, _time, _deltaTime)]); + ACE_LOGERROR_3("_totalTime = %1; _time = %2; _deltaTime = %3;",_totalTime,_time,_deltaTime); 0 }; diff --git a/addons/repair/functions/fnc_addRepairActions.sqf b/addons/repair/functions/fnc_addRepairActions.sqf index a6ecde45a9..9cd89838ae 100644 --- a/addons/repair/functions/fnc_addRepairActions.sqf +++ b/addons/repair/functions/fnc_addRepairActions.sqf @@ -110,7 +110,7 @@ if (_type in _initializedClasses) exitWith {}; if (typeName _position == "STRING") exitWith { _selection = _vehicle selectionPosition _position; // Selection name }; - ACE_LOGERROR(format [ARR_4("Invalid custom position %1 of hitpoint %2 in vehicle %3.", _position, _hitpoint, _vehicle)]); + ACE_LOGERROR_3("Invalid custom position %1 of hitpoint %2 in vehicle %3.",_position,_hitpoint,_vehicle); }; } forEach (getArray _customSelectionsConfig); }; diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 96089dc986..9b7209ad60 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -56,7 +56,7 @@ _currentSlideshow = GVAR(slideshows); // Local variable in case GVAR gets change // If interaction menu module is not present, set default duration value if !(["ace_interact_menu"] call EFUNC(common,isModLoaded)) then { _duration = 5; - ACE_LOGINFO(format [ARR_2("Interaction Menu module not present, defaulting duration value to %1", _duration)]); + ACE_LOGINFO_1("Interaction Menu module not present, defaulting duration value to %1",_duration); }; // Add interactions if automatic transitions are disabled, else setup automatic transitions diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index 0e205a7530..901d1aa10e 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -34,4 +34,4 @@ _duration = _logic getVariable ["Duration", 0]; // Prepare with actions [_objects, _controllers, _images, _names, _duration] call FUNC(createSlideshow); -ACE_LOGINFO(format [ARR_3("Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration)]); +ACE_LOGINFO_2("Slideshow Module Initialized for: %1 with Duration: %2", _objects, _duration); diff --git a/addons/viewdistance/functions/fnc_initModule.sqf b/addons/viewdistance/functions/fnc_initModule.sqf index 948fd56ef1..47cf27025e 100644 --- a/addons/viewdistance/functions/fnc_initModule.sqf +++ b/addons/viewdistance/functions/fnc_initModule.sqf @@ -26,4 +26,4 @@ if (!_activated) exitWith { [_logic, QGVAR(enabled),"moduleViewDistanceEnabled"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(limitViewDistance),"moduleViewDistanceLimit"] call EFUNC(common,readSettingFromModule); -ACE_LOGINFO(format [ARR_2("View Distance Limit Module Initialized. Limit set by module: %1", GVAR(limitViewDistance))]); +ACE_LOGINFO_1("View Distance Limit Module Initialized. Limit set by module: %1",GVAR(limitViewDistance)); From 3dc3331d87b3147a1d67b6a87a73bda9e8ad9522 Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 26 Aug 2015 17:45:17 +0200 Subject: [PATCH 138/620] Replaced rogue format with FORMAT_# --- addons/common/functions/fnc__handleNetEvent.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index b83501bc42..921f2a08f6 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -24,7 +24,7 @@ if (_eventType == "ACEg") then { { if (!isNil "_x") then { - _eventArgs call CALLSTACK_NAMED(_x, format [ARR_3("Net Event %1 ID: %2", _eventName, _forEachIndex)]); + _eventArgs call CALLSTACK_NAMED(_x, FORMAT_2("Net Event %1 ID: %2",_eventName,_forEachIndex); #ifdef DEBUG_EVENTS_CALLSTACK ACE_LOGINFO_1(" ID: %1",_forEachIndex); #endif From 36aeb61d815cdfedbeb97b6dce9f349c4d33855c Mon Sep 17 00:00:00 2001 From: Michael Braun Date: Wed, 26 Aug 2015 17:51:56 +0200 Subject: [PATCH 139/620] Fixed error caused by closing square bracket --- addons/common/functions/fnc_readSettingFromModule.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_readSettingFromModule.sqf b/addons/common/functions/fnc_readSettingFromModule.sqf index 843ac2ba8f..545a93deba 100644 --- a/addons/common/functions/fnc_readSettingFromModule.sqf +++ b/addons/common/functions/fnc_readSettingFromModule.sqf @@ -20,7 +20,7 @@ PARAMS_3(_logic,_settingName,_moduleVariable); // Check if the parameter is defined in the module if (isNil {_logic getVariable _moduleVariable}) exitWith { - ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable]); + ACE_LOGWARNING_2("Warning in %1 module: %2 setting is missing. Probably an obsolete version of the module is used in the mission.",typeOf _logic,_moduleVariable); }; // Set the setting globally and force it From b3838262f1c916fc49002f86c98576cdd5e404d3 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 21:33:55 +0200 Subject: [PATCH 140/620] Fixed duplicated part of DE readme --- documentation/README_DE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/documentation/README_DE.md b/documentation/README_DE.md index f70562e389..a6c333eb42 100644 --- a/documentation/README_DE.md +++ b/documentation/README_DE.md @@ -18,8 +18,7 @@ ACE3 License

-

Benötigt eine Aktuelle Version von CBA A3 | BIF thread

-

Requires the latest version of CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

+

Benötigt eine Aktuelle Version von CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

**ACE3** ist ein Gemeinschaftsprojekt der sich zusammengeschlossenen Moddinggruppen von **ACE2**, **AGM** und **CSE** mit dem Ziel den Realismus und die Spieltiefe von Arma 3 zu steigern. From 23f8bbaca17f6529eaf24fee1fc910424858c064 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 21:34:51 +0200 Subject: [PATCH 141/620] Improved german langauge --- documentation/README_DE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/README_DE.md b/documentation/README_DE.md index a6c333eb42..be47583c03 100644 --- a/documentation/README_DE.md +++ b/documentation/README_DE.md @@ -18,7 +18,7 @@ ACE3 License

-

Benötigt eine Aktuelle Version von CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

+

Benötigt die aktuellste Version von CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

**ACE3** ist ein Gemeinschaftsprojekt der sich zusammengeschlossenen Moddinggruppen von **ACE2**, **AGM** und **CSE** mit dem Ziel den Realismus und die Spieltiefe von Arma 3 zu steigern. From 497199e5ed252042d62286ea475e83ee9a67012b Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 21:35:37 +0200 Subject: [PATCH 142/620] Changed CBA A3 link from Armaholic to GitHub --- README.md | 2 +- documentation/README_DE.md | 2 +- documentation/README_PL.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 827e7d2562..755eaceb30 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ ACE3 License

-

Requires the latest version of CBA A3. Visit us on Facebook | YouTube | Twitter | Reddit

+

Requires the latest version of CBA A3. Visit us on Facebook | YouTube | Twitter | Reddit

**ACE3** is a joint effort by the teams behind **ACE2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3. diff --git a/documentation/README_DE.md b/documentation/README_DE.md index be47583c03..23d54f9e35 100644 --- a/documentation/README_DE.md +++ b/documentation/README_DE.md @@ -18,7 +18,7 @@ ACE3 License

-

Benötigt die aktuellste Version von CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

+

Benötigt die aktuellste Version von CBA A3. Besucht uns auf Facebook | YouTube | Twitter | Reddit

**ACE3** ist ein Gemeinschaftsprojekt der sich zusammengeschlossenen Moddinggruppen von **ACE2**, **AGM** und **CSE** mit dem Ziel den Realismus und die Spieltiefe von Arma 3 zu steigern. diff --git a/documentation/README_PL.md b/documentation/README_PL.md index 56a9c72caa..3fbeb31664 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -18,7 +18,7 @@ ACE3 Licencja

-

Wymaga najnowszej wersji CBA A3. Odwiedź nas na Facebook | YouTube | Twitter | Reddit

+

Wymaga najnowszej wersji CBA A3. Odwiedź nas na Facebook | YouTube | Twitter | Reddit

**ACE3** to efekt wspólnego wysiłku grup moderów odpowiedzialnych za **ACE2**, **AGM** oraz **CSE** w celu zwiększenia realizmu i autentyczności Arma 3. From 6d27299883141e48f60b23c66bbaa2a5881e6f94 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 26 Aug 2015 23:43:06 +0200 Subject: [PATCH 143/620] Cleaned up spare parts collection after SettingsInitialized, Check if vehicle already in collection --- addons/repair/XEH_postInit.sqf | 5 ++++- addons/repair/functions/fnc_addSpareParts.sqf | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index d61f20a31e..7095b0bfd0 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -10,12 +10,15 @@ if (isServer) then { ["SettingsInitialized", { GVAR(settingInitted) = true; // Stop collecting in FUNC(addSpareParts) - // Exit if adding spare parts disabled + // Exit if adding spare parts disabled and clean collection if (!GVAR(addSpareParts)) exitWith {GVAR(addSparePartsCollection) = nil}; // Add spare parts to vehicles in collection { [_x] call FUNC(addSpareParts); } forEach GVAR(addSparePartsCollection); + + // Clean collection + GVAR(addSparePartsCollection) = nil; }] call EFUNC(common,addEventHandler); }; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index c7366b27ba..6dfbb49bc0 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -27,7 +27,9 @@ if !(["ace_cargo"] call EFUNC(common,isModLoaded)) exitWith {}; // Collect until SettingsInitialized if (isNil QGVAR(settingInitted)) exitWith { - GVAR(addSparePartsCollection) pushBack _vehicle; + if !(_vehicle in GVAR(addSparePartsCollection)) then { + GVAR(addSparePartsCollection) pushBack _vehicle; + }; }; // Exit if not forced and add spare parts is disabled (after settings initted to make sure it really is) From 19a6226ced3e204e1474fea74f24e1fe418f35f2 Mon Sep 17 00:00:00 2001 From: bux578 Date: Fri, 28 Aug 2015 09:05:31 +0200 Subject: [PATCH 144/620] add Hearing Protection to Helmets with Peltors --- addons/hearing/CfgWeapons.hpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/addons/hearing/CfgWeapons.hpp b/addons/hearing/CfgWeapons.hpp index 2806ef9970..7c21baaed2 100644 --- a/addons/hearing/CfgWeapons.hpp +++ b/addons/hearing/CfgWeapons.hpp @@ -47,5 +47,16 @@ class CfgWeapons { GVAR(lowerVolume) = 0.60; }; class H_Cap_marshal: H_Cap_headphones {}; -}; + class H_HelmetB_light: H_HelmetB { + GVAR(protection) = 0.8; + GVAR(lowerVolume) = 0.20; + }; + + class H_HelmetB_plain_mcamo; + class H_HelmetSpecB: H_HelmetB_plain_mcamo { + GVAR(protection) = 0.8; + GVAR(lowerVolume) = 0.20; + }; + +}; From 326911486143316fa08938046745a619dca3570f Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 28 Aug 2015 11:55:32 +0200 Subject: [PATCH 145/620] Fix Tactical Ladder Animation Clipping --- .../data/ace_tacticalladder.p3d | Bin 2100184 -> 2115464 bytes addons/tacticalladder/data/model.cfg | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/tacticalladder/data/ace_tacticalladder.p3d b/addons/tacticalladder/data/ace_tacticalladder.p3d index a331f2408498f3c39bdb1aeea28d5433c70f212d..7bb924ff46e4ba8f2e454a9f674878e178f4238e 100644 GIT binary patch delta 211758 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

#e@{9Q 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

o6rqqE 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 TRus90t?imNoHC?h&;kDqf4eg4 diff --git a/addons/tacticalladder/data/model.cfg b/addons/tacticalladder/data/model.cfg index 1fc8840d4f..ba19d58c65 100644 --- a/addons/tacticalladder/data/model.cfg +++ b/addons/tacticalladder/data/model.cfg @@ -1,4 +1,4 @@ -class CfgSkeletons { +class CfgSkeletons { class Default { isDiscrete = 1; skeletonInherit = ""; @@ -21,7 +21,7 @@ class CfgSkeletons { "10","9", "11","10", "step","11" - }; + }; }; class OFP2_ManSkeleton { isDiscrete = 0; @@ -180,7 +180,7 @@ class CfgModels { class ace_tacticalladder { skeletonName = "ace_tacticalladder_skeleton"; sections[] = { "roadway" }; - sectionsInherit = ""; + sectionsInherit = ""; class Animations { class rotate { type = "rotation"; @@ -192,7 +192,7 @@ class CfgModels { maxValue = 90; angle0="rad 0"; angle1="rad +90"; - }; + }; class extract_1 { type = "translation"; source = ""; @@ -280,4 +280,4 @@ class CfgModels { }; class ace_tacticalladder_pack: ArmaMan { }; -}; \ No newline at end of file +}; From a83a5a17a3862f65966ef7dc633fb01d070cd799 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 28 Aug 2015 13:15:21 +0200 Subject: [PATCH 146/620] Fix Issues --- addons/kestrel4500/XEH_preInit.sqf | 2 +- addons/kestrel4500/functions/fnc_dayOfWeek.sqf | 1 + addons/kestrel4500/functions/fnc_displayKestrel.sqf | 2 +- addons/kestrel4500/functions/fnc_updateMemory.sqf | 1 + addons/kestrel4500/script_component.hpp | 2 ++ 5 files changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/kestrel4500/XEH_preInit.sqf b/addons/kestrel4500/XEH_preInit.sqf index b89f07173f..b3f8ba755f 100644 --- a/addons/kestrel4500/XEH_preInit.sqf +++ b/addons/kestrel4500/XEH_preInit.sqf @@ -16,5 +16,5 @@ PREP(storeUserData); PREP(updateDisplay); PREP(updateImpellerState); PREP(updateMemory); -PREP(dayOfWeek) +PREP(dayOfWeek); ADDON = true; diff --git a/addons/kestrel4500/functions/fnc_dayOfWeek.sqf b/addons/kestrel4500/functions/fnc_dayOfWeek.sqf index 9e142f661c..f63a3969b0 100644 --- a/addons/kestrel4500/functions/fnc_dayOfWeek.sqf +++ b/addons/kestrel4500/functions/fnc_dayOfWeek.sqf @@ -15,6 +15,7 @@ * * Public: No */ +#include "script_component.hpp" private "_table"; params ["_year", "_month", "_day"]; diff --git a/addons/kestrel4500/functions/fnc_displayKestrel.sqf b/addons/kestrel4500/functions/fnc_displayKestrel.sqf index 770347ec71..64d06fea1c 100644 --- a/addons/kestrel4500/functions/fnc_displayKestrel.sqf +++ b/addons/kestrel4500/functions/fnc_displayKestrel.sqf @@ -102,7 +102,7 @@ GVAR(Overlay) = true; __ctrlInfoLine1 ctrlSetText _ctrlInfoLine1; __ctrlInfoLine2 ctrlSetText _ctrlInfoLine2; - __ctrlBottomBig ctrlSetText _ctrlBottomBig ; + __ctrlBottomBig ctrlSetText _ctrlBottomBig; __ctrlCenterLine1 ctrlSetText _ctrlCenterLine1; __ctrlCenterLine2 ctrlSetText _ctrlCenterLine2; diff --git a/addons/kestrel4500/functions/fnc_updateMemory.sqf b/addons/kestrel4500/functions/fnc_updateMemory.sqf index f38e9ee6df..c393aee14f 100644 --- a/addons/kestrel4500/functions/fnc_updateMemory.sqf +++ b/addons/kestrel4500/functions/fnc_updateMemory.sqf @@ -14,6 +14,7 @@ * * Public: No */ +#include "script_component.hpp" params ["_slot", "_value"]; GVAR(MIN) set [_slot, (GVAR(MIN) select _slot) min _value]; GVAR(MAX) set [_slot, _value max (GVAR(MAX) select _slot)]; diff --git a/addons/kestrel4500/script_component.hpp b/addons/kestrel4500/script_component.hpp index 90c338ebeb..e1a58dc1df 100644 --- a/addons/kestrel4500/script_component.hpp +++ b/addons/kestrel4500/script_component.hpp @@ -1,6 +1,8 @@ #define COMPONENT kestrel4500 #include "\z\ace\addons\main\script_mod.hpp" +#define DEBUG_ENABLED_KESTREL4500 + #ifdef DEBUG_ENABLED_KESTREL4500 #define DEBUG_MODE_FULL #endif From 1f602ea9a3c8a0e664b6cd4a56111d145c0a1b51 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Fri, 28 Aug 2015 13:17:29 +0200 Subject: [PATCH 147/620] disable Debug --- addons/kestrel4500/script_component.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/kestrel4500/script_component.hpp b/addons/kestrel4500/script_component.hpp index e1a58dc1df..90c338ebeb 100644 --- a/addons/kestrel4500/script_component.hpp +++ b/addons/kestrel4500/script_component.hpp @@ -1,8 +1,6 @@ #define COMPONENT kestrel4500 #include "\z\ace\addons\main\script_mod.hpp" -#define DEBUG_ENABLED_KESTREL4500 - #ifdef DEBUG_ENABLED_KESTREL4500 #define DEBUG_MODE_FULL #endif From 007859d42ea9a17f98a68d71e5385faae442971a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 28 Aug 2015 16:57:16 -0500 Subject: [PATCH 148/620] Attach - getin/out/killed event handlers (#2200 #2300) --- addons/attach/CfgEventHandlers.hpp | 21 +++++++++++ addons/attach/XEH_preInit.sqf | 3 ++ addons/attach/functions/fnc_attach.sqf | 22 ++++++------ addons/attach/functions/fnc_canAttach.sqf | 15 ++++---- addons/attach/functions/fnc_canDetach.sqf | 24 +++++-------- addons/attach/functions/fnc_detach.sqf | 32 +++++++---------- addons/attach/functions/fnc_handleGetIn.sqf | 38 ++++++++++++++++++++ addons/attach/functions/fnc_handleGetOut.sqf | 35 ++++++++++++++++++ addons/attach/functions/fnc_handleKilled.sqf | 33 +++++++++++++++++ addons/attach/functions/fnc_placeApprove.sqf | 13 +++---- 10 files changed, 176 insertions(+), 60 deletions(-) create mode 100644 addons/attach/functions/fnc_handleGetIn.sqf create mode 100644 addons/attach/functions/fnc_handleGetOut.sqf create mode 100644 addons/attach/functions/fnc_handleKilled.sqf diff --git a/addons/attach/CfgEventHandlers.hpp b/addons/attach/CfgEventHandlers.hpp index 3daad1425a..c050fbd1c7 100644 --- a/addons/attach/CfgEventHandlers.hpp +++ b/addons/attach/CfgEventHandlers.hpp @@ -8,3 +8,24 @@ class Extended_PostInit_EventHandlers { clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) ); }; }; +class Extended_GetIn_EventHandlers { + class All { + class ADDON { + getIn = QUOTE(_this call FUNC(handleGetIn)); + }; + }; +}; +class Extended_GetOut_EventHandlers { + class All { + class ADDON { + getOut = QUOTE(_this call FUNC(handleGetOut)); + }; + }; +}; +class Extended_Killed_EventHandlers { + class All { + class ADDON { + killed = QUOTE(_this call FUNC(handleKilled)); + }; + }; +}; diff --git a/addons/attach/XEH_preInit.sqf b/addons/attach/XEH_preInit.sqf index 06c6ed1b01..17b8490a77 100644 --- a/addons/attach/XEH_preInit.sqf +++ b/addons/attach/XEH_preInit.sqf @@ -7,6 +7,9 @@ PREP(canAttach); PREP(canDetach); PREP(detach); PREP(getChildrenAttachActions); +PREP(handleGetIn); +PREP(handleGetOut); +PREP(handleKilled); PREP(placeApprove); ADDON = true; diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf index bd363b1307..6362edb33c 100644 --- a/addons/attach/functions/fnc_attach.sqf +++ b/addons/attach/functions/fnc_attach.sqf @@ -17,15 +17,14 @@ */ #include "script_component.hpp" -private ["_itemVehClass", "_onAtachText", "_selfAttachPosition", "_attachedItem", "_tempObject", "_actionID", "_model"]; -params ["_attachToVehicle","_unit","_args"]; +params ["_attachToVehicle","_unit","_args", ["_silentScripted", false]]; _args params [["_itemClassname","", [""]]]; -TRACE_3("params",_attachToVehicle,_unit,_itemClassname); +TRACE_4("params",_attachToVehicle,_unit,_itemClassname,_silentScripted); + +private ["_itemVehClass", "_onAtachText", "_selfAttachPosition", "_attachedItem", "_tempObject", "_actionID", "_model"]; //Sanity Check (_unit has item in inventory, not over attach limit) -if ((_itemClassname == "") || {!(_this call FUNC(canAttach))}) exitWith {ERROR("Tried to attach, but check failed");}; - -_selfAttachPosition = [_unit, [-0.05, 0, 0.12], "rightshoulder"]; +if ((_itemClassname == "") || {(!_silentScripted) && {!(_this call FUNC(canAttach))}}) exitWith {ERROR("Tried to attach, but check failed");}; _itemVehClass = getText (configFile >> "CfgWeapons" >> _itemClassname >> "ACE_Attachable"); _onAtachText = getText (configFile >> "CfgWeapons" >> _itemClassname >> "displayName"); @@ -40,12 +39,13 @@ if (_itemVehClass == "") exitWith {ERROR("no ACE_Attachable for Item");}; _onAtachText = format [localize LSTRING(Item_Attached), _onAtachText]; if (_unit == _attachToVehicle) then { //Self Attachment - _unit removeItem _itemClassname; // Remove item _attachedItem = _itemVehClass createVehicle [0,0,0]; - _attachedItem attachTo _selfAttachPosition; - [_onAtachText] call EFUNC(common,displayTextStructured); - _attachToVehicle setVariable [QGVAR(Objects), [_attachedItem], true]; - _attachToVehicle setVariable [QGVAR(ItemNames), [_itemClassname], true]; + _attachedItem attachTo [_unit, [-0.05, 0, 0.12], "rightshoulder"]; + if (!_silentScripted) then { + _unit removeItem _itemClassname; // Remove item + [_onAtachText] call EFUNC(common,displayTextStructured); + }; + _unit setVariable [QGVAR(attached), [[_attachedItem, _itemClassname]], true]; } else { GVAR(placeAction) = PLACE_WAITING; diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf index 20a49c09be..37d92e8908 100644 --- a/addons/attach/functions/fnc_canAttach.sqf +++ b/addons/attach/functions/fnc_canAttach.sqf @@ -17,14 +17,17 @@ */ #include "script_component.hpp" -private ["_attachLimit", "_attachedObjects","_playerPos"]; params ["_attachToVehicle","_player","_args"]; _args params [["_itemClassname","", [""]]]; -TRACE_3("params",_attachToVehicle,_unit,_itemClassname); +TRACE_3("params",_attachToVehicle,_player,_itemClassname); + +private ["_attachLimit", "_attachedObjects"]; _attachLimit = [6, 1] select (_player == _attachToVehicle); -_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; +_attachedObjects = _attachToVehicle getVariable [QGVAR(attached), []]; -_playerPos = (ACE_player modelToWorldVisual (ACE_player selectionPosition "pilot")); - -(canStand _player) && {(_attachToVehicle distance _player) < 7} && {alive _attachToVehicle} && {(count _attachedObjects) < _attachLimit} && {_itemClassname in ((itemsWithMagazines _player) + [""])}; +((_player == _attachToVehicle) || {canStand _player}) && +{(_attachToVehicle distance _player) < 7} && +{alive _attachToVehicle} && +{(count _attachedObjects) < _attachLimit} && +{_itemClassname in ((itemsWithMagazines _player) + [""])}; diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index ba3182ddea..303d0baf44 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -16,25 +16,17 @@ */ #include "script_component.hpp" -private ["_attachedObjects", "_inRange"]; params ["_attachToVehicle", "_unit"]; TRACE_2("params",_attachToVehicle,_unit); -_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; +private ["_inRange"]; _inRange = false; -if (_unit == _attachToVehicle) then { - _inRange = count _attachedObjects > 0; -} else { - //Scan if unit is within range (using 2d distance) - private ["_unitPos", "_objectPos"]; - _unitPos = getPos _unit; - _unitPos set [2,0]; - { - _objectPos = getPos _x; - _objectPos set [2, 0]; - if (_objectPos distance _unitPos < 4) exitWith {_inRange = true}; - } forEach _attachedObjects; -}; +{ + _x params ["_xObject"]; + if (((getPos _unit) distance2d (getPos _xObject)) < 4) exitWith {_inRange = true}; +} forEach (_attachToVehicle getVariable [QGVAR(attached), []]); -canStand _unit && {_inRange} && {alive _attachToVehicle} +_inRange && +{(_unit == _attachToVehicle) || {canStand _unit}} && +{alive _attachToVehicle} diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index 98f482f17b..ec389b5c25 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -16,15 +16,12 @@ */ #include "script_component.hpp" -private ["_attachedObjects", "_attachedItems", "_itemDisplayName", - "_attachedObject", "_attachedIndex", "_itemName", "_minDistance", - "_unitPos", "_objectPos" -]; params ["_attachToVehicle","_unit"], TRACE_2("params",_attachToVehicle,_unit); -_attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; -_attachedItems = _attachToVehicle getVariable [QGVAR(ItemNames), []]; +private ["_attachedList", "_itemDisplayName", "_attachedObject", "_attachedIndex", "_itemName", "_minDistance", "_unitPos", "_objectPos"]; + +_attachedList = _attachToVehicle getVariable [QGVAR(attached), []]; _attachedObject = objNull; _attachedIndex = -1; @@ -32,18 +29,17 @@ _itemName = ""; //Find closest attached object _minDistance = 1000; -_unitPos = getPos _unit; -_unitPos set [2,0]; + { - _objectPos = getPos _x; - _objectPos set [2, 0]; - if (_objectPos distance _unitPos < _minDistance) then { - _minDistance = _objectPos distance _unitPos; - _attachedObject = _x; - _itemName = _attachedItems select _forEachIndex; + _x params ["_xObject", "_xItemName"]; + + if (((getPos _unit) distance2d (getPos _xObject)) < _minDistance) then { + _minDistance = ((getPos _unit) distance2d (getPos _xObject)); + _attachedObject = _xObject; + _itemName = _xItemName; _attachedIndex = _forEachIndex; }; -} forEach _attachedObjects; +} forEach _attachedList; // Check if unit has an attached item if (isNull _attachedObject || {_itemName == ""}) exitWith {ERROR("Could not find attached object")}; @@ -68,10 +64,8 @@ if (toLower _itemName in ["b_ir_grenade", "o_ir_grenade", "i_ir_grenade"]) then }; // Reset unit variables -_attachedObjects deleteAt _attachedIndex; -_attachedItems deleteAt _attachedIndex; -_attachToVehicle setVariable [QGVAR(Objects), _attachedObjects, true]; -_attachToVehicle setVariable [QGVAR(ItemNames), _attachedItems, true]; +_attachedList deleteAt _attachedIndex; +_attachToVehicle setVariable [QGVAR(attached), _attachedList, true]; // Display message _itemDisplayName = getText (configFile >> "CfgWeapons" >> _itemName >> "displayName"); diff --git a/addons/attach/functions/fnc_handleGetIn.sqf b/addons/attach/functions/fnc_handleGetIn.sqf new file mode 100644 index 0000000000..415fdddf8a --- /dev/null +++ b/addons/attach/functions/fnc_handleGetIn.sqf @@ -0,0 +1,38 @@ +/* + * Author: PabstMirror + * Handles when a unit gets in to a vehicle. + * + * Arguments: + * 0: vehicle + * 1: dunno + * 2: unit + * + * Return Value: + * None + * + * Example: + * [car2, x, player] call ACE_attach_fnc_handleGetIn + * + * Public: No + */ +#include "script_component.hpp" + +if (!isServer) exitWith {}; + +params ["", "", "_unit"]; +TRACE_1("params",_unit); + +private ["_attachedList"]; + +_attachedList = _unit getVariable [QGVAR(attached), []]; +if ((count _attachedList) == 0) exitWith {}; + +(_attachedList select 0) params ["_xObject", "_xItemName"]; +if (!isNull _xObject) then { + detach _xObject; + _xObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]); + [{deleteVehicle (_this select 0)}, [_xObject], 2] call EFUNC(common,waitAndExecute); + (_attachedList select 0) set [0, objNull]; +}; + +_unit setVariable [QGVAR(attached), _attachedList, true]; diff --git a/addons/attach/functions/fnc_handleGetOut.sqf b/addons/attach/functions/fnc_handleGetOut.sqf new file mode 100644 index 0000000000..57fb69cf15 --- /dev/null +++ b/addons/attach/functions/fnc_handleGetOut.sqf @@ -0,0 +1,35 @@ +/* + * Author: PabstMirror + * Handles when a unit gets in to a vehicle. + * + * Arguments: + * 0: vehicle + * 1: dunno + * 2: unit + * + * Return Value: + * None + * + * Example: + * [car2, x, player] call ACE_attach_fnc_handleGetOut + * + * Public: No + */ +#include "script_component.hpp" + +if (!isServer) exitWith {}; + +params ["", "", "_unit"]; +TRACE_1("params",_unit); + +private ["_attachedList"]; + +_attachedList = _unit getVariable [QGVAR(attached), []]; +if ((count _attachedList) == 0) exitWith {}; + +(_attachedList select 0) params ["_xObject", "_xItemName"]; +if (isNull _xObject) then { + TRACE_1("null attached when exiting vehicle, scripted reattach",_xItemName); + _unit setVariable [QGVAR(attached), [], true]; + [_unit, _unit, _xItemName, true] call FUNC(attach); +}; diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf new file mode 100644 index 0000000000..5fb33c2abe --- /dev/null +++ b/addons/attach/functions/fnc_handleKilled.sqf @@ -0,0 +1,33 @@ +/* + * Author: PabstMirror + * Handles when vehicle or man is killed. + * + * Arguments: + * 0: DeadVehicle + * + * Return Value: + * None + * + * Example: + * [bob1] call ACE_attach_fnc_handleKilled + * + * Public: No + */ +#include "script_component.hpp" + +if (!isServer) exitWith {}; + +params ["_deadUnit"]; + +private ["_attachedList"]; + +_attachedList = _deadUnit getVariable [QGVAR(attached), []]; + +if ((count _attachedList) == 0) exitWith {}; + +{ + _x params ["_xObject", "_xItemName"]; + detach _xObject; +} forEach _attachedList; + +_deadUnit setVariable [QGVAR(attached), nil, true]; diff --git a/addons/attach/functions/fnc_placeApprove.sqf b/addons/attach/functions/fnc_placeApprove.sqf index 0656e7880f..b8e2cc17fb 100644 --- a/addons/attach/functions/fnc_placeApprove.sqf +++ b/addons/attach/functions/fnc_placeApprove.sqf @@ -25,7 +25,7 @@ */ #include "script_component.hpp" -private ["_startingOffset", "_startDistanceFromCenter", "_closeInUnitVector", "_closeInMax", "_closeInMin", "_closeInDistance", "_endPosTestOffset", "_endPosTest", "_doesIntersect", "_startingPosShifted", "_startASL", "_endPosShifted", "_endASL", "_attachedObject", "_currentObjects", "_currentItemNames"]; +private ["_startingOffset", "_startDistanceFromCenter", "_closeInUnitVector", "_closeInMax", "_closeInMin", "_closeInDistance", "_endPosTestOffset", "_endPosTest", "_doesIntersect", "_startingPosShifted", "_startASL", "_endPosShifted", "_endASL", "_attachedObject", "_attachList"]; params ["_unit", "_attachToVehicle", "_itemClassname", "_itemVehClass", "_onAtachText", "_startingPosition"]; TRACE_6("params",_unit,_attachToVehicle,_itemClassname,_itemVehClass,_onAtachText,_startingPosition); @@ -87,12 +87,9 @@ _attachedObject attachTo [_attachToVehicle, _endPosTestOffset]; //Remove Item from inventory _unit removeItem _itemClassname; -//Add Object to ACE_AttachedObjects and ACE_AttachedItemNames -_currentObjects = _attachToVehicle getVariable [QGVAR(Objects), []]; -_currentObjects pushBack _attachedObject; -_attachToVehicle setVariable [QGVAR(Objects), _currentObjects, true]; -_currentItemNames = _attachToVehicle getVariable [QGVAR(ItemNames), []]; -_currentItemNames pushBack _itemClassname; -_attachToVehicle setVariable [QGVAR(ItemNames), _currentItemNames, true]; +//Add Object to attached array +_attachList = _attachToVehicle getVariable [QGVAR(attached), []]; +_attachList pushBack [_attachedObject, _itemClassname]; +_attachToVehicle setVariable [QGVAR(attached), _attachList, true]; [_onAtachText] call EFUNC(common,displayTextStructured); From d56f3cea813733c2ce68ea807804995477d55f7f Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 11:58:03 +0200 Subject: [PATCH 149/620] Added pain and unconsciousness handling for new basic medical code --- .../functions/fnc_handleDamage_basic2.sqf | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_handleDamage_basic2.sqf b/addons/medical/functions/fnc_handleDamage_basic2.sqf index 3a79b1525f..a4358b42d9 100644 --- a/addons/medical/functions/fnc_handleDamage_basic2.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic2.sqf @@ -24,9 +24,25 @@ _cache_damages = _target getVariable QGVAR(cachedDamages); if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part < 0) exitwith {}; - _damageBodyParts set [_part, (_damageBodyParts select _part) + (_cache_damages select _foreachIndex)]; + + private ["_newDamage", "_pain"]; + _newDamage = (_cache_damages select _foreachIndex); + _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; + _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts]; + + if (alive _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then { + // If it reaches this, we can assume that the hit did not kill this unit, as this function is called 3 frames after the damage has been passed. + if ([_unit, _part, if (_part > 1) then {_newDamage * 1.3} else {_newDamage * 2}] call FUNC(determineIfFatal)) then { + [_unit] call FUNC(setUnconscious); + }; + }; + _pain = _unit getVariable [QGVAR(pain), 0]; + _pain = _pain + _newDamage * (1 - (_unit getVariable [QGVAR(morphine), 0])); + _unit setVariable [QGVAR(pain), _pain min 1, true]; }; }foreach _cache_params; + +// We broadcast the value across the net here, in order to avoid broadcasting it multiple times earlier in the above code block _target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); From 1c9e88f21326aab869fafbc65f907bbee816dd06 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 11:58:28 +0200 Subject: [PATCH 150/620] fixes #1964 --- addons/medical/XEH_postInit.sqf | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 6ce81d396d..6760cc201a 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -257,15 +257,29 @@ if (USE_WOUND_EVENT_SYNC) then { }; }; -[ - {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 65)}, - {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.9}, - {(([_this select 0] call FUNC(getBloodLoss)) > 0.25)}, - {((_this select 0) getvariable [QGVAR(inReviveState), false])}, - {((_this select 0) getvariable [QGVAR(inCardiacArrest), false])}, - {((_this select 0) getvariable ["ACE_isDead", false])}, - {(((_this select 0) getvariable [QGVAR(airwayStatus), 100]) < 80)} -] call FUNC(addUnconsciousCondition); + + +["SettingsInitialized", { + if (GVAR(level) == 2) exitwith { + [ + {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 65)}, + {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.9}, + {(([_this select 0] call FUNC(getBloodLoss)) > 0.25)}, + {((_this select 0) getvariable [QGVAR(inReviveState), false])}, + {((_this select 0) getvariable [QGVAR(inCardiacArrest), false])}, + {((_this select 0) getvariable ["ACE_isDead", false])}, + {(((_this select 0) getvariable [QGVAR(airwayStatus), 100]) < 80)} + ] call FUNC(addUnconsciousCondition); + }; + + [ + {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 40)}, + {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.6}, + {(([_this select 0] call FUNC(getBloodLoss)) > 0.1)}, + {((_this select 0) getvariable [QGVAR(inReviveState), false])}, + {((_this select 0) getvariable ["ACE_isDead", false])} + ] call FUNC(addUnconsciousCondition); +}] call FUNC(addEventHandler); // Prevent all types of interaction while unconscious // @todo: probably remove this when CBA keybind hold key works properly From 1a4736e6630150e505d0d174f810c4bc6c7b34cc Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 12:01:00 +0200 Subject: [PATCH 151/620] Clean up --- addons/medical/XEH_postInit.sqf | 2 - addons/medical/XEH_preInit.sqf | 2 - .../functions/fnc_handleDamage_basic.sqf | 205 +++--------------- .../functions/fnc_handleDamage_basic2.sqf | 56 ----- .../functions/fnc_handleDamage_caching.sqf | 2 +- 5 files changed, 36 insertions(+), 231 deletions(-) delete mode 100644 addons/medical/functions/fnc_handleDamage_basic2.sqf diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 6760cc201a..d55a66d2b1 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -257,8 +257,6 @@ if (USE_WOUND_EVENT_SYNC) then { }; }; - - ["SettingsInitialized", { if (GVAR(level) == 2) exitwith { [ diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 6ae9dbb866..b479383468 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -2,8 +2,6 @@ ADDON = false; -PREP(handleDamage_basic2); - PREP(actionCheckBloodPressure); PREP(actionCheckBloodPressureLocal); PREP(actionCheckPulse); diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index a7a2db8bec..cf53ac100f 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -1,191 +1,56 @@ /* - * Author: KoffeinFlummi - * Basic HandleDamage EH function. + * Author: KoffeinFlummi, Glowbal + * Handle damage basic medical * * Arguments: - * 0: Unit That Was Hit - * 1: Name Of Hit Selection - * 2: Amount Of Damage - * 3: Shooter - * 4: Projectile - * 5: Current damage to be returned * * Return Value: - * Damage To Be Inflicted + * * * Public: No */ #include "script_component.hpp" -#define LEGDAMAGETRESHOLD1 1 -#define LEGDAMAGETRESHOLD2 1.7 -#define ARMDAMAGETRESHOLD1 1 -#define ARMDAMAGETRESHOLD2 1.7 -#define UNCONSCIOUSNESSTRESHOLD 0.7 +private ["_damageBodyParts", "_cache_params", "_cache_damages"]; +params ["_target"]; -private ["_damage", "_armdamage", "_hitPoint", "_index", "_legdamage", "_newDamage", "_otherDamage", "_pain", "_restore"]; -params ["_unit", "_selectionName", "_damage", "_shooter", "_projectile"]; +_damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; +_cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; +_cache_damages = _target getVariable QGVAR(cachedDamages); -// Apply damage treshold / coefficient -_threshold = [ - _unit getVariable [QGVAR(damageThreshold), GVAR(AIDamageThreshold)], - _unit getVariable [QGVAR(damageThreshold), GVAR(playerDamageThreshold)] -] select ([_unit] call EFUNC(common,isPlayer)); -if (_selectionName in ["leg_l", "leg_r", "hand_l", "hand_r"]) then {_threshold = _threshold * 1.7}; +{ + _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; + if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { + _part = [_selectionName] call FUNC(selectionNameToNumber); + if (_part < 0) exitwith {}; -_damage = _damage * (1 / _threshold); + private ["_newDamage", "_pain"]; + _newDamage = (_cache_damages select _foreachIndex); + _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; + _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts]; -// This is a new hit, reset variables. -// Note: sometimes handleDamage spans over 2 or even 3 frames. -if (diag_frameno > (_unit getVariable [QGVAR(basic_frameNo), -3]) + 2) then { - _unit setVariable [QGVAR(basic_frameNo), diag_frameno]; - _unit setVariable [QGVAR(isFalling), false]; - _unit setVariable [QGVAR(projectiles), []]; - _unit setVariable [QGVAR(hitPoints), []]; - _unit setVariable [QGVAR(damages), []]; - _unit setVariable [QGVAR(structDamage), 0]; - - if (isnil {_unit getvariable QGVAR(structDamagePFH)}) then { - // Assign orphan structural damage to torso - [{ - private "_damagesum"; - params ["_args", "_idPFH"]; - _args params ["_unit"]; - - if (ACE_diagTime - (_unit getvariable [QGVAR(structDamagePFH),-2]) >= 2) then { - _unit setVariable [QGVAR(structDamagePFH), nil]; - _damagesum = (_unit getHitPointDamage "HitHead") + - (_unit getHitPointDamage "HitBody") + - (_unit getHitPointDamage "HitLeftArm") + - (_unit getHitPointDamage "HitRightArm") + - (_unit getHitPointDamage "HitLeftLeg") + - (_unit getHitPointDamage "HitRightLeg"); - if (_damagesum < 0.06 and damage _unit > 0.06 and alive _unit) then { - // _unit setHitPointDamage ["HitBody", damage _unit]; - }; - [_idPFH] call CBA_fnc_removePerFrameHandler; + if (alive _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then { + // If it reaches this, we can assume that the hit did not kill this unit, as this function is called 3 frames after the damage has been passed. + if ([_unit, _part, if (_part > 1) then {_newDamage * 1.3} else {_newDamage * 2}] call FUNC(determineIfFatal)) then { + [_unit] call FUNC(setUnconscious); }; - }, 0, [_unit]] call CBA_fnc_addPerFrameHandler; - }; - _unit setVariable [QGVAR(structDamagePFH), ACE_diagTime]; // Assign starting ACE_time or reset it -}; - -_newDamage = _damage - (damage _unit); -if (_selectionName in GVAR(SELECTIONS)) then { - _newDamage = _damage - (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName))); -}; - -_damage = _damage - _newDamage; - - -// Exclude falling damage to everything other than legs and reduce it overall. -if (((velocity _unit) select 2 < -5) and (vehicle _unit == _unit)) then { - _unit setVariable [QGVAR(isFalling), true]; -}; -if (_unit getVariable [QGVAR(isFalling), false] and !(_selectionName in ["", "leg_l", "leg_r"])) exitWith { - (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName))) max 0.01; -}; -if (_unit getVariable [QGVAR(isFalling), false]) then { - _newDamage = _newDamage * 0.7; -}; - - -// Make sure there's only one damaged selection per projectile per frame. -if (_selectionName != "" and !(_unit getVariable QGVAR(isFalling))) then { - _cache_projectiles = _unit getVariable QGVAR(projectiles); - _cache_hitpoints = _unit getVariable QGVAR(hitPoints); - _cache_damages = _unit getVariable QGVAR(damages); - if (_projectile in _cache_projectiles) then { - _index = _cache_projectiles find _projectile; - _otherDamage = (_cache_damages select _index); - if (_otherDamage > _newDamage) then { - _newDamage = 0; - } else { - _hitPoint = _cache_hitpoints select _index; - _restore = ((_unit getHitPointDamage _hitPoint) - _otherDamage) max 0; - _unit setHitPointDamage [_hitPoint, _restore]; - // Make entry unfindable - _cache_projectiles set [_index, objNull]; - _cache_projectiles pushBack _projectile; - _cache_hitpoints pushBack (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName)); - _cache_damages pushBack _newDamage; }; - } else { - _cache_projectiles pushBack _projectile; - _cache_hitpoints pushBack (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName)); - _cache_damages pushBack _newDamage; + _pain = _unit getVariable [QGVAR(pain), 0]; + _pain = _pain + _newDamage * (1 - (_unit getVariable [QGVAR(morphine), 0])); + _unit setVariable [QGVAR(pain), _pain min 1, true]; }; - _unit setVariable [QGVAR(projectiles), _cache_projectiles]; - _unit setVariable [QGVAR(hitPoints), _cache_hitpoints]; - _unit setVariable [QGVAR(damages), _cache_damages]; -}; +}foreach _cache_params; -// Get rid of double structural damage (seriously arma, what the fuck?) -if (_selectionName == "") then { - _cache_structDamage = _unit getVariable QGVAR(structDamage); - if (_newDamage > _cache_structDamage) then { - _unit setVariable [QGVAR(structDamage), _newDamage]; - _newDamage = _newDamage - _cache_structDamage; - } else { - _newDamage = 0; - }; -}; +// We broadcast the value across the net here, in order to avoid broadcasting it multiple times earlier in the above code block +_target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; -if (_selectionName == "") then { - _damage = _damage + (_unit getVariable QGVAR(structDamage)); -} else { - _damage = _damage + _newDamage; -}; +EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); +_target setHitPointDamage ["hitHead", _headDamage min 0.95]; +_target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; +_target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; +_target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; -// Leg Damage -_legdamage = (_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg"); -if (_selectionName == "leg_l") then { - _legdamage = _damage + (_unit getHitPointDamage "HitRightLeg"); -}; -if (_selectionName == "leg_r") then { - _legdamage = (_unit getHitPointDamage "HitLeftLeg") + _damage; -}; - -if (_legdamage >= LEGDAMAGETRESHOLD1) then { - _unit setHitPointDamage ["HitLegs", 1]; -} else { - _unit setHitPointDamage ["HitLegs", 0]; -}; -// @todo: force prone for completely fucked up legs. - - -// Arm Damage -_armdamage = (_unit getHitPointDamage "HitLeftArm") + (_unit getHitPointDamage "HitRightArm"); -if (_selectionName == "hand_l") then { - _armdamage = _damage + (_unit getHitPointDamage "HitRightArm"); -}; -if (_selectionName == "hand_r") then { - _armdamage = (_unit getHitPointDamage "HitLeftArm") + _damage; -}; - -if (_armdamage >= ARMDAMAGETRESHOLD1) then { - _unit setHitPointDamage ["HitHands", 1]; -} else { - _unit setHitPointDamage ["HitHands", 0]; -}; -// @todo: Drop weapon for full damage. - - -// Set Pain -if (_selectionName == "") then { - _pain = _unit getVariable [QGVAR(pain), 0]; - _pain = _pain + _newDamage * (1 - (_unit getVariable [QGVAR(morphine), 0])); - _unit setVariable [QGVAR(pain), _pain min 1, true]; -}; - -// Unconsciousness -if (_selectionName == "" and - _damage >= UNCONSCIOUSNESSTRESHOLD and - _damage < 1 and - !(_unit getVariable ["ACE_isUnconscious", False] -)) then { - [_unit, true] call FUNC(setUnconscious); -}; - -_damage +{ + _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; +}foreach GVAR(HITPOINTS); diff --git a/addons/medical/functions/fnc_handleDamage_basic2.sqf b/addons/medical/functions/fnc_handleDamage_basic2.sqf deleted file mode 100644 index a4358b42d9..0000000000 --- a/addons/medical/functions/fnc_handleDamage_basic2.sqf +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Author: KoffeinFlummi, Glowbal - * Cache a handleDamage call to execute it 3 frames later - * - * Arguments: - * - * Return Value: - * - * - * Public: No - */ - -#include "script_component.hpp" - -private ["_damageBodyParts", "_cache_params", "_cache_damages"]; -params ["_target"]; - -_damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; -_cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; -_cache_damages = _target getVariable QGVAR(cachedDamages); - -{ - _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; - if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { - _part = [_selectionName] call FUNC(selectionNameToNumber); - if (_part < 0) exitwith {}; - - private ["_newDamage", "_pain"]; - _newDamage = (_cache_damages select _foreachIndex); - _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage]; - _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts]; - - if (alive _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then { - // If it reaches this, we can assume that the hit did not kill this unit, as this function is called 3 frames after the damage has been passed. - if ([_unit, _part, if (_part > 1) then {_newDamage * 1.3} else {_newDamage * 2}] call FUNC(determineIfFatal)) then { - [_unit] call FUNC(setUnconscious); - }; - }; - _pain = _unit getVariable [QGVAR(pain), 0]; - _pain = _pain + _newDamage * (1 - (_unit getVariable [QGVAR(morphine), 0])); - _unit setVariable [QGVAR(pain), _pain min 1, true]; - }; -}foreach _cache_params; - -// We broadcast the value across the net here, in order to avoid broadcasting it multiple times earlier in the above code block -_target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; - -EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); -_target setHitPointDamage ["hitHead", _headDamage min 0.95]; -_target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; -_target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; -_target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; - -{ - _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; -}foreach GVAR(HITPOINTS); diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index 2422dcd9e3..553c300631 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -80,7 +80,7 @@ if (diag_frameno > (_unit getVariable [QGVAR(frameNo_damageCaching), -3]) + 2) t _unit setDamage 0; if (GVAR(level) < 2 || {!([_unit] call FUNC(hasMedicalEnabled))}) then { - [_unit] call FUNC(handleDamage_basic2); + [_unit] call FUNC(handleDamage_basic); } else { _cache_params = _unit getVariable [QGVAR(cachedHandleDamageParams), []]; _cache_damages = _unit getVariable QGVAR(cachedDamages); From 1e08244f21a340447b7a4398a1fd21c32ba57700 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 12:59:11 +0200 Subject: [PATCH 152/620] Removed debug output --- addons/medical/functions/fnc_handleDamage_advanced.sqf | 5 +---- addons/medical/functions/fnc_handleDamage_wounds.sqf | 4 ---- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index 09ea6cd3db..f928732bba 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -36,10 +36,7 @@ _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage); - -systemChat format["ASSIGNING INJURIES: %1", _unit]; - -[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_wounds); //FUNC(handleDamage_assignWounds); +[_unit, _selectionName, _newDamage, _typeOfProjectile, _typeOfDamage] call FUNC(handleDamage_assignWounds); // TODO Disabled until implemented fully //if (GVAR(enableAirway)) then { diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 10aec5c459..4438e9bb90 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -20,15 +20,11 @@ private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; -systemChat format["input: %1", _this]; -diag_log format["input: %1", _this]; - // Administration for open wounds and ids _openWounds = _unit getvariable[QGVAR(openWounds), []]; _woundID = _unit getvariable[QGVAR(lastUniqueWoundID), 1]; _extensionOutput = "ace_medical" callExtension format ["HandleDamageWounds,%1,%2,%3,%4", _selectionName, _damage, _typeOfDamage, _woundID]; -systemChat format["EXTENSION OUTPUT: %1", _extensionOutput]; _painToAdd = 0; _woundsCreated = []; From 6796b3126dcc107f37ceee09445bebcdac8823a9 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 12:59:28 +0200 Subject: [PATCH 153/620] Staged work on fixing updating base classes for hitpoints --- addons/medical/CfgVehicles.hpp | 460 ++++++++++++++++++++++++++++++--- 1 file changed, 431 insertions(+), 29 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 350f83b3f7..278d3523e0 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -417,12 +417,29 @@ class CfgVehicles { #define ARM_LEG_ARMOR_BETTER 3 #define ARM_LEG_ARMOR_CSAT 4 - class Man; - class CAManBase: Man { + class Land; + class Man: Land { class HitPoints { - class HitHead; - class HitBody; - // "DEACTIVE" DEFAULT HITPOINTS + class HitHead { + visual = ""; + armor = 1; + material = -1; + name = "head"; + passThrough = 1; + radius = 0.1; + explosionShielding = 0.5; + minimalHit = 0; + }; + class HitBody { + armor = 1; + material = -1; + name = "body"; + passThrough = 1; + radius = 0.15; + explosionShielding = 10; + visual = "injury_body"; + minimalHit = 0; + }; class HitHands { armor = 999; //armor = 2; explosionShielding = 0; //explosionShielding = 1; @@ -443,6 +460,118 @@ class CfgVehicles { radius = 0; //radius = 0.08; visual = "injury_legs"; }; + }; + }; + class CAManBase: Man { + class HitPoints: HitPoints { + + class HitFace: HitHead { + armor = 999; + material = -1; + name = "face_hub"; + passThrough = 1; + radius = 0.08; + explosionShielding = 0.1; + minimalHit = 0.01; + }; + class HitNeck: HitFace { + armor = 999; + material = -1; + name = "neck"; + passThrough = 1; + radius = 0.08; + explosionShielding = 0.5; + minimalHit = 0.01; + }; + class HitHead: HitNeck { + armor = 1; + material = -1; + name = "head"; + passThrough = 1; + radius = 0.1; + explosionShielding = 0.5; + minimalHit = 0.01; + }; + class HitPelvis: HitBody { + armor = 999; + material = -1; + name = "pelvis"; + passThrough = 1; + radius = 0.15; + explosionShielding = 0.5; + visual = "injury_body"; + minimalHit = 0.01; + }; + class HitAbdomen: HitPelvis { + armor = 999; + material = -1; + name = "spine1"; + passThrough = 1; + radius = 0.15; + explosionShielding = 1; + visual = "injury_body"; + minimalHit = 0.01; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + material = -1; + name = "spine2"; + passThrough = 1; + radius = 0.15; + explosionShielding = 6; + visual = "injury_body"; + minimalHit = 0.01; + }; + class HitChest: HitDiaphragm { + armor = 999; + material = -1; + name = "spine3"; + passThrough = 1; + radius = 0.15; + explosionShielding = 6; + visual = "injury_body"; + minimalHit = 0.01; + }; + class HitBody: HitChest { + armor = 1; + material = -1; + name = "body"; + passThrough = 1; + radius = 0.15; + explosionShielding = 10; + visual = "injury_body"; + minimalHit = 0.01; + }; + class HitArms: HitHands { + armor = 999; + material = -1; + name = "arms"; + passThrough = 1; + radius = 0.08; + explosionShielding = 1; + visual = "injury_hands"; + minimalHit = 0.01; + }; + class HitHands: HitArms { + armor = 999; + material = -1; + name = "hands"; + passThrough = 1; + radius = 0.08; + explosionShielding = 1; + visual = "injury_hands"; + minimalHit = 0.01; + }; + class HitLegs: HitLegs { + armor = 999; + material = -1; + name = "legs"; + passThrough = 1; + radius = 0.1; + explosionShielding = 1; + visual = "injury_legs"; + minimalHit = 0.01; + }; class HitLeftArm { armor = ARM_LEG_ARMOR_DEFAULT; //2; @@ -529,10 +658,55 @@ class CfgVehicles { class B_Soldier_04_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 2; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; @@ -554,10 +728,56 @@ class CfgVehicles { class B_Soldier_05_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 3; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; @@ -581,10 +801,55 @@ class CfgVehicles { class I_Soldier_03_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 2; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; @@ -606,10 +871,56 @@ class CfgVehicles { class I_Soldier_04_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 3; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; @@ -631,10 +942,56 @@ class CfgVehicles { class O_Soldier_base_F: SoldierEB { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 4; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_CSAT; @@ -660,10 +1017,55 @@ class CfgVehicles { class O_Soldier_02_F: O_Soldier_base_F { class HitPoints: HitPoints { - class HitHead: HitHead {}; - class HitBody: HitBody {}; - class HitHands: HitHands {}; - class HitLegs: HitLegs {}; + class HitFace: HitHead { + armor = 999; + }; + class HitNeck: HitFace { + armor = 999; + }; + class HitHead: HitNeck { + armor = 1; + }; + class HitPelvis: HitBody { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitAbdomen: HitPelvis { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitDiaphragm: HitAbdomen { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitChest: HitDiaphragm { + armor = 999; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitBody: HitChest { + armor = 4; + passThrough = 0.5; + explosionShielding = 2.4; + }; + class HitArms: HitHands { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitHands: HitArms { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; + class HitLegs: HitLegs { + armor = 999; + passThrough = 0.5; + explosionShielding = 1.2; + }; class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_CSAT; From 588f5adce8ec8f3812bbef0fc0310bdd4f1db634 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 29 Aug 2015 14:54:42 +0200 Subject: [PATCH 154/620] fix math issue --- addons/common/XEH_postInit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 9477dcf235..28e334f83f 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -22,13 +22,13 @@ GVAR(nextFrameBufferA) = GVAR(nextFrameBufferB); GVAR(nextFrameBufferB) = []; GVAR(nextFrameNo) = diag_frameno + 1; - + //Handle the waitUntilAndExec array: _deleted = 0; { _x params ["_condition", "_code", "_args"]; if ((_args call _condition)) then { - GVAR(waitUntilAndExecArray) deleteAt (_forEachIndex + _deleted); + GVAR(waitUntilAndExecArray) deleteAt (_forEachIndex - _deleted); _deleted = _deleted + 1; _args call _code; }; From 8916b70fe11775307f44bfd8dd4157d4da664e04 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 29 Aug 2015 15:29:02 +0200 Subject: [PATCH 155/620] Improve some Code --- .../medical/functions/fnc_actionLoadUnit.sqf | 2 +- .../functions/fnc_actionRemoveTourniquet.sqf | 2 +- addons/medical/functions/fnc_addToLog.sqf | 7 ++--- addons/medical/functions/fnc_canTreat.sqf | 7 ++--- .../fnc_displayPatientInformation.sqf | 4 +-- .../medical/functions/fnc_getTypeOfDamage.sqf | 27 +++++++++---------- addons/medical/functions/fnc_handleDamage.sqf | 13 ++++----- 7 files changed, 28 insertions(+), 34 deletions(-) diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf index 9dc711a5a7..42a94997d8 100644 --- a/addons/medical/functions/fnc_actionLoadUnit.sqf +++ b/addons/medical/functions/fnc_actionLoadUnit.sqf @@ -18,7 +18,7 @@ private "_vehicle"; params ["_caller", "_target"]; if ([_target] call EFUNC(common,isAwake)) exitwith { - ["displayTextStructured", [_caller], [[localize LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); + ["displayTextStructured", [_caller], [[LSTRING(CanNotLoaded), [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent); }; if ([_target] call FUNC(isBeingCarried)) then { [_caller, _target] call EFUNC(dragging,dropObject_carry); diff --git a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf index 2a39b63095..b920f276f0 100644 --- a/addons/medical/functions/fnc_actionRemoveTourniquet.sqf +++ b/addons/medical/functions/fnc_actionRemoveTourniquet.sqf @@ -24,7 +24,7 @@ _tourniquets = _target getvariable [QGVAR(tourniquets), [0,0,0,0,0,0]]; // Check if there is a tourniquet on this bodypart if ((_tourniquets select _part) == 0) exitwith { - _output = localize LSTRING(noTourniquetOnBodyPart); + _output = LSTRING(noTourniquetOnBodyPart); ["displayTextStructured", [_caller], [_output, 1.5, _caller]] call EFUNC(common,targetEvent); }; diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index fff615a5b3..9cac3af5f2 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -25,11 +25,8 @@ if (!local _unit) exitwith { date params ["", "", "", "_minute", "_hour"]; -_moment = if (_minute < 10) then { - format["%1:0%2", _hour, _minute] -} else { - format["%1:%2", _hour, _minute] -}; +_moment = format [ (["%1:%2", "%1:0%2"] select (_minute < 10)), _hour, _minute] + _logVarName = format[QGVAR(logFile_%1), _type]; _log = _unit getvariable [_logVarName, []]; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index e1817d21fe..ff191ea7ca 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -22,11 +22,8 @@ params ["_caller", "_target", "_selectionName", "_className"]; if !(_target isKindOf "CAManBase") exitWith { false }; -_config = if (GVAR(level)>=2) then { - (ConfigFile >> "ACE_Medical_Actions" >> "Advanced" >> _className) -} else { - (ConfigFile >> "ACE_Medical_Actions" >> "Basic" >> _className) -}; +_config = (ConfigFile >> "ACE_Medical_Actions" >> (["Basic", "Advanced"] select (GVAR(level)>=2)) >> _className); + if !(isClass _config) exitwith {false}; _medicRequired = if (isNumber (_config >> "requiredMedic")) then { diff --git a/addons/medical/functions/fnc_displayPatientInformation.sqf b/addons/medical/functions/fnc_displayPatientInformation.sqf index 934bcc72dc..f73376cb29 100644 --- a/addons/medical/functions/fnc_displayPatientInformation.sqf +++ b/addons/medical/functions/fnc_displayPatientInformation.sqf @@ -21,8 +21,8 @@ if (GVAR(level) < 2) exitWith {}; private ["_amountOfGeneric", "_bandagedwounds", "_logCtrl", "_part", "_partText", "_pointDamage", "_severity", "_total", "_totalIvVolume", "_triageStatus", "_type"]; params ["_target", ["_show", true], ["_selectionN", 0]]; -GVAR(currentSelectedSelectionN) = if (typeName _selectionN == "SCALAR") then {_selectionN} else {0}; -GVAR(displayPatientInformationTarget) = if (_show) then {_target} else {ObjNull}; +GVAR(currentSelectedSelectionN) = [0, _selectionN] select (IS_SCALAR(_selectionN)); +GVAR(displayPatientInformationTarget) = [ObjNull, _target] select _show; if (USE_WOUND_EVENT_SYNC) then { [_target, ACE_player] call FUNC(requestWoundSync); diff --git a/addons/medical/functions/fnc_getTypeOfDamage.sqf b/addons/medical/functions/fnc_getTypeOfDamage.sqf index d0aff19cc4..afa687f137 100644 --- a/addons/medical/functions/fnc_getTypeOfDamage.sqf +++ b/addons/medical/functions/fnc_getTypeOfDamage.sqf @@ -15,17 +15,16 @@ params ["_typeOfProjectile"]; -call { - if (_typeOfProjectile isKindOf "BulletBase") exitWith {"bullet"}; - if (_typeOfProjectile isKindOf "GrenadeCore") exitWith {"grenade"}; - if (_typeOfProjectile isKindOf "TimeBombCore") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "MineCore") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "FuelExplosion") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "ShellBase") exitWith {"shell"}; - if (_typeOfProjectile isKindOf "RocketBase") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "MissileBase") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "LaserBombCore") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "BombCore") exitWith {"explosive"}; - if (_typeOfProjectile isKindOf "Grenade") exitWith {"grenade"}; - toLower _typeOfProjectile -} + +if (_typeOfProjectile isKindOf "BulletBase") exitWith {"bullet"}; +if (_typeOfProjectile isKindOf "GrenadeCore") exitWith {"grenade"}; +if (_typeOfProjectile isKindOf "TimeBombCore") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "MineCore") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "FuelExplosion") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "ShellBase") exitWith {"shell"}; +if (_typeOfProjectile isKindOf "RocketBase") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "MissileBase") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "LaserBombCore") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "BombCore") exitWith {"explosive"}; +if (_typeOfProjectile isKindOf "Grenade") exitWith {"grenade"}; +toLower _typeOfProjectile diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index 444643c806..1f484ab056 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -32,11 +32,11 @@ if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0}; // Exit if we disable damage temporarily if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { - _damageOld = damage _unit; if (_selection in GVAR(SELECTIONS)) then { - _damageOld = _unit getHit _selection; + _unit getHit _selection + } else { + damage _unit }; - _damageOld; }; // Get return damage @@ -47,9 +47,10 @@ _newDamage = _this call FUNC(handleDamage_caching); _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); -_minLethalDamage = 0.01; -if (_typeIndex >= 0) then { - _minLethalDamage = GVAR(minLethalDamages) select _typeIndex; +_minLethalDamage = if (_typeIndex >= 0) then { + GVAR(minLethalDamages) select _typeIndex +} else { + 0.01 }; if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _shooter} && {_projectile == ""} && {_selection == ""}) then { From f6c752045c4f7f3b3d41d77313e933ac91c943c8 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 29 Aug 2015 09:38:57 -0500 Subject: [PATCH 156/620] Cleanup --- addons/attach/functions/fnc_detach.sqf | 2 +- addons/attach/functions/fnc_handleGetIn.sqf | 2 +- addons/attach/functions/fnc_handleKilled.sqf | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf index ec389b5c25..05c625b374 100644 --- a/addons/attach/functions/fnc_detach.sqf +++ b/addons/attach/functions/fnc_detach.sqf @@ -19,7 +19,7 @@ params ["_attachToVehicle","_unit"], TRACE_2("params",_attachToVehicle,_unit); -private ["_attachedList", "_itemDisplayName", "_attachedObject", "_attachedIndex", "_itemName", "_minDistance", "_unitPos", "_objectPos"]; +private ["_attachedList", "_itemDisplayName", "_attachedObject", "_attachedIndex", "_itemName", "_minDistance"]; _attachedList = _attachToVehicle getVariable [QGVAR(attached), []]; diff --git a/addons/attach/functions/fnc_handleGetIn.sqf b/addons/attach/functions/fnc_handleGetIn.sqf index 415fdddf8a..b7b2997081 100644 --- a/addons/attach/functions/fnc_handleGetIn.sqf +++ b/addons/attach/functions/fnc_handleGetIn.sqf @@ -27,7 +27,7 @@ private ["_attachedList"]; _attachedList = _unit getVariable [QGVAR(attached), []]; if ((count _attachedList) == 0) exitWith {}; -(_attachedList select 0) params ["_xObject", "_xItemName"]; +(_attachedList select 0) params ["_xObject"]; if (!isNull _xObject) then { detach _xObject; _xObject setPos ((getPos _unit) vectorAdd [0, 0, -1000]); diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf index 5fb33c2abe..355360d95f 100644 --- a/addons/attach/functions/fnc_handleKilled.sqf +++ b/addons/attach/functions/fnc_handleKilled.sqf @@ -1,6 +1,7 @@ /* * Author: PabstMirror - * Handles when vehicle or man is killed. + * Handles when vehicle or man is killed. + * Note: Runs where unit is local. * * Arguments: * 0: DeadVehicle @@ -15,9 +16,8 @@ */ #include "script_component.hpp" -if (!isServer) exitWith {}; - params ["_deadUnit"]; +TRACE_1("params",_deadUnit); private ["_attachedList"]; @@ -26,7 +26,8 @@ _attachedList = _deadUnit getVariable [QGVAR(attached), []]; if ((count _attachedList) == 0) exitWith {}; { - _x params ["_xObject", "_xItemName"]; + _x params ["_xObject"]; + TRACE_2("detaching",_xObject,_deadUnit); detach _xObject; } forEach _attachedList; From 321ca815a2cac7fc45844211258c09afb7a7917b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 29 Aug 2015 09:52:28 -0500 Subject: [PATCH 157/620] semi-colon --- addons/medical/functions/fnc_addToLog.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_addToLog.sqf b/addons/medical/functions/fnc_addToLog.sqf index 9cac3af5f2..3b071948f3 100644 --- a/addons/medical/functions/fnc_addToLog.sqf +++ b/addons/medical/functions/fnc_addToLog.sqf @@ -25,7 +25,7 @@ if (!local _unit) exitwith { date params ["", "", "", "_minute", "_hour"]; -_moment = format [ (["%1:%2", "%1:0%2"] select (_minute < 10)), _hour, _minute] +_moment = format [ (["%1:%2", "%1:0%2"] select (_minute < 10)), _hour, _minute]; _logVarName = format[QGVAR(logFile_%1), _type]; From 200f44d96336c08eb8f4e1b055de5e052761a808 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 29 Aug 2015 16:03:43 +0100 Subject: [PATCH 158/620] Adjust spectator camera speed based on height Slows the camera movement close to the ground as it feels more natural when spectating units up close and such --- .../spectator/functions/fnc_handleCamera.sqf | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/spectator/functions/fnc_handleCamera.sqf b/addons/spectator/functions/fnc_handleCamera.sqf index 960a20df80..db196c8504 100644 --- a/addons/spectator/functions/fnc_handleCamera.sqf +++ b/addons/spectator/functions/fnc_handleCamera.sqf @@ -20,14 +20,18 @@ // Kill PFH when not in free cam (or display is closed) if (isNil QGVAR(camHandler)) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; -private ["_oldPos","_zoomMod","_mX","_mY","_mZ","_pan","_x","_y","_z"]; +private ["_camera","_oldPos","_altMod","_zoomMod","_mX","_mY","_mZ","_pan","_x","_y","_z"]; -_oldPos = getPosASL GVAR(camera); +_camera = GVAR(camera); +_oldPos = getPosASL _camera; // Dolly/Boom amount should be influnced by zoom level (it should really be exponential) +// Dollying should also slow as the camera gets close to the ground _zoomMod = (GVAR(camZoom) * 0.8) max 1; -_mX = (GVAR(camDolly) select 0) / _zoomMod; -_mY = (GVAR(camDolly) select 1) / _zoomMod; +_altMod = ((((getPos _camera) select 2) * 0.05) max 0.1) min 1; + +_mX = (GVAR(camDolly) select 0) * _altMod / _zoomMod; +_mY = (GVAR(camDolly) select 1) * _altMod / _zoomMod; _mZ = GVAR(camBoom) / _zoomMod; _pan = (GVAR(camPan) + 360) % 360; @@ -39,6 +43,6 @@ _z = (_oldPos select 2) + _mZ; GVAR(camPos) = [_x,_y,_z max (getTerrainHeightASL [_x,_y])]; // Update camera position and rotation -GVAR(camera) setPosASL GVAR(camPos); -GVAR(camera) setDir GVAR(camPan); -[GVAR(camera), GVAR(camTilt), 0] call BIS_fnc_setPitchBank; +_camera setPosASL GVAR(camPos); +_camera setDir GVAR(camPan); +[_camera, GVAR(camTilt), 0] call BIS_fnc_setPitchBank; From d06680e2a0bc03a47d9fb7f8dbfa4222d8ab75b2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 29 Aug 2015 11:47:56 -0500 Subject: [PATCH 159/620] #1571 - Handle Null Attached Objects --- addons/attach/functions/fnc_canDetach.sqf | 10 +++++++++- addons/attach/functions/fnc_handleKilled.sqf | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/attach/functions/fnc_canDetach.sqf b/addons/attach/functions/fnc_canDetach.sqf index 303d0baf44..915295e6c9 100644 --- a/addons/attach/functions/fnc_canDetach.sqf +++ b/addons/attach/functions/fnc_canDetach.sqf @@ -19,13 +19,21 @@ params ["_attachToVehicle", "_unit"]; TRACE_2("params",_attachToVehicle,_unit); +_attachedList = _attachToVehicle getVariable [QGVAR(attached), []]; +if ((count _attachedList) == 0) exitWith {false}; + private ["_inRange"]; _inRange = false; { _x params ["_xObject"]; + if (isNull _xObject) exitWith { + TRACE_1("Null attached",_x); + _attachedList deleteAt _forEachIndex; + _attachToVehicle setVariable [QGVAR(attached), _attachedList, true]; + }; if (((getPos _unit) distance2d (getPos _xObject)) < 4) exitWith {_inRange = true}; -} forEach (_attachToVehicle getVariable [QGVAR(attached), []]); +} forEach _attachedList; _inRange && {(_unit == _attachToVehicle) || {canStand _unit}} && diff --git a/addons/attach/functions/fnc_handleKilled.sqf b/addons/attach/functions/fnc_handleKilled.sqf index 355360d95f..06c5473c88 100644 --- a/addons/attach/functions/fnc_handleKilled.sqf +++ b/addons/attach/functions/fnc_handleKilled.sqf @@ -29,6 +29,11 @@ if ((count _attachedList) == 0) exitWith {}; _x params ["_xObject"]; TRACE_2("detaching",_xObject,_deadUnit); detach _xObject; + //If it's a vehicle, also delete the attached + if (!(_deadUnit isKindOf "CAManBase")) then { + _xObject setPos ((getPos _deadUnit) vectorAdd [0, 0, -1000]); + [{deleteVehicle (_this select 0)}, [_xObject], 2] call EFUNC(common,waitAndExecute); + }; } forEach _attachedList; _deadUnit setVariable [QGVAR(attached), nil, true]; From 183e872f1ff879eafa9a82f852f0a5b92b5d01de Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 22:44:52 +0200 Subject: [PATCH 160/620] Possible fix for #2298 --- .../medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index effa1e74a7..0b5a0a9973 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -99,8 +99,7 @@ if (GVAR(healHitPointAfterAdvBandage) && {{(_x select 2) == _part && {_x select _hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; _point = _hitPoints select (_hitSelections find _selectionName); - [_target, _point, 0] call FUNC(setHitPointDamage); - // _target setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true]; + _target setHitPointDamage [_point, 0]; }; true; From b291141d11a73035fe8a024d98869fee531f8c9b Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 22:51:42 +0200 Subject: [PATCH 161/620] Should Be a better fix for #2298 --- addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index 0b5a0a9973..0b19c05b03 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -95,7 +95,7 @@ if (_impact > 0 && {GVAR(enableAdvancedWounds)}) then { }; // If all wounds have been bandaged, we will reset all damage to 0, so the unit is not showing any blood on the model anymore. -if (GVAR(healHitPointAfterAdvBandage) && {{(_x select 2) == _part && {_x select 3 > 0}}count _openWounds == 0}) then { +if (GVAR(healHitPointAfterAdvBandage) && {{(_x select 2) == _part && {((_x select 4) * (_x select 3)) > 0}}count _openWounds == 0}) then { _hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; _point = _hitPoints select (_hitSelections find _selectionName); From ce42f5864fbcd51f718d82935efe19f11b6ec905 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 22:53:08 +0200 Subject: [PATCH 162/620] fix #2155 --- addons/medical/functions/fnc_getBloodPressure.sqf | 2 +- addons/medical/functions/fnc_handleUnitVitals.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_getBloodPressure.sqf b/addons/medical/functions/fnc_getBloodPressure.sqf index 2ba0b7366d..659949d716 100644 --- a/addons/medical/functions/fnc_getBloodPressure.sqf +++ b/addons/medical/functions/fnc_getBloodPressure.sqf @@ -30,4 +30,4 @@ _resistance = _unit getvariable [QGVAR(peripheralResistance), 100]; _bloodPressureHigh = (_cardiacOutput * MODIFIER_BP_HIGH) * _resistance; _bloodPressureLow = (_cardiacOutput * MODIFIER_BP_LOW) * _resistance; -[_bloodPressureLow, _bloodPressureHigh] +[_bloodPressureLow max 0, _bloodPressureHigh max 0] diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index cbb8f6fdcc..db312eea34 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -104,7 +104,7 @@ if (GVAR(level) >= 2) then { // Set the vitals _heartRate = (_unit getvariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval); - _unit setvariable [QGVAR(heartRate), _heartRate, _syncValues]; + _unit setvariable [QGVAR(heartRate), _heartRate max 0, _syncValues]; _bloodPressure = [_unit] call FUNC(getBloodPressure); _unit setvariable [QGVAR(bloodPressure), _bloodPressure, _syncValues]; From 602ef690fcf59f8eb19f983827add5548fba5970 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 22:54:51 +0200 Subject: [PATCH 163/620] Allow diagnose on torso #1879 --- addons/medical/ACE_Medical_Treatments.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index b96dcaf21b..18fd875bf6 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -93,7 +93,7 @@ class ACE_Medical_Actions { displayNameProgress = CSTRING(Actions_Diagnosing); category = "examine"; treatmentLocations[] = {"All"}; - allowedSelections[] = {"head"}; + allowedSelections[] = {"head", "body"}; requiredMedic = 0; treatmentTime = 1; items[] = {}; From 2fd30ba20c134d1b208089265739cf3787d02c65 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 29 Aug 2015 22:57:52 +0200 Subject: [PATCH 164/620] fixes #2274 --- addons/medical/functions/fnc_getTypeOfDamage.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/medical/functions/fnc_getTypeOfDamage.sqf b/addons/medical/functions/fnc_getTypeOfDamage.sqf index afa687f137..7a351e0b77 100644 --- a/addons/medical/functions/fnc_getTypeOfDamage.sqf +++ b/addons/medical/functions/fnc_getTypeOfDamage.sqf @@ -17,6 +17,7 @@ params ["_typeOfProjectile"]; if (_typeOfProjectile isKindOf "BulletBase") exitWith {"bullet"}; +if (_typeOfProjectile isKindOf "ShotgunBase") exitwith {"bullet"}; if (_typeOfProjectile isKindOf "GrenadeCore") exitWith {"grenade"}; if (_typeOfProjectile isKindOf "TimeBombCore") exitWith {"explosive"}; if (_typeOfProjectile isKindOf "MineCore") exitWith {"explosive"}; From 17f647f34125743cf2a2a204e68b7d01a7ad1aad Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 30 Aug 2015 01:42:42 +0200 Subject: [PATCH 165/620] PL translation --- addons/explosives/stringtable.xml | 1 + addons/hearing/stringtable.xml | 4 +++- addons/map/stringtable.xml | 5 ++++- addons/repair/stringtable.xml | 15 +++++++++++++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index b115ca0752..4a3caf0b44 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -76,6 +76,7 @@ Blocked Obstruido + Zablokowany Cancel diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 2e58162b15..3a1b2fdddc 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -145,9 +145,11 @@ Effect Zeus RC + Wpływ na Zeus RC Allow zeus remote controlled units to be able to take hearing damage. + Aktywuj efekty utraty słuchu dla jednostek kontrolowanych zdalnie przez Zeusa. - + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index f996800346..8e2bd588b5 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -21,12 +21,15 @@ Simulate map lighting based on ambient lighting and player's items? + Symuluj oświetlenie mapy bazujące na oświetleniu otoczenia oraz przedmiotach gracza? Map flashlight glow? + Poświata latarki Add external glow to players who use flashlight on map? + Pokaż poświatę światła latarki na graczu, który używa latarki na widoku mapy? Map shake? @@ -184,4 +187,4 @@ Zmniejsz czułość - + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 09759344f8..7287360f11 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -232,12 +232,15 @@ Left Horizontal Stabilizer + Stabilizator horyzontalny lewy Right Horizontal Stabilizer + Stabilizator horyzontalny prawy Vertical Stabilizer + Stabilizator wertykalny Fuel Tank @@ -253,24 +256,31 @@ Transmission + Skrzynia biegów Gear + Podwozie Starter + Zapłon Tail + Ogon Pilot Tube + Rurka Pitota Static Port + Port statyczny Ammo + Amunicja Turret @@ -298,6 +308,7 @@ Missiles + Rakiety Left Track @@ -657,4 +668,4 @@ Przydziel klasę budynku naprawczego do jednego lub kilku budynków. - + \ No newline at end of file From 9187b31b92d2e96afcce195116d2bebe127f176c Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 30 Aug 2015 01:47:20 +0200 Subject: [PATCH 166/620] pitot tube --- addons/repair/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 7287360f11..0122d27c74 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -270,8 +270,8 @@ Tail Ogon - - Pilot Tube + + Pitot Tube Rurka Pitota From 5662e9eb628b74a3d4f7339d74f7ceb47901eace Mon Sep 17 00:00:00 2001 From: Grzegorz Date: Sun, 30 Aug 2015 01:54:43 +0200 Subject: [PATCH 167/620] proper name for stabilizer --- addons/repair/stringtable.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 0122d27c74..17c3edc4fd 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -232,15 +232,15 @@ Left Horizontal Stabilizer - Stabilizator horyzontalny lewy + Lewy statecznik poziomy Right Horizontal Stabilizer - Stabilizator horyzontalny prawy + Prawy statecznik poziomy Vertical Stabilizer - Stabilizator wertykalny + Statecznik pionowy Fuel Tank @@ -668,4 +668,4 @@ Przydziel klasę budynku naprawczego do jednego lub kilku budynków. - \ No newline at end of file + From 35b6e04345028e8a89200e4ac06f10c6e5e2400b Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 07:35:58 +0200 Subject: [PATCH 168/620] rewrite Caching in overpressure update code to params command update Comments --- addons/overpressure/CfgWeapons.hpp | 7 ++ .../functions/fnc_cacheOverPressureValues.sqf | 65 +++++++++++++------ .../functions/fnc_fireLauncherBackblast.sqf | 20 +++--- .../functions/fnc_fireOverpressureZone.sqf | 29 +++++---- .../overpressure/functions/fnc_firedEHBB.sqf | 38 ++++++----- .../overpressure/functions/fnc_firedEHOP.sqf | 25 +++---- .../functions/fnc_getDistance.sqf | 10 +-- .../functions/fnc_overpressureDamage.sqf | 17 +++-- 8 files changed, 128 insertions(+), 83 deletions(-) diff --git a/addons/overpressure/CfgWeapons.hpp b/addons/overpressure/CfgWeapons.hpp index e9170a4b2e..a88fa90894 100644 --- a/addons/overpressure/CfgWeapons.hpp +++ b/addons/overpressure/CfgWeapons.hpp @@ -3,6 +3,7 @@ class CfgWeapons { class LauncherCore; class Launcher: LauncherCore { + GVAR(priority) = 1; GVAR(angle) = 60; GVAR(range) = 10; GVAR(damage) = 0.7; @@ -11,6 +12,7 @@ class CfgWeapons { class Launcher_Base_F: Launcher {}; class launch_Titan_base: Launcher_Base_F { + GVAR(priority) = 1; GVAR(angle) = 40; GVAR(range) = 8; GVAR(damage) = 0.5; @@ -18,6 +20,7 @@ class CfgWeapons { class launch_Titan_short_base: launch_Titan_base { // Titan is a soft-launch launcher + GVAR(priority) = 1; GVAR(angle) = 30; GVAR(range) = 2; GVAR(damage) = 0.5; @@ -25,12 +28,14 @@ class CfgWeapons { class launch_NLAW_F: Launcher_Base_F { // NLAW is a soft-launch launcher + GVAR(priority) = 1; GVAR(angle) = 30; GVAR(range) = 2; GVAR(damage) = 0.6; }; class launch_RPG32_F: Launcher_Base_F { + GVAR(priority) = 1; GVAR(angle) = 60; GVAR(range) = 15; GVAR(damage) = 0.7; @@ -38,12 +43,14 @@ class CfgWeapons { class CannonCore; class cannon_120mm: CannonCore { + GVAR(priority) = 1; GVAR(angle) = 90; GVAR(range) = 50; GVAR(damage) = 0.85; }; class mortar_155mm_AMOS: CannonCore { + GVAR(priority) = 1; GVAR(angle) = 90; GVAR(range) = 60; GVAR(damage) = 1; diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index 0453b2437b..c26796b5a5 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -4,30 +4,57 @@ * Handle fire of local launchers * * Argument: - * 0: Magazine (String) - * 1: + * 0: Weapon + * 1: Magazine + * 2: Ammo * * Return value: * Array: - * 0: - * 1: - * 2: + * 0: Angle + * 1: Range + * 2: Damage * */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_weapon,_magazine); -if !(isNil (QGVAR(Damage) + _magazine)) exitWith {}; -private ["_damage","_angle","_range"]; -_damage = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(damage)); -if (_damage == 0) then { - _angle = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(angle)) / 2; - _range = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(range)); - _damage = getNumber (configFile >> "CfgWeapons" >> _weapon >> QGVAR(damage)); -} else { - _angle = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(angle)) / 2; - _range = getNumber (configFile >> "CfgMagazines" >> _magazine >> QGVAR(range)); -}; +params ["_weapon", "_magazine", "_ammo"]; -missionNameSpace setVariable [(QGVAR(values) + _magazine),[_angle, _range,_damage]]; -[_angle,_range,_damage] +private ["_array", "_type", "_return", "_config"]; + +// get Priority Array from Config +_array = [ + getNumber (configFile >> "CfgWeapons" >> QGVAR(priority)), + getNumber (configFile >> "CfgMagazines" >> QGVAR(priority)), + getNumber (configFile >> "CfgAmmo" >> QGVAR(priority)) +]; + +// define Fist Values for Types +_type = 0; +_array params ["_max"]; + +// get Highest Entry out the the Priority Array +{ + if (_max < _x) then { + _max = _x; + _type = _forEachIndex; + }; +} forEach _array; + +// create the Config entry Point +[ + (configFile >> "CfgWeapons" >> _weapon), + (configFile >> "CfgMagazines" >> _magazine), + (configFile >> "CfgMagazines" >> _ammo) +] select _type; + +// get the Variables out of the Configes and create a array with then +_return = [ + (getNumber (_config >> QGVAR(angle))), + (getNumber (_config >> QGVAR(range))), + (getNumber (_config >> QGVAR(damage))) +]; + + +missionNameSpace setVariable [format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine], _return]; + +_return diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 5bc9d1c1e1..24068bf9b5 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -3,14 +3,14 @@ * * Handle fire of local launchers * - * Argument: - * 0: Unit that fired (Object) - * 1: Weapon fired (String) - * 2: Muzzle (String) - * 3: Mode (String) - * 4: Ammo (String) - * 5: Magazine (String) - * 6: Projectile (Object) + * Arguments: + * 0: Unit that fired + * 1: Weapon fired + * 2: Muzzle + * 3: Mode + * 4: Ammo + * 5: Magazine + * 6: Projectile * * Return value: * None @@ -18,7 +18,7 @@ #include "script_component.hpp" -EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); +params ["_firer", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile"]; // Prevent AI from causing backblast damage if !([_firer] call EFUNC(common,isPlayer)) exitWith {}; @@ -29,7 +29,7 @@ _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private ["_var","_varName","_backblastAngle", "_backblastRange", "_backblastDamage"]; -_varName = (QGVAR(values) + _magazine); +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { [_weapon,_magazine] call FUNC(cacheOverPressureVales); } else { diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 5e17036a13..57b4ea4bd5 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -3,14 +3,14 @@ * * Handle fire of local vehicle weapons creating overpressure zones * - * Argument: - * 0: Unit that fired (Object) - * 1: Weapon fired (String) - * 2: Muzzle (String) - * 3: Mode (String) - * 4: Ammo (String) - * 5: Magazine (String) - * 6: Projectile (Object) + * Arguments: + * 0: Unit that fired + * 1: Weapon fired + * 2: Muzzle + * 3: Mode + * 4: Ammo + * 5: Magazine + * 6: Projectile * * Return value: * None @@ -18,8 +18,7 @@ //#define DEBUG_MODE_FULL #include "script_component.hpp" -EXPLODE_7_PVT(_this,_firer,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile); - +params ["_firer", "_weapon", "_muzzle", "_mode", "_ammo", "_magazine", "_projectile"]; // Prevent AI from causing overpressure damage if !([gunner _firer] call EFUNC(common,isPlayer)) exitWith {}; //@todo non-maingun turrets? @@ -28,10 +27,12 @@ private ["_position", "_direction"]; _position = getPosASL _projectile; _direction = vectorDir _projectile; -private ["_var","_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; -_varName = (QGVAR(values) + _magazine); +private ["_var", "_varName", "_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; + +// Bake Variablen Name and Check if the Variable Exist else call the Cache Function +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { - [_weapon,_magazine] call FUNC(cacheOverPressureVales); + [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales); } else { missionNameSpace getVariable _varName; }; @@ -42,7 +43,7 @@ private "_affected"; _affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units -["overpressure", _affected, [_firer, _position, _direction, _weapon,_magazine]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon, _magazine, _ammo]] call EFUNC(common,targetEvent); // Draw debug lines #ifdef DEBUG_MODE_FULL diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 5408ecda29..d8f97100c4 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -3,25 +3,29 @@ * * Handle fire of local launchers * - * Argument: - * 0: Unit that fired (Object) - * 1: Weapon fired (String) - * 2: Muzzle (String) - * 3: Mode (String) - * 4: Ammo (String) - * 5: Magazine (String) - * 6: Projectile (Object) + * Arguments: + * 0: Unit that fired + * 1: Weapon fired + * 2: Muzzle + * 3: Mode + * 4: Ammo + * 5: Magazine + * 6: Projectile * * Return value: * None */ - private ["_var","_varName"]; - _varName = (QGVAR(values) + _this select 1); - _var = if (isNil _varName) then { - ([_this select 1,_this select 5] call FUNC(cacheOverPressureVales)) select 2; - } else { - (missionNameSpace getVariable _varName) select 2; - }; - if (_var > 0) then { +private ["_var","_varName"]; +params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; + +// Bake Variable Name and Check if the Variable Exist else call the Cache Function +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; +_var = if (isNil _varName) then { + ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales)) select 2; +} else { + (missionNameSpace getVariable _varName) select 2; +}; + +if (_var > 0) then { _this call DFUNC(fireLauncherBackblast) - }; +}; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index f2ca912690..e226e40fc3 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -3,26 +3,29 @@ * * Handle fire of Other Weapons * - * Argument: - * 0: Unit that fired (Object) - * 1: Weapon fired (String) - * 2: Muzzle (String) - * 3: Mode (String) - * 4: Ammo (String) - * 5: Magazine (String) - * 6: Projectile (Object) + * Arguments: + * 0: Unit that fired + * 1: Weapon fired + * 2: Muzzle + * 3: Mode + * 4: Ammo + * 5: Magazine + * 6: Projectile * * Return value: * None */ - private ["_var","_varName"]; -_varName = (QGVAR(values) + _this select 1); +params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; + +// Bake Variable Name and Check if the Variable Exist else call the Cache Function +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { - ([_this select 1,_this select 5] call FUNC(cacheOverPressureVales)) select 2; + ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales)) select 2; } else { (missionNameSpace getVariable _varName) select 2; }; + if (_var > 0) then { _this call DFUNC(fireOverpressureZone) }; diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 905ecbd180..3b3103d951 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -3,13 +3,13 @@ * * Calculate the distance to the first intersection of a line * - * Argument: - * 0: Pos ASL of origin (Array) - * 1: Direction (Array) - * 2: Max distance to search (Number) + * Arguments: + * 0: Pos ASL of origin (ARRAY> + * 1: Direction + * 2: Max distance to search * * Return value: - * Distance to intersection (+- 0.1 m) + * Distance to intersection (+- 0.1 m) */ #include "script_component.hpp" diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index 282cc1e5db..1dac20adb9 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -4,20 +4,23 @@ * Calculate and apply backblast damage to potentially affected local units * * Argument: - * 0: Unit that fired (Object) - * 1: Pos ASL of the projectile (Array) - * 2: Direction of the projectile (Array) - * 3: Weapon fired (String) + * 0: Unit that fired + * 1: Pos ASL of the projectile + * 2: Direction of the projectile + * 3: Weapon fired + * 4: Magazine + * 5: Ammo * * Return value: * None */ #include "script_component.hpp" -EXPLODE_4_PVT(_this,_firer,_posASL,_direction,_weapon,_magazine); - private ["_var","_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; -_varName = (QGVAR(values) + _magazine); +params ["_firer", "_posASL", "_direction", "_weapon", "_magazine", "_ammo"]; + +// Bake Variablen Name and Check if the Variable Exist else call the Cache Function +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { [_weapon,_magazine] call FUNC(cacheOverPressureVales); } else { From 6d2e25d40b012d8a96b51abd8f2b1fbf413bcbdc Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 07:38:17 +0200 Subject: [PATCH 169/620] change some DFUNC to FUNC --- addons/overpressure/CfgEventHandlers.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/overpressure/CfgEventHandlers.hpp b/addons/overpressure/CfgEventHandlers.hpp index 1c191b5a0d..6f8dba89bd 100644 --- a/addons/overpressure/CfgEventHandlers.hpp +++ b/addons/overpressure/CfgEventHandlers.hpp @@ -14,38 +14,38 @@ class Extended_PostInit_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHBB);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHBB);};); }; }; class Tank { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; class Car { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; class Helicopter { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; class Plane { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; class Ship_F { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; class StaticWeapon { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call DFUNC(firedEHOP);};); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(firedEHOP);};); }; }; }; From d97cb8e78f227e5c0b56b185c5126477cfe74a1a Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 07:49:12 +0200 Subject: [PATCH 170/620] add Missing Include --- addons/overpressure/functions/fnc_firedEHBB.sqf | 1 + addons/overpressure/functions/fnc_firedEHOP.sqf | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index d8f97100c4..5065bb106e 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -15,6 +15,7 @@ * Return value: * None */ +#include "script_component.hpp" private ["_var","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index e226e40fc3..4c6e224d0f 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -15,6 +15,7 @@ * Return value: * None */ +#include "script_component.hpp" private ["_var","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; @@ -26,6 +27,6 @@ _var = if (isNil _varName) then { (missionNameSpace getVariable _varName) select 2; }; - if (_var > 0) then { +if (_var > 0) then { _this call DFUNC(fireOverpressureZone) - }; +}; From 8307ccea9638e43fce04d3c4958eb9c57c9b7c88 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 30 Aug 2015 01:37:14 -0500 Subject: [PATCH 171/620] firedNear - use new isKindOf --- addons/hearing/functions/fnc_firedNear.sqf | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf index 1ede8db3ea..1ee84a2dc8 100644 --- a/addons/hearing/functions/fnc_firedNear.sqf +++ b/addons/hearing/functions/fnc_firedNear.sqf @@ -7,8 +7,8 @@ * 1: Firer: Object - Object which fires a weapon near the unit * 2: Distance - Distance in meters between the unit and firer * 3: weapon - Fired weapon - * 4: muzzle - Muzzle that was used - * 5: mod - Current mode of the fired weapon + * 4: muzzle - Muzzle that was used (not used) + * 5: mode - Current mode of the fired weapon (not used) * 6: ammo - Ammo used * * Return Value: @@ -16,6 +16,7 @@ * * Example: * [clientFiredNearEvent] call ace_hearing_fnc_firedNear + * [player, player, 10, "arifle_MX_ACO_pointer_F", "arifle_MX_ACO_pointer_F", "single", "B_65x39_Caseless"] call ace_hearing_fnc_firedNear * * Public: No */ @@ -24,14 +25,14 @@ //Only run if deafness or ear ringing is enabled: if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {}; -params ["_object", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo"]; +params ["_object", "_firer", "_distance", "_weapon", "", "", "_ammo"]; //Only run if firedNear object is player or player's vehicle: if ((ACE_player != _object) && {(vehicle ACE_player) != _object}) exitWith {}; if (_weapon in ["Throw", "Put"]) exitWith {}; if (_distance > 50) exitWith {}; -private ["_silencer", "_audibleFireCoef", "_loudness", "_strength", "_vehAttenuation", "_magazine", "_muzzles", "_weaponMagazines", "_muzzleMagazines", "_ammoType", "_initSpeed", "_ammoConfig", "_caliber", "_parentClasses"]; +private ["_silencer", "_audibleFireCoef", "_loudness", "_strength", "_vehAttenuation", "_magazine", "_muzzles", "_weaponMagazines", "_muzzleMagazines", "_ammoType", "_initSpeed", "_ammoConfig", "_caliber"]; _vehAttenuation = if ((ACE_player == (vehicle ACE_player)) || {isTurnedOut ACE_player}) then {1} else {GVAR(playerVehAttenuation)}; @@ -78,21 +79,20 @@ if (_magazine == "") exitWith {}; _initSpeed = getNumber(configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); _ammoConfig = (configFile >> "CfgAmmo" >> _ammo); -_parentClasses = [_ammoConfig, true] call BIS_fnc_returnParents; _caliber = getNumber(_ammoConfig >> "ACE_caliber"); _caliber = call { - if ("ShellBase" in _parentClasses) exitWith { 80 }; - if ("RocketBase" in _parentClasses) exitWith { 200 }; - if ("MissileBase" in _parentClasses) exitWith { 600 }; - if ("SubmunitionBase" in _parentClasses) exitWith { 80 }; + if (_ammo isKindOf ["ShellBase", (configFile >> "CfgAmmo")]) exitWith { 80 }; + if (_ammo isKindOf ["RocketBase", (configFile >> "CfgAmmo")]) exitWith { 200 }; + if (_ammo isKindOf ["MissileBase", (configFile >> "CfgAmmo")]) exitWith { 600 }; + if (_ammo isKindOf ["SubmunitionBase", (configFile >> "CfgAmmo")]) exitWith { 80 }; if (_caliber <= 0) then { 6.5 } else { _caliber }; }; _loudness = (_caliber ^ 1.25 / 10) * (_initspeed / 1000) * _audibleFireCoef / 5; _strength = _vehAttenuation * (_loudness - (_loudness / 50 * _distance)); // linear drop off -//systemChat format["%1 : %2 : %3", _strength, _initSpeed, _parentClasses]; +//systemChat format["%1 : %2", _strength, _initSpeed]; //systemChat format["%1 : %2 : %3", _weapon, _magazine, _initSpeed]; if (_strength < 0.01) exitWith {}; -[{_this call FUNC(earRinging)}, [ACE_player, _strength], 0.2, 0] call EFUNC(common,waitAndExecute); +[{_this call FUNC(earRinging)}, [ACE_player, _strength], 0.2] call EFUNC(common,waitAndExecute); From 910bb151e252d4c116b5603459194301d8d78aa9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 30 Aug 2015 01:47:40 -0500 Subject: [PATCH 172/620] #1988 - Boost explosive hearing damage --- addons/hearing/CfgEventHandlers.hpp | 2 +- addons/hearing/functions/fnc_explosionNear.sqf | 8 ++++++-- addons/hearing/functions/fnc_moduleHearing.sqf | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/hearing/CfgEventHandlers.hpp b/addons/hearing/CfgEventHandlers.hpp index ce968ed2ca..f09f259266 100644 --- a/addons/hearing/CfgEventHandlers.hpp +++ b/addons/hearing/CfgEventHandlers.hpp @@ -29,7 +29,7 @@ class Extended_FiredNear_EventHandlers { class Extended_Explosion_EventHandlers { class CAManBase { class GVAR(ExplosionNear) { - clientExplosion = QUOTE( if (GVAR(enableCombatDeafness) && {_this select 0 == ACE_player}) then {_this call FUNC(explosionNear)}; ); + clientExplosion = QUOTE(_this call FUNC(explosionNear);); }; }; }; diff --git a/addons/hearing/functions/fnc_explosionNear.sqf b/addons/hearing/functions/fnc_explosionNear.sqf index 8cea263fec..7e4d0b9bfc 100644 --- a/addons/hearing/functions/fnc_explosionNear.sqf +++ b/addons/hearing/functions/fnc_explosionNear.sqf @@ -21,8 +21,12 @@ if ((!GVAR(enableCombatDeafness)) && GVAR(DisableEarRinging)) exitWith {}; params ["_unit", "_damage"]; +if (_unit != ACE_player) exitWith {}; + +TRACE_2("explosion near player",_unit,_damage); + private ["_strength"]; -_strength = 0 max _damage; +_strength = (0 max _damage) * 30; if (_strength < 0.01) exitWith {}; -[{_this call FUNC(earRinging)}, [_unit, _strength], 0.2, 0] call EFUNC(common,waitAndExecute); +[{_this call FUNC(earRinging)}, [_unit, _strength], 0.2] call EFUNC(common,waitAndExecute); diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf index 035d5eaa88..2b4daecc72 100644 --- a/addons/hearing/functions/fnc_moduleHearing.sqf +++ b/addons/hearing/functions/fnc_moduleHearing.sqf @@ -9,9 +9,8 @@ * None */ #include "script_component.hpp" -params ["_logic", "_units", "_activated"]; -if !(_activated) exitWith {}; +params ["_logic"]; [_logic, QGVAR(enableCombatDeafness), "EnableCombatDeafness"] call EFUNC(common,readSettingFromModule); From 32300a0a809b62c89199bb3cc446dc628bd9eb7b Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 10:45:14 +0200 Subject: [PATCH 173/620] objectParent command replacing fnc_getBackpackAssignedUnit --- addons/backpacks/XEH_preInit.sqf | 1 - .../functions/fnc_getBackpackAssignedUnit.sqf | 22 ------------------- .../functions/fnc_onOpenInventory.sqf | 13 ++++++----- 3 files changed, 7 insertions(+), 29 deletions(-) delete mode 100644 addons/backpacks/functions/fnc_getBackpackAssignedUnit.sqf diff --git a/addons/backpacks/XEH_preInit.sqf b/addons/backpacks/XEH_preInit.sqf index a47825d0b0..f4c6a1a5d8 100644 --- a/addons/backpacks/XEH_preInit.sqf +++ b/addons/backpacks/XEH_preInit.sqf @@ -3,7 +3,6 @@ ADDON = false; PREP(backpackOpened); -PREP(getBackpackAssignedUnit); PREP(isBackpack); PREP(onOpenInventory); diff --git a/addons/backpacks/functions/fnc_getBackpackAssignedUnit.sqf b/addons/backpacks/functions/fnc_getBackpackAssignedUnit.sqf deleted file mode 100644 index 85f5966aa9..0000000000 --- a/addons/backpacks/functions/fnc_getBackpackAssignedUnit.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Author: commy2 - * - * Returns the unit that has the given backpack object equipped. - * - * Argument: - * 0: Executing Unit (Object) - * 1: A backpack object (Object) - * - * Return value: - * Unit that has the backpack equipped. (Object) - */ -#include "script_component.hpp" -scopeName "main"; - -params ["_unit","_backpack"]; -_target = objNull; -{ - if (backpackContainer _x == _backpack) then {_target = _x; breakTo "main"}; -} count nearestObjects [_unit, ["Man"], 5]; -if (isNull _target) exitWith {ACE_Player}; -_target diff --git a/addons/backpacks/functions/fnc_onOpenInventory.sqf b/addons/backpacks/functions/fnc_onOpenInventory.sqf index d79f8aed9b..afeeb21313 100644 --- a/addons/backpacks/functions/fnc_onOpenInventory.sqf +++ b/addons/backpacks/functions/fnc_onOpenInventory.sqf @@ -1,7 +1,7 @@ /* * Author: commy2 * - * Handle the open inventory event. Display message on traget client. + * Handle the open inventory event. Display message on target client. * * Argument: * Input from "InventoryOpened" eventhandler @@ -11,16 +11,17 @@ */ #include "script_component.hpp" -private "_target"; -params ["","_backpack"]; +params ["_unit","_backpack"]; -// exit if the target is not a backpack -if !([_backpack] call FUNC(isBackpack)) exitWith {}; +// exit if the target is not a real backpack, i.e. parachute, static weapon bag etc. +if !([_backpack] call FUNC(isBackpack)) exitWith {false}; // get the unit that wears the backpack object -_target = _this call FUNC(getBackpackAssignedUnit); +private "_target"; +_target = objectParent _backpack; if (isNull _target) exitWith {false}; + // raise event on target unit ["backpackOpened", _target, [_target, _backpack]] call EFUNC(common,targetEvent); From 4682235d8a937fa6e02ebfa808442c214380191e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 11:13:26 +0200 Subject: [PATCH 174/620] increase reach in 3rd person for opening doors, fix #2301 --- addons/interaction/XEH_postInit.sqf | 2 +- addons/interaction/functions/fnc_openDoor.sqf | 4 ++-- addons/interaction/script_component.hpp | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 8db2d34ad1..801102b4d4 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -35,7 +35,7 @@ private ["_team"]; // Conditions: canInteract if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if (GVAR(isOpeningDoor) || {[2] call FUNC(getDoor) select 1 == ''}) exitWith {false}; + if (GVAR(isOpeningDoor) || {[MACRO_DOOR_REACH_DISTANCE] call FUNC(getDoor) select 1 == ''}) exitWith {false}; // Statement call EFUNC(interaction,openDoor); diff --git a/addons/interaction/functions/fnc_openDoor.sqf b/addons/interaction/functions/fnc_openDoor.sqf index db808e2eba..9555502a93 100644 --- a/addons/interaction/functions/fnc_openDoor.sqf +++ b/addons/interaction/functions/fnc_openDoor.sqf @@ -18,7 +18,7 @@ private ["_info", "_phase", "_position", "_time", "_usedMouseWheel", "_getDoorAnimations"]; -_info = [2] call FUNC(getDoor); +_info = [MACRO_DOOR_REACH_DISTANCE] call FUNC(getDoor); EXPLODE_2_PVT(_info,_house,_door); @@ -36,7 +36,7 @@ if (_house animationPhase (_animations select 0) <= 0 && {_house getVariable [_l }; GVAR(isOpeningDoor) = true; -playSound "ACE_Sound_Click"; +playSound "ACE_Sound_Click"; //@todo replace with smth. more fitting [_house, _animations] spawn { private ["_house", "_animations", "_phase", "_position", "_time", "_usedMouseWheel"]; diff --git a/addons/interaction/script_component.hpp b/addons/interaction/script_component.hpp index 68f22e96d7..d668387bb9 100644 --- a/addons/interaction/script_component.hpp +++ b/addons/interaction/script_component.hpp @@ -9,4 +9,6 @@ #define DEBUG_SETTINGS DEBUG_SETTINGS_INTERACTION #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" + +#define MACRO_DOOR_REACH_DISTANCE (AGLToASL positionCameraToWorld [0,0,0] vectorDistance AGLToASL (ACE_player modelToWorld (ACE_player selectionPosition "Head"))) + 2 From 58ec4a68cb00f90a404ef51f47b35434c0482647 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 12:01:13 +0200 Subject: [PATCH 175/620] fix weapon select in ffv slots not working --- addons/weaponselect/XEH_postInit.sqf | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index dfb70f4f71..d2bfb55236 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -7,7 +7,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectPistolNew), localize LSTRING(SelectPistol), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -21,7 +21,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectRifleNew), localize LSTRING(SelectRifle), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -35,7 +35,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectRifleMuzzleNew), localize LSTRING(SelectRifleMuzzle), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -49,7 +49,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectLauncherNew), localize LSTRING(SelectLauncher), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -63,7 +63,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectBinocularNew), localize LSTRING(SelectBinocular), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -77,7 +77,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectGrenadeFrag), localize LSTRING(SelectGrenadeFrag), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -91,7 +91,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(SelectGrenadeOther), localize LSTRING(SelectGrenadeOther), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -105,7 +105,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(HolsterWeapon), localize LSTRING(HolsterWeapon), { // Conditions: canInteract - if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, ACE_player, ["isNotInside", "isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !([ACE_player] call EFUNC(common,canUseWeapon)) exitWith {false}; @@ -130,12 +130,12 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(EngineOn), localize LSTRING(EngineOn), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !((ACE_player != vehicle ACE_player) && {ACE_player == driver vehicle ACE_player} && {!isEngineOn vehicle ACE_player}) exitWith {false}; // Statement - (vehicle ACE_player) engineOn true; + vehicle ACE_player engineOn true; true }, {false}, @@ -144,12 +144,12 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(EngineOff), localize LSTRING(EngineOff), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !(ACE_player != vehicle ACE_player && {ACE_player == driver vehicle ACE_player} && {isEngineOn vehicle ACE_player}) exitWith {false}; // Statement - (vehicle ACE_player) engineOn false; + vehicle ACE_player engineOn false; true }, {false}, @@ -158,7 +158,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(SelectMainGunNew), localize LSTRING(SelectMainGun), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !(ACE_player != vehicle ACE_player) exitWith {false}; @@ -172,7 +172,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(SelectMachineGunNew), localize LSTRING(SelectMachineGun), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !(ACE_player != vehicle ACE_player) exitWith {false}; @@ -186,7 +186,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(SelectMissilesNew), localize LSTRING(SelectMissiles), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !(ACE_player != vehicle ACE_player) exitWith {false}; @@ -200,7 +200,7 @@ if !(hasInterface) exitWith {}; ["ACE3 Vehicles", QGVAR(FireSmokeLauncher), localize LSTRING(FireSmokeLauncher), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), []] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific if !(ACE_player != vehicle ACE_player && {ACE_player == commander vehicle ACE_player}) exitWith {false}; From 610bb7a1df1e292cd522c98117cfcc5a049847fc Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 13:10:25 +0200 Subject: [PATCH 176/620] better animation for spotting scope, fix #1638 --- addons/spottingscope/CfgMoves.hpp | 28 ++++++++++++++++++++ addons/spottingscope/CfgVehicles.hpp | 2 +- addons/spottingscope/config.cpp | 5 ++-- addons/spottingscope/data/spottingscope.p3d | Bin 1583477 -> 1585552 bytes 4 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 addons/spottingscope/CfgMoves.hpp diff --git a/addons/spottingscope/CfgMoves.hpp b/addons/spottingscope/CfgMoves.hpp new file mode 100644 index 0000000000..c7436801ee --- /dev/null +++ b/addons/spottingscope/CfgMoves.hpp @@ -0,0 +1,28 @@ + +class CfgMovesBasic { + class DefaultDie; + + class ManActions { + ACE_SpottingScope = "ACE_SpottingScope"; + }; +}; + +class CfgMovesMaleSdr: CfgMovesBasic { + class States { + class ACE_KIA_SpottingScope: DefaultDie { + actions = "DeadActions"; + file = "\A3\anims_f\Data\Anim\Sdr\dth\pne\stp\ras\Rfl\AdthPpneMstpSrasWrflDnon_1"; + speed = 1; + looped = "false"; + terminal = 1; + soundEnabled = 0; + connectTo[] = {"Unconscious",0.1}; + }; + + class Crew; + class ACE_SpottingScope: Crew { + file = "\A3\anims_f\Data\Anim\Sdr\Mov\pne\stp\non\non\AmovPpneMstpSnonWnonDnon"; + interpolateTo[] = {"ACE_KIA_SpottingScope",1}; + }; + }; +}; diff --git a/addons/spottingscope/CfgVehicles.hpp b/addons/spottingscope/CfgVehicles.hpp index b0b8bf9c77..2c8159fbb1 100644 --- a/addons/spottingscope/CfgVehicles.hpp +++ b/addons/spottingscope/CfgVehicles.hpp @@ -77,7 +77,7 @@ class CfgVehicles { gunnerOpticsEffect[] = {"OpticsCHAbera1","OpticsBlur2"}; gunnerOutOpticsShowCursor = 0; gunnerOpticsShowCursor = 0; - gunnerAction = "gunner_static_low01"; + gunnerAction = "ACE_SpottingScope"; gunnerGetInAction = "GetInLow"; gunnerGetOutAction = "GetOutLow"; gunnerForceOptics = 0; diff --git a/addons/spottingscope/config.cpp b/addons/spottingscope/config.cpp index a615e5da79..157e430868 100644 --- a/addons/spottingscope/config.cpp +++ b/addons/spottingscope/config.cpp @@ -6,11 +6,12 @@ class CfgPatches { weapons[] = {"ACE_SpottingScope"}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_apl", "ace_interaction"}; - author[] = {"Rocko", "Scubaman3D", "Ruthberg"}; + author[] = {"Rocko", "Scubaman3D", "Ruthberg", "commy2"}; VERSION_CONFIG; }; }; #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" \ No newline at end of file +#include "CfgWeapons.hpp" +#include "CfgMoves.hpp" diff --git a/addons/spottingscope/data/spottingscope.p3d b/addons/spottingscope/data/spottingscope.p3d index c4e0363dcf124ff1181bf332bfe028297e309950..fba9d66b913cf18b1cfef9b7e191808ce19c91d3 100644 GIT binary patch delta 690 zcmex*DPh9ngbg2TRldxeW6!|Az_=i|-{wYYt$p7ND1X{+n=Rgr`yVxPI&8OH#kC<( zGObU;X6vtdd(-MK)+p@eyYt)c&S%_ycRtg~4_wN@sX3|1C8;UO+aJtee#kt%;fFB$ z^aopn`?t+xUc)?HUxtru`!;UALlWD4Rx)d@Aa66%0ZXOE|vu>B0$9D1- zaYk}ivgfGdF>=BJ_U#iEaEP8G&bX6#oLhwO7&onvbNjSLu4WD5j3W@{oA1s~y)=_ss7#9Th+uTU4wf9ef@~7>#+2Y-}KW^b0`|UZKxHcq8 zruJ#rZ2eVlZ(9Au8in0_cYgcb`Hb7|&SzTrVf#a2zGD*Gt2Z)ht|89!6R|8g9=J_! z_g%&U#H`zWm$99^MVygVjqEw5c2>rFA(zqF+UIs0I?ttgXD#QSOkbgfmm$&nrGq- zCM--$3=G>1q$PGU`w|nqpy^ From fc6f97e09eec448ffe7e556463758f911685d8c8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 13:29:23 +0200 Subject: [PATCH 177/620] fix autoriflemen spawning with 0x frag grenade bug --- addons/overheating/CfgWeapons.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp index 025fa5e280..5c9717dbcf 100644 --- a/addons/overheating/CfgWeapons.hpp +++ b/addons/overheating/CfgWeapons.hpp @@ -9,7 +9,7 @@ class CfgWeapons { picture = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); scope = 2; class ItemInfo: InventoryItem_Base_F { - mass = 50; + mass = 30; }; }; From 8d589ea8f00f6b7809a2a2474f1f9a3295a0615d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 15:50:51 +0200 Subject: [PATCH 178/620] solution for custom cameras (for intros) being broken with ACE --- addons/optics/XEH_postInit.sqf | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index df6d0ae486..b4c326d31a 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -3,8 +3,18 @@ if (!hasInterface) exitWith {}; +#define ALL_CAMERAS [ \ + missionNamespace getVariable ["BIS_DEBUG_CAM", objNull], \ + missionNamespace getVariable ["BIS_fnc_camera_cam", objNull], \ + uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull], \ + uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull], \ + missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull], \ + missionNamespace getVariable ["ACE_CustomCamera", objNull] \ +] + 0 = 0 spawn { waituntil {!isNull ACE_player}; + waituntil {sleep 0.5; {!isNull _x} count ALL_CAMERAS == 0}; // PiP technique by BadBenson GVAR(camera) = "camera" camCreate positioncameratoworld [0,0,0]; From 74dfd73167569f63ab547866f992b96c28a75289 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 19:05:35 +0200 Subject: [PATCH 179/620] fix issues with pip optics camera in virtual arsenal --- addons/common/XEH_postInit.sqf | 11 +------- addons/optics/XEH_postInit.sqf | 27 +++++++++---------- addons/optics/functions/fnc_onDrawScope2D.sqf | 4 +-- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 1f060c8900..cd1c8c2dd0 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -284,22 +284,13 @@ GVAR(OldVisibleMap) = false; }, 0, []] call CBA_fnc_addPerFrameHandler; -// PFH to raise camera created event. Only works on these cams by BI. -#define ALL_CAMERAS [ \ - missionNamespace getVariable ["BIS_DEBUG_CAM", objNull], \ - missionNamespace getVariable ["BIS_fnc_camera_cam", objNull], \ - uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull], \ - uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull], \ - missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull] \ -] - GVAR(OldIsCamera) = false; [{ // "activeCameraChanged" event private ["_isCamera"]; - _isCamera = {!isNull _x} count ALL_CAMERAS > 0; + _isCamera = call FUNC(isfeatureCameraActive); if !(_isCamera isEqualTo GVAR(OldIsCamera)) then { // Raise ACE event locally GVAR(OldIsCamera) = _isCamera; diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index b4c326d31a..34b52b83fb 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -3,26 +3,22 @@ if (!hasInterface) exitWith {}; -#define ALL_CAMERAS [ \ - missionNamespace getVariable ["BIS_DEBUG_CAM", objNull], \ - missionNamespace getVariable ["BIS_fnc_camera_cam", objNull], \ - uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull], \ - uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull], \ - missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull], \ - missionNamespace getVariable ["ACE_CustomCamera", objNull] \ -] +GVAR(camera) = objNull; 0 = 0 spawn { waituntil {!isNull ACE_player}; - waituntil {sleep 0.5; {!isNull _x} count ALL_CAMERAS == 0}; + waituntil {sleep 0.5; !(call EFUNC(common,isfeatureCameraActive)) && isNull (missionNamespace getVariable ["ACE_CustomCamera", objNull])}; + + GVAR(camera) cameraEffect ["TERMINATE", "BACK"]; + camDestroy GVAR(camera); // PiP technique by BadBenson - GVAR(camera) = "camera" camCreate positioncameratoworld [0,0,0]; + GVAR(camera) = "camera" camCreate positionCameraToWorld [0,0,0]; GVAR(camera) camSetFov 0.7; GVAR(camera) camSetTarget ACE_player; GVAR(camera) camCommit 1; - "ace_optics_rendertarget0" setPiPEffect [2, 1.0, 1.0, 1.0, 0.0, [0.0, 1.0, 0.0, 0.25], [1.0, 0.0, 1.0, 1.0], [0.199, 0.587, 0.114, 0.0]]; + "ace_optics_rendertarget0" setPiPEffect [0]; GVAR(camera) cameraEffect ["INTERNAL", "BACK", "ace_optics_rendertarget0"]; }; @@ -33,18 +29,19 @@ if (!hasInterface) exitWith {}; }; }] call EFUNC(common,addEventHandler); -// camera has to be re-created every ACE_time another camera is created. Otherwise r2t is either black or transparent. @todo Add popular custom cameras to the event in ACE_common. +// camera has to be re-created every time another camera is created. Otherwise r2t is either black or transparent. @todo Add popular custom cameras to the event in ACE_common. ["activeCameraChanged", { if !(_this select 1) then { - deleteVehicle GVAR(camera); + GVAR(camera) cameraEffect ["TERMINATE", "BACK"]; + camDestroy GVAR(camera); // PiP technique by BadBenson - GVAR(camera) = "camera" camCreate positioncameratoworld [0,0,0]; + GVAR(camera) = "camera" camCreate positionCameraToWorld [0,0,0]; GVAR(camera) camSetFov 0.7; GVAR(camera) camSetTarget ACE_player; GVAR(camera) camCommit 1; - "ace_optics_rendertarget0" setPiPEffect [2, 1.0, 1.0, 1.0, 0.0, [0.0, 1.0, 0.0, 0.25], [1.0, 0.0, 1.0, 1.0], [0.199, 0.587, 0.114, 0.0]]; + "ace_optics_rendertarget0" setPiPEffect [0]; GVAR(camera) cameraEffect ["INTERNAL", "BACK", "ace_optics_rendertarget0"]; }; }] call EFUNC(common,addEventHandler); diff --git a/addons/optics/functions/fnc_onDrawScope2D.sqf b/addons/optics/functions/fnc_onDrawScope2D.sqf index 7abee8f122..9ea038f877 100644 --- a/addons/optics/functions/fnc_onDrawScope2D.sqf +++ b/addons/optics/functions/fnc_onDrawScope2D.sqf @@ -22,8 +22,8 @@ _optic = (primaryWeaponItems ACE_player) select 2; _isPIP = (getText (configFile >> "CfgWeapons" >> _optic >> "ItemInfo" >> "modelOptics")) == QUOTE(PATHTOF(models\ace_optics_pip.p3d)); if (_isPIP) then { - GVAR(camera) setposATL positioncameratoworld [0,0,0.4]; - GVAR(camera) camPrepareTarget positioncameratoworld [0,0,50]; + GVAR(camera) setPosATL positionCameraToWorld [0,0,0.4]; + GVAR(camera) camPrepareTarget positionCameraToWorld [0,0,50]; GVAR(camera) camCommitPrepared 0; // @todo, check if that needs to be done at all From c18af0d34bb2f0ab8520a12f9707ad94bda8de65 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 19:30:44 +0200 Subject: [PATCH 180/620] completely prevent ace_optics from interfering with any mission camera scripts --- addons/optics/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index 34b52b83fb..64226fcf3d 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -7,7 +7,7 @@ GVAR(camera) = objNull; 0 = 0 spawn { waituntil {!isNull ACE_player}; - waituntil {sleep 0.5; !(call EFUNC(common,isfeatureCameraActive)) && isNull (missionNamespace getVariable ["ACE_CustomCamera", objNull])}; + waituntil {sleep 1; {_x != GVAR(camera)} count allMissionObjects "camera" == 0}; GVAR(camera) cameraEffect ["TERMINATE", "BACK"]; camDestroy GVAR(camera); From fae38a223255f2c95a9dd09bd2fc715988fc8e68 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 20:20:00 +0200 Subject: [PATCH 181/620] tripod hmgs should have 100rnd mags instead of 500rnd mags, fix #1190 --- addons/vehicles/CfgVehicles.hpp | 93 +++++++++++++++++++++++++++++++++ addons/vehicles/CfgWeapons.hpp | 5 ++ 2 files changed, 98 insertions(+) diff --git a/addons/vehicles/CfgVehicles.hpp b/addons/vehicles/CfgVehicles.hpp index fa60a72961..a07781a413 100644 --- a/addons/vehicles/CfgVehicles.hpp +++ b/addons/vehicles/CfgVehicles.hpp @@ -331,4 +331,97 @@ class CfgVehicles { }; }; }; + + // static mgs shouldn't use 500 rnd mags. + class StaticWeapon: LandVehicle { + class Turrets { + class MainTurret; //: NewTurret {}; + }; + }; + + class StaticMGWeapon: StaticWeapon {}; + + class HMG_01_base_F: StaticMGWeapon { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag","100Rnd_127x99_mag","100Rnd_127x99_mag","100Rnd_127x99_mag","100Rnd_127x99_mag"}; + }; + }; + }; + + class B_HMG_01_F: HMG_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red"}; + }; + }; + }; + + class O_HMG_01_F: HMG_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green"}; + }; + }; + }; + + class I_HMG_01_F: HMG_01_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow"}; + }; + }; + }; + + class HMG_01_high_base_F: HMG_01_base_F {}; + + class B_HMG_01_high_F: HMG_01_high_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red"}; + }; + }; + }; + + class O_HMG_01_high_F: HMG_01_high_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green"}; + }; + }; + }; + + class I_HMG_01_high_F: HMG_01_high_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow"}; + }; + }; + }; + + class HMG_01_A_base_F: HMG_01_base_F {}; + + class B_HMG_01_A_F: HMG_01_A_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Red"}; + }; + }; + }; + + class O_HMG_01_A_F: HMG_01_A_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Green"}; + }; + }; + }; + + class I_HMG_01_A_F: HMG_01_A_base_F { + class Turrets: Turrets { + class MainTurret: MainTurret { + magazines[] = {"100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag_Tracer_Yellow"}; + }; + }; + }; }; diff --git a/addons/vehicles/CfgWeapons.hpp b/addons/vehicles/CfgWeapons.hpp index 2eee38643f..76feb1818a 100644 --- a/addons/vehicles/CfgWeapons.hpp +++ b/addons/vehicles/CfgWeapons.hpp @@ -62,4 +62,9 @@ class CfgWeapons { muzzles[] = {"AP"}; }; + + // make static weapons compatible with 100rnd mag variants + class HMG_static: HMG_01 { + magazines[] = {"500Rnd_127x99_mag","500Rnd_127x99_mag_Tracer_Red","500Rnd_127x99_mag_Tracer_Green","500Rnd_127x99_mag_Tracer_Yellow","200Rnd_127x99_mag","200Rnd_127x99_mag_Tracer_Red","200Rnd_127x99_mag_Tracer_Green","200Rnd_127x99_mag_Tracer_Yellow","100Rnd_127x99_mag","100Rnd_127x99_mag_Tracer_Red","100Rnd_127x99_mag_Tracer_Green","100Rnd_127x99_mag_Tracer_Yellow"}; + }; }; From c3beee82615496b2c29b6b7c179396f5d68c607e Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 21:13:29 +0200 Subject: [PATCH 182/620] make use of getHitpointsDamage command to drastically speed up some functions about hitpoints --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_getHitPoints.sqf | 46 ++-------------- .../fnc_getHitPointsWithSelections.sqf | 52 ++----------------- .../fnc_getSelectionsWithoutHitPoints.sqf | 28 ++++++++++ 4 files changed, 37 insertions(+), 90 deletions(-) create mode 100644 addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6fdf99113c..23b4e5c696 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -215,6 +215,7 @@ PREP(getConfigGunner); PREP(getConfigCommander); PREP(getHitPoints); PREP(getHitPointsWithSelections); +PREP(getSelectionsWithoutHitPoints); PREP(getReflectorsWithSelections); PREP(getLightProperties); PREP(getLightPropertiesWeapon); diff --git a/addons/common/functions/fnc_getHitPoints.sqf b/addons/common/functions/fnc_getHitPoints.sqf index 06b2b8d40b..491f243b44 100644 --- a/addons/common/functions/fnc_getHitPoints.sqf +++ b/addons/common/functions/fnc_getHitPoints.sqf @@ -1,7 +1,7 @@ /* * Author: commy2 * - * Returns all hitpoints of any vehicle. Non unique hitpoints in turrets are ignored. + * Returns all hitpoints of any vehicle. Might contain duplicates if the turrets contain non unique hitpoints with different selection names. * * Arguments: * 0: A vehicle, not the classname (Object) @@ -11,46 +11,6 @@ */ #include "script_component.hpp" -private ["_config", "_hitpoints", "_i"]; +params ["_vehicle"]; -PARAMS_1(_vehicle); - -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; - -_hitpoints = []; - -// get all classes that can contain hitpoints -private "_hitpointClasses"; -_hitpointClasses = [_config >> "HitPoints"]; -{ - private "_class"; - _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; - - if (isClass _class) then { - _hitpointClasses pushBack _class; - }; - -} forEach allTurrets _vehicle; - -// iterate through all classes with hitpoints and their parents -{ - private "_class"; - _class = _x; - - while {isClass _class} do { - - for "_i" from 0 to (count _class - 1) do { - private "_entry"; - _entry = configName (_class select _i); - - if (!(_entry in _hitpoints) && {!isNil {_vehicle getHitPointDamage _entry}}) then { - _hitpoints pushBack _entry; - }; - }; - - _class = inheritsFrom _class; - }; - -} forEach _hitpointClasses; - -_hitpoints +(getAllHitPointsDamage _vehicle select 0) - [""] diff --git a/addons/common/functions/fnc_getHitPointsWithSelections.sqf b/addons/common/functions/fnc_getHitPointsWithSelections.sqf index b66700881e..bc3799665e 100644 --- a/addons/common/functions/fnc_getHitPointsWithSelections.sqf +++ b/addons/common/functions/fnc_getHitPointsWithSelections.sqf @@ -11,51 +11,9 @@ */ #include "script_component.hpp" -private ["_config", "_hitpoints", "_selections", "_i"]; +params ["_vehicle"]; -PARAMS_1(_vehicle); - -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; - -_hitpoints = []; -_selections = []; - -// get all classes that can contain hitpoints -private "_hitpointClasses"; -_hitpointClasses = [_config >> "HitPoints"]; -{ - private "_class"; - _class = ([_config, _x] call FUNC(getTurretConfigPath)) >> "HitPoints"; - - if (isClass _class) then { - _hitpointClasses pushBack _class; - }; - -} forEach allTurrets _vehicle; - -// iterate through all classes with hitpoints and their parents -{ - private "_class"; - _class = _x; - - while {isClass _class} do { - - for "_i" from 0 to (count _class - 1) do { - if (isClass (_class select _i)) then { - private ["_entry", "_selection"]; - _entry = configName (_class select _i); - _selection = getText (_class select _i >> "name"); - - if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then { - _hitpoints pushBack _entry; - _selections pushBack _selection; - }; - }; - }; - - _class = inheritsFrom _class; - }; - -} forEach _hitpointClasses; - -[_hitpoints, _selections] +private "_hitPointsWithSelections"; +_hitPointsWithSelections = getAllHitPointsDamage _vehicle; +_hitPointsWithSelections resize 2; +_hitPointsWithSelections diff --git a/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf b/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf new file mode 100644 index 0000000000..277155108a --- /dev/null +++ b/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf @@ -0,0 +1,28 @@ +/* + * Author: commy2 + * + * Returns all damageable selections without hitpoints of any vehicle. + * + * Arguments: + * 0: A vehicle, not the classname (Object) + * + * Return Value: + * The selections without hitpoints, i.e. reflectors. (Array) + */ +#include "script_component.hpp" + +params ["_vehicle"]; + +private ["_hitPointsFull", "_allSelectionsWithoutHitpoints"]; + +_hitPointsFull = getAllHitPointsDamage _vehicle; + +_allSelectionsWithoutHitpoints = []; + +{ + if (_x == "") then { + _allSelectionsWithoutHitpoints pushBack (_hitPointsFull select 1 select _forEachIndex); + }; +} forEach (_hitPointsFull select 0); + +_allSelectionsWithoutHitpoints From 7a4c37c0854cab20cb6211f379823b37ce6f6a2c Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 30 Aug 2015 22:03:45 +0200 Subject: [PATCH 183/620] disable all actions on ladders by default, close #2289 --- .../functions/fnc_compileMenuSelfAction.sqf | 2 +- addons/interact_menu/functions/fnc_keyDown.sqf | 2 +- addons/interaction/CfgVehicles.hpp | 18 +++++++++--------- addons/interaction/XEH_postInit.sqf | 1 + 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf index f486b3ee58..2c8cdc279c 100644 --- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf +++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf @@ -122,7 +122,7 @@ _actions = if (_isMan) then { // Dummy statement so it's not collapsed when there's no available actions true }, - {[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)}, + {[ACE_player, _target, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting", "isNotOnLadder"]] call EFUNC(common,canInteractWith)}, {}, {}, "Spine3", diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index ca06e25eb6..8c8ecf0c20 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -18,7 +18,7 @@ if (GVAR(openedMenuType) == _menuType) exitWith {true}; // Conditions: canInteract (these don't apply to zeus) if ((isNull curatorCamera) && { - !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting"]] call EFUNC(common,canInteractWith)) + !([ACE_player, objNull, ["isNotInside","isNotDragging", "isNotCarrying", "isNotSwimming", "notOnMap", "isNotEscorting", "isNotSurrendering", "isNotSitting", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) }) exitWith {false}; while {dialog} do { diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index d2cef4c9ef..abfdb976ab 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -191,7 +191,7 @@ class CfgVehicles { class ACE_TeamManagement { displayName = CSTRING(TeamManagement); condition = QUOTE(GVAR(EnableTeamManagement)); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = ""; showDisabled = 1; priority = 3.2; @@ -201,7 +201,7 @@ class CfgVehicles { class ACE_JoinTeamRed { displayName = CSTRING(JoinTeamRed); condition = QUOTE(true); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE([ARR_2(_player,'RED')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.4; @@ -211,7 +211,7 @@ class CfgVehicles { class ACE_JoinTeamGreen { displayName = CSTRING(JoinTeamGreen); condition = QUOTE(true); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE([ARR_2(_player,'GREEN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.3; @@ -221,7 +221,7 @@ class CfgVehicles { class ACE_JoinTeamBlue { displayName = CSTRING(JoinTeamBlue); condition = QUOTE(true); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE([ARR_2(_player,'BLUE')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.2; @@ -231,7 +231,7 @@ class CfgVehicles { class ACE_JoinTeamYellow { displayName = CSTRING(JoinTeamYellow); condition = QUOTE(true); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE([ARR_2(_player,'YELLOW')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.1; @@ -242,7 +242,7 @@ class CfgVehicles { class ACE_LeaveTeam { displayName = CSTRING(LeaveTeam); condition = QUOTE(assignedTeam _player != 'MAIN'); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE([ARR_2(_player,'MAIN')] call DFUNC(joinTeam)); showDisabled = 1; priority = 2.5; @@ -252,7 +252,7 @@ class CfgVehicles { class ACE_BecomeLeader { displayName = CSTRING(BecomeLeader); condition = QUOTE(_this call DFUNC(canBecomeLeader)); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE(_this call DFUNC(doBecomeLeader)); showDisabled = 1; priority = 1.0; @@ -262,7 +262,7 @@ class CfgVehicles { class ACE_LeaveGroup { displayName = CSTRING(LeaveGroup); condition = QUOTE(count (units group _player) > 1); - exceptions[] = {"isNotInside", "isNotSitting"}; + exceptions[] = {"isNotInside", "isNotSitting", "isNotOnLadder"}; statement = QUOTE(_oldGroup = units group _player; _newGroup = createGroup side _player; [_player] joinSilent _newGroup; {_player reveal _x} forEach _oldGroup;); showDisabled = 1; priority = 1.2; @@ -379,7 +379,7 @@ class CfgVehicles { class ACE_Equipment { displayName = CSTRING(Equipment); condition = QUOTE(true); - exceptions[] = {"isNotInside","notOnMap", "isNotSitting"}; + exceptions[] = {"isNotInside", "notOnMap", "isNotSitting"}; statement = ""; showDisabled = 1; priority = 4.5; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 8db2d34ad1..0906e48d35 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -82,3 +82,4 @@ private ["_team"]; [29, [false, false, false]], false] call cba_fnc_addKeybind; ["isNotSwimming", {!underwater (_this select 0)}] call EFUNC(common,addCanInteractWithCondition); +["isNotOnLadder", {getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> animationState (_this select 0) >> "ACE_isLadder") != 1}] call EFUNC(common,addCanInteractWithCondition); From 4be7411a05228e3773b559ba8b06d072f2fbb7a9 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 30 Aug 2015 15:26:43 -0500 Subject: [PATCH 184/620] Use "visibleMapChanged" event --- addons/common/XEH_postInit.sqf | 27 +++++--------------------- addons/maptools/XEH_postInitClient.sqf | 21 ++++++++++---------- 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index bbb1302218..4f58e6f3cf 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -1,4 +1,6 @@ // ACE - Common + +// #define ENABLE_PERFORMANCE_COUNTERS #include "script_component.hpp" //IGNORE_PRIVATE_WARNING("_handleNetEvent", "_handleRequestAllSyncedEvents", "_handleRequestSyncedEvent", "_handleSyncedEvent"); @@ -208,6 +210,7 @@ GVAR(OldVisibleMap) = false; // PFH to raise varios events [{ + BEGIN_COUNTER(stateChecker); private ["_newCameraView", "_newInventoryDisplayIsOpen", "_newPlayerInventory", "_newPlayerTurret", "_newPlayerVehicle", "_newPlayerVisionMode", "_newPlayerWeapon", "_newZeusDisplayIsOpen", "_newVisibleMap"]; // "playerInventoryChanged" event _newPlayerInventory = [ACE_player] call FUNC(getAllGear); @@ -281,6 +284,8 @@ GVAR(OldVisibleMap) = false; ["visibleMapChanged", [ACE_player, _newVisibleMap]] call FUNC(localEvent); }; + END_COUNTER(stateChecker); + }, 0, []] call CBA_fnc_addPerFrameHandler; @@ -381,26 +386,4 @@ GVAR(deviceKeyCurrentIndex) = -1; {false}, [0xC7, [true, false, false]], false] call cba_fnc_addKeybind; //SHIFT + Home Key -//Map opened/closed Events: -GVAR(mapOpened) = false; -[{ - if (!isNull (findDisplay 12)) then { - [_this select 1] call CBA_fnc_removePerFrameHandler; - TRACE_1("Installing Map Draw EH for MapOpened event"); - ((findDisplay 12) displayCtrl 51) ctrlAddEventHandler ["Draw", { - if (!GVAR(mapOpened)) then { - GVAR(mapOpened) = true; - ["mapOpened", []] call FUNC(localEvent); - [{ - if (!visibleMap) then { - GVAR(mapOpened) = false; - ["mapClosed", []] call FUNC(localEvent); - [_this select 1] call CBA_fnc_removePerFrameHandler; - }; - }, 0, []] call CBA_fnc_addPerFrameHandler; - }; - }]; - }; -}, 0, []] call CBA_fnc_addPerFrameHandler; - GVAR(commonPostInited) = true; diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf index 1e428f71b7..06cb8eda3d 100644 --- a/addons/maptools/XEH_postInitClient.sqf +++ b/addons/maptools/XEH_postInitClient.sqf @@ -66,14 +66,15 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737]; 12 call _fnc_installMapEvents; }; -["mapOpened", { - // Show GPS if required - [GVAR(mapGpsShow)] call FUNC(openMapGps); -}] call EFUNC(common,addEventHandler); - -["mapClosed", { - // Hide GPS - [false] call FUNC(openMapGps); - // Cancel drawing - call FUNC(cancelDrawing); +["visibleMapChanged", { + params ["", "_mapOn"]; + if (_mapOn) then { + // Show GPS if required + [GVAR(mapGpsShow)] call FUNC(openMapGps); + } else { + // Hide GPS + [false] call FUNC(openMapGps); + // Cancel drawing + call FUNC(cancelDrawing); + }; }] call EFUNC(common,addEventHandler); From bda274efff0c023f3e5b7e8a9db1ed32cec53778 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 22:59:27 +0200 Subject: [PATCH 185/620] fix wrong config access point --- addons/overpressure/functions/fnc_cacheOverPressureValues.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index c26796b5a5..914ead8b92 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -41,10 +41,10 @@ _array params ["_max"]; } forEach _array; // create the Config entry Point -[ +_return = [ (configFile >> "CfgWeapons" >> _weapon), (configFile >> "CfgMagazines" >> _magazine), - (configFile >> "CfgMagazines" >> _ammo) + (configFile >> "CfgAmmo" >> _ammo) ] select _type; // get the Variables out of the Configes and create a array with then From 317706cf465dd66b7d726df0e60d95dd3e308b11 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 23:10:03 +0200 Subject: [PATCH 186/620] add Trace --- .../functions/fnc_cacheOverPressureValues.sqf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index 914ead8b92..e875d60b33 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -18,6 +18,7 @@ #include "script_component.hpp" params ["_weapon", "_magazine", "_ammo"]; +TRACE_3("Parameter",_weapon,_magazine,_ammo); private ["_array", "_type", "_return", "_config"]; @@ -28,6 +29,7 @@ _array = [ getNumber (configFile >> "CfgAmmo" >> QGVAR(priority)) ]; +TRACE_1("Proiroity Array",_array); // define Fist Values for Types _type = 0; _array params ["_max"]; @@ -40,12 +42,14 @@ _array params ["_max"]; }; } forEach _array; +TRACE_2("Highest Value",_max,_type); // create the Config entry Point -_return = [ +_config = [ (configFile >> "CfgWeapons" >> _weapon), (configFile >> "CfgMagazines" >> _magazine), (configFile >> "CfgAmmo" >> _ammo) ] select _type; +TRACE_1("ConfigPath",_config); // get the Variables out of the Configes and create a array with then _return = [ @@ -53,7 +57,7 @@ _return = [ (getNumber (_config >> QGVAR(range))), (getNumber (_config >> QGVAR(damage))) ]; - +TRACE_1("Return",_return); missionNameSpace setVariable [format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine], _return]; From 4e6f289493f906a258f9cae9c48dddf493b8b381 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 30 Aug 2015 23:40:53 +0200 Subject: [PATCH 187/620] fix Function Names fix Input --- .../functions/fnc_cacheOverPressureValues.sqf | 4 ++-- .../overpressure/functions/fnc_fireLauncherBackblast.sqf | 2 +- .../overpressure/functions/fnc_fireOverpressureZone.sqf | 2 +- addons/overpressure/functions/fnc_firedEHBB.sqf | 8 ++++---- addons/overpressure/functions/fnc_firedEHOP.sqf | 8 ++++---- addons/overpressure/functions/fnc_overpressureDamage.sqf | 2 +- addons/overpressure/script_component.hpp | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index e875d60b33..09f40612ef 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -17,7 +17,7 @@ */ #include "script_component.hpp" -params ["_weapon", "_magazine", "_ammo"]; +params ["_weapon", "_ammo", "_magazine"]; TRACE_3("Parameter",_weapon,_magazine,_ammo); private ["_array", "_type", "_return", "_config"]; @@ -58,7 +58,7 @@ _return = [ (getNumber (_config >> QGVAR(damage))) ]; TRACE_1("Return",_return); - +_varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; missionNameSpace setVariable [format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine], _return]; _return diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 24068bf9b5..991b84e0d0 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -31,7 +31,7 @@ _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private ["_var","_varName","_backblastAngle", "_backblastRange", "_backblastDamage"]; _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { - [_weapon,_magazine] call FUNC(cacheOverPressureVales); + [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); } else { missionNameSpace getVariable _varName; }; diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 57b4ea4bd5..57fea021d0 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -32,7 +32,7 @@ private ["_var", "_varName", "_dangerZoneAngle", "_dangerZoneRange", "_dangerZon // Bake Variablen Name and Check if the Variable Exist else call the Cache Function _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { - [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales); + [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); } else { missionNameSpace getVariable _varName; }; diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index 5065bb106e..b19de3b3de 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -16,17 +16,17 @@ * None */ #include "script_component.hpp" -private ["_var","_varName"]; +private ["_damage","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; // Bake Variable Name and Check if the Variable Exist else call the Cache Function _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; -_var = if (isNil _varName) then { - ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales)) select 2; +_damage = if (isNil _varName) then { + ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues)) select 2; } else { (missionNameSpace getVariable _varName) select 2; }; -if (_var > 0) then { +if (_damage > 0) then { _this call DFUNC(fireLauncherBackblast) }; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index 4c6e224d0f..d6c377c8fb 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -16,17 +16,17 @@ * None */ #include "script_component.hpp" -private ["_var","_varName"]; +private ["_damage","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; // Bake Variable Name and Check if the Variable Exist else call the Cache Function _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; -_var = if (isNil _varName) then { - ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureVales)) select 2; +_damage = if (isNil _varName) then { + ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues)) select 2; } else { (missionNameSpace getVariable _varName) select 2; }; -if (_var > 0) then { +if (_damage > 0) then { _this call DFUNC(fireOverpressureZone) }; diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index 1dac20adb9..e39058504e 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -22,7 +22,7 @@ params ["_firer", "_posASL", "_direction", "_weapon", "_magazine", "_ammo"]; // Bake Variablen Name and Check if the Variable Exist else call the Cache Function _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { - [_weapon,_magazine] call FUNC(cacheOverPressureVales); + [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); } else { missionNameSpace getVariable _varName; }; diff --git a/addons/overpressure/script_component.hpp b/addons/overpressure/script_component.hpp index 3a44df1f9b..fbe7cd1238 100644 --- a/addons/overpressure/script_component.hpp +++ b/addons/overpressure/script_component.hpp @@ -9,4 +9,4 @@ #define DEBUG_SETTINGS DEBUG_ENABLED_OVERPRESSURE #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" From 228eeab1a822f47baa015d05e31f71b822aff4b3 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Mon, 31 Aug 2015 00:05:55 +0200 Subject: [PATCH 188/620] fix comments --- addons/overpressure/functions/fnc_fireLauncherBackblast.sqf | 1 + addons/overpressure/functions/fnc_fireOverpressureZone.sqf | 2 +- addons/overpressure/functions/fnc_firedEHBB.sqf | 2 +- addons/overpressure/functions/fnc_firedEHOP.sqf | 2 +- addons/overpressure/functions/fnc_overpressureDamage.sqf | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 991b84e0d0..14ffdd2db7 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -29,6 +29,7 @@ _position = getPosASL _projectile; _direction = [0, 0, 0] vectorDiff (vectorDir _projectile); private ["_var","_varName","_backblastAngle", "_backblastRange", "_backblastDamage"]; +// Bake variable name and check if the variable exists, call the caching function otherwise _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 57fea021d0..3068928ba4 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -29,7 +29,7 @@ _direction = vectorDir _projectile; private ["_var", "_varName", "_dangerZoneAngle", "_dangerZoneRange", "_dangerZoneDamage"]; -// Bake Variablen Name and Check if the Variable Exist else call the Cache Function +// Bake variable name and check if the variable exists, call the caching function otherwise _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); diff --git a/addons/overpressure/functions/fnc_firedEHBB.sqf b/addons/overpressure/functions/fnc_firedEHBB.sqf index b19de3b3de..cf2ac31561 100644 --- a/addons/overpressure/functions/fnc_firedEHBB.sqf +++ b/addons/overpressure/functions/fnc_firedEHBB.sqf @@ -19,7 +19,7 @@ private ["_damage","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; -// Bake Variable Name and Check if the Variable Exist else call the Cache Function +// Bake variable name and check if the variable exists, call the caching function otherwise _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _damage = if (isNil _varName) then { ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues)) select 2; diff --git a/addons/overpressure/functions/fnc_firedEHOP.sqf b/addons/overpressure/functions/fnc_firedEHOP.sqf index d6c377c8fb..6cec770deb 100644 --- a/addons/overpressure/functions/fnc_firedEHOP.sqf +++ b/addons/overpressure/functions/fnc_firedEHOP.sqf @@ -19,7 +19,7 @@ private ["_damage","_varName"]; params ["", "_weapon", "", "", "_ammo", "_magazine", ""]; -// Bake Variable Name and Check if the Variable Exist else call the Cache Function +// Bake variable name and check if the variable exists, call the caching function otherwise _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _damage = if (isNil _varName) then { ([_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues)) select 2; diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index e39058504e..a24367937b 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -19,7 +19,7 @@ private ["_var","_overpressureAngle", "_overpressureRange", "_overpressureDamage"]; params ["_firer", "_posASL", "_direction", "_weapon", "_magazine", "_ammo"]; -// Bake Variablen Name and Check if the Variable Exist else call the Cache Function +// Bake variable name and check if the variable exists, call the caching function otherwise _varName = format [QGVAR(values%1%2%3), _weapon, _ammo, _magazine]; _var = if (isNil _varName) then { [_weapon, _ammo, _magazine] call FUNC(cacheOverPressureValues); From 8c6f896164889b3661db545ada433f6e778c48ec Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 31 Aug 2015 13:00:17 +0200 Subject: [PATCH 189/620] fixed script error when canceling treatment actions --- addons/medical/functions/fnc_treatment_failure.sqf | 2 +- addons/medical/functions/fnc_treatment_success.sqf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index 84526daa88..b31a9fd0de 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -19,7 +19,7 @@ private ["_config", "_callback", "_weaponSelect", "_lastAnim"]; params ["_args"]; -_args params ["_caller", "_target", "_selectionName", "_className", "_usersOfItems"]; +_args params ["_caller", "_target", "_selectionName", "_className", "_items", "_usersOfItems"]; if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { _caller removeWeapon "ACE_FakePrimaryWeapon"; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index f21f027ee7..d32f63468e 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -19,7 +19,7 @@ private ["_config", "_callback", "_weaponSelect", "_lastAnim"]; params ["_args"]; -_args params ["_caller", "_target","_selectionName","_className"]; +_args params ["_caller", "_target","_selectionName","_className", "_items", "_usersOfItems"]; if (primaryWeapon _caller == "ACE_FakePrimaryWeapon") then { _caller removeWeapon "ACE_FakePrimaryWeapon"; From 04269831e87a6526175bf8adb4ec2c3698024458 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 31 Aug 2015 14:40:31 +0100 Subject: [PATCH 190/620] Consider modifier keys for zeus interaction hack The hacky keybind detection method should consider modifier keys also to prevent keybinds on the same key with different modifiers from firing --- addons/interact_menu/XEH_clientInit.sqf | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 7c7724d9b4..31dedfbe22 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -80,18 +80,26 @@ addMissionEventHandler ["Draw3D", DFUNC(render)]; if (_this select 1) then { (finddisplay 312) displayAddEventHandler ["KeyUp", { _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; - _key = (_key select 5) select 0; + _key = _key select 5; + _dik = _key select 0; + _mods = _key select 1; - if ((_this select 1) == _key) then { - [_this,'keyup'] call CBA_events_fnc_keyHandler + if ((_this select 1) == _dik) then { + if ((_this select [2,3]) isEqualTo _mods) then { + [_this,'keyup'] call CBA_events_fnc_keyHandler + }; }; }]; (finddisplay 312) displayAddEventHandler ["KeyDown", { _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; - _key = (_key select 5) select 0; + _key = _key select 5; + _dik = _key select 0; + _mods = _key select 1; - if ((_this select 1) == _key) then { - [_this,'keydown'] call CBA_events_fnc_keyHandler + if ((_this select 1) == _dik) then { + if ((_this select [2,3]) isEqualTo _mods) then { + [_this,'keydown'] call CBA_events_fnc_keyHandler + }; }; }]; }; From 543e829278bdb76f76592dc384e122f609708120 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 31 Aug 2015 14:56:51 +0100 Subject: [PATCH 191/620] Fix goggles overlay for FFV seats When aiming down sights, view is considered to be "gunner" and so the overlay would be disabled. Introduces addition canUseWeapon check if view is "gunner" to differentiate FFV seats from regular gunner seats --- addons/goggles/functions/fnc_checkGoggles.sqf | 2 +- addons/goggles/functions/fnc_isGogglesVisible.sqf | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/goggles/functions/fnc_checkGoggles.sqf b/addons/goggles/functions/fnc_checkGoggles.sqf index f222ea9881..84b86c3da4 100644 --- a/addons/goggles/functions/fnc_checkGoggles.sqf +++ b/addons/goggles/functions/fnc_checkGoggles.sqf @@ -18,7 +18,7 @@ if (!alive ace_player) exitWith {}; if (true) then { // Detect if curator interface is open and disable effects - if (!isNull(findDisplay 312)) exitWith { + if !(isNull curatorCamera) exitWith { if (GVAR(EffectsActive)) then { call FUNC(removeGlassesEffect); }; diff --git a/addons/goggles/functions/fnc_isGogglesVisible.sqf b/addons/goggles/functions/fnc_isGogglesVisible.sqf index 253a82f0a3..9f586a9cbf 100644 --- a/addons/goggles/functions/fnc_isGogglesVisible.sqf +++ b/addons/goggles/functions/fnc_isGogglesVisible.sqf @@ -15,14 +15,16 @@ */ #include "script_component.hpp" -PARAMS_1(_unit); - +params ["_unit"]; private ["_currentGlasses", "_result", "_position", "_visible"]; _currentGlasses = goggles _unit; _result = false; -if ((vehicle _unit) != _unit) exitWith {(cameraView != "GUNNER")}; +if ((vehicle _unit) != _unit) exitWith { + (cameraView != "GUNNER") || + {[_unit] call EFUNC(common,canUseWeapon)} +}; if (_currentGlasses != "") then { _position =(getPosASLW _unit); From 397d77e5b553db45cf635d5643fe71f192d2713c Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Mon, 31 Aug 2015 15:25:40 +0100 Subject: [PATCH 192/620] Remove special goggles treatment of vehicle units The condition to disable the overlay for gunners introduces more problems (and inconsistencies for that matter) than it was worth. Vehicle gunners using camera based weapons should probably consider not wearing a pair of glasses/goggles before doing so. --- addons/goggles/functions/fnc_isGogglesVisible.sqf | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/addons/goggles/functions/fnc_isGogglesVisible.sqf b/addons/goggles/functions/fnc_isGogglesVisible.sqf index 9f586a9cbf..80f9de4830 100644 --- a/addons/goggles/functions/fnc_isGogglesVisible.sqf +++ b/addons/goggles/functions/fnc_isGogglesVisible.sqf @@ -21,13 +21,8 @@ private ["_currentGlasses", "_result", "_position", "_visible"]; _currentGlasses = goggles _unit; _result = false; -if ((vehicle _unit) != _unit) exitWith { - (cameraView != "GUNNER") || - {[_unit] call EFUNC(common,canUseWeapon)} -}; - if (_currentGlasses != "") then { - _position =(getPosASLW _unit); + _position = getPosASLW _unit; if (surfaceIsWater _position && {((_position select 2) < 0.25)}) exitWith { _result = ([_currentGlasses] call FUNC(isDivingGoggles)); }; From e1d683d8dc09a83bb09b09df3278de0bc6813d24 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 31 Aug 2015 17:31:37 +0200 Subject: [PATCH 193/620] laserpointer with new command lineintersectssurface --- .../functions/fnc_drawLaserpoint.sqf | 103 +++--------------- addons/laserpointer/functions/fnc_onDraw.sqf | 2 +- 2 files changed, 19 insertions(+), 86 deletions(-) diff --git a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf index e69fc5e271..34ca98808b 100644 --- a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf +++ b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf @@ -1,30 +1,11 @@ // by commy2 and esteldunedain #include "script_component.hpp" -private ["_p0", "_p1", "_p0Pos", "_offV1", "_offV2", "_offV3", "_camPos", "_intermediatePos", "_iteration", "_light", "_line", "_pL", "_pL2", "_pX", "_size", "_units", "_fnc_getDistanceToTerrain", "_fnc_doesIntersectWithMan"]; +params ["_unit", "_range", "_isGreen", "_brightness"]; -// init object -/*if (isNil QGVAR(laserdot)) then { - _light = "#lightpoint" createVehicleLocal [0,0,0]; - _light setLightBrightness 10; - _light setLightColor [1,0,0]; - _light setLightAmbient [1,0,0]; - _light setLightDayLight true; - //_light lightAttachObject [GVAR(laserdot), [0,0,0]]; - _light setLightAttenuation [0.04,4,4,0,0.04,0.08]; +private ["_p0", "_v1", "_v2", "_v3", "_p1", "_pL", "_distance", "_pL2", "_camPos", "_size"]; - GVAR(laserdot) = _light; -};*/ - -EXPLODE_4_PVT(_this,_unit,_range,_isGreen,_brightness); - -_p0Pos = _unit modelToWorldVisual (_unit selectionPosition "righthand"); - -// Convert _p0Pos to ASL -_p0 = + _p0Pos; -if (!surfaceIsWater _p0) then { - _p0 = ATLtoASL _p0; -}; +_p0 = AGLToASL (_unit modelToWorldVisual (_unit selectionPosition "righthand")); // Find a system of orthogonal reference vectors // _v1 points in the direction of the weapon @@ -36,68 +17,22 @@ _v3 = _v2 vectorCrossProduct _v1; // Offset over the 3 reference axis // This offset could eventually be configured by weapon in the config -_offV1 = 0.31; -_offV2 = 0; -_offV3 = 0.08; +#define OFFV1 0.31 +#define OFFV2 0 +#define OFFV3 0.08 // Offset _p0, the start of the laser -_p0 = _p0 vectorAdd (_v1 vectorMultiply _offV1) vectorAdd (_v3 vectorMultiply _offV3) vectorAdd (_v2 vectorMultiply _offV2); -_p0Pos = _p0Pos vectorAdd (_v1 vectorMultiply _offV1) vectorAdd (_v3 vectorMultiply _offV3) vectorAdd (_v2 vectorMultiply _offV2); +_p0 = _p0 vectorAdd (_v1 vectorMultiply OFFV1) vectorAdd (_v3 vectorMultiply OFFV3) vectorAdd (_v2 vectorMultiply OFFV2); + // Calculate _p1, the potential end of the laser _p1 = _p0 vectorAdd (_v1 vectorMultiply _range); -//Debugaaa = lineIntersectsObjs [_p0, _p1, objNull, _unit, false, 2]; +_pL = lineIntersectsSurfaces [_p0, _p1, ACE_player, vehicle ACE_player, true, 1, "GEOM", "FIRE"] select 0 select 0; -_fnc_getDistanceToTerrain = { - private ["_distance"]; +// no intersection found, quit +if (isNil "_pL") exitWith {}; - _pX = + _p0; - _line = [_p0, _pX]; - - _distance = _this; - _iteration = _distance; - - while {_iteration > 0.05 / 2} do { - _iteration = _iteration / 2; - - _pX = _p0 vectorAdd (_v1 vectorMultiply _distance); - - _line set [1, _pX]; - - _distance = _distance + (([1, -1] select (lineIntersects (_line + [_unit]) || {terrainIntersectASL _line})) * _iteration); - - if (_distance > _this) exitWith {_distance = _this}; - }; - - _distance -}; - -// Get distance to nearest object or terrain (excluding men) -_distance = _range call _fnc_getDistanceToTerrain; - -// Find all men potentially intercepted by the ray -_intermediatePos = _p0 vectorAdd (_v1 vectorMultiply _distance/2); -if (!surfaceIsWater _intermediatePos) then { - _intermediatePos = ASLtoATL _intermediatePos; -}; -_units = nearestObjects [_intermediatePos, ["Man"], _distance/2]; - -_units deleteAt (_units find _unit); - -_fnc_doesIntersectWithMan = { - _pX = _p0 vectorAdd (_v1 vectorMultiply (_this select 1)); - if (!surfaceIsWater _pX) then { - _pX = ASLtoATL _pX; - }; - count ([_this select 0, "FIRE"] intersect [_p0Pos, _pX]) > 0 -}; - -// Test intersection with nearby men -{ - if ([_x, _distance] call _fnc_doesIntersectWithMan) then { - _distance = _distance min ((_unit distance _x) - _offV1); - }; -} forEach _units; +_distance = _p0 vectorDistance _pL; //systemChat str _distance; if (_distance < 0.5) exitWith {}; @@ -105,31 +40,29 @@ if (_distance < 0.5) exitWith {}; _pL = _p0 vectorAdd (_v1 vectorMultiply _distance); _pL2 = _p0 vectorAdd (_v1 vectorMultiply (_distance - 0.5)); -// Convert _pL to pos -if (!surfaceIsWater _pL) then { - _pL = ASLtoATL _pL; -}; +_pL = ASLtoAGL _pL; /* drawLine3D [ - _p0Pos, + _p0, _pL, [[1,0,0,1], [0,1,0,1]] select _isGreen ]; */ -_size = 2 * (_range - (positionCameraToWorld [0,0,0] vectorDistance _pL)) / _range; +//systemChat str [_unit, "FIRE"] intersect [_camPos, _pL]; _camPos = positionCameraToWorld [0,0,0.2]; if (count ([_unit, "FIRE"] intersect [_camPos, _pL]) > 0) exitWith {}; if (count ([ACE_player, "FIRE"] intersect [_camPos, _pL]) > 0) exitWith {}; // Convert _camPos to ASL -if (!surfaceIsWater _camPos) then { _camPos = ATLtoASL _camPos; }; +_camPos = AGLToASL _camPos; + if ( terrainIntersectASL [_camPos, _pL2]) exitWith {}; if ( lineIntersects [_camPos, _pL2]) exitWith {}; -//GVAR(laserdot) setPos _pL; +_size = 2 * (_range - (positionCameraToWorld [0,0,0] vectorDistance _pL)) / _range; drawIcon3D [ format ["\a3\weapons_f\acc\data\collimdot_%1_ca.paa", ["red", "green"] select _isGreen], diff --git a/addons/laserpointer/functions/fnc_onDraw.sqf b/addons/laserpointer/functions/fnc_onDraw.sqf index 09663f9ecf..9e61e70156 100644 --- a/addons/laserpointer/functions/fnc_onDraw.sqf +++ b/addons/laserpointer/functions/fnc_onDraw.sqf @@ -35,7 +35,7 @@ _brightness = 2 - call EFUNC(common,ambientBrightness); }; if (_laserID > 0 && {_x isFlashlightOn _weapon}) then { - [_x, 50, (_laserID == 2 || _isIR), _brightness] call FUNC(drawLaserpoint); + [_x, 100, (_laserID == 2 || _isIR), _brightness] call FUNC(drawLaserpoint); }; }; From f15805d1f388293171a4daa1c2f0dca690645290 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 31 Aug 2015 20:05:38 +0200 Subject: [PATCH 194/620] setStructuralDamage function --- addons/medical/XEH_preInit.sqf | 1 + addons/medical/functions/fnc_copyDeadBody.sqf | 2 +- addons/medical/functions/fnc_setDead.sqf | 2 +- .../functions/fnc_setStructuralDamage.sqf | 25 +++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 addons/medical/functions/fnc_setStructuralDamage.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index b479383468..838dce7404 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -68,6 +68,7 @@ PREP(selectionNameToNumber); PREP(setCardiacArrest); PREP(setDead); PREP(setHitPointDamage); +PREP(setStructuralDamage); PREP(setUnconscious); PREP(treatment); PREP(treatment_failure); diff --git a/addons/medical/functions/fnc_copyDeadBody.sqf b/addons/medical/functions/fnc_copyDeadBody.sqf index 36bcd91487..85fea5eafc 100644 --- a/addons/medical/functions/fnc_copyDeadBody.sqf +++ b/addons/medical/functions/fnc_copyDeadBody.sqf @@ -79,5 +79,5 @@ _newUnit setvariable ["ACE_isUnconscious", true, true]; _newUnit setvariable [QGVAR(disableInteraction), true, true]; _oldBody setvariable [QGVAR(disableInteraction), true, true]; -_newUnit setDamage 0.89; +[_newUnit, 0.89] call FUNC(setStructuralDamage); _newUnit; diff --git a/addons/medical/functions/fnc_setDead.sqf b/addons/medical/functions/fnc_setDead.sqf index c29edcd5e3..1423d594ad 100644 --- a/addons/medical/functions/fnc_setDead.sqf +++ b/addons/medical/functions/fnc_setDead.sqf @@ -82,5 +82,5 @@ if (isPLayer _unit) then { ["medical_onSetDead", [_unit]] call EFUNC(common,localEvent); -_unit setdamage 1; +[_unit, 1] call FUNC(setStructuralDamage); true; diff --git a/addons/medical/functions/fnc_setStructuralDamage.sqf b/addons/medical/functions/fnc_setStructuralDamage.sqf new file mode 100644 index 0000000000..b4dc74eac1 --- /dev/null +++ b/addons/medical/functions/fnc_setStructuralDamage.sqf @@ -0,0 +1,25 @@ +/* + * Author: commy2 + * Set the structural damage of a soldier without changing the individual hitpoints. Unit has to be local. Not safe to use with vehicles! + * + * Arguments: + * 0: The unit + * + * ReturnValue: + * + * + * Public: no? + */ + +params ["_unit", "_damage"]; + +if (!local _unit) exitWith {}; + +private "_allHitPoints"; +_allHitPoints = getAllHitPointsDamage _unit select 2; + +_unit setDamage _damage; + +{ + _unit setHitIndex [_forEachIndex, _x]; +} forEach _allHitPoints; From 37aec2b3c3e984417ff0de0227806a61b5661a8b Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 31 Aug 2015 21:22:22 +0200 Subject: [PATCH 195/620] enable repairing while on ladder --- addons/repair/CfgVehicles.hpp | 1 + addons/repair/functions/fnc_canRepairTrack.sqf | 2 +- addons/repair/functions/fnc_canReplaceTrack.sqf | 2 +- addons/repair/functions/fnc_canReplaceWheel.sqf | 2 +- addons/repair/functions/fnc_doRepairTrack.sqf | 2 +- addons/repair/functions/fnc_doReplaceTrack.sqf | 2 +- addons/repair/functions/fnc_doReplaceWheel.sqf | 2 +- addons/repair/functions/fnc_repair.sqf | 2 +- 8 files changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 47459f532d..27e8890dbc 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -10,6 +10,7 @@ priority = 2; \ icon = "\A3\ui_f\data\igui\cfg\actions\repair_ca.paa"; \ distance = 4; \ + exceptions[] = {"isNotOnLadder"}; \ }; \ }; \ }; diff --git a/addons/repair/functions/fnc_canRepairTrack.sqf b/addons/repair/functions/fnc_canRepairTrack.sqf index 34165068d7..806fa14b2e 100644 --- a/addons/repair/functions/fnc_canRepairTrack.sqf +++ b/addons/repair/functions/fnc_canRepairTrack.sqf @@ -30,7 +30,7 @@ if (typeName _wheel == "OBJECT") then { _wheel = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _wheel = _x; }; } forEach nearestObjects [_unit, ["ACE_Track"], 5]; diff --git a/addons/repair/functions/fnc_canReplaceTrack.sqf b/addons/repair/functions/fnc_canReplaceTrack.sqf index 94a62a5289..3f4ae77581 100644 --- a/addons/repair/functions/fnc_canReplaceTrack.sqf +++ b/addons/repair/functions/fnc_canReplaceTrack.sqf @@ -31,7 +31,7 @@ if (typeName _track == "OBJECT") then { _track = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _track = _x; }; } forEach nearestObjects [_unit, ["ACE_Track"], 5]; diff --git a/addons/repair/functions/fnc_canReplaceWheel.sqf b/addons/repair/functions/fnc_canReplaceWheel.sqf index 9497504370..e0a2fbbed2 100644 --- a/addons/repair/functions/fnc_canReplaceWheel.sqf +++ b/addons/repair/functions/fnc_canReplaceWheel.sqf @@ -37,7 +37,7 @@ if (typeName _wheel == "OBJECT") then { _wheel = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _wheel = _x; }; } forEach nearestObjects [_unit, ["ACE_Wheel"], 5]; diff --git a/addons/repair/functions/fnc_doRepairTrack.sqf b/addons/repair/functions/fnc_doRepairTrack.sqf index 4803518e3d..de04e71920 100644 --- a/addons/repair/functions/fnc_doRepairTrack.sqf +++ b/addons/repair/functions/fnc_doRepairTrack.sqf @@ -27,7 +27,7 @@ private ["_hitPointDamage", "_newDamage", "_wheel"]; _wheel = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _wheel = _x; }; } forEach nearestObjects [_unit, ["ACE_Track"], 5]; diff --git a/addons/repair/functions/fnc_doReplaceTrack.sqf b/addons/repair/functions/fnc_doReplaceTrack.sqf index 13e53b3f3a..a95a669159 100644 --- a/addons/repair/functions/fnc_doReplaceTrack.sqf +++ b/addons/repair/functions/fnc_doReplaceTrack.sqf @@ -27,7 +27,7 @@ private["_hitPointDamage", "_wheel"]; _wheel = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _wheel = _x; }; } forEach nearestObjects [_unit, ["ACE_Track"], 5]; diff --git a/addons/repair/functions/fnc_doReplaceWheel.sqf b/addons/repair/functions/fnc_doReplaceWheel.sqf index 62db39aa6d..f10712d65d 100644 --- a/addons/repair/functions/fnc_doReplaceWheel.sqf +++ b/addons/repair/functions/fnc_doReplaceWheel.sqf @@ -27,7 +27,7 @@ private ["_hitPointDamage", "_wheel"]; _wheel = objNull; { - if ([_unit, _x, ["isNotDragging", "isNotCarrying"]] call EFUNC(common,canInteractWith)) exitWith { + if ([_unit, _x, ["isNotDragging", "isNotCarrying", "isNotOnLadder"]] call EFUNC(common,canInteractWith)) exitWith { _wheel = _x; }; } forEach nearestObjects [_unit, ["ACE_Wheel"], 5]; diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index 8fa7f498bd..4fa1c2d903 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -177,7 +177,7 @@ _processText = getText (_config >> "displayNameProgress"); DFUNC(repair_failure), _text, _callbackProgress, - [] + ["isNotOnLadder"] ] call EFUNC(common,progressBar); // Display Icon From 5a164c5cdcd0cdb606b91510696029ad13a74963 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 31 Aug 2015 23:36:59 +0200 Subject: [PATCH 196/620] fix UBC issues, simplify uniform hitpoint config --- addons/medical/CfgVehicles.hpp | 746 +++++++++------------------------ 1 file changed, 209 insertions(+), 537 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 278d3523e0..0764d2f1ea 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -2,12 +2,12 @@ #define MEDICAL_ACTION_DISTANCE 1.75 class CfgVehicles { - class Logic; class Module_F: Logic { class ArgumentsBaseUnits { }; }; + class ACE_Module; class ACE_moduleMedicalSettings: ACE_Module { scope = 2; @@ -19,6 +19,7 @@ class CfgVehicles { isGlobal = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); + class Arguments { class level { displayName = CSTRING(MedicalSettings_level_DisplayName); @@ -137,6 +138,7 @@ class CfgVehicles { defaultValue = 1; }; }; + class ModuleDescription { description = CSTRING(MedicalSettings_Module_Description); sync[] = {}; @@ -154,6 +156,7 @@ class CfgVehicles { isTriggerActivated = 0; isDisposable = 0; author = ECSTRING(common,ACETeam); + class Arguments { class enableFor { displayName = CSTRING(AdvancedMedicalSettings_enableFor_DisplayName); @@ -256,13 +259,13 @@ class CfgVehicles { defaultValue = 1; }; }; + class ModuleDescription { description = CSTRING(AdvancedMedicalSettings_Module_Description); sync[] = {}; }; }; - class ACE_moduleReviveSettings: ACE_Module { scope = 2; displayName = CSTRING(ReviveSettings_Module_DisplayName); @@ -273,6 +276,7 @@ class CfgVehicles { isGlobal = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); + class Arguments { class enableRevive { displayName = CSTRING(ReviveSettings_enableRevive_DisplayName); @@ -298,11 +302,13 @@ class CfgVehicles { defaultValue = -1; }; }; + class ModuleDescription { description = CSTRING(ReviveSettings_Module_Description); sync[] = {}; }; }; + class ACE_moduleAssignMedicRoles: Module_F { scope = 2; displayName = CSTRING(AssignMedicRoles_Module_DisplayName); @@ -314,6 +320,7 @@ class CfgVehicles { isTriggerActivated = 0; isDisposable = 0; author = ECSTRING(common,ACETeam); + class Arguments { class EnableList { displayName = CSTRING(AssignMedicRoles_EnableList_DisplayName); @@ -342,6 +349,7 @@ class CfgVehicles { }; }; }; + class ModuleDescription { description = CSTRING(AssignMedicRoles_Module_Description); sync[] = {}; @@ -359,6 +367,7 @@ class CfgVehicles { isTriggerActivated = 0; isDisposable = 0; author = ECSTRING(common,ACETeam); + class Arguments { class EnableList { displayName = CSTRING(AssignMedicVehicle_EnableList_DisplayName); @@ -384,11 +393,13 @@ class CfgVehicles { }; }; }; + class ModuleDescription { description = CSTRING(AssignMedicVehicle_Module_Description); sync[] = {}; }; }; + class ACE_moduleAssignMedicalFacility: Module_F { scope = 2; displayName = CSTRING(AssignMedicalFacility_Module_DisplayName); @@ -400,6 +411,7 @@ class CfgVehicles { isTriggerActivated = 0; isDisposable = 0; author = ECSTRING(common,ACETeam); + class Arguments { class enabled { displayName = CSTRING(AssignMedicalFacility_enabled_DisplayName); @@ -407,199 +419,56 @@ class CfgVehicles { typeName = "BOOL"; }; }; + class ModuleDescription { description = CSTRING(AssignMedicalFacility_Module_Description); sync[] = {}; }; }; - #define ARM_LEG_ARMOR_DEFAULT 2 - #define ARM_LEG_ARMOR_BETTER 3 - #define ARM_LEG_ARMOR_CSAT 4 + #define ARM_LEG_ARMOR_DEFAULT 1 + #define ARM_LEG_ARMOR_BETTER 8 + #define ARM_LEG_ARMOR_CSAT 6 class Land; class Man: Land { class HitPoints { - class HitHead { - visual = ""; - armor = 1; - material = -1; - name = "head"; - passThrough = 1; - radius = 0.1; - explosionShielding = 0.5; - minimalHit = 0; - }; - class HitBody { - armor = 1; - material = -1; - name = "body"; - passThrough = 1; - radius = 0.15; - explosionShielding = 10; - visual = "injury_body"; - minimalHit = 0; - }; - class HitHands { - armor = 999; //armor = 2; - explosionShielding = 0; //explosionShielding = 1; - material = -1; - minimalHit = 0; - name = ""; - passThrough = 1; - radius = 0; //radius = 0.06; - visual = "injury_hands"; - }; - class HitLegs { - armor = 999; //armor = 2; - explosionShielding = 0; //explosionShielding = 1; - material = -1; - minimalHit = 0; - name = ""; - passThrough = 1; - radius = 0; //radius = 0.08; - visual = "injury_legs"; - }; + class HitHead; + class HitBody; + class HitHands; + class HitLegs; }; }; + class CAManBase: Man { class HitPoints: HitPoints { - - class HitFace: HitHead { - armor = 999; - material = -1; - name = "face_hub"; - passThrough = 1; - radius = 0.08; - explosionShielding = 0.1; - minimalHit = 0.01; - }; - class HitNeck: HitFace { - armor = 999; - material = -1; - name = "neck"; - passThrough = 1; - radius = 0.08; - explosionShielding = 0.5; - minimalHit = 0.01; - }; - class HitHead: HitNeck { - armor = 1; - material = -1; - name = "head"; - passThrough = 1; - radius = 0.1; - explosionShielding = 0.5; - minimalHit = 0.01; - }; - class HitPelvis: HitBody { - armor = 999; - material = -1; - name = "pelvis"; - passThrough = 1; - radius = 0.15; - explosionShielding = 0.5; - visual = "injury_body"; - minimalHit = 0.01; - }; - class HitAbdomen: HitPelvis { - armor = 999; - material = -1; - name = "spine1"; - passThrough = 1; - radius = 0.15; - explosionShielding = 1; - visual = "injury_body"; - minimalHit = 0.01; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - material = -1; - name = "spine2"; - passThrough = 1; - radius = 0.15; - explosionShielding = 6; - visual = "injury_body"; - minimalHit = 0.01; - }; - class HitChest: HitDiaphragm { - armor = 999; - material = -1; - name = "spine3"; - passThrough = 1; - radius = 0.15; - explosionShielding = 6; - visual = "injury_body"; - minimalHit = 0.01; - }; - class HitBody: HitChest { - armor = 1; - material = -1; - name = "body"; - passThrough = 1; - radius = 0.15; - explosionShielding = 10; - visual = "injury_body"; - minimalHit = 0.01; - }; - class HitArms: HitHands { - armor = 999; - material = -1; - name = "arms"; - passThrough = 1; - radius = 0.08; - explosionShielding = 1; - visual = "injury_hands"; - minimalHit = 0.01; - }; - class HitHands: HitArms { - armor = 999; - material = -1; - name = "hands"; - passThrough = 1; - radius = 0.08; - explosionShielding = 1; - visual = "injury_hands"; - minimalHit = 0.01; - }; - class HitLegs: HitLegs { - armor = 999; - material = -1; - name = "legs"; - passThrough = 1; - radius = 0.1; - explosionShielding = 1; - visual = "injury_legs"; - minimalHit = 0.01; - }; - - class HitLeftArm { - armor = ARM_LEG_ARMOR_DEFAULT; //2; - explosionShielding = 1; - material = -1; - minimalHit = 0; - name = "hand_l"; - passThrough = 1; - radius = 0.06; - visual = "injury_hands"; + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { + armor = ARM_LEG_ARMOR_DEFAULT; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; class HitRightArm: HitLeftArm { - name = "hand_r"; + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - class HitLeftLeg { - armor = ARM_LEG_ARMOR_DEFAULT; //2; - explosionShielding = 1; - material = -1; - minimalHit = 0; + class HitLeftLeg: HitLegs { + armor = ARM_LEG_ARMOR_DEFAULT; name = "leg_l"; - passThrough = 1; - radius = 0.08; - visual = "injury_legs"; }; class HitRightLeg: HitLeftLeg { name = "leg_r"; }; }; + class ACE_SelfActions { #include "ACE_Medical_SelfActions.hpp" }; @@ -658,141 +527,60 @@ class CfgVehicles { class B_Soldier_04_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 2; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_BETTER; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_BETTER; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; class B_Soldier_05_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 3; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_BETTER; + name = "hand_l"; }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightArm: HitLeftArm { + name = "hand_r"; }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_BETTER; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; @@ -801,293 +589,177 @@ class CfgVehicles { class I_Soldier_03_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 2; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_BETTER; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_BETTER; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; class I_Soldier_04_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 3; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_BETTER; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_BETTER; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_BETTER; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; class O_Soldier_base_F: SoldierEB { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 4; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; class O_Soldier_02_F: O_Soldier_base_F { class HitPoints: HitPoints { - class HitFace: HitHead { - armor = 999; - }; - class HitNeck: HitFace { - armor = 999; - }; - class HitHead: HitNeck { - armor = 1; - }; - class HitPelvis: HitBody { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitAbdomen: HitPelvis { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitDiaphragm: HitAbdomen { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitChest: HitDiaphragm { - armor = 999; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitBody: HitChest { - armor = 4; - passThrough = 0.5; - explosionShielding = 2.4; - }; - class HitArms: HitHands { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitHands: HitArms { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - class HitLegs: HitLegs { - armor = 999; - passThrough = 0.5; - explosionShielding = 1.2; - }; - - class HitLeftArm: HitLeftArm { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - - class HitRightArm: HitRightArm { - armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - - class HitLeftLeg: HitLeftLeg { + class HitLeftLeg: HitLegs { armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + name = "leg_l"; }; - - class HitRightLeg: HitRightLeg { - armor = ARM_LEG_ARMOR_CSAT; - passThrough = 0.85; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; }; }; }; + + class O_officer_F: O_Soldier_base_F { + class HitPoints: HitPoints { + class HitFace; + class HitNeck; + class HitHead; + class HitPelvis; + class HitAbdomen; + class HitDiaphragm; + class HitChest; + class HitBody; + class HitArms; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { + armor = ARM_LEG_ARMOR_CSAT; // @todo is that suppossed to be the case? + name = "hand_l"; // @todo hopefully these still include the whole arm + hands + }; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands + }; + class HitLeftLeg: HitLegs { + armor = ARM_LEG_ARMOR_CSAT; // @todo is that suppossed to be the case? + name = "leg_l"; + }; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; + }; + }; + }; + + class O_Protagonist_VR_F: O_Soldier_base_F { + class HitPoints: HitPoints { + class HitHead; + class HitBody; + class HitHands; + class HitLegs; + class HitLeftArm: HitHands { + armor = 2; + name = "hand_l"; // @todo hopefully these still include the whole arm + hands + }; + class HitRightArm: HitLeftArm { + name = "hand_r"; // @todo hopefully these still include the whole arm + hands + }; + class HitLeftLeg: HitLegs { + armor = 2; + name = "leg_l"; + }; + class HitRightLeg: HitLeftLeg { + name = "leg_r"; + }; + }; + }; + class MapBoard_altis_F; class ACE_bodyBagObject: MapBoard_altis_F { XEH_ENABLED; From 3362bbf0bf41bb496c469d549fae034d81239c51 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 00:01:42 +0200 Subject: [PATCH 197/620] fix protection 1.50 ubc issues --- addons/protection/FixUniforms.hpp | 569 ------------------------------ 1 file changed, 569 deletions(-) diff --git a/addons/protection/FixUniforms.hpp b/addons/protection/FixUniforms.hpp index 24c02b79aa..e69de29bb2 100644 --- a/addons/protection/FixUniforms.hpp +++ b/addons/protection/FixUniforms.hpp @@ -1,569 +0,0 @@ - -class Man; -class CAManBase: Man { - class HitPoints { - class HitHead { - /*armor = 1; - passThrough = 1; - radius = 0.1; - explosionShielding = 0.5; - minimalHit = 0;*/ - }; - - class HitBody { - /*armor = 1; - passThrough = 1; - radius = 0.15; - explosionShielding = 10; - minimalHit = 0;*/ - }; - - class HitHands { - /*armor = 1; - passThrough = 1; - radius = 0.08; - explosionShielding = 1; - minimalHit = 0;*/ - }; - - class HitLegs { - /*armor = 1; - passThrough = 1; - radius = 0.1; - explosionShielding = 1; - minimalHit = 0;*/ - }; - }; - - /*armor = 2; - armorStructural = 5;*/ -}; - -class Civilian: CAManBase { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ -}; - -/*class Civilian_F: Civilian {}; -class C_man_1: Civilian_F {};*/ - -class SoldierWB: CAManBase {}; -class SoldierEB: CAManBase {}; -class SoldierGB: CAManBase {}; - -class B_Soldier_base_F: SoldierWB { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - }; - - armor = 2; - armorStructural = 5;*/ -}; - -class B_Soldier_02_f: B_Soldier_base_F { // t-shirt - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 1; - }; - - class HitHands: HitHands { - armor = 1; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ - - armorStructural = 5; //7; -}; - -class B_Soldier_03_f: B_Soldier_base_F { // sleeves - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 1; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ - - armorStructural = 5; //7; -}; - -class B_Soldier_04_f: B_Soldier_base_F { // heli pilot - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - /*armor = 2;*/ - passThrough = 1; //0.5; - /*explosionShielding = 2.4;*/ - }; - - class HitHands: HitHands { - armor = 2; //8; - passThrough = 1; //0.5; - /*explosionShielding = 1.2;*/ - }; - - class HitLegs: HitLegs { - armor = 2; //8; - passThrough = 1; //0.5; - /*explosionShielding = 1.2;*/ - }; - }; -}; - -class B_Soldier_05_f: B_Soldier_base_F { // cas pilot - armorStructural = 5; //3; - - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - armor = 3; //2; - passThrough = 1; //0.5; - /*explosionShielding = 2.4;*/ - }; - - class HitHands: HitHands { - armor = 3; //8; - /*passThrough = 1; - explosionShielding = 1.2;*/ - }; - - class HitLegs: HitLegs { - armor = 3; //8; - /*passThrough = 1; - explosionShielding = 1.2;*/ - }; - }; -}; - -class B_Soldier_diver_base_F: B_Soldier_base_F { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 2; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ -}; - -// these appear to be broken, remnants from A2? -/*class C_man_p_fugitive_F: C_man_1 { - class HitPoints: HitPoints { - class HitBody: HitBody { - armor = "0.3*10"; - }; - - class HitLegs: HitLegs { - armor = "0.3*5"; - }; - }; -}; - -class C_man_w_worker_F: C_man_1 { - class HitPoints: HitPoints { - class HitBody: HitBody { - armor = "0.6*10"; - }; - - class HitHands: HitHands { - armor = "0.5*5"; - }; - - class HitLegs: HitLegs { - armor = "0.5*5"; - }; - }; -}; - -class C_man_hunter_1_F: C_man_1 { - class HitPoints: HitPoints { - class HitBody: HitBody { - armor = "0.6*10"; - }; - - class HitHands: HitHands { - armor = "0.5*5"; - }; - - class HitLegs: HitLegs { - armor = "0.5*5"; - }; - }; -}; - -class C_man_p_shorts_1_F: C_man_1 { - class HitPoints: HitPoints { - class HitLegs: HitLegs { - armor = "0.3*5"; - }; - }; -}; - -class C_man_pilot_F: C_man_1 { - class HitPoints: HitPoints { - class HitBody: HitBody { - armor = "0.6*10"; - }; - - class HitHands: HitHands { - armor = "0.5*5"; - }; - - class HitLegs: HitLegs { - armor = "0.5*5"; - }; - }; -};*/ - -class I_Soldier_base_F: SoldierGB { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ - - /*armor = 2;*/ - armorStructural = 5; //7; -}; - -class I_Soldier_02_F: I_Soldier_base_F { // sleeves - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 1; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ -}; - -class I_Soldier_03_F: I_Soldier_base_F { // heli pilot - /*armorStructural = 5;*/ - - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - /*armor = 2;*/ - passThrough = 1; //0.5; - /*explosionShielding = 2.4;*/ - }; - - class HitHands: HitHands { - armor = 2; //8; - passThrough = 1; //0.5; - /*explosionShielding = 1.2;*/ - }; - - class HitLegs: HitLegs { - armor = 2; //8; - passThrough = 1; //0.5; - /*explosionShielding = 1.2;*/ - }; - }; -}; - -class I_Soldier_04_F: I_Soldier_base_F { // cas pilot - armorStructural = 5; //3; - - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - armor = 3; //2; - passThrough = 1; //0.5; - /*explosionShielding = 2.4;*/ - }; - - class HitHands: HitHands { - armor = 3; //8; - /*passThrough = 1; - explosionShielding = 1.2;*/ - }; - - class HitLegs: HitLegs { - armor = 3; //8; - /*passThrough = 1; - explosionShielding = 1.2;*/ - }; - }; -}; - -class I_Soldier_diver_base_F: I_Soldier_base_F { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 2; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ -}; - -class O_Soldier_base_F: SoldierEB { - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - armor = 4; //6; - passThrough = 0.85; //0.5; - /*explosionShielding = 1.5;*/ - }; - - class HitHands: HitHands { - armor = 4; //8; - passThrough = 0.85; //0.5; - /*explosionShielding = 0.8;*/ - }; - - class HitLegs: HitLegs { - armor = 4; //8; - passThrough = 0.85; //0.5; - /*explosionShielding = 0.8;*/ - }; - }; - - /*armor = 2; - armorStructural = 5;*/ -}; - -class O_officer_F: O_Soldier_base_F { - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - /*armor = 2; - passThrough = 1; - explosionShielding = 10;*/ - }; - - class HitHands: HitHands { - /*armor = 2; - passThrough = 1; - explosionShielding = 1;*/ - }; - - class HitLegs: HitLegs { - armor = 2; //8; - passThrough = 1; //0.5; - /*explosionShielding = 1;*/ - }; - }; -}; - -class O_Soldier_02_F: O_Soldier_base_F { // crew ? - armorStructural = 5; //3; - - class HitPoints: HitPoints { - class HitHead: HitHead { - /*armor = 1; - passThrough = 1; - explosionShielding = 0.5;*/ - }; - - class HitBody: HitBody { - armor = 4; //6; - passThrough = 0.85; //0.5; - /*explosionShielding = 1.5;*/ - }; - - class HitHands: HitHands { - armor = 4; //8; - passThrough = 0.85; //1; - /*explosionShielding = 0.8;*/ - }; - - class HitLegs: HitLegs { - armor = 4; //8; - passThrough = 0.85; //1; - /*explosionShielding = 0.8;*/ - }; - }; -}; - -class O_Soldier_diver_base_F: O_Soldier_base_F { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 2; - }; - - class HitBody: HitBody { - armor = 2; - }; - - class HitHands: HitHands { - armor = 2; - }; - - class HitLegs: HitLegs { - armor = 2; - }; - };*/ -}; - -class O_Soldier_VR_F: O_Soldier_base_F { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - passThrough = 1; - explosionShielding = 0.5; - }; - - class HitBody: HitBody { - armor = 2; - passThrough = 1; - explosionShielding = 10; - }; - - class HitHands: HitHands { - armor = 2; - passThrough = 1; - explosionShielding = 1; - }; - - class HitLegs: HitLegs { - armor = 2; - passThrough = 1; - explosionShielding = 1; - }; - };*/ -}; - -class O_Protagonist_VR_F: O_Soldier_base_F { - /*class HitPoints: HitPoints { - class HitHead: HitHead { - armor = 1; - passThrough = 1; - explosionShielding = 0.5; - }; - - class HitBody: HitBody { - armor = 2; - passThrough = 1; - explosionShielding = 10; - }; - - class HitHands: HitHands { - armor = 2; - passThrough = 1; - explosionShielding = 1; - }; - - class HitLegs: HitLegs { - armor = 2; - passThrough = 1; - explosionShielding = 1; - }; - };*/ -}; From 5d612abd028cbe9db09670fe7ca78ff6ead7db0b Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Tue, 1 Sep 2015 00:42:13 +0200 Subject: [PATCH 198/620] posible Fix for #2310 --- addons/optionsmenu/config.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index 17e4887db6..bf8e48fb78 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -32,3 +32,10 @@ class CfgAddons { class ACE_Extensions { extensions[] += {"ace_clipboard"}; }; + + +class CfgCommands { + allowedHTMLLoadURIs = { + "http://ace3mod.com/version.html" + }; +}; From afee398b113c987e370d6d5251dd8a74e7b15229 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Tue, 1 Sep 2015 00:51:32 +0200 Subject: [PATCH 199/620] woops --- addons/optionsmenu/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index bf8e48fb78..e740448d9e 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -35,7 +35,7 @@ class ACE_Extensions { class CfgCommands { - allowedHTMLLoadURIs = { + allowedHTMLLoadURIs[] = { "http://ace3mod.com/version.html" }; }; From 3f4d0af940802d89fd494c1346a0f470582b6253 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Tue, 1 Sep 2015 01:03:34 +0200 Subject: [PATCH 200/620] prevent Issues with other mods --- addons/optionsmenu/config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp index e740448d9e..4acfef321f 100644 --- a/addons/optionsmenu/config.cpp +++ b/addons/optionsmenu/config.cpp @@ -35,7 +35,7 @@ class ACE_Extensions { class CfgCommands { - allowedHTMLLoadURIs[] = { + allowedHTMLLoadURIs[] += { "http://ace3mod.com/version.html" }; }; From c97e0eb500825394dc63894ea11922bfc4d9dcd5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 31 Aug 2015 22:50:01 -0500 Subject: [PATCH 201/620] MapTools - Handle Bad Aspect Ratio --- addons/maptools/functions/fnc_updateMapToolMarkers.sqf | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf index 5c88d907b8..5d11c6a6e9 100644 --- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf +++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf @@ -18,7 +18,7 @@ params ["_theMap"]; -private ["_rotatingTexture", "_textureWidth", "_scale", "_xPos", "_yPos"]; +private ["_rotatingTexture", "_textureWidth", "_scaleX", "_scaleY", "_xPos", "_yPos"]; // Show/Hide draw buttons if ([] call FUNC(canDraw)) then { @@ -43,16 +43,18 @@ if (GVAR(mapTool_Shown) == 1) then { }; // Update scale of both parts -_scale = _textureWidth * CONSTANT_SCALE * (call FUNC(calculateMapScale)); +getResolution params ["_resWidth", "_resHeight", "", "", "_aspectRatio"]; +_scaleX = 32 * _textureWidth * CONSTANT_SCALE * (call FUNC(calculateMapScale)); +_scaleY = _scaleX * ((_resWidth / _resHeight) / _aspectRatio); //handle bad aspect ratios // Position of the fixed part _xPos = GVAR(mapTool_pos) select 0; _yPos = (GVAR(mapTool_pos) select 1) + _textureWidth * CENTER_OFFSET_Y_PERC; -_theMap drawIcon [QUOTE(PATHTOF(data\mapToolFixed.paa)), [1,1,1,1], [_xPos,_yPos], (32 * _scale), (32 * _scale), 0, "", 0]; +_theMap drawIcon [QUOTE(PATHTOF(data\mapToolFixed.paa)), [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, 0, "", 0]; // Position and rotation of the rotating part _xPos = (GVAR(mapTool_pos) select 0) + sin(GVAR(mapTool_angle)) * _textureWidth * CENTER_OFFSET_Y_PERC; _yPos = (GVAR(mapTool_pos) select 1) + cos(GVAR(mapTool_angle)) * _textureWidth * CENTER_OFFSET_Y_PERC; -_theMap drawIcon [_rotatingTexture, [1,1,1,1], [_xPos,_yPos], (32 * _scale), (32 * _scale), GVAR(mapTool_angle), "", 0]; +_theMap drawIcon [_rotatingTexture, [1,1,1,1], [_xPos,_yPos], _scaleX, _scaleY, GVAR(mapTool_angle), "", 0]; From 73911f701d4319633c2f316fd3e5a766a02ed727 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 08:53:11 +0200 Subject: [PATCH 202/620] add debug messages for #2134 --- addons/common/functions/fnc_checkFiles.sqf | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 647a1b00a6..468a5c906c 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -63,24 +63,33 @@ if (isMultiplayer) then { // send servers version of ACE to all clients GVAR(ServerVersion) = _version; GVAR(ServerAddons) = _addons; + diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; + diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; publicVariable QGVAR(ServerVersion); publicVariable QGVAR(ServerAddons); } else { // clients have to wait for the variables [{ - if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith {}; + if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith { + diag_log text "[ACE] DEBUG: Waiting for file info from server."; + }; private ["_version","_addons"]; _version = (_this select 0) select 0; _addons = (_this select 0) select 1; + diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; + diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; + diag_log text format ["[ACE] DEBUG: ClientVersion - %1", _version]; + diag_log text format ["[ACE] DEBUG: ClientAddons - %1", _addons]; + if (_version != GVAR(ServerVersion)) then { private "_errorMsg"; _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; diag_log text format ["[ACE] ERROR: %1", _errorMsg]; - if (hasInterface) then {diag_log str "1"; + if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; }; @@ -91,7 +100,7 @@ if (isMultiplayer) then { diag_log text format ["[ACE] ERROR: %1", _errorMsg]; - if (hasInterface) then {diag_log str "1"; + if (hasInterface) then { ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); }; }; From 5e68486233b8e56418d9a235215b9d046ea77ed9 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 10:06:01 +0200 Subject: [PATCH 203/620] high command module breaks ace, fix #2134 --- addons/common/functions/fnc_checkFiles.sqf | 18 ++++++++++-------- addons/main/config.cpp | 1 - addons/winddeflection/config.cpp | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 468a5c906c..3205209130 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -20,7 +20,9 @@ _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); diag_log text format ["[ACE]: ACE is version %1.", _version]; private "_addons"; -_addons = activatedAddons; +//_addons = activatedAddons; // broken with High-Command module, see #2134 +_addons = "true" configClasses (configFile >> "CfgPatches");// +_addons = [_addons, {toLower configName _this}] call FUNC(map);// _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); { @@ -63,25 +65,25 @@ if (isMultiplayer) then { // send servers version of ACE to all clients GVAR(ServerVersion) = _version; GVAR(ServerAddons) = _addons; - diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; - diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; + //diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; + //diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; publicVariable QGVAR(ServerVersion); publicVariable QGVAR(ServerAddons); } else { // clients have to wait for the variables [{ if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith { - diag_log text "[ACE] DEBUG: Waiting for file info from server."; + //diag_log text "[ACE] DEBUG: Waiting for file info from server."; }; private ["_version","_addons"]; _version = (_this select 0) select 0; _addons = (_this select 0) select 1; - diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; - diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; - diag_log text format ["[ACE] DEBUG: ClientVersion - %1", _version]; - diag_log text format ["[ACE] DEBUG: ClientAddons - %1", _addons]; + //diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; + //diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; + //diag_log text format ["[ACE] DEBUG: ClientVersion - %1", _version]; + //diag_log text format ["[ACE] DEBUG: ClientAddons - %1", _addons]; if (_version != GVAR(ServerVersion)) then { private "_errorMsg"; diff --git a/addons/main/config.cpp b/addons/main/config.cpp index c6f487aa53..a013d8e971 100644 --- a/addons/main/config.cpp +++ b/addons/main/config.cpp @@ -545,7 +545,6 @@ class CfgPatches { }; author[] = {ECSTRING(common,ACETeam)}; authorUrl = "http://ace3mod.com/"; - versionDesc = "ACE3"; VERSION_CONFIG; }; }; diff --git a/addons/winddeflection/config.cpp b/addons/winddeflection/config.cpp index df2b55d221..a7bedbb9ef 100644 --- a/addons/winddeflection/config.cpp +++ b/addons/winddeflection/config.cpp @@ -6,7 +6,6 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_weather"}; - versionDesc = "ACE Wind Deflection"; author[] = {ECSTRING(common,ACETeam), "Glowbal", "Ruthberg"}; authorUrl = "http://ace3mod.com/"; VERSION_CONFIG; From b1fbbcc49f1be5ad84aedf39d679cae08885a7a5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 12:46:15 +0200 Subject: [PATCH 204/620] bouncing flashbangs, fix #1907 --- addons/grenades/CfgAmmo.hpp | 41 ++++++++++++++++++++++--------------- addons/grenades/Effects.hpp | 4 ++++ addons/grenades/config.cpp | 2 ++ 3 files changed, 30 insertions(+), 17 deletions(-) create mode 100644 addons/grenades/Effects.hpp diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 61f20eb935..120d3ab5ea 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -5,28 +5,28 @@ class CfgAmmo { flareSize = 12; timeToLive = 60; }; + class F_40mm_White: FlareBase { intensity = 40000; flareSize = 12; }; + class F_20mm_White: FlareBase { intensity = 20000; flareSize = 6; }; + class F_Signal_Green: FlareBase { intensity = 20000; flareSize = 12; }; + class Flare_82mm_AMOS_White: FlareCore { intensity = 80000; flareSize = 12; timeToLive = 60; }; - class F_20mm_Red: F_20mm_White {}; - class F_20mm_Green: F_20mm_White {}; - class F_20mm_Yellow: F_20mm_White {}; - class ACE_F_Hand_White: F_20mm_White { grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; @@ -38,6 +38,8 @@ class CfgAmmo { SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; + + class F_20mm_Red; class ACE_F_Hand_Red: F_20mm_Red { grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; @@ -49,6 +51,8 @@ class CfgAmmo { SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; + + class F_20mm_Green; class ACE_F_Hand_Green: F_20mm_Green { grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; @@ -60,6 +64,8 @@ class CfgAmmo { SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; + + class F_20mm_Yellow; class ACE_F_Hand_Yellow: F_20mm_Yellow { grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; @@ -72,20 +78,21 @@ class CfgAmmo { timeToLive = 60; }; - class ACE_G_M84: F_20mm_Yellow { - useFlare = 0; - flareSize = 0; - intensity = 0; - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; + class SmokeShell; + class ACE_G_M84: SmokeShell { + model = PATHTOF(models\ACE_m84_thrown.p3d); + dangerRadiusHit = -1; + suppressionRadiusHit = 20; + typicalSpeed = 22; + cost = 40; + deflecting = 15; timeToLive = 6; fuseDistance = 2.3; - model = PATHTOF(models\ACE_m84_thrown.p3d); + grenadeFireSound[] = {}; + grenadeBurningSound[] = {}; + aiAmmoUsageFlags = "0"; + smokeColor[] = {0,0,0,0}; + effectsSmoke = "ACE_M84FlashbangEffect"; + whistleDist = 0; }; }; diff --git a/addons/grenades/Effects.hpp b/addons/grenades/Effects.hpp new file mode 100644 index 0000000000..c9e214de5c --- /dev/null +++ b/addons/grenades/Effects.hpp @@ -0,0 +1,4 @@ + +class ACE_M84FlashbangEffect { + // empty +}; diff --git a/addons/grenades/config.cpp b/addons/grenades/config.cpp index c2a899d66c..2f9e631fe1 100644 --- a/addons/grenades/config.cpp +++ b/addons/grenades/config.cpp @@ -17,3 +17,5 @@ class CfgPatches { #include "CfgWeapons.hpp" #include "CfgMagazines.hpp" #include "CfgVehicles.hpp" + +#include "Effects.hpp" From de66c2be7b19d951394fa6303fffda569fbd9071 Mon Sep 17 00:00:00 2001 From: bux578 Date: Tue, 1 Sep 2015 13:16:58 +0200 Subject: [PATCH 205/620] add commy's newest issue --- documentation/development/arma-3-issues.md | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/development/arma-3-issues.md b/documentation/development/arma-3-issues.md index 16f9988409..c28dc2f118 100644 --- a/documentation/development/arma-3-issues.md +++ b/documentation/development/arma-3-issues.md @@ -18,6 +18,7 @@ Keeping track of Arma 3 issues that need to be fixed. If you want to support us * [bux578: 0022000: Add/Alter script command to add perfectly configured weapons to cargo](http://feedback.arma3.com/view.php?id=22000) * [commy2: 0021443: Unexpected behavior of += array in configs](http://feedback.arma3.com/view.php?id=21443) * [commy2: 0022671: setVariable is not always JIP persistent](http://feedback.arma3.com/view.php?id=22671) +* [commy2: 0025404: splitString scripting command causes game crash] (http://feedback.arma3.com/view.php?id=25404) * [CorruptedHeart: 0022318: Can no longer use "MenuBack" shortcut in AddAction](http://feedback.arma3.com/view.php?id=22318) * [James2464: 0023725: All Environment Rocks Should Have PhysX LODs](http://feedback.arma3.com/view.php?id=23725) * [Jaynus: 0023679: Display event handler return values for mouse buttons should be respected](http://feedback.arma3.com/view.php?id=23679) From dd788342fe80576dfeb5614b95b56e87b350997c Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 16:37:46 +0200 Subject: [PATCH 206/620] remove commented debug messages --- addons/common/functions/fnc_checkFiles.sqf | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 3205209130..c1a0b1cb89 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -65,26 +65,17 @@ if (isMultiplayer) then { // send servers version of ACE to all clients GVAR(ServerVersion) = _version; GVAR(ServerAddons) = _addons; - //diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; - //diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; publicVariable QGVAR(ServerVersion); publicVariable QGVAR(ServerAddons); } else { // clients have to wait for the variables [{ - if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith { - //diag_log text "[ACE] DEBUG: Waiting for file info from server."; - }; + if (isNil QGVAR(ServerVersion) || isNil QGVAR(ServerAddons)) exitWith {}; private ["_version","_addons"]; _version = (_this select 0) select 0; _addons = (_this select 0) select 1; - //diag_log text format ["[ACE] DEBUG: ServerVersion - %1", GVAR(ServerVersion)]; - //diag_log text format ["[ACE] DEBUG: ServerAddons - %1", GVAR(ServerAddons)]; - //diag_log text format ["[ACE] DEBUG: ClientVersion - %1", _version]; - //diag_log text format ["[ACE] DEBUG: ClientAddons - %1", _addons]; - if (_version != GVAR(ServerVersion)) then { private "_errorMsg"; _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; From 264091957a53995e320b29edd4c4b972d5e58739 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 1 Sep 2015 10:09:08 -0500 Subject: [PATCH 207/620] #1917 - Pointing Update Circle Icon --- addons/finger/functions/fnc_perFrameEH.sqf | 2 +- addons/finger/ui/fp_icon2.paa | Bin 0 -> 66500 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 addons/finger/ui/fp_icon2.paa diff --git a/addons/finger/functions/fnc_perFrameEH.sqf b/addons/finger/functions/fnc_perFrameEH.sqf index d6297a4095..7f0150c492 100644 --- a/addons/finger/functions/fnc_perFrameEH.sqf +++ b/addons/finger/functions/fnc_perFrameEH.sqf @@ -41,7 +41,7 @@ _iconSize = BASE_SIZE * _fovCorrection; _drawColor set [3, ((_drawColor select 3) * (_timeLeftToShow / 0.5))]; }; - drawIcon3D [QUOTE(PATHTOF(UI\fp_icon.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "PuristaMedium"]; + drawIcon3D [QUOTE(PATHTOF(UI\fp_icon2.paa)), _drawColor, _pos, _iconSize, _iconSize, 0, _name, 1, 0.03, "PuristaMedium"]; }; } count (GVAR(fingersHash) select 0); diff --git a/addons/finger/ui/fp_icon2.paa b/addons/finger/ui/fp_icon2.paa new file mode 100644 index 0000000000000000000000000000000000000000..4f7fde9f10bc96e84a1a076ff8ffbcea57ea3e7d GIT binary patch literal 66500 zcma&Odt4J|z6bm~GYKR>NCHGaz?sSY28arZCYb?h3tlQ}C@c*mXitxBwe?bUStl2u z>silfPr*vX6$G(%J=?ln+hSK6lBhkq_3Y_c+pccwrJ&We-fFuoy67bH{$hRqc>jC( zd;$cLndkXkzQ6D9@=CLQLBnTmg!=Zfeys2t&^0^3K$>)z%EqXNh9K$2| zeEFk~F5%$!5In4%2tD$9gcg2_(6R(VKO->mkr@3J9{)eSIuWtI17)G(NUTE0f)M@i zOS zNTQb3tvIijn_MU>#qLBo12`3a*QDBc6vo8?bUp>vDw{1JX=)Cl>-4+zahwvs7hZ+s zt6P;~fq4|ES~Q{sUZEs{%gz_bYXvMxM@vo|IhQhE(X>!RMh#Jnue|!MAG9Jt!1g!_3c8tLXbeT9c*NPfL^g9_8uXh@-#eDdBG9&zI9iu_iJx zdvZQ<#!y(rju&@4?qHbtoE+5Jf|Syc-1z9N;gvXcAybW;#9=}VO4Q|YS{c&faG zTxs^B9ER6o@yT=!wuo6>x=+AT1zPgS*#dc;fA)OOY$jp2Y|2R8iyP(}SSCQM9%bhn z-3|2NFr|;o-XRf2_8vV|X^1K9Eey!lbPi*2t}kndSs^wx!7CjD?p zcI#rN6D_nmxYqPfj#%K2N=pE3p3mPkJ1D${ty^XdprH~OBiW+28%1xS0yl&p%ZA3cW!EC?)?I@gJB#d;<9Ot z;w1rV{nd9AHqJkPsoqgd?9e}{T-9I4)f(bem66464gHq@jWs3k?SWA(;VDkAI#E6S zHc#!Hth+fjIlm#@i^Ik5g)#TGlvHiguP!)c6efu&sda((Ee?vL(@zE8F9s3WRZ8-` zs}_vDhEpZ?VUsTHD7Uj7N z(iAN^+*RkljVuD;5zPT~u-%giw;6h_|2~MOcO?^cS%UP7%|RQ;uxqjS=~)X)v{wgh z5egI-p*_X0wq>SF-F>~8t*R~zD#!+*o56TST7KSSa8$Wg9 z)vL3x@LOqaN?qdpl0VBUTvV9~HVE2wPPGRpx5@6Jo}LaSCbZ)A>bii{<=wul75^mR zKF{P@Yhv1gHJ(XJB5=4}nY!zO-aJ~k-SdMbf?|D4fW06w!5TjrI(7TV1+$C#^q^g2 z&mEe~NNvT8Y*2UR(g-+Ti@Yj|qgRe)kXoVT0+tbsOKwPC=i8s1>)|zKGXE@cl2sIGhUqJ2Ene zLl^&j5DQAaAIpY@KGT1Gq>fnob!7y98RJDfNu12<$0`3jHje(V7@+flhPe0HVewP2 z?2857Og3>6P{G4!d7nurl6=@Fo;-I>1`ZqR>7O(^v_x0%#M$$p>O-5oqE23yz(XtT zQTj!9B9lBXGqH60qXC6-syRSEH%IHJGK-X_c!@1QFJ$ZysxrqOr%l>Xy1*Q$DwJiA zj8J8ARb>&G)H$75K-zE@KHk4`hf%QVMs1H9omETegN~|Mjy6#1tuVI7r11zC! zdh6}0dQkV)N9_VdzUZF3_38z9?ZDGs+^<*u2f|pyO(~jQSVR2Dk9rLI? z(hKKh>DLdet$TKlr2H?l1Bq+A1`;Hh4;y+iO@hHguT%da9yckTqz18W##ACj?Wjj1y z3w2V@d_=E3G@u91CTq|i)~?+H9>p~Wq()?MqH3#vN+1fPJ_};=rvG8_5i^T?^9dV| zi3OYV@2ssY#G-h2RI3U|USHDxomjWmOJ=O}w&HJ=@;Hz$Vb(oKcrMoszw|{*!#yRs z;_1d)Px*7JT6IHcujy*{MT0jpb@MqU!Kk)KatCeyymnF>Zo~6xJ5_`Do3W9Am|kb_ zGmRO~1h9OS*~tWLJWY&r1**?l03#1RmpJLcCMP|>IIHhjc#7;=7&vimsu@7rnM7NF zV2>rS-0GsM0qr^X2R%!jM0Q%ArsJzj0eVVGW;VOhEVe1o<4Wa|>1&M+yDms?BtDwK z7yXQM(|dw6!pT_lzrw!0xJ_uKyZC@`-^8IuzKl<5s&{4+OxOWviD}s>zZE=P?YRm_ zR+V)0W($waiD?_>wft}e)W6-W%-(fHZ*{u-*1)u5TL+|avy(d7B1$a&%2OWF9B^GZ zrjL8u!v8HR{^~z2RMZh@`t%q0k5U@SuX}dr(P`nr$0;Mk^=1NnyktihGm9L=4fpAL zri-7Sk)=q{run|}XYYuu_{hk*3`sK=dhMk{aT8xiHqPyywPOTGf^^9Y^zPcV_t^wq zRFX;djF_Y7F)PYQx3E-=Iiw(u03x~!05yK(klLnO186P-5(Az}sLAO~e|EQE z78p$Yp>DGo%B3%9Vp?olQt=RKHfECN3e1t}0Z)dq zMY`4;rgeM=xa69$WHd1FqB%lUK+{iF~QJTm&2moPc*2`Te?R+w+|t z8~ILpkAt4hcYqlT#C?c#})MBR?p%Kok&_0P{JEfrnqb$dONCU53U)g%O; z`Gt0#!cUihSwz{bwWn-BG~k(RnLGlkIJ^BoPwYgo-{}3n;hhdo5@$+p zJ$+vL{=G8C*WpR>mS+dzHuz7rwP3k2y)pEs=-n#W87Ax`Hb3S&e{SIJtKqwnx!v#f zycstMmC~hUq1Sp2-C`}lY47%|HS-9&^ym-P2sO8;W#W)Ih|2T2Z4lBm3gt_d2xU>X zNJqdn^~x6U2>hfoAs9<2MfW3b9~lIyTd0`+2pB>7RK~^bkeFO)`Dwrr)AAfV^5bX0 zE~cgfWRKzukSeXPi*TVV*^?F)nX`5%Qr`m&6U9@q>Ni+G)zkBc*y7Ew*NP&KXklrV zA+&K?6mhNj6&s5dl_5_msIp;>SN`no3vuj|P=0(~#Gfy^3%dSuWs?U>Zg@h^r`7Ep zt!Y(|x3poJn9}`%|2F(0e2Hsy#w@ShU7B=wOaFy1<8pBoOhkbWy&VFKcRgDC| z3fZcIYXUY`)pmFPU0}2utL+JPnV#Vp&;(RQCnbIU?Ctw-_x!5;w)1Fk92|HKI#Kj?ZA@rhmPKO^@83Q-kMr|>%&vQ zT?4fFbzOLC$^?6@ISZlg9}K*UG!VBMLr0>M!>TiG8GdFyeM;|g9Xq=r!(G8RT~7hv zEV8#uz6qk2)EK&t93BBvpH_e})7RVr$0*e(a(gU6%BTw2AdWGL?njT@F*~LaQ`15f zZv*OUGRxi_0mZ6Q6y#x08_tx39`T4KmdGGOyqF|`X(XBs79}TJ;-VR{B<9=d9k+m7 zhHL?pO4#{nE*Fv!o(W*o9t_c0PGtF|qM0W!ae7D8l3+*z&@M4eA<>P}fCePaKD_}} ziE>iyES)FI@<`1IRFsjKz2QA`0_#-(A{ptX2wj|Q4^)-s58w;tIGx>!caMqqF$-aH z(Mu~@aMH9qtfJs?K$`Id%qR#3Y#>Zau6xjrxUOH%SEaRv&^Nvvl3Jo$dF-q%YFYR7 z$$`mVk2S9Q^q@}g0YBV6QDYU_$e}e8GtZue3%=NF573+E+x>JiVANp+TaOV(C(PtMfq`)5>3-9;WDx;XtH)N1l5SmC#$9=g-~!>VoNiB0TWhBWsV!HhgVv4(Ja>U4 zd^807SS#?%D2ok313vJL?-lKO@AUrv;^R!D<>pocsI-?vpUwYfe%ULn_+;LOw8lBD zlWSV+PHK&nrA~v2f!SB&g^nCPWM(OQRyV*Btq4J&icgclR;1GG)eAT5(PJ>0?nlA( z)5r{^H9^UU7BZf+sTAD(?#Re3zy=ALhyQSB?JMvr>BVd7b^tv?1bCkPUqKmDvFPLM%z?VckSF;=joBDD^( zC-t@(Zkf%c%{py$XqhNezu|~E!YU-0sT-o^1f`Pd{M;3Df_|mm3Oh*O10HM+(w3}O zYze?P$ZY{}T-xmVXScwMz$4^a%p!8n$pQyoS(A~9pM7@sX96Z}Hc#p12X$ZOJ;87< zNN=p%A>s17UkI9w(-%8Az+`7we$@hwl_zQm~yyQB?B`>Ws2dMc*fTp=ctrLfC11~47Iic4Nzd6TA<@qNk zlDEv1qSp@F#A)crVMtR68FBj2BfyIZDGojIiN!HB^7;7+p(Z>Qzr@W*6n5+5xFLXR zcL-SZmrx3=L})rMsr@95A$Mg+MdK->pOG>yhCIzUnRhRiN;Ccy@ASQL*dovbe#Q6f zdltSL69o`F!alfn*7&oQ1O<#O_1X85ag9#zKW&8wU{+<s#;^ zvx6p<%*f^d3uvE3qo^cTq5WKAJp`<`w+S4-&mpUay2&7AL{R zmC8d#zTQ5{xoJMkftr<|=1rp%F6IL|mtbiejV~q4xhXC8XPaGYaR!7aSn@&&I2H(a zO~tAB9*aOpdKMpjX4lmZ%yIv7;6Weu`6nMSvFPiO?HRd{N*hGi$SohU(LqS2U%X!q zG($=v|NK=g_Y>Mk>ks|Ue(5e_0@VJ>*Hrp9X*R=f*gVTmHU-iB#pEA9LaqjQa57oA-PM9=BzWDM+a$du+fL zr^@=rfiD^q0R9)u;Z+Z612jh`Gr0)8q=XseHk$)&9tR+J1%#JdrU1P{r30nFKTV4RQ0b^zh z9sz!upPIy$Olinyh2%y~oUT1PVc}az95R1$Bm&m3;S zu_J4r{9*)(X{dvD(ffGFjjBijo$p>-XGoUa49*q1OpX;~D(?4fjGDvyaXOh(Z*@_c zREDLG?)jkjK`pRkirq!K7$uqc>@Jf?xy$;&2a<7XOHFaxd+%u@)sV>Tk$mMLROG2$ zy2y(S9*HFNR_L60Z78Sehkm_-CO!Bay>%Wqk=D#2H$4H0 zo~cYGMG0!E)Q?|+>t}@?0i^0WyhXEgenW2Tb%3dwpX4qjWk=Q)9C^B|KQ5iW)J^1c z8(;Fo6Qn(zaRy4jBo|Nh$Nz4MOxrjM%Ao^|Ns}1~9KE*TfZ4H^aj-3^XG{(@^=9D0 zyK(}Vf9U7$OB*!Jx9a-RB)pDsT;K%U>;QX?xR#W7zPE(^M8(w5wjN+?#!Mx7_|3II zcBaa}2UH{*q|BeZ3zp9aEylneKveX7*hP1QX}hCJLZX7x&#v7=%Yt;S>@_XyFU(=1 z0-%Mhs+iKxOJTnYjG#KfM>Nmb0}&#KZZ)1Vux(Ycb&Rv^CgW(swM=)D-qA*Qd}AZ; z+Ta2wd*0MpBOQm<*dxB}^ILGU#ouAFJ7{UvyzE%r)twulCM##6-2Rt8HVN4hMW^$4 zzv^*gcqYBY0T8m|Cn;*#_zRU=bfWD^8~bp(HarUGb?ulUcMlWh48lN4`8CfD8ig{AdcG&6S8;3pXJcaUAG%TC1`d{- zar)rlH(RV?c+S~(&7;%G7}0;^&F7#jD4`X3f4R5mA7=Kv5tD1pJH;0|4)3 zqL*DOm8J;0x)|_ag*gD_kydf#%a90bp$7fN%V*+P$*>(2EB`|m;O1*IT?ZZ~O!RXX zQfRaRMEZ*`h4=PXZZZkeurx1}0=TQ3Wsk5PZ9hOVy>Od7fsF9QYDJ-fa=YaXRe zYFTf6)o_12Wu*94BO$rD>T+v)r>ZF~A%d<|E$8oON1dPQgaKlS_4L6JOQLmdK7Su@ zU20Z-HuvnrmnO4gBc$UNhZoYF7zh$DX25dpU9;ey&bNXf{|bVn5Gvu@ND12MTUKF? z45ty0BSZmJh@6xIzKs?zF)FRlXC0-=w9et@%z_UuF!cLC__`=pvTKisziuuwh?n>0 zHEH>dtQ!5Va!5VjK{hshdJqgz1R37c3E(qC+dy_qZb`7ul|kFU9ONF&ov=lGa=kr@ zq^gjP=fJILH0hw-e^LE1y}b(3)7~Q8Z{Y)2f7<-EB|y!{ zPS)GO?WuItymLPSQvkQO2^5y$ym{7etCqiqN7jC7oPxTliaO)>In~=}8HlSLL?v_p zPq}z{bKRcTrl3MH1rLlrzTTWTkx2rLI&U834%kMy5(&Z8&5AhkxSawwp7pt`nYK zuiUb0Cv>(pgO@!FLbNHv9^|B|PI|k8R-uMa^`?*9s$azZqYTWfedD*Mp?yY{=A7EI zzv-7mtokpL42eET;`kX`@v<4ht!qyE(?XTJ8lLSsTUtA8y6rgGEWy+7yV zypwr`h7`9p(YkVpDKL#I0*(NY#;6Sa`tTcIV>mxWHP4!$6olvgJO^tJC+!K%0D}Va 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 F{{YsY(?9?K literal 0 HcmV?d00001 From 405d85eaaa0369a65b0523e7dd7f806f264cf629 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 19:06:20 +0200 Subject: [PATCH 208/620] fix leaning back through chair while sitting, fix #1795 --- addons/sitting/CfgMoves.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/sitting/CfgMoves.hpp b/addons/sitting/CfgMoves.hpp index fc902032e2..5cef0fbc6d 100644 --- a/addons/sitting/CfgMoves.hpp +++ b/addons/sitting/CfgMoves.hpp @@ -1,6 +1,9 @@ // Enable visual head movement while free-looking #define MACRO_ANIMATION \ - head = "headDefault"; + head = "headDefault"; \ + aimingBody = "aimingNo"; \ + forceAim = 1; \ + static = 1; class CfgMovesBasic; class CfgMovesMaleSdr: CfgMovesBasic { From acfc48efc22591784905b56b7f4804b821e74c34 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 20:00:28 +0200 Subject: [PATCH 209/620] animate head when surrendered and handcuffed --- addons/captives/CfgMoves.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/addons/captives/CfgMoves.hpp b/addons/captives/CfgMoves.hpp index 161fcce9a4..8fa3440706 100644 --- a/addons/captives/CfgMoves.hpp +++ b/addons/captives/CfgMoves.hpp @@ -35,6 +35,12 @@ class CfgMovesMaleSdr: CfgMovesBasic { class CutSceneAnimationBase; + #define MACRO_ANIMATION \ + head = "headDefault"; \ + aimingBody = "aimingNo"; \ + forceAim = 1; \ + static = 1; + //Handcuffed Anims: class ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon: CutSceneAnimationBase { actions = "ACE_CivilStandHandcuffedActions"; @@ -45,6 +51,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; canReload = 0; + MACRO_ANIMATION }; class ACE_AmovPercMstpScapWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\AmovPercMstpSnonWnonDnon_Ease"; @@ -52,12 +59,14 @@ class CfgMovesMaleSdr: CfgMovesBasic { ConnectTo[] = {"ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01}; looped = 1; + MACRO_ANIMATION }; class ACE_AmovPercMstpScapWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon { actions = "CivilStandActions"; file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\non\non\amovpercmstpsnonwnondnon_easeout"; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpScapWnonDnon",0.1}; + MACRO_ANIMATION }; //Handcuffed-FFV: @@ -65,6 +74,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { file = "\A3\cargoposes_F_heli\anim\passenger_flatground_3idleunarmed.rtm"; actions = "ACE_CivilHandCuffedFFVActions"; ConnectTo[] = {}; + MACRO_ANIMATION }; @@ -78,6 +88,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; canReload = 0; + MACRO_ANIMATION }; class ACE_AmovPercMstpSsurWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon"; @@ -85,6 +96,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { looped = 1; ConnectTo[] = {"ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01}; + MACRO_ANIMATION }; class ACE_AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon: ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon { speed = 0.5; //for gameplay reasons, slow this down @@ -92,6 +104,7 @@ class CfgMovesMaleSdr: CfgMovesBasic { file = "\A3\anims_f\Data\Anim\Sdr\mov\erc\stp\sur\non\AmovPercMstpSsurWnonDnon_AmovPercMstpSnonWnonDnon"; ConnectTo[] = {"AmovPercMstpSnonWnonDnon",0.1}; InterpolateTo[] = {"Unconscious",0.01,"ACE_AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon",0.1}; + MACRO_ANIMATION }; }; }; From 237d5b6536f8e79f8f2cff2127196e8be10fd448 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 21:03:28 +0200 Subject: [PATCH 210/620] stand up action (uses get out shortcut) and less awkward standing animaton --- addons/sitting/functions/fnc_sit.sqf | 22 +++++++++++++++++++++- addons/sitting/functions/fnc_stand.sqf | 13 ++++++++++++- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 0c6825ed58..e0692af951 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -16,7 +16,7 @@ */ #include "script_component.hpp" -private ["_configFile", "_sitDirection", "_sitPosition", "_sitRotation", "_sitDirectionVisual"]; +private ["_actionID", "_configFile", "_sitDirection", "_sitPosition", "_sitRotation", "_sitDirectionVisual"]; params ["_seat", "_player"]; @@ -26,6 +26,26 @@ GVAR(seat) = _seat; // Overwrite weird position, because Arma decides to set it differently based on current animation/stance... _player switchMove "amovpknlmstpsraswrfldnon"; +// add scrollwheel action to release object +_actionID = _player getVariable [QGVAR(StandUpActionID), -1]; + +if (_actionID != -1) then { + _player removeAction _actionID; +}; + +_actionID = _player addAction [ + format ["%1", localize LSTRING(Stand)], + QUOTE((_this select 0) call FUNC(stand)), + nil, + 20, + false, + true, + "GetOut", + QUOTE(_this call FUNC(canStand)) +]; + +_player setVariable [QGVAR(StandUpActionID), _actionID]; + // Read config _configFile = configFile >> "CfgVehicles" >> typeOf _seat; _sitDirection = (getDir _seat) + getNumber (_configFile >> QGVAR(sitDirection)); diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index 978bcaf279..ef19d5f586 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -17,8 +17,19 @@ params ["_player"]; +// remove scroll wheel action +_player removeAction (_player getVariable [QGVAR(StandUpActionID), -1]); + // Restore animation -[_player, "", 2] call EFUNC(common,doAnimation); +private "_animation"; +_animation = switch (currentWeapon _player) do { + case "": {"amovpercmstpsnonwnondnon"}; + case (primaryWeapon _player): {"amovpercmstpslowwrfldnon"}; + case (handgunWeapon _player): {"amovpercmstpslowwpstdnon"}; + default {"amovpercmstpsnonwnondnon"}; +}; + +[_player, _animation, 2] call EFUNC(common,doAnimation); // Set variables to nil _player setVariable [QGVAR(isSitting), nil]; From 471d54f6748905e57303800305322808d59dd0ac Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 21:48:40 +0200 Subject: [PATCH 211/620] better saling for tracer sizes, fix #1008 --- addons/ballistics/CfgAmmo.hpp | 68 ++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 13 deletions(-) diff --git a/addons/ballistics/CfgAmmo.hpp b/addons/ballistics/CfgAmmo.hpp index 5ffe94ac45..eeb64fec47 100644 --- a/addons/ballistics/CfgAmmo.hpp +++ b/addons/ballistics/CfgAmmo.hpp @@ -6,23 +6,11 @@ class CfgAmmo { timeToLive=6; }; - class B_20mm : BulletBase { - timeToLive=30; - }; - class B_25mm : BulletBase { - timeToLive=30; - }; - class B_35mm_AA : BulletBase { - timeToLive=30; - }; - class B_30mm_AP : BulletBase { - timeToLive=30; - }; - class B_556x45_Ball : BulletBase { airFriction=-0.00126466; hit=8; typicalSpeed=750; + tracerScale = 1; tracerStartTime=0.073; // M856 tracer burns out to 800m tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator ACE_caliber=5.69; @@ -128,9 +116,13 @@ class CfgAmmo { ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; + class B_56x15_dual: BulletBase { + tracerScale = 0.5; + }; class B_65x39_Caseless : BulletBase { airFriction=-0.00075308; typicalSpeed=800; + tracerScale = 1.1; //1.0; ACE_caliber=6.706; ACE_bulletLength=32.893; ACE_bulletMass=7.9704; @@ -180,10 +172,15 @@ class CfgAmmo { ACE_muzzleVelocities[]={750, 820, 840, 852, 860}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; + class SubmunitionBullet; + class B_65x39_Minigun_Caseless: SubmunitionBullet { + tracerScale = 1.1; //1.0; + }; class B_762x51_Ball : BulletBase { airFriction=-0.00100957; typicalSpeed=833; hit=9; + tracerScale = 1.2; //0.6; tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator ACE_caliber=7.823; @@ -479,6 +476,7 @@ class CfgAmmo { class B_9x21_Ball : BulletBase { airFriction=-0.00226847; typicalSpeed=390; + tracerScale = 0.5; hit=6; ACE_caliber=9.042; ACE_bulletLength=15.494; @@ -491,6 +489,9 @@ class CfgAmmo { ACE_muzzleVelocities[]={440, 460, 480}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; + class B_9x21_Ball_Tracer_Green: B_9x21_Ball { + tracerScale = 0.5; + }; class ACE_9x18_Ball_57N181S : B_9x21_Ball { hit=5; airFriction=-0.00190333; @@ -584,6 +585,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00038944; typicalSpeed=910; + tracerScale = 1.3; //1.2; ACE_caliber=10.363; ACE_bulletLength=54.0; ACE_bulletMass=26.568; @@ -670,9 +672,13 @@ class CfgAmmo { ACE_muzzleVelocities[]={880, 915, 925}; ACE_barrelLengths[]={508.0, 660.4, 711.2}; }; + class B_127x33_Ball: BulletBase { + tracerScale = 1.3; //1.2; + }; class B_127x54_Ball : BulletBase { airFriction=-0.00019268; typicalSpeed=300; + tracerScale = 1.3;// ACE_caliber=12.954; ACE_bulletLength=64.516; ACE_bulletMass=48.6; @@ -688,6 +694,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00057503; typicalSpeed=900; + tracerScale = 1.3; //1.2; ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -703,6 +710,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00057503; typicalSpeed=900; + tracerScale = 1.3;// hit=25; caliber=4.0; ACE_caliber=12.954; @@ -736,6 +744,7 @@ class CfgAmmo { timeToLive=10; airFriction=-0.00063800; typicalSpeed=820; + tracerScale = 1.3; //1.5; ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -750,6 +759,7 @@ class CfgAmmo { class B_45ACP_Ball : BulletBase { airFriction=-0.00081221; typicalSpeed=250; + tracerScale = 0.6; ACE_caliber=11.481; ACE_bulletLength=17.272; ACE_bulletMass=14.904; @@ -761,4 +771,36 @@ class CfgAmmo { ACE_muzzleVelocities[]={230, 250, 285}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; + class B_19mm_HE: BulletBase { + tracerScale = 1; + }; + class B_30mm_HE: B_19mm_HE { + tracerScale = 2.5; + }; + class B_20mm: BulletBase { + timeToLive=30; + tracerScale = 1.5; //1; + }; + class B_25mm: BulletBase { + timeToLive=30; + tracerScale = 2.0; //1; + }; + class B_30mm_AP: BulletBase { + timeToLive=30; + tracerScale = 2.5; + }; + class B_35mm_AA: BulletBase { + timeToLive=30; + tracerScale = 2.75; //1.85; + }; + class ShellBase; + class Sh_120mm_HE: ShellBase { + tracerScale = 3; + }; + class Sh_120mm_APFSDS: ShellBase { + tracerScale = 3; + }; + class Gatling_30mm_HE_Plane_CAS_01_F: BulletBase { + tracerScale = 2.5; + }; }; From be56fd7d466a85a04e35bdac2d4a3922944597d6 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 23:19:49 +0200 Subject: [PATCH 212/620] scripted approach to hand flares, fix #1079 --- addons/grenades/CfgAmmo.hpp | 66 +++++++++---------- addons/grenades/CfgMagazines.hpp | 19 ++++-- addons/grenades/Effects.hpp | 4 ++ addons/grenades/XEH_preInit.sqf | 1 + addons/grenades/functions/fnc_flare.sqf | 23 +++++++ .../grenades/functions/fnc_throwGrenade.sqf | 45 +++++++++---- 6 files changed, 105 insertions(+), 53 deletions(-) create mode 100644 addons/grenades/functions/fnc_flare.sqf diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 120d3ab5ea..b14a806b4c 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -28,66 +28,66 @@ class CfgAmmo { }; class ACE_F_Hand_White: F_20mm_White { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; class F_20mm_Red; class ACE_F_Hand_Red: F_20mm_Red { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; class F_20mm_Green; class ACE_F_Hand_Green: F_20mm_Green { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; class F_20mm_Yellow; class ACE_F_Hand_Yellow: F_20mm_Yellow { - grenadeBurningSound[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - grenadeFireSound[] = {"SmokeShellSoundHit1",0.25,"SmokeShellSoundHit2",0.25,"SmokeShellSoundHit3",0.5}; - soundTrigger[] = {"SmokeShellSoundLoop1",0.5,"SmokeShellSoundLoop2",0.5}; - SmokeShellSoundHit1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_1",1.25893,1,100}; - SmokeShellSoundHit2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_2",1.25893,1,100}; - SmokeShellSoundHit3[] = {"A3\Sounds_F\weapons\smokeshell\smoke_3",1.25893,1,100}; - SmokeShellSoundLoop1[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop1",0.125893,1,70}; - SmokeShellSoundLoop2[] = {"A3\Sounds_F\weapons\smokeshell\smoke_loop2",0.125893,1,70}; timeToLive = 60; }; class SmokeShell; + class ACE_G_Handflare_White: SmokeShell { + GVAR(flare) = 1; + GVAR(color)[] = {0.5,0.5,0.5,0.5}; + model = "\A3\weapons_f\ammo\flare_white"; + dangerRadiusHit = -1; + suppressionRadiusHit = -1; + typicalSpeed = 22; + cost = 100; + deflecting = 30; + explosionTime = 3; + timeToLive = 60; + grenadeFireSound[] = {}; + grenadeBurningSound[] = {}; + aiAmmoUsageFlags = "4 + 2"; + smokeColor[] = {0,0,0,0}; + effectsSmoke = "ACE_HandFlareEffect"; + whistleDist = 0; + }; + class ACE_G_Handflare_Red: ACE_G_Handflare_White { + GVAR(color)[] = {0.5,0.25,0.25,0.5}; + model = "\A3\weapons_f\ammo\flare_red"; + }; + class ACE_G_Handflare_Green: ACE_G_Handflare_White { + GVAR(color)[] = {0.25,0.5,0.25,0.5}; + model = "\A3\weapons_f\ammo\flare_green"; + }; + class ACE_G_Handflare_Yellow: ACE_G_Handflare_White { + GVAR(color)[] = {0.5,0.5,0.25,0.5}; + model = "\A3\weapons_f\ammo\flare_yellow"; + }; + class ACE_G_M84: SmokeShell { + GVAR(flashbang) = 1; model = PATHTOF(models\ACE_m84_thrown.p3d); dangerRadiusHit = -1; suppressionRadiusHit = 20; typicalSpeed = 22; cost = 40; deflecting = 15; + explosionTime = 2.3; timeToLive = 6; - fuseDistance = 2.3; grenadeFireSound[] = {}; grenadeBurningSound[] = {}; aiAmmoUsageFlags = "0"; diff --git a/addons/grenades/CfgMagazines.hpp b/addons/grenades/CfgMagazines.hpp index 31e80dc545..16dd9929ff 100644 --- a/addons/grenades/CfgMagazines.hpp +++ b/addons/grenades/CfgMagazines.hpp @@ -1,3 +1,4 @@ + class CfgMagazines { class HandGrenade; class ACE_HandFlare_Base: HandGrenade { @@ -8,55 +9,60 @@ class CfgMagazines { mass = 4; initSpeed = 22; }; + class ACE_HandFlare_White: ACE_HandFlare_Base { author = ECSTRING(common,ACETeam); scope = 2; - ammo = "ACE_F_Hand_White"; displayname = CSTRING(M127A1_White_Name); descriptionshort = CSTRING(M127A1_White_Description); displayNameShort = CSTRING(M127A1_White_NameShort); model = "\A3\weapons_f\ammo\flare_white"; picture = "\A3\Weapons_F\Data\UI\gear_flare_white_ca.paa"; + ammo = "ACE_G_Handflare_White"; }; + class ACE_HandFlare_Red: ACE_HandFlare_Base { author = ECSTRING(common,ACETeam); scope = 2; - ammo = "ACE_F_Hand_Red"; displayname = CSTRING(M127A1_Red_Name); descriptionshort = CSTRING(M127A1_Red_Description); displayNameShort = CSTRING(M127A1_Red_NameShort); model = "\A3\weapons_f\ammo\flare_red"; picture = "\A3\Weapons_F\Data\UI\gear_flare_red_ca.paa"; + ammo = "ACE_G_Handflare_Red"; }; + class ACE_HandFlare_Green: ACE_HandFlare_Base { author = ECSTRING(common,ACETeam); scope = 2; - ammo = "ACE_F_Hand_Green"; displayname = CSTRING(M127A1_Green_Name); descriptionshort = CSTRING(M127A1_Green_Description); displayNameShort = CSTRING(M127A1_Green_NameShort); model = "\A3\weapons_f\ammo\flare_green"; picture = "\A3\Weapons_F\Data\UI\gear_flare_green_ca.paa"; + ammo = "ACE_G_Handflare_Green"; }; + class ACE_HandFlare_Yellow: ACE_HandFlare_Base { author = ECSTRING(common,ACETeam); scope = 2; - ammo = "ACE_F_Hand_Yellow"; displayname = CSTRING(M127A1_Yellow_Name); descriptionshort = CSTRING(M127A1_Yellow_Description); displayNameShort = CSTRING(M127A1_Yellow_NameShort); model = "\A3\weapons_f\ammo\flare_yellow"; picture = "\A3\Weapons_F\Data\UI\gear_flare_yellow_ca.paa"; + ammo = "ACE_G_Handflare_Yellow"; }; + class ACE_M84: HandGrenade { author = ECSTRING(common,ACETeam); - ammo = "ACE_G_M84"; displayname = CSTRING(M84_Name); descriptionshort = CSTRING(M84_Description); displayNameShort = "M84"; - mass = 4; model = PATHTOF(models\ACE_m84.p3d); picture = PATHTOF(UI\ACE_m84_x_ca.paa); + ammo = "ACE_G_M84"; + mass = 4; }; class 3Rnd_UGL_FlareGreen_F; @@ -65,6 +71,7 @@ class CfgMagazines { ammo = "F_40mm_Green"; initSpeed = 120; }; + class 6Rnd_RedSignal_F: 6Rnd_GreenSignal_F { author = ECSTRING(common,ACETeam); ammo = "F_40mm_Red"; diff --git a/addons/grenades/Effects.hpp b/addons/grenades/Effects.hpp index c9e214de5c..3cbcef9a38 100644 --- a/addons/grenades/Effects.hpp +++ b/addons/grenades/Effects.hpp @@ -2,3 +2,7 @@ class ACE_M84FlashbangEffect { // empty }; + +class ACE_HandFlareEffect { + // empty +}; diff --git a/addons/grenades/XEH_preInit.sqf b/addons/grenades/XEH_preInit.sqf index 0df2e235fd..631cecca85 100644 --- a/addons/grenades/XEH_preInit.sqf +++ b/addons/grenades/XEH_preInit.sqf @@ -2,6 +2,7 @@ ADDON = false; +PREP(flare); PREP(flashbangExplosionEH); PREP(flashbangThrownFuze); PREP(nextMode); diff --git a/addons/grenades/functions/fnc_flare.sqf b/addons/grenades/functions/fnc_flare.sqf new file mode 100644 index 0000000000..d7a8b54f51 --- /dev/null +++ b/addons/grenades/functions/fnc_flare.sqf @@ -0,0 +1,23 @@ +// by commy2 +#include "script_component.hpp" + +params ["_projectile", "_color", "_intensity", "_timeToLive"]; + +private "_light"; +_light = "#lightpoint" createVehicleLocal position _projectile; + +_light setLightColor _color; +_light setLightAmbient _color; +_light setLightIntensity _intensity; +_light setLightBrightness 0.8; + +_light setLightUseFlare true; +_light setLightFlareSize 3.0; +_light setLightFlareMaxDistance 1000; + +_light setLightDayLight true; + +_light lightAttachObject [_projectile, [0,0,0]]; +//_light attachTo [_projectile, [0,0,0]]; + +[{deleteVehicle _this}, _light, _timeToLive, 1] call EFUNC(common,waitAndExecute); diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index 03e67a152a..5f8f31994a 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -21,22 +21,45 @@ */ #include "script_component.hpp" -private ["_mode", "_fuzeTime"]; -params ["_unit", "_weapon", "", "", "", "", "_projectile"]; +params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"]; -if (_unit != ACE_player) exitWith {}; if (_weapon != "Throw") exitWith {}; +// handle speial grenades +if (local _unit) then { + if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then { + private "_fuzeTime"; + _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); + + [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute); + }; + + if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then { + private ["_fuzeTime", "_timeToLive", "_color", "_intensity"]; + + _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); + _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive"); + _color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color)); + _intensity = _color select 3; + _color resize 3; + + [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute); + }; +}; + +// handle throw modes +if (_unit != ACE_player) exitWith {}; + +private "_mode"; _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; if (_mode != 0) then { private "_velocity"; - _velocity = velocity _projectile; switch (_mode) do { //high throw - case 1 : { + case 1 : { _velocity = [ 0.5 * (_velocity select 0), 0.5 * (_velocity select 1), @@ -44,24 +67,18 @@ if (_mode != 0) then { ]; }; //precise throw - case 2 : { + case 2 : { _velocity = (_unit weaponDirection _weapon) vectorMultiply (vectorMagnitude _velocity); }; //roll grande - case 3 : { + case 3 : { //@todo }; //drop grenade - case 4 : { + case 4 : { _velocity = [0, 0, 0]; }; }; _projectile setVelocity _velocity; }; - -if (typeOf _projectile == "ACE_G_M84") then { - _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "fuseDistance"); - // _fuzeTime = getNumber (configFile >> "CfgAmmo" >> typeOf _projectile >> "explosionTime"); //@toDo pretty sure this should be explosionTime not fuseDistance - [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute); -}; From 7ce606740ca83c259d0f1c7a5ef331316dd6c075 Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 1 Sep 2015 23:56:25 +0200 Subject: [PATCH 213/620] make flares work in mp --- .../grenades/functions/fnc_throwGrenade.sqf | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index 5f8f31994a..17c0fb78cc 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -25,6 +25,11 @@ params ["_unit", "_weapon", "", "", "_ammo", "", "_projectile"]; if (_weapon != "Throw") exitWith {}; +// http://feedback.arma3.com/view.php?id=12340 +if (isNull _projectile) then { + _projectile = nearestObject [_unit, _ammo]; +}; + // handle speial grenades if (local _unit) then { if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then { @@ -33,18 +38,18 @@ if (local _unit) then { [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute); }; +}; - if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then { - private ["_fuzeTime", "_timeToLive", "_color", "_intensity"]; +if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then { + private ["_fuzeTime", "_timeToLive", "_color", "_intensity"]; - _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); - _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive"); - _color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color)); - _intensity = _color select 3; - _color resize 3; + _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); + _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive"); + _color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color)); + _intensity = _color select 3; + _color resize 3; - [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute); - }; + [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute); }; // handle throw modes From 83424cdcab91b999ea263f855211f30cf18d1b92 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 00:03:16 +0200 Subject: [PATCH 214/620] header for fnc_flare --- addons/grenades/functions/fnc_flare.sqf | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/addons/grenades/functions/fnc_flare.sqf b/addons/grenades/functions/fnc_flare.sqf index d7a8b54f51..bf1d571640 100644 --- a/addons/grenades/functions/fnc_flare.sqf +++ b/addons/grenades/functions/fnc_flare.sqf @@ -1,4 +1,21 @@ -// by commy2 +/* + * Author: commy2 + * Makes flare shine. + * + * Arguments: + * 0: The flare + * 1: Color of flare + * 2: Intensity of flare + * 3: Flare lifetime + * + * Return Value: + * None + * + * Example: + * [_nade, [0.5,0.5,0.5], 0.5, 60] call ace_grenades_fnc_flare + * + * Public: No + */ #include "script_component.hpp" params ["_projectile", "_color", "_intensity", "_timeToLive"]; From 43c54d51e810d78d0eb1902dfcf243e9a0a2c873 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 01:40:38 +0200 Subject: [PATCH 215/620] hide clock on map if no watch in inventory, #414 --- addons/map/functions/fnc_onDrawMap.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/map/functions/fnc_onDrawMap.sqf b/addons/map/functions/fnc_onDrawMap.sqf index bc147884e4..0c95e903e6 100644 --- a/addons/map/functions/fnc_onDrawMap.sqf +++ b/addons/map/functions/fnc_onDrawMap.sqf @@ -2,3 +2,8 @@ #include "script_component.hpp" ((_this select 0) displayCtrl 1016) ctrlShow GVAR(mapShowCursorCoordinates); + +// hide time when no map in inventory +if (!isNull ACE_player) then { + ((_this select 0) displayCtrl 101) ctrlShow ("ItemWatch" in assignedItems ACE_player); +}; From 29efc13556657ba74e00357c09ef789f7c3dd7f2 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 01:59:07 +0200 Subject: [PATCH 216/620] hide clock, use eventhandler --- addons/map/XEH_postInitClient.sqf | 13 ++++++++++++- addons/map/functions/fnc_onDrawMap.sqf | 4 +--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index ef528d5233..b85d91bf16 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -98,4 +98,15 @@ call FUNC(determineZoom); }] call EFUNC(common,addEventHandler); }; }; -}] call EFUNC(common,addEventHandler); \ No newline at end of file +}] call EFUNC(common,addEventHandler); + +// hide clock on map if player has no watch +GVAR(hasWatch) = true; + +["playerInventoryChanged", { + if (isNull (_this select 0)) exitWith { + GVAR(hasWatch) = true; + }; + + GVAR(hasWatch) = "ItemWatch" in (_this select 1 select 17); +}] call ace_common_fnc_addEventhandler diff --git a/addons/map/functions/fnc_onDrawMap.sqf b/addons/map/functions/fnc_onDrawMap.sqf index 0c95e903e6..cc0824919a 100644 --- a/addons/map/functions/fnc_onDrawMap.sqf +++ b/addons/map/functions/fnc_onDrawMap.sqf @@ -4,6 +4,4 @@ ((_this select 0) displayCtrl 1016) ctrlShow GVAR(mapShowCursorCoordinates); // hide time when no map in inventory -if (!isNull ACE_player) then { - ((_this select 0) displayCtrl 101) ctrlShow ("ItemWatch" in assignedItems ACE_player); -}; +((_this select 0) displayCtrl 101) ctrlShow GVAR(hasWatch); From 07ab7d1c35fc9d263a152c7b1816115c408b4dcf Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 02:00:53 +0200 Subject: [PATCH 217/620] correct comment --- addons/map/functions/fnc_onDrawMap.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/map/functions/fnc_onDrawMap.sqf b/addons/map/functions/fnc_onDrawMap.sqf index cc0824919a..37ec5a7000 100644 --- a/addons/map/functions/fnc_onDrawMap.sqf +++ b/addons/map/functions/fnc_onDrawMap.sqf @@ -3,5 +3,5 @@ ((_this select 0) displayCtrl 1016) ctrlShow GVAR(mapShowCursorCoordinates); -// hide time when no map in inventory +// hide clock when no watch in inventory, or whatever never ever ((_this select 0) displayCtrl 101) ctrlShow GVAR(hasWatch); From 7d2f1f52a4cc0de2e8eff4ba922e90ed6d456514 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 20:13:51 +0200 Subject: [PATCH 218/620] remove protection, hitpoint config (fix ubc), some debug stuff --- addons/medical/CfgVehicles.hpp | 213 +++++------- addons/medical/XEH_respawn.sqf | 3 +- addons/medical/functions/fnc_handleDamage.sqf | 37 ++- addons/medical/functions/fnc_init.sqf | 120 +++---- addons/medical/script_component.hpp | 2 + addons/protection/$PBOPREFIX$ | 1 - addons/protection/CfgVehicles.hpp | 5 - addons/protection/CfgWeapons.hpp | 4 - addons/protection/FixHelmets.hpp | 230 ------------- addons/protection/FixUniforms.hpp | 0 addons/protection/FixVests.hpp | 303 ------------------ addons/protection/README.md | 12 - addons/protection/config.cpp | 16 - addons/protection/script_component.hpp | 12 - 14 files changed, 161 insertions(+), 797 deletions(-) delete mode 100644 addons/protection/$PBOPREFIX$ delete mode 100644 addons/protection/CfgVehicles.hpp delete mode 100644 addons/protection/CfgWeapons.hpp delete mode 100644 addons/protection/FixHelmets.hpp delete mode 100644 addons/protection/FixUniforms.hpp delete mode 100644 addons/protection/FixVests.hpp delete mode 100644 addons/protection/README.md delete mode 100644 addons/protection/config.cpp delete mode 100644 addons/protection/script_component.hpp diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 0764d2f1ea..61168ca541 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -432,37 +432,33 @@ class CfgVehicles { class Land; class Man: Land { - class HitPoints { - class HitHead; - class HitBody; - class HitHands; - class HitLegs; - }; + class HitPoints; }; class CAManBase: Man { - class HitPoints: HitPoints { - class HitFace; - class HitNeck; - class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; - class HitBody; - class HitArms; - class HitHands; - class HitLegs; - class HitLeftArm: HitHands { + class HitPoints: HitPoints { // custom hitpoints. addons might want to adjust these accordingly + class HitLeftArm { armor = ARM_LEG_ARMOR_DEFAULT; + material = -1; name = "hand_l"; // @todo hopefully these still include the whole arm + hands + passThrough = 1; + radius = 0.08; + explosionShielding = 1; + visual = "injury_hands"; + minimalHit = 0.01; }; class HitRightArm: HitLeftArm { name = "hand_r"; // @todo hopefully these still include the whole arm + hands }; - class HitLeftLeg: HitLegs { + class HitLeftLeg { armor = ARM_LEG_ARMOR_DEFAULT; + material = -1; name = "leg_l"; + passThrough = 1; + radius = 0.1; + explosionShielding = 1; + visual = "injury_legs"; + minimalHit = 0.01; }; class HitRightLeg: HitLeftLeg { name = "leg_r"; @@ -527,60 +523,42 @@ class CfgVehicles { class B_Soldier_04_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_BETTER; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_BETTER; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_BETTER; }; }; }; class B_Soldier_05_f: B_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; - name = "hand_l"; }; - class HitRightArm: HitLeftArm { - name = "hand_r"; - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_BETTER; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_BETTER; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_BETTER; }; }; }; @@ -589,150 +567,105 @@ class CfgVehicles { class I_Soldier_03_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_BETTER; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_BETTER; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_BETTER; }; }; }; class I_Soldier_04_F: I_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_BETTER; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_BETTER; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_BETTER; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_BETTER; }; }; }; class O_Soldier_base_F: SoldierEB { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_CSAT; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_CSAT; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_CSAT; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_CSAT; }; }; }; class O_Soldier_02_F: O_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_CSAT; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = ARM_LEG_ARMOR_CSAT; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_CSAT; + }; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_CSAT; }; }; }; class O_officer_F: O_Soldier_base_F { class HitPoints: HitPoints { - class HitFace; - class HitNeck; class HitHead; - class HitPelvis; - class HitAbdomen; - class HitDiaphragm; - class HitChest; class HitBody; - class HitArms; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = ARM_LEG_ARMOR_CSAT; // @todo is that suppossed to be the case? - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands + class HitRightArm: HitRightArm { + armor = ARM_LEG_ARMOR_CSAT; }; - class HitLeftLeg: HitLegs { - armor = ARM_LEG_ARMOR_CSAT; // @todo is that suppossed to be the case? - name = "leg_l"; + class HitLeftLeg: HitLeftLeg { + armor = ARM_LEG_ARMOR_CSAT; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitRightLeg: HitRightLeg { + armor = ARM_LEG_ARMOR_CSAT; }; }; }; @@ -743,19 +676,17 @@ class CfgVehicles { class HitBody; class HitHands; class HitLegs; - class HitLeftArm: HitHands { + class HitLeftArm: HitLeftArm { armor = 2; - name = "hand_l"; // @todo hopefully these still include the whole arm + hands }; - class HitRightArm: HitLeftArm { - name = "hand_r"; // @todo hopefully these still include the whole arm + hands - }; - class HitLeftLeg: HitLegs { + class HitRightArm: HitRightArm { armor = 2; - name = "leg_l"; }; - class HitRightLeg: HitLeftLeg { - name = "leg_r"; + class HitLeftLeg: HitLeftLeg { + armor = 2; + }; + class HitRightLeg: HitRightLeg { + armor = 2; }; }; }; diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf index bd8a7a105b..b5b07bf141 100644 --- a/addons/medical/XEH_respawn.sqf +++ b/addons/medical/XEH_respawn.sqf @@ -2,8 +2,7 @@ params ["_unit"]; -if !(local _unit) exitWith {}; - +// reset all variables. @todo GROUP respawn? [_unit] call FUNC(init); // Reset captive status for respawning unit diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index 1f484ab056..df53996e94 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi, Glowbal + * Author: KoffeinFlummi, Glowbal, commy2 * Main HandleDamage EH function. * * Arguments: @@ -14,28 +14,39 @@ * * Public: No */ - #include "script_component.hpp" -private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_typeIndex", "_preventDeath"]; params ["_unit", "_selection", "_damage", "_shooter", "_projectile"]; -if !(local _unit) exitWith {nil}; - -if (typeName _projectile == "OBJECT") then { - _projectile = typeOf _projectile; - _this set [4, _projectile]; +// bug, apparently can fire for remote units in special cases +if !(local _unit) exitWith { + #ifdef DEBUG_ENABLED_MEDICAL + ACE_LOGDEBUG_3("HandleDamage on remote unit! - %1 - %2 - %3",diag_frameno,_unit,isServer); + #endif + nil }; -// If the damage is being weird, we just tell it to fuck off. -if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0}; +private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_typeIndex", "_preventDeath"]; + +// bug, assumed fixed, @todo excessive testing, if nothing happens remove +/*if (typeName _projectile == "OBJECT") then { + _projectile = typeOf _projectile; + _this set [4, _projectile]; +};*/ + +#ifdef DEBUG_ENABLED_MEDICAL + ACE_LOGDEBUG_3("HandleDamage - %1 - %2 - %3",diag_frameno,_selection,_damage); +#endif + +// If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "?" +if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3" // Exit if we disable damage temporarily if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { - if (_selection in GVAR(SELECTIONS)) then { - _unit getHit _selection - } else { + if (_selection == "") then { damage _unit + } else { + _unit getHit _selection }; }; diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf index fe8715c352..7d3ebd21d5 100644 --- a/addons/medical/functions/fnc_init.sqf +++ b/addons/medical/functions/fnc_init.sqf @@ -1,5 +1,5 @@ /* - * Author: KoffeinFlummi + * Author: KoffeinFlummi, commy2 * Initializes unit variables. * * Arguments: @@ -10,73 +10,77 @@ * * Public: No */ - #include "script_component.hpp" -private ["_allUsedMedication", "_logs"]; params ["_unit"]; +// basic _unit setVariable [QGVAR(pain), 0, true]; _unit setVariable [QGVAR(morphine), 0, true]; _unit setVariable [QGVAR(bloodVolume), 100, true]; - -// tourniquets -_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true]; - -// wounds and injuries -_unit setvariable [QGVAR(openWounds), [], true]; -_unit setvariable [QGVAR(bandagedWounds), [], true]; -_unit setVariable [QGVAR(internalWounds), [], true]; -_unit setvariable [QGVAR(lastUniqueWoundID), 1, true]; - -// vitals -_unit setVariable [QGVAR(heartRate), 80]; -_unit setvariable [QGVAR(heartRateAdjustments), []]; -_unit setvariable [QGVAR(bloodPressure), [80, 120]]; -_unit setVariable [QGVAR(peripheralResistance), 100]; - -// fractures -_unit setVariable [QGVAR(fractures), [], true]; - -// triage card and logs -_unit setvariable [QGVAR(triageLevel), 0, true]; -_unit setvariable [QGVAR(triageCard), [], true]; - -// IVs -_unit setVariable [QGVAR(salineIVVolume), 0, true]; -_unit setVariable [QGVAR(plasmaIVVolume), 0, true]; -_unit setVariable [QGVAR(bloodIVVolume), 0, true]; - -// damage storage -_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true]; - -// airway -_unit setvariable [QGVAR(airwayStatus), 100]; -_unit setVariable [QGVAR(airwayOccluded), false]; -_unit setvariable [QGVAR(airwayCollapsed), false]; - -// generic medical admin -_unit setvariable [QGVAR(addedToUnitLoop), false, true]; -_unit setvariable [QGVAR(inCardiacArrest), false, true]; _unit setVariable ["ACE_isUnconscious", false, true]; -_unit setvariable [QGVAR(hasLostBlood), 0, true]; -_unit setvariable [QGVAR(isBleeding), false, true]; -_unit setvariable [QGVAR(hasPain), false, true]; -_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true]; -_unit setvariable [QGVAR(painSuppress), 0, true]; -// medication -_allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []]; -{ - _unit setvariable [_x select 0, nil]; -} foreach _allUsedMedication; -_unit setVariable [QGVAR(allUsedMedication), [], true]; +// advanced +if (GVAR(level) > 1) then { + // tourniquets + _unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true]; -_logs = _unit getvariable [QGVAR(allLogs), []]; -{ - _unit setvariable [_x, nil]; -} foreach _logs; -_unit setvariable [QGVAR(allLogs), [], true]; + // wounds and injuries + _unit setvariable [QGVAR(openWounds), [], true]; + _unit setvariable [QGVAR(bandagedWounds), [], true]; + _unit setVariable [QGVAR(internalWounds), [], true]; + _unit setvariable [QGVAR(lastUniqueWoundID), 1, true]; + + // vitals + _unit setVariable [QGVAR(heartRate), 80]; + _unit setvariable [QGVAR(heartRateAdjustments), []]; + _unit setvariable [QGVAR(bloodPressure), [80, 120]]; + _unit setVariable [QGVAR(peripheralResistance), 100]; + + // fractures + _unit setVariable [QGVAR(fractures), [], true]; + + // triage card and logs + _unit setvariable [QGVAR(triageLevel), 0, true]; + _unit setvariable [QGVAR(triageCard), [], true]; + + // IVs + _unit setVariable [QGVAR(salineIVVolume), 0, true]; + _unit setVariable [QGVAR(plasmaIVVolume), 0, true]; + _unit setVariable [QGVAR(bloodIVVolume), 0, true]; + + // damage storage + _unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true]; + + // airway + _unit setvariable [QGVAR(airwayStatus), 100]; + _unit setVariable [QGVAR(airwayOccluded), false]; + _unit setvariable [QGVAR(airwayCollapsed), false]; + + // generic medical admin + _unit setvariable [QGVAR(addedToUnitLoop), false, true]; + _unit setvariable [QGVAR(inCardiacArrest), false, true]; + _unit setvariable [QGVAR(hasLostBlood), 0, true]; + _unit setvariable [QGVAR(isBleeding), false, true]; + _unit setvariable [QGVAR(hasPain), false, true]; + _unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true]; + _unit setvariable [QGVAR(painSuppress), 0, true]; + + private ["_allUsedMedication", "_logs"]; + + // medication + _allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []]; + { + _unit setvariable [_x select 0, nil]; + } foreach _allUsedMedication; + _unit setVariable [QGVAR(allUsedMedication), [], true]; + + _logs = _unit getvariable [QGVAR(allLogs), []]; + { + _unit setvariable [_x, nil]; + } foreach _logs; + _unit setvariable [QGVAR(allLogs), [], true]; +}; // items [{ diff --git a/addons/medical/script_component.hpp b/addons/medical/script_component.hpp index 939a811a41..910728c12b 100644 --- a/addons/medical/script_component.hpp +++ b/addons/medical/script_component.hpp @@ -1,6 +1,8 @@ #define COMPONENT medical #include "\z\ace\addons\main\script_mod.hpp" +#define DEBUG_ENABLED_MEDICAL true + #ifdef DEBUG_ENABLED_MEDICAL #define DEBUG_MODE_FULL #endif diff --git a/addons/protection/$PBOPREFIX$ b/addons/protection/$PBOPREFIX$ deleted file mode 100644 index 7ba9736ebe..0000000000 --- a/addons/protection/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\protection \ No newline at end of file diff --git a/addons/protection/CfgVehicles.hpp b/addons/protection/CfgVehicles.hpp deleted file mode 100644 index bce583e2ec..0000000000 --- a/addons/protection/CfgVehicles.hpp +++ /dev/null @@ -1,5 +0,0 @@ - -class CfgVehicles { - #include - #include -}; diff --git a/addons/protection/CfgWeapons.hpp b/addons/protection/CfgWeapons.hpp deleted file mode 100644 index 3f706fed41..0000000000 --- a/addons/protection/CfgWeapons.hpp +++ /dev/null @@ -1,4 +0,0 @@ - -class CfgWeapons { - #include -}; diff --git a/addons/protection/FixHelmets.hpp b/addons/protection/FixHelmets.hpp deleted file mode 100644 index eb2c515e50..0000000000 --- a/addons/protection/FixHelmets.hpp +++ /dev/null @@ -1,230 +0,0 @@ - -// INTEGER -#define HELMET_ARMOR_NO_PROTECTION 0 - -// FLOAT, 0-1 -#define HELMET_PASSTHROUGH_NO_PROTECTION 1 - -/*class InventoryItem_Base_F; -class HeadgearItem: InventoryItem_Base_F { - armor = 0; - passThrough = 1; -}; - -class H_HelmetB: ItemCore { - class ItemInfo: HeadgearItem { - //mass = 40; - armor = 4; - passThrough = 0.5; - }; -}; - -class H_HelmetB_camo: H_HelmetB { - class ItemInfo: HeadgearItem { - //mass = 40; - armor = 4; - passThrough = 0.5; - }; -}; - -class H_HelmetB_light: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 30; - armor = 3; - passThrough = 0.5; - }; -}; - -class H_Booniehat_khk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 10; - armor = 0; - passThrough = 1; - }; -}; - -class H_HelmetB_plain_mcamo: H_HelmetB {}; - -class H_HelmetSpecB: H_HelmetB_plain_mcamo { - class ItemInfo: ItemInfo { - //mass = 50; - armor = 5; - passThrough = 0.5; - }; -}; - -class H_HelmetIA: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 40; - armor = 4; - passThrough = 0.5; - }; -}; - -class H_Cap_red: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 4; - armor = 0; - passThrough = 1; - }; -}; - -class H_Cap_headphones: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 8; - armor = 0; - passThrough = 1; - }; -}; - -class H_HelmetCrew_B: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 40; - armor = 4; - passThrough = 0.5; - }; -}; - -class H_PilotHelmetFighter_B: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 50; - armor = 5; - passThrough = 0.5; - }; -}; - -class H_PilotHelmetHeli_B: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 30; - armor = 3; - passThrough = 0.5; - }; -}; - -class H_CrewHelmetHeli_B: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 30; - armor = 3; - passThrough = 0.5; - }; -}; - -class H_HelmetO_ocamo: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 50; - armor = 5; - passThrough = 0.5; - }; -}; - -class H_HelmetLeaderO_ocamo: H_HelmetO_ocamo { - class ItemInfo: ItemInfo { - //mass = 60; - armor = 6; - passThrough = 0.5; - }; -}; - -class H_MilCap_ocamo: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_BandMask_blk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 8; - armor = 0; - passThrough = 1; - }; -}; - -class H_HelmetSpecO_ocamo: H_HelmetO_ocamo { - class ItemInfo: ItemInfo { - //mass = 40; - armor = 4; - passThrough = 0.5; - }; -}; - -class H_Bandanna_surfer: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 8; - armor = 0; - passThrough = 1; - }; -}; - -class H_Shemag_khk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_ShemagOpen_khk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_Beret_blk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_Beret_02: H_Beret_blk { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_Watchcap_blk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_TurbanO_blk: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 8; - armor = 0; - passThrough = 1; - }; -}; - -class H_StrawHat: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_Hat_blue: H_HelmetB { - class ItemInfo: ItemInfo { - //mass = 6; - armor = 0; - passThrough = 1; - }; -}; - -class H_RacingHelmet_1_F: H_HelmetB_camo { - class ItemInfo: ItemInfo { - //mass = 50; - armor = 5; - passThrough = 0.5; - }; -};*/ diff --git a/addons/protection/FixUniforms.hpp b/addons/protection/FixUniforms.hpp deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/addons/protection/FixVests.hpp b/addons/protection/FixVests.hpp deleted file mode 100644 index f3d1ad2b3d..0000000000 --- a/addons/protection/FixVests.hpp +++ /dev/null @@ -1,303 +0,0 @@ - -class ItemCore; -class VestItem; - -class Vest_Camo_Base: ItemCore { - class ItemInfo: VestItem { - /*containerClass = "Supply0"; - mass = 0; - armor = 0; - passThrough = 1;*/ - }; -}; -class Vest_NoCamo_Base: ItemCore { - class ItemInfo: VestItem { - /*containerClass = "Supply0"; - mass = 0; - armor = 0; - passThrough = 1;*/ - }; -}; - -// belts -class V_Rangemaster_belt: Vest_NoCamo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply40"; - mass = 10; - armor = 0; - passThrough = 1;*/ - }; -}; - -// bandolliers -class V_BandollierB_khk: Vest_Camo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply80"; - mass = 15; - armor = 0;*/ - passThrough = 0.85; //1; - }; -}; -/*class V_BandollierB_cbr: V_BandollierB_khk { - class ItemInfo: ItemInfo {}; -}; -class V_BandollierB_rgr: V_BandollierB_khk { - class ItemInfo: ItemInfo {}; -}; -class V_BandollierB_blk: V_BandollierB_khk { - class ItemInfo: ItemInfo {}; -}; -class V_BandollierB_oli: V_BandollierB_khk { - class ItemInfo: ItemInfo {}; -};*/ - -// plate carriers -class V_PlateCarrier1_rgr: Vest_NoCamo_Base { // lite - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 80;*/ - armor = 8; //20; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrier2_rgr: V_PlateCarrier1_rgr { // heavy - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 100;*/ - armor = 12; //30; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrier3_rgr: Vest_NoCamo_Base { // heavy (us) - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 100;*/ - armor = 12; //30; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierGL_rgr: Vest_NoCamo_Base { // lite (gl) - class ItemInfo: ItemInfo { - containerClass = "Supply160"; //"Supply140"; - /*mass = 100;*/ - armor = 8; //100; - passThrough = 0.75; //0.7; - }; -}; -class V_PlateCarrier1_blk: Vest_Camo_Base { // heavy (black) - class ItemInfo: ItemInfo { - /*containerClass = "Supply140";*/ - mass = 100; //80; - armor = 12; //20; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierSpec_rgr: Vest_NoCamo_Base { // lite (special) - class ItemInfo: ItemInfo { - /*containerClass = "Supply100"; - mass = 120;*/ - armor = 16; //40; - passThrough = 0.75; //0.1; - }; -}; - -// chestrigs -/*class V_Chestrig_khk: Vest_Camo_Base { - class ItemInfo: ItemInfo { - containerClass = "Supply140"; - mass = 20; - armor = 0; - passThrough = 1; - }; -}; -class V_Chestrig_rgr: V_Chestrig_khk {}; -class V_Chestrig_blk: V_Chestrig_khk {}; -class V_Chestrig_oli: Vest_Camo_Base { - class ItemInfo: ItemInfo { - containerClass = "Supply140"; - mass = 20; - armor = 0; - passThrough = 1; - }; -};*/ - -// tactical vests -class V_TacVest_khk: Vest_Camo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply100"; - mass = 40;*/ - armor = 8; //20; - /*passThrough = 1;*/ - }; -}; -class V_TacVest_brn: V_TacVest_khk {}; -class V_TacVest_oli: V_TacVest_khk {}; -class V_TacVest_blk: V_TacVest_khk {}; -class V_TacVest_camo: Vest_Camo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply100"; - mass = 40;*/ - armor = 8; //20; - /*passThrough = 1;*/ - }; -}; -class V_TacVest_blk_POLICE: Vest_Camo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply100";*/ - mass = 40; //60; - armor = 8; //100; - passThrough = 1; //0.7; - }; -}; -class V_TacVestIR_blk: Vest_NoCamo_Base { // raven vest - class ItemInfo: VestItem { - /*containerClass = "Supply100"; - mass = 50;*/ - armor = 8; //20; - passThrough = 0.85; //0.5; - }; -}; -class V_TacVestCamo_khk: Vest_Camo_Base { - class ItemInfo: VestItem { - /*containerClass = "Supply100"; - mass = 40;*/ - armor = 8; //20; - /*passThrough = 1;*/ - }; -}; - -// harnesses -class V_HarnessO_brn: Vest_NoCamo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply160"; - mass = 30; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; -class V_HarnessOGL_brn: Vest_NoCamo_Base { // gl - class ItemInfo: ItemInfo { - /*containerClass = "Supply120"; - mass = 20; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; -class V_HarnessO_gry: V_HarnessO_brn { - class ItemInfo: ItemInfo { - /*containerClass = "Supply160"; - mass = 30; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; -class V_HarnessOGL_gry: V_HarnessO_gry { // gl - class ItemInfo: ItemInfo { - /*containerClass = "Supply120"; - mass = 20; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; -class V_HarnessOSpec_brn: V_HarnessO_brn { - class ItemInfo: VestItem { - /*containerClass = "Supply160"; - mass = 30; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; -class V_HarnessOSpec_gry: V_HarnessO_gry { - class ItemInfo: ItemInfo { - /*containerClass = "Supply160"; - mass = 30; - armor = 0;*/ - passThrough = 0.85; //0.5; - }; -}; - -// indep plate carriers -class V_PlateCarrierIA1_dgtl: Vest_NoCamo_Base { // lite - class ItemInfo: VestItem { - /*containerClass = "Supply120"; - mass = 60;*/ - armor = 8; //20; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierIA2_dgtl: V_PlateCarrierIA1_dgtl { // heavy - class ItemInfo: VestItem { - /*containerClass = "Supply120"; - mass = 80;*/ - armor = 12; //30; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierIAGL_dgtl: V_PlateCarrierIA2_dgtl { // heavy (gl) - class ItemInfo: VestItem { - containerClass = "Supply140"; //"Supply120"; - mass = 100; //80; - armor = 12; //100; - passThrough = 0.75; //0.7; - }; -}; - -// rebreather -/*class V_RebreatherB: Vest_Camo_Base { - class ItemInfo: ItemInfo { - containerClass = "Supply0"; - mass = 80; - armor = 20; - passThrough = 1; - }; -}; -class V_RebreatherIR: V_RebreatherB {}; -class V_RebreatherIA: V_RebreatherB {};*/ - -// more plate carriers -class V_PlateCarrier_Kerry: V_PlateCarrier1_rgr { // lighter - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 80;*/ - armor = 8; //30; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierL_CTRG: V_PlateCarrier1_rgr { // lite - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 80;*/ - armor = 8; //20; - passThrough = 0.75; //0.5; - }; -}; -class V_PlateCarrierH_CTRG: V_PlateCarrier2_rgr { // heavy - class ItemInfo: ItemInfo { - /*containerClass = "Supply140"; - mass = 100;*/ - armor = 12; //30; - passThrough = 0.75; //0.5; - }; -}; - -// another tactical vest -class V_I_G_resistanceLeader_F: V_TacVest_camo { - class ItemInfo: ItemInfo {}; -}; - -// press vest -class V_Press_F: Vest_Camo_Base { - class ItemInfo: ItemInfo { - /*containerClass = "Supply40"; - mass = 20;*/ - armor = 8; //0; ? - /*passThrough = 1;*/ - }; -}; - -// marksman dlc -/*class V_PlateCarrierGL_blk: V_PlateCarrierGL_rgr {}; -class V_PlateCarrierGL_mtp: V_PlateCarrierGL_rgr {}; -class V_PlateCarrierSpec_blk: V_PlateCarrierSpec_rgr {}; -class V_PlateCarrierSpec_mtp: V_PlateCarrierSpec_rgr {}; -class V_PlateCarrierIAGL_oli: V_PlateCarrierIAGL_dgtl {};*/ diff --git a/addons/protection/README.md b/addons/protection/README.md deleted file mode 100644 index a6def1a1bc..0000000000 --- a/addons/protection/README.md +++ /dev/null @@ -1,12 +0,0 @@ -ace_protection -============== - -Fixes and tweaks the protection values of body armour. - - -## Maintainers - -The people responsible for merging changes to this component or answering potential questions. - -- [KoffeinFlummi](https://github.com/KoffeinFlummi) -- [commy2](https://github.com/commy2) diff --git a/addons/protection/config.cpp b/addons/protection/config.cpp deleted file mode 100644 index bb4ef3f739..0000000000 --- a/addons/protection/config.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {"commy2"}; - authorUrl = "https://github.com/commy2"; - VERSION_CONFIG; - }; -}; - -#include "CfgVehicles.hpp" -#include "CfgWeapons.hpp" diff --git a/addons/protection/script_component.hpp b/addons/protection/script_component.hpp deleted file mode 100644 index 1b2774a8ef..0000000000 --- a/addons/protection/script_component.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#define COMPONENT protection -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_PROTECTION - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_ENABLED_PROTECTION - #define DEBUG_SETTINGS DEBUG_ENABLED_PROTECTION -#endif - -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file From f939f9215e4388af4a63e88a0ff8fed53ceafdb5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 2 Sep 2015 20:49:17 +0200 Subject: [PATCH 219/620] stop flickering of wounds, fix #346 --- addons/medical/functions/fnc_handleDamage.sqf | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index df53996e94..9b612757b4 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -21,7 +21,7 @@ params ["_unit", "_selection", "_damage", "_shooter", "_projectile"]; // bug, apparently can fire for remote units in special cases if !(local _unit) exitWith { #ifdef DEBUG_ENABLED_MEDICAL - ACE_LOGDEBUG_3("HandleDamage on remote unit! - %1 - %2 - %3",diag_frameno,_unit,isServer); + ACE_LOGDEBUG_3("HandleDamage on remote unit! - %1 - %2 - %3", diag_frameno, _unit, isServer); #endif nil }; @@ -35,9 +35,13 @@ private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_ };*/ #ifdef DEBUG_ENABLED_MEDICAL - ACE_LOGDEBUG_3("HandleDamage - %1 - %2 - %3",diag_frameno,_selection,_damage); + ACE_LOGDEBUG_3("HandleDamage - %1 - %2 - %3", diag_frameno, _selection, _damage); #endif +// If damage is in dummy hitpoints, "hands" and "legs", don't change anything +if (_selection == "hands") exitWith {_unit getHit "hands"}; +if (_selection == "legs") exitWith {_unit getHit "legs"}; + // If the damage is being weird, we just tell it to fuck off. Ignore: "hands", "legs", "?" if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@todo "neck", "pelvis", "spine1", "spine2", "spine3" @@ -48,8 +52,13 @@ if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { } else { _unit getHit _selection }; + #ifdef DEBUG_ENABLED_MEDICAL + ACE_LOGDEBUG_3("HandleDamage damage disabled. - %1 - %2 - %3", diag_frameno, _unit, _selection); + #endif }; +//if (true) exitWith {nil};// + // Get return damage _damageReturn = _damage; From f38d245771c198ed4285b88ddbf4aef096693af2 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Wed, 2 Sep 2015 21:56:00 +0200 Subject: [PATCH 220/620] fixed bloodloss for basic medical --- addons/medical/functions/fnc_getBloodLoss.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_getBloodLoss.sqf b/addons/medical/functions/fnc_getBloodLoss.sqf index 9ac1083f03..a3fdbd5b94 100644 --- a/addons/medical/functions/fnc_getBloodLoss.sqf +++ b/addons/medical/functions/fnc_getBloodLoss.sqf @@ -43,6 +43,7 @@ if (GVAR(level) >= 2) then { // cap the blood loss to be no greater as the current cardiac output //(_totalBloodLoss min _cardiacOutput); } else { - _totalBloodLoss = BLOODLOSSRATE_BASIC * (damage _unit); + { _totalBloodLoss = _totalBloodLoss + _x } forEach (_unit getvariable [QGVAR(bodyPartStatus), []]); + _totalBloodLoss = (_totalBloodLoss / 6) * BLOODLOSSRATE_BASIC; }; _totalBloodLoss * ((_unit getVariable [QGVAR(bleedingCoefficient), GVAR(bleedingCoefficient)]) max 0); From 0bbf4d41287eff523ba8e09bd260d9d97873b155 Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 2 Sep 2015 22:24:46 +0200 Subject: [PATCH 221/620] Prevent Cargo opening if vehicle is locked --- addons/cargo/functions/fnc_initVehicle.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/cargo/functions/fnc_initVehicle.sqf b/addons/cargo/functions/fnc_initVehicle.sqf index b817688336..efb3b9a5cf 100644 --- a/addons/cargo/functions/fnc_initVehicle.sqf +++ b/addons/cargo/functions/fnc_initVehicle.sqf @@ -41,7 +41,7 @@ if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(hasCargo)) != 1) ex private ["_text", "_condition", "_statement", "_icon", "_action"]; _condition = { params ["_target", "_player"]; - GVAR(enable) && {[_player, _target, []] call EFUNC(common,canInteractWith)} + GVAR(enable) && {locked _target < 2} && {[_player, _target, []] call EFUNC(common,canInteractWith)} }; _text = localize LSTRING(openMenu); _statement = {GVAR(interactionVehicle) = _target; createDialog QGVAR(menu);}; From def2d295012fbc08dbf360f1897428406acaffbc Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 2 Sep 2015 22:51:31 +0200 Subject: [PATCH 222/620] Cleaned up slideshow privates --- addons/slideshow/functions/fnc_addSlideActions.sqf | 1 - addons/slideshow/functions/fnc_autoTransition.sqf | 1 - addons/slideshow/functions/fnc_createSlideshow.sqf | 3 +-- addons/slideshow/functions/fnc_makeList.sqf | 3 +-- addons/slideshow/functions/fnc_moduleInit.sqf | 1 - 5 files changed, 2 insertions(+), 7 deletions(-) diff --git a/addons/slideshow/functions/fnc_addSlideActions.sqf b/addons/slideshow/functions/fnc_addSlideActions.sqf index 1ebba306b4..a18249a4f8 100644 --- a/addons/slideshow/functions/fnc_addSlideActions.sqf +++ b/addons/slideshow/functions/fnc_addSlideActions.sqf @@ -20,7 +20,6 @@ #include "script_component.hpp" private "_actions"; - params ["_objects", "_images", "_names", "_controller", "_currentSlideshow"]; _actions = []; diff --git a/addons/slideshow/functions/fnc_autoTransition.sqf b/addons/slideshow/functions/fnc_autoTransition.sqf index c8b03a707a..4c31c4ff6a 100644 --- a/addons/slideshow/functions/fnc_autoTransition.sqf +++ b/addons/slideshow/functions/fnc_autoTransition.sqf @@ -19,7 +19,6 @@ #include "script_component.hpp" private "_currentSlide"; - params ["_objects", "_images", "_varString", "_duration"]; // Get current slide number of this slideshow diff --git a/addons/slideshow/functions/fnc_createSlideshow.sqf b/addons/slideshow/functions/fnc_createSlideshow.sqf index 665b954496..369593dd16 100644 --- a/addons/slideshow/functions/fnc_createSlideshow.sqf +++ b/addons/slideshow/functions/fnc_createSlideshow.sqf @@ -19,8 +19,7 @@ */ #include "script_component.hpp" -private ["_currentSlideshow", "_actionsObject", "_actionsClass", "_mainAction", "_slidesAction", "_varString"]; - +private ["_currentSlideshow", "_slidesAction", "_varString"]; params ["_objects", "_controllers", "_images", "_names", "_duration"]; // Verify data diff --git a/addons/slideshow/functions/fnc_makeList.sqf b/addons/slideshow/functions/fnc_makeList.sqf index 6736fabbdb..e550e462a7 100644 --- a/addons/slideshow/functions/fnc_makeList.sqf +++ b/addons/slideshow/functions/fnc_makeList.sqf @@ -17,9 +17,8 @@ */ #include "script_component.hpp" -params ["_list", "_trimWhitespace", "_checkNil"]; - private ["_splittedList", "_listTrimmedWhitespace", "_nilCheckPassedList"]; +params ["_list", "_trimWhitespace", "_checkNil"]; // Split using comma delimiter _splittedList = [_list, ","] call BIS_fnc_splitString; diff --git a/addons/slideshow/functions/fnc_moduleInit.sqf b/addons/slideshow/functions/fnc_moduleInit.sqf index da1724dfcc..a0b5386f97 100644 --- a/addons/slideshow/functions/fnc_moduleInit.sqf +++ b/addons/slideshow/functions/fnc_moduleInit.sqf @@ -18,7 +18,6 @@ if (!hasInterface && !isDedicated) exitWith {}; private ["_objects", "_controllers", "_images", "_names", "_duration"]; - params [["_logic", objNull, [objNull]], "_units", "_activated"]; if !(_activated) exitWith {}; From 44fa520bdd3a017a2f6db72219adccb7e5929c0c Mon Sep 17 00:00:00 2001 From: ProfessorCZ Date: Thu, 3 Sep 2015 01:20:24 +0200 Subject: [PATCH 223/620] Czech Translations - Update --- addons/cargo/stringtable.xml | 6 ++++ addons/common/stringtable.xml | 5 +++ addons/explosives/stringtable.xml | 1 + addons/flashlights/stringtable.xml | 6 ++++ addons/interact_menu/stringtable.xml | 7 ++-- addons/main/stringtable.xml | 1 + addons/map/stringtable.xml | 8 ++++- addons/medical_menu/stringtable.xml | 29 ++++++++++++++-- addons/optionsmenu/stringtable.xml | 10 ++++-- addons/parachute/stringtable.xml | 8 +++-- addons/repair/stringtable.xml | 49 +++++++++++++++++++++++--- addons/sitting/stringtable.xml | 2 +- addons/slideshow/stringtable.xml | 6 +++- addons/spectator/stringtable.xml | 51 +++++++++++++++++++++++++++- addons/zeus/stringtable.xml | 3 ++ 15 files changed, 171 insertions(+), 21 deletions(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index a39fb16f6f..496fa60a0c 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -4,26 +4,32 @@ Load Załaduj + Naložit Unload Wyładuj + Vyložit Cargo Ładunek + Náklad Cargo Menu Menu ładunku + Menu nákladu Cargo space left: %1 Pozostałe miejsce: %1 + Volný prostor: %1 Enable Cargo Aktywuj cargo + Povolit náklad Enable the load in cargo module diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index e542e28ae8..280c95aa4d 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -661,6 +661,7 @@ Vehicles only Tylko pojazdy + Pouze vozidla Do Not Force @@ -673,6 +674,7 @@ ACE3 Equipment ACE3 Wyposażenie + ACE3 Vybavení ACE3 Common @@ -681,6 +683,7 @@ ACE3 Weapons ACE3 Broń + ACE3 Zbraně ACE3 Movement @@ -689,10 +692,12 @@ ACE3 Scope Adjustment ACE3 Regulacja optyki + ACE3 Nastavení optiky ACE3 Vehicles ACE3 Pojazdy + ACE3 Vozidla \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index b115ca0752..7de2d36ca7 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -76,6 +76,7 @@ Blocked Obstruido + Blokováno Cancel diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index e871360bf3..9038272655 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -4,26 +4,32 @@ Fulton MX-991 Fulton MX-991 + Fulton MX-991 Flashlight with red filter. For use on map. Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Svítilna s červeným filtrem. Pro nahlédnutí do mapy. Maglite XL50 Maglite XL50 + Maglite XL50 White mini flashlight. For use on map. Mini latarka. Światło białe. Używana do podświetlania mapy. + Bílá mini svítilna. Pro nahlédnutí do mapy. KSF-1 KSF-1 + KSF-1 Flashlight with red filter. For use on map. Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Svítilna s červeným filtrem. Pro nahlédnutí do mapy. \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 990d7f90bf..755b89e1ac 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -238,7 +238,7 @@ Blur the background while the interaction menu is open. Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji Desenfocar el fondo mientras el menú de interacción está abierto. - Rozmazat obraz pokud je interakční menu otevřené. + Rozmazat obraz při otevřeném interakčním menu. Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. Desfocar o fundo enquanto o menu de interação está aberto. A háttér elmosása a cselekvő menü használata alatt. @@ -256,7 +256,7 @@ Black Przyciemnienie ekranu Negro - Černý obraz + Tmavý Preto Schwarz Fekete @@ -280,6 +280,7 @@ Interaction Menu Menu interakcji + Menu interakce - + \ No newline at end of file diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 266e21bf40..0bc68c663a 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -4,6 +4,7 @@ ACE Logistics ACE Logistyka + ACE Logistika \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index f996800346..e0bb8dc68a 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -162,26 +162,32 @@ Flashlights Latarki + Svítilny NVG Noktowizja + NVG On Włącz + Zapnout Off Wyłącz + Vypnout Increase Brightness Zwiększ czułość + Zvýšit jas Decrease Brightness Zmniejsz czułość + Snížit jas - + \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 0a4f1a5388..6329d1aa56 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -47,6 +47,7 @@ EXAMINAR & TRATAMIENTO EXAMINER & TRAITEMENTS BADANIE & LECZENIE + VYŠETŘENÍ & LÉČBA STATUS @@ -54,6 +55,7 @@ ESTADO ÉTATS STATUS + STAV OVERVIEW @@ -61,6 +63,7 @@ DESCRIPCIÓN DESCRIPTION OPIS + PŘEHLED ACTIVITY LOG @@ -68,6 +71,7 @@ REGISTRO DE ACTIVIDAD REGISTRE DES SOINS LOGI AKTYWNOŚCI + PROTOKOL QUICK VIEW @@ -75,6 +79,7 @@ VISTA RÁPIDA VUE RAPIDE SZYBKI PODGLĄD + RYCHLÝ NÁHLED View triage Card @@ -124,6 +129,7 @@ Arrastrar/Cargar Glisser/Porter Ciągnij/Nieś + Táhnout/Nést Toggle (Self) @@ -138,7 +144,6 @@ Seleccionar estado de Triage Selectioner l'état de Triage Wybierz priorytet - Select Head @@ -146,6 +151,7 @@ Seleccionar Cabeza Selectioner Tête Wybierz głowę + Vybrat Hlavu Select Torso @@ -153,6 +159,7 @@ Seleccionar Torso Selectioner Torse Wybierz tors + Vybrat Trup Select Left Arm @@ -160,6 +167,7 @@ Seleccionar Brazo Izquierdo Selectioner Bras Gauche Wybierz lewą rękę + Vybrat Levou Ruku Select Right Arm @@ -167,6 +175,7 @@ Seleccionar Brazo Derecho Selectioner Bras Droit Wybierz prawą rękę + Vybrat Pravou Ruku Select Left Leg @@ -174,6 +183,7 @@ Seleccionar Pierna Izquierda Selectioner Jambe Gauche Wybierz lewą nogę + Vybrat Levou Nohu Select Right Leg @@ -181,6 +191,7 @@ Seleccionar Pierna Derecha Selectioner Jambe Droite Wybierz prawą nogę + Vybrat Pravou Nohu Head @@ -188,12 +199,14 @@ Cabeza Tête Głowa + Hlava Torso Торс Torse Tors + Trup Left Arm @@ -201,6 +214,7 @@ Brazo Izquierdo Bras Gauche Lewa ręka + Levá Ruka Right Arm @@ -208,6 +222,7 @@ Brazo Derecho Bras Droit Prawa ręka + Pravá Ruka Left Leg @@ -215,6 +230,7 @@ Pierna Izquierda Jambe Gauche Lewa noga + Levá Noha Right Leg @@ -222,6 +238,7 @@ Pierna Derecha Jambe Droite Prawa noga + Pravá Noha Body Part: %1 @@ -306,6 +323,7 @@ No respira Apnée Brak oddechu + Nedýchá Difficult breathing @@ -313,6 +331,7 @@ Dificultad para respirar Difficultée Respiratoire Trudności z oddychaniem + Potíže s dýcháním Almost no breathing @@ -320,6 +339,7 @@ Casi sin respirar Respiration Faible Prawie brak oddechu + Téměř nedýchá Bleeding @@ -327,6 +347,7 @@ Sangrando Seignement Krwawienie zewnętrzne + Krvácí in Pain @@ -334,6 +355,7 @@ Con Dolor A De La Douleur W bólu + v Bolestech Lost a lot of Blood @@ -341,6 +363,7 @@ Mucha Sangre perdida A Perdu Bcp de Sang Stracił dużo krwi + Ztratil hodně Krve Tourniquet [CAT] @@ -357,4 +380,4 @@ Rurka nosowo-gardłowa [NPA] - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 07975fcb0a..188e9373c0 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -338,11 +338,13 @@ Headbug Fix Fix Headbug "Fejhiba" fix + Fix Headbug Resets your animation state. Resetuje aktualną animację. Visszaállítja az animációs állapotodat. + Resetovat aktuální animaci. ACE News @@ -350,7 +352,7 @@ ACE-Neuigkeiten Notícias do ACE Wiadomości ACE - ACE Novinky + ACE Zprávy ACE hírek @@ -359,16 +361,18 @@ Zeige Neuigkeiten im Hauptmenü Mostrar notícias no menu principal Pokazuj wiadomości ACE w menu głównym - Zobrazit novinky v hlavním menu + Zobrazit Zprávy v Hlavním Menu Hírek mutatása a főmenüben All Categories Wszystkie kategorie + Všechny Kategorie Logistics Logistyka + Logistika - + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index c21c55ba9e..d70e2802f5 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -17,7 +17,7 @@ Altimeter Watch Montre altimètre Höhenmesser - Hodinky s výškoměrem + Hodinky s Výškoměrem Zegarek z wysokościomierzem Reloj altímetro Magasságmérős karóra @@ -43,7 +43,7 @@ Paracaídas no dirigible Parachute non manœuvrable Niesterowalny spadochron - Neříditelný padák + Neříditelný Padák Irányíthatatlan ejtőernyő Неуправляемый парашют Paracadute non manovrabile @@ -54,12 +54,14 @@ Fallschirm abschneiden Odetnij spadochron Ejtőernyő elvágása + Odžíznout Padák Reserve Parachute Reserve Fallschirm Spadochron awaryjny Tartalék ejtőernyő + Záložní Padák - + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 09759344f8..dd8302b845 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -8,7 +8,7 @@ Cadena de repuesto Chenille de réserve Zapasowa gąsienica - Náhradní pásy + Náhradní Pásy Lagarta Reserva Cingolo di scorta Pót lánctalp @@ -32,7 +32,7 @@ Cambiar rueda Changer Roue Wymień koło - Vyměňit kolo + Vyměňit Kolo Trocar Roda Sostituisci la ruota Kerék cseréje @@ -42,11 +42,13 @@ Replacing Wheel ... Ersetze Reifen ... Wymienianie koła ... + Měním Kolo ... Wheel replaced Reifen ersetzt Koło zostało wymienione + Kolo vyměněno Remove Wheel @@ -64,47 +66,58 @@ Removing Wheel ... Entferne Reifen ... Zdejmowanie koła ... + Odstraňuji Kolo ... Wheel removed Reifen entfernt Koło zostało zdjęte + Kolo odstraněno Change Track Wymień gąsienicę + Vyměnit Pás Replacing Track ... Wymienianie gąsienicy ... + Měním Pás ... Track replaced Gąsienica została wymieniona + Pás vyměněn Remove Track Zdejmij gąsienicę + Odstranit Pás Removing Track ... Zdejmowanie gąsienicy ... + Odstraňuji Pás ... Track removed Gąsienica została zdjęta + Pás odstraněn Full Repair Pełna naprawa + Kompletní Oprava Repairing Vehicle ... Naprawianie pojazdu ... + Opravuji Vozidlo ... Full Repair Locations Lokaliz. pełnej naprawy + Lokace pro Kompletní Opravu At what locations can a vehicle be fully repaired? @@ -113,6 +126,7 @@ Allow Full Repair Zezwól na pełną naprawę + Povolit Kompletní Opravu Who can perform a full repair on a vehicle? @@ -133,6 +147,7 @@ Display text on repair Wyświetl tekst przy naprawie + Zobrazit text při opravě Display a notification whenever you repair a vehicle @@ -178,6 +193,7 @@ Fully repaired part Bauteil vollständig repariert W pełni naprawiono część + Kompletně opravená část Partially repaired %1 @@ -188,6 +204,7 @@ Fully repaired %1 %1 vollständig repariert W pełni naprawiono: %1 + Kompletně opraveno %1 Partially repaired %1 @@ -238,6 +255,7 @@ Vertical Stabilizer + Vertikální Stabilizátor Fuel Tank @@ -253,24 +271,29 @@ Transmission + Převodovka Gear Starter + Startér Tail + Ocas Pilot Tube + Pilotova Trubice Static Port Ammo + Munice Turret @@ -298,6 +321,7 @@ Missiles + Rakety Left Track @@ -449,7 +473,7 @@ Rotor de cola Rotor anticouple Tylni rotor - Zadní Rotor + Ocasní Rotor Rotor de Cauda Rotore di coda Farokrotor @@ -507,30 +531,37 @@ Anyone Ktokolwiek + Kdokoliv Engineer only Tylko mechanicy + Pouze inženýr Repair Specialist only Tylko inżynierowie + Pouze specialista na opravování Allow Wheel Wymiana kół + Možnost Výměny Kol Who can remove and replace wheels? Kto może zdejmować i zmieniać koła? + Kdo může odstranit a vyměnit kola? Allow Repair Możliwość naprawy + Možnost Opravování Who can perform repair actions? Kto może wykonywać czynności związane z naprawą pojazdów? + Kdo může provádět opravy? Repair Threshold @@ -559,6 +590,7 @@ Anywhere Wszędzie + Kdekoliv Repair Vehicle only @@ -575,10 +607,12 @@ Assign Engineer Przydziel inżyniera + Přiřadit Inženýra List Lista + Seznam List of unit names that will be classified as engineer, separated by commas. @@ -595,14 +629,17 @@ None Żadny + Nikdo Engineer Mechanik + Inženýr Specialist Inżynier + Specialista Assign one or multiple units as an engineer @@ -615,6 +652,7 @@ List Lista + Seznam List of vehicles that will be classified as repair vehicle, separated by commas. @@ -639,6 +677,7 @@ List Lista + Seznam List of objects that will be classified as repair Facility, separated by commas. @@ -657,4 +696,4 @@ Przydziel klasę budynku naprawczego do jednego lub kilku budynków. - + \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index e26c2b36f0..829eafd4a0 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -29,7 +29,7 @@ Sitting Sentado Siadanie - Sedící + Sezení Sentarse Ülés diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 843554061d..bf9b0cef33 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -6,6 +6,7 @@ Pokaz slajdów Vetítés Apresentação de Slides + Prezentace This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. @@ -18,6 +19,7 @@ Obiekty Objektumok Objetos + Objekty Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. @@ -42,6 +44,7 @@ Obrazy Képek Imagens + Obrázky List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). @@ -54,6 +57,7 @@ Nazwy interakcji Interakciós nevek Nomes de Interação + Názvy Interakcí List of names that will be used for interaction entries, separated by commas, in order of images. @@ -80,4 +84,4 @@ Slides - + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 5c24224b72..6ae5d7d882 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -4,6 +4,7 @@ Spectator Settings Ustawienia obserwatora + Nastavení Pozorovatele Configure how the spectator system will operate by default. @@ -12,6 +13,7 @@ Unit filter Filtr jednostek + Filtr jednotek Method of filtering spectatable units. @@ -20,22 +22,27 @@ No units Brak jednostek + Žádné jednotky Only players Tylko gracze + Pouze hráči Playable Units Grywalne jednostki + Hratelné Jednotky All units Wszystkie jednostki + Všechny jednotky Side filter Filtr stron + Filtr stran Method of filtering spectatable sides. @@ -44,22 +51,27 @@ Player side Strona gracza + Strana hráče Friendly sides Strony sojusznicze + Strana spojenců Hostile sides Strony wrogie + Strana nepřítele All sides Wszystkie strony + Všechny strany Camera modes Tryby kamery + Módy kamery Camera modes that can be used. @@ -68,22 +80,27 @@ All Wszystkie + Všechny Free only Tylko wolna + Pouze volná Internal only Tylko wewnętrzna + Pouze vnitřní External only Tylko zewnętrzna + Pouze vnější Internal and external Wewnętrzna i zewnętrzna + Vnitřní a vnější Vision modes @@ -96,10 +113,12 @@ Night vision Noktowizja + Noktovize Thermal imaging Termowizja + Termovize @@ -113,55 +132,68 @@ Free Wolna + Volná Internal Wewnętrzna + Vnitřní External Zewnętrzna + Vnější Normal Normalna + Normální Night Noc + Noc Thermal Termo + Termál Free Camera Kamera swobodna + Volná Kamera Camera Forward Kamera naprzód + Kamera Vpřed Camera Backward Kamera w tył + Kamera Zpět Camera Left Kamera w lewo + Kamera Doleva Camera Right Kamera w prawo + Kamera Doprava Camera Up Kamera w górę + Kamera Nahoru Camera Down Kamera w dół + Kamera Dolů Pan Camera @@ -174,6 +206,7 @@ Lock Camera to Target Zablokuj kamerę na celu + Zamknout Kameru na Cíl Speed Boost @@ -182,22 +215,27 @@ Focus on Unit Skup na jednostce + Zaměřit se na Jednotku Interface Interfejs + Rozhraní Toggle Interface Przełącz interfejs + Přepnout Rozhraní Toggle Unit Icons Przełącz ikony jednostek + Přepnout Ikony Jednotek Toggle Unit List Przełącz listę jednostek + Přepnout Seznam Jednotek Toggle Toolbar @@ -206,14 +244,17 @@ Toggle Compass Przełącz kompas + Přepnout Kompas Toggle Map Przełącz mapę + Přepnout Mapu Toggle Help Przełącz pomoc + Přepnout Nápovědu Camera Attributes @@ -222,18 +263,22 @@ Next Camera Następna kamera + Následující Kamera Previous Camera Poprzednia kamera + Předchozí Kamera Next Unit Następna jednostka + Následující Jednotka Previous Unit Poprzednia jednostka + Předchozí Jednotka Next Vision Mode @@ -246,10 +291,12 @@ Adjust Zoom Reguluj zoom + Regulovat Přiblížení Adjust Speed Reguluj prędkość + Regulovat Rychlost Increment Zoom @@ -262,10 +309,12 @@ Reset Zoom Resetuj zoom + Obnovit Přiblížení Reset Speed Resetuj prędkość + Obnovit Rychlost - + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 97bf5f40c7..170ac52cd4 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -157,14 +157,17 @@ Assign Medic Przydziel medyka + Přiřadit Zdravotníka Assign Medical Vehicle Przydziel pojazd medyczny + Přiřadit Zdravotnické Vozidlo Assign Medical Facility Przydziel budynek medyczny + Přiřadit Zdravotnické Zařízení Unit must be alive From 91cae690c043f6b5cbefcc9f299b4d145d7eaba9 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 3 Sep 2015 03:36:15 +0300 Subject: [PATCH 224/620] Russian Translations - Update --- addons/advanced_ballistics/stringtable.xml | 508 +- addons/ballistics/stringtable.xml | 3209 ++++----- addons/captives/stringtable.xml | 508 +- addons/cargo/stringtable.xml | 89 +- addons/common/stringtable.xml | 1418 ++-- addons/concertina_wire/stringtable.xml | 106 +- addons/explosives/stringtable.xml | 1195 ++-- addons/finger/stringtable.xml | 125 +- addons/flashlights/stringtable.xml | 62 +- addons/frag/stringtable.xml | 198 +- addons/hearing/stringtable.xml | 312 +- addons/interact_menu/stringtable.xml | 578 +- addons/interaction/stringtable.xml | 1642 ++--- addons/main/stringtable.xml | 17 +- addons/map/stringtable.xml | 400 +- addons/medical/stringtable.xml | 7477 ++++++++++---------- addons/medical_menu/stringtable.xml | 729 +- addons/microdagr/stringtable.xml | 741 +- addons/missileguidance/stringtable.xml | 257 +- addons/missionmodules/stringtable.xml | 329 +- addons/mk6mortar/stringtable.xml | 250 +- addons/mx2a/stringtable.xml | 46 +- addons/nametags/stringtable.xml | 680 +- addons/optionsmenu/stringtable.xml | 767 +- addons/parachute/stringtable.xml | 132 +- addons/rangecard/stringtable.xml | 157 +- addons/realisticnames/stringtable.xml | 3824 +++++----- addons/repair/stringtable.xml | 1394 ++-- addons/respawn/stringtable.xml | 502 +- addons/sitting/stringtable.xml | 93 +- addons/slideshow/stringtable.xml | 179 +- addons/spectator/stringtable.xml | 608 +- addons/switchunits/stringtable.xml | 314 +- addons/tacticalladder/stringtable.xml | 147 +- addons/tripod/stringtable.xml | 132 +- addons/vehiclelock/stringtable.xml | 519 +- addons/viewdistance/stringtable.xml | 483 +- addons/weather/stringtable.xml | 298 +- addons/winddeflection/stringtable.xml | 318 +- addons/yardage450/stringtable.xml | 65 +- addons/zeus/stringtable.xml | 504 +- 41 files changed, 15925 insertions(+), 15387 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 45e0d042a5..b35ddfb353 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,243 +1,267 @@ - - - - - Show Wind Info - Pokaż inf. o wietrze - Mostra indicazioni del vento - Показать информацию о ветре - Afficher les info sur le vent - Mostrar información del viento - Windinformationen anzeigen - Széladatok mutatása - Zobrazit informace o větru - Mostrar Informação do Vento - - - Show Protractor - Pokaż kątomierz - Mostra il rapportatore - Показать транспортир - Afficher le rapporteur - Mostrar transportador - Winkelmesser anzeigen - Szögmérő mutatása - Zobrazit úhloměr - Mostrar Transferidor - - - Advanced Ballistics - Zaawansowana balistyka - Balística avanzada - Erweiterte Ballistik - Pokročilá balistika - Balística avançada - Fejlett ballisztika - - - Advanced Ballistics - Zaawansowana balistyka - Balística avanzada - Erweiterte Ballistik - Pokročilá balistika - Balística avançada - Fejlett ballisztika - - - Enables advanced ballistics - Aktywuje zaawansowaną balistykę - Activa la balística avanzada - Aktiviert die erweiterte Ballistik - Aktivuje pokročilou balistiku - Ativa balística avançada - Engedélyezi a fejlett ballisztikát - - - Enabled For Snipers - Activada para francotiradores - Akt. dla snajperów - Für Scharfschützen aktiviert - Povoleno pro odstřelovače - Ativar para caçadores - Mesterlövészeknek engedélyezve - - - Enables advanced ballistics for non local snipers (when using high power optics) - Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica) - Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) - Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) - Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) - Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) - Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor) - - - Enabled For Group Members - Activada para miembros de grupo - Akt. dla czł. grupy - Für Gruppenmitglieder aktiviert - Povoleno pro členy skupiny - Ativada para membros do grupo - Csoporttagoknak engedélyezve - - - Enables advanced ballistics for non local group members - Activada la balística avanzada para miembros de grupo no locales - Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy - Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder - Aktivuje pokročilou balistiku pro nelokální členy skupiny - Ativa balística avançada para membros de grupo não locais - Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak - - - Enabled For Everyone - Activada para todos - Akt. dla wszystkich - Für jeden aktiviert - Povoleno pro všechny - Ativada para todos - Mindenkinek engedélyezve - - - Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) - Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador). - Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) - Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) - Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) - Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) - Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) - - - Always Enabled For Group Members - Zawsze akt. dla czł. grupy - Siempre activada para miembros de grupo - Für Gruppenmitglieder immer aktiviert - Vždy povoleno pro členy skupiny - Sempre ativada para membros do grupo - Mindig engedélyezve csoporttagoknak - - - Always enables advanced ballistics when a group member fires - Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - Activada la balística avanzada siempre cuando miembros de grupo disparan - Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt - Aktivuje pokročilou balistiku pro členy skupiny - Sempre ative balística avançada quando um membro do grupo disparar - Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel - - - Disabled In FullAuto Mode - Wył. podczas ognia auto. - Desactivada en modo automático - Beim vollautomatischen Feuern deaktiviert - Zakázáno v automatickém režimu střelby - Desabilitar no modo automático - Automata módban letiltva - - - Disables the advanced ballistics during full auto fire - Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - Desactivada la balística avanzada durante el fuego automático - Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern - Zákáže pokročilou balistiku během střelby v režimu automat - Desabilitar a balística avançada durante fogo automático - Letiltja a fejlett ballisztikát automata tüzelés folyamán - - - Enable Ammo Temperature Simulation - Symulacja temp. amunicji - Activar simulación de temperatura de munición - Simulation der Munitionstemperatur aktivieren - Povolit simulaci teploty munice - Ativar simulação de temperatura de munição - Lőszer-hő szimuláció engedélyezése - - - Muzzle velocity varies with ammo temperature - Prędkość wylotowa pocisku jest zależna od temperatury amunicji - La velocidad de salida varía con la temperatura de la munición - Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit - Úsťová rychlost je závislá na teplotě munice - A velocidade de saída varia com a temperatura da munição - A kezdősebesség a lőszer hőmérsékletétől függően változó - - - Enable Barrel Length Simulation - Symulacja długości lufy - Habilitar la simulación de longitud del cañón - Simulation der Lauflänge aktivieren - Povolit simulaci délky hlavně - Ativar a simulação de comprimento do cano - Csőhossz-szimuláció engedélyezése - - - Muzzle velocity varies with barrel length - Prędkość wylotowa pocisku jest zależna od długości lufy - La velocidad de salidal varía con la longitud del cañón - Lauflänge beeinflusst Mündungsgeschwindigkeit - Úsťová rychlost je závislá na délce hlavně - A velocidade de saída caria com o comprimento do cano - A kezdősebesség a cső hosszától függően változó - - - Enable Bullet Trace Effect - Efekt smugi pocisku - Activar el efecto trazador de la bala - Geschossspureffekt aktivieren - Povolit efekt trasírek - Ativa efeito traçante de projétil - Nyomkövető-effekt engedélyezése - - - Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) - Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) - Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) - Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) - Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) - Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) - Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) - - - Simulation Interval - Interwał symulacji - Intervalo de simulación - Simulationsintervall - Interval simulace - Intervalo da simulação - Szimuláció intervalluma - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - Define el intervalo entre cada cálculo - Legt das Intervall zwischen den Berechnungsschritten fest - Určuje interval mezi každým výpočtem - Define o intervalo entre cada cálculo - Meghatározza a számítási lépések közötti időintervallumot - - - Simulation Radius - Zasięg symulacji - Radio de simulación - Simulationsradius - Rozsah simulace - Raio de simulação - Szimuláció hatóköre - - - Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles - Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków - Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles - Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird - Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil - Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis - Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak - - - This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired. - Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. - Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. - Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. - Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. - - + + + + + Show Wind Info + Pokaż inf. o wietrze + Mostra indicazioni del vento + Показать информацию о ветре + Afficher les info sur le vent + Mostrar información del viento + Windinformationen anzeigen + Széladatok mutatása + Zobrazit informace o větru + Mostrar Informação do Vento + + + Show Protractor + Pokaż kątomierz + Mostra il rapportatore + Показать транспортир + Afficher le rapporteur + Mostrar transportador + Winkelmesser anzeigen + Szögmérő mutatása + Zobrazit úhloměr + Mostrar Transferidor + + + Advanced Ballistics + Zaawansowana balistyka + Balística avanzada + Erweiterte Ballistik + Pokročilá balistika + Balística avançada + Fejlett ballisztika + Продвинутая баллистика + + + Advanced Ballistics + Zaawansowana balistyka + Balística avanzada + Erweiterte Ballistik + Pokročilá balistika + Balística avançada + Fejlett ballisztika + Продвинутая баллистика + + + Enables advanced ballistics + Aktywuje zaawansowaną balistykę + Activa la balística avanzada + Aktiviert die erweiterte Ballistik + Aktivuje pokročilou balistiku + Ativa balística avançada + Engedélyezi a fejlett ballisztikát + Включает продвинутую баллистику + + + Enabled For Snipers + Activada para francotiradores + Akt. dla snajperów + Für Scharfschützen aktiviert + Povoleno pro odstřelovače + Ativar para caçadores + Mesterlövészeknek engedélyezve + Включена для снайперов + + + Enables advanced ballistics for non local snipers (when using high power optics) + Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica) + Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) + Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) + Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) + Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) + Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor) + Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики) + + + Enabled For Group Members + Activada para miembros de grupo + Akt. dla czł. grupy + Für Gruppenmitglieder aktiviert + Povoleno pro členy skupiny + Ativada para membros do grupo + Csoporttagoknak engedélyezve + Включена для группы + + + Enables advanced ballistics for non local group members + Activada la balística avanzada para miembros de grupo no locales + Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy + Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder + Aktivuje pokročilou balistiku pro nelokální členy skupiny + Ativa balística avançada para membros de grupo não locais + Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak + Включает продвинутую баллистику для нелокальных членов группы + + + Enabled For Everyone + Activada para todos + Akt. dla wszystkich + Für jeden aktiviert + Povoleno pro všechny + Ativada para todos + Mindenkinek engedélyezve + Включена для всех + + + Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador). + Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) + Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) + Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) + Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) + Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) + Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере) + + + Always Enabled For Group Members + Zawsze akt. dla czł. grupy + Siempre activada para miembros de grupo + Für Gruppenmitglieder immer aktiviert + Vždy povoleno pro členy skupiny + Sempre ativada para membros do grupo + Mindig engedélyezve csoporttagoknak + Всегда включена для членов группы + + + Always enables advanced ballistics when a group member fires + Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + Activada la balística avanzada siempre cuando miembros de grupo disparan + Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt + Aktivuje pokročilou balistiku pro členy skupiny + Sempre ative balística avançada quando um membro do grupo disparar + Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel + Всегда включает продвинутую баллистику когда стреляет член группы + + + Disabled In FullAuto Mode + Wył. podczas ognia auto. + Desactivada en modo automático + Beim vollautomatischen Feuern deaktiviert + Zakázáno v automatickém režimu střelby + Desabilitar no modo automático + Automata módban letiltva + Выкл. для автомат. режима + + + Disables the advanced ballistics during full auto fire + Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + Desactivada la balística avanzada durante el fuego automático + Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern + Zákáže pokročilou balistiku během střelby v režimu automat + Desabilitar a balística avançada durante fogo automático + Letiltja a fejlett ballisztikát automata tüzelés folyamán + Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме + + + Enable Ammo Temperature Simulation + Symulacja temp. amunicji + Activar simulación de temperatura de munición + Simulation der Munitionstemperatur aktivieren + Povolit simulaci teploty munice + Ativar simulação de temperatura de munição + Lőszer-hő szimuláció engedélyezése + Симуляция температуры для боеприпасов + + + Muzzle velocity varies with ammo temperature + Prędkość wylotowa pocisku jest zależna od temperatury amunicji + La velocidad de salida varía con la temperatura de la munición + Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit + Úsťová rychlost je závislá na teplotě munice + A velocidade de saída varia com a temperatura da munição + A kezdősebesség a lőszer hőmérsékletétől függően változó + Начальная скорость пули зависит от температуры + + + Enable Barrel Length Simulation + Symulacja długości lufy + Habilitar la simulación de longitud del cañón + Simulation der Lauflänge aktivieren + Povolit simulaci délky hlavně + Ativar a simulação de comprimento do cano + Csőhossz-szimuláció engedélyezése + Симуляция длины ствола + + + Muzzle velocity varies with barrel length + Prędkość wylotowa pocisku jest zależna od długości lufy + La velocidad de salidal varía con la longitud del cañón + Lauflänge beeinflusst Mündungsgeschwindigkeit + Úsťová rychlost je závislá na délce hlavně + A velocidade de saída caria com o comprimento do cano + A kezdősebesség a cső hosszától függően változó + Начальная скорость пули зависит от длины ствола + + + Enable Bullet Trace Effect + Efekt smugi pocisku + Activar el efecto trazador de la bala + Geschossspureffekt aktivieren + Povolit efekt trasírek + Ativa efeito traçante de projétil + Nyomkövető-effekt engedélyezése + Следы пуль + + + Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) + Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) + Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) + Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) + Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) + Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) + Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) + Включает эффект следов пуль для больших калибров (видны только через мощную оптику) + + + Simulation Interval + Interwał symulacji + Intervalo de simulación + Simulationsintervall + Interval simulace + Intervalo da simulação + Szimuláció intervalluma + Интервал симуляции + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + Define el intervalo entre cada cálculo + Legt das Intervall zwischen den Berechnungsschritten fest + Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo + Meghatározza a számítási lépések közötti időintervallumot + Определяет временной интервал между вычислениями + + + Simulation Radius + Zasięg symulacji + Radio de simulación + Simulationsradius + Rozsah simulace + Raio de simulação + Szimuláció hatóköre + Радиус симуляции + + + Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles + Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków + Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles + Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird + Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil + Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak + Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам + + + This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired. + Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. + Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. + Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. + Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. + Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел. + + \ No newline at end of file diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 70591dcbfe..30a394e6ba 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1,1605 +1,1606 @@ - - - - - - 6.5mm 30Rnd Tracer IR-DIM Mag - 6,5mm Nyomjelző IR-DIM 30-as Tár - 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 6,5mm - Ch. 6,5mm 30Cps Traçantes IR-DIM - Magazynek 6,5mm 30rd Smugacz IR-DIM - 6.5mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 6,5mm - Caricatore 6.5mm 30Rnd Traccianti IR-DIM - Магазин из 30-ти 6,5 мм ИК-трассирующих - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - - - Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - 6.5mm 30Rnd SD Mag - 6,5mm Halk 30-as Tár - 6,5mm 30-Patronen-Magazin SD - Cargador de 30 balas SD de 6,5mm - Ch. 6,5mm 30Cps SD - Magazynek 6,5mm 30rd SD - 6.5mm 30náb. SD Zásobník - Carregador de 30 projéteis SD de 6,5mm - Caricatore 6.5mm 30Rnd Sil. - Магазин из 30-ти 6,5 мм дозвуковых - - - 6.5mm SD - 6,5mm Halk - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6.5mm SD - 6,5mm SD - 6.5mm Sil. - 6,5 мм дозвуковые - - - Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - 6.5mm 30Rnd AP Mag - 6,5mm Páncéltörő 30-as Tár - 6,5mm 30-Patronen-Magazin AP - Cargador de 30 balas AP de 6,5mm - Ch. 6,5mm 30Cps AP - Magazynek 6,5mm 30rd AP - 6.5mm 30náb. AP Zásobník - Carregador de 30 projéteis AP de 6,5mm - Caricatore 6.5mm 30Rnd AP - Магазин из 30-ти 6,5 мм бронебойных - - - 6.5mm AP - 6,5mm Páncéltörő - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6.5mm AP - 6,5mm AP - 6.5mm AP - 6,5 мм бронебойные - - - Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - - 6.5mm 30Rnd Tracer IR-DIM Mag - 6,5mm IR-DIM Nyomjelző 30-as Tár - 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 6,5mm - Ch. 6,5mm 30Cps Traçantes IR-DIM - Magazynek 6,5mm 30rd Smugacz IR-DIM - 6.5mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 6,5mm - Caricatore 6.5mm 30Rnd Traccianti IR-DIM - Магазин из 30-ти 6,5 мм ИК-трассирующих - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - - - Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba - Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba - - - 6.5mm 30Rnd SD Mag - 6,5mm Halk 30-as Tár - 6,5mm 30-Patronen-Magazin SD - Cargador de 30 balas SD de 6,5mm - Ch. 6,5mm 30Cps SD - Magazynek 6,5mm 30rd SD - 6.5mm 30náb. SD Zásobník - Carregador de 30 projéteis SD de 6,5mm - Caricatore 6.5mm 30Rnd Sil. - Магазин из 30-ти 6,5 мм дозвуковых - - - 6.5mm SD - 6,5mm Halk - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6.5mm SD - 6,5mm SD - 6.5mm Sil. - 6,5 мм дозвуковые - - - Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba - Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba - - - 6.5mm 30Rnd AP Mag - 6,5mm Páncéltörő 30-as Tár - 6,5mm 30-Patronen-Magazin AP - Cargador de 30 balas AP de 6,5mm - Ch. 6,5mm 30Cps AP - Magazynek 6,5mm 30rd AP - 6.5mm 30náb. AP Zásobník - Carregador de 30 projéteis AP de 6,5mm - Caricatore 6.5mm 30Rnd AP - Магазин из 30-ти 6,5 мм бронебойных - - - 6.5mm AP - 6,5mm Páncéltörő - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6.5mm AP - 6,5mm AP - 6.5mm AP - 6,5 мм бронебойные - - - Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba - Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba - - - - 5.56mm 30rnd Tracer IR-DIM Mag - 5,56mm Nyomjelző IR-DIM 30-as Tár - 5,56mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 5,56mm - Ch. 5,56mm 30Cps Traçantes IR-DIM - Magazynek 5,56mm 30rd Smugacz IR-DIM - 5.56mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 5,56mm - Caricatore 5.56mm 30rnd Traccianti IR-DIM - Магазин из 30-ти 5,56 мм ИК-трассирующих - - - 5.56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5.56mm IR-DIM - 5,56mm IR-DIM - 5.56mm IR-DIM - 5,56 мм ИК-трассирующие - - - Caliber: 5.56x45mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Ráže: 5.56x45mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - - - - 7.62mm 20rnd Tracer Mag - 7,62mm Nyomjelző IR-DIM 20-as Tár - 7,62mm 20-Patronen-Magazin Leuchtspur - Cargador de 20 balas trazadores de 7,62mm - Ch. 7,62mm 20Cps Traçantes - Magazynek 7,62mm 20rd Smugacz - 7.62mm 20náb. Svítící Zásobník - Carregador de 20 projéteis traçantes de 7,62mm - Caricatore 7.62mm 20Rnd Traccianti - Магазин из 20-ти 7,62 мм трассирующих - - - 7.62mm Tracer - 7,62mm Nyomjelző - 7,62mm Leuchtspur - 7,62mm Trazadora - 7,62mm Traçantes - 7,62mm Smugacz - 7.62mm Svítící - 7,62mm Traçante - 7.62mm Traccianti - 7,62 мм трассирущие - - - Caliber: 7.62x51mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Nyomjelző<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm Leuchtspur<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - - - 7.62mm 20rnd Tracer IR-DIM Mag - 7,62mm Nyomjelző IR-DIM 20-as Tár - 7,62mm 20-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 20 balas trazadoras IR-DIM de 7,62mm - Ch. 7,62mm 20Cps Traçantes IR-DIM - Magazynek 7,62mm 20rd Smugacz IR-DIM - 7.62mm 20náb. Svítící IR-DIM Zásobník - Carregador de 20 projéteis IR-DIM de 7,62mm - Caricatore 7.62mm 20rnd Traccianti IR-DIM - Магазин из 20-ти 7,62 мм ИК-трассирующих - - - 7.62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7.62mm IR-DIM - 7,62mm IR-DIM - 7.62mm IR-DIM - 7,62 мм ИК-трассирующие - - - Caliber: 7.62x51mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Nyomjelző IR-DIM<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm Leuchtspur IR-DIM<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - - - 7.62mm 20Rnd SD Mag - 7,62mm Halk 20-as Tár - 7,62mm 20-Patronen-Magazin SD - Cargador de 20 balas SD de 7,62mm - Ch. 7,62mm 20Cps SD - Magazynek 7,62mm 20rd SD - 7.62mm 20náb. SD Zásobník - Carregador de 20 projéteis SD de 7,62mm - Caricatore 7.62mm 20Rnd Sil. - Магазин из 20-ти 7,62 мм дозвуковых - - - 7.62mm SD - 7,62mm Halk - 7,62mm SD - 7,62mm SD - 7,62mm SD - 7,62mm SD - 7.62mm SD - 7,62mm SD - 7.62mm Sil. - 7,62 мм дозвуковые - - - Caliber: 7.62x51mm SD<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Halk<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm SD<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm SD<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR - - - - .338 NM 130Rnd Tracer Belt - .338 NM 130-Patronen-Gurt Leuchtspur - Taśma .338 NM 130rd Smugacz - Bande .338 NM 130Cps Traçante - Cinta de 130 balas trazadoras de .338 NM - Лента из 130-ти .338 NM трассирующих - .338 NM 130Rnd Tracciante Belt - .338 NM 130náb. Svítící Pás - Cinto de munição .338 NM com 130 cartuchos - .338 NM 130-lövedékes nyomkövető heveder - - - .338 NM Tracer - .338 NM Leuchtspur - .338 NM Tracer - .338 NM Svítící - .338 NM Traçante - .338 NM Trazadora - .338 NM трассирующие - .338 NM 130Rnd Tracciante - .338 NM Traçante - .338 NM nyomkövető - - - Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Leuchtspur<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG - Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG - Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum Svítící<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - - - .338 NM 130Rnd IR-DIM Belt - .338 NM 130-Patronen-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 - Лента из 130-ти .338 NM ИК-трассирующих - .338 NM 130Rnd IR-DIM Belt - .338 NM 130náb. IR-DIM Pás - Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos - .338 NM 130-lövedékes infravörös nyomkövető heveder - - - .338 NM IR-DIM - .338 LM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM ИК-трассирующие - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM infravörös nyomkövető - - - Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG - Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG - Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum Svítící IR-DIM<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - - - .338 NM 130Rnd AP Belt - .338 NM 130-Patronen-Gurt Hartkern - Taśma .338 NM 130rd AP - Bande .338 NM 130Cps AP - Cinta de 130 balas AP de .338 NM - Лента из 130-ти .338 NM бронебойных - .338 NM 130Rnd AP Belt - .338 NM 130náb. AP Pás - Cinto de munição .338 NM com 130 cartuchos AP - .338 NM 130-lövedékes páncéltörő heveder - - - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM бронебойные - .338 NM AP - .338 NM AP - .338 NM páncéltörő - - - Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Hartkern<br />Patronen: 130<br />Eingesetzt von: SPMG - Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG - Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé avec: SPMG - Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG - Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum AP<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG - - - - 9.3mm 10Rnd Tracer Mag - 9,3mm 10-Patronen-Magazin Leuchtspur - Magazynek 9.3mm 10rd Smugacz - Ch. 9.3mm 10Cps Traçante - Cargador de 10 balas trazadoras de 9.3mm - Магазин из 10-ти 9,3 мм трассирующих - 9.3mm 10Rnd Tracer Mag - 9.3mm 10náb. Svítící Zásobník - Carregador de 10 cartuchos 9.3mm traçantes - 9,3mm 10-lövedékes nyomkövető tár - - - 9.3mm Tracer - 9,3mm Leuchtspur - 9,3mm Smugacz - 9.3mm Svítící - 9.3mm Traçante - 9.3mm Trazadora - 9,3 мм трассирующие - 9.3mm Tracer - 9.3mm Traçante - 9,3mm nyomkövető - - - Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus - Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus - Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus - Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus - Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus - Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus - Ráže: 9.3x64mm Svítící<br />Munice: 10<br />Použití: Cyrus - Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus - Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus - - - 9.3mm 10Rnd Tracer IR-DIM Mag - 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM - Magazynek 9,3mm 10rd Smugacz IR-DIM - Ch. 9.3mm 10Cps Traçante IR-DIM - Cargador de 10 balas trazadoras IR-DIM de 9.3mm - Магазин из 10-ти 9,3 мм ИК-трассирующих - 9.3mm 10Rnd Tracciante IR-DIM Mag - 9.3mm 10náb. Svítící IR-DIM Zásobník - Carregador de 10 cartuchos 9.3mm traçantes IR-DIM - 9,3mm 10-lövedékes infravörös nyomkövető tár - - - 9.3mm IR-DIM - 9,3mm IR-DIM - 9,3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3 мм ИК-трассирующие - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3mm infravörös nyomkövető - - - Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus - Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus - Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus - Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus - Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus - Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus - Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 10<br />Použití: Cyrus - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus - Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus - - - - 9.3mm 150Rnd Tracer Belt - 9,3mm 150-Patronen-Gurt Leuchtspur - Taśma 9,3mm 150rd Smugacz - Bande 9.3mm 150Cps Traçante - Cinta de 150 balas trazadoras de 9.3mm - Лента из 150-ти 9,3 мм трассирующих - 9.3mm 150Rnd Tracer Belt - 9.3mm 150náb. Svítící Pás - Cinto de munição traçante 9.3mm com 150 cartuchos - 9,3mm 150-lövedékes nyomkövető heveder - - - 9.3mm Tracer - 9,3mm Leuchtspur - 9,3mm Smugacz - 9.3mm Svítící - 9.3mm Traçante - 9.3mm Trazadora - 9,3 мм трассирующие - 9.3mm Tracciante - 9.3mm Traçante - 9,3mm nyomkövető - - - Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm Svítící<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid - - - 9.3mm 150Rnd Tracer IR-DIM Belt - 9,3mm 150-Patronen-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 - Лента из 150-ти 9,3 мм ИК-трассирующих - 9.3mm 150Rnd Tracciante IR-DIM Belt - 9.3mm 150náb. Svítící IR-DIM Pás - Cinto de munição traçante 9.3mm IR-DIM com 150 cartuchos - 9,3mm 150-lövedékes infravörös nyomkövető heveder - - - 9.3mm IR-DIM - 9,3mm IR-DIM - 9,3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3 мм ИК-трассирующие - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3mm infravörös nyomkövető - - - Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid - - - 9.3mm 150Rnd AP Belt - 9,3mm 150-Patronen-Gurt Hartkern - Taśma 9,3mm 150rd AP - Bande 9.3mm 150Cps AP - Cinta de 150 balas AP de 9.3mm - Лента из 150-ти 9,3 мм бронебойных - 9.3mm 150Rnd AP Belt - 9.3mm 150náb. AP Pás - Cinto de munição 9.3mm AP com 150 cartuchos - 9,3mm 150-lövedékes páncéltörő heveder - - - 9.3mm AP - 9,3mm AP - 9,3mm AP - 9.3mm AP - 9.3mm AP - 9.3mm AP - 9,3 мм бронебойные - 9.3mm AP - 9.3mm AP - 9,3mm páncéltörő - - - Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm AP<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid - - - 9x19mm 16Rnd Mag - Magazynek 9x19mm 16rd - Ch. 9x19mm 16Cps - Cargador de 16 balas de 9x19mm - Магазин из 16-ти 9х19 мм - 9x19mm 20-Patronen-Magazin - 9x19mm 16Rnd Mag - 9x19mm 16náb. Zásobník - Carregador de 16 cartuchos 9x19mm - 9x19mm 16-lövedékes tár - - - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9х19 мм - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9x19mm - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 16rd - Ch. 9x19mm 30Cps - Cargador de 16 balas de 9x19mm - Магазин из 16-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 16 cartuchos 9x19mm - 9x19mm 16-lövedékes tár - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 30rd - Ch. 9x19mm 30Cps - Cargador de 30 balas de 9x19mm - Магазин из 30-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 30 cartuchos 9x19mm - 9x19mm 30-lövedékes tár - - - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9х19 мм - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9x19mm - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 30rd - Ch. 9x19mm 30Cps - Cargador de 30 balas de 9x19mm - Магазин из 30-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 30 cartuchos 9x19mm - 9x19mm 30-lövedékes tár - - - 7.62x54mm 10Rnd Tracer Mag - Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Rnd Traçante - Cargador de 10 balas trazadoras de 7.62x54mm - Магазин из 10-ти 7,62 мм ИК-трассирующих - 7,62x54mm 10-Patronen-Magazin Leuchtspur - 7.62x54mm 10Munizioni Traccianti IR-DIM Mag - 7.62x54mm 10náb. Svítící Zásobník - Carregador com 10 cartuchos 7.62x54mm Traçante - 7,62x54mm 10-lövedékes nyomkövető tár - - - 7.62mm - 7,62mm - 7.62mm - 7.62mm - 7,62 мм - 7,62mm - 7.62mm - 7.62mm - 7.62mm - 7,62mm - - - 7.62x54mm 10Rnd Tracer Mag - Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Cps Traçante - Cargador de 10 balas trazadoras de 7.62x54mm - Магазин из 10-ти 7,62 мм ИК-трассирующих - 7,62x54mm 10-Patronen-Magazin Leuchtspur - 7.62x54mm 10Munizioni Traccianti IR-DIM Mag - 7.62x54mm 10náb. Svítící Zásobník - Carregador com 10 cartuchos 7.62x54mm Traçante - 7,62x54mm 10-lövedékes nyomkövető tár - - - 6.5mm 100Rnd Tracer IR-DIM Mag - Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM - Cargador de 100 balas trazadoras IR-DIM de 6.5mm - Магазин из 100 6,5 мм ИК-трассирующих - 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur - 6.5mm 100Munizioni Traccianti IR-DIM Mag - 6.5mm 100náb. Svítící IR-DIM Zásobník - Carregador com 100 cartuchos 6.5mm IR-DIM Traçante - 6,5mm 100-lövedékes infravörös nyomkövető tár - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5mm infravörös nyomkövető - - - 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW - Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW - Cargador de 100 balas trazadoras IR-DIM de 6.5mm - Магазин из 100 6,5 мм ИК-трассирующих - 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW - 6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW - 6.5mm 100náb. Svítící IR-DIM Zásobník<br />Munice: 100<br />Použití: MX LSW - Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW - 6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW - - - 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 - Магазин из 200-т 6,5 мм ИК-трассирующих - 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur - 6.5mm 200Rnd Tracer IR-DIM Belt - 6.5mm 200náb. Svítící IR-DIM Pás - Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos - 6,5mm 200-lövedékes infravörös nyomkövető heveder - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5mm infravörös nyomkövető - - - 6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG - Magazynek 6,5mm 200rd Smugacz IR-DIM - Bande 6.5mm 200Cps Traçante IR-DIM<br />Cartouches: 200<br />Utilisé avec: Stoner 99 LMG - Cinta de 200 balas trazadoras IR-DIM de 6.5mm - Магазин из 200-т 6,5 мм ИК-трассирующих - 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG - 6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG - 6.5mm 200náb. Svítící IR-DIM Pás<br />Munice: 200<br />Použití: Stoner 99 LMG - Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG - 6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG - - - 5.56mm 30Rnd Mag (Mk262) - Magazynek 5,56mm 30rd Mk262 - 5.56mm 30Cps (Mk262) - Cargador de 30 balas de 5.56mm (Mk262) - Магазин из 30-ти 5.56 мм Mk262 - 5,56mm 30-Patronen-Magazin (Mk262) - 5.56mm 30Rnd Mag (Mk262) - 5.56mm 30náb. Zásobník (Mk262) - Carregador 5.56mm com 30 cartuchos (Mk262) - 5,56mm 30-lövedékes tár (Mk262) - - - 5.56mm Mk262 - 5,56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5,56 мм Mk262 - 5,56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5,56mm Mk262 - - - Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (Mk262)<br />Munice: 30 - Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30 - - - 5.56mm 30Rnd Mag (Mk318) - Magazynek 5,56mm 30rd (Mk318) - Ch. 5.56mm 30Cps (Mk318) - Cargador de 30 balas de 5.56mm (Mk318) - Магазин из 30-ти 5.56 мм (Mk318) - 5,56mm 30-Patronen-Magazin (Mk318) - 5.56mm 30Rnd Mag (Mk318) - 5.56mm 30Rnd Zásobník (Mk318) - Carregador 5.56mm com 30 cartuchos (Mk318) - 5,56mm 30-lövedékes tár (Mk318) - - - 5.56mm Mk318 - 5,56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5.56 мм Mk318 - 5,56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5,56mm Mk318 - - - Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (Mk318)<br />Munice: 30 - Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30 - - - 5.56mm 30Rnd Mag (M995 AP) - Magazynek 5,56mm 30rd (M995 AP) - Ch. 5.56mm 30Cps (M995 AP) - Cargador de 30 balas de 5.56mm (M995 AP) - Магазин из 30-ти 5.56 мм (M995 бронебойные) - 5,56mm 30-Patronen-Magazin (M995AP) - 5.56mm 30Rnd Mag (M995 AP) - 5.56mm 30náb. Zásobník (M995 AP) - Carregador 5.56mm com 30 cartuchos (M995 AP) - 5,56mm 30-lövedékes tár (M995 páncéltörő) - - - 5.56mm AP - 5,56mm AP - 5.56mm AP - 5.56mm AP - 5.56 мм бронебойные - 5,56mm AP - 5.56mm AP - 5.56mm AP - 5.56mm M995 AP - 5,56mm páncéltörő - - - Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (M995 AP)<br />Munice: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30 - - - 7.62mm 10Rnd Mag (M118LR) - Magazynek 7,62mm 10rd (M118LR) - Ch. 7.62mm 10Cps (M118LR) - Cargador de 10 balas de 7.62mm (M118LR) - Магазин из 10-ти 7,62 мм (M118LR) - 7,62mm 10-Patronen-Magazin (M118LR) - 7.62mm 10Rnd Mag (M118LR) - 7.62mm 10náb. Zásobník (M118LR) - Carregador 7.62mm com 10 cartuchos (M118LR) - 7,62mm 10-lövedékes tár (M118LR) - - - 7.62mm M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62 мм M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62mm M118LR - - - Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 10 - Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (M118LR) - Magazynek 7,62mm 20rd (M118LR) - Ch. 7.62mm 20Cps (M118LR) - Cargador de 20 balas de 7.62mm (M118LR) - Магазин из 20-ти 7,62 мм (M118LR) - 7,62mm 20-Patronen-Magazin (M118LR) - 7.62mm 20Rnd Mag (M118LR) - 7.62mm 20náb. Zásobník (M118LR) - Carregador 7.62mm com 20 cartuchos (M118LR) - 7,62mm 20-lövedékes tár (M118LR) - - - 7.62mm M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62 мм M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62mm M118LR - - - Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 20 - Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (Mk316 Mod 0) - Magazynek 7,62mm 10rd (Mk316 Mod 0) - Ch. 7.62mm 10Cps (Mk316 Mod 0) - Cargador de 10 balas de 7.62mm (Mk316 Mod 0) - Магазин из 10-ти 7,62 мм (Mk316 Mod 0) - 7,62mm 10-Patronen-Magazin (Mk316 Mod 0) - 7.62mm 10Rnd Mag (Mk316 Mod 0) - 7.62mm 10náb. Zásobník (Mk316 Mod 0) - Carregador 7.62mm com 10 cartuchos (Mk316 Mod 0) - 7,62mm 10-lövedékes tár (Mk316 Mod 0) - - - 7.62mm Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62 мм Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62mm Mk316 - - - Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 10 - Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (Mk316 Mod 0) - Magazynek 7,62mm 20rd (Mk316 Mod 0) - Ch. 7.62mm 20Cps (Mk316 Mod 0) - Cargador de 20 balas de 7.62mm (Mk316 Mod 0) - Магазин из 20-ти 7,62 мм (Mk316 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk316 Mod 0) - 7.62mm 20Rnd Mag (Mk316 Mod 0) - 7.62mm 20náb. Zásobník (Mk316 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk316 Mod 0) - 7,62mm 20-lövedékes tár (Mk316 Mod 0) - - - 7.62mm Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62 мм Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62mm Mk316 - - - Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 20 - Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (Mk319 Mod 0) - Magazynek 7,62mm 10rd (Mk319 Mod 0) - Ch. 7.62mm 10Cps (Mk319 Mod 0) - Cargador de 10 balas de 7.62mm (Mk319 Mod 0) - Магазин из 10-ти 7,62 мм (Mk319 Mod 0) - 7,62mm 10-Patronen-Magazin (Mk319 Mod 0) - 7.62mm 10Rnd Mag (Mk319 Mod 0) - 7.62mm 10náb. Zásobník (Mk319 Mod 0) - Carregador 7.62mm com 10 cartuchos (Mk319 Mod 0) - 7,62mm 10-lövedékes tár (Mk319 Mod 0) - - - 7.62mm Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62 мм Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62mm Mk319 - - - Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 10 - Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (Mk319 Mod 0) - Magazynek 7,62mm 20rd (Mk319 Mod 0) - Ch. 7.62mm 20Cps (Mk319 Mod 0) - Cargador de 20 balas de 7.62mm (Mk319 Mod 0) - Магазин из 20-ти 7,62 мм (Mk319 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk319 Mod 0) - 7.62mm 20Rnd Mag (Mk319 Mod 0) - 7.62mm 20náb. Zásobník (Mk319 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk319 Mod 0) - 7,62mm 20-lövedékes tár (Mk319 Mod 0) - - - 7.62mm Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62 мм Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62mm Mk319 - - - Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 20 - Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (M993 AP) - Magazynek 7,62mm 10rd (M993 AP) - Ch. 7.62mm 10Cps (M993 AP) - Cargador de 10 balas de 7.62mm (M993 AP) - Магазин из 10-ти 7,62 мм (M993 бронебойные) - 7,62mm 10-Patronen-Magazin (M993 AP) - 7.62mm 10Rnd Mag (M993 AP) - 7.62 10náb. Zásobník (M993 AP) - Carregador 7.62mm com 10 cartuchos (M993 AP) - 7,62mm 10-lövedékes tár (M993 páncéltörő) - - - 7.62mm AP - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm бронебойные - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm páncéltörő - - - Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 10 - Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (M993 AP) - Magazynek 7,62mm 20rd (M993 AP) - Ch. 7.62mm 20Cps (M993 AP) - Cargador de 20 balas de 7.62mm (M993 AP) - Магазин из 20-ти 7,62 мм (M993 бронебойные) - 7,62mm 20-Patronen-Magazin (M993 AP) - 7.62mm 20Rnd Mag (M993 AP) - 7.62mm 20náb. Zásobník (M993 AP) - Carregador 7.62mm com 20 cartuchos (M993 AP) - 7,62mm 20-lövedékes tár (M993 páncéltörő) - - - 7.62mm AP - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7,62 мм бронебойные - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm páncéltörő - - - Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 - Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20 - Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20 - Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 20 - Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Mk248 Mod 0) - Magazynek 7,62mm 20rd (Mk248 Mod 0) - Ch. 7.62mm 20Cps (Mk248 Mod 0) - Cargador de 20 balas de 7.62mm (Mk248 Mod 0) - Магазин из 20-ти 7,62 мм (Mk248 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk248 Mod 0) - 7.62mm 20Rnd Mag (Mk248 Mod 0) - 7.62mm 20náb. Zásobník (Mk248 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk248 Mod 0) - 7,62mm 20-lövedékes tár (Mk248 Mod 0) - - - 7.62mm Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62 мм Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62mm Mk248 - - - Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Mk248 Mod 1) - Magazynek 7,62mm 20rd (Mk248 Mod 1) - Ch. 7.62mm 20Cps (Mk248 Mod 1) - Cargador de 20 balas de 7.62mm (Mk248 Mod 1) - Магазин из 20-ти 7,62 мм (Mk248 Mod 1) - 7,62mm 20-Patronen-Magazin (Mk248 Mod 1) - 7.62mm 20Rnd Mag (Mk248 Mod 1) - 7.62mm 20náb. Zásobník (Mk248 Mod 1) - Carregador 7.62mm com 20 cartuchos (Mk248 Mod 1) - 7,62mm 20-lövedékes tár (Mk248 Mod 1) - - - 7.62mm Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62 мм Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62mm Mk248 - - - Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Berger Hybrid OTM) - Magazynek 7,62mm 20rd (Berger Hybrid OTM) - Ch. 7.62 20Cps (Berger Hybrid OTM) - Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) - Магазин из 20-ти 7,62 мм (Berger Hybrid OTM) - 7,62mm 20-Patronen-Magazin (Berger Hybrid OTM) - 7.62mm 20Rnd Mag (Berger Hybrid OTM) - 7.62mm 20náb. Zásobník (Berger Hybrid OTM) - Carregador 7.62mm com 20 cartuchos (Berger Hybrid OTM) - 7,62mm 20-lövedékes tár (Berger Hybrid OTM) - - - 7.62mm OTM - 7,62mm OTM - 7.62mm OTM - 7.62mm OTM - 7,62 мм OTM - 7,62mm OTM - 7.62mm OTM - 7.62mm OTM - 7.62mm OTM - 7,62mm OTM - - - Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20 - - - 6.5x47mm 30Rnd Mag (HPBT Scenar) - Ch. 6.5x47mm 30Cps (HPBT Scenar) - Cargador de 30 balas de 6.5x47mm (HPBT Scenar) - Magazynek 6,5x47mm 30rd (HPBT Scenar) - Магазин из 30-ти 6,5x47 мм (экспансивные Scenar) - 6,5x47mm 30-Patronen-Magazin (HPBT Scenar) - 6.5x47mm 30Rnd Mag (HPBT Scenar) - 6.5x47mm 30náb. Zásobník (HPBT Scenar) - Carregador 6.5x47mm com 30 cartuchos (HPBT Scenar) - 6,5x47mm 30-lövedékes tár (HPBT Scenar) - - - 6.5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6,5mm Lapua - 6,5 мм Lapua - 6,5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6,5mm Lapua - - - Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM - Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 - Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30 - Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM - Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM - Ráže: 6.5x47mm (HPBT Scenar)<br />Munice: 30<br />Použití: MXM - Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM - - - 6.5mm Creedmor 30Rnd Mag - Magazynek 6,5mm Creedmor 30rd - 6.5mm Creedmor 30Rnd Mag - Магазин из 30-ти 6,5 мм Creedmor - 6,5mm Creedmor 30-Patronen-Magazin - Cargador de 30 balas Creedmor de 6.5mm - Ch. 6.5mm Creedmor 30Cps - 6.5mm Creedmor 30náb. Zásobník - Carregador 6.5mm com 30 cartuchos Creedmor - 6,5mm Creedmor 30-lövedékes tár - - - 6.5mm CM - 6.5mm CM - 6.5mm CM - 6,5mm CM - 6,5 мм CM - 6,5mm CM - 6.5mm CM - 6.5mm CM - 6.5mm CM - 6,5mm CM - - - Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM - Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM - Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM - Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM - Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM - Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM - Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM - Ráže: 6.5x47mm Creedmor<br />Munice: 30<br />Použití: MXM - Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM - Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM - - - .338 10Rnd Mag (300gr Sierra MatchKing HPBT) - Ch. .338 10 Cps (300gr Sierra MatchKing HPBT) - Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) - Magazynek .338 10rd (300gr Sierra MatchKing HPBT) - Магазин из 10-ти .338 (300 гран Sierra MatchKing экспансивные) - .338 10-Patronen-Magazin (300gr Sierra MatchKing HPBT) - .338 10Munizioni Mag (300gr Sierra MatchKing HPBT) - .338 10náb. Zásobník (300gr Sierra MatchKing HPBT) - Carregador .338 (300gr Sierra MatchKing HPBT) com 10 cartuchos - .338 10-lövedékes tár (300gr Sierra MatchKing HPBT) - - - .338 HPBT - .338 HPBT - .338 HPBT - .338 HPBT - .338 экспансивные - .338 HPBT - .338 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 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10 - Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10 - Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10 - Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munice: 10 - Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10 - - - .338 10Rnd Mag (API526) - Ch. .338 10Cps (API526) - Cargador de 10 balas de .338 (API526) - Magazynek .338 10rd (API526) - Магазин из 10-ти .338 (API526) - .338 10-Patronen-Magazin (API526) - .338 10Rnd Mag (API526) - .338 10náb. Zásobník (API526) - Carregador .338 (API526) com 10 cartuchos - .338 10-lövedékes tár (API526) - - - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 páncéltörő - - - Caliber: 8.6x70mm (API526)<br />Rounds: 10 - Calibre: 8.6x70mm (API526)<br />Cartouches: 10 - Calibre: 8.6x70mm (API526)<br />Balas: 10 - Kaliber: 8,6x70mm (API526)<br />Pociski: 10 - Калибр: 8,6x70 мм (API526)<br />Патронов: 10 - Kaliber: 8,6x70mm (API526)<br />Patronen: 10 - Calibro: 8.6x70mm (API526)<br />Munizioni: 10 - Ráže: 8.6x70mm (API526)<br />Munice: 10 - Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10 - Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10 - - - 12.7x99mm 5Rnd Mag - Ch. 12.7x99mm 5Cps - Cargador de 5 balas de 12.7x99mm - Magazynek 12,7x99mm 5rd - Магазин из 5-ти 12,7x99 мм - 12,7x99mm 5-Patronen-Magazin - 12.7x99mm 5Rnd Mag - 12.7x99mm 5náb. Zásobník - Carregador 12.7x99mm com 5 cartuchos - 12,7x99mm 5-lövedékes tár - - - 12.7mm - 12.7mm - 12.7mm - 12,7mm - 12,7 мм - 12,7mm - 12.7mm - 12.7mm - 12.7mm - 12,7mm - - - Caliber: 12.7x99mm<br />Rounds: 5 - Calibre: 12.7x99mm<br />Cartouches: 5 - Calibre: 12.7x99mm<br />Balas: 5 - Kaliber: 12,7x99mm<br />Pociski: 5 - Калибр: 12,7x99 мм<br />Патронов: 5 - Kaliber: 12,7x99mm<br />Patronen: 5 - Calibro: 12.7x99mm<br />Munizioni: 5 - Ráže: 12.7x99mm<br />Munice: 5 - Calibre: 12.7x99mm<br/>Cartuchos: 5 - Kaliber: 12,7x99mm<br />Lövedékek: 5 - - - 12.7x99mm API 5Rnd Mag - Ch. 12.7x99mm API 5Cps - Cargador de 5 balas de 12.7x99mm API - Magazynek 12,7x99mm API 5rd - 12.7x99mm API 5Rnd Mag - Магазин из 5-ти 12,7x99 мм (бронебойно-зажигательные) - 12,7x99mm 5-Patronen-Magazin (API) - 12.7x99mm API 5náb. Zásobník - Carregador 12.7x99mm API com 5 cartuchos - 12,7x99mm 5-lövedékes tár (páncéltörő-gyújtó) - - - 12.7mm API - 12.7mm API - 12.7mm API - 12,7mm API - 12.7mm API - 12.7 мм бронебойно-зажигательные - 12,7mm API - 12.7mm API - 12.7mm API - 12,7mm páncéltörő-gyújtó - - - Caliber: 12.7x99mm API<br />Rounds: 5 - Calibre: 12.7x99mm API<br />Cartouches: 5 - Calibre: 12.7x99mm API<br />Balas: 5 - Kaliber: 12,7x99mm API<br />Pociski: 5 - Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5 - Kaliber:12,7x99mm API<br />Patronen: 5 - Calibro: 12.7x99mm API<br />Munizioni: 5 - Ráže: 12.7x99mm API<br />Munice: 5 - Calibre: 12.7x99mm API<br/>Cartuchos: 5 - Kaliber: 12,7x99mm API<br />Lövedékek: 5 - - - 12.7x99mm 5Rnd Mag (AMAX) - Ch. 12.7x99mm 5Cps (AMAX) - Cargador de 5 balas de 12.7x99mm (AMAX) - Magazynek 12,7x99mm 5rd (AMAX) - Магазин из 5-ти 12,7x99 мм (A-MAX) - 12,7x99mm 5-Patronen-Magazin (AMAX) - 12.7x99mm 5Rnd Mag (AMAX) - 12.7x99mm 5náb. Zásobník (AMAX) - Carregador 12.7x99mm (AMAX) com 5 cartuchos - 12,7x99mm 5-lövedékes tár (AMAX) - - - 12.7mm - 12.7mm - 12.7mm - 12,7mm - 12,7 мм - 12,7mm - 12.7mm - 12.7mm - 12.7mm - 12,7mm - - - Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 - Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 - Calibre: 12.7x99mm (AMAX)<br />Balas: 5 - Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5 - Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5 - Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5 - Kaliber:12,7x99mm (AMAX)<br />Patronen: 5 - Ráže: 12.7x99mm (AMAX)<br />Munice: 5 - Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 - Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 - - - [ACE] Ammo Supply Crate - [ACE] Skrzynka z amunicją - [ACE] Caja de suministros de munición - [ACE] Munitionskiste - [ACE] Bedna s municí - [ACE] Caixa com suprimentos de munição - [ACE] Lőszeres láda - - + + + + + + 6.5mm 30Rnd Tracer IR-DIM Mag + 6,5mm Nyomjelző IR-DIM 30-as Tár + 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 6,5mm + Ch. 6,5mm 30Cps Traçantes IR-DIM + Magazynek 6,5mm 30rd Smugacz IR-DIM + 6.5mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 6,5mm + Caricatore 6.5mm 30Rnd Traccianti IR-DIM + Магазин из 30-ти 6,5 мм ИК-трассирующих + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + + + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + 6.5mm 30Rnd SD Mag + 6,5mm Halk 30-as Tár + 6,5mm 30-Patronen-Magazin SD + Cargador de 30 balas SD de 6,5mm + Ch. 6,5mm 30Cps SD + Magazynek 6,5mm 30rd SD + 6.5mm 30náb. SD Zásobník + Carregador de 30 projéteis SD de 6,5mm + Caricatore 6.5mm 30Rnd Sil. + Магазин из 30-ти 6,5 мм дозвуковых + + + 6.5mm SD + 6,5mm Halk + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6.5mm SD + 6,5mm SD + 6.5mm Sil. + 6,5 мм дозвуковые + + + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + 6.5mm 30Rnd AP Mag + 6,5mm Páncéltörő 30-as Tár + 6,5mm 30-Patronen-Magazin AP + Cargador de 30 balas AP de 6,5mm + Ch. 6,5mm 30Cps AP + Magazynek 6,5mm 30rd AP + 6.5mm 30náb. AP Zásobník + Carregador de 30 projéteis AP de 6,5mm + Caricatore 6.5mm 30Rnd AP + Магазин из 30-ти 6,5 мм бронебойных + + + 6.5mm AP + 6,5mm Páncéltörő + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6.5mm AP + 6,5mm AP + 6.5mm AP + 6,5 мм бронебойные + + + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + + 6.5mm 30Rnd Tracer IR-DIM Mag + 6,5mm IR-DIM Nyomjelző 30-as Tár + 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 6,5mm + Ch. 6,5mm 30Cps Traçantes IR-DIM + Magazynek 6,5mm 30rd Smugacz IR-DIM + 6.5mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 6,5mm + Caricatore 6.5mm 30Rnd Traccianti IR-DIM + Магазин из 30-ти 6,5 мм ИК-трассирующих + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + + + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba + Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba + + + 6.5mm 30Rnd SD Mag + 6,5mm Halk 30-as Tár + 6,5mm 30-Patronen-Magazin SD + Cargador de 30 balas SD de 6,5mm + Ch. 6,5mm 30Cps SD + Magazynek 6,5mm 30rd SD + 6.5mm 30náb. SD Zásobník + Carregador de 30 projéteis SD de 6,5mm + Caricatore 6.5mm 30Rnd Sil. + Магазин из 30-ти 6,5 мм дозвуковых + + + 6.5mm SD + 6,5mm Halk + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6.5mm SD + 6,5mm SD + 6.5mm Sil. + 6,5 мм дозвуковые + + + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba + Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba + + + 6.5mm 30Rnd AP Mag + 6,5mm Páncéltörő 30-as Tár + 6,5mm 30-Patronen-Magazin AP + Cargador de 30 balas AP de 6,5mm + Ch. 6,5mm 30Cps AP + Magazynek 6,5mm 30rd AP + 6.5mm 30náb. AP Zásobník + Carregador de 30 projéteis AP de 6,5mm + Caricatore 6.5mm 30Rnd AP + Магазин из 30-ти 6,5 мм бронебойных + + + 6.5mm AP + 6,5mm Páncéltörő + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6.5mm AP + 6,5mm AP + 6.5mm AP + 6,5 мм бронебойные + + + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba + Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba + + + + 5.56mm 30rnd Tracer IR-DIM Mag + 5,56mm Nyomjelző IR-DIM 30-as Tár + 5,56mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 5,56mm + Ch. 5,56mm 30Cps Traçantes IR-DIM + Magazynek 5,56mm 30rd Smugacz IR-DIM + 5.56mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 5,56mm + Caricatore 5.56mm 30rnd Traccianti IR-DIM + Магазин из 30-ти 5,56 мм ИК-трассирующих + + + 5.56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5.56mm IR-DIM + 5,56mm IR-DIM + 5.56mm IR-DIM + 5,56 мм ИК-трассирующие + + + Caliber: 5.56x45mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Ráže: 5.56x45mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + + + + 7.62mm 20rnd Tracer Mag + 7,62mm Nyomjelző IR-DIM 20-as Tár + 7,62mm 20-Patronen-Magazin Leuchtspur + Cargador de 20 balas trazadores de 7,62mm + Ch. 7,62mm 20Cps Traçantes + Magazynek 7,62mm 20rd Smugacz + 7.62mm 20náb. Svítící Zásobník + Carregador de 20 projéteis traçantes de 7,62mm + Caricatore 7.62mm 20Rnd Traccianti + Магазин из 20-ти 7,62 мм трассирующих + + + 7.62mm Tracer + 7,62mm Nyomjelző + 7,62mm Leuchtspur + 7,62mm Trazadora + 7,62mm Traçantes + 7,62mm Smugacz + 7.62mm Svítící + 7,62mm Traçante + 7.62mm Traccianti + 7,62 мм трассирущие + + + Caliber: 7.62x51mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Nyomjelző<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm Leuchtspur<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR + + + 7.62mm 20rnd Tracer IR-DIM Mag + 7,62mm Nyomjelző IR-DIM 20-as Tár + 7,62mm 20-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 20 balas trazadoras IR-DIM de 7,62mm + Ch. 7,62mm 20Cps Traçantes IR-DIM + Magazynek 7,62mm 20rd Smugacz IR-DIM + 7.62mm 20náb. Svítící IR-DIM Zásobník + Carregador de 20 projéteis IR-DIM de 7,62mm + Caricatore 7.62mm 20rnd Traccianti IR-DIM + Магазин из 20-ти 7,62 мм ИК-трассирующих + + + 7.62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7.62mm IR-DIM + 7,62mm IR-DIM + 7.62mm IR-DIM + 7,62 мм ИК-трассирующие + + + Caliber: 7.62x51mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Nyomjelző IR-DIM<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm Leuchtspur IR-DIM<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR + + + 7.62mm 20Rnd SD Mag + 7,62mm Halk 20-as Tár + 7,62mm 20-Patronen-Magazin SD + Cargador de 20 balas SD de 7,62mm + Ch. 7,62mm 20Cps SD + Magazynek 7,62mm 20rd SD + 7.62mm 20náb. SD Zásobník + Carregador de 20 projéteis SD de 7,62mm + Caricatore 7.62mm 20Rnd Sil. + Магазин из 20-ти 7,62 мм дозвуковых + + + 7.62mm SD + 7,62mm Halk + 7,62mm SD + 7,62mm SD + 7,62mm SD + 7,62mm SD + 7.62mm SD + 7,62mm SD + 7.62mm Sil. + 7,62 мм дозвуковые + + + Caliber: 7.62x51mm SD<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Halk<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm SD<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm SD<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR + + + + .338 NM 130Rnd Tracer Belt + .338 NM 130-Patronen-Gurt Leuchtspur + Taśma .338 NM 130rd Smugacz + Bande .338 NM 130Cps Traçante + Cinta de 130 balas trazadoras de .338 NM + Лента из 130-ти .338 NM трассирующих + .338 NM 130Rnd Tracciante Belt + .338 NM 130náb. Svítící Pás + Cinto de munição .338 NM com 130 cartuchos + .338 NM 130-lövedékes nyomkövető heveder + + + .338 NM Tracer + .338 NM Leuchtspur + .338 NM Tracer + .338 NM Svítící + .338 NM Traçante + .338 NM Trazadora + .338 NM трассирующие + .338 NM 130Rnd Tracciante + .338 NM Traçante + .338 NM nyomkövető + + + Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Leuchtspur<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG + Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG + Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum Svítící<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG + + + .338 NM 130Rnd IR-DIM Belt + .338 NM 130-Patronen-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 + Лента из 130-ти .338 NM ИК-трассирующих + .338 NM 130Rnd IR-DIM Belt + .338 NM 130náb. IR-DIM Pás + Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos + .338 NM 130-lövedékes infravörös nyomkövető heveder + + + .338 NM IR-DIM + .338 LM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM ИК-трассирующие + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM infravörös nyomkövető + + + Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG + Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG + Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum Svítící IR-DIM<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG + + + .338 NM 130Rnd AP Belt + .338 NM 130-Patronen-Gurt Hartkern + Taśma .338 NM 130rd AP + Bande .338 NM 130Cps AP + Cinta de 130 balas AP de .338 NM + Лента из 130-ти .338 NM бронебойных + .338 NM 130Rnd AP Belt + .338 NM 130náb. AP Pás + Cinto de munição .338 NM com 130 cartuchos AP + .338 NM 130-lövedékes páncéltörő heveder + + + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM бронебойные + .338 NM AP + .338 NM AP + .338 NM páncéltörő + + + Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Hartkern<br />Patronen: 130<br />Eingesetzt von: SPMG + Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG + Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé avec: SPMG + Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG + Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum AP<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG + + + + 9.3mm 10Rnd Tracer Mag + 9,3mm 10-Patronen-Magazin Leuchtspur + Magazynek 9.3mm 10rd Smugacz + Ch. 9.3mm 10Cps Traçante + Cargador de 10 balas trazadoras de 9.3mm + Магазин из 10-ти 9,3 мм трассирующих + 9.3mm 10Rnd Tracer Mag + 9.3mm 10náb. Svítící Zásobník + Carregador de 10 cartuchos 9.3mm traçantes + 9,3mm 10-lövedékes nyomkövető tár + + + 9.3mm Tracer + 9,3mm Leuchtspur + 9,3mm Smugacz + 9.3mm Svítící + 9.3mm Traçante + 9.3mm Trazadora + 9,3 мм трассирующие + 9.3mm Tracer + 9.3mm Traçante + 9,3mm nyomkövető + + + Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus + Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus + Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus + Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus + Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus + Ráže: 9.3x64mm Svítící<br />Munice: 10<br />Použití: Cyrus + Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus + Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus + + + 9.3mm 10Rnd Tracer IR-DIM Mag + 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM + Magazynek 9,3mm 10rd Smugacz IR-DIM + Ch. 9.3mm 10Cps Traçante IR-DIM + Cargador de 10 balas trazadoras IR-DIM de 9.3mm + Магазин из 10-ти 9,3 мм ИК-трассирующих + 9.3mm 10Rnd Tracciante IR-DIM Mag + 9.3mm 10náb. Svítící IR-DIM Zásobník + Carregador de 10 cartuchos 9.3mm traçantes IR-DIM + 9,3mm 10-lövedékes infravörös nyomkövető tár + + + 9.3mm IR-DIM + 9,3mm IR-DIM + 9,3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3 мм ИК-трассирующие + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3mm infravörös nyomkövető + + + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus + Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus + Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus + Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus + Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus + Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 10<br />Použití: Cyrus + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus + Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus + + + + 9.3mm 150Rnd Tracer Belt + 9,3mm 150-Patronen-Gurt Leuchtspur + Taśma 9,3mm 150rd Smugacz + Bande 9.3mm 150Cps Traçante + Cinta de 150 balas trazadoras de 9.3mm + Лента из 150-ти 9,3 мм трассирующих + 9.3mm 150Rnd Tracer Belt + 9.3mm 150náb. Svítící Pás + Cinto de munição traçante 9.3mm com 150 cartuchos + 9,3mm 150-lövedékes nyomkövető heveder + + + 9.3mm Tracer + 9,3mm Leuchtspur + 9,3mm Smugacz + 9.3mm Svítící + 9.3mm Traçante + 9.3mm Trazadora + 9,3 мм трассирующие + 9.3mm Tracciante + 9.3mm Traçante + 9,3mm nyomkövető + + + Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm Svítící<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid + + + 9.3mm 150Rnd Tracer IR-DIM Belt + 9,3mm 150-Patronen-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 + Лента из 150-ти 9,3 мм ИК-трассирующих + 9.3mm 150Rnd Tracciante IR-DIM Belt + 9.3mm 150náb. Svítící IR-DIM Pás + Cinto de munição traçante 9.3mm IR-DIM com 150 cartuchos + 9,3mm 150-lövedékes infravörös nyomkövető heveder + + + 9.3mm IR-DIM + 9,3mm IR-DIM + 9,3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3 мм ИК-трассирующие + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3mm infravörös nyomkövető + + + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid + + + 9.3mm 150Rnd AP Belt + 9,3mm 150-Patronen-Gurt Hartkern + Taśma 9,3mm 150rd AP + Bande 9.3mm 150Cps AP + Cinta de 150 balas AP de 9.3mm + Лента из 150-ти 9,3 мм бронебойных + 9.3mm 150Rnd AP Belt + 9.3mm 150náb. AP Pás + Cinto de munição 9.3mm AP com 150 cartuchos + 9,3mm 150-lövedékes páncéltörő heveder + + + 9.3mm AP + 9,3mm AP + 9,3mm AP + 9.3mm AP + 9.3mm AP + 9.3mm AP + 9,3 мм бронебойные + 9.3mm AP + 9.3mm AP + 9,3mm páncéltörő + + + Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm AP<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid + + + 9x19mm 16Rnd Mag + Magazynek 9x19mm 16rd + Ch. 9x19mm 16Cps + Cargador de 16 balas de 9x19mm + Магазин из 16-ти 9х19 мм + 9x19mm 20-Patronen-Magazin + 9x19mm 16Rnd Mag + 9x19mm 16náb. Zásobník + Carregador de 16 cartuchos 9x19mm + 9x19mm 16-lövedékes tár + + + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9х19 мм + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9x19mm + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 16rd + Ch. 9x19mm 30Cps + Cargador de 16 balas de 9x19mm + Магазин из 16-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 16 cartuchos 9x19mm + 9x19mm 16-lövedékes tár + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 30rd + Ch. 9x19mm 30Cps + Cargador de 30 balas de 9x19mm + Магазин из 30-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 30 cartuchos 9x19mm + 9x19mm 30-lövedékes tár + + + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9х19 мм + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9x19mm + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 30rd + Ch. 9x19mm 30Cps + Cargador de 30 balas de 9x19mm + Магазин из 30-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 30 cartuchos 9x19mm + 9x19mm 30-lövedékes tár + + + 7.62x54mm 10Rnd Tracer Mag + Magazynek 7,62x54mm 10rd Smugacz + Ch. 7.62x54mm 10Rnd Traçante + Cargador de 10 balas trazadoras de 7.62x54mm + Магазин из 10-ти 7,62 мм ИК-трассирующих + 7,62x54mm 10-Patronen-Magazin Leuchtspur + 7.62x54mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54mm 10náb. Svítící Zásobník + Carregador com 10 cartuchos 7.62x54mm Traçante + 7,62x54mm 10-lövedékes nyomkövető tár + + + 7.62mm + 7,62mm + 7.62mm + 7.62mm + 7,62 мм + 7,62mm + 7.62mm + 7.62mm + 7.62mm + 7,62mm + + + 7.62x54mm 10Rnd Tracer Mag + Magazynek 7,62x54mm 10rd Smugacz + Ch. 7.62x54mm 10Cps Traçante + Cargador de 10 balas trazadoras de 7.62x54mm + Магазин из 10-ти 7,62 мм ИК-трассирующих + 7,62x54mm 10-Patronen-Magazin Leuchtspur + 7.62x54mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54mm 10náb. Svítící Zásobník + Carregador com 10 cartuchos 7.62x54mm Traçante + 7,62x54mm 10-lövedékes nyomkövető tár + + + 6.5mm 100Rnd Tracer IR-DIM Mag + Magazynek 6,5mm 100rd Smugacz IR-DIM + Ch. 6.5mm 100Rnd Traçante IR-DIM + Cargador de 100 balas trazadoras IR-DIM de 6.5mm + Магазин из 100 6,5 мм ИК-трассирующих + 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur + 6.5mm 100Munizioni Traccianti IR-DIM Mag + 6.5mm 100náb. Svítící IR-DIM Zásobník + Carregador com 100 cartuchos 6.5mm IR-DIM Traçante + 6,5mm 100-lövedékes infravörös nyomkövető tár + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5mm infravörös nyomkövető + + + 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW + Magazynek 6,5mm 100rd Smugacz IR-DIM + Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW + Cargador de 100 balas trazadoras IR-DIM de 6.5mm + Магазин из 100 6,5 мм ИК-трассирующих + 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW + 6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW + 6.5mm 100náb. Svítící IR-DIM Zásobník<br />Munice: 100<br />Použití: MX LSW + Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW + 6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW + + + 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 + Магазин из 200-т 6,5 мм ИК-трассирующих + 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur + 6.5mm 200Rnd Tracer IR-DIM Belt + 6.5mm 200náb. Svítící IR-DIM Pás + Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos + 6,5mm 200-lövedékes infravörös nyomkövető heveder + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5mm infravörös nyomkövető + + + 6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG + Magazynek 6,5mm 200rd Smugacz IR-DIM + Bande 6.5mm 200Cps Traçante IR-DIM<br />Cartouches: 200<br />Utilisé avec: Stoner 99 LMG + Cinta de 200 balas trazadoras IR-DIM de 6.5mm + Магазин из 200-т 6,5 мм ИК-трассирующих + 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG + 6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG + 6.5mm 200náb. Svítící IR-DIM Pás<br />Munice: 200<br />Použití: Stoner 99 LMG + Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG + 6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG + + + 5.56mm 30Rnd Mag (Mk262) + Magazynek 5,56mm 30rd Mk262 + 5.56mm 30Cps (Mk262) + Cargador de 30 balas de 5.56mm (Mk262) + Магазин из 30-ти 5.56 мм Mk262 + 5,56mm 30-Patronen-Magazin (Mk262) + 5.56mm 30Rnd Mag (Mk262) + 5.56mm 30náb. Zásobník (Mk262) + Carregador 5.56mm com 30 cartuchos (Mk262) + 5,56mm 30-lövedékes tár (Mk262) + + + 5.56mm Mk262 + 5,56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5,56 мм Mk262 + 5,56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5,56mm Mk262 + + + Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (Mk262)<br />Munice: 30 + Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30 + + + 5.56mm 30Rnd Mag (Mk318) + Magazynek 5,56mm 30rd (Mk318) + Ch. 5.56mm 30Cps (Mk318) + Cargador de 30 balas de 5.56mm (Mk318) + Магазин из 30-ти 5.56 мм (Mk318) + 5,56mm 30-Patronen-Magazin (Mk318) + 5.56mm 30Rnd Mag (Mk318) + 5.56mm 30Rnd Zásobník (Mk318) + Carregador 5.56mm com 30 cartuchos (Mk318) + 5,56mm 30-lövedékes tár (Mk318) + + + 5.56mm Mk318 + 5,56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5.56 мм Mk318 + 5,56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5,56mm Mk318 + + + Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (Mk318)<br />Munice: 30 + Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30 + + + 5.56mm 30Rnd Mag (M995 AP) + Magazynek 5,56mm 30rd (M995 AP) + Ch. 5.56mm 30Cps (M995 AP) + Cargador de 30 balas de 5.56mm (M995 AP) + Магазин из 30-ти 5.56 мм (M995 бронебойные) + 5,56mm 30-Patronen-Magazin (M995AP) + 5.56mm 30Rnd Mag (M995 AP) + 5.56mm 30náb. Zásobník (M995 AP) + Carregador 5.56mm com 30 cartuchos (M995 AP) + 5,56mm 30-lövedékes tár (M995 páncéltörő) + + + 5.56mm AP + 5,56mm AP + 5.56mm AP + 5.56mm AP + 5.56 мм бронебойные + 5,56mm AP + 5.56mm AP + 5.56mm AP + 5.56mm M995 AP + 5,56mm páncéltörő + + + Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (M995 AP)<br />Munice: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30 + + + 7.62mm 10Rnd Mag (M118LR) + Magazynek 7,62mm 10rd (M118LR) + Ch. 7.62mm 10Cps (M118LR) + Cargador de 10 balas de 7.62mm (M118LR) + Магазин из 10-ти 7,62 мм (M118LR) + 7,62mm 10-Patronen-Magazin (M118LR) + 7.62mm 10Rnd Mag (M118LR) + 7.62mm 10náb. Zásobník (M118LR) + Carregador 7.62mm com 10 cartuchos (M118LR) + 7,62mm 10-lövedékes tár (M118LR) + + + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62 мм M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62mm M118LR + + + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 10 + Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (M118LR) + Magazynek 7,62mm 20rd (M118LR) + Ch. 7.62mm 20Cps (M118LR) + Cargador de 20 balas de 7.62mm (M118LR) + Магазин из 20-ти 7,62 мм (M118LR) + 7,62mm 20-Patronen-Magazin (M118LR) + 7.62mm 20Rnd Mag (M118LR) + 7.62mm 20náb. Zásobník (M118LR) + Carregador 7.62mm com 20 cartuchos (M118LR) + 7,62mm 20-lövedékes tár (M118LR) + + + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62 мм M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62mm M118LR + + + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 20 + Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (Mk316 Mod 0) + Magazynek 7,62mm 10rd (Mk316 Mod 0) + Ch. 7.62mm 10Cps (Mk316 Mod 0) + Cargador de 10 balas de 7.62mm (Mk316 Mod 0) + Магазин из 10-ти 7,62 мм (Mk316 Mod 0) + 7,62mm 10-Patronen-Magazin (Mk316 Mod 0) + 7.62mm 10Rnd Mag (Mk316 Mod 0) + 7.62mm 10náb. Zásobník (Mk316 Mod 0) + Carregador 7.62mm com 10 cartuchos (Mk316 Mod 0) + 7,62mm 10-lövedékes tár (Mk316 Mod 0) + + + 7.62mm Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62 мм Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62mm Mk316 + + + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 10 + Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (Mk316 Mod 0) + Magazynek 7,62mm 20rd (Mk316 Mod 0) + Ch. 7.62mm 20Cps (Mk316 Mod 0) + Cargador de 20 balas de 7.62mm (Mk316 Mod 0) + Магазин из 20-ти 7,62 мм (Mk316 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk316 Mod 0) + 7.62mm 20Rnd Mag (Mk316 Mod 0) + 7.62mm 20náb. Zásobník (Mk316 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk316 Mod 0) + 7,62mm 20-lövedékes tár (Mk316 Mod 0) + + + 7.62mm Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62 мм Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62mm Mk316 + + + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 20 + Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 10rd (Mk319 Mod 0) + Ch. 7.62mm 10Cps (Mk319 Mod 0) + Cargador de 10 balas de 7.62mm (Mk319 Mod 0) + Магазин из 10-ти 7,62 мм (Mk319 Mod 0) + 7,62mm 10-Patronen-Magazin (Mk319 Mod 0) + 7.62mm 10Rnd Mag (Mk319 Mod 0) + 7.62mm 10náb. Zásobník (Mk319 Mod 0) + Carregador 7.62mm com 10 cartuchos (Mk319 Mod 0) + 7,62mm 10-lövedékes tár (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62 мм Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62mm Mk319 + + + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 10 + Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 20rd (Mk319 Mod 0) + Ch. 7.62mm 20Cps (Mk319 Mod 0) + Cargador de 20 balas de 7.62mm (Mk319 Mod 0) + Магазин из 20-ти 7,62 мм (Mk319 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk319 Mod 0) + 7.62mm 20Rnd Mag (Mk319 Mod 0) + 7.62mm 20náb. Zásobník (Mk319 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk319 Mod 0) + 7,62mm 20-lövedékes tár (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62 мм Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62mm Mk319 + + + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 20 + Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (M993 AP) + Magazynek 7,62mm 10rd (M993 AP) + Ch. 7.62mm 10Cps (M993 AP) + Cargador de 10 balas de 7.62mm (M993 AP) + Магазин из 10-ти 7,62 мм (M993 бронебойные) + 7,62mm 10-Patronen-Magazin (M993 AP) + 7.62mm 10Rnd Mag (M993 AP) + 7.62 10náb. Zásobník (M993 AP) + Carregador 7.62mm com 10 cartuchos (M993 AP) + 7,62mm 10-lövedékes tár (M993 páncéltörő) + + + 7.62mm AP + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm бронебойные + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm páncéltörő + + + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 10 + Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (M993 AP) + Magazynek 7,62mm 20rd (M993 AP) + Ch. 7.62mm 20Cps (M993 AP) + Cargador de 20 balas de 7.62mm (M993 AP) + Магазин из 20-ти 7,62 мм (M993 бронебойные) + 7,62mm 20-Patronen-Magazin (M993 AP) + 7.62mm 20Rnd Mag (M993 AP) + 7.62mm 20náb. Zásobník (M993 AP) + Carregador 7.62mm com 20 cartuchos (M993 AP) + 7,62mm 20-lövedékes tár (M993 páncéltörő) + + + 7.62mm AP + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7,62 мм бронебойные + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm páncéltörő + + + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 + Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20 + Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20 + Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 20 + Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Mk248 Mod 0) + Magazynek 7,62mm 20rd (Mk248 Mod 0) + Ch. 7.62mm 20Cps (Mk248 Mod 0) + Cargador de 20 balas de 7.62mm (Mk248 Mod 0) + Магазин из 20-ти 7,62 мм (Mk248 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk248 Mod 0) + 7.62mm 20Rnd Mag (Mk248 Mod 0) + 7.62mm 20náb. Zásobník (Mk248 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk248 Mod 0) + 7,62mm 20-lövedékes tár (Mk248 Mod 0) + + + 7.62mm Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62 мм Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62mm Mk248 + + + Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Mk248 Mod 1) + Magazynek 7,62mm 20rd (Mk248 Mod 1) + Ch. 7.62mm 20Cps (Mk248 Mod 1) + Cargador de 20 balas de 7.62mm (Mk248 Mod 1) + Магазин из 20-ти 7,62 мм (Mk248 Mod 1) + 7,62mm 20-Patronen-Magazin (Mk248 Mod 1) + 7.62mm 20Rnd Mag (Mk248 Mod 1) + 7.62mm 20náb. Zásobník (Mk248 Mod 1) + Carregador 7.62mm com 20 cartuchos (Mk248 Mod 1) + 7,62mm 20-lövedékes tár (Mk248 Mod 1) + + + 7.62mm Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62 мм Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62mm Mk248 + + + Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Berger Hybrid OTM) + Magazynek 7,62mm 20rd (Berger Hybrid OTM) + Ch. 7.62 20Cps (Berger Hybrid OTM) + Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) + Магазин из 20-ти 7,62 мм (Berger Hybrid OTM) + 7,62mm 20-Patronen-Magazin (Berger Hybrid OTM) + 7.62mm 20Rnd Mag (Berger Hybrid OTM) + 7.62mm 20náb. Zásobník (Berger Hybrid OTM) + Carregador 7.62mm com 20 cartuchos (Berger Hybrid OTM) + 7,62mm 20-lövedékes tár (Berger Hybrid OTM) + + + 7.62mm OTM + 7,62mm OTM + 7.62mm OTM + 7.62mm OTM + 7,62 мм OTM + 7,62mm OTM + 7.62mm OTM + 7.62mm OTM + 7.62mm OTM + 7,62mm OTM + + + Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20 + + + 6.5x47mm 30Rnd Mag (HPBT Scenar) + Ch. 6.5x47mm 30Cps (HPBT Scenar) + Cargador de 30 balas de 6.5x47mm (HPBT Scenar) + Magazynek 6,5x47mm 30rd (HPBT Scenar) + Магазин из 30-ти 6,5x47 мм (экспансивные Scenar) + 6,5x47mm 30-Patronen-Magazin (HPBT Scenar) + 6.5x47mm 30Rnd Mag (HPBT Scenar) + 6.5x47mm 30náb. Zásobník (HPBT Scenar) + Carregador 6.5x47mm com 30 cartuchos (HPBT Scenar) + 6,5x47mm 30-lövedékes tár (HPBT Scenar) + + + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + 6,5 мм Lapua + 6,5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + + + Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM + Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 + Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30 + Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM + Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM + Ráže: 6.5x47mm (HPBT Scenar)<br />Munice: 30<br />Použití: MXM + Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM + + + 6.5mm Creedmor 30Rnd Mag + Magazynek 6,5mm Creedmor 30rd + 6.5mm Creedmor 30Rnd Mag + Магазин из 30-ти 6,5 мм Creedmor + 6,5mm Creedmor 30-Patronen-Magazin + Cargador de 30 balas Creedmor de 6.5mm + Ch. 6.5mm Creedmor 30Cps + 6.5mm Creedmor 30náb. Zásobník + Carregador 6.5mm com 30 cartuchos Creedmor + 6,5mm Creedmor 30-lövedékes tár + + + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + 6,5 мм CM + 6,5mm CM + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + + + Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM + Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM + Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM + Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM + Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM + Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM + Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM + Ráže: 6.5x47mm Creedmor<br />Munice: 30<br />Použití: MXM + Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM + Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM + + + .338 10Rnd Mag (300gr Sierra MatchKing HPBT) + Ch. .338 10 Cps (300gr Sierra MatchKing HPBT) + Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) + Magazynek .338 10rd (300gr Sierra MatchKing HPBT) + Магазин из 10-ти .338 (300 гран Sierra MatchKing экспансивные) + .338 10-Patronen-Magazin (300gr Sierra MatchKing HPBT) + .338 10Munizioni Mag (300gr Sierra MatchKing HPBT) + .338 10náb. Zásobník (300gr Sierra MatchKing HPBT) + Carregador .338 (300gr Sierra MatchKing HPBT) com 10 cartuchos + .338 10-lövedékes tár (300gr Sierra MatchKing HPBT) + + + .338 HPBT + .338 HPBT + .338 HPBT + .338 HPBT + .338 экспансивные + .338 HPBT + .338 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 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10 + Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10 + Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10 + Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munice: 10 + Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10 + + + .338 10Rnd Mag (API526) + Ch. .338 10Cps (API526) + Cargador de 10 balas de .338 (API526) + Magazynek .338 10rd (API526) + Магазин из 10-ти .338 (API526) + .338 10-Patronen-Magazin (API526) + .338 10Rnd Mag (API526) + .338 10náb. Zásobník (API526) + Carregador .338 (API526) com 10 cartuchos + .338 10-lövedékes tár (API526) + + + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 páncéltörő + + + Caliber: 8.6x70mm (API526)<br />Rounds: 10 + Calibre: 8.6x70mm (API526)<br />Cartouches: 10 + Calibre: 8.6x70mm (API526)<br />Balas: 10 + Kaliber: 8,6x70mm (API526)<br />Pociski: 10 + Калибр: 8,6x70 мм (API526)<br />Патронов: 10 + Kaliber: 8,6x70mm (API526)<br />Patronen: 10 + Calibro: 8.6x70mm (API526)<br />Munizioni: 10 + Ráže: 8.6x70mm (API526)<br />Munice: 10 + Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10 + Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10 + + + 12.7x99mm 5Rnd Mag + Ch. 12.7x99mm 5Cps + Cargador de 5 balas de 12.7x99mm + Magazynek 12,7x99mm 5rd + Магазин из 5-ти 12,7x99 мм + 12,7x99mm 5-Patronen-Magazin + 12.7x99mm 5Rnd Mag + 12.7x99mm 5náb. Zásobník + Carregador 12.7x99mm com 5 cartuchos + 12,7x99mm 5-lövedékes tár + + + 12.7mm + 12.7mm + 12.7mm + 12,7mm + 12,7 мм + 12,7mm + 12.7mm + 12.7mm + 12.7mm + 12,7mm + + + Caliber: 12.7x99mm<br />Rounds: 5 + Calibre: 12.7x99mm<br />Cartouches: 5 + Calibre: 12.7x99mm<br />Balas: 5 + Kaliber: 12,7x99mm<br />Pociski: 5 + Калибр: 12,7x99 мм<br />Патронов: 5 + Kaliber: 12,7x99mm<br />Patronen: 5 + Calibro: 12.7x99mm<br />Munizioni: 5 + Ráže: 12.7x99mm<br />Munice: 5 + Calibre: 12.7x99mm<br/>Cartuchos: 5 + Kaliber: 12,7x99mm<br />Lövedékek: 5 + + + 12.7x99mm API 5Rnd Mag + Ch. 12.7x99mm API 5Cps + Cargador de 5 balas de 12.7x99mm API + Magazynek 12,7x99mm API 5rd + 12.7x99mm API 5Rnd Mag + Магазин из 5-ти 12,7x99 мм (бронебойно-зажигательные) + 12,7x99mm 5-Patronen-Magazin (API) + 12.7x99mm API 5náb. Zásobník + Carregador 12.7x99mm API com 5 cartuchos + 12,7x99mm 5-lövedékes tár (páncéltörő-gyújtó) + + + 12.7mm API + 12.7mm API + 12.7mm API + 12,7mm API + 12.7mm API + 12.7 мм бронебойно-зажигательные + 12,7mm API + 12.7mm API + 12.7mm API + 12,7mm páncéltörő-gyújtó + + + Caliber: 12.7x99mm API<br />Rounds: 5 + Calibre: 12.7x99mm API<br />Cartouches: 5 + Calibre: 12.7x99mm API<br />Balas: 5 + Kaliber: 12,7x99mm API<br />Pociski: 5 + Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5 + Kaliber:12,7x99mm API<br />Patronen: 5 + Calibro: 12.7x99mm API<br />Munizioni: 5 + Ráže: 12.7x99mm API<br />Munice: 5 + Calibre: 12.7x99mm API<br/>Cartuchos: 5 + Kaliber: 12,7x99mm API<br />Lövedékek: 5 + + + 12.7x99mm 5Rnd Mag (AMAX) + Ch. 12.7x99mm 5Cps (AMAX) + Cargador de 5 balas de 12.7x99mm (AMAX) + Magazynek 12,7x99mm 5rd (AMAX) + Магазин из 5-ти 12,7x99 мм (A-MAX) + 12,7x99mm 5-Patronen-Magazin (AMAX) + 12.7x99mm 5Rnd Mag (AMAX) + 12.7x99mm 5náb. Zásobník (AMAX) + Carregador 12.7x99mm (AMAX) com 5 cartuchos + 12,7x99mm 5-lövedékes tár (AMAX) + + + 12.7mm + 12.7mm + 12.7mm + 12,7mm + 12,7 мм + 12,7mm + 12.7mm + 12.7mm + 12.7mm + 12,7mm + + + Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 + Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 + Calibre: 12.7x99mm (AMAX)<br />Balas: 5 + Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5 + Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5 + Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5 + Kaliber:12,7x99mm (AMAX)<br />Patronen: 5 + Ráže: 12.7x99mm (AMAX)<br />Munice: 5 + Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 + Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 + + + [ACE] Ammo Supply Crate + [ACE] Skrzynka z amunicją + [ACE] Caja de suministros de munición + [ACE] Munitionskiste + [ACE] Bedna s municí + [ACE] Caixa com suprimentos de munição + [ACE] Lőszeres láda + [ACE] Ящик с боеприпасами + + \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 41391fa96b..97cd3d3be5 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,249 +1,261 @@ - - - - - Take Prisoner - Gefangen nehmen - Tomar prisionero - Capturer le prisonnier - Aresztuj - Zajmout Osobu - Arresta il prigioniero - Tomar Prisioneiro - Foglyul ejtés - Взять в плен - - - Free Prisoner - Gefangenen freilassen - Liberar prisionero - Wypuść więźnia - Libérer le prisonnier - Osvobodit Zajatce - Libera il prigioniero - Libertar Prisioneiro - Fogoly szabadon engedése - Освободить пленника - - - Escort Prisoner - Gefangenen eskortieren - Escoltar prisionero - Eskortuj więźnia - Escorter le prisonnier - Eskortovat Zajatce - Scorta il Prigioniero - Escoltar Prisioneiro - Fogoly kísérése - Конвоировать пленника - - - Release Prisoner - Gefangenen loslassen - Soltar prisionero - Anuluj eskortowanie - Relâcher le prisonnier - Uvolnit Zajatce - Rilascia il Prigioniero - Largar Prisioneiro - Fogoly elengedése - Прекратить конвоирование - - - You need to take him as prisoner first! - Du musst ihn zuerst gefangen nehmen. - Necesitas hacerle prisionero primero! - Najpierw musisz go aresztować! - Vous devez d'abord le capturer! - Musíš ho nejdříve zajmout! - Prima devi arrestarlo! - Você deve tomá-lo como prisioneiro primeiro! - Először foglyul kell ejtened őt! - Вы должны сначала взять его в плен! - - - Load Captive - Gefangenen einladen - Cargar prisionero - Embarquer le prisonnier - Załaduj więźnia - Naložit zajatce - Fogoly berakása - Загрузить пленного - Embarcar Prisioneiro - Fai salire il prigioniero - - - Unload Captive - Gefangenen ausladen - Descargar prisionero - Débarquer le prisonnier - Wyładuj więźnia - Vyložit zajatce - Fogoly kivevése - Выгрузить пленного - Desembarcar Prisioneiro - Fai scendere il prigioniero - - - Cable Tie - Kabelbinder - Opaska zaciskowa - Precinto - Serflex - Stahovací Pásek - Algema Plástica - Fascietta - Gyorskötöző - Кабельная стяжка - - - Cable ties that allow you to restrain prisoners. - Kabelbinder ermöglichen es, Gefangene zu fesseln. - Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia. - Los precintos permiten maniatar prisioneros - Les Serflex permettent de menotter les prisonniers. - Stahovací pásky vám umožní zadržet vězně. - A algema plástica permite que você contenha prisioneiros. - Fascetta per arrestare i prigionieri - Gyorskötöző, emberek foglyulejtéséhez használható. - Кабельные стяжки позволяют связывать пленников. - - - Inventory of frisked person - Inventar der durchsuchten Person - Inventaire de la fouille - Inventario de la persona cacheada - Motozott személy felszerelése - Inventář prohledávané osoby - Ekwipunek rewidowanej osoby - Инвентарь обысканного человека - Inventário da pessoa revistada - Inventario della persona perquisita - - - Frisk person - Person durchsuchen - Fouiller - Cachear - Prohledávaná osoba - Rewiduj osobę - Motozás - Обыскать человека - Revistar - Perquisisci la persona - - - Surrender - Se rendre - Kapitulieren - Rendirse - Render-se - Vzdát se - Kapituluj - Сдаться - Megadás - Arrenditi - - - Stop Surrendering - Annuler la capitulation - Den Kampf erneut aufnehmen - Dejar de rendirse - Parar de se render - Přestat se vzdávat - Podejmij walkę ponownie - Прекратить сдачу в плен - Megadás abbahagyása - Smetti di arrenderti - - - Make Unit Surrender - Skapituluj jednostkę - Hacer que la unidad se rinda - Einheit kapitulieren lassen - Vzdávající se jednotka - Fazer unidade se render - Egység kapitulálása - - - Sync a unit to make them surrender.<br />Source: ace_captives - Zsynchronizuj z jednostką, aby skapitulowała.<br />Źródło: ace_captives - Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives - Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives - Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives - Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives - Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives - - - Captives Settings - Ustawienia więźniów - Ajustes de prisioneros - Nastavení zajatce - Gefangenen-Einstellungen - Ajustes de prisioneiros - Fogoly-beállítások - - - Controls settings for surrender and cable ties - Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych - Ajustes de control para rendición y precintos - Toto kontroluje nastavení kapitulace a pout - Einstellungen zur Kapitulation und Kabelbindern - Controla as configurações de rendição e abraçadeiras - Szabályozza a kapituláció és bilincselés beállításait - - - Can handcuff own side - Skuwanie sojuszników - Se puede esposar el bando propio - Může spoutat spolubojovníky - Kann Teamkollegen fesseln - Pode algemar o próprio lado - Saját oldal megbilincselhető - - - Can players cabletie units on their own side - Czy gracze mogą skuwać sojuszników? - Pueden los jugadores esposar unidades en su propio bando - Mohou hráči spoutat jednotky na své straně - Können Spieler eigene Einheiten fesseln - Os jogadores podem algemar unidades do seu lado - A játékosok megkötözhetik-e a saját oldalukon lévő egységeket - - - Allow surrendering - Pozwól kapitulować - Permitir rendición - Povolit vzdávání - Kapitulation erlauben - Permite rendição - Kapituláció engedélyezése - - - Players can surrender after holstering their weapon - Gracze mogą skapitulować po schowaniu swojej broni do kabury - Los jugadores pueden rendirse después de enfundar su arma - Hráč se může vzdát poté, co si skryje zbraň - Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben - Jogadores podem se render depois de guardar sua arma - A játékosok megadhatják magukat a fegyverük elrakása után - - - Require surrendering - Wymagaj kapitulacji - - - Require Players to surrender before they can be arrested - Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować - - - Surrendering only - Tylko kapitulacja - - - Surrendering or No weapon - Kapitulacja lub brak broni - - + + + + + Take Prisoner + Gefangen nehmen + Tomar prisionero + Capturer le prisonnier + Aresztuj + Zajmout Osobu + Arresta il prigioniero + Tomar Prisioneiro + Foglyul ejtés + Взять в плен + + + Free Prisoner + Gefangenen freilassen + Liberar prisionero + Wypuść więźnia + Libérer le prisonnier + Osvobodit Zajatce + Libera il prigioniero + Libertar Prisioneiro + Fogoly szabadon engedése + Освободить пленника + + + Escort Prisoner + Gefangenen eskortieren + Escoltar prisionero + Eskortuj więźnia + Escorter le prisonnier + Eskortovat Zajatce + Scorta il Prigioniero + Escoltar Prisioneiro + Fogoly kísérése + Конвоировать пленника + + + Release Prisoner + Gefangenen loslassen + Soltar prisionero + Anuluj eskortowanie + Relâcher le prisonnier + Uvolnit Zajatce + Rilascia il Prigioniero + Largar Prisioneiro + Fogoly elengedése + Прекратить конвоирование + + + You need to take him as prisoner first! + Du musst ihn zuerst gefangen nehmen. + Necesitas hacerle prisionero primero! + Najpierw musisz go aresztować! + Vous devez d'abord le capturer! + Musíš ho nejdříve zajmout! + Prima devi arrestarlo! + Você deve tomá-lo como prisioneiro primeiro! + Először foglyul kell ejtened őt! + Вы должны сначала взять его в плен! + + + Load Captive + Gefangenen einladen + Cargar prisionero + Embarquer le prisonnier + Załaduj więźnia + Naložit zajatce + Fogoly berakása + Загрузить пленного + Embarcar Prisioneiro + Fai salire il prigioniero + + + Unload Captive + Gefangenen ausladen + Descargar prisionero + Débarquer le prisonnier + Wyładuj więźnia + Vyložit zajatce + Fogoly kivevése + Выгрузить пленного + Desembarcar Prisioneiro + Fai scendere il prigioniero + + + Cable Tie + Kabelbinder + Opaska zaciskowa + Precinto + Serflex + Stahovací Pásek + Algema Plástica + Fascietta + Gyorskötöző + Кабельная стяжка + + + Cable ties that allow you to restrain prisoners. + Kabelbinder ermöglichen es, Gefangene zu fesseln. + Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia. + Los precintos permiten maniatar prisioneros + Les Serflex permettent de menotter les prisonniers. + Stahovací pásky vám umožní zadržet vězně. + A algema plástica permite que você contenha prisioneiros. + Fascetta per arrestare i prigionieri + Gyorskötöző, emberek foglyulejtéséhez használható. + Кабельные стяжки позволяют связывать пленников. + + + Inventory of frisked person + Inventar der durchsuchten Person + Inventaire de la fouille + Inventario de la persona cacheada + Motozott személy felszerelése + Inventář prohledávané osoby + Ekwipunek rewidowanej osoby + Инвентарь обысканного человека + Inventário da pessoa revistada + Inventario della persona perquisita + + + Frisk person + Person durchsuchen + Fouiller + Cachear + Prohledávaná osoba + Rewiduj osobę + Motozás + Обыскать человека + Revistar + Perquisisci la persona + + + Surrender + Se rendre + Kapitulieren + Rendirse + Render-se + Vzdát se + Kapituluj + Сдаться + Megadás + Arrenditi + + + Stop Surrendering + Annuler la capitulation + Den Kampf erneut aufnehmen + Dejar de rendirse + Parar de se render + Přestat se vzdávat + Podejmij walkę ponownie + Прекратить сдачу в плен + Megadás abbahagyása + Smetti di arrenderti + + + Make Unit Surrender + Skapituluj jednostkę + Hacer que la unidad se rinda + Einheit kapitulieren lassen + Vzdávající se jednotka + Fazer unidade se render + Egység kapitulálása + Сделать юнита пленным + + + Sync a unit to make them surrender.<br />Source: ace_captives + Zsynchronizuj z jednostką, aby skapitulowała.<br />Źródło: ace_captives + Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives + Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives + Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives + Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives + Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives + Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives + + + Captives Settings + Ustawienia więźniów + Ajustes de prisioneros + Nastavení zajatce + Gefangenen-Einstellungen + Ajustes de prisioneiros + Fogoly-beállítások + Настройки пленения + + + Controls settings for surrender and cable ties + Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych + Ajustes de control para rendición y precintos + Toto kontroluje nastavení kapitulace a pout + Einstellungen zur Kapitulation und Kabelbindern + Controla as configurações de rendição e abraçadeiras + Szabályozza a kapituláció és bilincselés beállításait + Управляет настройками сдачи в плен и связывания + + + Can handcuff own side + Skuwanie sojuszników + Se puede esposar el bando propio + Může spoutat spolubojovníky + Kann Teamkollegen fesseln + Pode algemar o próprio lado + Saját oldal megbilincselhető + Связать союзника + + + Can players cabletie units on their own side + Czy gracze mogą skuwać sojuszników? + Pueden los jugadores esposar unidades en su propio bando + Mohou hráči spoutat jednotky na své straně + Können Spieler eigene Einheiten fesseln + Os jogadores podem algemar unidades do seu lado + A játékosok megkötözhetik-e a saját oldalukon lévő egységeket + Разрешить игрокам связывать юнитов своей стороны + + + Allow surrendering + Pozwól kapitulować + Permitir rendición + Povolit vzdávání + Kapitulation erlauben + Permite rendição + Kapituláció engedélyezése + Сдаться в плен + + + Players can surrender after holstering their weapon + Gracze mogą skapitulować po schowaniu swojej broni do kabury + Los jugadores pueden rendirse después de enfundar su arma + Hráč se může vzdát poté, co si skryje zbraň + Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben + Jogadores podem se render depois de guardar sua arma + A játékosok megadhatják magukat a fegyverük elrakása után + Игроки могут сдаться в плен после того, как уберут оружие + + + Require surrendering + Wymagaj kapitulacji + Требовать пленения + + + Require Players to surrender before they can be arrested + Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować + Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать + + + Surrendering only + Tylko kapitulacja + Только сдавшийся в плен + + + Surrendering or No weapon + Kapitulacja lub brak broni + Сдавшийся или безоружный + + \ No newline at end of file diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index a39fb16f6f..cbf9ab6bd5 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -1,41 +1,50 @@ - - - - - Load - Załaduj - - - Unload - Wyładuj - - - Cargo - Ładunek - - - Cargo Menu - Menu ładunku - - - Cargo space left: %1 - Pozostałe miejsce: %1 - - - Enable Cargo - Aktywuj cargo - - - Enable the load in cargo module - Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. - - - Cargo Settings - Ustawienia cargo - - - Configure the cargo module settings - Skonfiguruj ustawienia modułu cargo. - - + + + + + Load + Załaduj + Загрузить + + + Unload + Wyładuj + Выгрузить + + + Cargo + Ładunek + Грузовой отсек + + + Cargo Menu + Menu ładunku + Грузовой отсек + + + Cargo space left: %1 + Pozostałe miejsce: %1 + Осталось мест: %1 + + + Enable Cargo + Aktywuj cargo + Включить модуль перевозки грузов + + + Enable the load in cargo module + Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. + Включает модуль погрузки и перевозки грузов + + + Cargo Settings + Ustawienia cargo + Перевозка грузов + + + Configure the cargo module settings + Skonfiguruj ustawienia modułu cargo. + Конфигурирует настройки модуля перевозки грузов + + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index e542e28ae8..e79004b369 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1,698 +1,722 @@ - - - - - ACE-Team - ACE-Team - ACE-Team - ACE-Team - ACE-Team - ACE-Team - Команда ACE - ACE-Team - ACE-Team - ACE-Team - - - Save - Speichern - Guardar - Zapisz - Uložit - Sauvegarder - Сохранить - Salvar - Mentés - Salva - - - Cancel - Abbrechen - Cancelar - Anuluj - Zrušit - Annuler - Отмена - Cancelar - Mégse - Annulla - - - ACE Options - ACE-Optionen - Opciones ACE - Ustawienia ACE - Nastavení ACE - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - - N - N - N - N - S - N - С - N - É - N - - - NNE - NNO - NNE - NNE - SSV - NNE - ССВ - NNE - ÉÉK - NNE - - - NE - NO - NE - NE - SV - NE - СВ - NE - ÉK - NE - - - ENE - ONO - ENE - ENE - VSV - ENE - ВСВ - LNE - KÉK - ENE - - - E - O - E - E - V - E - В - L - K - E - - - ESE - OSO - ESE - ESE - VJV - ESE - ВЮВ - LSE - KDK - ESE - - - SE - SO - SE - SE - JV - SE - ЮВ - SE - DK - SE - - - SSE - SSO - SSE - SSE - JJV - SSE - ЮЮВ - SSE - DDK - SSE - - - S - S - S - S - J - S - Ю - S - D - S - - - SSW - SSW - SSO - SSW - JJZ - SSO - ЮЮЗ - SSO - DDNy - SSO - - - SW - SW - SO - SW - JZ - SO - ЮЗ - SO - DNy - SO - - - WSW - WSW - OSO - WSW - ZJZ - OSO - ЗЮЗ - OSO - NyDNy - OSO - - - W - W - O - W - Z - O - З - O - Ny - O - - - WNW - WNW - ONO - WNW - ZSZ - ONO - ЗСЗ - ONO - NyÉNy - ONO - - - NW - NW - NO - NW - SZ - NO - СЗ - NO - ÉNy - NO - - - NNW - NNW - NNO - NNW - SSZ - NNO - ССЗ - NNO - ÉÉNy - NNO - - - Action cancelled. - Aktion abgebrochen. - Acción cancelada. - Przerwano czynność - Akce přerušena. - Action annulée. - Действие отменено. - Ação cancelada. - Művelet megszakítva. - Azione cancellata. - - - [ACE] Miscellaneous Items - [ACE] Verschiedenes - [ACE] Objetos varios - [ACE] Różne przedmioty - [ACE] Ostatní předměty - [ACE] Objets divers - [ACE] Различные предметы - [ACE] Itens diversos - [ACE] Egyéb tárgyak - [ACE] Oggetti vari - - - Disable Command Menu - Befehlsmenü ausschalten - Desactivar menú de mando - Wyłącz menu dowodzenia - Vypnout velící menu - Désactiver menu commande - Выключить командное меню - Parancsnoki menü kikapcsolása - Disabilita menù di comando - Desabilitar menu de comando - - - Unknown - Unbekannt - Desconocido - Nieznany - Neznámý - Неизвестно - Ismeretlen - Sconosciuto - Inconnu - Desconhecido - - - No Voice - Keine Stimme - Sin voz - Brak głosu - Žádný hlas - Без голоса - Nincs hang - Senza voce - Pas de voix - Sem voz - - - Accept Requests - Anfrage akzeptieren - Aceptar peticiones - Akceptuj prośby - Přijmout žádost - Accepter requête - Принять запросы - Kérések elfogadása - Aceitar Pedido - Accetta la richiesta - - - Decline Requests - Anfrage ablehnen - Rechazar peticiones - Ignoruj prośby - Zamítnout žádost - Отклонить запросы - Rejeter requête - Kérések elutasítása - Rejeitar pedido - Rifiuta la richiesta - - - Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. - Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. - Acepta peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. - Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. - Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. - Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. - Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий - Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. - Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. - Aceitar pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. - - - Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions. - Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. - Rechazar peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. - Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. - Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. - Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. - Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий - Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. - Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. - Rejeita pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. - - - Feedback icons - Rückmeldungssymbole - Iconos de respuesta - Icone informative - Иконки состояний - Ikony pomocnicze - Icones d'information - Pomocné ikony - Visszajelző ikonok - Ícones de Feedback - - - Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. - Wähle die Position der Rückmeldungssymbole, oder deaktiviere sie. Diese Symbole stellen eine zusätzliche Rückmeldung über die Lage und Handlungen deines Soldaten dar. - Seleccionar la posición de o desactivar los íconos de respuesta en la pantalla. Estos iconos se mostrarán para proporcionar información adicional sobre el estado de su personaje y las acciones a realizar. - Seleziona la posizione o disabilita le icone informative sul tuo schermo. Queste saranno mostrate per fornire informazioni aggiuntive sullo stato o sulle azioni del giocatore. - Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях. - Ustaw pozycję lub wyłącz całkowicie ikony pomocnicze na ekranie. Te ikony dostarczają dodatkowych informacji na temat statusu Twojej postaci i wykonywanych przez nią akcji. - Sélection de la position ou la désactivation des icones de feedback. Ces icones vous apportent des informations complémentaires sur votre status et sur les actions en cours. - Nastavuje pozici nebo vypíná pomocné ikony. Tyto ikony ukazují extra informace ke stavu postavy a vykonávaných činností. - Itt beállítható a visszajelző ikonok képernyőn lévő helyzete és jelenléte. Ezek az ikonok extra visszajelzést biztosítanak a karaktered állapotán és végrehajtott cselekvésein. - Selecione a posição ou disabilite a posição dos ícones de feedback na sua tela. Esses ícones irão aparecer para mostrar feedback extra do status do seu personagem e ações realizadas. - - - Progress bar location - Position der Fortschrittsanzeige - Ubicación de la barra de progreso - Posizione della barra di avanzamento - Положение прогресс-бара - Lokalizacja paska postępu - Position de la barre de progression - Pozice ukazetele průběhu činnosti - Állapotjelző sáv helyzete - Local da barra de progresso - - - Set the desired location of the progress bar on your screen. - Setze die gewünschte Position der Fortschrittsanzeige fest. - Seleccionar la ubicación deseada de la barra de progreso en tu pantalla - Modifica la posizione della barra di avanzamernto sullo schermo - Установите желаемое положение строки состояния на экране. - Ustaw pożądaną lokalizację paska postępu na ekranie - Appliquer la position de la barre de progression sur l'écran - Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce. - Itt beállítható az állapotjelző sáv képernyődön lévő helyzete. - Define o local desejado da barra de progresso na sua tela. - - - Hint Background color - Hintergrundfarbe der Hinweise - Color de fondo de las notificaciones - Colore di sfondo dei suggerimenti - Цвет фона всплывающих подсказок - Kolor tła powiadomień - Notification: couleur de l'arrière plan - Barva pozadí nápovědy - Súgó háttérszíne - Cor do fundo da hint - - - The color of the background from the ACE hints. - Die Hintergrundfarbe der ACE-Hinweise. - El color de fondo de las notificaciones del ACE - Il colore di sfondo dei suggerimenti di ACE. - Цвет фона всплывающих подсказок АСЕ. - Kolor tła dla powiadomień ACE - Notification ACE: couleur de l'arrière plan - Barva pozadí ACE nápověd. - Az ACE-súgók hátterének színe. - A cor de fundo das hints do ACE. - - - Hint text font color - Textfarbe der Hinweise - Color del texto de las notificaciones - Il colore del testo dei suggerimenti - Цвет шрифта всплывающих подсказок - Kolor tekstu powiadomień - Notification: couleur du texte - Barva fontu nápověd. - Súgószöveg betűinek színe - Cor do do texto da hint - - - The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. - Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. - El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. - Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. - Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. - Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. - Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications - Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu. - Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt. - A cor do texto das hints do ACE. Essa cor é a cor default para todos os texos exibidos pelo sistema de hints do ACE , caso o texto da hint não tem outra cor especificada. - - - Banana - Banane - Banana - Banán - Banana - Банан - Banan - Banane - Banán - Banana - - - A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. - Die Bananen (Musa) sind eine Pflanzengattung in der Familie der Bananengewächse (Musaceae) innerhalb der Einkeimblättrigen Pflanzen (Monokotyledonen). - Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa. - Banán je protáhlé ovoce a plod banánovníku (epigeická bobule). - Una banana è un frutto commestibile, nello specifico una bacca cuoiosa, prodotta da un gran numero di grandi piante erbacee dotate di fiori, della famiglia delle Musaceae. - Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa). - A banán egy ehető gyümölcs, technikai szempontból bogyótermés, melyet több fürtvirágzatú növény termel a Musa rendszertani nemzetségben. - Rodzaj roślin z rodziny bananowatych, obejmujący około 80 gatunków.<br />Przedstawiciele są typowymi przedstawicielami flory międzyzwrotnikowej Azji, Afryki i Australii.<br />Część gatunków dostarcza jadalnych owoców. Słowo banan pochodzi prawdopodobnie od arabskiego słowa banan, co oznacza palec, lub afrykańskiego języka wolof, w którym rośliny te określa się mianem banaana. - Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. - A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. - - - Check PBOs - Sprawdzaj PBO - Comprobar PBOs - Überprüfe PBOs - Zkontrolovat PBO - Verificar PBOs - PBO-k ellenőrzése - - - Sprawdzaj spójność addonów z serwerem - Este módulo verifica la integridad de los addons con los que iniciamos el simulador - Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. - Zjistit addon který je v souladu se serverem - Este módulo verifica a integridade dos addons quando iniciamos a simulação - - - Action - Akcja - Acción - Aktion - Akce - Ação - Cselekvés - - - What to do with people who do not have the right PBOs? - Co zrobić z graczami, którzy nie mają właściwych PBO? - ¿Qué hacer con la gente que no tiene correctamente los PBOs? - Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? - Co udělat s lidmi, co nemají správné addony? - O que fazer com pessoas que não tem os PBOs corretos? - Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? - - - Warn once - Ostrzeż raz - Avisar una vez - Einmal verwarnen - Upozornit jednou - Avisar uma vez - Egyszeri figyelmeztetés - - - Warn (permanent) - Ostrzeżenie (permanentne) - Avisar (permanente) - Immer verwarnen - Upozornit (permanentně) - Avisar (permanente) - Figyelmeztetés (tartós) - - - Kick - Kick - Expulsar - Kicken - Vyhodit - Chutar - Kirúgás - - - Check all addons - Sprawdź wsz. addony - Comprobar todos los addons - Alle Addons überprüfen - Zkontrolovat všechny addony - Verificar todos addons - Összes bővítmény ellenőrzése - - - Check all addons instead of only those of ACE? - Sprawdzaj wszystkie addony czy tylko te z ACE? - Comprobar todos los addons en vez de solo los del ACE - Alle Addons anstatt nur ACE überprüfen? - Zkontrolovat všechny addony namísto jen těch od ACE? - Verificar todos addons invés de só os do ACE? - Az összes bővítmény ellenőrzése, csak az ACE helyett? - - - Whitelist - Biała lista - Lista blanca - Whitelist - Seznam povolených - Lista branca - Fehérlista - - - What addons are allowed regardless? - Jakie addony są dozwolone? - Qué addons están permitidos igualmente - Welche Addons werden dennoch erlaubt? - Jaké addony jsou povoleny? - Quais addons são permitidos de qualquer maneira? - Milyen bővítmények vannak feltétlenül engedélyezve? - - - LSD Vehicles - Pojazdy LSD - Vehículos LSD - LSD-Fahrzeuge - LSD vozidla - Veículos LSD - LSD járművek - - - Adds LSD effect to synchronized vehicle - Dodaje efekt LSD pod zsynchronizowany pojazd - Añade el efecto LSD al vehículo sincronizado - Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu - Přidá LSD efekt pro synchronizované vozidla - Adiciona efeito LSD ao veículo sincronizado - LSD-effekt hozzáadása a szinkronizált járművekhez - - - Toggle Handheld Device - Seleccionar dispositivo de mano - Handheld aufrufen - Ativa dispositivo de mão - Przełącz urządzenie podręczne - Přepnout ruční zařízení - Kézi eszköz kapcsolása - - - Close Handheld Device - Cerrar dispositivo de mano - Handheld schließen - Fecha dispositivo de mão - Zamknij urządzenie podręczne - Zavřít ruční zařízení - Kézi eszköz bezárása - - - Cycle Handheld Devices - Cambiar dispositivos de mano - Handheld wechseln - Troca dispositivos de mão - Następne urządzenie podręczne - Procházet ruční zařízení - Kézi eszköz váltása - - - Disabled - Zakázáno - Non - Deaktiviert - Disattivato - Wyłączone - Desativado - Откл. - Desactivado - - - Enabled - Zapnuto - Oui - Aktiviert - Attivato - Włączone - Ativado - Вкл. - Activado - - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - - - Vehicles only - Tylko pojazdy - - - Do Not Force - Nie wymuszaj - No forzar - Nicht erzwingen - Nevynucovat - Não forçar - - - ACE3 Equipment - ACE3 Wyposażenie - - - ACE3 Common - ACE3 Ogólne - - - ACE3 Weapons - ACE3 Broń - - - ACE3 Movement - ACE3 Ruch - - - ACE3 Scope Adjustment - ACE3 Regulacja optyki - - - ACE3 Vehicles - ACE3 Pojazdy - - + + + + + ACE-Team + ACE-Team + ACE-Team + ACE-Team + ACE-Team + ACE-Team + Команда ACE + ACE-Team + ACE-Team + ACE-Team + + + Save + Speichern + Guardar + Zapisz + Uložit + Sauvegarder + Сохранить + Salvar + Mentés + Salva + + + Cancel + Abbrechen + Cancelar + Anuluj + Zrušit + Annuler + Отмена + Cancelar + Mégse + Annulla + + + ACE Options + ACE-Optionen + Opciones ACE + Ustawienia ACE + Nastavení ACE + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + + N + N + N + N + S + N + С + N + É + N + + + NNE + NNO + NNE + NNE + SSV + NNE + ССВ + NNE + ÉÉK + NNE + + + NE + NO + NE + NE + SV + NE + СВ + NE + ÉK + NE + + + ENE + ONO + ENE + ENE + VSV + ENE + ВСВ + LNE + KÉK + ENE + + + E + O + E + E + V + E + В + L + K + E + + + ESE + OSO + ESE + ESE + VJV + ESE + ВЮВ + LSE + KDK + ESE + + + SE + SO + SE + SE + JV + SE + ЮВ + SE + DK + SE + + + SSE + SSO + SSE + SSE + JJV + SSE + ЮЮВ + SSE + DDK + SSE + + + S + S + S + S + J + S + Ю + S + D + S + + + SSW + SSW + SSO + SSW + JJZ + SSO + ЮЮЗ + SSO + DDNy + SSO + + + SW + SW + SO + SW + JZ + SO + ЮЗ + SO + DNy + SO + + + WSW + WSW + OSO + WSW + ZJZ + OSO + ЗЮЗ + OSO + NyDNy + OSO + + + W + W + O + W + Z + O + З + O + Ny + O + + + WNW + WNW + ONO + WNW + ZSZ + ONO + ЗСЗ + ONO + NyÉNy + ONO + + + NW + NW + NO + NW + SZ + NO + СЗ + NO + ÉNy + NO + + + NNW + NNW + NNO + NNW + SSZ + NNO + ССЗ + NNO + ÉÉNy + NNO + + + Action cancelled. + Aktion abgebrochen. + Acción cancelada. + Przerwano czynność + Akce přerušena. + Action annulée. + Действие отменено. + Ação cancelada. + Művelet megszakítva. + Azione cancellata. + + + [ACE] Miscellaneous Items + [ACE] Verschiedenes + [ACE] Objetos varios + [ACE] Różne przedmioty + [ACE] Ostatní předměty + [ACE] Objets divers + [ACE] Различные предметы + [ACE] Itens diversos + [ACE] Egyéb tárgyak + [ACE] Oggetti vari + + + Disable Command Menu + Befehlsmenü ausschalten + Desactivar menú de mando + Wyłącz menu dowodzenia + Vypnout velící menu + Désactiver menu commande + Выключить командное меню + Parancsnoki menü kikapcsolása + Disabilita menù di comando + Desabilitar menu de comando + + + Unknown + Unbekannt + Desconocido + Nieznany + Neznámý + Неизвестно + Ismeretlen + Sconosciuto + Inconnu + Desconhecido + + + No Voice + Keine Stimme + Sin voz + Brak głosu + Žádný hlas + Без голоса + Nincs hang + Senza voce + Pas de voix + Sem voz + + + Accept Requests + Anfrage akzeptieren + Aceptar peticiones + Akceptuj prośby + Přijmout žádost + Accepter requête + Принять запросы + Kérések elfogadása + Aceitar Pedido + Accetta la richiesta + + + Decline Requests + Anfrage ablehnen + Rechazar peticiones + Ignoruj prośby + Zamítnout žádost + Отклонить запросы + Rejeter requête + Kérések elutasítása + Rejeitar pedido + Rifiuta la richiesta + + + Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. + Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. + Acepta peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. + Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. + Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. + Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. + Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий + Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. + Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. + Aceitar pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. + + + Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions. + Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. + Rechazar peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. + Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. + Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. + Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. + Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий + Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. + Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. + Rejeita pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. + + + Feedback icons + Rückmeldungssymbole + Iconos de respuesta + Icone informative + Иконки состояний + Ikony pomocnicze + Icones d'information + Pomocné ikony + Visszajelző ikonok + Ícones de Feedback + + + Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. + Wähle die Position der Rückmeldungssymbole, oder deaktiviere sie. Diese Symbole stellen eine zusätzliche Rückmeldung über die Lage und Handlungen deines Soldaten dar. + Seleccionar la posición de o desactivar los íconos de respuesta en la pantalla. Estos iconos se mostrarán para proporcionar información adicional sobre el estado de su personaje y las acciones a realizar. + Seleziona la posizione o disabilita le icone informative sul tuo schermo. Queste saranno mostrate per fornire informazioni aggiuntive sullo stato o sulle azioni del giocatore. + Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях. + Ustaw pozycję lub wyłącz całkowicie ikony pomocnicze na ekranie. Te ikony dostarczają dodatkowych informacji na temat statusu Twojej postaci i wykonywanych przez nią akcji. + Sélection de la position ou la désactivation des icones de feedback. Ces icones vous apportent des informations complémentaires sur votre status et sur les actions en cours. + Nastavuje pozici nebo vypíná pomocné ikony. Tyto ikony ukazují extra informace ke stavu postavy a vykonávaných činností. + Itt beállítható a visszajelző ikonok képernyőn lévő helyzete és jelenléte. Ezek az ikonok extra visszajelzést biztosítanak a karaktered állapotán és végrehajtott cselekvésein. + Selecione a posição ou disabilite a posição dos ícones de feedback na sua tela. Esses ícones irão aparecer para mostrar feedback extra do status do seu personagem e ações realizadas. + + + Progress bar location + Position der Fortschrittsanzeige + Ubicación de la barra de progreso + Posizione della barra di avanzamento + Положение прогресс-бара + Lokalizacja paska postępu + Position de la barre de progression + Pozice ukazetele průběhu činnosti + Állapotjelző sáv helyzete + Local da barra de progresso + + + Set the desired location of the progress bar on your screen. + Setze die gewünschte Position der Fortschrittsanzeige fest. + Seleccionar la ubicación deseada de la barra de progreso en tu pantalla + Modifica la posizione della barra di avanzamernto sullo schermo + Установите желаемое положение строки состояния на экране. + Ustaw pożądaną lokalizację paska postępu na ekranie + Appliquer la position de la barre de progression sur l'écran + Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce. + Itt beállítható az állapotjelző sáv képernyődön lévő helyzete. + Define o local desejado da barra de progresso na sua tela. + + + Hint Background color + Hintergrundfarbe der Hinweise + Color de fondo de las notificaciones + Colore di sfondo dei suggerimenti + Цвет фона всплывающих подсказок + Kolor tła powiadomień + Notification: couleur de l'arrière plan + Barva pozadí nápovědy + Súgó háttérszíne + Cor do fundo da hint + + + The color of the background from the ACE hints. + Die Hintergrundfarbe der ACE-Hinweise. + El color de fondo de las notificaciones del ACE + Il colore di sfondo dei suggerimenti di ACE. + Цвет фона всплывающих подсказок АСЕ. + Kolor tła dla powiadomień ACE + Notification ACE: couleur de l'arrière plan + Barva pozadí ACE nápověd. + Az ACE-súgók hátterének színe. + A cor de fundo das hints do ACE. + + + Hint text font color + Textfarbe der Hinweise + Color del texto de las notificaciones + Il colore del testo dei suggerimenti + Цвет шрифта всплывающих подсказок + Kolor tekstu powiadomień + Notification: couleur du texte + Barva fontu nápověd. + Súgószöveg betűinek színe + Cor do do texto da hint + + + The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. + Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. + El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. + Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. + Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. + Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. + Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications + Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu. + Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt. + A cor do texto das hints do ACE. Essa cor é a cor default para todos os texos exibidos pelo sistema de hints do ACE , caso o texto da hint não tem outra cor especificada. + + + Banana + Banane + Banana + Banán + Banana + Банан + Banan + Banane + Banán + Banana + + + A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. + Die Bananen (Musa) sind eine Pflanzengattung in der Familie der Bananengewächse (Musaceae) innerhalb der Einkeimblättrigen Pflanzen (Monokotyledonen). + Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa. + Banán je protáhlé ovoce a plod banánovníku (epigeická bobule). + Una banana è un frutto commestibile, nello specifico una bacca cuoiosa, prodotta da un gran numero di grandi piante erbacee dotate di fiori, della famiglia delle Musaceae. + Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa). + A banán egy ehető gyümölcs, technikai szempontból bogyótermés, melyet több fürtvirágzatú növény termel a Musa rendszertani nemzetségben. + Rodzaj roślin z rodziny bananowatych, obejmujący około 80 gatunków.<br />Przedstawiciele są typowymi przedstawicielami flory międzyzwrotnikowej Azji, Afryki i Australii.<br />Część gatunków dostarcza jadalnych owoców. Słowo banan pochodzi prawdopodobnie od arabskiego słowa banan, co oznacza palec, lub afrykańskiego języka wolof, w którym rośliny te określa się mianem banaana. + Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. + A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. + + + Check PBOs + Sprawdzaj PBO + Comprobar PBOs + Überprüfe PBOs + Zkontrolovat PBO + Verificar PBOs + PBO-k ellenőrzése + Проверка аддонов + + + Sprawdzaj spójność addonów z serwerem + Este módulo verifica la integridad de los addons con los que iniciamos el simulador + Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. + Zjistit addon který je v souladu se serverem + Este módulo verifica a integridade dos addons quando iniciamos a simulação + Выполняет проверку версий аддонов ACE у подключаемых игроков + + + Action + Akcja + Acción + Aktion + Akce + Ação + Cselekvés + Действие + + + What to do with people who do not have the right PBOs? + Co zrobić z graczami, którzy nie mają właściwych PBO? + ¿Qué hacer con la gente que no tiene correctamente los PBOs? + Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? + Co udělat s lidmi, co nemají správné addony? + O que fazer com pessoas que não tem os PBOs corretos? + Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? + Что делать с игроками с неправильными аддонами? + + + Warn once + Ostrzeż raz + Avisar una vez + Einmal verwarnen + Upozornit jednou + Avisar uma vez + Egyszeri figyelmeztetés + Предупредить один раз + + + Warn (permanent) + Ostrzeżenie (permanentne) + Avisar (permanente) + Immer verwarnen + Upozornit (permanentně) + Avisar (permanente) + Figyelmeztetés (tartós) + Предупреждать (постоянно) + + + Kick + Kick + Expulsar + Kicken + Vyhodit + Chutar + Kirúgás + Кикнуть + + + Check all addons + Sprawdź wsz. addony + Comprobar todos los addons + Alle Addons überprüfen + Zkontrolovat všechny addony + Verificar todos addons + Összes bővítmény ellenőrzése + Проверять все аддоны + + + Check all addons instead of only those of ACE? + Sprawdzaj wszystkie addony czy tylko te z ACE? + Comprobar todos los addons en vez de solo los del ACE + Alle Addons anstatt nur ACE überprüfen? + Zkontrolovat všechny addony namísto jen těch od ACE? + Verificar todos addons invés de só os do ACE? + Az összes bővítmény ellenőrzése, csak az ACE helyett? + Проверять все аддоны, а не только ACE? + + + Whitelist + Biała lista + Lista blanca + Whitelist + Seznam povolených + Lista branca + Fehérlista + Вайтлист доп. аддонов + + + What addons are allowed regardless? + Jakie addony są dozwolone? + Qué addons están permitidos igualmente + Welche Addons werden dennoch erlaubt? + Jaké addony jsou povoleny? + Quais addons são permitidos de qualquer maneira? + Milyen bővítmények vannak feltétlenül engedélyezve? + Какие аддоны дополнительно разрешены? + + + LSD Vehicles + Pojazdy LSD + Vehículos LSD + LSD-Fahrzeuge + LSD vozidla + Veículos LSD + LSD járművek + Транспорт под LSD + + + Adds LSD effect to synchronized vehicle + Dodaje efekt LSD pod zsynchronizowany pojazd + Añade el efecto LSD al vehículo sincronizado + Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu + Přidá LSD efekt pro synchronizované vozidla + Adiciona efeito LSD ao veículo sincronizado + LSD-effekt hozzáadása a szinkronizált járművekhez + Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам + + + Toggle Handheld Device + Seleccionar dispositivo de mano + Handheld aufrufen + Ativa dispositivo de mão + Przełącz urządzenie podręczne + Přepnout ruční zařízení + Kézi eszköz kapcsolása + Включить портативное устройство + + + Close Handheld Device + Cerrar dispositivo de mano + Handheld schließen + Fecha dispositivo de mão + Zamknij urządzenie podręczne + Zavřít ruční zařízení + Kézi eszköz bezárása + Закрыть портативное устройство + + + Cycle Handheld Devices + Cambiar dispositivos de mano + Handheld wechseln + Troca dispositivos de mão + Następne urządzenie podręczne + Procházet ruční zařízení + Kézi eszköz váltása + Следующее портативное устройство + + + Disabled + Zakázáno + Non + Deaktiviert + Disattivato + Wyłączone + Desativado + Откл. + Desactivado + + + Enabled + Zapnuto + Oui + Aktiviert + Attivato + Włączone + Ativado + Вкл. + Activado + + + Yes + Ja + Si + Tak + Ano + Oui + Да + Igen + Sim + Si + + + No + Nein + No + Nie + Ne + Non + Нет + Nem + Não + No + + + Vehicles only + Tylko pojazdy + Только в транспорте + + + Do Not Force + Nie wymuszaj + No forzar + Nicht erzwingen + Nevynucovat + Não forçar + Не обязывать + + + ACE3 Equipment + ACE3 Wyposażenie + ACE3: Снаряжение + + + ACE3 Common + ACE3 Ogólne + ACE3: Общие + + + ACE3 Weapons + ACE3 Broń + ACE3: Оружие + + + ACE3 Movement + ACE3 Ruch + ACE3: Перемещение + + + ACE3 Scope Adjustment + ACE3 Regulacja optyki + ACE3: Прицелы + + + ACE3 Vehicles + ACE3 Pojazdy + ACE3: Транспорт + + \ No newline at end of file diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index 07c2961862..06094fa855 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -1,53 +1,53 @@ - - - - - Concertina Wire - NATO-Draht - Проволочная спираль - Koncentrina - Alambre de espino - Concertina wire - Ostnatý drát - Concertina wire - Concertina wire - Arame farpado - - - Concertina Wire Coil - NATO-Draht Rolle - Проволочная спираль (моток) - Zwój koncentriny - Bobina de alambre de espino - Concertina wire coil - Smyčka ostnatého drátu - Concertina wire coil - Concertina wire coil - Bobina de arame farpado - - - Dismount Concertina Wire - NATO-Draht abbauen - Демонтировать проволочную спираль - Zwiń koncentrinę - Desmontar alambre de espino - Dismount Concertina wire - Svinout ostnatý drát - Dismount Concertina wire - Dismount Concertina wire - Desmontar arame farpado - - - Deploy Concertina Wire - NATO-Draht verlegen - Монтировать проволочную спираль - Rozwiń koncentrinę - Desplegar alambre de espino - Deploy Concertina wire - Rozvinout ostnatý drát - Deploy Concertina wire - Deploy Concertina wire - Colocar arame farpado - - - + + + + + Concertina Wire + NATO-Draht + Колючая проволока + Koncentrina + Alambre de espino + Concertina wire + Ostnatý drát + Concertina wire + Concertina wire + Arame farpado + + + Concertina Wire Coil + NATO-Draht Rolle + Колючая проволока (моток) + Zwój koncentriny + Bobina de alambre de espino + Concertina wire coil + Smyčka ostnatého drátu + Concertina wire coil + Concertina wire coil + Bobina de arame farpado + + + Dismount Concertina Wire + NATO-Draht abbauen + Демонтировать колючую проволоку + Zwiń koncentrinę + Desmontar alambre de espino + Dismount Concertina wire + Svinout ostnatý drát + Dismount Concertina wire + Dismount Concertina wire + Desmontar arame farpado + + + Deploy Concertina Wire + NATO-Draht verlegen + Монтировать колючую проволоку + Rozwiń koncentrinę + Desplegar alambre de espino + Deploy Concertina wire + Rozvinout ostnatý drát + Deploy Concertina wire + Deploy Concertina wire + Colocar arame farpado + + + \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index b115ca0752..ff32a0cffb 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,594 +1,603 @@ - - - - - Explosives - Sprengstoffe - Explosivos - Mat. wybuchowe - Explosifs - Výbušniny - Esplosivi - Robbanóanyagok - Explosivos - Взрывчатка - - - Place >> - Platzieren >> - Colocar >> - Umieść >> - Placer >> - Položit >> - Piazza >> - Elhelyezés >> - Colocar >> - Установить >> - - - Detonate >> - Zünden >> - Detonar >> - Detonuj >> - Mise à feu >> - Odpálit >> - Detona >> - Robbantás >> - Detonar >> - Подрыв >> - - - Explosive code: %1 - Sprengstoffcode: %1 - Código del explosivo: %1 - Kod ładunku: %1 - Code de l'explosif: %1 - Kód výbušniny: %1 - Robbanóanyag kódja: %1 - Código do explosivo: %1 - Код подрыва: %1 - Codice esplosivo: %1 - - - Place - Platzieren - Colocar - Umieść - Placer - Položit - Piazza - Elhelyezés - Colocar - Установить - - - Attach - Befestigen - Acoplar - Przyczep - Attacher - Připnout - Fixar - Attacca - Hozzácsatolás - Прикрепить - - - Blocked - Obstruido - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Mégsem - Cancelar - Отмена - - - + Modifier, rotates - + Modifikator, drehen - + Modificador, girar - + Modificateur, tourner - + Modificatore, rotazione - + Modifikátor, otočit - + Változtatás, forgatás - + Modyfikator, obrót - + Modificador, rotaciona - + Bращать - - - Turn On Thor III - Thor III aktivieren - Encender Thor III - Włącz Thor III - Allumer Thor III - Zapnout Thor III - Accendi Thor III - Thor III bekapcsolása - Ativar Thor III - Активировать Thor III - - - Turn Off Thor III - Thor III deaktivieren - Apagar Thor III - Wyłącz Thor III - Éteindre Thor III - Vypnout Thor III - Spegni Thor III - Thor III kikapcsolása - Desativar Thor III - Деактивировать Thor III - - - Cellphone - Mobiltelefon - Télefono móvil - Telefon komórkowy - Téléphone portable - Telefon - Cellulare - Mobiltelefon - Celular - Сотовый телефон - - - Used to remotely trigger explosives - Wird benutzt um Sprengstoffe fernzuzünden - Usado para detonar remotamente explosivos - Używany do zdalnego detonowania ładunków wybuchowych - Utilisé pour déclencher des explosifs à distance - Používaný ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi - Robbanóanyagok távoli robbantásához való - Usado para acionar explosivos remotamente - Используется для удаленной детонации СВУ - - - M57 Firing Device - M57 Zündvorrichtung - Dispositivo de detonación M57 - Zapalnik M57 - Dispositif de mise à feu M57 - Odpalovací zařízení M57 - Detonatore M57 - M57 Gyújtóeszköz - M57 Dispositivo de Detonação - Взрыватель M57 - - - Used to remotely trigger explosives - Wird benutzt um Sprengstoffe fernzuzünden - Usado para detonar remotamente explosivos - Używany do zdalnego detonowania ładunków wybuchowych - Utilisé pour déclencher des explosifs à distance - Používané ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi - Robbanóanyagok távoli robbantásához - Usado para acionar explosivos remotamente - Используется для удаленной детонации зарядов - - - M26 Firing Device - M26 Zündvorrichtung - Dispositivo de detonación MK26 - Zapalnik M26 - Dispositif de mise à feu M26 - Odpalovací zařízení M26 - Detonatore M26 - M26 Gyújtóeszköz - M26 Dispositivo de Detonação - Взрыватель M26 - - - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - - - Defusal Kit - Entschärfungskit - Kit de desactivación - Zestaw do rozbrajania - Kit de désamorçage - Zneškodňovací sada - Kit E.O.D. - Hatástalanító felszerelés - Kit de desarme - Комплект разминирования - - - Allows defusing of explosives - Erlaubt die Entschärfung von Sprengstoffen - Permite desactivar explosivos - Umożliwia rozbrajanie ładunków wybuchowych - Permet de désamorçer des explosifs - Dovoluje zneškodňování výbušnin - Consente la disattivazione degli ordigni esplosivi - Robbanóanyagok hatástalanítását teszi lehetővé - Permite o desarme de explosivos - Позволяет обезвреживать взрывчатку - - - Add to Speed Dial - Zur Schnellauswahl hinzufügen - Añadir a marcado rápido - Dodaj do szybkiego wybierania - Ajouter à la composition rapide - Přidat jako rychlou volbu - Aggiungi alla selezione rapida - Hozzáadás a gyorstárcsázóhoz - Adicionar à ligação rápida - Добавить в быстрый вызов - - - Clear - Löschen - Borrar - Usuń - Effacer - Čistý - Libera - Törlés - Limpar - Очистить - - - Dial - Wählen - Marcar - Wybierz numer - Composer - Vytočit - Composizione numero - Tárcsázás - Discar - Hабрать - - - Up - Hoch - Arriba - W górę - Haut - Nahoru - Sopra - Fel - Cima - Вызов - - - Down - Runter - Abajo - W dół - Bas - Dolu - Sotto - Le - Baixo - Сброс - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Mégsem - Cancelar - Отмена - - - Detonate Menu - "Zünden"-Menü - Menú de detonación - Menu detonacji - Menu de mise à feux - Menu Detonace - Menù di detonazione - Robbantási menü - Menu de detonação - Меню подрыва - - - Place Menu - "Platzieren"-Menü - Menú de colocación - Menu umieszczania - Menu de placement - Menu Umístění - Menù di collocamento - Elhelyezési menü - Menu de posicionamento - Меню установки - - - Defuse - Entschärfen - Desactivar - Rozbrój - Désamorçer - Zneškodnit - Disinnesca - Hatástalanítás - Desarmar - Обезвредить - - - Defusing Explosive... - Entschärfe Sprengstoff... - Desactivando explosivo... - Rozbrajanie ładunku... - Désamorçage des explosifs... - Zneškodňuji Výbušninu... - Esposivo in fase di disattivazione... - Robbanóanyag hatástalanítása... - Desarmando Explosivo... - Обезвреживание... - - - Timer - Zeitzünder - Temporizador - Czasomierz - Minuteur - Časovač - Cronometro - Időzítő - Timer - Таймер - - - Time: %1m %2s - Zeit: %1m %2s - Tiempo: %1m %2s - Czas: %1m %2s - Temps : %1m %2s - Čas: %1m %2s - Tempo : %1m %2s - Idő: %1m %2s - Tempo: %1m %2s - Время: %1m %2c - - - Set Time - Zeit einstellen - Configurar tiempo - Ustaw czas - Régler minuteur - Nastavit Čas - Modifica il conto alla rovescia - Idő beállítása - Configurar Tempo - Установить время - - - Select a Trigger - Wähle einen Zünder - Seleccionar un detonador - Wybierz zapalnik - Sélectionner une mise à feu - Zvolit Detonátor - Seleziona un attivatore - Gyújtóeszköz kiválasztása - Selecionar um Gatilho - Выберите детонатор - - - Select - Wählen - Seleccionar - Wybierz - Sélectionner - Zvolit - Seleziona - Kiválasztás - Selecionar - Выбрать - - - Pressure Plate - Płyta naciskowa - Placa de presión - Druckplatte - Plaque de pression - Nášlapná nástraha - Piastra a pressione - Nyomólap - Placa de pressão - Нажимная плита - - - Tripwire - Linka naciągu - Cable trampa - Stolperdraht - Fil de détente - Nástražný drát - Filo a inciampo - Botlódrót - Linha de tração - Растяжка - - - IR Sensor - Czujnik podczerwieni - Sensor IR - Infrarotsensor - Capteur IR - IR Značkovač - Sensore IR - Infravörös szenzor - Sensor IV - ИК сенсор - - - No triggers available for %1 - Brak dostępnych zapalników dla %1 - No hay detonadores disponibles para %1 - Keine Auslöser vorhanden für %1 - Pas de mise à feu disponible pour %1 - Žádný detonátor k dispozici pro %1 - Nessun attivatore disponibile per %1 - Nincs elérhető gyújtóeszköz ide: %1 - Nenhum gatilho disponível para %1 - Нет доступных взрывателей для %1 - - - IR Sensor (Side Attack) - Czujnik podczerwieni (wybuch na bok) - Sensor IR (ataque lateral) - Infrarotsensor (Seitenangriff) - Capteur IR (de flanc) - IR Značkovač (Výbuch stranou) - Sensore IR (attacco laterale) - Infravörös szenzor (Side Attack) - Sensor infravermelho (ataque lateral) - ИК сенсор (детонация вбок) - - - Magnetic Influence Sensor (Bottom Attack) - Czujnik magnetyczny (wybuch w górę) - Sensor IM (ataque inferior) - Magnetfeldsensor (Bodenangriff) - Capteur magnétique (par le bas) - Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (attacco inferiore) - Mágneses mező érzékelő (Bottom Attack) - Influência magnética (ataque inferior) - Магнитный сенсор (детонация вверх) - - - No explosives on trigger. - Keine Sprengladungen auf diesem Auslöser. - Ningún explosivo en el detonador. - Pas d'explosif à mettre à feu. - Nessun esplosivo - Žádná výbušnina k odpálení. - Nincs robbanóanyag a gyújtóeszközhöz kötve. - Brak ładunków na zapalnik. - Nenhum explosivo no gatilho. - Взрыватель не подсоединён к взрывчатке - - - Dead Man's Switch - Totmannschalter - Mise à feu par relâchement de pression - Spínač mrtvého muže - Czuwak - Detonador de hombre muerto - Halott ember kapcsolója - Detonador do homem morto - Кнопка мертвеца - Detonatore a rilascio - - - Used to remotely trigger explosives when released. - Zündet Sprengladungen wenn losgelassen. - Déclenche la mise à feu d'un explosif lorsqu'il est libéré. - Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny - Używany w celu zdalnej detonacji ładunków, kiedy jego operator zostanie zabity. - Utilizado para detonar explosivos remotamente al soltarlo. - Robbanóanyagok távoli robbantásához - Usado para detonar remotamente o explosivo quando solto. - Используется для дистанционного подрыва, после смерти оператора. - Usato per attivare a distanza esplosivi al momento del rilascio - - - Pick up - Aufheben - Recoger - Sebrat - Podnieś - Ramasser - Felszedés - Поднять - Raccogli - Pegar - - - Explosive System - System ładunków wybuchowych - Sistema de explosivos - Sprengstoffsystem - Systém výbušnin - Sistema de explosivos - Robbanóanyag-rendszer - - - Require specialists? - Wymagaj specjalistów? - ¿Requiere especialista? - Benötigt Sprengstoffexperten? - Vyžadovat specialistu? - Requer especialista? - Specialisták igénylése? - - - Require explosive specialists to disable explosives? Default: No - Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie - Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No - Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein - Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne - Requer especialista em explosivos para desativar explosivos? Padrão: Não - Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem - - - Punish non-specialists? - Karaj nie-specjalistów? - ¿Penalizar a los no especialistas? - Bestrafe Nicht-Sprengstoffexperten? - Potrestat, pokud není specialista? - Punir não especialistas? - Nem-specialisták büntetése? - - - Increase the time it takes to complete actions for non-specialists? Default: Yes - Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak - Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si - Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja - Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano - Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim - Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen - - - Explode on defusal? - Explosão no desarmamento? - Eksplozja przy rozbrajaniu? - Explodovat při zneškodňování? - Explotar al desactivar? - Robbanás hatástalanításkor? - - - Enable certain explosives to explode on defusal? Default: Yes - Ativa certos explosivos para detonar no desarmamento? Padrão: Sim - Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak - Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano - ¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí - Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen - - - This module adjusts the settings related to explosives. - Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. - Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. - Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. - Este módulo permite personalizar as definições relacionadas a explosivos. - Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza. - - + + + + + Explosives + Sprengstoffe + Explosivos + Mat. wybuchowe + Explosifs + Výbušniny + Esplosivi + Robbanóanyagok + Explosivos + Взрывчатка + + + Place >> + Platzieren >> + Colocar >> + Umieść >> + Placer >> + Položit >> + Piazza >> + Elhelyezés >> + Colocar >> + Установить >> + + + Detonate >> + Zünden >> + Detonar >> + Detonuj >> + Mise à feu >> + Odpálit >> + Detona >> + Robbantás >> + Detonar >> + Подрыв >> + + + Explosive code: %1 + Sprengstoffcode: %1 + Código del explosivo: %1 + Kod ładunku: %1 + Code de l'explosif: %1 + Kód výbušniny: %1 + Robbanóanyag kódja: %1 + Código do explosivo: %1 + Код подрыва: %1 + Codice esplosivo: %1 + + + Place + Platzieren + Colocar + Umieść + Placer + Položit + Piazza + Elhelyezés + Colocar + Установить + + + Attach + Befestigen + Acoplar + Przyczep + Attacher + Připnout + Fixar + Attacca + Hozzácsatolás + Прикрепить + + + Blocked + Obstruido + Заблокировано + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Mégsem + Cancelar + Отмена + + + + Modifier, rotates + + Modifikator, drehen + + Modificador, girar + + Modificateur, tourner + + Modificatore, rotazione + + Modifikátor, otočit + + Változtatás, forgatás + + Modyfikator, obrót + + Modificador, rotaciona + + Bращать + + + Turn On Thor III + Thor III aktivieren + Encender Thor III + Włącz Thor III + Allumer Thor III + Zapnout Thor III + Accendi Thor III + Thor III bekapcsolása + Ativar Thor III + Активировать Thor III + + + Turn Off Thor III + Thor III deaktivieren + Apagar Thor III + Wyłącz Thor III + Éteindre Thor III + Vypnout Thor III + Spegni Thor III + Thor III kikapcsolása + Desativar Thor III + Деактивировать Thor III + + + Cellphone + Mobiltelefon + Télefono móvil + Telefon komórkowy + Téléphone portable + Telefon + Cellulare + Mobiltelefon + Celular + Сотовый телефон + + + Used to remotely trigger explosives + Wird benutzt um Sprengstoffe fernzuzünden + Usado para detonar remotamente explosivos + Używany do zdalnego detonowania ładunków wybuchowych + Utilisé pour déclencher des explosifs à distance + Používaný ke vzdálenému odpalování výbušnin + Usato per l'attivazione a distanza degli esplosivi + Robbanóanyagok távoli robbantásához való + Usado para acionar explosivos remotamente + Используется для удаленной детонации СВУ + + + M57 Firing Device + M57 Zündvorrichtung + Dispositivo de detonación M57 + Zapalnik M57 + Dispositif de mise à feu M57 + Odpalovací zařízení M57 + Detonatore M57 + M57 Gyújtóeszköz + M57 Dispositivo de Detonação + Взрыватель M57 + + + Used to remotely trigger explosives + Wird benutzt um Sprengstoffe fernzuzünden + Usado para detonar remotamente explosivos + Używany do zdalnego detonowania ładunków wybuchowych + Utilisé pour déclencher des explosifs à distance + Používané ke vzdálenému odpalování výbušnin + Usato per l'attivazione a distanza degli esplosivi + Robbanóanyagok távoli robbantásához + Usado para acionar explosivos remotamente + Используется для удаленной детонации зарядов + + + M26 Firing Device + M26 Zündvorrichtung + Dispositivo de detonación MK26 + Zapalnik M26 + Dispositif de mise à feu M26 + Odpalovací zařízení M26 + Detonatore M26 + M26 Gyújtóeszköz + M26 Dispositivo de Detonação + Взрыватель M26 + + + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + + + Defusal Kit + Entschärfungskit + Kit de desactivación + Zestaw do rozbrajania + Kit de désamorçage + Zneškodňovací sada + Kit E.O.D. + Hatástalanító felszerelés + Kit de desarme + Комплект разминирования + + + Allows defusing of explosives + Erlaubt die Entschärfung von Sprengstoffen + Permite desactivar explosivos + Umożliwia rozbrajanie ładunków wybuchowych + Permet de désamorçer des explosifs + Dovoluje zneškodňování výbušnin + Consente la disattivazione degli ordigni esplosivi + Robbanóanyagok hatástalanítását teszi lehetővé + Permite o desarme de explosivos + Позволяет обезвреживать взрывчатку + + + Add to Speed Dial + Zur Schnellauswahl hinzufügen + Añadir a marcado rápido + Dodaj do szybkiego wybierania + Ajouter à la composition rapide + Přidat jako rychlou volbu + Aggiungi alla selezione rapida + Hozzáadás a gyorstárcsázóhoz + Adicionar à ligação rápida + Добавить в быстрый вызов + + + Clear + Löschen + Borrar + Usuń + Effacer + Čistý + Libera + Törlés + Limpar + Очистить + + + Dial + Wählen + Marcar + Wybierz numer + Composer + Vytočit + Composizione numero + Tárcsázás + Discar + Hабрать + + + Up + Hoch + Arriba + W górę + Haut + Nahoru + Sopra + Fel + Cima + Вызов + + + Down + Runter + Abajo + W dół + Bas + Dolu + Sotto + Le + Baixo + Сброс + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Mégsem + Cancelar + Отмена + + + Detonate Menu + "Zünden"-Menü + Menú de detonación + Menu detonacji + Menu de mise à feux + Menu Detonace + Menù di detonazione + Robbantási menü + Menu de detonação + Меню подрыва + + + Place Menu + "Platzieren"-Menü + Menú de colocación + Menu umieszczania + Menu de placement + Menu Umístění + Menù di collocamento + Elhelyezési menü + Menu de posicionamento + Меню установки + + + Defuse + Entschärfen + Desactivar + Rozbrój + Désamorçer + Zneškodnit + Disinnesca + Hatástalanítás + Desarmar + Обезвредить + + + Defusing Explosive... + Entschärfe Sprengstoff... + Desactivando explosivo... + Rozbrajanie ładunku... + Désamorçage des explosifs... + Zneškodňuji Výbušninu... + Esposivo in fase di disattivazione... + Robbanóanyag hatástalanítása... + Desarmando Explosivo... + Обезвреживание... + + + Timer + Zeitzünder + Temporizador + Czasomierz + Minuteur + Časovač + Cronometro + Időzítő + Timer + Таймер + + + Time: %1m %2s + Zeit: %1m %2s + Tiempo: %1m %2s + Czas: %1m %2s + Temps : %1m %2s + Čas: %1m %2s + Tempo : %1m %2s + Idő: %1m %2s + Tempo: %1m %2s + Время: %1m %2c + + + Set Time + Zeit einstellen + Configurar tiempo + Ustaw czas + Régler minuteur + Nastavit Čas + Modifica il conto alla rovescia + Idő beállítása + Configurar Tempo + Установить время + + + Select a Trigger + Wähle einen Zünder + Seleccionar un detonador + Wybierz zapalnik + Sélectionner une mise à feu + Zvolit Detonátor + Seleziona un attivatore + Gyújtóeszköz kiválasztása + Selecionar um Gatilho + Выберите детонатор + + + Select + Wählen + Seleccionar + Wybierz + Sélectionner + Zvolit + Seleziona + Kiválasztás + Selecionar + Выбрать + + + Pressure Plate + Płyta naciskowa + Placa de presión + Druckplatte + Plaque de pression + Nášlapná nástraha + Piastra a pressione + Nyomólap + Placa de pressão + Нажимная плита + + + Tripwire + Linka naciągu + Cable trampa + Stolperdraht + Fil de détente + Nástražný drát + Filo a inciampo + Botlódrót + Linha de tração + Растяжка + + + IR Sensor + Czujnik podczerwieni + Sensor IR + Infrarotsensor + Capteur IR + IR Značkovač + Sensore IR + Infravörös szenzor + Sensor IV + ИК сенсор + + + No triggers available for %1 + Brak dostępnych zapalników dla %1 + No hay detonadores disponibles para %1 + Keine Auslöser vorhanden für %1 + Pas de mise à feu disponible pour %1 + Žádný detonátor k dispozici pro %1 + Nessun attivatore disponibile per %1 + Nincs elérhető gyújtóeszköz ide: %1 + Nenhum gatilho disponível para %1 + Нет доступных взрывателей для %1 + + + IR Sensor (Side Attack) + Czujnik podczerwieni (wybuch na bok) + Sensor IR (ataque lateral) + Infrarotsensor (Seitenangriff) + Capteur IR (de flanc) + IR Značkovač (Výbuch stranou) + Sensore IR (attacco laterale) + Infravörös szenzor (Side Attack) + Sensor infravermelho (ataque lateral) + ИК сенсор (детонация вбок) + + + Magnetic Influence Sensor (Bottom Attack) + Czujnik magnetyczny (wybuch w górę) + Sensor IM (ataque inferior) + Magnetfeldsensor (Bodenangriff) + Capteur magnétique (par le bas) + Magnetický Senzor (Výbuch ze spoda) + Sensore Magnetico di Prossimità (attacco inferiore) + Mágneses mező érzékelő (Bottom Attack) + Influência magnética (ataque inferior) + Магнитный сенсор (детонация вверх) + + + No explosives on trigger. + Keine Sprengladungen auf diesem Auslöser. + Ningún explosivo en el detonador. + Pas d'explosif à mettre à feu. + Nessun esplosivo + Žádná výbušnina k odpálení. + Nincs robbanóanyag a gyújtóeszközhöz kötve. + Brak ładunków na zapalnik. + Nenhum explosivo no gatilho. + Взрыватель не подсоединён к взрывчатке + + + Dead Man's Switch + Totmannschalter + Mise à feu par relâchement de pression + Spínač mrtvého muže + Czuwak + Detonador de hombre muerto + Halott ember kapcsolója + Detonador do homem morto + Кнопка мертвеца + Detonatore a rilascio + + + Used to remotely trigger explosives when released. + Zündet Sprengladungen wenn losgelassen. + Déclenche la mise à feu d'un explosif lorsqu'il est libéré. + Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny + Używany w celu zdalnej detonacji ładunków, kiedy jego operator zostanie zabity. + Utilizado para detonar explosivos remotamente al soltarlo. + Robbanóanyagok távoli robbantásához + Usado para detonar remotamente o explosivo quando solto. + Используется для дистанционного подрыва, после смерти оператора. + Usato per attivare a distanza esplosivi al momento del rilascio + + + Pick up + Aufheben + Recoger + Sebrat + Podnieś + Ramasser + Felszedés + Поднять + Raccogli + Pegar + + + Explosive System + System ładunków wybuchowych + Sistema de explosivos + Sprengstoffsystem + Systém výbušnin + Sistema de explosivos + Robbanóanyag-rendszer + Взрывные устройства + + + Require specialists? + Wymagaj specjalistów? + ¿Requiere especialista? + Benötigt Sprengstoffexperten? + Vyžadovat specialistu? + Requer especialista? + Specialisták igénylése? + Требуется специалист? + + + Require explosive specialists to disable explosives? Default: No + Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie + Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No + Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein + Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne + Requer especialista em explosivos para desativar explosivos? Padrão: Não + Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem + Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет + + + Punish non-specialists? + Karaj nie-specjalistów? + ¿Penalizar a los no especialistas? + Bestrafe Nicht-Sprengstoffexperten? + Potrestat, pokud není specialista? + Punir não especialistas? + Nem-specialisták büntetése? + Штраф не-специалистам? + + + Increase the time it takes to complete actions for non-specialists? Default: Yes + Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak + Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si + Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja + Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano + Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim + Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen + Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет + + + Explode on defusal? + Explosão no desarmamento? + Eksplozja przy rozbrajaniu? + Explodovat při zneškodňování? + Explotar al desactivar? + Robbanás hatástalanításkor? + Взрыв при разминир.? + + + Enable certain explosives to explode on defusal? Default: Yes + Ativa certos explosivos para detonar no desarmamento? Padrão: Sim + Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak + Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano + ¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí + Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen + Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да + + + This module adjusts the settings related to explosives. + Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. + Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. + Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. + Este módulo permite personalizar as definições relacionadas a explosivos. + Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza. + Этот модуль управляет настройками, связанными со взрывными устройствами + + \ No newline at end of file diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 11d326a6dc..a7966ec334 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -1,60 +1,65 @@ - - - - - Show pointing indicator to self - Отображать пальце-индикатор для показывающего игрока - Pokaż indykator wskazywania palcem dla siebie - Saját mutatási indikátor megjelenítése - - - Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator - Отображать индикатор для показывающего игрока. Эта настройка не влияет на то, будутт ли другие игроки видеть индикатор - Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie. - Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. - - - Pointing indicator - Пальце-индикатор - Indykator palca - Ujj-indikátor - - - Color of the pointing indicator circle - Цвет индикатора пальце-указания - Kolor okręgu wyświetlanego przy wskazywaniu palcem - Mutatási indikátor körének színe - - - Action "point a finger at" - Действие "показать пальцем на" - Akcja "wskaż palcem" - Cselekvés "ujj rámutatása" - - - Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. - Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany. - Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. - - - Pointing Settings - Ustawienia wskazywania palcem - Ujj beállításai - - - Pointing Enabled - Aktywuj wskazywanie - Mutatás engedélyezése - - - Pointing Max Range - Maks. zasięg wskazywania - Ujj maximum hatótávja - - - Max range between players to show the pointing indicator [default: 4 meters] - Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] - A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] - - - + + + + + Show pointing indicator to self + Индикатор пальца для показывающего + Pokaż indykator wskazywania palcem dla siebie + Saját mutatási indikátor megjelenítése + + + Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator + Отображать индикатор указания пальцем для показывающего игрока. Эта настройка не влияет на то, будут ли другие игроки видеть индикатор + Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie. + Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. + + + Pointing indicator + Индикатор указания пальцем + Indykator palca + Ujj-indikátor + + + Color of the pointing indicator circle + Цвет индикатора указания пальцем + Kolor okręgu wyświetlanego przy wskazywaniu palcem + Mutatási indikátor körének színe + + + Action "point a finger at" + Действие "показать пальцем на" + Akcja "wskaż palcem" + Cselekvés "ujj rámutatása" + + + Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. + Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany. + Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. + Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать. + + + Pointing Settings + Ustawienia wskazywania palcem + Ujj beállításai + Настройки указания пальцем + + + Pointing Enabled + Aktywuj wskazywanie + Mutatás engedélyezése + Указание пальцем включено + + + Pointing Max Range + Maks. zasięg wskazywania + Ujj maximum hatótávja + Макс. дальность + + + Max range between players to show the pointing indicator [default: 4 meters] + Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] + A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] + Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра] + + + \ No newline at end of file diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index e871360bf3..07b22f549c 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -1,29 +1,35 @@ - - - - - Fulton MX-991 - Fulton MX-991 - - - Flashlight with red filter. For use on map. - Latarka z czerwonym filtrem. Używana do podświetlania mapy. - - - Maglite XL50 - Maglite XL50 - - - White mini flashlight. For use on map. - Mini latarka. Światło białe. Używana do podświetlania mapy. - - - KSF-1 - KSF-1 - - - Flashlight with red filter. For use on map. - Latarka z czerwonym filtrem. Używana do podświetlania mapy. - - + + + + + Fulton MX-991 + Fulton MX-991 + Fulton MX-991 + + + Flashlight with red filter. For use on map. + Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Фонарь с красным светофильтром. Для использования на карте. + + + Maglite XL50 + Maglite XL50 + Maglite XL50 + + + White mini flashlight. For use on map. + Mini latarka. Światło białe. Używana do podświetlania mapy. + Небольшой фонарик белого света. Для использования на карте. + + + KSF-1 + KSF-1 + KSF-1 + + + Flashlight with red filter. For use on map. + Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Фонарь с красным светофильтром. Для использования на карте. + + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 205fb50c75..46be307e1f 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,95 +1,105 @@ - - - - - Fragmentation Simulation - Symulacja fragmentacji - Simulación de fragmentación - Splittersimulation - Simulace fragmentace - Simulação de fragmentação - Repesz-szimuláció - - - Enable the ACE Fragmentation Simulation - Activa la simulación de fragmentación ACE - Aktywuje symulację fragmentacji ACE - Aktiviere die ACE-Splittersimulation - Povolit ACE simulaci fragmentace - Ativa a simulação de fragmentação do ACE - Az ACE repesz-szimuláció engedélyezése - - - Spalling Simulation - Simulación de astillamiento - Symulacja odprysków - Explosionssimulation - Simulace úlomků - Simulação de estilhaços - Pattogzás-szimuláció - - - Enable the ACE Spalling Simulation - Activa la simulación de astillamiento ACE - Aktywuje symulację odprysków ACE - Aktiviere ACE-Explosionssimulation - Povolit ACE simulaci úlomků - Ativa a simulação de estilhaços do ACE - Az ACE pattogzás-szimuláció engedélyezése - - - Maximum Projectiles Tracked - Máximos proyectiles rastreados - Maks. liczba śledzonych pocisków - Maximalzahl der verfolgten Projektile - Maximální počet sledovaných projektilů - Máximo de projéteis rastreados - Maximum követett repeszek - - - This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) - Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (>200 proyectiles en el aire a la vez) - To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). - Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) - Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) - Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) - Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) - - - Maximum Projectiles Per Frame - Máximos proyectiles por cuadro - Maximale Anzahl an Projektilen pro Frame - Maks. liczba pocisków na klatkę - Maximální počet projektilů ze jeden snímek - Projéteis máximos por quadro - Maximum repesz/képkocka - - - The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. - Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. - Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. - El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. - Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. - O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. - A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. - - - (SP Only) Frag/Spall Debug Tracing - (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento - (Tylko SP) Wizualny debug odł./odpr. - (Pouze SP) Debug sledování Frag/Úlomků - (nur SP) Splitter-/Explosions-Debug-Verfolgung - (Somente SP) Depuração de fragmentação e estilhaços traçantes - (Csak SP) Repesz/Pattogzás debug követés - - - (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. - (Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP. - (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. - (nur SP) Splitter-/Explosions-Debugging - (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. - (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. - (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. - - + + + + + Fragmentation Simulation + Symulacja fragmentacji + Simulación de fragmentación + Splittersimulation + Simulace fragmentace + Simulação de fragmentação + Repesz-szimuláció + Симуляция осколков + + + Enable the ACE Fragmentation Simulation + Activa la simulación de fragmentación ACE + Aktywuje symulację fragmentacji ACE + Aktiviere die ACE-Splittersimulation + Povolit ACE simulaci fragmentace + Ativa a simulação de fragmentação do ACE + Az ACE repesz-szimuláció engedélyezése + Включить симуляцию осколков ACE + + + Spalling Simulation + Simulación de astillamiento + Symulacja odprysków + Explosionssimulation + Simulace úlomků + Simulação de estilhaços + Pattogzás-szimuláció + Симуляция обломков + + + Enable the ACE Spalling Simulation + Activa la simulación de astillamiento ACE + Aktywuje symulację odprysków ACE + Aktiviere ACE-Explosionssimulation + Povolit ACE simulaci úlomků + Ativa a simulação de estilhaços do ACE + Az ACE pattogzás-szimuláció engedélyezése + Включить симуляцию обломков ACE + + + Maximum Projectiles Tracked + Máximos proyectiles rastreados + Maks. liczba śledzonych pocisków + Maximalzahl der verfolgten Projektile + Maximální počet sledovaných projektilů + Máximo de projéteis rastreados + Maximum követett repeszek + Макс. количество отслеживаемых снарядов + + + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (>200 proyectiles en el aire a la vez) + To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). + Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) + Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) + Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) + Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) + Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов) + + + Maximum Projectiles Per Frame + Máximos proyectiles por cuadro + Maximale Anzahl an Projektilen pro Frame + Maks. liczba pocisków na klatkę + Maximální počet projektilů ze jeden snímek + Projéteis máximos por quadro + Maximum repesz/képkocka + Макс. количество снарядов за кадр + + + The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. + Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. + Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. + El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. + Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. + O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. + A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. + Число обсчитываемых осколков за один кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. + + + (SP Only) Frag/Spall Debug Tracing + (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento + (Tylko SP) Wizualny debug odł./odpr. + (Pouze SP) Debug sledování Frag/Úlomků + (nur SP) Splitter-/Explosions-Debug-Verfolgung + (Somente SP) Depuração de fragmentação e estilhaços traçantes + (Csak SP) Repesz/Pattogzás debug követés + (Только для одиночной игры) Отслеживаение/отладка осколков + + + (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP. + (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. + (nur SP) Splitter-/Explosions-Debugging + (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. + (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. + (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. + (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. + + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 2e58162b15..566de6dd27 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -1,153 +1,159 @@ - - - - - Earplugs - Ohrenstöpsel - Tapones para los oídos - Stopery do uszu - Špunty - Беруши - Bouchons Anti-Bruits - Füldugó - Protetor auricular - Tappi auricolari - - - Protective Earplugs allow the wearer to be near loud weaponry without damage to his hearing. - Schützende Ohrenstöpsel, die es dem Träger ermöglichen, sich in der Nähe lauter Waffen aufzuhalten ohne Gehörschäden davonzutragen.. - Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición. - Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu. - Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní. - Беруши позволяют носителю находиться возле громкого вооружения без потери слуха. - Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus. - Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. - Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. - Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. - - - Earplugs in - Ohrenstöpsel rein - Poner tapones - Włóż stopery - Dát špunty do uší - Надеть беруши - Bouchons mis - Füldugó berakva - Protetores colocados - Indossa i tappi auricolari - - - Earplugs out - Ohrenstöpsel raus - Quitar tapones - Wyjmij stopery - Vyndat špunty z uší - Снять беруши - Bouchons enlevés - Füldugó kivéve - Protetores retirados - Levati i tappi auricolari - - - Earplugs in - Ohrenstöpsel drinnen - Tapones puestos - Stopery włożone - Špunty v uších - Беруши надеты - Bouchons mis - Füldugó berakva - Protetores colocados - Indossa i tappi auricolari - - - Earplugs out - Ohrenstöpsel raus - Tapones quitados - Stopery wyjęte - Špunty venku z uší - Беруши сняты - Bouchons enlevés - Füldugó kivéve - Protetores retirados - Levati i tappi auricolari - - - You have no earplugs - Keine Ohrenstöpsel im Inventar - No tienes tapones para los oídos - Nie masz stoperów - Nemáš žádné špunty - У вас нет беруш - Vous n'avez pas de bouchons anti-bruits - Nincsen füldugód - Você não possui protetores auriculares - Non hai i tappi auricolari - - - No inventory space - Kein Platz im Inventar - Sin espacio en el inventario - Brak miejsca w ekwipunku - Pas de place dans l'inventaire - Není místo v inventáři - Non hai abbastanza spazio - Não há espaço no inventário - Nincs több hely - Нет места в инвентаре - - - Disable ear ringing - Désactiver le bourdonnement - Desactivar zumbido de oídos - Отключить эффект баротравмы - Knalltrauma deaktivieren - Vypnout pískání v uších - Wyłącz dzwonienie w uszach - Fülcsengés letiltása - Disabilita i fischi nelle orecchie - Desabilitar zumbido de ouvidos - - - Hearing - Słuch - Audición - Gehör - Sluch - Audição - Hallás - - - Combat Deafness - Wł. głuchotę bojową - ¿Habilitar sordera de combate? - Aktiviere Taubheit im Gefecht? - Povolit ztrátu sluchu? - Ativar surdez em combate? - Harci süketség engedélyezése? - - - Reduces the hearing ability as the player takes hearing damage - Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów - Habilita la sordera de combate - Aktiviere Taubheit im Gefecht? - Povolit ztrátu sluchu? - Ativar surdez em combate? - Harci süketség engedélyezése? - - - Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection - Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. - Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. - Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. - Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. - - - Effect Zeus RC - - - Allow zeus remote controlled units to be able to take hearing damage. - - - + + + + + Earplugs + Ohrenstöpsel + Tapones para los oídos + Stopery do uszu + Špunty + Беруши + Bouchons Anti-Bruits + Füldugó + Protetor auricular + Tappi auricolari + + + Protective Earplugs allow the wearer to be near loud weaponry without damage to his hearing. + Schützende Ohrenstöpsel, die es dem Träger ermöglichen, sich in der Nähe lauter Waffen aufzuhalten ohne Gehörschäden davonzutragen.. + Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición. + Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu. + Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní. + Беруши позволяют носителю находиться возле громкого вооружения без потери слуха. + Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus. + Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. + Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. + Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. + + + Earplugs in + Ohrenstöpsel rein + Poner tapones + Włóż stopery + Dát špunty do uší + Надеть беруши + Bouchons mis + Füldugó berakva + Protetores colocados + Indossa i tappi auricolari + + + Earplugs out + Ohrenstöpsel raus + Quitar tapones + Wyjmij stopery + Vyndat špunty z uší + Снять беруши + Bouchons enlevés + Füldugó kivéve + Protetores retirados + Levati i tappi auricolari + + + Earplugs in + Ohrenstöpsel drinnen + Tapones puestos + Stopery włożone + Špunty v uších + Беруши надеты + Bouchons mis + Füldugó berakva + Protetores colocados + Indossa i tappi auricolari + + + Earplugs out + Ohrenstöpsel raus + Tapones quitados + Stopery wyjęte + Špunty venku z uší + Беруши сняты + Bouchons enlevés + Füldugó kivéve + Protetores retirados + Levati i tappi auricolari + + + You have no earplugs + Keine Ohrenstöpsel im Inventar + No tienes tapones para los oídos + Nie masz stoperów + Nemáš žádné špunty + У вас нет беруш + Vous n'avez pas de bouchons anti-bruits + Nincsen füldugód + Você não possui protetores auriculares + Non hai i tappi auricolari + + + No inventory space + Kein Platz im Inventar + Sin espacio en el inventario + Brak miejsca w ekwipunku + Pas de place dans l'inventaire + Není místo v inventáři + Non hai abbastanza spazio + Não há espaço no inventário + Nincs több hely + Нет места в инвентаре + + + Disable ear ringing + Désactiver le bourdonnement + Desactivar zumbido de oídos + Отключить звон в ушах + Knalltrauma deaktivieren + Vypnout pískání v uších + Wyłącz dzwonienie w uszach + Fülcsengés letiltása + Disabilita i fischi nelle orecchie + Desabilitar zumbido de ouvidos + + + Hearing + Słuch + Audición + Gehör + Sluch + Audição + Hallás + Слух + + + Combat Deafness + Wł. głuchotę bojową + ¿Habilitar sordera de combate? + Aktiviere Taubheit im Gefecht? + Povolit ztrátu sluchu? + Ativar surdez em combate? + Harci süketség engedélyezése? + Оглушение + + + Reduces the hearing ability as the player takes hearing damage + Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów + Habilita la sordera de combate + Aktiviere Taubheit im Gefecht? + Povolit ztrátu sluchu? + Ativar surdez em combate? + Harci süketség engedélyezése? + Уменьшает способность игроков слышать при повреждении слуха + + + Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection + Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. + Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. + Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. + Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. + Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. + + + Effect Zeus RC + Влияет на юнита Зевса + + + Allow zeus remote controlled units to be able to take hearing damage. + Позволить юнитам, контролируемым Зевсом, получать повреждение слуха. + + + \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 990d7f90bf..a233d4953d 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,285 +1,293 @@ - - - - - Always display cursor for self interaction - Immer den Cursor für Selbst-Interaktionen anzeigen. - Mostrar siempre el cursor para la interacción propia - Показывать курсор (взаимодействия с собой) - Zobrazit kurzor v menu pro vlastní interakci - 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 interazioni su se stessi - Sempre mostrar cursor para interação pessoal - - - Always display cursor for interaction - Mostrar siempre el cursor para la interacción - Toujours afficher le curseur pour les interactions - Mostra sempre il cursore per le interazioni - Zawsze wyświetlaj kursor dla interakcji - Показывать курсор (взаимодействие) - Zobrazit kurzor v menu pro interakci - Immer den Cursor für Fremd-Interaktionen anzeigen - Mindig legyen a cselekvés kurzorja látható - Sempre mostrar cursor para interação - - - Display interaction menus as lists - Mostrar los menus de interacción como listas - Меню взаимодействий в виде списка - Afficher le menu d'interaction sous forme de liste - Mostra il menù di interazione come lista - Wyświetlaj menu interakcji jako listę - Zobrazit menu interakce jako seznam - Interaktionsmenü in Listen anzeigen - Cselekvő menük listaként való megjelenítése - Mostrar menu de interação como listas - - - Interact Key - Fremdinteraktionsmenü-Taste - Tecla de interacción - Клавиша взаимодействия - Klávesa pro interakci - Klawisz interakcji - Touche d'interaction - Cselekvő gomb - Tasto interazione - Tecla de Interação - - - Self Interaction Key - Eigeninteraktionsmenü-Taste - Tecla de interacción propia - Клавиша взаимодействия (с собой) - Klávesa pro vlastní interakci - Klawisz własnej interakcji - Touche d'interaction personnelle - Saját cselekvő gomb - Tasto interazione su se stessi - Tecla de Interação Pessoal - - - Self Actions - Selbst-Aktionen - Acciones propias - Действия с собой - Vlastní akce - Własne akcje - Interaction personnelle - Saját cselekvések - Interazioni su se stessi - Ações Pessoais - - - Vehicle Actions - Fahrzeug-Aktionen - Acciones de vehículo - Действия на транспорте - Interakce s vozidly - Akcje pojazdu - Interaction véhicule - Járműves cselekvések - Interazioni con veicoli - Ações de Veículos - - - Zeus Actions - Akcje Zeusa - Akce Zeuse - Acciones Zeus - Zeus cselekvések - Ações do Zeus - - - Interaction - Text Max - Interakcja - Tekst max - Interakce - Text Max - Interaction - Texte Max - Interaktionstextfarbe Max - Interazioni - Testo Massimo - Взаимодействие - Текст Макс. - Interacción - Texto al max. - Cselekvés - Szöveg max. - Interação - Max. de Texto - - - Interaction - Text Min - Interakcja - Tekst min - Interakce - Text Min - Interaction - Texte Min - Interaktionstextfarbe Min - Interazioni - Testo Minimo - Взаимодействие - Текст Мин. - Interacción - Texto al min. - Cselekvés - Szöveg min. - Interação - Min. de Texto - - - Interaction - Shadow Max - Interakcja - Cień max - Interakce - Stín Max - Interaction - Ombre Max - Interaktionstextschatten Max - Interazioni - Ombra Massima - Взаимодействие - Тень Макс. - Interacción - Sombras al max. - Cselekvés - Árnyék max. - Interação - Max. de Sombra - - - Interaction - Shadow Min - Interakcja - Cień min - Interakce - Stín Min - Interaction - Ombre Min - Interaktionstextschatten Min - Interazioni - Ombra Minima - Взаимодействие - Тень Мин. - Interacción - Sombras al min. - Cselekvés - Árnyék min. - Interação - Min. de Sombra - - - Keep cursor centered - Garder le curseur au centre - Центрировать курсор - Cursor zentriert halten - Kurzor középen tartása - Utrzymaj kursor wyśrodkowany - Mantener el cursor centrado - Udržuj kurzor na středu - Manter o cursor centralizado - Mantieni il cursore centrato - - - Keeps cursor centered and pans the option menu around. Useful if screen size is limited. - Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena. - Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée. - Центрирует курсор и двигает само меню опций. Полезно при ограниченном размере экрана. - Hält den Cursor zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen. - Középen tartja a kurzort, és a menüelemeket mozgatja. Hasznos lehetőség korlátozott képméretnél. - Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony. - Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado. - Manter o cursor centralizado e mover o menu de opções. Útil caso o tamanho da tela seja limitado. - Mantieni il cursore centrato e sposta il menù intorno. Utile se lo schermo è piccolo. - - - Do action when releasing menu key - Aktion nach Loslassen der Taste ausführen - Wykonuj akcje po puszczeniu klawisza menu - Provést akci při pustění klávesy menu - Action au relachement de touche - Выполнять действие при отпускании кнопки взаимодействия - Realizar la acción al soltar la tecla menu - Execute a ação quando soltar a tecla de menu - Cselekvés végrehajtása a menügomb elengedésekor - Esegui l'azione quando rilasci il tasto menu - - - Interaction Text Size - Velikost textu interakce - Menü-Schriftgröße - Taille du texte d'interaction - Размер текста (меню взаимодействия) - Tamaño del texto de interacción - Rozmiar tekstu interakcji - Tamanho do texto de interação - Cselekvő szöveg mérete - Dimensione del testo d'interazione - - - Interaction Text Shadow - Stín textu interakce - Menü-Hintergrundschatten - Ombre du texte d'interaction - Тень от текста (меню взаимодействия) - Sombra del texto de interacción - Cień tekstu interakcji - Sombra do texto de interação - Cselekvő szöveg árnyéka - Ombra del testo d'interazione - - - Allows controlling the text's shadow. Outline ignores custom shadow colors. - Umožňuje změnit stíny textu v menu interakce. Barva stínu je u tahu písma ignorována. - Stellt den Hintergrundschatten ein. Die Einstellung 'Kontur' ignoriert die Farbe des Schattens. - Permet de controler l'ombre du texte. Le contour ne prend pas en compte la couleur des ombres. - Дает возможность изменять тень, отбрасываемую текстом. Контур не зависит от выбранного цвета тени. - Permite contolar la sombra del texto. El contorno ignora los colores personalizados de la sombra. - Pozwala kontrolować cień tekstu. Kontury ignorują niestandardowe kolory cienia. - Permite controlar a sombra do texto. Contorno ignora sombras com cores customizadas. - Hozzáférést biztosít a szöveg árnyékának kezeléséhez. A körvonal nem veszi figyelembe az egyedi árnyékszíneket. - Permette di controllare l'ombra del testo. L'impostazione "Contorno" ignora il colore dell'ombra. - - - Outline - Kontura - Kontur - Contour - Контур - Contorno - Kontur - Contorno - Körvonal - Contorno - - - Interaction menu background - Tło menu interakcji - Fondo del menú de interacción - Pozadí menu interakce - Interaktionsmenü-Hintergrund - Fundo do menu de interação - Cselekvő menü háttere - - - Blur the background while the interaction menu is open. - Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji - Desenfocar el fondo mientras el menú de interacción está abierto. - Rozmazat obraz pokud je interakční menu otevřené. - Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. - Desfocar o fundo enquanto o menu de interação está aberto. - A háttér elmosása a cselekvő menü használata alatt. - - - Blur screen - Rozmycie ekranu - Pantalla de desenfoque - Rozmazaný obraz - Verschwommenes Bild - Desfoque de tela - Kép elmosása - - - Black - Przyciemnienie ekranu - Negro - Černý obraz - Preto - Schwarz - Fekete - - - Show actions for buildings - Pokazuj akcje dla budynków - Zobrazit akci pro budovy - Mostrar acciones para edificios - Cselekvések mutatása épületeknél - Mostrar ações para edifícios - - - Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) - Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. - Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) - Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) - Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) - Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) - - - Interaction Menu - Menu interakcji - - - + + + + + Always display cursor for self interaction + Immer den Cursor für Selbst-Interaktionen anzeigen. + Mostrar siempre el cursor para la interacción propia + Показывать курсор (взаимодействия с собой) + Zobrazit kurzor v menu pro vlastní interakci + 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 interazioni su se stessi + Sempre mostrar cursor para interação pessoal + + + Always display cursor for interaction + Mostrar siempre el cursor para la interacción + Toujours afficher le curseur pour les interactions + Mostra sempre il cursore per le interazioni + Zawsze wyświetlaj kursor dla interakcji + Показывать курсор (взаимодействие) + Zobrazit kurzor v menu pro interakci + Immer den Cursor für Fremd-Interaktionen anzeigen + Mindig legyen a cselekvés kurzorja látható + Sempre mostrar cursor para interação + + + Display interaction menus as lists + Mostrar los menus de interacción como listas + Меню взаимодействий в виде списка + Afficher le menu d'interaction sous forme de liste + Mostra il menù di interazione come lista + Wyświetlaj menu interakcji jako listę + Zobrazit menu interakce jako seznam + Interaktionsmenü in Listen anzeigen + Cselekvő menük listaként való megjelenítése + Mostrar menu de interação como listas + + + Interact Key + Fremdinteraktionsmenü-Taste + Tecla de interacción + Клавиша взаимодействия + Klávesa pro interakci + Klawisz interakcji + Touche d'interaction + Cselekvő gomb + Tasto interazione + Tecla de Interação + + + Self Interaction Key + Eigeninteraktionsmenü-Taste + Tecla de interacción propia + Клавиша взаимодействия (с собой) + Klávesa pro vlastní interakci + Klawisz własnej interakcji + Touche d'interaction personnelle + Saját cselekvő gomb + Tasto interazione su se stessi + Tecla de Interação Pessoal + + + Self Actions + Selbst-Aktionen + Acciones propias + Действия с собой + Vlastní akce + Własne akcje + Interaction personnelle + Saját cselekvések + Interazioni su se stessi + Ações Pessoais + + + Vehicle Actions + Fahrzeug-Aktionen + Acciones de vehículo + Действия на транспорте + Interakce s vozidly + Akcje pojazdu + Interaction véhicule + Járműves cselekvések + Interazioni con veicoli + Ações de Veículos + + + Zeus Actions + Akcje Zeusa + Akce Zeuse + Acciones Zeus + Zeus cselekvések + Ações do Zeus + Действия Зевса + + + Interaction - Text Max + Interakcja - Tekst max + Interakce - Text Max + Interaction - Texte Max + Interaktionstextfarbe Max + Interazioni - Testo Massimo + Взаимодействие - Текст Макс. + Interacción - Texto al max. + Cselekvés - Szöveg max. + Interação - Max. de Texto + + + Interaction - Text Min + Interakcja - Tekst min + Interakce - Text Min + Interaction - Texte Min + Interaktionstextfarbe Min + Interazioni - Testo Minimo + Взаимодействие - Текст Мин. + Interacción - Texto al min. + Cselekvés - Szöveg min. + Interação - Min. de Texto + + + Interaction - Shadow Max + Interakcja - Cień max + Interakce - Stín Max + Interaction - Ombre Max + Interaktionstextschatten Max + Interazioni - Ombra Massima + Взаимодействие - Тень Макс. + Interacción - Sombras al max. + Cselekvés - Árnyék max. + Interação - Max. de Sombra + + + Interaction - Shadow Min + Interakcja - Cień min + Interakce - Stín Min + Interaction - Ombre Min + Interaktionstextschatten Min + Interazioni - Ombra Minima + Взаимодействие - Тень Мин. + Interacción - Sombras al min. + Cselekvés - Árnyék min. + Interação - Min. de Sombra + + + Keep cursor centered + Garder le curseur au centre + Центрировать курсор + Cursor zentriert halten + Kurzor középen tartása + Utrzymaj kursor wyśrodkowany + Mantener el cursor centrado + Udržuj kurzor na středu + Manter o cursor centralizado + Mantieni il cursore centrato + + + Keeps cursor centered and pans the option menu around. Useful if screen size is limited. + Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena. + Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée. + Центрирует курсор и двигает само меню опций. Полезно при ограниченном размере экрана. + Hält den Cursor zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen. + Középen tartja a kurzort, és a menüelemeket mozgatja. Hasznos lehetőség korlátozott képméretnél. + Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony. + Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado. + Manter o cursor centralizado e mover o menu de opções. Útil caso o tamanho da tela seja limitado. + Mantieni il cursore centrato e sposta il menù intorno. Utile se lo schermo è piccolo. + + + Do action when releasing menu key + Aktion nach Loslassen der Taste ausführen + Wykonuj akcje po puszczeniu klawisza menu + Provést akci při pustění klávesy menu + Action au relachement de touche + Выполнять действие при отпускании кнопки взаимодействия + Realizar la acción al soltar la tecla menu + Execute a ação quando soltar a tecla de menu + Cselekvés végrehajtása a menügomb elengedésekor + Esegui l'azione quando rilasci il tasto menu + + + Interaction Text Size + Velikost textu interakce + Menü-Schriftgröße + Taille du texte d'interaction + Размер текста (меню взаимодействия) + Tamaño del texto de interacción + Rozmiar tekstu interakcji + Tamanho do texto de interação + Cselekvő szöveg mérete + Dimensione del testo d'interazione + + + Interaction Text Shadow + Stín textu interakce + Menü-Hintergrundschatten + Ombre du texte d'interaction + Тень от текста (меню взаимодействия) + Sombra del texto de interacción + Cień tekstu interakcji + Sombra do texto de interação + Cselekvő szöveg árnyéka + Ombra del testo d'interazione + + + Allows controlling the text's shadow. Outline ignores custom shadow colors. + Umožňuje změnit stíny textu v menu interakce. Barva stínu je u tahu písma ignorována. + Stellt den Hintergrundschatten ein. Die Einstellung 'Kontur' ignoriert die Farbe des Schattens. + Permet de controler l'ombre du texte. Le contour ne prend pas en compte la couleur des ombres. + Дает возможность изменять тень, отбрасываемую текстом. Контур не зависит от выбранного цвета тени. + Permite contolar la sombra del texto. El contorno ignora los colores personalizados de la sombra. + Pozwala kontrolować cień tekstu. Kontury ignorują niestandardowe kolory cienia. + Permite controlar a sombra do texto. Contorno ignora sombras com cores customizadas. + Hozzáférést biztosít a szöveg árnyékának kezeléséhez. A körvonal nem veszi figyelembe az egyedi árnyékszíneket. + Permette di controllare l'ombra del testo. L'impostazione "Contorno" ignora il colore dell'ombra. + + + Outline + Kontura + Kontur + Contour + Контур + Contorno + Kontur + Contorno + Körvonal + Contorno + + + Interaction menu background + Tło menu interakcji + Fondo del menú de interacción + Pozadí menu interakce + Interaktionsmenü-Hintergrund + Fundo do menu de interação + Cselekvő menü háttere + Фон меню взаимодействия + + + Blur the background while the interaction menu is open. + Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji + Desenfocar el fondo mientras el menú de interacción está abierto. + Rozmazat obraz pokud je interakční menu otevřené. + Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. + Desfocar o fundo enquanto o menu de interação está aberto. + A háttér elmosása a cselekvő menü használata alatt. + Размыть фон, пока открыто меню взаимодействия. + + + Blur screen + Rozmycie ekranu + Pantalla de desenfoque + Rozmazaný obraz + Verschwommenes Bild + Desfoque de tela + Kép elmosása + Размытый + + + Black + Przyciemnienie ekranu + Negro + Černý obraz + Preto + Schwarz + Fekete + Черный + + + Show actions for buildings + Pokazuj akcje dla budynków + Zobrazit akci pro budovy + Mostrar acciones para edificios + Cselekvések mutatása épületeknél + Mostrar ações para edifícios + Показывать действия для зданий + + + Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) + Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. + Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) + Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) + Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) + Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) + Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах) + + + Interaction Menu + Menu interakcji + Меню взаимодействия + + + \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 65ca6df016..0467ee316b 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,820 +1,822 @@ - - - - - Interactions - Interaktionen - Interacciones - Interakce - Interakcje - Interactions - Взаимодействия - Cselekvések - Interazioni - Interaçãoes - - - Torso - Torse - Torso - Torso - Trup - Tors - Торс - Testtörzs - Torso - Torso - - - Head - Tête - Kopf - Cabeza - Hlava - Głowa - Голова - Fej - Testa - Cabeça - - - Left Arm - Bras gauche - Linker Arm - Brazo izquierdo - Levá paže - Lewe ramię - Левая рука - Bal kar - Braccio sinistro - Braço Esquerdo - - - Right Arm - Rechter Arm - Brazo derecho - Pravá paže - Prawe ramię - Bras droit - Правая рука - Jobb kar - Braccio destro - Braço Direito - - - Left Leg - Linkes Bein - Pierna izquierda - Levá noha - Lewa noga - Jambe gauche - Левая нога - Bal láb - Gamba sinistra - Perna Esquerda - - - Right Leg - Rechtes Bein - Pierna derecha - Pravá noha - Prawa noga - Jambe droite - Правая нога - Jobb láb - Gamba destra - Perna Direita - - - Weapon - Arme - Waffe - Arma - Zbraň - Broń - Оружие - Fegyver - Arma - Arma - - - Interaction Menu - Interaktionsmenü - Menú de interacción - Menu interakcji - Menu interakce - Menu d'interaction - Меню взаимодействия - Cselekvő menü - Menu de Interação - Menù interazione - - - Interaction Menu (Self) - Interaktionsmenü (selbst) - Menú de interacción (Propio) - Menu interakcji (własne) - Menu interakce (vlastní) - Menu d'interaction (Perso) - Меню взаимодействия (с собой) - Cselekvő menü (saját) - Menu de Interação (Individual) - Menù interazione (individuale) - - - Open / Close Door - Tür öffnen / schließen - Abrir / Cerrar puerta - Otwórz / Zamknij drzwi - Otevřít / Zavřít dveře - Ouvrir / Fermer Portes - Открыть / Закрыть двери - Ajtó nyitása / zárása - Abrir / Fechar Porta - Apri / Chiudi la porta - - - Lock Door - Tür sperren - Bloquear puerta - Verrouiller Porte - Blocca la porta - Заблокировать дверь - Trancar Porta - Ajtó bezárása - Zablokuj drzwi - Zamknout dveře - - - Unlock Door - Tür entsperren - Desbloquear puerta - Déverrouiller Porte - Sblocca la porta - Разблокировать дверь - Destrancar Porta - Zár kinyitása - Odblokuj drzwi - Odemknout dveře - - - Locked Door - Tür gesperrt - Puerta bloqueada - Porte Verrouillée - Porta bloccata - Дверь заблокирована - Porta Trancada - Zárt ajtó - Zablokowano drzwi - Zamčené dveře - - - Unlocked Door - Tür entsperrt - Puerta desbloqueada - Porte Déverrouillée - Porta sbloccata - Дверь разблокирована - Porta Destrancada - Nyitott ajtó - Odblokowano drzwi - Odemčené dveře - - - Join group - Gruppe beitreten - Unirse al grupo - Dołącz do grupy - Přidat se do skupiny - Rejoindre Groupe - Вступить в группу - Csatlakozás a csoporthoz - Unir-se ao grupo - Unisciti alla squadra - - - Leave Group - Gruppe verlassen - Dejar grupo - Opuść grupę - Opustit skupinu - Quitter Groupe - Выйти из группы - Csoport elhagyása - Deixar grupo - Lascia la squadra - - - Become Leader - Grp.-führung übern. - Asumir el liderazgo - Przejmij dowodzenie - Stát se velitelem - Devenir Chef de groupe - Стать лидером - Vezetés átvétele - Tornar-se Líder - Prendi il comando - - - DANCE! - TANZEN! - BAILAR! - TAŃCZ! - TANČIT! - Danse! - ТАНЦЕВАТЬ! - TÁNC! - DANCE! - DANZA! - - - Stop Dancing - Tanzen abbrechen - Dejar de bailar - Przestań tańczyć - Přestat tancovat - Arrêter de danser - Прекратить танцевать - Tánc abbahagyása - Parar de dançar - Smetti di ballare - - - << Back - << Zurück - << Atrás - << Wstecz - << Zpět - << Retour - << Назад - << Vissza - << Voltar - << Indietro - - - Gestures - Gesten - Gestos - Gesty - Posunky - Signaux - Жесты - Kézjelek - Gestos - Gesti - - - Attack - Angreifen - Atacar - Do ataku - Zaútočit - Attaquer - Атаковать - Támadás - Atacar - Attaccare - - - Advance - Vordringen - Avanzar - Naprzód - Postoupit - Avancer - Продвигаться - Előre - Avançar - Avanzare - - - Go - Los - Adelante - Szybko - Jít - Aller - Идти - Mozgás - Mover-se - Muoversi - - - Follow - Folgen - Seguirme - Za mną - Následovat - Suivre - Следовать - Utánam - Seguir - Seguire - - - Point - Zeigen - Señalar - Wskazać - Ukázat - Pointer - Точка - Mutat - Apontar - Puntare a - - - Up - Aufstehen - Arriba - Do góry - Vztyk - Debout - Вверх - Fel - Acima - Alzarsi - - - Cover - Deckung - Cubrirse - Do osłony - Krýt se - A couvert - Укрыться - Fedezékbe - Proteger-se - Copertura - - - Cease Fire - Feuer einstellen - Alto el fuego - Wstrzymać ogień - Zastavit palbu - Halte au feu - Прекратить огонь - Tüzet szüntess - Cessar Fogo - Cessare il Fuoco - - - Freeze - Keine Bewegung - Alto - Stać - Stát - Halte - Замереть - Állj - Alto - Fermi - - - Hi - Hallo - Hola - Witaj - Ahoj - Salut - Привет - Helló - Olá - Ciao - - - Put weapon on back - Waffe wegstecken - Arma a la espalda - Umieść broń na plecach - Dát zbraň na záda - Arme à la bretelle - Повесить оружие на спину - Fegyvert hátra - Colocar arma nas costas - Metti l'arma in spalla - - - Tap Shoulder - Auf Schulter klopfen - Tocar el hombro - Klepnij w ramię - Poklepat na rameno - Taper sur l'épaule - Похлопать по плечу - Vállveregetés - Tocar ombro - Dai un colpetto - - - You were tapped on the RIGHT shoulder - Te tocaron el hombro DERECHO - Dir wurde auf die rechte Schulter geklopft - On te tape sur l'épaule droite - Zostałeś klepnięty w prawe ramię - Megveregették a JOBB válladat. - Někdo tě poklepal na PRAVÉ rameno - Вас похлопали по ПРАВОМУ плечу - Você foi tocado no ombro - Ti è stato dato un colpetto sulla spalla destra - - - You were tapped on the LEFT shoulder. - Te tocaron el hombro IZQUIERDO. - Dir wurde auf die linke Schulter geklopft - On te tape sur l'épaule gauche - Zostałeś klepnięty w lewe ramię - Megveregették a BAL válladat. - Někdo tě poklepal na LEVÉ rameno - Вас похлопали по ЛЕВОМУ плечу - Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla sinistra - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Отменить - Cancelar - Mégse - - - Select - Wählen - Seleccionar - Wybierz - Sélectionner - Zvolit - Seleziona - Выбрать - Selecionar - Kiválaszt - - - Go Away! - Geh Weg! - Aléjate! - Odejdź! - Jděte pryč! - Allez-vous-en! - Уходите отсюда! - Tűnés! - Vá Embora! - Via di qui! - - - Get Down! - Auf den Boden! - Al suelo! - Padnij! - K zemi! - A terre! - A földre! - Ложись! - Abaixe-se! - A terra! - - - Team Management - Gruppenverwaltung - Gestión de equipo - Gestion d'équipe - Zarządzanie oddziałem - Správa týmu - Управление группой - Gerenciamento de Equipe - Organizzazione Squadra - Csapat kezelése - - - Red - Rot - Rojo - Rouge - Czerwonych - Červený - Красный - Vermelha - Rosso - Piros - - - Green - Grün - Verde - Vert - Zielonych - Zelený - Зеленый - Verde - Verde - Zöld - - - Blue - Blau - Azul - Bleu - Niebieskich - Modrý - Синий - Azul - Blu - Kék - - - Yellow - Gelb - Amarillo - Jaune - Żółtych - Žlutý - Жёлтый - Amarela - Giallo - Sárga - - - Assign Red - Rot zuweisen - Asignar a rojo - Przydziel do czerwonych - Atribuir Vermelho - Hozzávonás a Piroshoz - Přiřadit k červeným - Назначить в Красную группу - Assigner à rouge - Assegna al team rosso - - - Assign Green - Grün zuweisen - Asignar a verde - Przydziel do zielonych - Atribuir Verde - Hozzávonás a Zöldhöz - Přiřadit k zeleným - Назначить в Зеленую группу - Assigner à vert - Assegna al team verde - - - Assign Blue - Blau zuweisen - Asignar a azul - Przydziel do niebieskich - Atribuir Azul - Hozzávonás a Kékhez - Přiřadit k modrým - Назначить в Синюю группу - Assigner à bleu - Assegna al team blu - - - Assign Yellow - Gelb zuweisen - Asignar a amarillo - Przydziel do żółtych - Atribuir Amarelo - Hozzávonás a Sárgához - Přiřadit ke žlutým - Назначить в Желтую группу - Assigner à jaune - Assegna al team giallo - - - Join Red - Rot beitreten - Unirse a rojo - Dołącz do czerwonych - Entrar em Vermelho - Belépés a Pirosba - Připojit k červeným - Присоединиться к Красной группе - Rejoindre rouge - Unirsi al team rosso - - - Join Green - Grün beitreten - Unirse a verde - Dołącz do zielonych - Entrar em Verde - Belépés a Zöldbe - Připojit k zeleným - Присоединиться к Зеленой группе - Rejoindre vert - Unirsi al team verde - - - Join Blue - Blau beitreten - Unirse a azul - Dołącz do niebieskich - Entrar em Azul - Belépés a Kékbe - Připojit k modrým - Присоединиться к Синей группе - Rejoindre bleu - Unirsi al team blu - - - Join Yellow - Gelb beitreten - Unirse a amarillo - Dołącz do żółtych - Entrar em Amarelo - Belépés a Sárgába - Připojit ke žlutým - Присоединиться к Жёлтой группе - Rejoindre jaune - Unirsi al team giallo - - - You joined Team %1 - Du bist Gruppe %1 beigetreten - Te has unido al equipo %1 - Tu as rejoint l'équipe %1 - Dołączyłeś do %1 - Připojil ses do %1 týmu - Вы присоединились к группе %1 - Você uniu-se à Equipe %1 - Sei entrato nel team %1 - Csatlakoztál a %1 csapathoz - - - Leave Team - Gruppe verlassen - Dejar equipo - Quitter l'équipe - Opuść drużynę - Opustit tým - Покинуть группу - Deixar Equipe - Lascia il team - Csapat elhagyása - - - You left the Team - Du hast die Gruppe verlassen - Has dejado el equipo - Tu as quitté l'équipe - Opuściłeś drużynę - Opustil jsi tým - Вы покинули группу - Você deixou a Equipe - Hai lasciato il team - Elhagytad a csapatot - - - Pardon - Begnadigen - Perdonar - Przebacz - Pardon - Pardon - Извините - Perdão - Perdona - Megbocsátás - - - Scroll - Scrollen - Przewiń - Défilement - Desplazar - Пролистать - Rolar - Scorri - Görgetés - Otáčení - - - Modifier Key - Modifikator-Taste - Modyfikator - Modifier la touche - Tecla modificadora - Клавиша-модификатор - Tecla Modificadora - Tasto modifica - Módosító billentyű - Modifikátor - - - Not in Range - Außer Reichweite - Hors de portée. - Fuera de rango - Слишком далеко - Fora do Alcançe - Hatótávolságon kívül - Poza zasięgiem - Mimo dosah - Fuori limite - - - Equipment - Ausrüstung - Equipamiento - Équipement - Ekwipunek - Vybavení - Felszerelés - Снаряжение - Equipaggiamento - Equipamento - - - Push - Schieben - Empujar - Pousser - Pchnij - Odstrčit - Tolás - Толкать - Empurrar - Spingere - - - Interact - Interagir - Interagiere - Interakce - Взаимодействовать - Interakcja - Interactuar - Cselekvés - Interagire - Interagir - - - Passengers - Insassen - Pasajeros - Пассажиры - Pasažéři - Pasażerowie - Passagers - Utasok - Passeggeri - Passageiros - - - Open - Otwórz - Otevřít - Abrir - Nyitás - Abrir - - - Interaction System - System interakcji - Sistema de interacción - Interaktionssystem - Systém interakce - Sistema de interação - Interakciós rendszer - Sistema de interação - - - Enable Team Management - Wł. zarządzanie drużyną - Habilitar gestión de equipos - Aktiviere Gruppenverwaltung - Povolit správu týmu - Habilitar gestão de equipes - Csapatkezelés engedélyezése - Habilitar gestão de equipes - - - Should players be allowed to use the Team Management Menu? Default: Yes - Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak - ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si - Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja - Mohou hráči použít menu správy týmu? Výchozí: Ano - Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim - A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen - Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim - - - Team management allows color allocation for team members, taking team command and joining/leaving teams. - Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. - Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. - Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. - La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. - A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. - O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. - - - + + + + + Interactions + Interaktionen + Interacciones + Interakce + Interakcje + Interactions + Взаимодействия + Cselekvések + Interazioni + Interaçãoes + + + Torso + Torse + Torso + Torso + Trup + Tors + Торс + Testtörzs + Torso + Torso + + + Head + Tête + Kopf + Cabeza + Hlava + Głowa + Голова + Fej + Testa + Cabeça + + + Left Arm + Bras gauche + Linker Arm + Brazo izquierdo + Levá paže + Lewe ramię + Левая рука + Bal kar + Braccio sinistro + Braço Esquerdo + + + Right Arm + Rechter Arm + Brazo derecho + Pravá paže + Prawe ramię + Bras droit + Правая рука + Jobb kar + Braccio destro + Braço Direito + + + Left Leg + Linkes Bein + Pierna izquierda + Levá noha + Lewa noga + Jambe gauche + Левая нога + Bal láb + Gamba sinistra + Perna Esquerda + + + Right Leg + Rechtes Bein + Pierna derecha + Pravá noha + Prawa noga + Jambe droite + Правая нога + Jobb láb + Gamba destra + Perna Direita + + + Weapon + Arme + Waffe + Arma + Zbraň + Broń + Оружие + Fegyver + Arma + Arma + + + Interaction Menu + Interaktionsmenü + Menú de interacción + Menu interakcji + Menu interakce + Menu d'interaction + Меню взаимодействия + Cselekvő menü + Menu de Interação + Menù interazione + + + Interaction Menu (Self) + Interaktionsmenü (selbst) + Menú de interacción (Propio) + Menu interakcji (własne) + Menu interakce (vlastní) + Menu d'interaction (Perso) + Меню взаимодействия (с собой) + Cselekvő menü (saját) + Menu de Interação (Individual) + Menù interazione (individuale) + + + Open / Close Door + Tür öffnen / schließen + Abrir / Cerrar puerta + Otwórz / Zamknij drzwi + Otevřít / Zavřít dveře + Ouvrir / Fermer Portes + Открыть / Закрыть двери + Ajtó nyitása / zárása + Abrir / Fechar Porta + Apri / Chiudi la porta + + + Lock Door + Tür sperren + Bloquear puerta + Verrouiller Porte + Blocca la porta + Заблокировать дверь + Trancar Porta + Ajtó bezárása + Zablokuj drzwi + Zamknout dveře + + + Unlock Door + Tür entsperren + Desbloquear puerta + Déverrouiller Porte + Sblocca la porta + Разблокировать дверь + Destrancar Porta + Zár kinyitása + Odblokuj drzwi + Odemknout dveře + + + Locked Door + Tür gesperrt + Puerta bloqueada + Porte Verrouillée + Porta bloccata + Дверь заблокирована + Porta Trancada + Zárt ajtó + Zablokowano drzwi + Zamčené dveře + + + Unlocked Door + Tür entsperrt + Puerta desbloqueada + Porte Déverrouillée + Porta sbloccata + Дверь разблокирована + Porta Destrancada + Nyitott ajtó + Odblokowano drzwi + Odemčené dveře + + + Join group + Gruppe beitreten + Unirse al grupo + Dołącz do grupy + Přidat se do skupiny + Rejoindre Groupe + Вступить в группу + Csatlakozás a csoporthoz + Unir-se ao grupo + Unisciti alla squadra + + + Leave Group + Gruppe verlassen + Dejar grupo + Opuść grupę + Opustit skupinu + Quitter Groupe + Выйти из группы + Csoport elhagyása + Deixar grupo + Lascia la squadra + + + Become Leader + Grp.-führung übern. + Asumir el liderazgo + Przejmij dowodzenie + Stát se velitelem + Devenir Chef de groupe + Стать лидером + Vezetés átvétele + Tornar-se Líder + Prendi il comando + + + DANCE! + TANZEN! + BAILAR! + TAŃCZ! + TANČIT! + Danse! + ТАНЦЕВАТЬ! + TÁNC! + DANCE! + DANZA! + + + Stop Dancing + Tanzen abbrechen + Dejar de bailar + Przestań tańczyć + Přestat tancovat + Arrêter de danser + Прекратить танцевать + Tánc abbahagyása + Parar de dançar + Smetti di ballare + + + << Back + << Zurück + << Atrás + << Wstecz + << Zpět + << Retour + << Назад + << Vissza + << Voltar + << Indietro + + + Gestures + Gesten + Gestos + Gesty + Posunky + Signaux + Жесты + Kézjelek + Gestos + Gesti + + + Attack + Angreifen + Atacar + Do ataku + Zaútočit + Attaquer + Атаковать + Támadás + Atacar + Attaccare + + + Advance + Vordringen + Avanzar + Naprzód + Postoupit + Avancer + Продвигаться + Előre + Avançar + Avanzare + + + Go + Los + Adelante + Szybko + Jít + Aller + Идти + Mozgás + Mover-se + Muoversi + + + Follow + Folgen + Seguirme + Za mną + Následovat + Suivre + Следовать + Utánam + Seguir + Seguire + + + Point + Zeigen + Señalar + Wskazać + Ukázat + Pointer + Точка + Mutat + Apontar + Puntare a + + + Up + Aufstehen + Arriba + Do góry + Vztyk + Debout + Вверх + Fel + Acima + Alzarsi + + + Cover + Deckung + Cubrirse + Do osłony + Krýt se + A couvert + Укрыться + Fedezékbe + Proteger-se + Copertura + + + Cease Fire + Feuer einstellen + Alto el fuego + Wstrzymać ogień + Zastavit palbu + Halte au feu + Прекратить огонь + Tüzet szüntess + Cessar Fogo + Cessare il Fuoco + + + Freeze + Keine Bewegung + Alto + Stać + Stát + Halte + Замереть + Állj + Alto + Fermi + + + Hi + Hallo + Hola + Witaj + Ahoj + Salut + Привет + Helló + Olá + Ciao + + + Put weapon on back + Waffe wegstecken + Arma a la espalda + Umieść broń na plecach + Dát zbraň na záda + Arme à la bretelle + Повесить оружие на спину + Fegyvert hátra + Colocar arma nas costas + Metti l'arma in spalla + + + Tap Shoulder + Auf Schulter klopfen + Tocar el hombro + Klepnij w ramię + Poklepat na rameno + Taper sur l'épaule + Похлопать по плечу + Vállveregetés + Tocar ombro + Dai un colpetto + + + You were tapped on the RIGHT shoulder + Te tocaron el hombro DERECHO + Dir wurde auf die rechte Schulter geklopft + On te tape sur l'épaule droite + Zostałeś klepnięty w prawe ramię + Megveregették a JOBB válladat. + Někdo tě poklepal na PRAVÉ rameno + Вас похлопали по ПРАВОМУ плечу + Você foi tocado no ombro + Ti è stato dato un colpetto sulla spalla destra + + + You were tapped on the LEFT shoulder. + Te tocaron el hombro IZQUIERDO. + Dir wurde auf die linke Schulter geklopft + On te tape sur l'épaule gauche + Zostałeś klepnięty w lewe ramię + Megveregették a BAL válladat. + Někdo tě poklepal na LEVÉ rameno + Вас похлопали по ЛЕВОМУ плечу + Você foi tocado no ombro. + Ti è stato dato un colpetto sulla spalla sinistra + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Отменить + Cancelar + Mégse + + + Select + Wählen + Seleccionar + Wybierz + Sélectionner + Zvolit + Seleziona + Выбрать + Selecionar + Kiválaszt + + + Go Away! + Geh Weg! + Aléjate! + Odejdź! + Jděte pryč! + Allez-vous-en! + Уходите отсюда! + Tűnés! + Vá Embora! + Via di qui! + + + Get Down! + Auf den Boden! + Al suelo! + Padnij! + K zemi! + A terre! + A földre! + Ложись! + Abaixe-se! + A terra! + + + Team Management + Gruppenverwaltung + Gestión de equipo + Gestion d'équipe + Zarządzanie oddziałem + Správa týmu + Управление группой + Gerenciamento de Equipe + Organizzazione Squadra + Csapat kezelése + + + Red + Rot + Rojo + Rouge + Czerwonych + Červený + Красный + Vermelha + Rosso + Piros + + + Green + Grün + Verde + Vert + Zielonych + Zelený + Зеленый + Verde + Verde + Zöld + + + Blue + Blau + Azul + Bleu + Niebieskich + Modrý + Синий + Azul + Blu + Kék + + + Yellow + Gelb + Amarillo + Jaune + Żółtych + Žlutý + Жёлтый + Amarela + Giallo + Sárga + + + Assign Red + Rot zuweisen + Asignar a rojo + Przydziel do czerwonych + Atribuir Vermelho + Hozzávonás a Piroshoz + Přiřadit k červeným + Назначить в Красную группу + Assigner à rouge + Assegna al team rosso + + + Assign Green + Grün zuweisen + Asignar a verde + Przydziel do zielonych + Atribuir Verde + Hozzávonás a Zöldhöz + Přiřadit k zeleným + Назначить в Зеленую группу + Assigner à vert + Assegna al team verde + + + Assign Blue + Blau zuweisen + Asignar a azul + Przydziel do niebieskich + Atribuir Azul + Hozzávonás a Kékhez + Přiřadit k modrým + Назначить в Синюю группу + Assigner à bleu + Assegna al team blu + + + Assign Yellow + Gelb zuweisen + Asignar a amarillo + Przydziel do żółtych + Atribuir Amarelo + Hozzávonás a Sárgához + Přiřadit ke žlutým + Назначить в Желтую группу + Assigner à jaune + Assegna al team giallo + + + Join Red + Rot beitreten + Unirse a rojo + Dołącz do czerwonych + Entrar em Vermelho + Belépés a Pirosba + Připojit k červeným + Присоединиться к Красной группе + Rejoindre rouge + Unirsi al team rosso + + + Join Green + Grün beitreten + Unirse a verde + Dołącz do zielonych + Entrar em Verde + Belépés a Zöldbe + Připojit k zeleným + Присоединиться к Зеленой группе + Rejoindre vert + Unirsi al team verde + + + Join Blue + Blau beitreten + Unirse a azul + Dołącz do niebieskich + Entrar em Azul + Belépés a Kékbe + Připojit k modrým + Присоединиться к Синей группе + Rejoindre bleu + Unirsi al team blu + + + Join Yellow + Gelb beitreten + Unirse a amarillo + Dołącz do żółtych + Entrar em Amarelo + Belépés a Sárgába + Připojit ke žlutým + Присоединиться к Жёлтой группе + Rejoindre jaune + Unirsi al team giallo + + + You joined Team %1 + Du bist Gruppe %1 beigetreten + Te has unido al equipo %1 + Tu as rejoint l'équipe %1 + Dołączyłeś do %1 + Připojil ses do %1 týmu + Вы присоединились к группе %1 + Você uniu-se à Equipe %1 + Sei entrato nel team %1 + Csatlakoztál a %1 csapathoz + + + Leave Team + Gruppe verlassen + Dejar equipo + Quitter l'équipe + Opuść drużynę + Opustit tým + Покинуть группу + Deixar Equipe + Lascia il team + Csapat elhagyása + + + You left the Team + Du hast die Gruppe verlassen + Has dejado el equipo + Tu as quitté l'équipe + Opuściłeś drużynę + Opustil jsi tým + Вы покинули группу + Você deixou a Equipe + Hai lasciato il team + Elhagytad a csapatot + + + Pardon + Begnadigen + Perdonar + Przebacz + Pardon + Pardon + Извините + Perdão + Perdona + Megbocsátás + + + Scroll + Scrollen + Przewiń + Défilement + Desplazar + Пролистать + Rolar + Scorri + Görgetés + Otáčení + + + Modifier Key + Modifikator-Taste + Modyfikator + Modifier la touche + Tecla modificadora + Клавиша-модификатор + Tecla Modificadora + Tasto modifica + Módosító billentyű + Modifikátor + + + Not in Range + Außer Reichweite + Hors de portée. + Fuera de rango + Слишком далеко + Fora do Alcançe + Hatótávolságon kívül + Poza zasięgiem + Mimo dosah + Fuori limite + + + Equipment + Ausrüstung + Equipamiento + Équipement + Ekwipunek + Vybavení + Felszerelés + Снаряжение + Equipaggiamento + Equipamento + + + Push + Schieben + Empujar + Pousser + Pchnij + Odstrčit + Tolás + Толкать + Empurrar + Spingere + + + Interact + Interagir + Interagiere + Interakce + Взаимодействовать + Interakcja + Interactuar + Cselekvés + Interagire + Interagir + + + Passengers + Insassen + Pasajeros + Пассажиры + Pasažéři + Pasażerowie + Passagers + Utasok + Passeggeri + Passageiros + + + Open + Otwórz + Otevřít + Abrir + Nyitás + Abrir + Открыть + + + Interaction System + System interakcji + Sistema de interacción + Interaktionssystem + Systém interakce + Взаимодействие + Interakciós rendszer + Sistema de interação + + + Enable Team Management + Wł. zarządzanie drużyną + Habilitar gestión de equipos + Aktiviere Gruppenverwaltung + Povolit správu týmu + Управление группами + Csapatkezelés engedélyezése + Habilitar gestão de equipes + + + Should players be allowed to use the Team Management Menu? Default: Yes + Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak + ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si + Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja + Mohou hráči použít menu správy týmu? Výchozí: Ano + Разрешить ли игрокам использовать меню управления группами? По-умолчани: Да + A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen + Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim + + + Team management allows color allocation for team members, taking team command and joining/leaving teams. + Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. + Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. + Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. + La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. + A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. + O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. + Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их. + + + \ No newline at end of file diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 266e21bf40..c3f0b9cc21 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -1,9 +1,10 @@ - - - - - ACE Logistics - ACE Logistyka - - + + + + + ACE Logistics + ACE Logistyka + ACE: логистика + + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index f996800346..29e27ac338 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -1,187 +1,213 @@ - - - - - Map - Mapa - Mapa - Karte - Mapa - Mapa - Térkép - - - Map illumination? - Oświetlenie mapy - ¿Iluminación de mapa? - Kartenausleuchtung - Osvětlení mapy - Iluminação do mapa? - Térkép megvilágítása? - - - Simulate map lighting based on ambient lighting and player's items? - - - Map flashlight glow? - - - Add external glow to players who use flashlight on map? - - - Map shake? - Drżenie mapy - ¿Temblor de mapa? - Kamerawackeln - Třesení mapy? - Tremor de mapa? - Térkép-rázkódás? - - - Make map shake when walking? - Ekran mapy drży podczas ruchu - Hace que el mapa tiemble cuando caminas - Kamerawackeln beim Gehen? - Umožnit třesení mapy za pochodu? - Tremer o mapa enquanto caminha? - Rázkódjon-e a térkép mozgáskor? - - - Limit map zoom? - Ograniczony zoom - ¿Limitar el zoom de mapa? - Kartenzoom einschränken - Omezit přiblížení mapy? - Limitar zoom do mapa? - Térkép-nagyítás korlátozása? - - - Limit the amount of zoom available for the map? - Ogranicza maksymalny stopień przybliżenia mapy - Limita la cantidad de zoom disponible para el mapa - Zoomstufe der Karte einschränken? - Omezit stupeň přiblížení pro mapu? - Limitar a quantidade de zoom disponível para o mapa? - Korlátozva legyen-e a nagyítás mennyisége a térképnél? - - - Show cursor coordinates? - Koordynaty pod kursorem - ¿Mostrar coordenadas de cursor? - Zeige Cursor-Koordinaten? - Zobrazit souřadnice u kurzoru? - Mostrar coordenadas no cursor? - Kurzor-koordináták mutatása? - - - Show the grid coordinates on the mouse pointer? - Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy - Muestra las coordenadas de la cuadricula en el puntero del ratón - Gitter-Koordinaten auf dem Mauszeiger anzeigen? - Zobrazit souřadnice u kurzoru v mapě? - Mostrar as coordenadas de grade no ponteiro do mouse? - Mutatva legyen-e a kurzornál található rész rácskoordinátája? - - - This module allows you to customize the map screen. - Moduł ten pozwala dostosować opcje widoku ekranu mapy. - Dieses Modul erweitert die Kartenfunktionen. - Tento modul umožňuje přizpůsobit mapu s obrazem. - Este módulo permite que você personalize a tela de mapa. - Ez a modul lehetővé teszi a térképnézet testreszabását. - - - Blue Force Tracking - Blue Force Tracking - Seguimiento de fuerzas amigas - Blue Force Tracking - Blue Force Tracking - Rastreio de forças azuis - Blue Force követés - - - BFT Enable - RFA ativo - Aktywuj BFT - Povolit BFT - Activar BFT - BFT engedélyezése - - - Enable Blue Force Tracking. Default: No - Ativa Rastreio de Forças Azuis. Padrão: Não - Aktywuj Blue Force Tracking. Domyślnie: Nie - Povolit Blue Force Tracking. Výchozí: Ne - Activar Blue Force Tracking. Por defecto: No - Blue Force követés engedélyezése. Alapértelmezett: Nem - - - Interval - Interwał - Intervalo - Intervall - Interval - Intervalo - Intervallum - - - How often the markers should be refreshed (in seconds) - Jak często markery powinny być odświeżane (w sekundach) - Frecuencia de actualización de los marcadores (en segundos) - Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) - Jak často budou značky aktualizovány (v sekundách) - Frequência em que os marcadores devem ser atualizados (em segundos) - Milyen gyakran frissüljenek a jelölők (másodpercben) - - - Hide AI groups? - Ukryj grupy AI - ¿Ocultar grupos de IA? - KI-Gruppen verstecken? - Skrýt AI skupiny? - Esconder grupos de IA? - AI csoportok elrejtése? - - - Hide markers for 'AI only' groups? - Ukrywa markery dla grup złożonych tylko z AI - Oculta las marcas de grupos 'solo IA' - Verstecke Marker für "nur KI"-Gruppen? - Skrýt značky pouze pro AI skupiny? - Esconder marcadores que pertencem ao grupo de IA? - Jelölők elrejtése "csak AI" csoportoknál? - - - This module allows the tracking of allied units with BFT map markers. - Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. - Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. - Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. - Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. - Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. - - - Flashlights - Latarki - - - NVG - Noktowizja - - - On - Włącz - - - Off - Wyłącz - - - Increase Brightness - Zwiększ czułość - - - Decrease Brightness - Zmniejsz czułość - - - + + + + + Map + Mapa + Mapa + Karte + Mapa + Mapa + Térkép + Карта + + + Map illumination? + Oświetlenie mapy + ¿Iluminación de mapa? + Kartenausleuchtung + Osvětlení mapy + Iluminação do mapa? + Térkép megvilágítása? + Освещение карты? + + + Simulate map lighting based on ambient lighting and player's items? + Симулировать освещение карты на основе окружающего света и приборов игрока? + + + Map flashlight glow? + Свет фонаря на карте? + + + Add external glow to players who use flashlight on map? + Добавить свет при использовании фонаря на карте? + + + Map shake? + Drżenie mapy + ¿Temblor de mapa? + Kamerawackeln + Třesení mapy? + Tremor de mapa? + Térkép-rázkódás? + Тряска карты? + + + Make map shake when walking? + Ekran mapy drży podczas ruchu + Hace que el mapa tiemble cuando caminas + Kamerawackeln beim Gehen? + Umožnit třesení mapy za pochodu? + Tremer o mapa enquanto caminha? + Rázkódjon-e a térkép mozgáskor? + Заставлять карту трястись при ходьбе? + + + Limit map zoom? + Ograniczony zoom + ¿Limitar el zoom de mapa? + Kartenzoom einschränken + Omezit přiblížení mapy? + Limitar zoom do mapa? + Térkép-nagyítás korlátozása? + Ограничить приближение карты? + + + Limit the amount of zoom available for the map? + Ogranicza maksymalny stopień przybliżenia mapy + Limita la cantidad de zoom disponible para el mapa + Zoomstufe der Karte einschränken? + Omezit stupeň přiblížení pro mapu? + Limitar a quantidade de zoom disponível para o mapa? + Korlátozva legyen-e a nagyítás mennyisége a térképnél? + Ограничить максимальное приближение, доступное на карте? + + + Show cursor coordinates? + Koordynaty pod kursorem + ¿Mostrar coordenadas de cursor? + Zeige Cursor-Koordinaten? + Zobrazit souřadnice u kurzoru? + Mostrar coordenadas no cursor? + Kurzor-koordináták mutatása? + Показывать координаты курсора? + + + Show the grid coordinates on the mouse pointer? + Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy + Muestra las coordenadas de la cuadricula en el puntero del ratón + Gitter-Koordinaten auf dem Mauszeiger anzeigen? + Zobrazit souřadnice u kurzoru v mapě? + Mostrar as coordenadas de grade no ponteiro do mouse? + Mutatva legyen-e a kurzornál található rész rácskoordinátája? + Показывать координаты около курсора мыши? + + + This module allows you to customize the map screen. + Moduł ten pozwala dostosować opcje widoku ekranu mapy. + Dieses Modul erweitert die Kartenfunktionen. + Tento modul umožňuje přizpůsobit mapu s obrazem. + Este módulo permite que você personalize a tela de mapa. + Ez a modul lehetővé teszi a térképnézet testreszabását. + Этот модуль позволяет настроить отображение карты. + + + Blue Force Tracking + Blue Force Tracking + Seguimiento de fuerzas amigas + Blue Force Tracking + Blue Force Tracking + Rastreio de forças azuis + Blue Force követés + Система слежения Blue Force Tracking + + + BFT Enable + RFA ativo + Aktywuj BFT + Povolit BFT + Activar BFT + BFT engedélyezése + Включить BFT + + + Enable Blue Force Tracking. Default: No + Ativa Rastreio de Forças Azuis. Padrão: Não + Aktywuj Blue Force Tracking. Domyślnie: Nie + Povolit Blue Force Tracking. Výchozí: Ne + Activar Blue Force Tracking. Por defecto: No + Blue Force követés engedélyezése. Alapértelmezett: Nem + Включает систему служения BFT. По-умолчанию: Нет + + + Interval + Interwał + Intervalo + Intervall + Interval + Intervalo + Intervallum + Интервал + + + How often the markers should be refreshed (in seconds) + Jak często markery powinny być odświeżane (w sekundach) + Frecuencia de actualización de los marcadores (en segundos) + Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) + Jak často budou značky aktualizovány (v sekundách) + Frequência em que os marcadores devem ser atualizados (em segundos) + Milyen gyakran frissüljenek a jelölők (másodpercben) + Как часто должны обновляться маркеры (в секундах) + + + Hide AI groups? + Ukryj grupy AI + ¿Ocultar grupos de IA? + KI-Gruppen verstecken? + Skrýt AI skupiny? + Esconder grupos de IA? + AI csoportok elrejtése? + Скрыть группы ботов? + + + Hide markers for 'AI only' groups? + Ukrywa markery dla grup złożonych tylko z AI + Oculta las marcas de grupos 'solo IA' + Verstecke Marker für "nur KI"-Gruppen? + Skrýt značky pouze pro AI skupiny? + Esconder marcadores que pertencem ao grupo de IA? + Jelölők elrejtése "csak AI" csoportoknál? + Скрыть маркеры групп, которые состоят полностью из ботов? + + + This module allows the tracking of allied units with BFT map markers. + Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. + Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. + Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. + Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. + Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. + Этот модуль позволяет отслеживать перемещение союзных войск по карте при помощи маркеров BFT. + + + Flashlights + Latarki + Фонари + + + NVG + Noktowizja + ПНВ + + + On + Włącz + Вкл. + + + Off + Wyłącz + Выкл. + + + Increase Brightness + Zwiększ czułość + Увеличить яркость + + + Decrease Brightness + Zmniejsz czułość + Уменьшить яркость + + + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index f91b4ad789..e8110685e3 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,3730 +1,3747 @@ - - - - - INJURIES - VERLETZUNGEN - LESIONI - ТРАВМЫ - BLESSURES - OBRAŻENIA - HERIDAS - SÉRÜLÉSEK - ZRANĚNÍ - FERIMENTOS - - - No injuries on this bodypart ... - Körperteil nicht verletzt ... - Non ci sono lesioni in questa parte del corpo ... - Данная часть тела не повреждена ... - Aucune blessures sur cette partie du corps ... - Brak obrażeń na tej części ciała ... - Sin heridas en esta parte del cuerpo ... - Ezen a testrészen nincs sérülés ... - Žádné zranění na této části těla ... - Nenhum ferimento nesta parte do corpo... - - - Litter Simulation Detail - Detale zużytych medykamentów - Detalle de simulación de basura - Количество мусора от медицины - Dettagli Simulazione Rifiuti - Niveau de simulation des détritus - Abfall-Detaillevel - Hulladékszimuláció részletessége - Detalhe da simulação de sujeira - Počet zobrazených předmětů po použití zdravotnického materiálu - - - Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting. - Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta. - Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente. - Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. - Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client. - Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. - Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. - A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. - O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. - Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. - - - Inject Atropine - Atropin injizieren - Inyectar Atropina - Aplikovat atropin - Wstrzyknij atropinę - Injecter de l'atropine - Ввести атропин - Atropin beadása - Inietta atropina - Injetar Atropina - - - Inject Epinephrine - Epinephrine injizieren - Inyectar Epinefrina - Wstrzyknij adrenalinę - Aplikovat adrenalin - Injecter de l'épinéphrine - Ввести адреналин - Epinefrin beadása - Injetar Epinefrina - Inietta epinefrina - - - Inject Morphine - Morphin injizieren - Inyectar Morfina - Wstrzyknij morfinę - Aplikovat morfin - Ввести морфин - Injecter de la morphine - Morfium beadása - Injetar Morfina - Inietta morfina - - - Transfuse Blood - Bluttransfusion - Transfundir sangre - Przetocz krew - Transfúze krve - Перелить кровь - Transfusion - Infúzió (vér) - Transfundir Sangue - Trasfusione di sangue - - - Transfuse Plasma - Plasmatransfusion - Transfundir plasma - Transfúze plazmy - Przetocz osocze - Transfuser du Plasma - Перелить плазму - Infúzió (vérplazma) - Trasfusione di Plasma - Transfundir Plasma - - - Transfuse Saline - Salzlösungstransfusion - Transfundir salino - Transfúze fyziologický roztoku - Przetocz sól fizjologiczną - Transfuser de la solution saline - Перелить физраствор - Infúzió (sós víz) - Trasfusione di soluzione salina - Transfundir Soro - - - Apply Tourniquet - Tourniquet anwenden - Aplicar torniquete - Aplikovat škrtidlo - Załóż stazę - Appliquer un garrot - Наложить жгут - Applica laccio emostatico - Aplicar Torniquete - Érszorító alkalmazása - - - Bandage - Verbinden - Venda - Bandażuj - Obvázat - Pansement - Benda - Kötözés - Atadura - Перевязать - - - Bandage Head - Kopf verbinden - Vendar la cabeza - Bandażuj głowę - Obvázat hlavu - Перевязать голову - Pansement Tête - Fej kötözése - Atar Cabeça - Benda la testa - - - Bandage Torso - Torso verbinden - Vendar el torso - Bandażuj tors - Obvázat hruď - Перевязать торс - Pansement Torse - Testtörzs kötözése - Atar Tronco - Benda il torso - - - Bandage Left Arm - Linken Arm verbinden - Vendar el brazo izquierdo - Bandażuj lewe ramię - Obvázat levou ruku - Перевязать левую руку - Pansement Bras Gauche - Bal kar kötözése - Atar Braço Esquerdo - Benda il braccio sinistro - - - Bandage Right Arm - Rechten Arm verbinden - Vendar el brazo derecho - Bandażuj prawe ramię - Obvázat pravou ruku - Перевязать правую руку - Pansement Bras Droit - Jobb kar kötözése - Atar Braço Direito - Benda il braccio destro - - - Bandage Left Leg - Linkes Bein verbinden - Vendar la pierna izquierda - Bandażuj lewą nogę - Obvázat levou nohu - Перевязать левую ногу - Pansement Jambe Gauche - Bal láb kötözése - Atar Perna Esquerda - Benda la gamba sinistra - - - Bandage Right Leg - Rechtes Bein verbinden - Vendar la pierna derecha - Bandażuj prawą nogę - Obvázat pravou nohu - Перевязать правую ногу - Pansement Jambe Droite - Jobb láb kötözése - Atar Perna Direita - Benda la gamba destra - - - Injecting Morphine ... - Morphin injizieren ... - Inyectando Morfina ... - Wstrzykiwanie morfiny ... - Aplikuji morfin ... - Введение морфина ... - Injection de Morphine... - Morfium beadása ... - Injetando Morfina ... - Inietto la morfina ... - - - Injecting Epinephrine ... - Epinephrin injizieren ... - Inyectando Epinefrina ... - Wstrzykiwanie adrenaliny ... - Aplikuji adrenalin ... - Введение адреналина ... - Injection d'Adrénaline ... - Epinefrin beadása ... - Injetando Epinefrina ... - Inietto l'epinefrina ... - - - Injecting Atropine ... - Atropin injizieren ... - Inyectando Atropina ... - Aplikuji atropin ... - Wstrzykiwanie atropiny ... - Injection d'Atropine ... - Введение атропина ... - Atropin beadása ... - Inietto l'atropina ... - Injetando Atropina - - - Transfusing Blood ... - Bluttransfusion ... - Transfusión de sangre ... - Przetaczanie krwi ... - Probíhá transfúze krve ... - Переливание крови ... - Transfusion Sanguine ... - Infúzió vérrel ... - Transfundindo Sangue ... - Effettuo la trasfusione di sangue ... - - - Transfusing Saline ... - Salzlösungtransfusion ... - Transfusión de salino ... - Probíha transfúze fyziologický roztoku ... - Przetaczanie soli fizjologicznej ... - Transfusion de saline ... - Переливание физраствора ... - Infúzió sós vizzel ... - Effettuo la rasfusione di soluzione salina - Transfundindo Soro... - - - Transfusing Plasma ... - Plasmatransfusion ... - Transfusión de plasma ... - Probíha transfúze plazmy ... - Przetaczanie osocza ... - Transfusion de Plasma ... - Переливание плазмы ... - Infúzió vérplazmával ... - Effettu la trasfusione di plasma ... - Transfundindo Plasma... - - - Bandaging ... - Verbinden ... - Vendando ... - Bandażowanie ... - Obvazuji ... - Pansement ... - Sto applicando la benda ... - Bekötözés ... - Atando ... - Перевязывание ... - - - Applying Tourniquet ... - Setze Tourniquet an ... - Aplicando torniquete ... - Aplikuji škrtidlo - Zakładanie stazy ... - Mise en place du Garrot ... - Наложение жгута ... - Érszorító felhelyezése ... - Sto applicando il laccio emostatico ... - Applicando Torniquete - - - Medical - Zdravotní - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Field Dressing - Verbandpäckchen - Compresa de campaña - Бинтовая повязка - Obinadlo - Bandaż jałowy - Bandage rapide - Zárókötszer - Bendaggio rapido - Curativo de Campo - - - Packing Bandage - Mullbinde - Vendaje compresivo - Компресионный пакет - Bandaż uciskowy - Nyomókötszer - Bendaggio compressivo - Bandage gauze - Bandagem de Compressão - Tlakový obvaz - - - Elastic Bandage - Elastischer Verband - Vendaje elástico - Давящая повязка - Elastické obinadlo - Bandaż elastyczny - Pansement élastique - Rögzitő kötszer - Bendaggio elastico - Bandagem Elástica - - - QuikClot - QuikClot - QuikClot - QuikClot - Opatrunek QuikClot - QuikClot - Hémostatique - QuikClot - QuikClot (polvere emostatica) - QuikClot - - - Check Pulse - Puls überprüfen - Comprobar pulso - Проверить пульс - Zkontrolovat pulz - Sprawdź tętno - Vérifier le pouls - Pulzus ellenőrzése - Controlla il polso - Checar Pulso - - - Check Blood Pressure - Blutdruck überprüfen - Comprobar presión arterial - Проверить давление - Zkontrolovat krevní tlak - Sprawdź ciśnienie krwi - Vérification de la tension - Vérnyomás megmérése - Controlla pressionsa sanguigna - Chegar Pressão Sanguínea - - - Triage Card - Triagekarte - Tarjeta de clasificación - Медкарта - Karta segregacyjna - Štítek - Carte de triage - Orvosi lap - Triage Card - Cartão de Triagem - - - No entries on this triage card. - Keine Einträge auf der Triagekarte - Nessuna voce sulla Triage Card - Нет записей. - Aucune entrée sur cette carte de triage - Brak wpisów w tej karcie segregacyjnej. - Sin entradas en esta tarjeta de clasificación. - Ez az orvosi lap nem tartalmaz bejegyzést. - Žádné záznamy na tomto štítku - Nenhuma entrada neste cartão de triagem - - - Tourniquet - Tourniquet - Torniquete - Жгут - Škrtidlo - Staza - Tourniquet - Érszorító - Laccio emostatico - Torniquete - - - Remove Tourniquet - Tourniquet entfernen - Quitar torniquete - Снять жгут - Sundat škrtidlo - Zdejmij stazę - Enlever le Tourniquet - Érszorító leszedése - Rimuovi laccio emostatico - Remover Torniquete - - - Diagnose - Diagnose - Diagnosi - Диагностика - Diagnostiquer - Diagnoza - Diagnosticar - Diagnosztizálás - Diagnóza - Diagnosticar - - - Diagnosing ... - Diagnostizieren ... - Diagnosi in corso... - Диагностика ... - Diagnostic en cours - Diagnozowanie ... - Diagnosticando ... - Diagnózis folyamatban... - Diagnostika ... - Diagnosticando... - - - CPR - HLW - RCP - Сердечно-лёгочная реанимация - RPC - RKO - RCP - Újraélesztés - KPR - SBV - - - Performing CPR ... - HLW durchführen ... - Eseguendo RCP... - Сердечно-лёгочная реанимация ... - RPC en cours - Przeprowadzanie RKO ... - Realizando RCP ... - Újraélesztés folyamatban... - Provádím KPR ... - Realizando o SBV... - - - Give Blood IV (1000ml) - Bluttransfusion IV (1000ml) - Dar Sangre IV (1000ml) - Перелить пакет крови (1000 мл) - Podaj krew IV (1000ml) - Administrer du sang en IV (1000ml) - Podat krev. transfúzi (1000ml) - Vér adása intravénásan (1000ml) - Effettua trasfusione sangue IV (1000ml) - Administrar Sangue IV (1000ml) - - - Give Blood IV (500ml) - Bluttransfusion IV (500ml) - Dar Sangre IV (500ml) - Перелить пакет крови (500 мл) - Podaj krew IV (500ml) - Administrer du sang en IV (500ml) - Podat krev. transfúzi (500ml) - Vér adása intravénásan (500ml) - Effettua trasfusione sangue IV (500ml) - Administrar Sangue IV (500ml) - - - Give Blood IV (250ml) - Bluttransfusion IV (250ml) - Dar Sangre IV (250ml) - Перелить пакет крови (250 мл) - Podaj krew IV (250ml) - Administrer du sang en IV (250ml) - Podat krev. transfúzi (250ml) - Vér adása intravénásan (250ml) - Effettua trasfusione sangue IV (250ml) - Administrar Sangue IV (250ml) - - - Give Plasma IV (1000ml) - Plasmatransfusion IV (1000ml) - Dar Plasma IV (1000ml) - Перелить пакет плазмы (1000 мл) - Podaj osocze IV (1000ml) - Administrer du plasma en IV (1000ml) - Podat plazmu (1000ml) - Vérplazma adása intravénásan (1000ml) - Effettua trasfusione plasma IV (1000ml) - Administrar Plasma IV (1000ml) - - - Give Plasma IV (500ml) - Plasmatransfusion IV (500ml) - Dar Plasma IV (500ml) - Перелить пакет плазмы (500 мл) - Podaj osocze IV (500ml) - Administrer du plasma en IV (500ml) - Podat plazmu (500ml) - Vérplazma adása intravénásan (500ml) - Effettua trasfusione plasma IV (500ml) - Administrar Plasma IV (500ml) - - - Give Plasma IV (250ml) - Plasmatransfusion IV (250ml) - Dar Plasma IV (250ml) - Перелить пакет плазмы (250 мл) - Podaj osocze IV (250ml) - Administrer du plasma en IV (250ml) - Podat plazmu (250ml) - Vérplazma adása intravénásan (250ml) - Effettua trasfusione plasma IV (250ml) - Administrar Plasma IV (250ml) - - - Give Saline IV (1000ml) - Kochsalzlösung IV (1000ml) - Dar Salino IV (1000ml) - Перелить пакет физраствора (1000 мл) - Podaj sól fizjologiczną IV (1000ml) - 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) - Administrar Soro IV (1000ml) - - - Give Saline IV (500ml) - Kochsalzlösung IV (500ml) - Dar Salino IV (500ml) - Перелить пакет физраствора (500 мл) - Podaj sól fizjologiczną IV (500ml) - 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) - Administrar Soro IV (500ml) - - - Give Saline IV (250ml) - Kochsalzlösung IV (250ml) - Dar Salino IV (250ml) - Перелить пакет физраствора (250 мл) - Podaj sól fizjologiczną IV (250ml) - 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) - Administrar Soro IV (250ml) - - - Minor - Gering - Menor - Несрочная помощь - Normalny - Mineur - Minimální - Enyhe - Minore - Leve - - - Delayed - Retrasado - Срочная помощь - Opóźniony - Différé - Verzögert - Odložitelný - Késleltetett - Differito - Atrasado - - - Immediate - Inmediato - Неотложная помощь - Natychmiastowy - Urgence Immédiate - Sofort - Okamžitý - Azonnali - Immediata - Imediato - - - Deceased - Fallecido - Труп - Nie żyje - Décédé - Verstorben - Mrtvý - Elhalálozott - Deceduto - Falecido - - - None - Ninguno - Отсутствует - Brak - Aucun - Keine - Nic - Semmi - Nessuna - Nenhum - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration normale - Normalny oddech - Normale Atmung - Dýchá normálně - Normális légzés - Respiro normale - Respiração normal - - - No breathing - Keine Atmung - Дыхание отсутствует - No respira - Aucune respiration - Brak oddechu - Nedýchá - Nincs légzés - Mancanza di respiro - Não respira - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée respiratoire - Trudności z oddychaniem - Schwere Atmung - Dýchá s obtížemi - Nehéz légzés - Difficoltà a respirare - Dificuldade para respirar - - - Almost no breathing - Fast keine Atmung - Дыхание очень слабое - Casi sin respiración - Respiration faible - Prawie brak oddechu - Skoro nedýchá - Alig van légzés - Respira a fatica - Quase não respira - - - Bleeding - Blutet - Кровотечение - Sangrando - Saignement - Krwawienie zewnętrzne - Krvácí - Vérzik - Sanguinando - Sangrando - - - In Pain - Hat Schmerzen - Испытывает боль - Con dolor - Ressent de la douleur - W bólu - V bolestech - Fájdalom alatt - Con dolore - Com dor - - - Lost a lot of Blood - Hat eine große Menge Blut verloren - Большая кровопотеря - Mucha sangre perdida - A perdu beaucoup de sang - Stracił dużo krwi - Ztratil hodně krve - Sok vért vesztett - Ha perso parecchio sangue - Perdeu muito sangue - - - Tourniquet [CAT] - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Tourniquet [CAT] - Staza [typ. CAT] - Škrtidlo [CAT] - Érszorító [CAT] - Laccio emostatico [CAT] - Torniquete [CAT] - - - Receiving IV [%1ml] - Erhalte IV [%1ml] - Reciviendo IV [%1ml] - Принимается переливание [%1 мл] - Otrzymywanie IV [pozostało %1ml] - Transfusion en IV [%1ml] - Přijímání transfúze [%1ml] - Infúzióra kötve [%1ml] - Ricevendo IV [%1ml] - Recebendo IV [%1ml] - - - Bandage (Basic) - Bandage (Standard) - Повязка (обычная) - Vendaje (Básico) - Bandage (Standard) - Bandaż (jałowy) - Obvaz (standartní) - Kötszer (Általános) - Bendaggio (base) - Bandagem(Básico) - - - Used to cover a wound - Для перевязки ран - Utilizado para cubrir una herida - Utilisé pour couvrir une blessure - Używany w celu przykrycia i ochrony miejsca zranienia. Najczęściej stosowany bandaż na otarcia i draśnięcia. - Verwendet um Wunden abzudecken - Sebesülések befedésére alkalmas - Usato per coprire una ferita - Usado para cobrir um ferimento - Slouží k překrytí poranění - - - A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. - Ein Verband, der aus einem besonderen Material besteht um die Wunde zu schützen, nachdem die Blutung gestoppt wurde. - Повязка, накладываемая поверх раны после остановки кровотечения. - Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. - 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 apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. - Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. - Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. - - - Packing Bandage - Mullbinde - Тампонирующая повязка - Vendaje compresivo - Bandage gauze - Bandaż (uciskowy) - Nyomókötszer - Bendaggio compressivo - Bandagem de Compressão - Tlakový obvaz - - - Used to pack medium to large wounds and stem the bleeding - Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen - Для тампонирования ран среднего и большого размера и остановки кровотечения. - Se utiliza para vendar heridas medianas o grandes y detener el sangrado - Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies - Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. - Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su ferite medie o larghe per fermare emorragie. - Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. - Používá se k zastavení středních až silnějších krvácení - - - A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. - Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. - Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. - Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques - 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 coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. - Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen - Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. - Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. - - - Bandage (Elastic) - Bandage (Elastisch) - Повязка (давящая) - Vendaje (Elástico) - Bandage (Élastique) - Bandaż (elastyczny) - Obvaz (elastický) - Rögzító kötszer - Benda (elastica) - Bandagem (Elástica) - - - Bandage kit, Elastic - Elastische Binde (Kompressionsbinde) - Давящая повязка - Kit de vendaje (Elástico) - Bandage compressif élastique - Bandaż elastyczny służy do opatrywania ran ciętych oraz kłutych. Dobrze radzi sobie również ze zgniecieniami tkanek miękkich oraz rozerwaniami powierzchni skóry. - Rugalmas kötszercsomag, "rögzítő" - Kit di bendaggio, elastico - Kit de Bandagem, Elástica - Sada obvazů, Elastická - - - Allows an even compression and extra support to the injured area. - Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich. - Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку повреждённой области - Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement. - 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 comprimere e aiutare la zone ferita. - Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. - Hodí se k fixačním účelům a to i v oblastech kloubů. - - - Tourniquet (CAT) - Tourniquet [CAT] - Жгут - Torniquete (CAT) - Tourniquet (CAT) - Staza (typ. CAT) - Škrtidlo (CAT) - Érszorító (CAT) - Laccio emostatico (CAT) - Torniquete (CAT) - - - Slows down blood loss when bleeding - Замедляет кровопотерю при кровотечении - Reduce la velocidad de pérdida de sangre - Ralentit le saignement - Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. - 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 - Reduz a velocidade da perda de sangue - Zpomaluje ztráty krve při krvácení - - - A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. - Жгут используется для прижатия сосудов к костным выступам, которое приводит к остановке или значительному уменьшению кровотечения - Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre - Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. - 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. - A aparelho que comprime as artérias e veias para diminuir a perda de sangue. - Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. - - - Morphine autoinjector - Morphium-Autoinjektor - Морфин в пневмошприце - Morfina auto-inyectable - Auto-injecteur de Morphine - Autostrzykawka z morfiną - Autoinjektor morfin - Morfium autoinjektor - Autoiniettore di morfina - Auto-injetor de morfina - - - Used to combat moderate to severe pain experiences - Wird verwendet um moderate bis starke Schmärzen zu lindern. - Для снятия средних и сильных болевых ощущений - Usado para combatir los estados dolorosos de moderados a severos - Utilisé pour réduire les douleurs modérées à sévères. - Morfina. Ma silne działanie przeciwbólowe. Powoduje spowolnienie tętna oraz rozrzedzenie krwi, zwiększając tym samym ciśnienie tętnicze krwi. Działa przez ok. 15 minut. - Mérsékelttől erős fájdalomig, ellene alkalmazandó termék - Usato per combattere il dolore. - Usado para combater dores moderadas e severas - Slouží k tlumení středně těžkých a těžkých bolestí - - - An analgesic used to combat moderate to severe pain experiences. - Обезболивающее для снятия средних и сильных болевых ощущений. - Analgésico usado para combatir los estados dolorosos de moderados a severos. - Un analgésique puissant servant à réduire les douleurs modérées à sévères. - 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. - Um analgésico usado para combater dores moderadas e fortes. - Analgetikum slouží k tlumení středně těžkých a těžkých bolestí - - - Atropine autoinjector - Атропин в пневмошприце - Atropina auto-inyectable - Auto-injecteur d'Atropine - Autostrzykawka AtroPen - Atropin-Autoinjektor - Autoinjektor atropin - Atropin autoinjektor - Autoiniettore di atropina - Auto-injetor de Atropina - - - Used in NBC scenarios - Применяется для защиты от ОМП - Usado en escenarios NBQ - Utilisé en cas d'attaque CBRN - 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. - Usado em casos de ataque QBRN - Používá se v přítomnosti nervových plynů - - - A drug used by the Military in NBC scenarios. - Препарат, используемый в войсках для защиты от оружия массового поражения. - Medicamento usado por militares en escenarios NBQ - Médicament utilisé par l'armée en cas d'attaque CBRN - 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. - Uma droga usada por militares em casos de ataque QBRN. - Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. - - - Epinephrine autoinjector - Адреналин в пневмошприце - Epinefrina auto-inyectable - Auto-injecteur d'épinéphrine - Autostrzykawka EpiPen - Epiniphrin-Autoinjektor - Autoinjektor adrenalin - Epinefrin autoinjektor - Autoiniettore di epinefrina - Auto-injetor de epinefrina - - - Increase heart rate and counter effects given by allergic reactions - Стимулирует работу сердца и купирует аллергические реакции - Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas - Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique - Adrenalina. Przyśpiesza tętno oraz zwiększa ciśnienie krwi a także przeciwdziała efektom wywołanym przez reakcje alergiczne. - Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen. - 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. - Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas - Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi - - - 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. - Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшенной вероятностью благоприятного исхода. - 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. - Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. - Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. - Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. - Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. - - - Plasma IV (1000ml) - Плазма для в/в вливания (1000 мл) - Plasma IV (1000ml) - Plasma Sanguin IV (1000ml) - Osocze IV (1000ml) - Plasma IV (1000ml) - Vérplazma-infúzió (1000ml) - Plasma IV (1000ml) - Plasma IV (1000ml) - Krevní plazma (1000ml) - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - 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. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - 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. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - Plasma IV (500ml) - Плазма для в/в вливания (500 мл) - Plasma IV (500ml) - Plasma sanguin IV (500ml) - Osocze IV (500ml) - Plasma IV (500ml) - Vérplazma-infúzió (500ml) - Plasma IV (500ml) - Plasma IV (500ml) - Krevní plazma (500ml) - - - Plasma IV (250ml) - Плазма для в/в вливания (250 мл) - Plasma IV (250ml) - Plasma sanguin (250ml) - Osocze IV (250ml) - Plasma IV (250ml) - Vérplazma-infúzió (250ml) - Plasma IV (250ml) - Plasma IV (250ml) - Krevní plazma (250ml) - - - Blood IV (1000ml) - Кровь для переливания (1000 мл) - Sangre IV (1000ml) - Cullot sanguin IV (1000ml) - Krew IV (1000ml) - Blut IV (1000ml) - Vér-infúzió (1000ml) - Sangue IV (1000ml) - Sangue IV (1000ml) - Krevní transfúze (1000ml) - - - Blood IV, for restoring a patients blood (keep cold) - Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) - Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) - 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) - Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten) - Sangue intravenoso, para restaurar o volume sanguinio do paciente.(Manter frio) - Krevní transfuze pro doplnění pacientovi krve (skladujte v chladu) - - - 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. - Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC - O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. - Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. - Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. - 0 Rh negativní krev se používá v vzácných případech k doplnění pacientovy hladiny krve, obvykle při převozu zraněné osoby do nemocnice. - - - Blood IV (500ml) - Кровь для переливания (500 мл) - Sangre IV (500ml) - Cullot sanguin IV (500ml) - Krew IV (500ml) - Blut IV (500ml) - Vér-infúzió (500ml) - Sangue IV (500ml) - Sangue IV (500ml) - Krevní transfúze (500ml) - - - Blood IV (250ml) - Кровь для переливания (250 мл) - Sangre IV (250ml) - Cullot sanguin IV (250ml) - Krew IV (250ml) - Blut IV (250ml) - Vér-infúzió (250ml) - Samgue IV (250ml) - Sangue IV (250ml) - Krevní transfúze (250ml) - - - Saline IV (1000ml) - Физраствор для в/в вливания (1000 мл) - Salino IV (1000ml) - Solution saline 0.9% IV (1000ml) - Sól fizjologiczna IV (1000ml) - Kochsalzlösung (1000ml) - 0,9%-os sósvíz-infúzió (1000ml) - Soluzione salina IV (1000ml) - Soro IV (1000ml) - Fyziologický roztok (1000ml) - - - Saline IV, for restoring a patients blood - Пакет физраствора для возмещения объёма потерянной крови - Solución salina intravenosa, para restaurar el volumen sanguíneo - Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle - 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). - 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. - Kochsalzlösung, ein medizinisches Volumenersatzmittel - Solução Salina Intravenosa 0.9%, para restaurar o volume de sangue temporariamente. - Fyziologický roztok se aplikuje intravenózně a slouží k obnově pacientovi krve - - - A medical volume-replenishing agent introduced into the blood system through an IV infusion. - Пакет физиологического раствора для возмещения объёма потерянной крови путем внутривенного вливания - Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. - Un remplacant 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. - Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. - Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. - Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. - - - Saline IV (500ml) - Физраствор для в/в вливания (500 мл) - Salino IV (500ml) - Solution saline 0.9% IV (500ml) - Sól fizjologiczna IV (500ml) - Kochsalzlösung (500ml) - 0,9%-os sósvíz-infúzió (500ml) - Soluzione salina IV (500ml) - Soro IV (1000ml) - Fyziologický roztok (500ml) - - - Saline IV (250ml) - Физраствор для в/в вливания (250 мл) - Salino IV (250ml) - Solution saline 0.9% IV (250ml) - Sól fizjologiczna IV (250ml) - Kochsalzlösung (250ml) - 0,9%-os sósvíz-infúzió (250ml) - Soluzione salina IV (250ml) - Soro IV (1000ml) - Fyziologický roztok (250ml) - - - Basic Field Dressing (QuikClot) - Первичный перевязочный пакет (QuikClot) - Vendaje básico (QuickClot) - Bandage basique (Hémostatique) - Opatrunek QuikClot ACS - Verbandpäckchen(Gerinnungsmittel) - Általános zárókötszer (QuikClot) - Bendaggio emostatico (QuikClot) - Bandagem básica (Coagulante) - Hemostatický obvaz (QuikClot) - - - QuikClot bandage - Гемостатический пакет QuikClot - Vendaje QuikClot - Bandage hémostatique - Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - Bandage mit Gerinnungsmittel - QuikClot kötszer - Bendaggio emostatico (QuikClot) - Bandagem com agente coagulante - Hemostatický obvaz (QuikClot) - - - Hemostatic bandage with coagulant that stops bleeding. - Медицинский коагулянт для экстренной остановки кровотечения - Un bandage aidant à coaguler les saignements mineurs à moyens. - Proszkowy opatrunek adsorpcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - 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 - Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. - Hemostatický obvaz určený k zástavě krvácení - - - Personal Aid Kit - Аптечка - Trousse de premiers soins - Equipo de primeros auxilios - Apteczka osobista - Persönliches Erste-Hilfe-Set - Elsősegélycsomag - Pronto soccorso personale - Kit De Primeiros Socorros Pessoal - Osobní lékárnička - - - Includes various treatment kit needed for stitching or advanced treatment - Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. - Incluye material médico para tratamientos avanzados - Inclue du matériel medical pour les traitements avancés, tel les points de suture. - 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. - Inclui vários tratamentos materiais para custura e tratamento avançado - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných - - - Personal Aid Kit for in field stitching or advanced treatment - W znacznym stopniu poprawia stan pacjenta - Полевая аптчека для продвинутого лечения и зашивания ран - Persönliches Erste-Hilfe-Set zum ambulanten Nähen und fortgeschrittener Behandlung. - Trousse de premiers soins pour coudre sur le terrain et traitements avancés. - Equipo de primeros auxilios para sutura de campaña o tratamientos avanzados - Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz - Kit de primeiros socorros para sutura ou tratamentos avançados - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli - Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. - - - Use Personal Aid Kit - Erste-Hilfe-Set benutzen - Использовать аптечку - Utiliser la Trousse de premier soins - Użyj apteczki osobistej - Usar equipo de primeros auxilios - Elsősegélycsomag használata - Usar o kit de primeiros socorros - Použít osobní lékárničku - Usa il pronto soccorso personale - - - Surgical Kit - Trousse chirurgicale - Хирургический набор - Kit quirúrgico - Zestaw do szycia ran - Operationsset - Sebészeti készlet - Kit chirurgico - Kit Cirurgico - Chirurgická sada - - - Surgical Kit for in field advanced medical treatment - Trousse chirurgicale pour le traitement sur le terrain - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - 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. - Kit Cirurgico para uso de tratamento médico avançado em campo - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Surgical Kit for in field advanced medical treatment - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - Zestaw pozwalający na zszywanie ran w polu - 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. - Kit Cirurgico para uso de tratamento médico avançado em campo. - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Use Surgical Kit - Operationsset benutzen - Usa kit chirurgico - Использовать хирургический набор - Utiliser la trousse chirugicale - Zszyj rany - Usar equipo quirúrgico - Sebészeti készlet használata - Použít chirurgickou sadu - Usar kit cirúrgico - - - Bodybag - Housse mortuaire - Мешок для трупов - Bolsa para cadáveres - Worek na zwłoki - Leichensack - Hullazsák - Sacca per corpi - Saco para cadáver - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos. - Pytel na mrtvoly - - - Blood Pressure - Tension artérielle - Артериальное давление - Presión arterial - Ciśnienie krwi - Blutdruck - Vérnyomás - Pressione sanguigna - Pressão Arterial - Krevní tlak - - - 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.. - Aferindo Pressão Arterial... - Kontroluji krevní tlak ... - - - %1 checked Blood Pressure: %2 - %1 kontrollierte Blutdruck: %2 - %1 controllata pressione sanguigna: %2 - %1 проверил артериальное давление: %2 - %1 à vérifié la tension: %2 - %1 sprawdził ciśnienie krwi: %2 - %1 verificada la presión arterial: %2 - %1 ellenőrizte a vérnyomást: %2 - %1 zkontrolován krevní tlak: %2 - %1 verificou pressão arterial: %2 - - - You checked %1 - Vous diagnostiquez %1 - Вы осмотрели раненого %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você verificou o paciente %1 - Zkontroloval jsi %1 - - - You find a blood pressure of %2/%3 - Vous avez trouvé une tension de %2/%3 - Артериальное давление %2/%3 - La Presión Arterial es %2/%3 - A vérnyomás %2/%3 - Hai riscontrato una pressione di %2/%3 - Wyczuwasz ciśnienie krwi o wartości %2/%3 - Der Blutdruck liegt bei %2/%3 - A Pressão Arterial é de %2/%3 - Našel jsi krevní tlak u %2/%3 - - - You find a low blood pressure - Tension basse - Давление низкое - La presión arterial es baja - Wyczuwasz niskie ciśnienie krwi - Blutdruck ist niedrig - A vérnyomás alacsony - La pressione sanguigna è bassa - Pressão Arterial baixa - Naměřil jsi nízký krevní tlak - - - You find a normal blood pressure - Tension normale - Давление нормальное - La presión arterial es normal - Wyczuwasz normalne ciśnienie krwi - Blutdruck ist normal - A vérnyomás normális - La pressione sanguigna è normale - Pressão Arterial normal - Naměřil jsi normální krevní tlak - - - You find a high blood pressure - Tension haute - Давление высокое - La presión arterial es alta - Wyczuwasz wysokie ciśnienie krwi - Blutdruck ist hoch - A vérnyomás magas - La pressione sanguigna è alta - Pressão Arterial Alta - Naměřil jsi vysoký krevní tlak - - - You find no blood pressure - Pas de tension - Давления нет - No hay presión arterial - Nie wyczuwasz ciśnienia krwi - Patient hat keinen Blutdruck - Nem észlelhető vérnyomás - La pressione sanguigna è assente - Sem Pressão Arterial - Nenaměřil jsi žádný krevní tlak - - - You fail to find a blood pressure - Vous n'avez pas pu mesurer de tension - Артериальное давление не определяется - No puedes encontrar presión arterial - 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 - Você falhou em aferir a Pressão Arterial - Nedokázal jsi změřit krevní tlak - - - Low - Niedrig - Basso - Низкое - Faible - Niskie - Baja - Alacsony - Nízký - Baixa - - - Normal - Normal - Normale - Нормальное - Normale - Normalne - Normal - Normális - Normální - Normal - - - High - Hoch - Alto - Высокое - Haute - Wysokie - Alta - Magas - Vysoký - Alta - - - No Blood Pressure - Kein Blutdruck - Nessuna Pressione Sanguigna - Артериальное давление отсутствует - Aucune tension - Brak ciśnienia krwi - Sin presión arterial - Nincs vérnyomás - Žádný krevní tlak - Sem pressão arterial - - - Pulse - Пульс - Pouls - Pulso - Tętno - Puls - Pulzus - Polso - Pulso - Tep - - - 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 ... - Aferindo Pulso ... - Kontroluji srdeční tep ... - - - You checked %1 - Вы осмотрели раненого %1 - Vous examinez %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você aferiu o paciente %1 - Zkontroloval jsi %1 - - - %1 checked Heart Rate: %2 - %1 kontrollierte Herzfrequenz: %2 - %1 Controllata Frequenza Cardiaca: %2 - %1 проверил пульс: %2 - %1 à vérifié le rythme cardiaque: %2 - %1 sprawdził tętno: %2 - %1 verificado el ritmo cardíaco: %2 - %1 ellenőrizte a szívverés-számot: %2 - %1 zkontroloval srdeční tep: %2 - %1 verificou a frequência cardíaca: %2 - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Nincs - - - Weak - Schwach - Lento - Слабый - Faible - Słabe - Débil - Gyenge - Slabý - Fraca - - - Normal - Normal - Normale - Нормальный - Normal - Normalne - Normal - Normális - Normální - Normal - - - Strong - Stark - Veloce - Сильный - Fort - Silne - Fuerte - Erős - Silný - Forte - - - You find a Heart Rate of %2 - Rythme cardiaque de %2 - Пульс %2 уд./мин. - El ritmo cardíaco es de %2 - Wyczuwasz tętno o wartości %2 - Herzfrequenz ist %2 - A szívverés-szám %2 - Il battito cardiaco è %2 - A Freqüência Cardíaca é de %2 - Nahmatal jsi srdeční tep u %2 - - - You find a weak Heart Rate - Rythme cardiaque faible - Пульс слабый - El ritmo cardíaco es débil - Wyczuwasz słabe tętno - Schwacher Puls - A szívverés-szám alacsony - Hai riscontrato un debole battito cardiaco - Freqüência Cardíaca baixa - Nahmatal jsi slabý srdeční tep - - - You find a strong Heart Rate - Rythme cardiaque élevé - Пульс учащенный - El ritmo cardíaco está acelerado - Wyczuwasz silne tętno - Starker Puls - A szívverés-szám magas - Hai riscontrato un forte battito cardiaco - Freqüência Cardíaca normal - Nahmatal jsi silný srdeční tep - - - You find a normal Heart Rate - Rythme cardiaque normal - Пульс в норме - El ritmo cardíaco es bueno - Wyczuwasz normalne tętno - Normaler Puls - A szívverés-szám normális - Hai riscontrato un normale battito cardiaco - Freqüência Cardíaca alta - Nahmatal jsi normální srdeční tep - - - You find no Heart Rate - Pas de rythme cardiaque - Пульс не прощупывается - No tiene ritmo cardíaco - Wyczuwasz brak tętna - Kein Puls gefunden - Nem észlelhető szívverés - Hai riscontrato una assenza di battito cardiaco - Sem Freqüência Cardíaca - Nenašel jsi - - - Response - Etat de Conscience - Реакция - Respuesta - Przytomność - Ansprechbarkeit - Reagálóképesség - Risposta - Reação - Odezva - - - You check response of patient - Vous vérifiez la réponse du patient - Вы проверяете реакцию раненого - Compruebas si el paciente reacciona - 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 - Aferindo se o paciente tem reação... - Zkontroloval jsi reakci pacienta - - - %1 is responsive - %1 реагирует на раздражители - %1 est conscient - %1 ha reaccionado - %1 jest przytomny - %1 ist anprechbar - %1 reakcióképes - %1 e' cosciente - %1 está respondendo - %1 odpovídá - - - %1 is not responsive - %1 не реагирует на раздражители - %1 est inconscient - %1 no reacciona - %1 jest nieprzytomny - %1 ist nicht ansprechbar - %1 nem reagál - %1 e' incosciente - %1 não está respondendo - %1 neodpovídá - - - You checked %1 - Вы осмотрели раненого %1 - Vous avez examiné %1 - Examinas a %1 - Zbadałeś %1 - Du hast versucht, %1 anzusprechen - Megnézted %1-t - Hai controllato %1 - Você aferiu o paciente %1 - Zkontroloval jsi %1 - - - Patient %1<br/>is %2.<br/>%3.<br/>%4 - Paziente %1<br/>è %2.<br/>%3.<br/>%4 - Пациент %1<br/>%2.<br/>%3.<br/>%4 - Patient %1<br/>ist %2.<br/>%3.<br/>%4 - Patient %1<br/>est %2.<br/>%3.<br/> - Pacjent %1<br/>jest %2.<br/>%3.<br/>%4 - Paciente %1<br/>is %2.<br/>%3.<br/>%4 - A páciens, %1,<br/>%2.<br/>%3.<br/>%4 - Pacient %1<br/>je %2.<br/>%3.<br/>%4 - Paciente %1<br/>é %2.<br/>%3.<br/>%4 - - - alive - Vivo - жив - lebendig - vivant - żywy - vivo - élő - naživu - vivo - - - dead - Morto - мёртв - muerto - tot - mort - martwy - halott - mrtev - morto - - - He's lost some blood - Ha perso sangue - Ha perdido un poco de sangre - Есть кровопотеря - Er hat etwas Blut verloren - Il a perdu du sang - Stracił trochę krwi - Valamennyi vért vesztett - Ztratil trochu krve - Ele perdeu um pouco de sangue - - - He's lost a lot of blood - Er hat viel Blut verloren - Sok vért vesztett - Stracił sporo krwi - Большая кровопотеря - Ha perdido mucha sangre - Il a perdu beaucoup de sang - Ztratil hodně krve - Ele perdeu muito sangue - Ha perso molto sangue - - - He hasn't lost blood - Non ha perso sangue - Нет кровопотери - Er hat kein Blut verloren - Il n'a pas perdu de sang - Nie stracił krwi - No ha perdido sangre - Nem vesztett vért - Neztratil žádnou krev - Ele não perdeu sangue - - - He is in pain - è affetto da dolore - Испытывает боль - Er hat Schmerzen - Il souffre - Odczuwa ból - Siente dolor - Fájdalmai vannak - Je v bolestech - Ele está com dor - - - He is not in pain - Non è affetto da dolore - Не испытывает боли - Er hat keine Schmerzen - Il ne souffre pas - Nie odczuwa bólu - No siente dolor - Nincsenek fájdalmai - Nemá žádné bolesti - Ele não está com dor - - - Bandaged - Bandé - Повязка наложена - Vendado - Zabandażowano - Bekötözve - Bendato - verbunden - Enfaixado - Obvázaný - - - You bandage %1 (%2) - Vous bandez %1 (%2) - Вы перевязали раненого %1 (%2) - Aplicas vendaje a %1 en %2 - Bandażujesz %1 (%2) - Bekötözöd %1-t (%2) - Stai bendando %1 (%2) - Du verbindest %1 (%2) - Você aplica bandagem no paciente %1 (%2) - Obvazuješ %1 (%2) - - - %1 is bandaging you - %1 vous bande - %1 перевязывает вас - %1 te está vendando - %1 bandażuje Ciebie - %1 bekötöz téged - %1 ti sta bendando - %1 verbindet dich - %1 está aplicando uma bandagem em você - %1 tě obvazuje - - - You start stitching injuries from %1 (%2) - Вы зашиваете ранения от %1 (%2) - Du nähst die Wunden von %1 (%2) - Vous suturez %1 (%2) - 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) - Você começa a suturar os ferimentos do %1 (%2) - Zašíváš rány %1 (%2) - - - Stitching - Наложение швов - Suturando - Nähen - Sutures - Szycie - Összevarrás - Suturando - Suturando... - Šití - - - You treat the airway of %1 - Вы интубируете раненого %1 - Estás intubando a %1 - Du behandelst die Atemwege von %1 - Vous traitez les voies respiratoires de %1 - Udrażniasz drogi oddechowe %1 - Kezeled %1 légútját - Controlli le vie respiratorie di %1 - Você entuba o %1 - Ošetřuješ dýchací cesty %1 - - - Airway - Дыхательные пути - Vías aéreas - Drogi oddechowe - Atemwege - Voies respiratoires - Légút - Vie respiratorie - Vias Aéreas - Dýchací cesty - - - %1 is treating your airway - %1 проводит вам интубацию - %1 traite vos voies respiratoires - %1 te está intubando - %1 udrażnia Twoje drogi oddechowe - %1 behandelt deine Atemwege - %1 kezeli a légútadat - %1 ti sta trattando le vie respiratorie - %1 está te entubando - %1 ošetřuje tvoje dýchací cesty - - - Drag - Ziehen - Arrastrar - Ciągnij - Táhnout - Тащить - Trainer - Húzás - Arrastar - Trascina - - - Carry - Tragen - Cargar - Nieś - Nést - Нести - Porter - Cipelés - Carregar - Trasporta - - - Release - Loslassen - Soltar - Połóż - Položit - Отпустить - Déposer - Elengedés - Soltar - Rrilascia - - - Load Patient Into - Patient Einladen - Cargar al paciente en - Załaduj pacjenta - Naložit pacianta do - Погрузить пациента в - Embarquer le patient - Sebesült berakása - Carregar Paciente Em - Carica paziente nel - - - Unload Patient - Patient Ausladen - Descargar al paciente - Wyładuj pacjenta - Vyložit pacienta - Выгрузить пациента - Débarquer le patient - Sebesült kihúzása - Descarregar Paciente - Scarica il paziente - - - Unload patient - Descargar al paciente - Выгрузить пациента - Patient Ausladen - Wyładuj pacjenta - Débarquer le patient - Sebesült kihúzása - Scarica il paziente - Descarregar Paciente - Vyložit pacienta - - - Load patient - Cargar al paciente en - Погрузить пациента - Patient Einladen - Załaduj pacjenta - Embarquer le patient - Sebesült berakása - Carica il paziente - Carregar Paciente Em - Naložit pacienta - - - Place body in bodybag - Colocar cuerpo en bolsa para cadáveres - Поместить тело в мешок для трупов - Körper in Leichesack verstauen - 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 - Colocar corpo dentro do saco para cadáver - Umístni tělo do pytle na mrtvoly - - - Placing body in bodybag - Colocando cuerpo en bolsa para cadáveres - Упаковка тела ... - Verstaue Körper in Leichensack - 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 - Colocando corpo dentro do saco para cadáver... - Umístňuji tělo do pytle na mrtvoly - - - %1 has bandaged patient - %1 has vendado al paciente - %1 перевязал пациента - %1 hat den Patienten verbunden - %1 założył bandaż - %1 a pansé le patient - %1 bekötözte a pácienst - %1 ha bendato il paziente - %1 aplicou bandagem no paciente - %1 již obvázal pacienta - - - %1 used %2 - %1 usó %2 - %1 benutzt %2 - %1 использовал %2 - %1 użył %2 - %1 utilise %2 - %1 használta a %2-t - %1 ha usato %2 - %1 usou %2 - %1 použil %2 - - - %1 has given an IV - %1 провёл переливание - %1 ha puesto una IV - %1 hat eine Infusion verabreicht - %1 podał IV - %1 a administré une IV - %1 infúziót adott - %1 ha somministrato una IV - %1 aplicou um intravenoso - %1 již aplikoval IV - - - %1 applied a tourniquet - %1 aplicado torniquete - %1 наложил жгут - %1 hat einen Tourniquet angelegt - %1 założył stazę - %1 a appliqué un garrot - %1 felhelyezett egy érszorítót - %1 ha applicato un laccio emostatico - %1 aplicou um torniquete - %1 použil škrtidlo - - - %1 performed CPR - %1 wykonał cykl RKO - - - Heavily wounded - Schwer verwundet: - Ciężko ranny - Тяжелые ранения - Gravemente ferito - Gravemente herido - Lourdement blessé - Erősen sérült - Těžce zraněn - Gravemente ferido - - - Lightly wounded - Leicht verwundet: - Lekko ranny - Легкие ранения - Leggermente ferito - Levemente herido - Légèrement blessé - Enyhén sérült - Lehce zraněn - Levemente ferido - - - Very lightly wounded - Sehr leicht verwundet: - B. lekko ranny - Царапины - Ferito lievemente - Muy levemente herido - Très légèrement blessé - Nagyon enyhén sérült - Velmi lehce zraněn - Muito levemente ferido - - - Head - Kopf - Głowa - Головы - Testa - Cabeza - Tête - Fej - Hlava - Cabeça - - - Torso - Torso - Tors - Торса - Torso - Torso - Torse - Testtörzs - Trup - Torso - - - Left Arm - Linker Arm - Lewe ramię - Левой руки - Braccio sinistro - Brazo izquierdo - Bras gouche - Bal kar - Levá ruka - Braço Esquerdo - - - Right Arm - Rechter Arm - Prawe ramię - Правой руки - Braccio destro - Brazo derecho - Bras droit - Jobb kar - Pravá ruka - Braço Direito - - - Left Leg - Linkes Bein - Lewa noga - Левой ноги - Gamba sinistra - Pierna izquierda - Jambe gauche - Bal láb - Levá noha - Perna Esquerda - - - Right Leg - Rechtes Bein - Prawa noga - Правой ноги - Gamba destra - Pierna derecha - Jambe droite - Jobb láb - Pravá noha - Perna Direita - - - Bandaging removes bloodstains - Bandagieren entfernt Blutflecken - Bandażowanie usuwa ślady krwi - Obvázání odstraňuje skvrny od krve - El vendaje elimina las manchas de sangre - Bandagem remove manchas de sangue - A kötözés eltávolítja a vérfoltokat - - - Pain is only temporarily suppressed - Schmerzen werden nur vorübergehend unterdrückt - Ból jest tymczasowo zwalczany - Bolest je potlačena pouze dočasně - El dolor se suprime solo temporalmente - Dor é suprimida somente temporáriamente - A fájdalom csak ideiglenesen csökken - - - Pain Effect Type - Schmerzeffekt-Typ - Rodzaj efektu bólu - Визуальный эффект боли - Pain Effect Type - Tipo de efecto de dolor - Type d'effet de douleur - Fájdalom-effekt típusa - Tipo do efeito de dor - Typ bolesti - efekt - - - Colour Flashing - Farbblinken - Pulsujące kolory - Пульсирующий свет - Colore lampeggiante - Parpadeo de color - Flash de couleur - Színvillódzás - Flash de cor - Blikající barva - - - Chromatic Aberration - Chromatische Aberration - Aberracja chromatyczna - Хроматическая аберрация - Aberrazione cromatica - Aberración cromática - Aberration chromatique - Kromatikus aberráció - Chromatická aberace - Aberração Cromática - - - Style of menu (Medical) - Styl menu medycznego - Style de menu (Médical) - Menü-Stil (Medical) - Вид меню (медицина) - Tipo de menú (Medico) - Styl menu (Zdravotní) - Estilo do menu (Médico) - Menü stílusa (Orvosi) - Stile del menù (medico) - - - Select the type of menu you prefer; default 3d selections or radial. - Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne - Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale - Wähle den Menü-Stil: Standard 3D-Selektion oder kreisförmig. - Выберите тип меню: стандартный вариант (3D) или радиальный - Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. - Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. - Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. - Zvolte typ menu: základní 3D výběr nebo kruhový - Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. - - - Selections (3d) - Pozycje (3D) - sélections (3D) - 3D-Selektion - Стандартный (3D) - Selecciones (3d) - Seleção (3d) - Választékok (3D) - 3D výběr - Selezione (3D) - - - Radial - Radialne - Radiale - Kreisförmig - Радиальный - Radial - Radial - Kerek - Kruhový - Radiale - - - Scrape - Kratzer - Scorticatura - Ссадина - Eraflure - Draśnięcie - Arañazo - Horzsolás - Raspão - Odřenina - - - Minor Scrape - Kleiner Kratzer - Minima Scorticatura - Малая ссадина - Petite éraflure - Pomniejsze draśnięcie - Arañazo menor - Kis horzsolás - Raspão leve - Malá odřenina - - - Medium Scrape - Mittlerer Kratzer - Media Scorticatura - Средняя ссадина - Moyenne éraflure - Średnie draśnięcie - Arañazo medio - Közepes horzsolás - Raspão médio - Středně velká odřenina - - - Large Scrape - Großer Kratzer - Alta Scorticatura - Большая ссадина - Grande éraflure - Duże draśnięcie - Arañazo severo - Nagy horzsolás - Raspão grave - Velká odřenina - - - Avulsion - Avulsion - Avulsione - Рваная рана - Avulsion - Rana płatowa - Avulsión - Leszakadás - Avulsão - Avulze - - - Minor Avulsion - Kleine Avulsion - Minima Avulsione - Малая рваная рана - Petite avulsion - Pomniejsza rana płatowa - Avulsión menor - Kis leszakadás - Avulsão leve - Malá avulze - - - Medium Avulsion - Mittlere Avulsion - Media Avulsione - Средняя рваная рана - Moyenne avulsion - Średnia rana płatowa - Avulsión media - Közepes leszakadás - Avulsão média - Střední avulze - - - Large Avulsion - Große Avulsion - Alta Avulsione - Большая рваная рана - Grande avulsion - Duża rana płatowa - Avulsión severa - Nagy leszakadás - Avulsão grave - Velká avulze - - - Bruise - Prellung - Contusione - Ушиб - Hématome - Stłuczenie - Contusión - Zúzódás - Contusão - Modřina - - - Minor Bruise - Kleine Prellung - Minima Contusione - Малый ушиб - Petit hématome - Pomniejsze stłuczenie - Contusión menor - Kis zúzódás - Contusão leve - Malá modřina - - - Medium Bruise - Mittlere Prellung - Media Contusione - Средний ушиб - Hématome moyen - Średnie stłuczenie - Contusión media - Közepes zúzódás - Contusão média - Středně velká modřina - - - Large Bruise - Große Prellung - Alta Contusione - Большой ушиб - Hématome important - Duże stłuczenie - Contusión severa - Nagy zúzódás - Contusão grave - Velká modřina - - - Crushed tissue - Quetschverletzung - Tessuto Schiacciato - Компресионная травма - Tissu écrasé - Zgniecienie tkanek miękkich - Tejido triturado - Zúzott szövet - Tecido esmagado - Zhmoždění měkkých tkání - - - Minor crushed tissue - Kleine Quetschverletzung - Minimo Tessuto Schiacciato - Малая компрессионная травма - Tissu écrasé léger - Pomniejsze zgniecienie tkanek miękkich - Tejido triturado menor - Kis zúzott szövet - Tecido esmagado leve - Malé zhmoždění měkkých tkání - - - Medium crushed tissue - Mittlere Quetschverletzung - Medio Tessuto Schiacciato - Средняя компрессионная травма - Tissu écrasé moyen - Średnie zgniecienie tkanek miękkich - Tejido triturado medio - Közepes zúzott szövet - Tecido esmagado médio - Střední zhmoždění měkkých tkání - - - Large crushed tissue - Große Quetschverletzung - Alto Tessuto Schiacciato - Большая компрессионная травма - Tissu écrasé large - Duże zgniecienie tkanek miękkich - Tejido triturado severo - Nagy zúzött szövet - Tecido esmagado grave - Velké zhmoždění měkkých tkání - - - Cut - Schnittwunde - Taglio - Резаная рана - Coupure - Rana cięta - Corte - Vágás - Corte - Řezná rána - - - Small Cut - Kleine Schnittwunde - Piccolo Taglio - Малая резаная рана - Pomniejsza rana cięta - Corte menor - Kis vágás - Petite coupure - Corte leve - Malá řezná rána - - - Medium Cut - Mittlere Schnittwunde - Medio Taglio - Средняя резаная рана - Średnia rana cięta - Corte mediano - Közepes vágás - Moyenne coupure - Corte médio - Střední řezná rána - - - Large Cut - Große Schnittwunde - Grande Taglio - Большая резаная рана - Duża rana cięta - Corte severo - Nagy vágás - Large coupure - Corte grave - Velká řezná rána - - - Tear - Riss - Strappo - Рваная рана - Rozerwanie skóry - Déchirure - Desgarro - Szakadás - Ruptura - Tržná rána - - - Small Tear - Kleiner Riss - Piccolo Strappo - Малая рваная рана - Pomniejsze rozerwanie skóry - Petite Déchirure - Desgarro menor - Kis szakadás - Ruptura leve - Malá tržná rána - - - Medium Tear - Mittlerer Riss - Medio Strappo - Средняя рваная рана - Średnie rozerwanie skóry - Desgarro medio - Közepes szakadás - Moyenne déchirure - Ruptura média - Střední tržná rána - - - Large Tear - Großer Riss - Grande Strappo - Большая рваная рана - Duże rozerwanie skóry - Desgarro severo - Nagy szakadás - Large déchirure - Ruptura grave - Velká tržná rána - - - Velocity Wound - Ballistisches Trauma - Velocità Ferita - Огнестрельная рана - Rana postrzałowa - Blessure de vélocité - Herida de bala - Lőtt seb - Ferimento por projétil de arma de fogo - Střelné poranění - - - Smal Velocity Wound - Kleines Ballistisches Trauma - Lenta Velocità Ferita - Малая огнестрельная рана - Pomniejsza rana postrzałowa - Herida de bala menor - Kis lőtt seb - Petite blessure de vélocité - Ferimento leve por projétil de arma de fogo - Malé střelné poranění - - - Medium Velocity Wound - Mittleres Ballistisches Trauma - Media Velocità Ferita - Средняя огнестрельная рана - Średnia rana postrzałowa - Herida de bala media - Közepes lőtt seb - Moyenne blessure de vélocité - Ferimento médio por projétil de arma de fogo - Střední střelné poranění - - - Large Velocity Wound - Großes Ballistisches Trauma - Alta Velocità Ferita - Большая огнестрельная рана - Duża rana postrzałowa - Herida de bala severa - Nagy lőtt seb - Large blessure de vélocité - Ferimento grave por projétil de arma de fogo - Velké střelné poranění - - - Puncture Wound - Stichwunde - Puntura Ferita - Колотая рана - Rana kłuta - Blessure de perforation - Herida punzante - Szúrt seb - Ferimento por perfuração - Bodná rána - - - Minor Puncture Wound - Kleine Stichwunde - Piccola Puntura Ferita - Малая колотая рана - Pomniejsza rana kłuta - Herida punzante menor - Kis szúrt seb - Légère blessure de perforation - Ferimento leve por perfuração - Malá bodná rána - - - Medium Puncture Wound - Mittlere Stichwunde - Media Puntura Ferita - Средняя колотая рана - Średnia rana kłuta - Herida punzante media - Közepes szúrt seb - Moyenne blessure de perforation - Ferimento médio por perfuração - Střední bodná rána - - - Large Puncture Wound - Große Stichwunde - Grande Puntura Ferita - Большая колотая рана - Duża rana kłuta - Herida punzante severa - Nagy szúrt seb - Large blessure de perforation - Ferimento grave por perfuração - Velká bodná rána - - - Broken Femur - Gebrochener Oberschenkelknochen - Femore Rotto - Перелом - Zkłamana kość udowa - Fémur cassé - Femur roto - Törött combcsont - Fêmur quebrado - Zlomená stehenní kost - - - Treating ... - Behandeln ... - Ellátás ... - Opatrywanie ran ... - Traitement ... - Лечение ... - Tratando ... - Tratando... - Ošetřuji ... - Curando ... - - - Removing Tourniquet ... - Tourniquet entfernen ... - Zdejmowanie stazy ... - Quitando torniquete ... - Retire le tourniquet ... - Removendo torniquete... - Érszorító eltávolítása ... - Sundavám škrtidlo ... - Снятие жгута ... - Togliendo il laccio emostatico ... - - - ACE Medical - ACE: медицина - ACE Opcje medyczne - Médico ACE - ACE-Medicsystem - ACE Zdravotnické - ACE Médico - ACE Orvosi Rendszer - - - Medical Settings [ACE] - Настройки медицины [ACE] - Ustawienia medyczne - Ajustes médicos [ACE] - Medizinische Einstellungen [ACE] - Lékařské nastavení [ACE] - Ajustes médicos [ACE] - Orvosi beállítások [ACE] - - - Medical Level - Сложность медицины - Poziom medyczny - Nivel médico - Medizinisches Level - Úroveň medického - Nível médico - Orvosi szint - - - What is the medical simulation level? - Каков уровень сложности медицинской системы? - Jaki jest poziom symulacji medycznej? - ¿Cuál es el nivel de simulación médica? - Wie hoch soll das medizinische Simulationslevel sein? - Jaká je úroveň lékařské simulace? - Qual o nível de simulação médica? - Milyen komplex legyen az orvosi szimuláció? - - - Basic - Базовый - Podstawowy - Básico - Standard - Základní - Básica - Alap - - - Advanced - Усложненный - Zaawansowany - Avanzado - Erweitert - Pokročilé - Avançada - Fejlett - - - Medics setting - Настройки медиков - Poziom medyków - Configuración médica - Medizinische Einstellungen - Úroveň zdravotníků - Configuração médica - Orvosok beállítása - - - What is the level of detail prefered for medics? - Каков уровень подробностей для медиков? - Jaki jest poziom detali medycznych wyświetlanych dla medyków? - ¿Cuál es el nivel de detalle preferido para los médicos? - Jaká úroveň detailů je preferována pro zdravotníky? - Qual o nível de detalhe preferido para os médicos? - Mi a javasolt részletesség orvosok számára? - - - Disable medics - Отключить медиков - Wyłącz medyków - Desactivar médicos - Sanitäter deaktivieren - Zakázat zdravotníky - Desativar médicos - Orvosok letiltása - - - Enable Litter - Включить мусор - Aktywuj odpadki - Activar restos médicos - Abfälle aktivieren - Povolit odpadky - Ativar lixo médico - Szemét engedélyezése - - - Enable litter being created upon treatment - Включить появление мусора после лечения - Twórz odpadki medyczne podczas leczenia - Activar los restos médicos que se crean en el tratamiento - Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde - Vytváří odpad zdravotnického materiálu pří léčení - Ativar lixo ser criado após tratamento - Engedélyezi a szemét keletkezését ellátáskor - - - Life time of litter objects - Время удаления мусора - Długość życia odpadków - Tiempo de vida de los restos médicos - Dauer des angezeigten Abfalls - Životnost pro odpadky - Tempo de vida dos objetos do lixo - Szemétobjektumok élettartama - - - How long should litter objects stay? In seconds. -1 is forever. - Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время. - Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. - ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. - Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. - Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. - Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. - Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. - - - Enable Screams - Включить крики - Aktywuj wrzaski - Activar gritos - Schreie aktivieren - Povolit křik - Ativar gritos - Kiáltások engedélyezése - - - Enable screaming by injuried units - Включить крики раненных бойцов - Aktywuj wrzeszczenie z bólu przez ranne jednostki - Activar gritos para unidades heridas - Aktiviere Schreie bei verletzten Einheiten - Povolit křičení zraněných jednotek - Ativa gritos para unidades feridas - Engedélyezi a sérült egységek kiáltásait - - - Player Damage - Урон игроку - Próg obrażeń graczy - Daño de jugador - Spielerschaden - Poškození hráče - Dano do jogador - Játékos sérülés - - - What is the damage a player can take before being killed? - Какой уровень урона необходим, чтобы убить игрока? - Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? - ¿Cuál es el daño que un jugador puede sufrir antes de morir? - Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? - Jaké poškození může hráč dostat než bude zabit? - Qal é o dano que um jogador pode sofrer antes de morrer? - Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? - - - AI Damage - Урон ботам - Próg obrażeń AI - Daño IA - KI-Schaden - Poškození AI - Dano da IA - AI sérülés - - - What is the damage an AI can take before being killed? - Какой уровень урона необходим, чтобы убить бота? - Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? - ¿Cuál es el daño que la IA puede sufrir antes de morir? - Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? - Jaké poškození může AI dostat než bude zabito? - Qual é o dano que uma IA pode sofrer antes de morrer? - Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? - - - AI Unconsciousness - Потеря сознания ботами - Nieprzytomność AI - Inconsciencia IA - KI-Bewusstlosigkeit - Bezvědomí AI - Inconsciência da IA - AI eszméletlenség - - - Allow AI to go unconscious - Позволить ботам терять сознание - Czy AI może być nieprzytomne od odniesionych obrażeń? - Permita a la IA caer inconsciente - KI kann bewusstlos werden - Umožňuje AI upadnout do bezvědomí - Permite IA ficar inconsciente - Engedélyezi az AI eszméletének elvesztését - - - Remote Controlled AI - IA controlada remotamente - IA controlada remotamente - Zdalnie sterowane AI - Vzdáleně ovládané AI - Távvezérelt AI - - - Treat remote controlled units as AI not players? - ¿Tratar unidades remotamente controladas como IA? - Tratar unidades remotamente controladas como IA? - Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? - Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? - Távvezérelt egységek AI-ként, nem játékosként való kezelése? - - - Prevent instant death - Отключить мгновенную смерть - Wył. natychmiast. śmierć - Prevenir muerte instantánea - Verhindere direkten Tod - Zabránit okamžité smrti - Previnir morte instantânea - Azonnali halál kiiktatása - - - Have a unit move to unconscious instead of death - Бойцы теряют сознание вместо того, чтобы умирать - Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń - Mover una unidad a inconsciente en vez de a muerta - Lässt eine Einheit bewusstlos werden anstatt zu sterben - Jednotka upadne do bezvědomí namísto smrti - Fazer a unidade ficar inconsciente invés de morrer - Egy egység kerüljön eszméletlen állapotba a halott helyett - - - Bleeding coefficient - Коэффициент потери крови - Mnożnik krwawienia - Coeficiente de sangrado - Verblutungsmultiplikator - Koeficient krvácení - Coeficiente de sangramento - Vérzési koefficiens - - - Coefficient to modify the bleeding speed - Коэффициент, изменяющий скорость кровопотери - Mnożnik modyfikujący prędkość wykrwawiania się - Coeficiente para modificar la velocidad de sangrado - Multiplikator um die Verblutungsgeschwindigkeit zu verändern - Koeficient rychlosti krvácení - Coeficiente para modificar a velocidade do sangramento - Egy szorzó a vérzés sebességének szabályozására - - - Pain coefficient - Коэффициент боли - Mnożnik bólu - Coeficiente de dolor - Schmerzmultiplikator - Koeficient bolesti - Coeficiente de dor - Fájdalmi koefficiens - - - Coefficient to modify the pain intensity - Коэффициент, изменяющий уровень боли - Mnożnik modyfikujący intensywność bólu - Coeficiente para modificar la intensidad del dolor - Multiplikator um den Schmerzintensität zu verändern - Koeficient intenzity bolesti - Coeficiente para modificar a instensidade de dor - Egy szorzó a fájdalom erősségének szabályozására - - - Sync status - Синхронизация статуса - Synchronizuj status - Sincronizador estado - Status synchronisieren - Synchronizovat status - Sincronizar estado - Szinkronizációs állapot - - - Keep unit status synced. Recommended on. - Синхронизировать статус юнитов. Рекомендуется включить. - Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. - Mantener el estado de la unidad sincronizado. Recomendado activado - Status der Einheit synchron halten. Sollte aktiviert bleiben. - Udržuje status jednotky synchronizovaný. Doporučeno zapnout. - Mater o estado da unidade sincronizado. Recomendado ativado. - Egységállapotok szinkronizálása. Javasolt a bekapcsolása. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten dostarcza system medyczny dla graczy oraz AI. - Proporciona un sistema médico para jugadores e IA. - Aktiviert ein medizinisches System für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona o sistema médico para os jogadores e a IA. - Egy orvosi rendszert ad játékosok és AI-k számára. - - - Advanced Medical Settings [ACE] - Настройки усложненной медицины [ACE] - Zaawansowane ustawienia medyczne - Ajustes médicos avanzados [ACE] - Erweiterte medizinische Einstellungen [ACE] - Pokročilé zdravotnické nastavení [ACE] - Ajustes médicos avançados [ACE] - Fejlett orvosi beállítások [ACE] - - - Enabled for - Включено для - Aktywne dla - Hablitado para - Aktiviert für - Povoleno pro - Habilitado para - Engedélyezve... - - - Select what units the advanced medical system will be enabled for - Выберите, на кого будет распространяться усложненная система медицины - Wybierz dla kogo zaawansowany system medyczny będzie aktywny - Seleccione para qué unidades será habilitado el sistema médico avanzado - Wähle aus welche Einheiten das erweiterte medizinische System haben - Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen - Selecione quais unidades o sistema médico avançado será habilitado - Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer - - - Players only - Игроков - Tylko dla graczy - Solo jugadores - Nur Spieler - Pouze hráči - Somente jogadores - Csak játékosok - - - Players and AI - Игроков и ботов - Gracze oraz AI - Jugadors e IA - Spieler und KI - Hráči a AI - Jogadores e IA - Játékosok és AI - - - Enable Advanced wounds - Включить усложненные ранения - Akt. zaawansowane rany - Activa heridas avanzadas - Aktiviere erweiterte Wunden - Povolit pokročilé zranění - Ativar ferimentos avançados - Komplex sebek engedélyezése - - - Allow reopening of bandaged wounds? - Будут ли открываться уже перевязанные раны? - Pozwól na otwieranie się zabandażowanych ran? - Permitir la reapertura de las heridas vendadas? - Erlaube das Öffnen von bandagierten Wunden? - Umožnit znovuotevření zavázané rány? - Permitr reabertura de ferimentos enfaixados? - Visszanyílhatnak a bekötözött sebek? - - - Vehicle Crashes - Аварии транспорта - Obrażenia od kolizji - Accidentes de vehículos - Fahrzeugunfälle - Poškození z kolize - Batidas de veículos - Járműbalesetek - - - Do units take damage from a vehicle crash? - Должны ли юниты получать повреждения от аварий на транспорте? - Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? - ¿Las unidades reciben daño de un accidente de tráfico? - Bekommen Einheiten von Fahrzeugunfällen Schaden? - Dostane jednotka poškození při autonehodě? - As unidades recebem dano de uma batida de veículo? - Sérülnek-e az egységek autós ütközés során? - - - Allow PAK - Использование аптечки - Ust. apteczek osobistych - Permitir EPA - Erlaube Erste-Hilfe-Set - Povolit osobní lékárničky - Permitir Kit de Primeiros Socorros - Elsősegélycsomag engedélyezése - - - Who can use the PAK for full heal? - Кому разрешено выполнять полное лечение с помощью аптечки? - Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? - ¿Quién puede utilizar el EPA para una cura completa? - Wer kann das Erste-Hilfe-Set für eine Endheilung verwenden? - Kdo může použít osobní lékárničku pro plné vyléčení? - Quem pode usar o KPS para cura completa? - Ki használhatja az elsősegélycsomagot teljes gyógyításra? - - - Anyone - Кем угодно - Wszyscy - Nadie - Jeder - Kdokoliv - Qualquer um - Akárki - - - Medics only - Только медиками - Tylko medycy - Solo médicos - Nur Sanitäter - Pouze zdravotník - Somente médicos - Csak orvosok - - - Doctors only - Только врачами - Tylko doktorzy - Solo doctores - Nur Ärzte - Pouze doktor - Somente doutores - Csak doktorok - - - Remove PAK on use - Удалять аптечки после использования - Usuń apteczkę po użyciu - Eliminar EPA después del uso - Entferne Erste-Hilfe-Set bei Verwendung - Odebrat osobní lékárničku po použití - Remover o KPS depois do uso - Elsősegélycsomag eltávolítása használatkor - - - Should PAK be removed on usage? - Нужно ли удалять аптечки после использования? - Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? - El EPA será eliminado después de usarlo - Sollen Erste-Hilfe-Sets bei Verwendung entfernt werden? - Má se osobní lékárnička odstranit po použití? - Deve o KPS ser removido depois do uso? - Eltávolítódjon az elsősegélycsomag használatkor? - - - Locations PAK - Место использования аптечки - Ogr. apteczek osobistych - Ubicacions del EPA - Orte für Erste-Hilfe-Set - Lokace osobní lékárničky - Localizações do KPS - Elsősegélycsomag helyek - - - Where can the Personal Aid Kit be used? - Где может использоваться аптечка? - Gdzie można korzystać z apteczek osobistych? - ¿Dónde se puede utilizar el equipo de primeros auxilios? - Wo kann das Erste-Hilfe-Set verwendet werden? - Kde může být použita osobní lékárnička? - Onde o kit de primeiros socorros pode ser utilizado? - Hol lehet az elsősegélycsomagot használni? - - - Condition PAK - Podmínka osobní lékárničky - Condición EPA - Warunek apteczek - Elsősegélycsomag állapot - Condição do KPS - - - When can the Personal Aid Kit be used? - Kde může být použita osobní lékárnička? - ¿Cuando se puede utilizar el Equipo de primeros auxilios? - Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? - Mikor lehet az elsősegélycsomagot használni? - Onde o kit de primeiros socorros pode ser utilizado? - - - Anywhere - Где угодно - Wszędzie - Donde sea - Überall - Kdekoliv - Qualquer lugar - Akárhol - - - Medical vehicles - В медицинском транспорте - Pojazdy medyczne - Vehiculos médicos - Medizinische Fahrzeuge - Zdravotnická vozidla - Veículos médcos - Orvosi járművek - - - Medical facility - В госпитале - Budynki medyczne - Centro médico - Medizinische Einrichtungen - Zdravotnické zařízení - Instalação médica - Orvosi létesítmény - - - Vehicles & facility - В транспорте и госпитале - Pojazdy i budynki medyczne - Vehículos y centros - Fahrzeuge & Einrichtungen - Vozidla a zařízení - Veículos e instalações - Járművek & létesítmény - - - Allow Surgical kit (Adv) - Разрешить хирургический набор (усл.) - Ust. zestawu chirurg. - Permitir equipo quirúrgico (Avanzado) - Erlaube Operationskasten - Povolit chirurgickou soupravu (Pokr.) - Permite kit cirúrgico (avançado) - Sebészkészlet (Fejlett) engedélyezése - - - Who can use the surgical kit? - Кто может использовать хирургический набор? - Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? - ¿Quién puede utilizar el equipo quirúrgico? - Wer kann den Operationskasten verwenden? - Kdo může použít chirurgickou soupravu? - Quem pode usar o kit cirúrgico? - Ki használhatja a sebészkészletet? - - - Remove Surgical kit (Adv) - Удалять хирургический набор (усл.) - Usuń zest. chir. po użyciu - Eliminar equipo quirúrgico (Avanzado) - Enrtferne Operationskasten (erweitert) - Odebrat chirurgickou soupravu (Pokr.) - Remover kit cirúrgico (avançado) - Sebészkészlet (Fejlett) eltávolítása - - - Should Surgical kit be removed on usage? - Нужно ли удалять хирургический набор после использования? - Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? - Eliminar el equipo quirúrgico después del uso - Entferne Operationskästen bei Verwendung? - Odebrat chirurgickou soupravu po použití? - Deve o kit cirúrgico ser removido após o uso? - Eltávolítódjon a sebészkészlet használatkor? - - - Locations Surgical kit (Adv) - Место использования хирургического набора (усл.) - Ogr. zestawu chirurg. - Ubicaciones del equipo quirúrgico (Avanzado) - Orte für Operationskästen (erweitert) - Lokace chirurgické soupravy (Pokr.) - Localizações do kit cirúrgico (avançado) - Sebészkészlet (Fejlett) helyei - - - Where can the Surgical kit be used? - Где может использоваться хирургический набор? - Gdzie można korzystać z zestawu chirurgicznego? - Dónde se puede utilizar el equipo quirúrgico - Wo kann der Operationskasten verwendet werden? - Kde může být použita chirurgická souprava? - Onde o kit cirúrgico pode ser utilizado? - Hol lehet a sebészkészletet használni? - - - Condition Surgical kit (Adv) - Podmínka chirurgické soupravy (Pokr.) - Condición de equipo quirúrgico (Av) - Warunek zestawu chir. - Sebészkészlet állapot - Condição do Kit Cirúrgico (Avançado) - - - When can the Surgical kit be used? - Kde může být použita chirurgická souprava? - ¿Cuando se puede utilizar el equipo quirúrgico? - Po spełnieniu jakich warunków zestaw chirurgiczny może zostać zastosowany na pacjencie? - Mikor lehet a sebészkészletet használni? - Onde o kit cirúrgico pode ser utilizado? - - - Bloodstains - Blutflecken - Plamy krwi - Skvrny od krve - Manchas de sangre - Manchas de sangue - Vérfoltok - - - Bandaging removes bloodstains - Bandagieren entfernt Blutflecken - Bandażowanie usuwa ślady krwi - Obvázání odstraňuje skvrny od krve - El vendaje elimina las manchas de sangre - Bandagem remove manchas de sangue - Kötözés eltávolítja a vérfoltokat - - - Pain suppression - Schmerzunterdrückung - Zwalczanie bólu - Potlačení bolesti - Supresión del dolor - Supressão de dor - Fájdalomcsillapítás - - - Pain is only temporarily suppressed, not removed - Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt - Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale - Bolest je potlačena, ale jen dočastně - El dolor se suprime solo temporalmente, no se elimina. - Dor é somente temporáriamente suprimida, não removida - A fájdalom csak ideiglenesen csökken, nem távolítódik el - - - Configure the treatment settings from ACE Medical - Настройка лечения в медицинской системе ACE - Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE - Configure las opciones de tratamiento del ACE Médico - Behandlungseinstellungen vom ACE-Medical konfigurieren - Konfigurace nastavení léčby ze zdravotnické systému ACE - Configure as opções de tratamento do ACE Médico - Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből - - - Revive Settings [ACE] - Настройки реанимации [ACE] - Ustawienia wskrzeszania - Sistema de resucitado [ACE] - Wiederbelebungseinstellungen [ACE] - Nastavení oživení [ACE] - Sistema de reavivamento [ACE] - Újraélesztés beállításai [ACE] - - - Enable Revive - Включить реанимацию - Aktywuj wskrzeszanie - Habilitar resucitado - Erlaube Wiederbelebung - Povolit oživení - Habilitar reavivamento - Újraélesztés engedélyezése - - - Enable a basic revive system - Включить базовую систему реанимации - Aktywuj podstawowy system wskrzeszania - Habilitar un sistema básico de resucitado - Aktiviere Standard-Wiederbelebungssystem - Povolit základní systém oživení - Habilitar um sistema básico de reavivamento - Egy alap újraélesztési rendszer engedélyezése - - - Max Revive time - Макс. время реанимации - Maks. czas agonii - Tiempo máximo de resucitado - Maximale Wiederbelebungszeit - Maximální čas pro oživení - Tempo máximo de reavivamento - Maximum újraélesztési idő - - - Max amount of seconds a unit can spend in revive state - Максимальное время в секундах, в течение которого бойца можно реанимировать - Maksymalna długość agonii w sekundach (czas na wskrzeszenie) - Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación - Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann - Maximální doba v agónii v sekundách - Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento - Maximum másodperc, amit egy egység újraélesztési állapotban tölthet - - - Max Revive lives - Макс. кол-во жизней - Maks. ilość wskrzeszeń - Vidas máximas de resucitado - Maximale Leben bei Wiederbelebung - Maximální počet oživení - Vidas máximas do reavivado - Maximum újraélesztési lehetőségek - - - Max amount of lives a unit. 0 or -1 is disabled. - Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. - Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. - Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. - Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. - Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. - Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. - Egy egység maximum "életei". 0 vagy -1 letiltja. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. - Proporciona un sistema médico para jugadores e IA. - Aktiviert das Medicsystem für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona um sistema médico para jogadores e IA. - Egy orvosi rendszert ad játékosok és AI-k számára. - - - Set Medic Class [ACE] - Сделать медиком [ACE] - Ustaw klasę medyka - Establecer case médica [ACE] - Setze Sanitäterklassen [ACE] - Určit třídu medika [ACE] - Definir classe médica [ACE] - Orvos beállítása [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Lista - - - List of unit names that will be classified as medic, separated by commas. - Список имен юнитов, которые будут считаться медиками (через запятую). - Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. - Lista de los nombres de las unidades que se clasifican como médico, separados por comas. - Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. - Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. - Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. - Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. - - - Is Medic - Является медиком - Klasa medyczna - Es médico - Ist Sanitäter - Je zdravotník - É médico - Orvos-e - - - This module allows you to assign the medic class to selected units. - Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. - Dieses Modul legt fest welche Einheit ein Sanitäter ist. - Tento modul určuje, která jednotka je zdravotník. - Este módulo determina qual unidade é um paramédico. - Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Nincs - - - Regular medic - Обычный медик - Zwykły medyk - Médico regular - Normaler Sanitäter - Řadový zdravotník - Médico regular - Hagyományos orvos - - - Doctor (Only Advanced Medics) - Врач (только усложн.) - Doktor (tylko zaawansowani medycy) - Doctor (Solo medicina avanzada) - Arzt (nur erweiterte Sanitäter) - Doktor (Pouze pokročilý zdravotníci) - Doutor (Somente médicos avançados) - Doktor (csak fejlett orvosok) - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten przypisuje klasę medyka ACE do jednostek. - Asigna la clase médico ACE a una unidad - Weise die ACE-Sanitäterklasse einer Einheit zu - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica do ACE a uma unidade - Az ACE orvosi jelző hozzárendelése egy egységhez - - - Set Medical Vehicle [ACE] - Сделать мед. транспортом [ACE] - Ustaw pojazd medyczny - Establecer vehículos médicos [ACE] - Setze medizinisches Fahrzeug [ACE] - Určit zdravotnické vozidlo [ACE] - Definir veículo médico [ACE] - Orvosi jármű beállítása [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Lista - - - List of vehicles that will be classified as medical vehicle, separated by commas. - Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). - Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. - Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. - Liste von Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. - Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. - Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. - Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. - - - Is Medical Vehicle - Является мед. транспортом - Jest pojazdem med. - Es vehículo médico - Ist medizinisches Fahrzeug - Je zdravotnické vozidlo - É um veículo médico - Orvosi jármű-e - - - Whatever or not the objects in the list will be a medical vehicle. - Будут ли объекты в списке считаться медицинским транспортом. - Czy pojazdy z tej listy są pojazdami medycznymi? - Cualquiera de la lista o fuera de ella será un vehículo médico. - Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. - Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. - Se serão ou não os objetos dessa lista veículos médicos. - A listában lévő objektumok orvosi járművek-e, vagy sem. - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. - Asigna la clase médico ACE a una unidad - Weist die ACE-Sanitäterklasse einer Einheit zu - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica ACE a uma unidade - Hozzárendeli az ACE orvosi jelzőt egy egységhez - - - Set Medical Facility [ACE] - Сделать госпиталем [ACE] - Ustaw budynek medyczny - Establece el centro médico [ACE] - Setze medizinische Einrichtung [ACE] - Určit zdravotnické zařízení [ACE] - Definir instalação médica [ACE] - Orvosi létesítmény beállítása [ACE] - - - Is Medical Facility - Является госпиталем - Jest budynkiem med. - Es centro médico - Ist eine medizinische Einrichtung - Je zdravotnické zařízení - É uma instalação médica - Orvosi létesítmény-e - - - Registers an object as a medical facility - Определяет объект в качестве госпиталя - Przypisuje danemu obiektowi status budynku medycznego - Registra un objeto como un centro médico - Definiert ein Objekt als medizinische Einrichtung - Registruje objekt jako zdravotnické zařízení - Registra um objeto como instalacão médica - Egy objektum orvosi létesítményként való regisztrálása - - - Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. - Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. - Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. - Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. - Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. - Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. - Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. - Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. - - - [ACE] Medical Supply Crate (Basic) - [ACE] Ящик с медикаментами (базовая медицина) - [ACE] Skrzynka z zapasami medycznymi (podstawowa) - [ACE] Caja de suministros médicos (Básica) - [ACE] Medizinische Kiste (standard) - [ACE] Zdravotnické zásoby (základní) - [ACE] Caixa com suprimentos médicos - [ACE] Orvosi láda (Alap) - - - [ACE] Medical Supply Crate (Advanced) - [ACE] Ящик с медикаментами (усложн. медицина) - [ACE] Skrzynka z zapasami medycznymi (zaawansowana) - [ACE] Caja de suministros médicos (Avanzada) - [ACE] Medizinische Kiste (erweitert) - [ACE] Zdravotnické zásoby (pokročilé) - [ACE] Caixa com suprimentos médicos (Avançados) - [ACE] Orvosi láda (Fejlett) - - - Anytime - Kdykoli - Siempre - Zawsze - Akármikor - Sempre - - - Stable - Stabilní - Estable - Po stabilizacji - Stabil - Estável - - - Medical - Zdravotní - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Distance to %1 has become to far for treatment - %1 odszedł zbyt daleko, nie można kontynuować leczenia - - - + + + + + INJURIES + VERLETZUNGEN + LESIONI + ТРАВМЫ + BLESSURES + OBRAŻENIA + HERIDAS + SÉRÜLÉSEK + ZRANĚNÍ + FERIMENTOS + + + No injuries on this bodypart ... + Körperteil nicht verletzt ... + Non ci sono lesioni in questa parte del corpo ... + Данная часть тела не повреждена ... + Aucune blessures sur cette partie du corps ... + Brak obrażeń na tej części ciała ... + Sin heridas en esta parte del cuerpo ... + Ezen a testrészen nincs sérülés ... + Žádné zranění na této části těla ... + Nenhum ferimento nesta parte do corpo... + + + Litter Simulation Detail + Detale zużytych medykamentów + Detalle de simulación de basura + Количество мусора от медицины + Dettagli Simulazione Rifiuti + Niveau de simulation des détritus + Abfall-Detaillevel + Hulladékszimuláció részletessége + Detalhe da simulação de sujeira + Počet zobrazených předmětů po použití zdravotnického materiálu + + + Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting. + Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta. + Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente. + Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. + Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client. + Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. + Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. + A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. + O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. + Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. + + + Inject Atropine + Atropin injizieren + Inyectar Atropina + Aplikovat atropin + Wstrzyknij atropinę + Injecter de l'atropine + Ввести атропин + Atropin beadása + Inietta atropina + Injetar Atropina + + + Inject Epinephrine + Epinephrine injizieren + Inyectar Epinefrina + Wstrzyknij adrenalinę + Aplikovat adrenalin + Injecter de l'épinéphrine + Ввести адреналин + Epinefrin beadása + Injetar Epinefrina + Inietta epinefrina + + + Inject Morphine + Morphin injizieren + Inyectar Morfina + Wstrzyknij morfinę + Aplikovat morfin + Ввести морфин + Injecter de la morphine + Morfium beadása + Injetar Morfina + Inietta morfina + + + Transfuse Blood + Bluttransfusion + Transfundir sangre + Przetocz krew + Transfúze krve + Перелить кровь + Transfusion + Infúzió (vér) + Transfundir Sangue + Trasfusione di sangue + + + Transfuse Plasma + Plasmatransfusion + Transfundir plasma + Transfúze plazmy + Przetocz osocze + Transfuser du Plasma + Перелить плазму + Infúzió (vérplazma) + Trasfusione di Plasma + Transfundir Plasma + + + Transfuse Saline + Salzlösungstransfusion + Transfundir salino + Transfúze fyziologický roztoku + Przetocz sól fizjologiczną + Transfuser de la solution saline + Перелить физраствор + Infúzió (sós víz) + Trasfusione di soluzione salina + Transfundir Soro + + + Apply Tourniquet + Tourniquet anwenden + Aplicar torniquete + Aplikovat škrtidlo + Załóż stazę + Appliquer un garrot + Наложить жгут + Applica laccio emostatico + Aplicar Torniquete + Érszorító alkalmazása + + + Bandage + Verbinden + Venda + Bandażuj + Obvázat + Pansement + Benda + Kötözés + Atadura + Перевязать + + + Bandage Head + Kopf verbinden + Vendar la cabeza + Bandażuj głowę + Obvázat hlavu + Перевязать голову + Pansement Tête + Fej kötözése + Atar Cabeça + Benda la testa + + + Bandage Torso + Torso verbinden + Vendar el torso + Bandażuj tors + Obvázat hruď + Перевязать торс + Pansement Torse + Testtörzs kötözése + Atar Tronco + Benda il torso + + + Bandage Left Arm + Linken Arm verbinden + Vendar el brazo izquierdo + Bandażuj lewe ramię + Obvázat levou ruku + Перевязать левую руку + Pansement Bras Gauche + Bal kar kötözése + Atar Braço Esquerdo + Benda il braccio sinistro + + + Bandage Right Arm + Rechten Arm verbinden + Vendar el brazo derecho + Bandażuj prawe ramię + Obvázat pravou ruku + Перевязать правую руку + Pansement Bras Droit + Jobb kar kötözése + Atar Braço Direito + Benda il braccio destro + + + Bandage Left Leg + Linkes Bein verbinden + Vendar la pierna izquierda + Bandażuj lewą nogę + Obvázat levou nohu + Перевязать левую ногу + Pansement Jambe Gauche + Bal láb kötözése + Atar Perna Esquerda + Benda la gamba sinistra + + + Bandage Right Leg + Rechtes Bein verbinden + Vendar la pierna derecha + Bandażuj prawą nogę + Obvázat pravou nohu + Перевязать правую ногу + Pansement Jambe Droite + Jobb láb kötözése + Atar Perna Direita + Benda la gamba destra + + + Injecting Morphine ... + Morphin injizieren ... + Inyectando Morfina ... + Wstrzykiwanie morfiny ... + Aplikuji morfin ... + Введение морфина ... + Injection de Morphine... + Morfium beadása ... + Injetando Morfina ... + Inietto la morfina ... + + + Injecting Epinephrine ... + Epinephrin injizieren ... + Inyectando Epinefrina ... + Wstrzykiwanie adrenaliny ... + Aplikuji adrenalin ... + Введение адреналина ... + Injection d'Adrénaline ... + Epinefrin beadása ... + Injetando Epinefrina ... + Inietto l'epinefrina ... + + + Injecting Atropine ... + Atropin injizieren ... + Inyectando Atropina ... + Aplikuji atropin ... + Wstrzykiwanie atropiny ... + Injection d'Atropine ... + Введение атропина ... + Atropin beadása ... + Inietto l'atropina ... + Injetando Atropina + + + Transfusing Blood ... + Bluttransfusion ... + Transfusión de sangre ... + Przetaczanie krwi ... + Probíhá transfúze krve ... + Переливание крови ... + Transfusion Sanguine ... + Infúzió vérrel ... + Transfundindo Sangue ... + Effettuo la trasfusione di sangue ... + + + Transfusing Saline ... + Salzlösungtransfusion ... + Transfusión de salino ... + Probíha transfúze fyziologický roztoku ... + Przetaczanie soli fizjologicznej ... + Transfusion de saline ... + Переливание физраствора ... + Infúzió sós vizzel ... + Effettuo la rasfusione di soluzione salina + Transfundindo Soro... + + + Transfusing Plasma ... + Plasmatransfusion ... + Transfusión de plasma ... + Probíha transfúze plazmy ... + Przetaczanie osocza ... + Transfusion de Plasma ... + Переливание плазмы ... + Infúzió vérplazmával ... + Effettu la trasfusione di plasma ... + Transfundindo Plasma... + + + Bandaging ... + Verbinden ... + Vendando ... + Bandażowanie ... + Obvazuji ... + Pansement ... + Sto applicando la benda ... + Bekötözés ... + Atando ... + Перевязывание ... + + + Applying Tourniquet ... + Setze Tourniquet an ... + Aplicando torniquete ... + Aplikuji škrtidlo + Zakładanie stazy ... + Mise en place du Garrot ... + Наложение жгута ... + Érszorító felhelyezése ... + Sto applicando il laccio emostatico ... + Applicando Torniquete + + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + Orvosi + + + Field Dressing + Verbandpäckchen + Compresa de campaña + Бинтовая повязка + Obinadlo + Bandaż jałowy + Bandage rapide + Zárókötszer + Bendaggio rapido + Curativo de Campo + + + Packing Bandage + Mullbinde + Vendaje compresivo + Компресионный пакет + Bandaż uciskowy + Nyomókötszer + Bendaggio compressivo + Bandage gauze + Bandagem de Compressão + Tlakový obvaz + + + Elastic Bandage + Elastischer Verband + Vendaje elástico + Давящая повязка + Elastické obinadlo + Bandaż elastyczny + Pansement élastique + Rögzitő kötszer + Bendaggio elastico + Bandagem Elástica + + + QuikClot + QuikClot + QuikClot + QuikClot + Opatrunek QuikClot + QuikClot + Hémostatique + QuikClot + QuikClot (polvere emostatica) + QuikClot + + + Check Pulse + Puls überprüfen + Comprobar pulso + Проверить пульс + Zkontrolovat pulz + Sprawdź tętno + Vérifier le pouls + Pulzus ellenőrzése + Controlla il polso + Checar Pulso + + + Check Blood Pressure + Blutdruck überprüfen + Comprobar presión arterial + Проверить давление + Zkontrolovat krevní tlak + Sprawdź ciśnienie krwi + Vérification de la tension + Vérnyomás megmérése + Controlla pressionsa sanguigna + Chegar Pressão Sanguínea + + + Triage Card + Triagekarte + Tarjeta de clasificación + Медкарта + Karta segregacyjna + Štítek + Carte de triage + Orvosi lap + Triage Card + Cartão de Triagem + + + No entries on this triage card. + Keine Einträge auf der Triagekarte + Nessuna voce sulla Triage Card + Нет записей. + Aucune entrée sur cette carte de triage + Brak wpisów w tej karcie segregacyjnej. + Sin entradas en esta tarjeta de clasificación. + Ez az orvosi lap nem tartalmaz bejegyzést. + Žádné záznamy na tomto štítku + Nenhuma entrada neste cartão de triagem + + + Tourniquet + Tourniquet + Torniquete + Жгут + Škrtidlo + Staza + Tourniquet + Érszorító + Laccio emostatico + Torniquete + + + Remove Tourniquet + Tourniquet entfernen + Quitar torniquete + Снять жгут + Sundat škrtidlo + Zdejmij stazę + Enlever le Tourniquet + Érszorító leszedése + Rimuovi laccio emostatico + Remover Torniquete + + + Diagnose + Diagnose + Diagnosi + Диагностика + Diagnostiquer + Diagnoza + Diagnosticar + Diagnosztizálás + Diagnóza + Diagnosticar + + + Diagnosing ... + Diagnostizieren ... + Diagnosi in corso... + Диагностика ... + Diagnostic en cours + Diagnozowanie ... + Diagnosticando ... + Diagnózis folyamatban... + Diagnostika ... + Diagnosticando... + + + CPR + HLW + RCP + Сердечно-лёгочная реанимация + RPC + RKO + RCP + Újraélesztés + KPR + SBV + + + Performing CPR ... + HLW durchführen ... + Eseguendo RCP... + Сердечно-лёгочная реанимация ... + RPC en cours + Przeprowadzanie RKO ... + Realizando RCP ... + Újraélesztés folyamatban... + Provádím KPR ... + Realizando o SBV... + + + Give Blood IV (1000ml) + Bluttransfusion IV (1000ml) + Dar Sangre IV (1000ml) + Перелить пакет крови (1000 мл) + Podaj krew IV (1000ml) + Administrer du sang en IV (1000ml) + Podat krev. transfúzi (1000ml) + Vér adása intravénásan (1000ml) + Effettua trasfusione sangue IV (1000ml) + Administrar Sangue IV (1000ml) + + + Give Blood IV (500ml) + Bluttransfusion IV (500ml) + Dar Sangre IV (500ml) + Перелить пакет крови (500 мл) + Podaj krew IV (500ml) + Administrer du sang en IV (500ml) + Podat krev. transfúzi (500ml) + Vér adása intravénásan (500ml) + Effettua trasfusione sangue IV (500ml) + Administrar Sangue IV (500ml) + + + Give Blood IV (250ml) + Bluttransfusion IV (250ml) + Dar Sangre IV (250ml) + Перелить пакет крови (250 мл) + Podaj krew IV (250ml) + Administrer du sang en IV (250ml) + Podat krev. transfúzi (250ml) + Vér adása intravénásan (250ml) + Effettua trasfusione sangue IV (250ml) + Administrar Sangue IV (250ml) + + + Give Plasma IV (1000ml) + Plasmatransfusion IV (1000ml) + Dar Plasma IV (1000ml) + Перелить пакет плазмы (1000 мл) + Podaj osocze IV (1000ml) + Administrer du plasma en IV (1000ml) + Podat plazmu (1000ml) + Vérplazma adása intravénásan (1000ml) + Effettua trasfusione plasma IV (1000ml) + Administrar Plasma IV (1000ml) + + + Give Plasma IV (500ml) + Plasmatransfusion IV (500ml) + Dar Plasma IV (500ml) + Перелить пакет плазмы (500 мл) + Podaj osocze IV (500ml) + Administrer du plasma en IV (500ml) + Podat plazmu (500ml) + Vérplazma adása intravénásan (500ml) + Effettua trasfusione plasma IV (500ml) + Administrar Plasma IV (500ml) + + + Give Plasma IV (250ml) + Plasmatransfusion IV (250ml) + Dar Plasma IV (250ml) + Перелить пакет плазмы (250 мл) + Podaj osocze IV (250ml) + Administrer du plasma en IV (250ml) + Podat plazmu (250ml) + Vérplazma adása intravénásan (250ml) + Effettua trasfusione plasma IV (250ml) + Administrar Plasma IV (250ml) + + + Give Saline IV (1000ml) + Kochsalzlösung IV (1000ml) + Dar Salino IV (1000ml) + Перелить пакет физраствора (1000 мл) + Podaj sól fizjologiczną IV (1000ml) + 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) + Administrar Soro IV (1000ml) + + + Give Saline IV (500ml) + Kochsalzlösung IV (500ml) + Dar Salino IV (500ml) + Перелить пакет физраствора (500 мл) + Podaj sól fizjologiczną IV (500ml) + 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) + Administrar Soro IV (500ml) + + + Give Saline IV (250ml) + Kochsalzlösung IV (250ml) + Dar Salino IV (250ml) + Перелить пакет физраствора (250 мл) + Podaj sól fizjologiczną IV (250ml) + 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) + Administrar Soro IV (250ml) + + + Minor + Gering + Menor + Несрочная помощь + Normalny + Mineur + Minimální + Enyhe + Minore + Leve + + + Delayed + Retrasado + Срочная помощь + Opóźniony + Différé + Verzögert + Odložitelný + Késleltetett + Differito + Atrasado + + + Immediate + Inmediato + Неотложная помощь + Natychmiastowy + Urgence Immédiate + Sofort + Okamžitý + Azonnali + Immediata + Imediato + + + Deceased + Fallecido + Труп + Nie żyje + Décédé + Verstorben + Mrtvý + Elhalálozott + Deceduto + Falecido + + + None + Ninguno + Отсутствует + Brak + Aucun + Keine + Nic + Semmi + Nessuna + Nenhum + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration normale + Normalny oddech + Normale Atmung + Dýchá normálně + Normális légzés + Respiro normale + Respiração normal + + + No breathing + Keine Atmung + Дыхание отсутствует + No respira + Aucune respiration + Brak oddechu + Nedýchá + Nincs légzés + Mancanza di respiro + Não respira + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée respiratoire + Trudności z oddychaniem + Schwere Atmung + Dýchá s obtížemi + Nehéz légzés + Difficoltà a respirare + Dificuldade para respirar + + + Almost no breathing + Fast keine Atmung + Дыхание очень слабое + Casi sin respiración + Respiration faible + Prawie brak oddechu + Skoro nedýchá + Alig van légzés + Respira a fatica + Quase não respira + + + Bleeding + Blutet + Кровотечение + Sangrando + Saignement + Krwawienie zewnętrzne + Krvácí + Vérzik + Sanguinando + Sangrando + + + In Pain + Hat Schmerzen + Испытывает боль + Con dolor + Ressent de la douleur + W bólu + V bolestech + Fájdalom alatt + Con dolore + Com dor + + + Lost a lot of Blood + Hat eine große Menge Blut verloren + Большая кровопотеря + Mucha sangre perdida + A perdu beaucoup de sang + Stracił dużo krwi + Ztratil hodně krve + Sok vért vesztett + Ha perso parecchio sangue + Perdeu muito sangue + + + Tourniquet [CAT] + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Tourniquet [CAT] + Staza [typ. CAT] + Škrtidlo [CAT] + Érszorító [CAT] + Laccio emostatico [CAT] + Torniquete [CAT] + + + Receiving IV [%1ml] + Erhalte IV [%1ml] + Reciviendo IV [%1ml] + Принимается переливание [%1 мл] + Otrzymywanie IV [pozostało %1ml] + Transfusion en IV [%1ml] + Přijímání transfúze [%1ml] + Infúzióra kötve [%1ml] + Ricevendo IV [%1ml] + Recebendo IV [%1ml] + + + Bandage (Basic) + Bandage (Standard) + Повязка (обычная) + Vendaje (Básico) + Bandage (Standard) + Bandaż (jałowy) + Obvaz (standartní) + Kötszer (Általános) + Bendaggio (base) + Bandagem(Básico) + + + Used to cover a wound + Для перевязки ран + Utilizado para cubrir una herida + Utilisé pour couvrir une blessure + Używany w celu przykrycia i ochrony miejsca zranienia. Najczęściej stosowany bandaż na otarcia i draśnięcia. + Verwendet um Wunden abzudecken + Sebesülések befedésére alkalmas + Usato per coprire una ferita + Usado para cobrir um ferimento + Slouží k překrytí poranění + + + A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. + Ein Verband, der aus einem besonderen Material besteht um die Wunde zu schützen, nachdem die Blutung gestoppt wurde. + Повязка, накладываемая поверх раны после остановки кровотечения. + Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. + 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 apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. + Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. + Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. + + + Packing Bandage + Mullbinde + Тампонирующая повязка + Vendaje compresivo + Bandage gauze + Bandaż (uciskowy) + Nyomókötszer + Bendaggio compressivo + Bandagem de Compressão + Tlakový obvaz + + + Used to pack medium to large wounds and stem the bleeding + Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen + Для тампонирования ран среднего и большого размера и остановки кровотечения. + Se utiliza para vendar heridas medianas o grandes y detener el sangrado + Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies + Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. + Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer + Usato su ferite medie o larghe per fermare emorragie. + Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. + Používá se k zastavení středních až silnějších krvácení + + + A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. + Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. + Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. + Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques + 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 coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. + Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen + Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. + Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. + + + Bandage (Elastic) + Bandage (Elastisch) + Повязка (давящая) + Vendaje (Elástico) + Bandage (Élastique) + Bandaż (elastyczny) + Obvaz (elastický) + Rögzító kötszer + Benda (elastica) + Bandagem (Elástica) + + + Bandage kit, Elastic + Elastische Binde (Kompressionsbinde) + Давящая повязка + Kit de vendaje (Elástico) + Bandage compressif élastique + Bandaż elastyczny służy do opatrywania ran ciętych oraz kłutych. Dobrze radzi sobie również ze zgniecieniami tkanek miękkich oraz rozerwaniami powierzchni skóry. + Rugalmas kötszercsomag, "rögzítő" + Kit di bendaggio, elastico + Kit de Bandagem, Elástica + Sada obvazů, Elastická + + + Allows an even compression and extra support to the injured area. + Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich. + Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку повреждённой области + Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement. + 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 comprimere e aiutare la zone ferita. + Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. + Hodí se k fixačním účelům a to i v oblastech kloubů. + + + Tourniquet (CAT) + Tourniquet [CAT] + Жгут + Torniquete (CAT) + Tourniquet (CAT) + Staza (typ. CAT) + Škrtidlo (CAT) + Érszorító (CAT) + Laccio emostatico (CAT) + Torniquete (CAT) + + + Slows down blood loss when bleeding + Замедляет кровопотерю при кровотечении + Reduce la velocidad de pérdida de sangre + Ralentit le saignement + Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. + 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 + Reduz a velocidade da perda de sangue + Zpomaluje ztráty krve při krvácení + + + A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. + Жгут используется для прижатия сосудов к костным выступам, которое приводит к остановке или значительному уменьшению кровотечения + Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre + Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. + 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. + A aparelho que comprime as artérias e veias para diminuir a perda de sangue. + Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. + + + Morphine autoinjector + Morphium-Autoinjektor + Морфин в пневмошприце + Morfina auto-inyectable + Auto-injecteur de Morphine + Autostrzykawka z morfiną + Autoinjektor morfin + Morfium autoinjektor + Autoiniettore di morfina + Auto-injetor de morfina + + + Used to combat moderate to severe pain experiences + Wird verwendet um moderate bis starke Schmärzen zu lindern. + Для снятия средних и сильных болевых ощущений + Usado para combatir los estados dolorosos de moderados a severos + Utilisé pour réduire les douleurs modérées à sévères. + Morfina. Ma silne działanie przeciwbólowe. Powoduje spowolnienie tętna oraz rozrzedzenie krwi, zwiększając tym samym ciśnienie tętnicze krwi. Działa przez ok. 15 minut. + Mérsékelttől erős fájdalomig, ellene alkalmazandó termék + Usato per combattere il dolore. + Usado para combater dores moderadas e severas + Slouží k tlumení středně těžkých a těžkých bolestí + + + An analgesic used to combat moderate to severe pain experiences. + Обезболивающее для снятия средних и сильных болевых ощущений. + Analgésico usado para combatir los estados dolorosos de moderados a severos. + Un analgésique puissant servant à réduire les douleurs modérées à sévères. + 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. + Um analgésico usado para combater dores moderadas e fortes. + Analgetikum slouží k tlumení středně těžkých a těžkých bolestí + + + Atropine autoinjector + Атропин в пневмошприце + Atropina auto-inyectable + Auto-injecteur d'Atropine + Autostrzykawka AtroPen + Atropin-Autoinjektor + Autoinjektor atropin + Atropin autoinjektor + Autoiniettore di atropina + Auto-injetor de Atropina + + + Used in NBC scenarios + Применяется для защиты от ОМП + Usado en escenarios NBQ + Utilisé en cas d'attaque CBRN + 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. + Usado em casos de ataque QBRN + Používá se v přítomnosti nervových plynů + + + A drug used by the Military in NBC scenarios. + Препарат, используемый в войсках для защиты от оружия массового поражения. + Medicamento usado por militares en escenarios NBQ + Médicament utilisé par l'armée en cas d'attaque CBRN + 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. + Uma droga usada por militares em casos de ataque QBRN. + Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. + + + Epinephrine autoinjector + Адреналин в пневмошприце + Epinefrina auto-inyectable + Auto-injecteur d'épinéphrine + Autostrzykawka EpiPen + Epiniphrin-Autoinjektor + Autoinjektor adrenalin + Epinefrin autoinjektor + Autoiniettore di epinefrina + Auto-injetor de epinefrina + + + Increase heart rate and counter effects given by allergic reactions + Стимулирует работу сердца и купирует аллергические реакции + Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas + Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique + Adrenalina. Przyśpiesza tętno oraz zwiększa ciśnienie krwi a także przeciwdziała efektom wywołanym przez reakcje alergiczne. + Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen. + 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. + Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas + Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi + + + 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. + Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшенной вероятностью благоприятного исхода. + 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. + Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. + Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. + Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. + Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. + + + Plasma IV (1000ml) + Плазма для в/в вливания (1000 мл) + Plasma IV (1000ml) + Plasma Sanguin IV (1000ml) + Osocze IV (1000ml) + Plasma IV (1000ml) + Vérplazma-infúzió (1000ml) + Plasma IV (1000ml) + Plasma IV (1000ml) + Krevní plazma (1000ml) + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + 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. + Volumenerweiterungsmittel (künstliches Blutvolumen) + Suplemento para expandir o volume sanguíneo. + Intravenózně podávaný doplněk k zvětšení objemu krve + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + 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. + Volumenerweiterungsmittel (künstliches Blutvolumen) + Suplemento para expandir o volume sanguíneo. + Intravenózně podávaný doplněk k zvětšení objemu krve + + + Plasma IV (500ml) + Плазма для в/в вливания (500 мл) + Plasma IV (500ml) + Plasma sanguin IV (500ml) + Osocze IV (500ml) + Plasma IV (500ml) + Vérplazma-infúzió (500ml) + Plasma IV (500ml) + Plasma IV (500ml) + Krevní plazma (500ml) + + + Plasma IV (250ml) + Плазма для в/в вливания (250 мл) + Plasma IV (250ml) + Plasma sanguin (250ml) + Osocze IV (250ml) + Plasma IV (250ml) + Vérplazma-infúzió (250ml) + Plasma IV (250ml) + Plasma IV (250ml) + Krevní plazma (250ml) + + + Blood IV (1000ml) + Кровь для переливания (1000 мл) + Sangre IV (1000ml) + Cullot sanguin IV (1000ml) + Krew IV (1000ml) + Blut IV (1000ml) + Vér-infúzió (1000ml) + Sangue IV (1000ml) + Sangue IV (1000ml) + Krevní transfúze (1000ml) + + + Blood IV, for restoring a patients blood (keep cold) + Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) + Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) + 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) + Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten) + Sangue intravenoso, para restaurar o volume sanguinio do paciente.(Manter frio) + Krevní transfuze pro doplnění pacientovi krve (skladujte v chladu) + + + 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. + Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC + O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. + Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. + Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. + 0 Rh negativní krev se používá v vzácných případech k doplnění pacientovy hladiny krve, obvykle při převozu zraněné osoby do nemocnice. + + + Blood IV (500ml) + Кровь для переливания (500 мл) + Sangre IV (500ml) + Cullot sanguin IV (500ml) + Krew IV (500ml) + Blut IV (500ml) + Vér-infúzió (500ml) + Sangue IV (500ml) + Sangue IV (500ml) + Krevní transfúze (500ml) + + + Blood IV (250ml) + Кровь для переливания (250 мл) + Sangre IV (250ml) + Cullot sanguin IV (250ml) + Krew IV (250ml) + Blut IV (250ml) + Vér-infúzió (250ml) + Samgue IV (250ml) + Sangue IV (250ml) + Krevní transfúze (250ml) + + + Saline IV (1000ml) + Физраствор для в/в вливания (1000 мл) + Salino IV (1000ml) + Solution saline 0.9% IV (1000ml) + Sól fizjologiczna IV (1000ml) + Kochsalzlösung (1000ml) + 0,9%-os sósvíz-infúzió (1000ml) + Soluzione salina IV (1000ml) + Soro IV (1000ml) + Fyziologický roztok (1000ml) + + + Saline IV, for restoring a patients blood + Пакет физраствора для возмещения объёма потерянной крови + Solución salina intravenosa, para restaurar el volumen sanguíneo + Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle + 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). + 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. + Kochsalzlösung, ein medizinisches Volumenersatzmittel + Solução Salina Intravenosa 0.9%, para restaurar o volume de sangue temporariamente. + Fyziologický roztok se aplikuje intravenózně a slouží k obnově pacientovi krve + + + A medical volume-replenishing agent introduced into the blood system through an IV infusion. + Пакет физиологического раствора для возмещения объёма потерянной крови путем внутривенного вливания + Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. + Un remplacant 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. + Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. + Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. + Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. + + + Saline IV (500ml) + Физраствор для в/в вливания (500 мл) + Salino IV (500ml) + Solution saline 0.9% IV (500ml) + Sól fizjologiczna IV (500ml) + Kochsalzlösung (500ml) + 0,9%-os sósvíz-infúzió (500ml) + Soluzione salina IV (500ml) + Soro IV (1000ml) + Fyziologický roztok (500ml) + + + Saline IV (250ml) + Физраствор для в/в вливания (250 мл) + Salino IV (250ml) + Solution saline 0.9% IV (250ml) + Sól fizjologiczna IV (250ml) + Kochsalzlösung (250ml) + 0,9%-os sósvíz-infúzió (250ml) + Soluzione salina IV (250ml) + Soro IV (1000ml) + Fyziologický roztok (250ml) + + + Basic Field Dressing (QuikClot) + Первичный перевязочный пакет (QuikClot) + Vendaje básico (QuickClot) + Bandage basique (Hémostatique) + Opatrunek QuikClot ACS + Verbandpäckchen(Gerinnungsmittel) + Általános zárókötszer (QuikClot) + Bendaggio emostatico (QuikClot) + Bandagem básica (Coagulante) + Hemostatický obvaz (QuikClot) + + + QuikClot bandage + Гемостатический пакет QuikClot + Vendaje QuikClot + Bandage hémostatique + Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. + Bandage mit Gerinnungsmittel + QuikClot kötszer + Bendaggio emostatico (QuikClot) + Bandagem com agente coagulante + Hemostatický obvaz (QuikClot) + + + Hemostatic bandage with coagulant that stops bleeding. + Медицинский коагулянт для экстренной остановки кровотечения + Un bandage aidant à coaguler les saignements mineurs à moyens. + Proszkowy opatrunek adsorpcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. + 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 + Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. + Hemostatický obvaz určený k zástavě krvácení + + + Personal Aid Kit + Аптечка + Trousse de premiers soins + Equipo de primeros auxilios + Apteczka osobista + Persönliches Erste-Hilfe-Set + Elsősegélycsomag + Pronto soccorso personale + Kit De Primeiros Socorros Pessoal + Osobní lékárnička + + + Includes various treatment kit needed for stitching or advanced treatment + Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. + Incluye material médico para tratamientos avanzados + Inclue du matériel medical pour les traitements avancés, tel les points de suture. + 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. + Inclui vários tratamentos materiais para custura e tratamento avançado + Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných + + + Personal Aid Kit for in field stitching or advanced treatment + W znacznym stopniu poprawia stan pacjenta + Полевая аптчека для продвинутого лечения и зашивания ран + Persönliches Erste-Hilfe-Set zum ambulanten Nähen und fortgeschrittener Behandlung. + Trousse de premiers soins pour coudre sur le terrain et traitements avancés. + Equipo de primeros auxilios para sutura de campaña o tratamientos avanzados + Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz + Kit de primeiros socorros para sutura ou tratamentos avançados + Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli + Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. + + + Use Personal Aid Kit + Erste-Hilfe-Set benutzen + Использовать аптечку + Utiliser la Trousse de premier soins + Użyj apteczki osobistej + Usar equipo de primeros auxilios + Elsősegélycsomag használata + Usar o kit de primeiros socorros + Použít osobní lékárničku + Usa il pronto soccorso personale + + + Surgical Kit + Trousse chirurgicale + Хирургический набор + Kit quirúrgico + Zestaw do szycia ran + Operationsset + Sebészeti készlet + Kit chirurgico + Kit Cirurgico + Chirurgická sada + + + Surgical Kit for in field advanced medical treatment + Trousse chirurgicale pour le traitement sur le terrain + Набор для хирургической помощи в полевых условиях + Kit quirúrgico para el tratamiento avanzado en el campo de batalla + 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. + Kit Cirurgico para uso de tratamento médico avançado em campo + Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli + + + Surgical Kit for in field advanced medical treatment + Набор для хирургической помощи в полевых условиях + Kit quirúrgico para el tratamiento avanzado en el campo de batalla + Zestaw pozwalający na zszywanie ran w polu + 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. + Kit Cirurgico para uso de tratamento médico avançado em campo. + Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli + + + Use Surgical Kit + Operationsset benutzen + Usa kit chirurgico + Использовать хирургический набор + Utiliser la trousse chirugicale + Zszyj rany + Usar equipo quirúrgico + Sebészeti készlet használata + Použít chirurgickou sadu + Usar kit cirúrgico + + + Bodybag + Housse mortuaire + Мешок для трупов + Bolsa para cadáveres + Worek na zwłoki + Leichensack + Hullazsák + Sacca per corpi + Saco para cadáver + Pytel na mrtvoly + + + A bodybag for dead bodies + Housse de transport des corps + Мешок для упаковки трупов + Una bolsa para cadáveres + Worek do pakowania zwłok + Ein Leichensack für Tote + Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. + Um saco para corpos mortos + Pytel na mrtvoly + + + A bodybag for dead bodies + Housse de transport des corps + Мешок для упаковки трупов + Una bolsa para cadáveres + Worek do pakowania zwłok + Ein Leichensack für Tote + Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. + Um saco para corpos mortos. + Pytel na mrtvoly + + + Blood Pressure + Tension artérielle + Артериальное давление + Presión arterial + Ciśnienie krwi + Blutdruck + Vérnyomás + Pressione sanguigna + Pressão Arterial + Krevní tlak + + + 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.. + Aferindo Pressão Arterial... + Kontroluji krevní tlak ... + + + %1 checked Blood Pressure: %2 + %1 kontrollierte Blutdruck: %2 + %1 controllata pressione sanguigna: %2 + %1 проверил артериальное давление: %2 + %1 à vérifié la tension: %2 + %1 sprawdził ciśnienie krwi: %2 + %1 verificada la presión arterial: %2 + %1 ellenőrizte a vérnyomást: %2 + %1 zkontrolován krevní tlak: %2 + %1 verificou pressão arterial: %2 + + + You checked %1 + Vous diagnostiquez %1 + Вы осмотрели раненого %1 + Examinando a %1 + Zbadałeś %1 + Kontrolliert %1 + A %1 ellenőrizve + Hai diagnosticato %1 + Você verificou o paciente %1 + Zkontroloval jsi %1 + + + You find a blood pressure of %2/%3 + Vous avez trouvé une tension de %2/%3 + Артериальное давление %2/%3 + La Presión Arterial es %2/%3 + A vérnyomás %2/%3 + Hai riscontrato una pressione di %2/%3 + Wyczuwasz ciśnienie krwi o wartości %2/%3 + Der Blutdruck liegt bei %2/%3 + A Pressão Arterial é de %2/%3 + Našel jsi krevní tlak u %2/%3 + + + You find a low blood pressure + Tension basse + Давление низкое + La presión arterial es baja + Wyczuwasz niskie ciśnienie krwi + Blutdruck ist niedrig + A vérnyomás alacsony + La pressione sanguigna è bassa + Pressão Arterial baixa + Naměřil jsi nízký krevní tlak + + + You find a normal blood pressure + Tension normale + Давление нормальное + La presión arterial es normal + Wyczuwasz normalne ciśnienie krwi + Blutdruck ist normal + A vérnyomás normális + La pressione sanguigna è normale + Pressão Arterial normal + Naměřil jsi normální krevní tlak + + + You find a high blood pressure + Tension haute + Давление высокое + La presión arterial es alta + Wyczuwasz wysokie ciśnienie krwi + Blutdruck ist hoch + A vérnyomás magas + La pressione sanguigna è alta + Pressão Arterial Alta + Naměřil jsi vysoký krevní tlak + + + You find no blood pressure + Pas de tension + Давления нет + No hay presión arterial + Nie wyczuwasz ciśnienia krwi + Patient hat keinen Blutdruck + Nem észlelhető vérnyomás + La pressione sanguigna è assente + Sem Pressão Arterial + Nenaměřil jsi žádný krevní tlak + + + You fail to find a blood pressure + Vous n'avez pas pu mesurer de tension + Артериальное давление не определяется + No puedes encontrar presión arterial + 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 + Você falhou em aferir a Pressão Arterial + Nedokázal jsi změřit krevní tlak + + + Low + Niedrig + Basso + Низкое + Faible + Niskie + Baja + Alacsony + Nízký + Baixa + + + Normal + Normal + Normale + Нормальное + Normale + Normalne + Normal + Normális + Normální + Normal + + + High + Hoch + Alto + Высокое + Haute + Wysokie + Alta + Magas + Vysoký + Alta + + + No Blood Pressure + Kein Blutdruck + Nessuna Pressione Sanguigna + Артериальное давление отсутствует + Aucune tension + Brak ciśnienia krwi + Sin presión arterial + Nincs vérnyomás + Žádný krevní tlak + Sem pressão arterial + + + Pulse + Пульс + Pouls + Pulso + Tętno + Puls + Pulzus + Polso + Pulso + Tep + + + 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 ... + Aferindo Pulso ... + Kontroluji srdeční tep ... + + + You checked %1 + Вы осмотрели раненого %1 + Vous examinez %1 + Examinando a %1 + Zbadałeś %1 + Kontrolliert %1 + A %1 ellenőrizve + Hai diagnosticato %1 + Você aferiu o paciente %1 + Zkontroloval jsi %1 + + + %1 checked Heart Rate: %2 + %1 kontrollierte Herzfrequenz: %2 + %1 Controllata Frequenza Cardiaca: %2 + %1 проверил пульс: %2 + %1 à vérifié le rythme cardiaque: %2 + %1 sprawdził tętno: %2 + %1 verificado el ritmo cardíaco: %2 + %1 ellenőrizte a szívverés-számot: %2 + %1 zkontroloval srdeční tep: %2 + %1 verificou a frequência cardíaca: %2 + + + None + Нет + Żadna + Nada + Keine + Žádný + Nada + Nincs + + + Weak + Schwach + Lento + Слабый + Faible + Słabe + Débil + Gyenge + Slabý + Fraca + + + Normal + Normal + Normale + Нормальный + Normal + Normalne + Normal + Normális + Normální + Normal + + + Strong + Stark + Veloce + Сильный + Fort + Silne + Fuerte + Erős + Silný + Forte + + + You find a Heart Rate of %2 + Rythme cardiaque de %2 + Пульс %2 уд./мин. + El ritmo cardíaco es de %2 + Wyczuwasz tętno o wartości %2 + Herzfrequenz ist %2 + A szívverés-szám %2 + Il battito cardiaco è %2 + A Freqüência Cardíaca é de %2 + Nahmatal jsi srdeční tep u %2 + + + You find a weak Heart Rate + Rythme cardiaque faible + Пульс слабый + El ritmo cardíaco es débil + Wyczuwasz słabe tętno + Schwacher Puls + A szívverés-szám alacsony + Hai riscontrato un debole battito cardiaco + Freqüência Cardíaca baixa + Nahmatal jsi slabý srdeční tep + + + You find a strong Heart Rate + Rythme cardiaque élevé + Пульс учащенный + El ritmo cardíaco está acelerado + Wyczuwasz silne tętno + Starker Puls + A szívverés-szám magas + Hai riscontrato un forte battito cardiaco + Freqüência Cardíaca normal + Nahmatal jsi silný srdeční tep + + + You find a normal Heart Rate + Rythme cardiaque normal + Пульс в норме + El ritmo cardíaco es bueno + Wyczuwasz normalne tętno + Normaler Puls + A szívverés-szám normális + Hai riscontrato un normale battito cardiaco + Freqüência Cardíaca alta + Nahmatal jsi normální srdeční tep + + + You find no Heart Rate + Pas de rythme cardiaque + Пульс не прощупывается + No tiene ritmo cardíaco + Wyczuwasz brak tętna + Kein Puls gefunden + Nem észlelhető szívverés + Hai riscontrato una assenza di battito cardiaco + Sem Freqüência Cardíaca + Nenašel jsi + + + Response + Etat de Conscience + Реакция + Respuesta + Przytomność + Ansprechbarkeit + Reagálóképesség + Risposta + Reação + Odezva + + + You check response of patient + Vous vérifiez la réponse du patient + Вы проверяете реакцию раненого + Compruebas si el paciente reacciona + 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 + Aferindo se o paciente tem reação... + Zkontroloval jsi reakci pacienta + + + %1 is responsive + %1 реагирует на раздражители + %1 est conscient + %1 ha reaccionado + %1 jest przytomny + %1 ist anprechbar + %1 reakcióképes + %1 e' cosciente + %1 está respondendo + %1 odpovídá + + + %1 is not responsive + %1 не реагирует на раздражители + %1 est inconscient + %1 no reacciona + %1 jest nieprzytomny + %1 ist nicht ansprechbar + %1 nem reagál + %1 e' incosciente + %1 não está respondendo + %1 neodpovídá + + + You checked %1 + Вы осмотрели раненого %1 + Vous avez examiné %1 + Examinas a %1 + Zbadałeś %1 + Du hast versucht, %1 anzusprechen + Megnézted %1-t + Hai controllato %1 + Você aferiu o paciente %1 + Zkontroloval jsi %1 + + + Patient %1<br/>is %2.<br/>%3.<br/>%4 + Paziente %1<br/>è %2.<br/>%3.<br/>%4 + Пациент %1<br/>%2.<br/>%3.<br/>%4 + Patient %1<br/>ist %2.<br/>%3.<br/>%4 + Patient %1<br/>est %2.<br/>%3.<br/> + Pacjent %1<br/>jest %2.<br/>%3.<br/>%4 + Paciente %1<br/>is %2.<br/>%3.<br/>%4 + A páciens, %1,<br/>%2.<br/>%3.<br/>%4 + Pacient %1<br/>je %2.<br/>%3.<br/>%4 + Paciente %1<br/>é %2.<br/>%3.<br/>%4 + + + alive + Vivo + жив + lebendig + vivant + żywy + vivo + élő + naživu + vivo + + + dead + Morto + мёртв + muerto + tot + mort + martwy + halott + mrtev + morto + + + He's lost some blood + Ha perso sangue + Ha perdido un poco de sangre + Есть кровопотеря + Er hat etwas Blut verloren + Il a perdu du sang + Stracił trochę krwi + Valamennyi vért vesztett + Ztratil trochu krve + Ele perdeu um pouco de sangue + + + He's lost a lot of blood + Er hat viel Blut verloren + Sok vért vesztett + Stracił sporo krwi + Большая кровопотеря + Ha perdido mucha sangre + Il a perdu beaucoup de sang + Ztratil hodně krve + Ele perdeu muito sangue + Ha perso molto sangue + + + He hasn't lost blood + Non ha perso sangue + Нет кровопотери + Er hat kein Blut verloren + Il n'a pas perdu de sang + Nie stracił krwi + No ha perdido sangre + Nem vesztett vért + Neztratil žádnou krev + Ele não perdeu sangue + + + He is in pain + è affetto da dolore + Испытывает боль + Er hat Schmerzen + Il souffre + Odczuwa ból + Siente dolor + Fájdalmai vannak + Je v bolestech + Ele está com dor + + + He is not in pain + Non è affetto da dolore + Не испытывает боли + Er hat keine Schmerzen + Il ne souffre pas + Nie odczuwa bólu + No siente dolor + Nincsenek fájdalmai + Nemá žádné bolesti + Ele não está com dor + + + Bandaged + Bandé + Повязка наложена + Vendado + Zabandażowano + Bekötözve + Bendato + verbunden + Enfaixado + Obvázaný + + + You bandage %1 (%2) + Vous bandez %1 (%2) + Вы перевязали раненого %1 (%2) + Aplicas vendaje a %1 en %2 + Bandażujesz %1 (%2) + Bekötözöd %1-t (%2) + Stai bendando %1 (%2) + Du verbindest %1 (%2) + Você aplica bandagem no paciente %1 (%2) + Obvazuješ %1 (%2) + + + %1 is bandaging you + %1 vous bande + %1 перевязывает вас + %1 te está vendando + %1 bandażuje Ciebie + %1 bekötöz téged + %1 ti sta bendando + %1 verbindet dich + %1 está aplicando uma bandagem em você + %1 tě obvazuje + + + You start stitching injuries from %1 (%2) + Вы зашиваете ранения от %1 (%2) + Du nähst die Wunden von %1 (%2) + Vous suturez %1 (%2) + 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) + Você começa a suturar os ferimentos do %1 (%2) + Zašíváš rány %1 (%2) + + + Stitching + Наложение швов + Suturando + Nähen + Sutures + Szycie + Összevarrás + Suturando + Suturando... + Šití + + + You treat the airway of %1 + Вы интубируете раненого %1 + Estás intubando a %1 + Du behandelst die Atemwege von %1 + Vous traitez les voies respiratoires de %1 + Udrażniasz drogi oddechowe %1 + Kezeled %1 légútját + Controlli le vie respiratorie di %1 + Você entuba o %1 + Ošetřuješ dýchací cesty %1 + + + Airway + Дыхательные пути + Vías aéreas + Drogi oddechowe + Atemwege + Voies respiratoires + Légút + Vie respiratorie + Vias Aéreas + Dýchací cesty + + + %1 is treating your airway + %1 проводит вам интубацию + %1 traite vos voies respiratoires + %1 te está intubando + %1 udrażnia Twoje drogi oddechowe + %1 behandelt deine Atemwege + %1 kezeli a légútadat + %1 ti sta trattando le vie respiratorie + %1 está te entubando + %1 ošetřuje tvoje dýchací cesty + + + Drag + Ziehen + Arrastrar + Ciągnij + Táhnout + Тащить + Trainer + Húzás + Arrastar + Trascina + + + Carry + Tragen + Cargar + Nieś + Nést + Нести + Porter + Cipelés + Carregar + Trasporta + + + Release + Loslassen + Soltar + Połóż + Položit + Отпустить + Déposer + Elengedés + Soltar + Rrilascia + + + Load Patient Into + Patient Einladen + Cargar al paciente en + Załaduj pacjenta + Naložit pacianta do + Погрузить пациента в + Embarquer le patient + Sebesült berakása + Carregar Paciente Em + Carica paziente nel + + + Unload Patient + Patient Ausladen + Descargar al paciente + Wyładuj pacjenta + Vyložit pacienta + Выгрузить пациента + Débarquer le patient + Sebesült kihúzása + Descarregar Paciente + Scarica il paziente + + + Unload patient + Descargar al paciente + Выгрузить пациента + Patient Ausladen + Wyładuj pacjenta + Débarquer le patient + Sebesült kihúzása + Scarica il paziente + Descarregar Paciente + Vyložit pacienta + + + Load patient + Cargar al paciente en + Погрузить пациента + Patient Einladen + Załaduj pacjenta + Embarquer le patient + Sebesült berakása + Carica il paziente + Carregar Paciente Em + Naložit pacienta + + + Place body in bodybag + Colocar cuerpo en bolsa para cadáveres + Поместить тело в мешок для трупов + Körper in Leichesack verstauen + 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 + Colocar corpo dentro do saco para cadáver + Umístni tělo do pytle na mrtvoly + + + Placing body in bodybag + Colocando cuerpo en bolsa para cadáveres + Упаковка тела ... + Verstaue Körper in Leichensack + 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 + Colocando corpo dentro do saco para cadáver... + Umístňuji tělo do pytle na mrtvoly + + + %1 has bandaged patient + %1 has vendado al paciente + %1 перевязал пациента + %1 hat den Patienten verbunden + %1 założył bandaż + %1 a pansé le patient + %1 bekötözte a pácienst + %1 ha bendato il paziente + %1 aplicou bandagem no paciente + %1 již obvázal pacienta + + + %1 used %2 + %1 usó %2 + %1 benutzt %2 + %1 использовал %2 + %1 użył %2 + %1 utilise %2 + %1 használta a %2-t + %1 ha usato %2 + %1 usou %2 + %1 použil %2 + + + %1 has given an IV + %1 провёл переливание + %1 ha puesto una IV + %1 hat eine Infusion verabreicht + %1 podał IV + %1 a administré une IV + %1 infúziót adott + %1 ha somministrato una IV + %1 aplicou um intravenoso + %1 již aplikoval IV + + + %1 applied a tourniquet + %1 aplicado torniquete + %1 наложил жгут + %1 hat einen Tourniquet angelegt + %1 założył stazę + %1 a appliqué un garrot + %1 felhelyezett egy érszorítót + %1 ha applicato un laccio emostatico + %1 aplicou um torniquete + %1 použil škrtidlo + + + %1 performed CPR + %1 wykonał cykl RKO + %1 провел сердечно-легочную реанимацию + + + Heavily wounded + Schwer verwundet: + Ciężko ranny + Тяжелые ранения + Gravemente ferito + Gravemente herido + Lourdement blessé + Erősen sérült + Těžce zraněn + Gravemente ferido + + + Lightly wounded + Leicht verwundet: + Lekko ranny + Легкие ранения + Leggermente ferito + Levemente herido + Légèrement blessé + Enyhén sérült + Lehce zraněn + Levemente ferido + + + Very lightly wounded + Sehr leicht verwundet: + B. lekko ranny + Царапины + Ferito lievemente + Muy levemente herido + Très légèrement blessé + Nagyon enyhén sérült + Velmi lehce zraněn + Muito levemente ferido + + + Head + Kopf + Głowa + Головы + Testa + Cabeza + Tête + Fej + Hlava + Cabeça + + + Torso + Torso + Tors + Торса + Torso + Torso + Torse + Testtörzs + Trup + Torso + + + Left Arm + Linker Arm + Lewe ramię + Левой руки + Braccio sinistro + Brazo izquierdo + Bras gouche + Bal kar + Levá ruka + Braço Esquerdo + + + Right Arm + Rechter Arm + Prawe ramię + Правой руки + Braccio destro + Brazo derecho + Bras droit + Jobb kar + Pravá ruka + Braço Direito + + + Left Leg + Linkes Bein + Lewa noga + Левой ноги + Gamba sinistra + Pierna izquierda + Jambe gauche + Bal láb + Levá noha + Perna Esquerda + + + Right Leg + Rechtes Bein + Prawa noga + Правой ноги + Gamba destra + Pierna derecha + Jambe droite + Jobb láb + Pravá noha + Perna Direita + + + Bandaging removes bloodstains + Bandagieren entfernt Blutflecken + Bandażowanie usuwa ślady krwi + Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue + A kötözés eltávolítja a vérfoltokat + Перевязка убирает пятна крови + + + Pain is only temporarily suppressed + Schmerzen werden nur vorübergehend unterdrückt + Ból jest tymczasowo zwalczany + Bolest je potlačena pouze dočasně + El dolor se suprime solo temporalmente + Dor é suprimida somente temporáriamente + A fájdalom csak ideiglenesen csökken + Боль приглушается только временно + + + Pain Effect Type + Schmerzeffekt-Typ + Rodzaj efektu bólu + Визуальный эффект боли + Pain Effect Type + Tipo de efecto de dolor + Type d'effet de douleur + Fájdalom-effekt típusa + Tipo do efeito de dor + Typ bolesti - efekt + + + Colour Flashing + Farbblinken + Pulsujące kolory + Пульсирующий свет + Colore lampeggiante + Parpadeo de color + Flash de couleur + Színvillódzás + Flash de cor + Blikající barva + + + Chromatic Aberration + Chromatische Aberration + Aberracja chromatyczna + Хроматическая аберрация + Aberrazione cromatica + Aberración cromática + Aberration chromatique + Kromatikus aberráció + Chromatická aberace + Aberração Cromática + + + Style of menu (Medical) + Styl menu medycznego + Style de menu (Médical) + Menü-Stil (Medical) + Вид меню (медицина) + Tipo de menú (Medico) + Styl menu (Zdravotní) + Estilo do menu (Médico) + Menü stílusa (Orvosi) + Stile del menù (medico) + + + Select the type of menu you prefer; default 3d selections or radial. + Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne + Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale + Wähle den Menü-Stil: Standard 3D-Selektion oder kreisförmig. + Выберите тип меню: стандартный вариант (3D) или радиальный + Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. + Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. + Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. + Zvolte typ menu: základní 3D výběr nebo kruhový + Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. + + + Selections (3d) + Pozycje (3D) + sélections (3D) + 3D-Selektion + Стандартный (3D) + Selecciones (3d) + Seleção (3d) + Választékok (3D) + 3D výběr + Selezione (3D) + + + Radial + Radialne + Radiale + Kreisförmig + Радиальный + Radial + Radial + Kerek + Kruhový + Radiale + + + Scrape + Kratzer + Scorticatura + Ссадина + Eraflure + Draśnięcie + Arañazo + Horzsolás + Raspão + Odřenina + + + Minor Scrape + Kleiner Kratzer + Minima Scorticatura + Малая ссадина + Petite éraflure + Pomniejsze draśnięcie + Arañazo menor + Kis horzsolás + Raspão leve + Malá odřenina + + + Medium Scrape + Mittlerer Kratzer + Media Scorticatura + Средняя ссадина + Moyenne éraflure + Średnie draśnięcie + Arañazo medio + Közepes horzsolás + Raspão médio + Středně velká odřenina + + + Large Scrape + Großer Kratzer + Alta Scorticatura + Большая ссадина + Grande éraflure + Duże draśnięcie + Arañazo severo + Nagy horzsolás + Raspão grave + Velká odřenina + + + Avulsion + Avulsion + Avulsione + Рваная рана + Avulsion + Rana płatowa + Avulsión + Leszakadás + Avulsão + Avulze + + + Minor Avulsion + Kleine Avulsion + Minima Avulsione + Малая рваная рана + Petite avulsion + Pomniejsza rana płatowa + Avulsión menor + Kis leszakadás + Avulsão leve + Malá avulze + + + Medium Avulsion + Mittlere Avulsion + Media Avulsione + Средняя рваная рана + Moyenne avulsion + Średnia rana płatowa + Avulsión media + Közepes leszakadás + Avulsão média + Střední avulze + + + Large Avulsion + Große Avulsion + Alta Avulsione + Большая рваная рана + Grande avulsion + Duża rana płatowa + Avulsión severa + Nagy leszakadás + Avulsão grave + Velká avulze + + + Bruise + Prellung + Contusione + Ушиб + Hématome + Stłuczenie + Contusión + Zúzódás + Contusão + Modřina + + + Minor Bruise + Kleine Prellung + Minima Contusione + Малый ушиб + Petit hématome + Pomniejsze stłuczenie + Contusión menor + Kis zúzódás + Contusão leve + Malá modřina + + + Medium Bruise + Mittlere Prellung + Media Contusione + Средний ушиб + Hématome moyen + Średnie stłuczenie + Contusión media + Közepes zúzódás + Contusão média + Středně velká modřina + + + Large Bruise + Große Prellung + Alta Contusione + Большой ушиб + Hématome important + Duże stłuczenie + Contusión severa + Nagy zúzódás + Contusão grave + Velká modřina + + + Crushed tissue + Quetschverletzung + Tessuto Schiacciato + Компресионная травма + Tissu écrasé + Zgniecienie tkanek miękkich + Tejido triturado + Zúzott szövet + Tecido esmagado + Zhmoždění měkkých tkání + + + Minor crushed tissue + Kleine Quetschverletzung + Minimo Tessuto Schiacciato + Малая компрессионная травма + Tissu écrasé léger + Pomniejsze zgniecienie tkanek miękkich + Tejido triturado menor + Kis zúzott szövet + Tecido esmagado leve + Malé zhmoždění měkkých tkání + + + Medium crushed tissue + Mittlere Quetschverletzung + Medio Tessuto Schiacciato + Средняя компрессионная травма + Tissu écrasé moyen + Średnie zgniecienie tkanek miękkich + Tejido triturado medio + Közepes zúzott szövet + Tecido esmagado médio + Střední zhmoždění měkkých tkání + + + Large crushed tissue + Große Quetschverletzung + Alto Tessuto Schiacciato + Большая компрессионная травма + Tissu écrasé large + Duże zgniecienie tkanek miękkich + Tejido triturado severo + Nagy zúzött szövet + Tecido esmagado grave + Velké zhmoždění měkkých tkání + + + Cut + Schnittwunde + Taglio + Резаная рана + Coupure + Rana cięta + Corte + Vágás + Corte + Řezná rána + + + Small Cut + Kleine Schnittwunde + Piccolo Taglio + Малая резаная рана + Pomniejsza rana cięta + Corte menor + Kis vágás + Petite coupure + Corte leve + Malá řezná rána + + + Medium Cut + Mittlere Schnittwunde + Medio Taglio + Средняя резаная рана + Średnia rana cięta + Corte mediano + Közepes vágás + Moyenne coupure + Corte médio + Střední řezná rána + + + Large Cut + Große Schnittwunde + Grande Taglio + Большая резаная рана + Duża rana cięta + Corte severo + Nagy vágás + Large coupure + Corte grave + Velká řezná rána + + + Tear + Riss + Strappo + Рваная рана + Rozerwanie skóry + Déchirure + Desgarro + Szakadás + Ruptura + Tržná rána + + + Small Tear + Kleiner Riss + Piccolo Strappo + Малая рваная рана + Pomniejsze rozerwanie skóry + Petite Déchirure + Desgarro menor + Kis szakadás + Ruptura leve + Malá tržná rána + + + Medium Tear + Mittlerer Riss + Medio Strappo + Средняя рваная рана + Średnie rozerwanie skóry + Desgarro medio + Közepes szakadás + Moyenne déchirure + Ruptura média + Střední tržná rána + + + Large Tear + Großer Riss + Grande Strappo + Большая рваная рана + Duże rozerwanie skóry + Desgarro severo + Nagy szakadás + Large déchirure + Ruptura grave + Velká tržná rána + + + Velocity Wound + Ballistisches Trauma + Velocità Ferita + Огнестрельная рана + Rana postrzałowa + Blessure de vélocité + Herida de bala + Lőtt seb + Ferimento por projétil de arma de fogo + Střelné poranění + + + Smal Velocity Wound + Kleines Ballistisches Trauma + Lenta Velocità Ferita + Малая огнестрельная рана + Pomniejsza rana postrzałowa + Herida de bala menor + Kis lőtt seb + Petite blessure de vélocité + Ferimento leve por projétil de arma de fogo + Malé střelné poranění + + + Medium Velocity Wound + Mittleres Ballistisches Trauma + Media Velocità Ferita + Средняя огнестрельная рана + Średnia rana postrzałowa + Herida de bala media + Közepes lőtt seb + Moyenne blessure de vélocité + Ferimento médio por projétil de arma de fogo + Střední střelné poranění + + + Large Velocity Wound + Großes Ballistisches Trauma + Alta Velocità Ferita + Большая огнестрельная рана + Duża rana postrzałowa + Herida de bala severa + Nagy lőtt seb + Large blessure de vélocité + Ferimento grave por projétil de arma de fogo + Velké střelné poranění + + + Puncture Wound + Stichwunde + Puntura Ferita + Колотая рана + Rana kłuta + Blessure de perforation + Herida punzante + Szúrt seb + Ferimento por perfuração + Bodná rána + + + Minor Puncture Wound + Kleine Stichwunde + Piccola Puntura Ferita + Малая колотая рана + Pomniejsza rana kłuta + Herida punzante menor + Kis szúrt seb + Légère blessure de perforation + Ferimento leve por perfuração + Malá bodná rána + + + Medium Puncture Wound + Mittlere Stichwunde + Media Puntura Ferita + Средняя колотая рана + Średnia rana kłuta + Herida punzante media + Közepes szúrt seb + Moyenne blessure de perforation + Ferimento médio por perfuração + Střední bodná rána + + + Large Puncture Wound + Große Stichwunde + Grande Puntura Ferita + Большая колотая рана + Duża rana kłuta + Herida punzante severa + Nagy szúrt seb + Large blessure de perforation + Ferimento grave por perfuração + Velká bodná rána + + + Broken Femur + Gebrochener Oberschenkelknochen + Femore Rotto + Перелом + Zkłamana kość udowa + Fémur cassé + Femur roto + Törött combcsont + Fêmur quebrado + Zlomená stehenní kost + + + Treating ... + Behandeln ... + Ellátás ... + Opatrywanie ran ... + Traitement ... + Лечение ... + Tratando ... + Tratando... + Ošetřuji ... + Curando ... + + + Removing Tourniquet ... + Tourniquet entfernen ... + Zdejmowanie stazy ... + Quitando torniquete ... + Retire le tourniquet ... + Removendo torniquete... + Érszorító eltávolítása ... + Sundavám škrtidlo ... + Снятие жгута ... + Togliendo il laccio emostatico ... + + + ACE Medical + ACE: медицина + ACE Opcje medyczne + Médico ACE + ACE-Medicsystem + ACE Zdravotnické + ACE Médico + ACE Orvosi Rendszer + + + Medical Settings [ACE] + Настройки медицины [ACE] + Ustawienia medyczne + Ajustes médicos [ACE] + Medizinische Einstellungen [ACE] + Lékařské nastavení [ACE] + Ajustes médicos [ACE] + Orvosi beállítások [ACE] + + + Medical Level + Сложность медицины + Poziom medyczny + Nivel médico + Medizinisches Level + Úroveň medického + Nível médico + Orvosi szint + + + What is the medical simulation level? + Каков уровень сложности медицинской системы? + Jaki jest poziom symulacji medycznej? + ¿Cuál es el nivel de simulación médica? + Wie hoch soll das medizinische Simulationslevel sein? + Jaká je úroveň lékařské simulace? + Qual o nível de simulação médica? + Milyen komplex legyen az orvosi szimuláció? + + + Basic + Базовый + Podstawowy + Básico + Standard + Základní + Básica + Alap + + + Advanced + Усложненный + Zaawansowany + Avanzado + Erweitert + Pokročilé + Avançada + Fejlett + + + Medics setting + Настройки медиков + Poziom medyków + Configuración médica + Medizinische Einstellungen + Úroveň zdravotníků + Configuração médica + Orvosok beállítása + + + What is the level of detail prefered for medics? + Каков уровень подробностей для медиков? + Jaki jest poziom detali medycznych wyświetlanych dla medyków? + ¿Cuál es el nivel de detalle preferido para los médicos? + Jaká úroveň detailů je preferována pro zdravotníky? + Qual o nível de detalhe preferido para os médicos? + Mi a javasolt részletesség orvosok számára? + + + Disable medics + Отключить медиков + Wyłącz medyków + Desactivar médicos + Sanitäter deaktivieren + Zakázat zdravotníky + Desativar médicos + Orvosok letiltása + + + Enable Litter + Включить мусор + Aktywuj odpadki + Activar restos médicos + Abfälle aktivieren + Povolit odpadky + Ativar lixo médico + Szemét engedélyezése + + + Enable litter being created upon treatment + Включить появление мусора после лечения + Twórz odpadki medyczne podczas leczenia + Activar los restos médicos que se crean en el tratamiento + Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde + Vytváří odpad zdravotnického materiálu pří léčení + Ativar lixo ser criado após tratamento + Engedélyezi a szemét keletkezését ellátáskor + + + Life time of litter objects + Время удаления мусора + Długość życia odpadków + Tiempo de vida de los restos médicos + Dauer des angezeigten Abfalls + Životnost pro odpadky + Tempo de vida dos objetos do lixo + Szemétobjektumok élettartama + + + How long should litter objects stay? In seconds. -1 is forever. + Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время. + Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. + ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. + Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. + Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. + Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. + Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. + + + Enable Screams + Включить крики + Aktywuj wrzaski + Activar gritos + Schreie aktivieren + Povolit křik + Ativar gritos + Kiáltások engedélyezése + + + Enable screaming by injuried units + Включить крики раненных бойцов + Aktywuj wrzeszczenie z bólu przez ranne jednostki + Activar gritos para unidades heridas + Aktiviere Schreie bei verletzten Einheiten + Povolit křičení zraněných jednotek + Ativa gritos para unidades feridas + Engedélyezi a sérült egységek kiáltásait + + + Player Damage + Урон игроку + Próg obrażeń graczy + Daño de jugador + Spielerschaden + Poškození hráče + Dano do jogador + Játékos sérülés + + + What is the damage a player can take before being killed? + Какой уровень урона необходим, чтобы убить игрока? + Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? + ¿Cuál es el daño que un jugador puede sufrir antes de morir? + Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? + Jaké poškození může hráč dostat než bude zabit? + Qal é o dano que um jogador pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? + + + AI Damage + Урон ботам + Próg obrażeń AI + Daño IA + KI-Schaden + Poškození AI + Dano da IA + AI sérülés + + + What is the damage an AI can take before being killed? + Какой уровень урона необходим, чтобы убить бота? + Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? + ¿Cuál es el daño que la IA puede sufrir antes de morir? + Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? + Jaké poškození může AI dostat než bude zabito? + Qual é o dano que uma IA pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? + + + AI Unconsciousness + Потеря сознания ботами + Nieprzytomność AI + Inconsciencia IA + KI-Bewusstlosigkeit + Bezvědomí AI + Inconsciência da IA + AI eszméletlenség + + + Allow AI to go unconscious + Позволить ботам терять сознание + Czy AI może być nieprzytomne od odniesionych obrażeń? + Permita a la IA caer inconsciente + KI kann bewusstlos werden + Umožňuje AI upadnout do bezvědomí + Permite IA ficar inconsciente + Engedélyezi az AI eszméletének elvesztését + + + Remote Controlled AI + IA controlada remotamente + IA controlada remotamente + Zdalnie sterowane AI + Vzdáleně ovládané AI + Távvezérelt AI + Зевса считать ботом + + + Treat remote controlled units as AI not players? + ¿Tratar unidades remotamente controladas como IA? + Tratar unidades remotamente controladas como IA? + Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? + Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? + Távvezérelt egységek AI-ként, nem játékosként való kezelése? + Обрабатывать дистанционно управляемых юнитов как ботов, а не как игроков? + + + Prevent instant death + Откл. мгновенную смерть + Wył. natychmiast. śmierć + Prevenir muerte instantánea + Verhindere direkten Tod + Zabránit okamžité smrti + Previnir morte instantânea + Azonnali halál kiiktatása + + + Have a unit move to unconscious instead of death + Бойцы теряют сознание вместо того, чтобы умирать + Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń + Mover una unidad a inconsciente en vez de a muerta + Lässt eine Einheit bewusstlos werden anstatt zu sterben + Jednotka upadne do bezvědomí namísto smrti + Fazer a unidade ficar inconsciente invés de morrer + Egy egység kerüljön eszméletlen állapotba a halott helyett + + + Bleeding coefficient + Коэффициент кровопотери + Mnożnik krwawienia + Coeficiente de sangrado + Verblutungsmultiplikator + Koeficient krvácení + Coeficiente de sangramento + Vérzési koefficiens + + + Coefficient to modify the bleeding speed + Коэффициент, изменяющий скорость потери крови + Mnożnik modyfikujący prędkość wykrwawiania się + Coeficiente para modificar la velocidad de sangrado + Multiplikator um die Verblutungsgeschwindigkeit zu verändern + Koeficient rychlosti krvácení + Coeficiente para modificar a velocidade do sangramento + Egy szorzó a vérzés sebességének szabályozására + + + Pain coefficient + Коэффициент боли + Mnożnik bólu + Coeficiente de dolor + Schmerzmultiplikator + Koeficient bolesti + Coeficiente de dor + Fájdalmi koefficiens + + + Coefficient to modify the pain intensity + Коэффициент, изменяющий уровень боли + Mnożnik modyfikujący intensywność bólu + Coeficiente para modificar la intensidad del dolor + Multiplikator um den Schmerzintensität zu verändern + Koeficient intenzity bolesti + Coeficiente para modificar a instensidade de dor + Egy szorzó a fájdalom erősségének szabályozására + + + Sync status + Синхронизация статуса + Synchronizuj status + Sincronizador estado + Status synchronisieren + Synchronizovat status + Sincronizar estado + Szinkronizációs állapot + + + Keep unit status synced. Recommended on. + Синхронизировать статус юнитов. Рекомендуется включить. + Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + Mantener el estado de la unidad sincronizado. Recomendado activado + Status der Einheit synchron halten. Sollte aktiviert bleiben. + Udržuje status jednotky synchronizovaný. Doporučeno zapnout. + Mater o estado da unidade sincronizado. Recomendado ativado. + Egységállapotok szinkronizálása. Javasolt a bekapcsolása. + + + Provides a medical system for both players and AI. + Включает медицинскую систему как для игроков, так и для ботов. + Moduł ten dostarcza system medyczny dla graczy oraz AI. + Proporciona un sistema médico para jugadores e IA. + Aktiviert ein medizinisches System für Spieler und KI. + Poskytuje zdravotní systém pro hráče a AI. + Proporciona o sistema médico para os jogadores e a IA. + Egy orvosi rendszert ad játékosok és AI-k számára. + + + Advanced Medical Settings [ACE] + Настройки усложненной медицины [ACE] + Zaawansowane ustawienia medyczne + Ajustes médicos avanzados [ACE] + Erweiterte medizinische Einstellungen [ACE] + Pokročilé zdravotnické nastavení [ACE] + Ajustes médicos avançados [ACE] + Fejlett orvosi beállítások [ACE] + + + Enabled for + Включено для + Aktywne dla + Hablitado para + Aktiviert für + Povoleno pro + Habilitado para + Engedélyezve... + + + Select what units the advanced medical system will be enabled for + Выберите, на кого будет распространяться усложненная система медицины + Wybierz dla kogo zaawansowany system medyczny będzie aktywny + Seleccione para qué unidades será habilitado el sistema médico avanzado + Wähle aus welche Einheiten das erweiterte medizinische System haben + Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen + Selecione quais unidades o sistema médico avançado será habilitado + Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer + + + Players only + Игроков + Tylko dla graczy + Solo jugadores + Nur Spieler + Pouze hráči + Somente jogadores + Csak játékosok + + + Players and AI + Игроков и ботов + Gracze oraz AI + Jugadors e IA + Spieler und KI + Hráči a AI + Jogadores e IA + Játékosok és AI + + + Enable Advanced wounds + Усложненные раны + Akt. zaawansowane rany + Activa heridas avanzadas + Aktiviere erweiterte Wunden + Povolit pokročilé zranění + Ativar ferimentos avançados + Komplex sebek engedélyezése + + + Allow reopening of bandaged wounds? + Будут ли открываться уже перевязанные раны? + Pozwól na otwieranie się zabandażowanych ran? + Permitir la reapertura de las heridas vendadas? + Erlaube das Öffnen von bandagierten Wunden? + Umožnit znovuotevření zavázané rány? + Permitr reabertura de ferimentos enfaixados? + Visszanyílhatnak a bekötözött sebek? + + + Vehicle Crashes + Аварии транспорта + Obrażenia od kolizji + Accidentes de vehículos + Fahrzeugunfälle + Poškození z kolize + Batidas de veículos + Járműbalesetek + + + Do units take damage from a vehicle crash? + Должны ли юниты получать повреждения от аварий на транспорте? + Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + ¿Las unidades reciben daño de un accidente de tráfico? + Bekommen Einheiten von Fahrzeugunfällen Schaden? + Dostane jednotka poškození při autonehodě? + As unidades recebem dano de uma batida de veículo? + Sérülnek-e az egységek autós ütközés során? + + + Allow PAK + Использование аптечки + Ust. apteczek osobistych + Permitir EPA + Erlaube Erste-Hilfe-Set + Povolit osobní lékárničky + Permitir Kit de Primeiros Socorros + Elsősegélycsomag engedélyezése + + + Who can use the PAK for full heal? + Кому разрешено выполнять полное лечение с помощью аптечки? + Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + ¿Quién puede utilizar el EPA para una cura completa? + Wer kann das Erste-Hilfe-Set für eine Endheilung verwenden? + Kdo může použít osobní lékárničku pro plné vyléčení? + Quem pode usar o KPS para cura completa? + Ki használhatja az elsősegélycsomagot teljes gyógyításra? + + + Anyone + Кем угодно + Wszyscy + Nadie + Jeder + Kdokoliv + Qualquer um + Akárki + + + Medics only + Только медиками + Tylko medycy + Solo médicos + Nur Sanitäter + Pouze zdravotník + Somente médicos + Csak orvosok + + + Doctors only + Только врачами + Tylko doktorzy + Solo doctores + Nur Ärzte + Pouze doktor + Somente doutores + Csak doktorok + + + Remove PAK on use + Удалять аптечки после использования + Usuń apteczkę po użyciu + Eliminar EPA después del uso + Entferne Erste-Hilfe-Set bei Verwendung + Odebrat osobní lékárničku po použití + Remover o KPS depois do uso + Elsősegélycsomag eltávolítása használatkor + + + Should PAK be removed on usage? + Нужно ли удалять аптечки после использования? + Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + El EPA será eliminado después de usarlo + Sollen Erste-Hilfe-Sets bei Verwendung entfernt werden? + Má se osobní lékárnička odstranit po použití? + Deve o KPS ser removido depois do uso? + Eltávolítódjon az elsősegélycsomag használatkor? + + + Locations PAK + Место использования аптечки + Ogr. apteczek osobistych + Ubicacions del EPA + Orte für Erste-Hilfe-Set + Lokace osobní lékárničky + Localizações do KPS + Elsősegélycsomag helyek + + + Where can the Personal Aid Kit be used? + Где может использоваться аптечка? + Gdzie można korzystać z apteczek osobistych? + ¿Dónde se puede utilizar el equipo de primeros auxilios? + Wo kann das Erste-Hilfe-Set verwendet werden? + Kde může být použita osobní lékárnička? + Onde o kit de primeiros socorros pode ser utilizado? + Hol lehet az elsősegélycsomagot használni? + + + Condition PAK + Podmínka osobní lékárničky + Condición EPA + Warunek apteczek + Elsősegélycsomag állapot + Condição do KPS + Условие использования аптечки + + + When can the Personal Aid Kit be used? + Kde může být použita osobní lékárnička? + ¿Cuando se puede utilizar el Equipo de primeros auxilios? + Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? + Mikor lehet az elsősegélycsomagot használni? + Onde o kit de primeiros socorros pode ser utilizado? + Когда может использоваться аптечка? + + + Anywhere + Где угодно + Wszędzie + Donde sea + Überall + Kdekoliv + Qualquer lugar + Akárhol + + + Medical vehicles + В медицинском транспорте + Pojazdy medyczne + Vehiculos médicos + Medizinische Fahrzeuge + Zdravotnická vozidla + Veículos médcos + Orvosi járművek + + + Medical facility + В госпитале + Budynki medyczne + Centro médico + Medizinische Einrichtungen + Zdravotnické zařízení + Instalação médica + Orvosi létesítmény + + + Vehicles & facility + В транспорте и госпитале + Pojazdy i budynki medyczne + Vehículos y centros + Fahrzeuge & Einrichtungen + Vozidla a zařízení + Veículos e instalações + Járművek & létesítmény + + + Allow Surgical kit (Adv) + Хирургический набор может использоваться (усл.) + Ust. zestawu chirurg. + Permitir equipo quirúrgico (Avanzado) + Erlaube Operationskasten + Povolit chirurgickou soupravu (Pokr.) + Permite kit cirúrgico (avançado) + Sebészkészlet (Fejlett) engedélyezése + + + Who can use the surgical kit? + Кто может использовать хирургический набор? + Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + ¿Quién puede utilizar el equipo quirúrgico? + Wer kann den Operationskasten verwenden? + Kdo může použít chirurgickou soupravu? + Quem pode usar o kit cirúrgico? + Ki használhatja a sebészkészletet? + + + Remove Surgical kit (Adv) + Удалять хирургический набор (усл.) + Usuń zest. chir. po użyciu + Eliminar equipo quirúrgico (Avanzado) + Enrtferne Operationskasten (erweitert) + Odebrat chirurgickou soupravu (Pokr.) + Remover kit cirúrgico (avançado) + Sebészkészlet (Fejlett) eltávolítása + + + Should Surgical kit be removed on usage? + Нужно ли удалять хирургический набор после использования? + Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + Eliminar el equipo quirúrgico después del uso + Entferne Operationskästen bei Verwendung? + Odebrat chirurgickou soupravu po použití? + Deve o kit cirúrgico ser removido após o uso? + Eltávolítódjon a sebészkészlet használatkor? + + + Locations Surgical kit (Adv) + Место использования хирургического набора (усл.) + Ogr. zestawu chirurg. + Ubicaciones del equipo quirúrgico (Avanzado) + Orte für Operationskästen (erweitert) + Lokace chirurgické soupravy (Pokr.) + Localizações do kit cirúrgico (avançado) + Sebészkészlet (Fejlett) helyei + + + Where can the Surgical kit be used? + Где может использоваться хирургический набор? + Gdzie można korzystać z zestawu chirurgicznego? + Dónde se puede utilizar el equipo quirúrgico + Wo kann der Operationskasten verwendet werden? + Kde může být použita chirurgická souprava? + Onde o kit cirúrgico pode ser utilizado? + Hol lehet a sebészkészletet használni? + + + Condition Surgical kit (Adv) + Podmínka chirurgické soupravy (Pokr.) + Condición de equipo quirúrgico (Av) + Warunek zestawu chir. + Sebészkészlet állapot + Condição do Kit Cirúrgico (Avançado) + Условие использования хирургического набора (усл.) + + + When can the Surgical kit be used? + Kde může být použita chirurgická souprava? + ¿Cuando se puede utilizar el equipo quirúrgico? + Po spełnieniu jakich warunków zestaw chirurgiczny może zostać zastosowany na pacjencie? + Mikor lehet a sebészkészletet használni? + Onde o kit cirúrgico pode ser utilizado? + Когда может использоваться хирургический набор? + + + Bloodstains + Blutflecken + Plamy krwi + Skvrny od krve + Manchas de sangre + Manchas de sangue + Vérfoltok + Удалять пятна крови + + + Bandaging removes bloodstains + Bandagieren entfernt Blutflecken + Bandażowanie usuwa ślady krwi + Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue + Kötözés eltávolítja a vérfoltokat + Перевязка удаляет пятна крови + + + Pain suppression + Schmerzunterdrückung + Zwalczanie bólu + Potlačení bolesti + Supresión del dolor + Supressão de dor + Fájdalomcsillapítás + Приглушение боли + + + Pain is only temporarily suppressed, not removed + Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt + Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale + Bolest je potlačena, ale jen dočastně + El dolor se suprime solo temporalmente, no se elimina. + Dor é somente temporáriamente suprimida, não removida + A fájdalom csak ideiglenesen csökken, nem távolítódik el + Боль приглушается только временно + + + Configure the treatment settings from ACE Medical + Настройка лечения в медицинской системе ACE + Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + Configure las opciones de tratamiento del ACE Médico + Behandlungseinstellungen vom ACE-Medical konfigurieren + Konfigurace nastavení léčby ze zdravotnické systému ACE + Configure as opções de tratamento do ACE Médico + Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből + + + Revive Settings [ACE] + Настройки реанимации [ACE] + Ustawienia wskrzeszania + Sistema de resucitado [ACE] + Wiederbelebungseinstellungen [ACE] + Nastavení oživení [ACE] + Sistema de reavivamento [ACE] + Újraélesztés beállításai [ACE] + + + Enable Revive + Включить реанимацию + Aktywuj wskrzeszanie + Habilitar resucitado + Erlaube Wiederbelebung + Povolit oživení + Habilitar reavivamento + Újraélesztés engedélyezése + + + Enable a basic revive system + Включить базовую систему реанимации + Aktywuj podstawowy system wskrzeszania + Habilitar un sistema básico de resucitado + Aktiviere Standard-Wiederbelebungssystem + Povolit základní systém oživení + Habilitar um sistema básico de reavivamento + Egy alap újraélesztési rendszer engedélyezése + + + Max Revive time + Макс. время реанимации + Maks. czas agonii + Tiempo máximo de resucitado + Maximale Wiederbelebungszeit + Maximální čas pro oživení + Tempo máximo de reavivamento + Maximum újraélesztési idő + + + Max amount of seconds a unit can spend in revive state + Максимальное время в секундах, в течение которого бойца можно реанимировать + Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación + Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann + Maximální doba v agónii v sekundách + Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento + Maximum másodperc, amit egy egység újraélesztési állapotban tölthet + + + Max Revive lives + Макс. кол-во жизней + Maks. ilość wskrzeszeń + Vidas máximas de resucitado + Maximale Leben bei Wiederbelebung + Maximální počet oživení + Vidas máximas do reavivado + Maximum újraélesztési lehetőségek + + + Max amount of lives a unit. 0 or -1 is disabled. + Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. + Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. + Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. + Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. + Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. + Egy egység maximum "életei". 0 vagy -1 letiltja. + + + Provides a medical system for both players and AI. + Включает медицинскую систему как для игроков, так и для ботов. + Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. + Proporciona un sistema médico para jugadores e IA. + Aktiviert das Medicsystem für Spieler und KI. + Poskytuje zdravotní systém pro hráče a AI. + Proporciona um sistema médico para jogadores e IA. + Egy orvosi rendszert ad játékosok és AI-k számára. + + + Set Medic Class [ACE] + Сделать медиком [ACE] + Ustaw klasę medyka + Establecer case médica [ACE] + Setze Sanitäterklassen [ACE] + Určit třídu medika [ACE] + Definir classe médica [ACE] + Orvos beállítása [ACE] + + + List + Список + Lista + Lista + Liste + Seznam + Lista + Lista + + + List of unit names that will be classified as medic, separated by commas. + Список имен юнитов, которые будут считаться медиками (через запятую). + Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. + Lista de los nombres de las unidades que se clasifican como médico, separados por comas. + Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. + Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. + Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. + Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. + + + Is Medic + Является медиком + Klasa medyczna + Es médico + Ist Sanitäter + Je zdravotník + É médico + Orvos-e + + + This module allows you to assign the medic class to selected units. + Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. + Dieses Modul legt fest welche Einheit ein Sanitäter ist. + Tento modul určuje, která jednotka je zdravotník. + Este módulo determina qual unidade é um paramédico. + Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. + Этот модуль позволяет назначить класс медика выбранным юнитам. + + + None + Нет + Żadna + Nada + Keine + Žádný + Nada + Nincs + + + Regular medic + Обычный медик + Zwykły medyk + Médico regular + Normaler Sanitäter + Řadový zdravotník + Médico regular + Hagyományos orvos + + + Doctor (Only Advanced Medics) + Врач (только усложн.) + Doktor (tylko zaawansowani medycy) + Doctor (Solo medicina avanzada) + Arzt (nur erweiterte Sanitäter) + Doktor (Pouze pokročilý zdravotníci) + Doutor (Somente médicos avançados) + Doktor (csak fejlett orvosok) + + + Assigns the ACE medic class to a unit + Задает юниту класс медика + Moduł ten przypisuje klasę medyka ACE do jednostek. + Asigna la clase médico ACE a una unidad + Weise die ACE-Sanitäterklasse einer Einheit zu + Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica do ACE a uma unidade + Az ACE orvosi jelző hozzárendelése egy egységhez + + + Set Medical Vehicle [ACE] + Сделать мед. транспортом [ACE] + Ustaw pojazd medyczny + Establecer vehículos médicos [ACE] + Setze medizinisches Fahrzeug [ACE] + Určit zdravotnické vozidlo [ACE] + Definir veículo médico [ACE] + Orvosi jármű beállítása [ACE] + + + List + Список + Lista + Lista + Liste + Seznam + Lista + Lista + + + List of vehicles that will be classified as medical vehicle, separated by commas. + Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). + Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. + Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. + Liste von Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. + Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. + Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. + Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. + + + Is Medical Vehicle + Является медицинским транспортом + Jest pojazdem med. + Es vehículo médico + Ist medizinisches Fahrzeug + Je zdravotnické vozidlo + É um veículo médico + Orvosi jármű-e + + + Whatever or not the objects in the list will be a medical vehicle. + Будут ли объекты в списке считаться медицинским транспортом. + Czy pojazdy z tej listy są pojazdami medycznymi? + Cualquiera de la lista o fuera de ella será un vehículo médico. + Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. + Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. + Se serão ou não os objetos dessa lista veículos médicos. + A listában lévő objektumok orvosi járművek-e, vagy sem. + + + Assigns the ACE medic class to a unit + Задает юниту класс медика + Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. + Asigna la clase médico ACE a una unidad + Weist die ACE-Sanitäterklasse einer Einheit zu + Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica ACE a uma unidade + Hozzárendeli az ACE orvosi jelzőt egy egységhez + + + Set Medical Facility [ACE] + Сделать госпиталем [ACE] + Ustaw budynek medyczny + Establece el centro médico [ACE] + Setze medizinische Einrichtung [ACE] + Určit zdravotnické zařízení [ACE] + Definir instalação médica [ACE] + Orvosi létesítmény beállítása [ACE] + + + Is Medical Facility + Является госпиталем + Jest budynkiem med. + Es centro médico + Ist eine medizinische Einrichtung + Je zdravotnické zařízení + É uma instalação médica + Orvosi létesítmény-e + + + Registers an object as a medical facility + Определяет объект в качестве госпиталя + Przypisuje danemu obiektowi status budynku medycznego + Registra un objeto como un centro médico + Definiert ein Objekt als medizinische Einrichtung + Registruje objekt jako zdravotnické zařízení + Registra um objeto como instalacão médica + Egy objektum orvosi létesítményként való regisztrálása + + + Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. + Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. + Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. + Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. + Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. + Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. + Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. + Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. + + + [ACE] Medical Supply Crate (Basic) + [ACE] Ящик с медикаментами (базовая медицина) + [ACE] Skrzynka z zapasami medycznymi (podstawowa) + [ACE] Caja de suministros médicos (Básica) + [ACE] Medizinische Kiste (standard) + [ACE] Zdravotnické zásoby (základní) + [ACE] Caixa com suprimentos médicos + [ACE] Orvosi láda (Alap) + + + [ACE] Medical Supply Crate (Advanced) + [ACE] Ящик с медикаментами (усложн. медицина) + [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + [ACE] Caja de suministros médicos (Avanzada) + [ACE] Medizinische Kiste (erweitert) + [ACE] Zdravotnické zásoby (pokročilé) + [ACE] Caixa com suprimentos médicos (Avançados) + [ACE] Orvosi láda (Fejlett) + + + Anytime + Kdykoli + Siempre + Zawsze + Akármikor + Sempre + В любое время + + + Stable + Stabilní + Estable + Po stabilizacji + Stabil + Estável + После стабилизации + + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + Orvosi + + + Distance to %1 has become to far for treatment + %1 odszedł zbyt daleko, nie można kontynuować leczenia + Расстояние до %1 стало слишком большим для лечения + + + \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 0a4f1a5388..fb6fcda817 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,360 +1,369 @@ - - - - - Medical Menu - Menu medyczne - - - Allow Medical Menu - Akt. menu medyczne - - - Allow clients to use the medical menu - Zezwalaj graczom korzystać z menu medycznego - - - Use Medical menu - Użyj menu medycznego - - - If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu - Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. - - - Re-open Medical menu - Otwieraj ponownie menu medyczne - - - Re-open the medical menu after succesful treatment - Otwórz ponownie menu medyczne po udanym zakończeniu leczenia - - - Open Medical Menu - Otwórz menu medyczne - - - Medical Menu Settings - Ustawienia menu medycznego - - - Configure the usage of the Medical Menu - Skonfiguruj opcje menu medycznego - - - EXAMINE & TREATMENT - ОСМОТР И ЛЕЧЕНИЕ - EXAMINAR & TRATAMIENTO - EXAMINER & TRAITEMENTS - BADANIE & LECZENIE - - - STATUS - СОСТОЯНИЕ - ESTADO - ÉTATS - STATUS - - - OVERVIEW - ОБЩАЯ ИНФОРМАЦИЯ - DESCRIPCIÓN - DESCRIPTION - OPIS - - - ACTIVITY LOG - ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ - REGISTRO DE ACTIVIDAD - REGISTRE DES SOINS - LOGI AKTYWNOŚCI - - - QUICK VIEW - БЫСТРЫЙ ОСМОТР - VISTA RÁPIDA - VUE RAPIDE - SZYBKI PODGLĄD - - - View triage Card - Смотреть первичную карточку - Ver Triage - Voir Carte de Triage - Pokaż kartę segregacyjną - - - Examine Patient - Осмотреть пациента - Examinar Paciente - Examiner Patient - Zbadaj pacjenta - - - Bandage / Fractures - Раны / переломы - Vendajes/Fracturas - Bandages / Fractures - Bandaże / Złamania - - - Medication - Медикаменты - Medicación - Médications - Leki - - - Airway Management - Дыхательные пути - Vías Aéreas - Gestion Des Voie REspiratoire - Drogi oddechowe - - - Advanced Treatments - Специальная медпомощь - Tratamientos Avanzados - Traitement Avancé - Zaawansowane zabiegi - - - Drag/Carry - Тащить/нести - Arrastrar/Cargar - Glisser/Porter - Ciągnij/Nieś - - - Toggle (Self) - Лечить себя/другого раненого - Activer (sois) - Przełącz (na siebie) - Alternar - - - Select triage status - Сортировка - Seleccionar estado de Triage - Selectioner l'état de Triage - Wybierz priorytet - - - - Select Head - Выбрать голову - Seleccionar Cabeza - Selectioner Tête - Wybierz głowę - - - Select Torso - Выбрать торс - Seleccionar Torso - Selectioner Torse - Wybierz tors - - - Select Left Arm - Выбрать левую руку - Seleccionar Brazo Izquierdo - Selectioner Bras Gauche - Wybierz lewą rękę - - - Select Right Arm - Выбрать правую руку - Seleccionar Brazo Derecho - Selectioner Bras Droit - Wybierz prawą rękę - - - Select Left Leg - Выбрать левую ногу - Seleccionar Pierna Izquierda - Selectioner Jambe Gauche - Wybierz lewą nogę - - - Select Right Leg - Выбрать правую ногу - Seleccionar Pierna Derecha - Selectioner Jambe Droite - Wybierz prawą nogę - - - Head - Голова - Cabeza - Tête - Głowa - - - Torso - Торс - Torse - Tors - - - Left Arm - Левая рука - Brazo Izquierdo - Bras Gauche - Lewa ręka - - - Right Arm - Правая рука - Brazo Derecho - Bras Droit - Prawa ręka - - - Left Leg - Левая нога - Pierna Izquierda - Jambe Gauche - Lewa noga - - - Right Leg - Правая нога - Pierna Derecha - Jambe Droite - Prawa noga - - - Body Part: %1 - Часть тела: %1 - Parte del cuerpo: %1 - Partie du corps: %1 - Część ciała: %1 - - - Small - малого размера - Pequeña - Petite - małym - - - Medium - среднего размера - Mediana - moyenne - średnim - - - Large - большого размера - Grande - Grande - dużym - - - There are %2 %1 Open Wounds - %2 открытые раны %1 - Hay %2 Heridas Abiertas %1 - Il y a %2 %1 Blessure Ouverte - Widzisz otwarte rany w ilości %2 o %1 rozmiarze - - - There is 1 %1 Open Wound - Открытая рана %1 - Hay 1 Herida Abierta %1 - Il y a 1 blessure ouverte %1 - Widzisz 1 otwartą ranę o %1 rozmiarze - - - There is a partial %1 Open wound - Частично открытая рана %1 - Hay una herida parcial abierta %1 - Il y a une Blessure Patiellement Ouverte %1 - Widzisz częściowo otwartą ranę o %1 rozmiarze - - - There are %2 %1 Bandaged Wounds - %2 перевязанные раны %1 - Hay %2 Heridas %1 Vendadas - Il y a %2 %1 Blessure Bandée - Widzisz %2 zabandażowanych ran o %1 rozmiarze - - - There is 1 %1 Bandaged Wound - 1 перевязанная рана %1 - Hay 1 Herida Vendada %1 - Il y a 1 %1 Blessure Bandée - Widzisz 1 zabandażowaną ranę o %1 rozmiarze - - - There is a partial %1 Bandaged wound - Частично перевязанная рана %1 - Hay una Herida parcial %1 Vendada - Il y a %1 Blessure Partielment Bandée - Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration Normale - Normalny oddech - - - No breathing - Дыхания нет - No respira - Apnée - Brak oddechu - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée Respiratoire - Trudności z oddychaniem - - - Almost no breathing - Дыхания почти нет - Casi sin respirar - Respiration Faible - Prawie brak oddechu - - - Bleeding - Кровотечение - Sangrando - Seignement - Krwawienie zewnętrzne - - - in Pain - Испытывает боль - Con Dolor - A De La Douleur - W bólu - - - Lost a lot of Blood - Большая кровопотеря - Mucha Sangre perdida - A Perdu Bcp de Sang - Stracił dużo krwi - - - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Garot [CAT] - Opaska uciskowa [CAT] - - - Nasopharyngeal Tube [NPA] - Назотрахеальная трубка - Torniquete [CAT] - Canule Naseaupharyngée [NPA] - Rurka nosowo-gardłowa [NPA] - - - + + + + + Medical Menu + Menu medyczne + Медицинское меню + + + Allow Medical Menu + Akt. menu medyczne + Разрешить мед. меню + + + Allow clients to use the medical menu + Zezwalaj graczom korzystać z menu medycznego + Разрешает клиентам использовать медицинское меню + + + Use Medical menu + Użyj menu medycznego + Использовать медицинское меню + + + If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu + Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. + Если разрешено сервером, включает опцию использования медицинского меню с помощью горячих главиш или меню взаимодействия + + + Re-open Medical menu + Otwieraj ponownie menu medyczne + Переоткрывать мед. меню + + + Re-open the medical menu after succesful treatment + Otwórz ponownie menu medyczne po udanym zakończeniu leczenia + Переоткрывать медицинское меню после удачного лечения + + + Open Medical Menu + Otwórz menu medyczne + Открыть медицинское меню + + + Medical Menu Settings + Ustawienia menu medycznego + Настройки медицинского меню + + + Configure the usage of the Medical Menu + Skonfiguruj opcje menu medycznego + Настройки использования медицинского меню + + + EXAMINE & TREATMENT + ОСМОТР И ЛЕЧЕНИЕ + EXAMINAR & TRATAMIENTO + EXAMINER & TRAITEMENTS + BADANIE & LECZENIE + + + STATUS + СОСТОЯНИЕ + ESTADO + ÉTATS + STATUS + + + OVERVIEW + ОБЩАЯ ИНФОРМАЦИЯ + DESCRIPCIÓN + DESCRIPTION + OPIS + + + ACTIVITY LOG + ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ + REGISTRO DE ACTIVIDAD + REGISTRE DES SOINS + LOGI AKTYWNOŚCI + + + QUICK VIEW + БЫСТРЫЙ ОСМОТР + VISTA RÁPIDA + VUE RAPIDE + SZYBKI PODGLĄD + + + View triage Card + Смотреть первичную карточку + Ver Triage + Voir Carte de Triage + Pokaż kartę segregacyjną + + + Examine Patient + Осмотреть пациента + Examinar Paciente + Examiner Patient + Zbadaj pacjenta + + + Bandage / Fractures + Раны / переломы + Vendajes/Fracturas + Bandages / Fractures + Bandaże / Złamania + + + Medication + Медикаменты + Medicación + Médications + Leki + + + Airway Management + Дыхательные пути + Vías Aéreas + Gestion Des Voie REspiratoire + Drogi oddechowe + + + Advanced Treatments + Специальная медпомощь + Tratamientos Avanzados + Traitement Avancé + Zaawansowane zabiegi + + + Drag/Carry + Тащить/нести + Arrastrar/Cargar + Glisser/Porter + Ciągnij/Nieś + + + Toggle (Self) + Лечить себя/другого раненого + Activer (sois) + Przełącz (na siebie) + Alternar + + + Select triage status + Сортировка + Seleccionar estado de Triage + Selectioner l'état de Triage + Wybierz priorytet + + + Select Head + Выбрать голову + Seleccionar Cabeza + Selectioner Tête + Wybierz głowę + + + Select Torso + Выбрать торс + Seleccionar Torso + Selectioner Torse + Wybierz tors + + + Select Left Arm + Выбрать левую руку + Seleccionar Brazo Izquierdo + Selectioner Bras Gauche + Wybierz lewą rękę + + + Select Right Arm + Выбрать правую руку + Seleccionar Brazo Derecho + Selectioner Bras Droit + Wybierz prawą rękę + + + Select Left Leg + Выбрать левую ногу + Seleccionar Pierna Izquierda + Selectioner Jambe Gauche + Wybierz lewą nogę + + + Select Right Leg + Выбрать правую ногу + Seleccionar Pierna Derecha + Selectioner Jambe Droite + Wybierz prawą nogę + + + Head + Голова + Cabeza + Tête + Głowa + + + Torso + Торс + Torse + Tors + + + Left Arm + Левая рука + Brazo Izquierdo + Bras Gauche + Lewa ręka + + + Right Arm + Правая рука + Brazo Derecho + Bras Droit + Prawa ręka + + + Left Leg + Левая нога + Pierna Izquierda + Jambe Gauche + Lewa noga + + + Right Leg + Правая нога + Pierna Derecha + Jambe Droite + Prawa noga + + + Body Part: %1 + Часть тела: %1 + Parte del cuerpo: %1 + Partie du corps: %1 + Część ciała: %1 + + + Small + малого размера + Pequeña + Petite + małym + + + Medium + среднего размера + Mediana + moyenne + średnim + + + Large + большого размера + Grande + Grande + dużym + + + There are %2 %1 Open Wounds + %2 открытые раны %1 + Hay %2 Heridas Abiertas %1 + Il y a %2 %1 Blessure Ouverte + Widzisz otwarte rany w ilości %2 o %1 rozmiarze + + + There is 1 %1 Open Wound + Открытая рана %1 + Hay 1 Herida Abierta %1 + Il y a 1 blessure ouverte %1 + Widzisz 1 otwartą ranę o %1 rozmiarze + + + There is a partial %1 Open wound + Частично открытая рана %1 + Hay una herida parcial abierta %1 + Il y a une Blessure Patiellement Ouverte %1 + Widzisz częściowo otwartą ranę o %1 rozmiarze + + + There are %2 %1 Bandaged Wounds + %2 перевязанные раны %1 + Hay %2 Heridas %1 Vendadas + Il y a %2 %1 Blessure Bandée + Widzisz %2 zabandażowanych ran o %1 rozmiarze + + + There is 1 %1 Bandaged Wound + 1 перевязанная рана %1 + Hay 1 Herida Vendada %1 + Il y a 1 %1 Blessure Bandée + Widzisz 1 zabandażowaną ranę o %1 rozmiarze + + + There is a partial %1 Bandaged wound + Частично перевязанная рана %1 + Hay una Herida parcial %1 Vendada + Il y a %1 Blessure Partielment Bandée + Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration Normale + Normalny oddech + + + No breathing + Дыхания нет + No respira + Apnée + Brak oddechu + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée Respiratoire + Trudności z oddychaniem + + + Almost no breathing + Дыхания почти нет + Casi sin respirar + Respiration Faible + Prawie brak oddechu + + + Bleeding + Кровотечение + Sangrando + Seignement + Krwawienie zewnętrzne + + + in Pain + Испытывает боль + Con Dolor + A De La Douleur + W bólu + + + Lost a lot of Blood + Большая кровопотеря + Mucha Sangre perdida + A Perdu Bcp de Sang + Stracił dużo krwi + + + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Garot [CAT] + Opaska uciskowa [CAT] + + + Nasopharyngeal Tube [NPA] + Назотрахеальная трубка + Torniquete [CAT] + Canule Naseaupharyngée [NPA] + Rurka nosowo-gardłowa [NPA] + + + \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index c7f6cc1708..f9dcda6e0c 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -1,368 +1,375 @@ - - - - - MicroDAGR GPS - MicroDAGR GPS - GPS MicroDAGR - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - GPS MicroDAGR - GPS MicroDAGR - - - MicroDAGR advanced GPS receiver - MicroDAGR - Fortgeschrittener GPS-Empfänger - Receptor avanzado GPS MicroDAGR - Многофункциональный GPS-приёмник. - Zaawansowany odbiornik GPS MicroDAGR - Récepteur GPS MicroDAGR - MicroDAGR pokročílá GPS příjímač - MicroDAGR fejlett GPS vevőegység - Ricevitore GPS avanzato MicroDAGR - Recepitor GPS avançado MicroDAGR - - - Angular Unit: - Unidad angular: - Угловые единицы: - Jednostka kątowa: - Unité angulaire - Winkeleinheit: - Úhlová jednotka: - Szögmértékegység: - Unità angolare: - Unidade Angular: - - - Mils - Mil - Mils - Тысячные - Tysiączne - Mils - Mils - Mil - Mils - Mils: - - - Show Waypoints On Map: - Zeige Wegpunkte auf Karte - Mostrar puntos de ruta en el mapa: - Показывать маршрутные точки на карте: - Pokaż PT na mapie: - Montrer points de passage sur la carte - Ukázat waypointy na mapě: - Útvonalpontok mutatása a térképen: - Mostra waypoint sulla mappa: - Mostrar Waypoints no mapa: - - - Degrees - Grad - Grados - Градусы - Stopnie - Degrés - Stupně - Fok - Gradi - Graus - - - On - Zapnuto - Allumé - Ein - Acceso - Wł. - Ativar - Вкл. - Encendido - Be - - - Off - Vypnuto - Eteint - Aus - Spento - Wył. - Desativar - Выкл. - Apagado - Ki - - - Enter Grid Cords: - Introducir coordenadas de cuadrícula: - Введите сеточные координаты: - Wprowadź współrzędne: - Entrer coordonnées - Koordinaten eingeben: - Napiš souřadnice: - Add meg a rácskoordinátákat: - Introduci griglia coordinate: - Digite as Ccords. do Grid - - - Name of [%1] - Name von [%1] - Nombre de [%1] - Название [%1] - Nazwa [%1] - Nom de %1 - Název [%1] - [%1] neve - Nome di [%1] - Nome do [%1] - - - MGRS-New - UTMREF-NEU - Nuevo-MGRS - MGRS-Новая - MGRS-Nowy - Info-MGRS - MGRS-Nový - MGRS-új - Nuovo MGRS - MGRS-Novo - - - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - - - Range: - Distancia: - Distanz: - Дистанция: - Dystans: - Distance: - Vzdálenost: - Távolság: - Distanza: - Distância: - - - Compass Direction - Kompass Richtung - Dirección de la brújula - Азимут - Azymut - Azimut - Azimut: - Irányszög - Azimut - Direção na bússula - - - Mark - Markieren - Marca - Отметка - Oznacz - Marque - Označit - Jelölés - Marca - Marca - - - Waypoints - Puntos de ruta - Wegpunkte - Машрутные точки - Waypointy - Punkty trasy - Point de passage - Útvonalpontok - waypoints - Waypoints - - - Connect To - Conectar a - Подключиться к - Verbinde zu - Připojit k - Podłącz do - Connecter - Csatlakozás - Collega a - Conectar à - - - Settings - Paramètres - Einstellungen - Configuración - Настройки - Nastavení - Ustawienia - Beállítások - Impostaizoni - Opções - - - SetWP - WP setzen - Fijar PR - Установить МТ - Nastavit WP - UstawPT - Définir point de passage - UP Beállítása - Definisci WayPoints - Definir WP - - - Add - Hinzufügen - Añadir - Добавить - Přidat - Dodaj - Ajouter - Hozzáadás - Aggiungi - Adicionar - - - Delete - Smazat - Supprimer - Löschen - Elimina - Usuń - Excluir - Удалить - Borrar - Törlés - - - Toggle MicroDAGR Display Mode - MicoDAGR Anzeigemodus wechseln - Cambiar modo de pantalla del MicroDAGR - Сменить режим показа MicroDAGR - Przełącz GUI MicroDAGR - Basculer le mode d'affichage MicroDAGR - Přepnout zobrazení MircroDAGRu - MicroDAGR kijelzési mód váltása - Alterna modalità display MicroDAGR - Alternar Modo de Display do MicroDAGR - - - Show MicoDAGR - Zeige MicroDAGR - Mostrar MicroDAGR - Показать MicroDAGR - Ukázat MicroDAGR - Pokaż MicroDAGR - Afficher MicroDAGR - MicroDAGR mutatása - Mostra MicroDAGR - Mostrar MicroDAGR - - - Configure MicroDAGR - Konfiguriere MicroDAGR - Configurar MicroDAGR - Настроить MicroDAGR - Konfigurovat MicroDAGR - Otwórz MicroDAGR - Configurer MicroDAGR - MicroDAGR konfigurálása - ConfiguraMicroDAGR - Configurar MicroDAGR - - - Close MicroDAGR - Schließe MicroDAGR - Cerrar MicroDAGR - Закрыть MicroDAGR - Zavřít MicroDAGR - Zamknij MicroDAGR - Fermer MicroDAGR - MicroDAGR elrejtése - Chiudi MicroDAGR - Fechar MicroDAGR - - - MicroDAGR Map Fill - Wypełnienie mapy MicroDAGR - Relleno del mapa MicroDAGR - MicroDAGR - Vyplnění mapy - MicroDAGR-Kartenfüllung - Preenchimento de mapa do MicroDAGR - MicroDAGR térképkitöltés - - - MicroDAGR Map Fill - Wypełnienie mapy MicroDAGR - Relleno del mapa MicroDAGR - MicroDAGR - Vyplnění mapy - MicroDAGR-Kartenfüllung - Preenchimento de mapa do MicroDAGR - MicroDAGR térképkitöltés - - - How much map data is filled on MicroDAGR's - Jak duża część informacji mapy jest załadowana do MicroDAGR? - Cuanta información está disponible en el mapa del MicroDAG - Wie viel Daten auf einem MicroDAGR zu sehen sind - Kolik informací je načteno do MicroDAGR? - Quanta informação é preenchida no mapa do MicroDAGR - Mennyi térképadatot tartalmaz a MicroDAGR - - - Full Satellite + Buildings - Pełna satelitarna + budynki - Satelite completo + Edificios - Satellitenbild + Gebäude - Satelit + Budovy - Satélite completo + Edifícios - Teljes műholdas + épületek - - - Topographical + Roads - Topograficzna + drogi - Topografico + Carreteras - Topografisch + Straßen - Topografické + Cesty - Topográfico + Estradas - Topográfia + utak - - - None (Cannot use map view) - Żadna (wyłącza ekran mapy) - Nada (No se puede el mapa) - Keine (kann keine Kartenansicht verwenden) - Žádný (Nelze použít zobrazení mapy) - Nada (Não pode usar a tela de mapa) - Semmi (nem használható a térképnézet) - - - Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo - Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo - Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo - Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo - Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo - Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo - Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. <br />Forrás: microDAGR.pbo - - + + + + + MicroDAGR GPS + MicroDAGR GPS + GPS MicroDAGR + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + GPS MicroDAGR + GPS MicroDAGR + + + MicroDAGR advanced GPS receiver + MicroDAGR - Fortgeschrittener GPS-Empfänger + Receptor avanzado GPS MicroDAGR + Многофункциональный GPS-приёмник. + Zaawansowany odbiornik GPS MicroDAGR + Récepteur GPS MicroDAGR + MicroDAGR pokročílá GPS příjímač + MicroDAGR fejlett GPS vevőegység + Ricevitore GPS avanzato MicroDAGR + Recepitor GPS avançado MicroDAGR + + + Angular Unit: + Unidad angular: + Угловые единицы: + Jednostka kątowa: + Unité angulaire + Winkeleinheit: + Úhlová jednotka: + Szögmértékegység: + Unità angolare: + Unidade Angular: + + + Mils + Mil + Mils + Тысячные + Tysiączne + Mils + Mils + Mil + Mils + Mils: + + + Show Waypoints On Map: + Zeige Wegpunkte auf Karte + Mostrar puntos de ruta en el mapa: + Показывать маршрутные точки на карте: + Pokaż PT na mapie: + Montrer points de passage sur la carte + Ukázat waypointy na mapě: + Útvonalpontok mutatása a térképen: + Mostra waypoint sulla mappa: + Mostrar Waypoints no mapa: + + + Degrees + Grad + Grados + Градусы + Stopnie + Degrés + Stupně + Fok + Gradi + Graus + + + On + Zapnuto + Allumé + Ein + Acceso + Wł. + Ativar + Вкл. + Encendido + Be + + + Off + Vypnuto + Eteint + Aus + Spento + Wył. + Desativar + Выкл. + Apagado + Ki + + + Enter Grid Cords: + Introducir coordenadas de cuadrícula: + Введите сеточные координаты: + Wprowadź współrzędne: + Entrer coordonnées + Koordinaten eingeben: + Napiš souřadnice: + Add meg a rácskoordinátákat: + Introduci griglia coordinate: + Digite as Ccords. do Grid + + + Name of [%1] + Name von [%1] + Nombre de [%1] + Название [%1] + Nazwa [%1] + Nom de %1 + Název [%1] + [%1] neve + Nome di [%1] + Nome do [%1] + + + MGRS-New + UTMREF-NEU + Nuevo-MGRS + MGRS-Новая + MGRS-Nowy + Info-MGRS + MGRS-Nový + MGRS-új + Nuovo MGRS + MGRS-Novo + + + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + + + Range: + Distancia: + Distanz: + Дистанция: + Dystans: + Distance: + Vzdálenost: + Távolság: + Distanza: + Distância: + + + Compass Direction + Kompass Richtung + Dirección de la brújula + Азимут + Azymut + Azimut + Azimut: + Irányszög + Azimut + Direção na bússula + + + Mark + Markieren + Marca + Отметка + Oznacz + Marque + Označit + Jelölés + Marca + Marca + + + Waypoints + Puntos de ruta + Wegpunkte + Машрутные точки + Waypointy + Punkty trasy + Point de passage + Útvonalpontok + waypoints + Waypoints + + + Connect To + Conectar a + Подключиться к + Verbinde zu + Připojit k + Podłącz do + Connecter + Csatlakozás + Collega a + Conectar à + + + Settings + Paramètres + Einstellungen + Configuración + Настройки + Nastavení + Ustawienia + Beállítások + Impostaizoni + Opções + + + SetWP + WP setzen + Fijar PR + Установить МТ + Nastavit WP + UstawPT + Définir point de passage + UP Beállítása + Definisci WayPoints + Definir WP + + + Add + Hinzufügen + Añadir + Добавить + Přidat + Dodaj + Ajouter + Hozzáadás + Aggiungi + Adicionar + + + Delete + Smazat + Supprimer + Löschen + Elimina + Usuń + Excluir + Удалить + Borrar + Törlés + + + Toggle MicroDAGR Display Mode + MicoDAGR Anzeigemodus wechseln + Cambiar modo de pantalla del MicroDAGR + Сменить режим показа MicroDAGR + Przełącz GUI MicroDAGR + Basculer le mode d'affichage MicroDAGR + Přepnout zobrazení MircroDAGRu + MicroDAGR kijelzési mód váltása + Alterna modalità display MicroDAGR + Alternar Modo de Display do MicroDAGR + + + Show MicoDAGR + Zeige MicroDAGR + Mostrar MicroDAGR + Показать MicroDAGR + Ukázat MicroDAGR + Pokaż MicroDAGR + Afficher MicroDAGR + MicroDAGR mutatása + Mostra MicroDAGR + Mostrar MicroDAGR + + + Configure MicroDAGR + Konfiguriere MicroDAGR + Configurar MicroDAGR + Настроить MicroDAGR + Konfigurovat MicroDAGR + Otwórz MicroDAGR + Configurer MicroDAGR + MicroDAGR konfigurálása + ConfiguraMicroDAGR + Configurar MicroDAGR + + + Close MicroDAGR + Schließe MicroDAGR + Cerrar MicroDAGR + Закрыть MicroDAGR + Zavřít MicroDAGR + Zamknij MicroDAGR + Fermer MicroDAGR + MicroDAGR elrejtése + Chiudi MicroDAGR + Fechar MicroDAGR + + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + Relleno del mapa MicroDAGR + MicroDAGR - Vyplnění mapy + MicroDAGR-Kartenfüllung + Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés + Заполнение карты MicroDAGR + + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + Relleno del mapa MicroDAGR + MicroDAGR - Vyplnění mapy + MicroDAGR-Kartenfüllung + Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés + Заполнение карты MicroDAGR + + + How much map data is filled on MicroDAGR's + Jak duża część informacji mapy jest załadowana do MicroDAGR? + Cuanta información está disponible en el mapa del MicroDAG + Wie viel Daten auf einem MicroDAGR zu sehen sind + Kolik informací je načteno do MicroDAGR? + Quanta informação é preenchida no mapa do MicroDAGR + Mennyi térképadatot tartalmaz a MicroDAGR + Сколько данных должно отображаться на карте MicroDAGR + + + Full Satellite + Buildings + Pełna satelitarna + budynki + Satelite completo + Edificios + Satellitenbild + Gebäude + Satelit + Budovy + Satélite completo + Edifícios + Teljes műholdas + épületek + Спутник + Здания + + + Topographical + Roads + Topograficzna + drogi + Topografico + Carreteras + Topografisch + Straßen + Topografické + Cesty + Topográfico + Estradas + Topográfia + utak + Топография + Дороги + + + None (Cannot use map view) + Żadna (wyłącza ekran mapy) + Nada (No se puede el mapa) + Keine (kann keine Kartenansicht verwenden) + Žádný (Nelze použít zobrazení mapy) + Nada (Não pode usar a tela de mapa) + Semmi (nem használható a térképnézet) + Не показывать (запрещает использовать режим карты) + + + Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo + Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo + Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo + Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo + Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo + Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo + Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. <br />Forrás: microDAGR.pbo + Контролирует, сколько данных должно отображаться на карте устройств MicroDAGR. Ограничивает объем отображаемых данных на миникарте.<br />Источник: microDAGR.pbo + + \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 2a0544fab7..0e36b25905 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,128 +1,131 @@ - - - - - Advanced Missile Guidance - Guiado Avanzado de Misiles - Guidage avancé de missile - Zaawansowane naprowadzanie rakiet - Erweitertes Raketenlenksystem - Pokročilé řízení střel - Guida missili avanzata - Avançado Missile Guidance - Fejlett rakétairányító - Продвинутое наведение ракет - - - Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. - Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. - Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. - Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. - El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. - Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. - Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. - A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. - Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. - Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. - - - Hydra-70 DAGR Missile - Misil Hydra-70 DAGR - Hydra-70 DAGR - Hydra-70 DAGR - Hydra-70 DAGR Rackete - Hydra-70 DAGR - Missile Hydra-70 DAGR - Míssil Hydra-70 DAGR - Hydra-70 DAGR rakéta - Hydra-70 DAGR - - - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - - - Hydra-70 DAGR Laser Guided Missile - Misil guiado por láser Hydra-70 DAGR - Missile à guidage laser Hydra-70 DAGR - 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 - Míssil guiado a laser Hydra-70 DAGR - Hydra-70 DAGR lézer-irányított rakéta - Управляемая ракета лазерного наведения Hydra-70 DAGR - - - Hellfire II AGM-114K Missile - Misil Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Missile Hellfire II AGM-114K - Míssil Hellfire II AGM-114K - Hellfire II AGM-114K rakéta - Hellfire II AGM-114K - - - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - - - Hellfire II AGM-114K Laser Guided Missile - Misil guiado por láser Hellfire II AGM-114K - Missile à guidage laser Hellfire II AGM-114K - 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 - Míssil guiado a laser Hellfire II AGM-114K - Hellfire II AGM-114K lézer-irányított rakéta - Управляемая ракета лазерного наведения Hellfire II AGM-114K - - - Off - Wyłącz - Desactivado - Aus - Vypnout - Desligado - Ki - - - Player Only - Tylko gracz - Solo jugador - Nur Spieler - Pouze hráči - Somente jogador - Csak játékosok - - - Player and AI - Gracz oraz AI - Jugador e IA - Spieler und KI - Hráči a AI - Jogador e IA - Játékosok és AI - - + + + + + Advanced Missile Guidance + Guiado Avanzado de Misiles + Guidage avancé de missile + Zaawansowane naprowadzanie rakiet + Erweitertes Raketenlenksystem + Pokročilé řízení střel + Guida missili avanzata + Avançado Missile Guidance + Fejlett rakétairányító + Продвинутое наведение ракет + + + Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. + Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. + Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. + Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. + El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. + Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. + Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. + A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. + Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. + Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. + + + Hydra-70 DAGR Missile + Misil Hydra-70 DAGR + Hydra-70 DAGR + Hydra-70 DAGR + Hydra-70 DAGR Rackete + Hydra-70 DAGR + Missile Hydra-70 DAGR + Míssil Hydra-70 DAGR + Hydra-70 DAGR rakéta + Hydra-70 DAGR + + + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + + + Hydra-70 DAGR Laser Guided Missile + Misil guiado por láser Hydra-70 DAGR + Missile à guidage laser Hydra-70 DAGR + 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 + Míssil guiado a laser Hydra-70 DAGR + Hydra-70 DAGR lézer-irányított rakéta + Управляемая ракета лазерного наведения Hydra-70 DAGR + + + Hellfire II AGM-114K Missile + Misil Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Missile Hellfire II AGM-114K + Míssil Hellfire II AGM-114K + Hellfire II AGM-114K rakéta + Hellfire II AGM-114K + + + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + + + Hellfire II AGM-114K Laser Guided Missile + Misil guiado por láser Hellfire II AGM-114K + Missile à guidage laser Hellfire II AGM-114K + 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 + Míssil guiado a laser Hellfire II AGM-114K + Hellfire II AGM-114K lézer-irányított rakéta + Управляемая ракета лазерного наведения Hellfire II AGM-114K + + + Off + Wyłącz + Desactivado + Aus + Vypnout + Desligado + Ki + Выкл. + + + Player Only + Tylko gracz + Solo jugador + Nur Spieler + Pouze hráči + Somente jogador + Csak játékosok + Только игрок + + + Player and AI + Gracz oraz AI + Jugador e IA + Spieler und KI + Hráči a AI + Jogador e IA + Játékosok és AI + Игрок и боты + + \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 6085e00b32..e3860b177b 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,157 +1,174 @@ - - - - - ACE Mission Modules - ACE Moduły misji - Módulo de misiones ACE - ACE-Missionsmodule - ACE Moduly mise - Módulo de missões ACE - ACE küldetési modulok - - - Ambiance Sounds [ACE] - Dźwięki [ACE] - [ACE] Sonidos ambiente - Umgebungsgeräusche [ACE] - Zvuky prostředí [ACE] - [ACE] Sons ambientes - Ambiens hangok [ACE] - - - Sounds - Dźwięki - Sonidos - Sounds - Zvuky - Sons - Hangok - - - Class names of the ambiance sounds to be played. Seperated by ',' - Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' - Class names de los sonidos ambiente que se reproducirán. Separados por ',' - Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," - Class names zvuků prostředí, které budou přehrány. Oddělené ',' - Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por "," - - - Minimal Distance - Minimalny dystans - Distancia mínima - Mindestabstand - Minimální vzdálenost - Distância mínima - Minimális távolság - - - Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) - Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi - Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos - Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest - Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. - Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. - Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között - - - Maximum Distance - Maksymalny dystans - Distancia máxima - Maximalabstand - Maximální vzdálenost - Distância máxima - Maximális távolság - - - Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) - Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi - Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos - Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest - Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. - Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. - Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között - - - Minimal Delay - Minimalne opóźnienie - Retraso mínimo - Minimale Verzögerung - Minimální prodleva - Atraso mínimo - Minimum késleltetés - - - Minimal delay between sounds played - Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami - Retraso mínimo entre los sonidos reproducidos - Minimale Verzögerung zwischen abzuspielenden Sounds - Minimální prodleva mezi přehrávanými zvuky - Atraso mínimo entre os sons reproduzidos - Minimum késleltetés a lejátszott hangok között - - - Maximum Delay - Maksymalne opóźnienie - Retraso máximo - Maximale Verzögerung - Maximální prodleva - Atraso máximo - Maximum késleltetés - - - Maximum delay between sounds played - Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami - Retraso máximo entre los sonidos reproducidos - Maximale Verzögerung zwischen abzuspielenden Sounds - Maximální prodleva mezi přehrávanými zvuky - Atraso máximo entre os sons reproduzidos - Maximum késleltetés a lejátszott hangok között - - - Follow Players - Podążaj za graczami - Seguir jugadores - Spielern folgen - Následovat hráče - Seguir jogadores - Játékosok követése - - - Follow players. If set to false, loop will play sounds only nearby logic position. - Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki. - Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica. - Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. - Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. - Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. - Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. - - - Volume - Głośność - Volumen - Lautstärke - Hlasitost - Volume - Hangerő - - - The volume of the sounds played - Głośność odtwarzanych dźwięków - Volumen de los sonidos reproducidos - Lautstärke der abzuspielenden Sounds - Hlasitost přehrávaného zvuku - O volume em que os sons serão reproduzidos - A lejátszott hangok hangereje - - - Ambiance sounds loop (synced across MP) - Pętla odtwarzania dzwięków (synchronizowana na MP) - Bucle de sonidos ambiente (sincronizados en MP) - Umgebungsgeräusch-Schleife (im MP synchronisiert) - Smyčka okkolního zvuku (synchronizováno v MP) - Loop de sons ambientes (sincronizados através do MP) - Ambiens hangok folyamatossága (MP alatt szinkronizálva) - - + + + + + ACE Mission Modules + ACE Moduły misji + Módulo de misiones ACE + ACE-Missionsmodule + ACE Moduly mise + Módulo de missões ACE + ACE küldetési modulok + Модули миссий ACE + + + Ambiance Sounds [ACE] + Dźwięki [ACE] + [ACE] Sonidos ambiente + Umgebungsgeräusche [ACE] + Zvuky prostředí [ACE] + [ACE] Sons ambientes + Ambiens hangok [ACE] + Звук окружения [ACE] + + + Sounds + Dźwięki + Sonidos + Sounds + Zvuky + Sons + Hangok + Звуки + + + Class names of the ambiance sounds to be played. Seperated by ',' + Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' + Class names de los sonidos ambiente que se reproducirán. Separados por ',' + Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," + Class names zvuků prostředí, které budou přehrány. Oddělené ',' + Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por "," + Имена классов звуков окружения, которые должны проигрываться. Разделенные ',' + + + Minimal Distance + Minimalny dystans + Distancia mínima + Mindestabstand + Minimální vzdálenost + Distância mínima + Minimális távolság + Минимальная дистанция + + + Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) + Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest + Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. + Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között + Используется для расчета случайной позиции и указывает минимальное расстояние между игроками и источниками звука + + + Maximum Distance + Maksymalny dystans + Distancia máxima + Maximalabstand + Maximální vzdálenost + Distância máxima + Maximális távolság + Максимальная дистанция + + + Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) + Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest + Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. + Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között + Используется для расчета случайной позиции и указывает максимальное расстояние между игроками и источниками звука + + + Minimal Delay + Minimalne opóźnienie + Retraso mínimo + Minimale Verzögerung + Minimální prodleva + Atraso mínimo + Minimum késleltetés + Минимальная задержка + + + Minimal delay between sounds played + Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Retraso mínimo entre los sonidos reproducidos + Minimale Verzögerung zwischen abzuspielenden Sounds + Minimální prodleva mezi přehrávanými zvuky + Atraso mínimo entre os sons reproduzidos + Minimum késleltetés a lejátszott hangok között + Минимальная задержка между воспроизведением звуков + + + Maximum Delay + Maksymalne opóźnienie + Retraso máximo + Maximale Verzögerung + Maximální prodleva + Atraso máximo + Maximum késleltetés + Максимальная задержка + + + Maximum delay between sounds played + Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Retraso máximo entre los sonidos reproducidos + Maximale Verzögerung zwischen abzuspielenden Sounds + Maximální prodleva mezi přehrávanými zvuky + Atraso máximo entre os sons reproduzidos + Maximum késleltetés a lejátszott hangok között + Максимальная задержка между воспроизведением звуков + + + Follow Players + Podążaj za graczami + Seguir jugadores + Spielern folgen + Následovat hráče + Seguir jogadores + Játékosok követése + Следовать за игроками + + + Follow players. If set to false, loop will play sounds only nearby logic position. + Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki. + Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica. + Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. + Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. + Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. + Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. + Следовать за игроками. Если установить в Ложь, звуки будут циклически проигрываться только около позиции Логики. + + + Volume + Głośność + Volumen + Lautstärke + Hlasitost + Volume + Hangerő + Громкость + + + The volume of the sounds played + Głośność odtwarzanych dźwięków + Volumen de los sonidos reproducidos + Lautstärke der abzuspielenden Sounds + Hlasitost přehrávaného zvuku + O volume em que os sons serão reproduzidos + A lejátszott hangok hangereje + Громкость воспроизводимых звуков + + + Ambiance sounds loop (synced across MP) + Pętla odtwarzania dzwięków (synchronizowana na MP) + Bucle de sonidos ambiente (sincronizados en MP) + Umgebungsgeräusch-Schleife (im MP synchronisiert) + Smyčka okkolního zvuku (synchronizováno v MP) + Loop de sons ambientes (sincronizados através do MP) + Ambiens hangok folyamatossága (MP alatt szinkronizálva) + Циклически воспроизодимые звуки окружения (синхронизируется по сети между игроками в мультиплеере) + + \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 394154a70b..976938d6d3 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,122 +1,130 @@ - - - - - 82mm Rangetable - 82mm Distanztabelle - Tabela strzelnicza 82mm - Table de tir 82mm - 82 мм Таблица дальностей и прицелов - Tabla de distancias de 82mm - 82mm hatótáv-tábla - Tabela de distâncias de para 82mm - 82mm Rangetable - Tavola di tiro 82mm - - - Range Table for the MK6 82mm Mortar - Distanztabelle für den Mk6 82mm Mortar - Tabela strzelnicza dla moździerza 82mm MK6 - Table de tir pour le mortier MK6 82mm - Таблица дальностей и прицелов для MK6 82 мм мортиры - Tabla de distancias para el mortero MK6 de 82mm - Hatótáv-tábla a MK6 82mm-es mozsárhoz - Tabela de distâncias para morteiro MK6 82mm - Rangetable pro MK6 82mm minomet - Tavola di tiro per il mortaio calibro 82mm MK6 - - - Open 82mm Rangetable - Öffne 82mm Distanztabelle - Otwórz tabelę strzelniczą 82mm - Ouvrir la table de tir 82mm - Открыть 82 мм Таблицу дальностей и прицелов - Abrir tabla de distancias de 82mm - 82mm hatótáv-tábla megnyitása - Abrir tabela de distâncias para 82mm - Otevřít 82mm Rangetable - Apri la tavola di tiro 82mm - - - Charge - Ladung - Charge - Ładunek - Зарядить - Carga - Töltés - Carregar - Nabít - Carica - - - MK6 Settings - Moździerz MK6 - Ustawienia - Ajustes MK6 - MK6-Einstellungen - MK6 - Nastavení - Ajustes do MK6 - MK6 beállítások - - - Air Resistance - Opór powietrza - Resistencia al aire - Luftwiderstand - Odpor vzduchu - Resistência do Ar - Légellenállás - - - For Player Shots, Model Air Resistance and Wind Effects - Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy - Para disparos del jugador, modelo de resistencia al aire y efectos de viento - Für Spielerschüsse, Luftwiderstand und Windeffekte - Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek - Para disparos do jogador, modelo de resistência de ar e efeitos de vento - Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás - - - Allow MK6 Computer - Komputer MK6 - Habilitar ordenador del MK6 - Erlaube MK6-Computer - MK6 - Povolit počítač - Permitir computador do MK6 - MK6 számítógép engedélyezése - - - Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) - Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) - Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) - Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) - Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) - Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) - A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) - - - Allow MK6 Compass - Kompas MK6 - Habilitar brujula del MK6 - Erlaube MK6-Kompass - MK6 - Povolit kompas - Permitir bússula do MK6 - MK6 iránytű engedélyezése - - - Show the MK6 Digital Compass - Pokaż kompas MK6 - Muestra la brujula digital en el MK6 - Zeige MK6-Digitaler-Kompass - MK6 - Zobrazit digitální kompas - Mostra a bússula digital do MK6 - Az MK6 digitális iránytű megjelenítése - - - Moduł ten pozwala dostosować ustawienia moździerza MK6. - Dieses Modul erlaubt das Einstellen des MK6-Mörsers. - Tento modul umožňuje nastavení minometu MK6. - Este módulo permite que você ajuste o morteiro MK6. - - + + + + + 82mm Rangetable + 82mm Distanztabelle + Tabela strzelnicza 82mm + Table de tir 82mm + 82 мм Таблица дальностей и прицелов + Tabla de distancias de 82mm + 82mm hatótáv-tábla + Tabela de distâncias de para 82mm + 82mm Rangetable + Tavola di tiro 82mm + + + Range Table for the MK6 82mm Mortar + Distanztabelle für den Mk6 82mm Mortar + Tabela strzelnicza dla moździerza 82mm MK6 + Table de tir pour le mortier MK6 82mm + Таблица дальностей и прицелов для MK6 82 мм мортиры + Tabla de distancias para el mortero MK6 de 82mm + Hatótáv-tábla a MK6 82mm-es mozsárhoz + Tabela de distâncias para morteiro MK6 82mm + Rangetable pro MK6 82mm minomet + Tavola di tiro per il mortaio calibro 82mm MK6 + + + Open 82mm Rangetable + Öffne 82mm Distanztabelle + Otwórz tabelę strzelniczą 82mm + Ouvrir la table de tir 82mm + Открыть 82 мм Таблицу дальностей и прицелов + Abrir tabla de distancias de 82mm + 82mm hatótáv-tábla megnyitása + Abrir tabela de distâncias para 82mm + Otevřít 82mm Rangetable + Apri la tavola di tiro 82mm + + + Charge + Ladung + Charge + Ładunek + Зарядить + Carga + Töltés + Carregar + Nabít + Carica + + + MK6 Settings + Moździerz MK6 - Ustawienia + Ajustes MK6 + MK6-Einstellungen + MK6 - Nastavení + Ajustes do MK6 + MK6 beállítások + Настройки MK6 + + + Air Resistance + Opór powietrza + Resistencia al aire + Luftwiderstand + Odpor vzduchu + Resistência do Ar + Légellenállás + Сопротивление воздуха + + + For Player Shots, Model Air Resistance and Wind Effects + Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy + Para disparos del jugador, modelo de resistencia al aire y efectos de viento + Für Spielerschüsse, Luftwiderstand und Windeffekte + Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek + Para disparos do jogador, modelo de resistência de ar e efeitos de vento + Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás + Для выстрелов игрока. Моделирует сопротивление воздуха и эффект ветра + + + Allow MK6 Computer + Komputer MK6 + Habilitar ordenador del MK6 + Erlaube MK6-Computer + MK6 - Povolit počítač + Permitir computador do MK6 + MK6 számítógép engedélyezése + Разрешить компьютер MK6 + + + Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) + Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) + Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) + Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) + Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) + Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) + A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) + Показывает компьютер и дальномер (это НУЖНО отключить, если вы включаете сопротивление воздуха) + + + Allow MK6 Compass + Kompas MK6 + Habilitar brujula del MK6 + Erlaube MK6-Kompass + MK6 - Povolit kompas + Permitir bússula do MK6 + MK6 iránytű engedélyezése + Разрешить компас MK6 + + + Show the MK6 Digital Compass + Pokaż kompas MK6 + Muestra la brujula digital en el MK6 + Zeige MK6-Digitaler-Kompass + MK6 - Zobrazit digitální kompas + Mostra a bússula digital do MK6 + Az MK6 digitális iránytű megjelenítése + Показывает цифровой компас MK6 + + + Moduł ten pozwala dostosować ustawienia moździerza MK6. + Dieses Modul erlaubt das Einstellen des MK6-Mörsers. + Tento modul umožňuje nastavení minometu MK6. + Este módulo permite que você ajuste o morteiro MK6. + Модуль настройки миномета MK6 + + \ No newline at end of file diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index 0de9ce7ff6..d98c3a712b 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -1,23 +1,25 @@ - - - - - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - - - Thermal imaging device - Wärmebildgerät - Monokular termowizyjny - Dispositivo de imagen térmica - Termální dalekohled - Dispositivo de imagem térmica - Hőleképező készülék - - + + + + + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + + + Thermal imaging device + Wärmebildgerät + Monokular termowizyjny + Dispositivo de imagen térmica + Termální dalekohled + Dispositivo de imagem térmica + Hőleképező készülék + Тепловизионный прибор + + \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index bf80457ab7..26db389ce5 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -1,328 +1,352 @@ - - - - - Show Names - Namen anzeigen - Mostrar nombres - Afficher noms - Zobrazit jména - Pokaż imiona - Nevek mutatása - Показать имена - Mostra i nomi - Mostrar nomes - - - Show player names - Spielernamen anzeigen - Mostrar nombres de jugadores - Pokaż imiona graczy - Afficher les nom des joueurs - Játékosnevek mutatása - Zobrazit jména hráčů - Mostrar nomes de jogadores - Mostra i nomi dei giocatori - Показывать имена игроков (включить имена) - - - Show player name only on cursor (requires player names) - Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) - Mostrar nombres de jugadores solo al apuntarles (requiere Mostrar nombres de jugadores) - Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen) - Noms uniquement sous le curseur (si noms affichés) - Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů) - Mostra i nomi solo se puntati (richiede mostra nomi abilitato) - Mostrar nome de jogador somente no cursor (requer nome de jogadores) - Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) - Показать имена игроков только под курсором (при включенных именах) - - - Show player name only on keypress (requires player names) - Spielernamen nur auf Tastendruck anzeigen (benötigt Spielernamen) - Mostrar nombres solo al pulsar la tecla(requiere Mostrar nombres de jugadores) - Noms uniquement sur pression de la touche (si noms affichés) - Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) - Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) - Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) - Показать имена игроков только по нажатию клавиши (при включенных именах) - Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) - Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) - - - Show player ranks (requires player names) - Spielerränge anzeigen (benötig Spielernamen) - Pokaż rangi graczy (wymagana opcja Pokaż imiona graczy) - Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores) - Grade des joueurs (si noms affichés) - Zobrazit hodnosti hráčů (vyžaduje jména hráčů) - Mostra i gradi (richiede mostra nomi abilitato) - Mostrar patente de jogadores (requer nome de jogadores) - Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) - Показывать звания игроков (при вкл. именах) - - - Show vehicle crew info - Afficher les informations de l'équipage - Fahrzeugbesatzung anzeigen - Mostrar tripulantes - Pokaż załogę pojazdu - Zobrazit info o posádce vozidla - Показывать информацию об экипаже - Jármű-legénység adatainak mutatása - Mostrar tripulantes - Mostra l'elenco del personale a bordo - - - Show name tags for AI units - Namen für KI Einheiten anzeigen - Mostrar etiquetas de nombre para unidades IA - Показывать имена ботов - Zobrazit jména AI - Wyświetl imiona jednostek AI - Afficher les noms des IA - Névcímkék mutatása MI-egységeknél - Mostra i nomi delle le unità AI - Mostrar nomes para unidades de IA - - - Show SoundWaves (requires player names) - Schallwellen anzeigen (benötigt Spielernamen) - Mostrar onda sonora (requiere Mostrar nombres de jugadores) - Индикатор разговора (при вкл. именах) - Zobrazit SoundWaves (vyžaduje jména hráčů) - Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) - Afficher "qui parle" (si noms affichés) - "Hanghullámok" mutatása (a nevek mutatása szükséges) - Mostra movimento audio (richiede mostra nomi abilitato) - Mostrar onda sonora (requer nome de jogadores) - - - Default Nametag Color (Non Group Members) - Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) - Цвет меток игроков (не членов групп) - Color de etiquetas de nombre por defecto (No miembros de grupo) - Domyślny kolor imion (członkowie spoza grupy) - Couleur d'affichage par défaut (si dans aucun groupe) - Standardní barva jmenovek (pro nečleny jednotky) - Alap névcímke-szín (csoporton kívüli személyek) - Colore dei nomi non appartenenti al gruppo - Cor padrão do nome (unidades fora do grupo) - - - Name Tags - Ustawienia imion - Etiquetas de nombre - Namensanzeigen - Jmenovky - Etiquetas de nome - Névcímkék - - - Player Names View Dist. - Zasięg imion graczy - Distancia de vision para nombres de jugadores - Spielernamen-Distanz - Vzdálenost zobrazení jména hráčů - Distância de visão dos nomes dos jogadores - Játékosok nevének látótávja - - - Distance in meters at which player names are shown. Default: 5 - Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 - Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 - Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 - Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 - Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 - Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 - - - Show name tags for AI? - Imiona AI - ¿Mostrar nombres para la IA? - Zeige Namensanzeigen für KI? - Zobrazit jmenovky pro AI? - Mostrar nomes para IA? - Névcímkék megjelenítése AI-nál? - - - Show the name and rank tags for friendly AI units? Default: Do not force - Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj - Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar - Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen - Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat - Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar - Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás - - - Force Hide - Wymuś ukrycie - Ocultar forzado - Verstecken erzwingen - Vynuceno skrýt - Ocultar forçado - Erőltetett rejtett - - - Force Show - Wymuś wyświetlanie - Mostrar forzado - Anzeigen erzwingen - Vynuceno zobrazit - Mostrar forçado - Erőltetett látható - - - Show crew info? - Pokaż załogę - ¿Mostrar información de la tripulación? - Zeige Besatzungsinfo? - Zobrazit informace o posádce? - Mostrar informação de tripulação? - Legénységi adatok megjelenítése? - - - Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force - Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj - Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar - Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. - Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat - Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. - A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás - - - Show for Vehicles - Pokaż dla pojazdów - Mostrar para vehiculos - Zeige bei Fahrzeugen - Zobrazit pro vozidla - Mostrar para veículos - Mutatás járműveknél - - - Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No - Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie - Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No - Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein - Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne - Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não - - - This module allows you to customize settings and range of Name Tags. - Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. - Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. - Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. - Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. - Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. - Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. - - - Only on Cursor - Tylko pod kursorem - Solo cursor - Nur bei Maus - Pouze na kurzor - Somente no cursor - Csak kurzorra - - - Only on Keypress - Tylko po wciśnięciu klawisza - Solo al pulsar tecla - Nur bei Tastendruck - Pouze na klávesu - Somente em tecla ativada - Csak gombnyomásra - - - Only on Cursor and Keypress - Tylko pod kursorem i po wciśnięciu klawisza - En cursor y al pulsar tecla - Nur Maus und Tastendruck - Pouze na kurzor a klávesu - Somente em cursor ou tecla ativada - Csak kurzorra és gombnyomásra - - - Force Show Only on Cursor - Wymuś pod kursorem - Forzar mostrar solo en el cursor - Vynuceno zobrazit pouze na kurzor - Erzwinge nur mit Mauszeiger anzuzeigen - Forçar mostrar somente no cursor - Erőltetett látható, csak kurzorra - - - Force Show Only on Keypress - Wymuś po wciśnięciu klawisza - Forzar mostrar solo al pulsar tecla - Vynuceno zobrazit pouze na klávesu - Erzwinge nur mit Tastendruck anzuzeigen - Forçar somente mostrar em tecla ativada - Erőltetett látható, csak gombnyomásra - - - Force Show Only on Cursor and Keypress - Wymuś pod kursorem i po wciśnięciu klawisza - Forzar mostrar en el cursor y al pulsar tecla - Vynuceno zobrazit pouze na kurzor a klávesu - Erzwinge nur mit Mauszeiger und Tastendruck anzuzeigen - Forçar mostrar somente em cursor e tecla ativada - Erőltetett látható, csak kurzorra és gombnyomásra - - - Use Nametag settings - Użyj ustawień imion - Usar ajustes de etiquetas de nombre - Verwende Namenanzeigen - Použít nastavení jmenovky - Usar ajustes de etiquetas de nome - Névcímkék beállításának használata - - - Always Show All - Zawsze pokazuj wszystkie - Mostrar siempre todo - Immer alle zeigen - Vždy zobrazit vše - Sempre mostrar tudo - Mindig minden mutatása - - - Show player names and set their activation. Default: Enabled - Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. - Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado - Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno - Erlaubt das Anzeigen von Spielernamen und stellt ein, ob sie standardmäßig aktiviert oder deaktiviert sind. Standard: aktiviert - Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado - Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve - - - Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. - Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. - Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. - Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. - Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. - Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. - Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. - - - Nametags Size - Rozmiar imion - Tamaño de las Etiquetas de nombre - Velikost jmenovky - Namensschildgröße - Tamanho das etiquetas de nome - Névcímkék mérete - - - Text and Icon Size Scaling - Skalowanie tekstu oraz ikon - Escala del texto y el icono - Velikost textu a ikon - Text- und Symbolgrößen - Escala de tamanho dos ícones e textos - Szöveg és ikon méretének skálázása - - - + + + + + Show Names + Namen anzeigen + Mostrar nombres + Afficher noms + Zobrazit jména + Pokaż imiona + Nevek mutatása + Показать имена + Mostra i nomi + Mostrar nomes + + + Show player names + Spielernamen anzeigen + Mostrar nombres de jugadores + Pokaż imiona graczy + Afficher les nom des joueurs + Játékosnevek mutatása + Zobrazit jména hráčů + Mostrar nomes de jogadores + Mostra i nomi dei giocatori + Показывать имена игроков (включить имена) + + + Show player name only on cursor (requires player names) + Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) + Mostrar nombres de jugadores solo al apuntarles (requiere Mostrar nombres de jugadores) + Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen) + Noms uniquement sous le curseur (si noms affichés) + Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů) + Mostra i nomi solo se puntati (richiede mostra nomi abilitato) + Mostrar nome de jogador somente no cursor (requer nome de jogadores) + Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) + Показать имена игроков только под курсором (при включенных именах) + + + Show player name only on keypress (requires player names) + Spielernamen nur auf Tastendruck anzeigen (benötigt Spielernamen) + Mostrar nombres solo al pulsar la tecla(requiere Mostrar nombres de jugadores) + Noms uniquement sur pression de la touche (si noms affichés) + Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) + Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) + Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) + Показать имена игроков только по нажатию клавиши (при включенных именах) + Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) + Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) + + + Show player ranks (requires player names) + Spielerränge anzeigen (benötig Spielernamen) + Pokaż rangi graczy (wymagana opcja Pokaż imiona graczy) + Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores) + Grade des joueurs (si noms affichés) + Zobrazit hodnosti hráčů (vyžaduje jména hráčů) + Mostra i gradi (richiede mostra nomi abilitato) + Mostrar patente de jogadores (requer nome de jogadores) + Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) + Показывать звания игроков (при вкл. именах) + + + Show vehicle crew info + Afficher les informations de l'équipage + Fahrzeugbesatzung anzeigen + Mostrar tripulantes + Pokaż załogę pojazdu + Zobrazit info o posádce vozidla + Показывать информацию об экипаже + Jármű-legénység adatainak mutatása + Mostrar tripulantes + Mostra l'elenco del personale a bordo + + + Show name tags for AI units + Namen für KI Einheiten anzeigen + Mostrar etiquetas de nombre para unidades IA + Показывать имена ботов + Zobrazit jména AI + Wyświetl imiona jednostek AI + Afficher les noms des IA + Névcímkék mutatása MI-egységeknél + Mostra i nomi delle le unità AI + Mostrar nomes para unidades de IA + + + Show SoundWaves (requires player names) + Schallwellen anzeigen (benötigt Spielernamen) + Mostrar onda sonora (requiere Mostrar nombres de jugadores) + Индикатор разговора (при вкл. именах) + Zobrazit SoundWaves (vyžaduje jména hráčů) + Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) + Afficher "qui parle" (si noms affichés) + "Hanghullámok" mutatása (a nevek mutatása szükséges) + Mostra movimento audio (richiede mostra nomi abilitato) + Mostrar onda sonora (requer nome de jogadores) + + + Default Nametag Color (Non Group Members) + Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) + Цвет меток игроков (не членов групп) + Color de etiquetas de nombre por defecto (No miembros de grupo) + Domyślny kolor imion (członkowie spoza grupy) + Couleur d'affichage par défaut (si dans aucun groupe) + Standardní barva jmenovek (pro nečleny jednotky) + Alap névcímke-szín (csoporton kívüli személyek) + Colore dei nomi non appartenenti al gruppo + Cor padrão do nome (unidades fora do grupo) + + + Name Tags + Ustawienia imion + Etiquetas de nombre + Namensanzeigen + Jmenovky + Etiquetas de nome + Névcímkék + Имена игроков + + + Player Names View Dist. + Zasięg imion graczy + Distancia de vision para nombres de jugadores + Spielernamen-Distanz + Vzdálenost zobrazení jména hráčů + Distância de visão dos nomes dos jogadores + Játékosok nevének látótávja + Дистанция отображения имен + + + Distance in meters at which player names are shown. Default: 5 + Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 + Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 + Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 + Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 + Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 + Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 + Дистанция в метрах, на которой отображаются имена игроков. По-умолчанию: 5 + + + Show name tags for AI? + Imiona AI + ¿Mostrar nombres para la IA? + Zeige Namensanzeigen für KI? + Zobrazit jmenovky pro AI? + Mostrar nomes para IA? + Névcímkék megjelenítése AI-nál? + Показывать имена ботов? + + + Show the name and rank tags for friendly AI units? Default: Do not force + Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj + Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar + Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen + Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat + Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar + Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás + Показывать имена и звания дружественных ботов? По-умолчанию: Не обязывать + + + Force Hide + Wymuś ukrycie + Ocultar forzado + Verstecken erzwingen + Vynuceno skrýt + Ocultar forçado + Erőltetett rejtett + Обязательно: Скрывать + + + Force Show + Wymuś wyświetlanie + Mostrar forzado + Anzeigen erzwingen + Vynuceno zobrazit + Mostrar forçado + Erőltetett látható + Обязательно: Показывать + + + Show crew info? + Pokaż załogę + ¿Mostrar información de la tripulación? + Zeige Besatzungsinfo? + Zobrazit informace o posádce? + Mostrar informação de tripulação? + Legénységi adatok megjelenítése? + Показывать экипаж? + + + Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force + Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj + Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar + Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. + Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat + Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. + A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás + Показывать информацию об экипаже техники, или по-умолчанию, позволяет игрокам выбрать свою настройку. По-умолчанию: Не обязывать + + + Show for Vehicles + Pokaż dla pojazdów + Mostrar para vehiculos + Zeige bei Fahrzeugen + Zobrazit pro vozidla + Mostrar para veículos + Mutatás járműveknél + Показывать для техники + + + Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No + Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie + Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No + Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein + Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne + Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não + Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет + + + This module allows you to customize settings and range of Name Tags. + Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. + Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. + Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. + Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. + Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. + Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. + Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. + + + Only on Cursor + Tylko pod kursorem + Solo cursor + Nur bei Maus + Pouze na kurzor + Somente no cursor + Csak kurzorra + Только под курсором + + + Only on Keypress + Tylko po wciśnięciu klawisza + Solo al pulsar tecla + Nur bei Tastendruck + Pouze na klávesu + Somente em tecla ativada + Csak gombnyomásra + Только по нажатию клавиши + + + Only on Cursor and Keypress + Tylko pod kursorem i po wciśnięciu klawisza + En cursor y al pulsar tecla + Nur Maus und Tastendruck + Pouze na kurzor a klávesu + Somente em cursor ou tecla ativada + Csak kurzorra és gombnyomásra + Под курсором или по нажатию клавиши + + + Force Show Only on Cursor + Wymuś pod kursorem + Forzar mostrar solo en el cursor + Vynuceno zobrazit pouze na kurzor + Erzwinge nur mit Mauszeiger anzuzeigen + Forçar mostrar somente no cursor + Erőltetett látható, csak kurzorra + Обязательно: Только под курсором + + + Force Show Only on Keypress + Wymuś po wciśnięciu klawisza + Forzar mostrar solo al pulsar tecla + Vynuceno zobrazit pouze na klávesu + Erzwinge nur mit Tastendruck anzuzeigen + Forçar somente mostrar em tecla ativada + Erőltetett látható, csak gombnyomásra + Обязательно: Только по нажатию клавиши + + + Force Show Only on Cursor and Keypress + Wymuś pod kursorem i po wciśnięciu klawisza + Forzar mostrar en el cursor y al pulsar tecla + Vynuceno zobrazit pouze na kurzor a klávesu + Erzwinge nur mit Mauszeiger und Tastendruck anzuzeigen + Forçar mostrar somente em cursor e tecla ativada + Erőltetett látható, csak kurzorra és gombnyomásra + Обязательно: Под курсором или по нажатию клавиши + + + Use Nametag settings + Użyj ustawień imion + Usar ajustes de etiquetas de nombre + Verwende Namenanzeigen + Použít nastavení jmenovky + Usar ajustes de etiquetas de nome + Névcímkék beállításának használata + Так же, как имена + + + Always Show All + Zawsze pokazuj wszystkie + Mostrar siempre todo + Immer alle zeigen + Vždy zobrazit vše + Sempre mostrar tudo + Mindig minden mutatása + Всегда показывать + + + Show player names and set their activation. Default: Enabled + Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. + Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado + Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno + Erlaubt das Anzeigen von Spielernamen und stellt ein, ob sie standardmäßig aktiviert oder deaktiviert sind. Standard: aktiviert + Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado + Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve + Показывать имена игроков и установить их активацию. По-умолчанию: Включено + + + Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. + Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. + Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. + Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. + Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. + Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. + Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. + Эффект звуковой волны над головами говорящих игроков при удерживании кнопки push-to-talk. Эта опация работает также с рациями TFAR и ACRE2. + + + Nametags Size + Rozmiar imion + Tamaño de las Etiquetas de nombre + Velikost jmenovky + Namensschildgröße + Tamanho das etiquetas de nome + Névcímkék mérete + Размер имен игроков + + + Text and Icon Size Scaling + Skalowanie tekstu oraz ikon + Escala del texto y el icono + Velikost textu a ikon + Text- und Symbolgrößen + Escala de tamanho dos ícones e textos + Szöveg és ikon méretének skálázása + Масштабирование размера текста и иконок + + + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 07975fcb0a..6387cbf13a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,374 +1,393 @@ - - - - - ACE Options - ACE-Optionen - Opciones ACE - Ustawienia ACE - ACE Nastavení - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - Fix Animation - Behebe Animation - Arreglar animación - Фикс анимации - Opravit animace - Napraw animację - Corriger animation - Animációk kijavítása - Fixa l'animazione - Arrumar Animação - - - Reset All - Alles zurücksetzen - Reiniciar todo - Полный сброс - Vyresetovat vše - Resetuj wszystko - Défaut - Minden visszaállítása - Resetta tutto - Resetar Tudo - - - Colors - Couleurs - Farben - Colores - Цвета - Barvy - Kolory - Színek - Colori - Cores - - - Options - Optionen - Opciones - Opcje - Nastavení - Options - Настройки - Opções - Beállítások - Opzioni - - - Values - Valores - Значения - Hodnoty - Wartości - Valeurs - Werte - Értékek - Valori - Valores - - - Setting: - Nastavení: - Einstellung: - Установки: - Ajuste: - Ustaw: - Paramètres - Opció: - Parametri: - Opção: - - - Export - Exportieren - Exportar - Экспорт - Exportovat - Eksport - Exporter - Exportálás - Esporta - Exportar - - - Open Export Menu - Öffne Exportmenü - Abrir menú de exportación - Открыть меню экспорта - Otevřít exportovací menu - Eksport ustawień - Ouvrir le menu d'exportation - Exportálási menü megnyitása - Apri menù esportazione - Abrir menu de exportação - - - String input. - Zeichenketteneingabe - Introducir cadena de texto. - Строчный ввод. - Wpisywanie tekstu. - Vkládání textu. - Entrée - String bevitel. - Stringa di unput. - Input de String - - - Array. Seperate elements by using ,. - Array. Teile unterschiedliche Elemente mit ,. - Matriz. Separa elementos usando ,. - Массив. Разделяйте элемены, используя запятую. - Tablica. Oddziel elementy używając ,. - Tableau. Séparation par ,. - Tabulka. Odděl elementy použitím ,. - Array. Válasszad el az elemeket vesszővel. - Array. Separa gli elementi usando ,. - Vetor. Separe elementos usando *,*. - - - Number - Zahl - Número - Число - Číslo - Cyfra - Nombre - Szám - Numero - Número - - - Uknown input type - Unbekannter Eingabetyp - Tipo de entrada desconocida - Неизвестный тип ввода - Neznámý vstup - Nieznany rodzaj danych - Type d'entrée inconnue - Ismeretlen beviteli típus - Input inserito sconosciuto - Tipo desonhecido de input - - - Save input - Speichere Eingabe - Guardar entrada - Сохранить ввод - Uložit vstup - Zapisz dane - Sauvegarder - Bevitel elmentése - Salva input - Salvar input - - - Include Client Settings - Schließe Client-Einstellungen ein - Incluir configuración de cliente - Включить настройки клиента - Zahrnout nastavení klienta - Zaw. ustaw. klienta - Inclure paramètres client - Kliens-beállítások melléklése - Includi i parametri del client - Incluir opções do cliente - - - Exclude Client Settings - Schließe Client-Einstellungen aus - Excluir configuración de cliente - Исключить настройки клиента - Nezahrnout nastavení klienta - Wyklucz ustawienia klienta - Exclure paramètres client - Kliens-beállítások elhagyása - Escludi i parametri del client - Excluir opções do cliente - - - Settings exported to clipboard - Einstellungen in die Zwischenablage exportiert - Configuración exportada al portapapeles - Настройки экспортированы в буфер обмена - Nastevení exportována do schránky - Ustawienia wyeksportowano do schowka - Paramètres exportés dans le presse papier - Beállítások exportálva a vágólapba - Parametri esportati alla clipboard - Opções exportadas para o clipboard. - - - Option Menu UI Scaling - Menu option: taille de l'UI - Skalowanie UI menu ustawień - Měřítko UI v menu nastavení - Размер интерфейса меню настройки - Opción de escalado del menú IU - UI Skalierung - Beállításmenü kezelőfelületének skálázása - Escalar o menu de opções - Proporzioni della interfaccia utente - - - Allow Config Export [ACE] - Pozwól na eksport ustawień - [ACE] Permitir exportar configuración - Erlaube Config-Export [ACE] - Povolit export natavení [ACE] - [ACE] Permitir exportação de configurações - Konfiguráció-exportálás engedélyezése [ACE] - - - Allow - Zezwól - Permitir - Erlaube - Povolit - Permitir - Engedélyezés - - - Allow export of all settings to a server config formatted. - Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. - Permitir la exportación de todos los ajustes de configuración a un servidor con formato. - Erlaube alle Einstellungen in einer Server-Config zu exportieren. - Povolit exportovat všechna nastavení do formátu server configu. - Permitir exportação de todas as configurações para uma configuração formatada de servidor. - Az összes beállítás szerver-konfigurációba való exportálásának engedélyezése. - - - When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. - Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. - Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. - Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. - Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. - Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. - Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. - - - Hide - Ukryj - Ocultar - Verstecken - Skrýt - Ocultar - Elrejtés - - - Top right, downwards - Po prawej u góry, w dół - Arriba a la derecha, hacia abajo - Open rechts, nach unten - Vpravo nahoře, dolů - Superior direito, para baixo - Jobb felül, lefele - - - Top right, to the left - Po prawej u góry, do lewej - Arriba a la derecha, hacia la izquierda - Von rechts nach links - Vpravo nahoře, do leva - Superior direito, à esquerda - Jobb felül, balra - - - Top left, downwards - Po lewej u góry, w dół - Arriba a la izquierda, hacia abajo - Von links, nach unten - Vlevo nahoře, dolů - Superior esquerdo, para baixo - Bal felül, lefele - - - Top left, to the right - Po lewej u góry, do prawej - Arriba a la izquierda, hacia la derecha - Oben links nach rechts - Vlevo nahoře, do prava - Superior esquerdo, para a direita - Bal felül, jobbra - - - Top - Góra - Arriba - Oben - Nahoře - Acima - Fent - - - Bottom - Dół - Abajo - Unten - Dole - Abaixo - Alul - - - Debug To Clipboard - Debug do schowka - Depurar al portapapeles - Debug do schránky - Debug in die Zwischenablage - Depuração para área de transferência - Debug a vágólapra - - - Sends debug information to RPT and clipboard. - Wysyła informacje o debugowaniu do RPT oraz schowka. - Envía información de depuración al RPT y el portapapeles. - Pošle debug informace do RPT a schránky. - Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. - Envia informação de depuração para RPT e área de transferência. - Debug információt küld az RPT-be és a vágólapra. - - - Headbug Fix - Fix Headbug - "Fejhiba" fix - - - Resets your animation state. - Resetuje aktualną animację. - Visszaállítja az animációs állapotodat. - - - ACE News - Noticias ACE - ACE-Neuigkeiten - Notícias do ACE - Wiadomości ACE - ACE Novinky - ACE hírek - - - Show News on Main Menu - Mostrar noticias en el menú principal - Zeige Neuigkeiten im Hauptmenü - Mostrar notícias no menu principal - Pokazuj wiadomości ACE w menu głównym - Zobrazit novinky v hlavním menu - Hírek mutatása a főmenüben - - - All Categories - Wszystkie kategorie - - - Logistics - Logistyka - - - + + + + + ACE Options + ACE-Optionen + Opciones ACE + Ustawienia ACE + ACE Nastavení + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + Fix Animation + Behebe Animation + Arreglar animación + Фикс анимации + Opravit animace + Napraw animację + Corriger animation + Animációk kijavítása + Fixa l'animazione + Arrumar Animação + + + Reset All + Alles zurücksetzen + Reiniciar todo + Полный сброс + Vyresetovat vše + Resetuj wszystko + Défaut + Minden visszaállítása + Resetta tutto + Resetar Tudo + + + Colors + Couleurs + Farben + Colores + Цвета + Barvy + Kolory + Színek + Colori + Cores + + + Options + Optionen + Opciones + Opcje + Nastavení + Options + Настройки + Opções + Beállítások + Opzioni + + + Values + Valores + Значения + Hodnoty + Wartości + Valeurs + Werte + Értékek + Valori + Valores + + + Setting: + Nastavení: + Einstellung: + Установки: + Ajuste: + Ustaw: + Paramètres + Opció: + Parametri: + Opção: + + + Export + Exportieren + Exportar + Экспорт + Exportovat + Eksport + Exporter + Exportálás + Esporta + Exportar + + + Open Export Menu + Öffne Exportmenü + Abrir menú de exportación + Открыть меню экспорта + Otevřít exportovací menu + Eksport ustawień + Ouvrir le menu d'exportation + Exportálási menü megnyitása + Apri menù esportazione + Abrir menu de exportação + + + String input. + Zeichenketteneingabe + Introducir cadena de texto. + Строчный ввод. + Wpisywanie tekstu. + Vkládání textu. + Entrée + String bevitel. + Stringa di unput. + Input de String + + + Array. Seperate elements by using ,. + Array. Teile unterschiedliche Elemente mit ,. + Matriz. Separa elementos usando ,. + Массив. Разделяйте элемены, используя запятую. + Tablica. Oddziel elementy używając ,. + Tableau. Séparation par ,. + Tabulka. Odděl elementy použitím ,. + Array. Válasszad el az elemeket vesszővel. + Array. Separa gli elementi usando ,. + Vetor. Separe elementos usando *,*. + + + Number + Zahl + Número + Число + Číslo + Cyfra + Nombre + Szám + Numero + Número + + + Uknown input type + Unbekannter Eingabetyp + Tipo de entrada desconocida + Неизвестный тип ввода + Neznámý vstup + Nieznany rodzaj danych + Type d'entrée inconnue + Ismeretlen beviteli típus + Input inserito sconosciuto + Tipo desonhecido de input + + + Save input + Speichere Eingabe + Guardar entrada + Сохранить ввод + Uložit vstup + Zapisz dane + Sauvegarder + Bevitel elmentése + Salva input + Salvar input + + + Include Client Settings + Schließe Client-Einstellungen ein + Incluir configuración de cliente + Включить настройки клиента + Zahrnout nastavení klienta + Zaw. ustaw. klienta + Inclure paramètres client + Kliens-beállítások melléklése + Includi i parametri del client + Incluir opções do cliente + + + Exclude Client Settings + Schließe Client-Einstellungen aus + Excluir configuración de cliente + Исключить настройки клиента + Nezahrnout nastavení klienta + Wyklucz ustawienia klienta + Exclure paramètres client + Kliens-beállítások elhagyása + Escludi i parametri del client + Excluir opções do cliente + + + Settings exported to clipboard + Einstellungen in die Zwischenablage exportiert + Configuración exportada al portapapeles + Настройки экспортированы в буфер обмена + Nastevení exportována do schránky + Ustawienia wyeksportowano do schowka + Paramètres exportés dans le presse papier + Beállítások exportálva a vágólapba + Parametri esportati alla clipboard + Opções exportadas para o clipboard. + + + Option Menu UI Scaling + Menu option: taille de l'UI + Skalowanie UI menu ustawień + Měřítko UI v menu nastavení + Размер интерфейса меню настройки + Opción de escalado del menú IU + UI Skalierung + Beállításmenü kezelőfelületének skálázása + Escalar o menu de opções + Proporzioni della interfaccia utente + + + Allow Config Export [ACE] + Pozwól na eksport ustawień + [ACE] Permitir exportar configuración + Erlaube Config-Export [ACE] + Povolit export natavení [ACE] + [ACE] Permitir exportação de configurações + Konfiguráció-exportálás engedélyezése [ACE] + Разрешить экспорт настроек [ACE] + + + Allow + Zezwól + Permitir + Erlaube + Povolit + Permitir + Engedélyezés + Разрешить + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + Permitir la exportación de todos los ajustes de configuración a un servidor con formato. + Erlaube alle Einstellungen in einer Server-Config zu exportieren. + Povolit exportovat všechna nastavení do formátu server configu. + Permitir exportação de todas as configurações para uma configuração formatada de servidor. + Az összes beállítás szerver-konfigurációba való exportálásának engedélyezése. + Разрешить экспорт всех настроек в формате серверного конфига. + + + When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. + Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. + Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. + Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. + Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. + Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. + Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. + Когда разршен, у вас появляется доступ к модификации настроек и экспорту их в одинночном режиме. Нажатие на кнопку Экспорт поместит форматированные настройки в буфер обмена. + + + Hide + Ukryj + Ocultar + Verstecken + Skrýt + Ocultar + Elrejtés + Скрыть + + + Top right, downwards + Po prawej u góry, w dół + Arriba a la derecha, hacia abajo + Open rechts, nach unten + Vpravo nahoře, dolů + Superior direito, para baixo + Jobb felül, lefele + Справа - сверху вниз + + + Top right, to the left + Po prawej u góry, do lewej + Arriba a la derecha, hacia la izquierda + Von rechts nach links + Vpravo nahoře, do leva + Superior direito, à esquerda + Jobb felül, balra + Сверху - справа налево + + + Top left, downwards + Po lewej u góry, w dół + Arriba a la izquierda, hacia abajo + Von links, nach unten + Vlevo nahoře, dolů + Superior esquerdo, para baixo + Bal felül, lefele + Слева - сверху вниз + + + Top left, to the right + Po lewej u góry, do prawej + Arriba a la izquierda, hacia la derecha + Oben links nach rechts + Vlevo nahoře, do prava + Superior esquerdo, para a direita + Bal felül, jobbra + Сверху - слева направо + + + Top + Góra + Arriba + Oben + Nahoře + Acima + Fent + Сверху + + + Bottom + Dół + Abajo + Unten + Dole + Abaixo + Alul + Снизу + + + Debug To Clipboard + Debug do schowka + Depurar al portapapeles + Debug do schránky + Debug in die Zwischenablage + Depuração para área de transferência + Debug a vágólapra + Отладка в буфер обмена + + + Sends debug information to RPT and clipboard. + Wysyła informacje o debugowaniu do RPT oraz schowka. + Envía información de depuración al RPT y el portapapeles. + Pošle debug informace do RPT a schránky. + Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. + Envia informação de depuração para RPT e área de transferência. + Debug információt küld az RPT-be és a vágólapra. + Отправляет отладочную информацию в RPT и буфер обмена. + + + Headbug Fix + Fix Headbug + "Fejhiba" fix + Fix Headbug + + + Resets your animation state. + Resetuje aktualną animację. + Visszaállítja az animációs állapotodat. + Исправляет баг с зациклившейся анимацией. + + + ACE News + Noticias ACE + ACE-Neuigkeiten + Notícias do ACE + Wiadomości ACE + ACE Novinky + ACE hírek + Новости ACE + + + Show News on Main Menu + Mostrar noticias en el menú principal + Zeige Neuigkeiten im Hauptmenü + Mostrar notícias no menu principal + Pokazuj wiadomości ACE w menu głównym + Zobrazit novinky v hlavním menu + Hírek mutatása a főmenüben + Показывать новости в Главном Меню + + + All Categories + Wszystkie kategorie + Все категории + + + Logistics + Logistyka + Логистика + + + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index c21c55ba9e..7fe2f0adcb 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,65 +1,67 @@ - - - - - Altimeter - Altimètre - Höhenmesser - Výškoměr - Wysokościomierz - Altímetro - Magasságmérő - Высотомер - Altimetro - Altímetro - - - Altimeter Watch - Montre altimètre - Höhenmesser - Hodinky s výškoměrem - Zegarek z wysokościomierzem - Reloj altímetro - Magasságmérős karóra - Часы с высотомером - Controlla l'altimetro - Relógio Altímetro - - - Used to show height, descent rate and the time. - Affiche la hauteur, le taux de descente et l'heure. - Zeigt Höhe, Fallgeschwindigkeit und Uhrzeit. - Používané k zjištění výšky, rychlosti sestupu a času. - Używany przez spadochroniarzy, pokazuje wysokość, prędkość opadania oraz czas. - Utilizado para mostrar altura, tasa de descenso y hora. - Mutatja a magasságot, a zuhanási sebességet, és az időt. - Используется для определения высоты, скорости снижения и времени. - Usato per mostrare l'altitudine, la velocità di discesa e l'ora. - Usado para mostrar altura, taxa de descida e o tempo. - - - Non-Steerable Parachute - Ungelenkter Fallschirm - Paracaídas no dirigible - Parachute non manœuvrable - Niesterowalny spadochron - Neříditelný padák - Irányíthatatlan ejtőernyő - Неуправляемый парашют - Paracadute non manovrabile - Para-querdas não controlável - - - Cut Parachute - Fallschirm abschneiden - Odetnij spadochron - Ejtőernyő elvágása - - - Reserve Parachute - Reserve Fallschirm - Spadochron awaryjny - Tartalék ejtőernyő - - - + + + + + Altimeter + Altimètre + Höhenmesser + Výškoměr + Wysokościomierz + Altímetro + Magasságmérő + Высотомер + Altimetro + Altímetro + + + Altimeter Watch + Montre altimètre + Höhenmesser + Hodinky s výškoměrem + Zegarek z wysokościomierzem + Reloj altímetro + Magasságmérős karóra + Часы с высотомером + Controlla l'altimetro + Relógio Altímetro + + + Used to show height, descent rate and the time. + Affiche la hauteur, le taux de descente et l'heure. + Zeigt Höhe, Fallgeschwindigkeit und Uhrzeit. + Používané k zjištění výšky, rychlosti sestupu a času. + Używany przez spadochroniarzy, pokazuje wysokość, prędkość opadania oraz czas. + Utilizado para mostrar altura, tasa de descenso y hora. + Mutatja a magasságot, a zuhanási sebességet, és az időt. + Используется для определения высоты, скорости снижения и времени. + Usato per mostrare l'altitudine, la velocità di discesa e l'ora. + Usado para mostrar altura, taxa de descida e o tempo. + + + Non-Steerable Parachute + Ungelenkter Fallschirm + Paracaídas no dirigible + Parachute non manœuvrable + Niesterowalny spadochron + Neříditelný padák + Irányíthatatlan ejtőernyő + Неуправляемый парашют + Paracadute non manovrabile + Para-querdas não controlável + + + Cut Parachute + Fallschirm abschneiden + Odetnij spadochron + Ejtőernyő elvágása + Обрезать стропы + + + Reserve Parachute + Reserve Fallschirm + Spadochron awaryjny + Tartalék ejtőernyő + Запасной парашют + + + \ No newline at end of file diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index 213c903f60..f87dbd125b 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -1,75 +1,82 @@ - - - - - Range Card - Tabela balistyczna - Tarjeta de distancias - Vzdálenostní tabulka - Entfernungsspinne - Tabela de distâncias - Table de tir - Távolsági kártya - - - 50 METER increments -- MRAD/MRAD (reticle/turrets) - Co 50 metrów - MRAD/MRAD (siatka/pokrętło) - Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas) - Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) - 50-Meter-Schritte MRAD/MRAD (Fadenkreuz/Geschützturm) - Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) - Intervalle 50 mètres -- millième/millième (réticule/tambours) - 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) - - - Open Range Card - Otwórz tabelę balistyczną - Abrir tarjeta de distancias - Otevřít vzdálenostní tabulku - Öffne Entfernungsspinne - Abrir tabela de distâncias - Afficher table de tir - Távolsági kártya kinyitása - - - Open Range Card Copy - Otwórz kopię tabeli balistycznej - Abrir copia de tarjeta de distancias - Otevřít kopii vzdálenostní tabulky - Öffne Kopie der Entfernungsspinne - Abrir cópia da tabela de distâncias - Afficher table de tir copiée - Távolsági kártya-másolat kinyitása - - - Open Range Card - Otwórz tabelę balistyczną - Abrir tarjeta de distancias - Otevřít vzdálenostní tabulku - Öffne Entfernungsspinne - Abrir tabela de distäncias - Afficher table de tir - Távolsági kártya kinyitása - - - Open Range Card Copy - Otwórz kopię tabeli balistycznej - Abrir copia de tarjeta de distancias - Otevřít kopii vzdálenostní tabulky - Öffne Kopie der Entfernungsspinne - Abrir cópia da tabela de distâncias - Afficher table de tir copiée - Távolsági kártya-másolat kinyitása - - - Copy Range Card - Skopiuj tabelę balistyczną - Copiar tarjeta de distancias - Kopírovat vzdálenostní tabulku - Kopiere Entfernungsspinne - Copiar tabela de distäncias - Copier table de tir - Távolsági kártya másolása - - - + + + + + Range Card + Tabela balistyczna + Tarjeta de distancias + Vzdálenostní tabulka + Entfernungsspinne + Tabela de distâncias + Table de tir + Távolsági kártya + Таблица поправок + + + 50 METER increments -- MRAD/MRAD (reticle/turrets) + Co 50 metrów - MRAD/MRAD (siatka/pokrętło) + Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas) + Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) + 50-Meter-Schritte MRAD/MRAD (Fadenkreuz/Geschützturm) + Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) + Intervalle 50 mètres -- millième/millième (réticule/tambours) + 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) + Шаг 50 МЕТРОВ - MRAD/MRAD (сетка/маховички) + + + Open Range Card + Otwórz tabelę balistyczną + Abrir tarjeta de distancias + Otevřít vzdálenostní tabulku + Öffne Entfernungsspinne + Abrir tabela de distâncias + Afficher table de tir + Távolsági kártya kinyitása + Открыть таблицу поправок + + + Open Range Card Copy + Otwórz kopię tabeli balistycznej + Abrir copia de tarjeta de distancias + Otevřít kopii vzdálenostní tabulky + Öffne Kopie der Entfernungsspinne + Abrir cópia da tabela de distâncias + Afficher table de tir copiée + Távolsági kártya-másolat kinyitása + Открыть копию таблицы поправок + + + Open Range Card + Otwórz tabelę balistyczną + Abrir tarjeta de distancias + Otevřít vzdálenostní tabulku + Öffne Entfernungsspinne + Abrir tabela de distäncias + Afficher table de tir + Távolsági kártya kinyitása + Открыть таблицу поправок + + + Open Range Card Copy + Otwórz kopię tabeli balistycznej + Abrir copia de tarjeta de distancias + Otevřít kopii vzdálenostní tabulky + Öffne Kopie der Entfernungsspinne + Abrir cópia da tabela de distâncias + Afficher table de tir copiée + Távolsági kártya-másolat kinyitása + Открыть копию таблицы поправок + + + Copy Range Card + Skopiuj tabelę balistyczną + Copiar tarjeta de distancias + Kopírovat vzdálenostní tabulku + Kopiere Entfernungsspinne + Copiar tabela de distäncias + Copier table de tir + Távolsági kártya másolása + Скопировать таблицу поправок + + + \ No newline at end of file diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 483242835f..741609f7f9 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1,1913 +1,1913 @@ - - - - - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312A - - - XM312A - XM312A - XM312 - XM312A - XM312A - XM312A - XM312A - XM312A - XM312A - XM312A - - - XM312 (High) - XM312 (Hoch) - XM312 (Alto) - XM312 (Haut) - XM312 (Vysoká montáž) - XM312 (Wysoki) - XM312 (Высокий) - XM312 (Alta) - XM312 (Magasított) - XM312 (Alta) - - - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - - - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - - - XM307 (High) - XM307 (Hoch) - XM307 (Alto) - XM307 (Haut) - XM307 (Vysoká montáž) - XM307 (Wysoki) - XM307 (Высокий) - XM307 (Alta) - XM307 (Magasított) - XM307 (Alta) - - - Mini-Spike Launcher (AT) - Mini-Spike Lenkflugkörper (PALR) - Lanzador Mini-Spike (AT) - Poste de tir Mini-Spike (AC) - Mini-Spike Odpalovač (AT) - Wyrzutnia Mini-Spike (AT) - Mini-Spike Пусковое устройство (ПТРК) - Lança-mísseis Mini-Spike (AC) - Mini-Spike rakétarendszer (Tankelhárító) - Lanciatore Mini-Spike (AC) - - - Mini-Spike Launcher (AA) - Mini-Spike Lenkflugkörper (FlaRak) - Lanzador Mini-Spike (AA) - Poste de tir Mini-Spike (AA) - Mini-Spike Odpalovač (AA) - Wyrzutnia Mini-Spike (AA) - Mini-Spike Пусковое устройство (ВВ) - Lança-mísseis Mini-Spike (AA) - Mini-Spike rakétarendszer (Repülő-elhárító) - Lanciatore Mini-Spike (AA) - - - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - - - YABHON-R3 (CAS) - YABHON-R3 (Luftnahunterstützung) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - YABHON-R3 (штурмовик) - YABHON-R3 (CAS) - YABHON-R3 (Légitámogató) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - - - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - - - M-ATV (HMG) - M-ATV (SMG) - M-ATV (HMG) - M-ATV (CKM) - M-ATV (TK) - M-ATV (HMG) - M-ATV (Пулемёт) - M-ATV (HMG) - M-ATV (nehézgéppuska) - M-ATV (HMG) - - - M-ATV (GMG) - M-ATV (GMW) - M-ATV (GMG) - M-ATV (GMG) - M-ATV (Granátomet) - M-ATV (GMG) - M-ATV (Гранатомёт) - M-ATV (GMG) - M-ATV (gránátgéppuska) - M-ATV (GMG) - - - Merkava Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Merkawa Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Меркава Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Merkava Mk IV M - - - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkawa Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Меркава Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - - - Sholef - Sholef - Sholef - Sholef - Sholef - Sholef - Шолеф - Sholef - Sholef - Sholef - - - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - - - Namer - Namer - Namer - Namer - Namer - Namer - Намер - Namer - Namer - Namer - - - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - - - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - - - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - - - HEMTT Transport - HEMTT Transport - HEMTT de transporte - HEMTT Transportowy - HEMTT Valník - HEMTT Transport - HEMTT Транспортный - HEMTT Transporte - HEMTT szállítójármű - HEMTT da trasporto - - - HEMTT Transport (covered) - HEMTT Transport (bedeckt) - HEMTT de transporte (cubierto) - HEMTT Transportowy (zakryty) - HEMTT Valník (krytý) - HEMTT Transport (bâché) - HEMTT Транспортный (крытый) - HEMTT Transporte (coberto) - HEMTT szállítójármű (ponyvás) - HEMTT da trasporto (coperto) - - - HEMTT - HEMTT - HEMTT - HEMTT - HEMTT - HEMTT Tracteur - HEMTT - HEMTT - HEMTT - HEMTT - - - HEMTT Container - HEMTT Container - HEMTT con contenedor - HEMTT Kontener - HEMTT Skříňový - HEMTT Conteneur - HEMTT Контейнер - HEMTT Contêiner - HEMTT (konténer) - HEMTT portacontainer - - - HEMTT Medical - HEMTT Sanitäter - HEMTT médico - HEMTT Medyczny - HEMTT Zdravotnický - HEMTT Médical - HEMTT Медицинский - HEMTT Médico - HEMTT (egészségügyi) - HEMTT Medico - - - HEMTT Ammo - HEMTT Munition - HEMTT de munición - HEMTT Amunicyjny - HEMTT Muniční - HEMTT Munitions - HEMTT Боеприпасы - HEMTT Munições - HEMTT (lőszerszállító) - HEMTT di rifornimento munizioni - - - HEMTT Fuel - HEMTT Treibstoff - HEMTT de combustible - HEMTT Cysterna - HEMTT Cisterna - HEMTT Citerne - HEMTT Заправщик - HEMTT Combustível - HEMTT (üzemanyag-szállító) - HEMTT di rifornimento carburante - - - HEMTT Repair - HEMTT Instandsetzung - HEMTT de reparación - HEMTT Naprawczy - HEMTT Opravárenský - HEMTT Réparation - HEMTT Ремонтный - HEMTT Reparador - HEMTT (szerelő-jármű) - HEMTT Riparatore - - - Fennek - Fennek - Fennek - Fennek - Fennek - Fennek - Феннек - Fennek - Fennek - Fennek - - - Fennek (HMG) - Fennek (SMG) - Fennek (HMG) - Fennek (CKM) - Fennek (TK) - Fennek (HMG) - Феннек (Пулемёт) - Fennek (HMG) - Fennek (nehézgéppuska) - Fennek (HMG) - - - Fennek (GMG) - Fennek (GMW) - Fennek (GMG) - Fennek (GMG) - Fennek (granátomet) - Fennek (GMG) - Феннек (Гранатомёт) - Fennek (GMG) - Fennek (gránátgéppuska) - Fennek (GMG) - - - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Леопард 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - - - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Уорриор - FV510 Warrior - FV510 Warrior - FV510 Warrior - - - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - - - KamAZ Transport - KamAZ Transport - KamAZ de transporte - KamAZ transportowy - KamAZ Valník - KamAZ Transport - КамАЗ Траспортный - KamAZ Transporte - KamAZ szállítójármű - KamAZ da trasporto - - - KamAZ Transport (covered) - KamAZ Transport (bedeckt) - KamAZ de transporte (cubierto) - KamAZ Transportowy (zakryty) - KamAZ Valník (krytý) - KamAZ Transport (bâché) - КамАЗ Траспортный (крытый) - KamAZ Transporte (coberto) - KamAZ szállítójármű (ponyvás) - KamAZ da trasporto (coperto) - - - KamAZ Ammo - KamAZ Munition - KamAZ de munición - KamAZ Amunicyjny - KamAZ Muniční - KamAZ Munitions - КамАЗ Боеприпасы - KamAZ Munições - KamAZ (lőszerszállító) - KamAZ di rifornimento munizioni - - - KamAZ Fuel - KamAZ Treibstoff - KamAZ de combustible - KamAZ cysterna - KamAZ Cisterna - KamAZ Citerne - КамАЗ Заправщик - KamAZ Combustível - KamAZ (üzemanyag-szállító) - KamAZ di rifornimento carburante - - - KamAZ Repair - KamAZ Instandsetzung - KamAZ de reparación - KamAZ Naprawczy - KamAZ Opravárenský - KamAZ Réparation - КамАЗ Ремонтный - KamAZ Reparador - KamAZ (szerelő-jármű) - KamAZ riparatore - - - KamAZ Medical - KamAZ Sanitäter - KamAZ médico - KamAZ Medyczny - KAMAZ Zdravotnický - KamAZ Médical - КамАЗ Медицинский - KamAZ Médico - KamAZ (egészségügyi) - KamAZ Medico - - - Punisher - Punisher - Punisher - Punisher - Punisher - Punisher - Kаратель - Punisher - Punisher - Punisher - - - Punisher (HMG) - Punisher (SMG) - Punisher (HMG) - Punisher (CKM) - Punisher (TK) - Punisher (HMG) - Kаратель (Пулемёт) - Punisher (HMG) - Punisher (nehézgéppuska) - Punisher (HMG) - - - Punisher (GMG) - Punisher (GMW) - Punisher (GMG) - Punisher (GMG) - Punisher (granátomet) - Punisher (GMG) - Kаратель (Гранатомёт) - Punisher (GMG) - Punisher (gránátgéppuska) - Punisher (GMG) - - - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Чёрный Орел - T100 Black Eagle - T100 Fekete Sas - T100 Black Eagle - - - 2S9 Sochor - 2S9 Sochor - 2S9 Sochor - 259 Sochor - 2S9 Sochor - 2S9 Sochor - 2S9 Сокор - 2S9 Sochor - 2S9 Sochor - 2S9 Sochor - - - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - БМ-2Т Сталкер - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - - - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ЗСУ-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - - - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - - - Typhoon Transport - Typhoon Transport - Typhoon de transporte - Typhoon Transportowy - Typhoon valník - Typhoon Transport - Тайфун Транспортный - Typhoon Transporte - Typhoon szállítójármű - Typhoon da trasporto - - - Typhoon Transport (covered) - Typhoon Transport (bedeckt) - Typhoon de transporte (cubierto) - Typhoon Transportowy (przykryty) - Typhoon valník (krytý) - Typhoon Transport (bâché) - Тайфун Транспортный (крытый) - Typhoon Transporte (coberto) - Typhoon szállítójármű (ponyvás) - Typhoon da trasporto (coperto) - - - Typhoon Device - Typhoon Gerät - Typhoon con dispositivo - Typhoon Urządzenie - Typhoon zařízení - Typhoon Dispositif - Тайфун Устройство - Typhoon Dispositivo - Typhoon (eszköz) - Typhoon per dispositivo - - - Typhoon Ammo - Typhoon Munition - Typhoon de munición - Typhoon Amunicyjny - Typhoon muniční - Typhoon Munitions - Тайфун Боеприпасы - Typhoon Munições - Typhoon (lőszerszállító) - Typhoon di rifornimento munizioni - - - Typhoon Fuel - Typhoon Treibstoff - Typhoon de combustible - Typhoon Cysterna - Typhoon cisterna - Typhoon Citerne - Тайфун Заправщик - Typhoon Combustível - Typhoon (üzemanyag-szállító) - Typhoon di rifornimento carburante - - - Typhoon Repair - Typhoon Instandsetzung - Typhoon de reparación - Typhoon Naprawczy - Typhoon opravárenský - Typhoon Réparation - Тайфун Ремонтный - Typhoon Reparador - Typhoon (szerelő-jármű) - Typhoon riparatore - - - Typhoon Medical - Typhoon Sanitäter - Typhoon médico - Typhoon Medyczny - Typhoon zdravotnický - Typhoon Médical - Тайфун Медицинский - Typhoon Médico - Typhoon (egészségügyi) - Typhoon medico - - - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Commanche - RAH-66 Команч - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - - - MH-6 Little Bird - MH-6 Little Bird - MH-6 Litte Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - - - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - - - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - - - CH-47I Chinook (unarmed) - CH-47I Chinook (unbewaffnet) - CH-47I Chinnok (Desarmado) - CH-47I Chinook (nieuzbrojony) - CH-47I Chinook (невооруженный) - CH-47I Chinook (neozbrojený) - CH-47I Chinook (non-armé) - CH-47I Chinook (fegyvertelen) - CH-47I Chinook (disarmato) - CH-47I Chinook (desarmado) - - - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Тандерболт II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - - - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - - - AW159 Wildcat (unarmed) - AW159 Wildcat (unbewaffnet) - AW159 Wildcat (desarmado) - AW159 Wildcat (nieuzbrojony) - AW159 Wildcat (neozbrojený) - AW159 Wildcat (non-armé) - AW159 Wildcat (невооруженный) - AW159 Wildcat (desarmado) - AW159 Wildcat (fegyvertelen) - AW159 Wildcat (disarmato) - - - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Мерлин - AW101 Merlin - AW101 Merlin - AW101 Merlin - - - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 Альбатрос (CAS) - L-159 ALCA (CAS) - L-159 ALCA (Légitámogató) - L-159 ALCA (CAS) - - - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 Альбатрос (AA) - L-159 ALCA (ВВ) - L-159 ALCA (Repülő-elhárító) - L-159 ALCA (AA) - - - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Касатка - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - - - Ka-60 Kasatka (unarmed) - Ka-60 Kasatka (unbewaffnet) - Ka-60 Kasatka (desarmado) - Ka-60 Kasatka (nieuzbrojony) - Ka-60 Kasatka (neozbrojený) - Ka-60 Kasatka (non-armé) - Ka-60 Касатка (невооруженный) - Ka-60 Kasatka (desarmado) - Ka-60 Kasatka (fegyvertelen) - Ka-60 Kasatka (disarmato) - - - Yak-130 - Yak-130 - Yak-130 - Jak-130 - Jak-130 - Yak-130 - Як-130 - Yak-130 - Jak-130 - Yak-130 - - - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - - - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - - - M18A1 Claymore - M18A1 Claymore - M18A1 Claymore - Mina kierunkowa M18A1 Claymore - Mina Claymore M18A1 - M18A1 Claymore - M18A1 Клеймор - M18A1 Claymore - M18A1 Claymore akna - M18A1 Claymore Mina antiuomo - - - M183 Demolition Charge Assembly - M183 Geballte Sprengladung - Conjunto de carga de demolición M183 - Ładunek burzący M183 - Demoliční nálož M183 - M183 Charge de Démolition - M183 Комплектный подрывной заряд - M183 Sacola de Demolição - M183 romboló töltet - M183 Demolition Charge Assembly - - - M112 Demolition Block - M112 Sprengladung - Bloque de demolición M112 - Ładunek burzący M112 - Výbušná nálož M112 - M112 Block de Démolition - M112 подрывной заряд - M112 Carga de Demolição - M112 romboló tömb - M112 Demolition Block - - - M67 Fragmentation Grenade - M67 Splittergranate - Granada de fragmentación M67 - Granat obronny M67 - Granát M67 - M67 Grenade à fragmentation - M67 ручная осколочная граната - M67 Granada de fragmentação - M67 repeszgránát - M67 Granata a frammentazione - - - M83 Smoke Grenade (White) - M83 Rauchgranate (Weiss) - Granada de humo M83 (Blanco) - Granat dymny M83 (Biały) - M83 Kouřový Granát (Bílý) - M83 Grenade fumigène (Blanche) - M83 дымовая граната (Белый) - M83 Granada de fumaça (Branca) - M83 füstgránát (Fehér) - M83 Granata fumogena (Bianco) - - - M18 Smoke Grenade (Blue) - M18 Rauchgranate (Blau) - Granada de humo M18 (Azul) - Granat dymny M18 (Niebieski) - M18 Kouřový Granát (Modrý) - M18 Grenade fumigène (Bleue) - M18 дымовая граната (Синий) - M18 Granada de fumaça (Azul) - M18 füstgránát (Kék) - M18 Granata fumogena (Blu) - - - M18 Smoke Grenade (Green) - M18 Rauchgranate (Grün) - Granada de humo M18 (Verde) - Granat dymny M18 (Zielony) - M18 Kouřový Granát (Zelený) - M18 Grenade fumigène (Verte) - M18 дымовая граната (Зелёный) - M18 Granada de fumaça (Verde) - M18 füstgránát (Zöld) - M18 Granata fumogena (Verde) - - - M18 Smoke Grenade (Orange) - M18 Rauchgranate (Orange) - Granada de humo M18 (Naranja) - Granat dymny M18 (Pomarańczowy) - M18 Kouřový Granát (Oranžový) - M18 Grenade fumigène (Orange) - M18 дымовая граната (Оранжевый) - M18 Granada de fumaça (Laranja) - M18 füstgránát (Narancssárga) - M18 Granata fumogena (Arancione) - - - M18 Smoke Grenade (Purple) - M18 Rauchgranate (Violett) - Granada de humo M18 (Púrpura) - Granat dymny M18 (Fioletowy) - M18 Kouřový Granát (Fialový) - M18 Grenade fumigène (Pourpre) - M18 дымовая граната (Пурпурный) - M18 Granada de fumaça (Roxa) - M18 füstgránát (Lila) - M18 Granata fumogena (Viola) - - - M18 Smoke Grenade (Red) - M18 Rauchgranate (Rot) - Granada de humo M18 (Rojo) - Granat dymny M18 (Czerwony) - M18 Kouřový Granát (Červený) - M18 Grenade fumigène (Rouge) - M18 дымовая граната (Красный) - M18 Granada de fumaça (Vermelha) - M18 füstgránát (Piros) - M18 Granata fumogena (Rosso) - - - M18 Smoke Grenade (Yellow) - M18 Rauchgranate (Gelb) - Granada de humo M18 (Amarillo) - Granat dymny M18 (Żółty) - M18 Kouřový Granát (Žlutý) - M18 Grenade fumigène (Jaune) - M183 дымовая граната (Жёлтый) - M18 Granada de fumaça (Amarela) - M18 füstgránát (Sárga) - M18 Granata fumogena (Giallo) - - - M15 Anti-Tank Mine - M15 Panzerabwehrmine - Mina antitanque M15 - Mina przeciwpancerna M15 - Protitanková mina M15 - M15 Mine antichar - M15 противотанковая мина - M15 Mina anticarro - M15 harckocsiakna - M15 Mine anticarro - - - VS-50 Anti-Personnel Mine - VS-50 Antipersonenmine - Mina antipersona VS-50 - Mina przeciwpiechotna VS-50 - Protipěchotní mina VS-50 - VS-50 Mine AP - VS-50 Противопехотная мина - VS-50 Mina antipessoal - VS-50 gyalogsági taposóakna - VS-50 Mine antiuomo - - - M26 Anti-Personnel Bounding Mine - M26 Antipersonensprungmine - Mina antipersona M26 - Mina przeciwpiechotna M26 - Šrapnelová mina M26 - M26 Mine AP bondissante - M26 Противопехотная мина - M26 Mina saltadora antipessoal - M26 gyalogsági ugróakna - M26 Mine saltanti antiuomo - - - PMR-3 Anti-Personnel Tripwire Mine - PMR-3 Antipersonenstolperdrahtmine - Mina antipersona de alambre PMR-3 - Mina przeciwpiechotna PMR-3 - Nástražná mina PMR-3 - PMR-3 Mine AP à traction - PMR-3 Противопехотная мина - PMR-3 Mina antipessoal (armadilha) - PMR-3 botlódrótos gyalogsági akna - PMR-3 Mine antiuomo - - - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - - - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - МР-443 "Грач" - MP-443 Grach - MP-443 Grach - - - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - ACP-C2 - - - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - - - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 6DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 6DS - - - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - - - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - - - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - РПГ-32 - RPG-32 - RPG-32 - - - Mini-Spike (AA) - Mini-Spike (FlaRak) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (Repülő-elhárító) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - - - Mini-Spike (AT) - Mini-Spike (PALR) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AC) - Mini-Spike (Tankelhárító) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AT) - - - MX - MX - MX - MX - MX - MX - MX - MX - MX - MX - - - MX (Black) - MX (Schwarz) - MX (Czarny) - MX (Černý) - MX (Noir) - MX (Fekete) - MX (Negro) - MX (Чёрный) - MX (Preto) - MX (Nero) - - - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - - - MXC (Black) - MXC (Schwarz) - MXC (Czarny) - MXC (Černý) - MXC (Noir) - MXC (Fekete) - MXC (Negro) - MXC (Чёрный) - MXC (Preto) - MXC (Nero) - - - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - - - MX 3GL (Black) - MX 3GL (Schwarz) - MX 3GL (Czarny) - MX 3GL (Černý) - MX 3GL (Noir) - MX 3GL (Fekete) - MX 3GL (Negro) - MX 3GL (Чёрный) - MX 3GL (Preto) - MX 3GL (Nero) - - - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - - - MX LSW (Black) - MX LSW (Schwarz) - MX LSW (Czarny) - MX LSW (Černý) - MX LSW (Noir) - MX LSW (Fekete) - MX LSW (Negro) - MX LSW (Чёрный) - MX LSW (Preto) - MX LSW (Nero) - - - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - - - MXM (Black) - MXM (Schwarz) - MXM (Czarny) - MXM (Černý) - MXM (Noir) - MXM (Fekete) - MXM (Negro) - MXM (Чёрный) - MXM (Preto) - MXM (Nero) - - - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Сама - KT2002 Sama - KT2002 Katiba - - - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Сама - KT2002C Sama - KT2002C Katiba - - - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Сама KGL - KT2002 Sama KGL - KT2002 Katiba KGL - - - F2000 (Camo) - F2000 (Tarnmuster) - F2000 (kamuflaż) - F2000 (Kamufláž) - F2000 (Camo) - F2000 (Terepmintás) - F2000 (Camuflaje) - F2000 (Камо) - F2000 (Camo) - F2000 (Camo) - - - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - - - F2000 Tactical (Camo) - F2000 Tactical (Tarnmuster) - F2000 Tactical (kamuflaż) - F2000 Tactical (Černý) - F2000 Tactical (Camo) - F2000 Tactical (Terepmintás) - F2000 Tactical (Camuflaje) - F2000 Tactical (Камо) - F2000 Tactical (Camo) - F2000 Tactical (Camo) - - - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - - - F2000 EGLM (Camo) - F2000 EGLM (Tarnmuster) - F2000 EGLM (kamuflaż) - F2000 EGLM (Kamufláž) - F2000 EGLM (Camo) - F2000 EGLM (Terepmintás) - F2000 EGLM (Camuflaje) - F2000 EGLM (Камо) - F2000 EGLM (Camo) - F2000 EGLM (Camo) - - - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - - - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - - - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - - - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - - - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - - - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - - - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - - - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - - - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 Könnyűgéppuska - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - - - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - - - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk 14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - - - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Gepárd - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - - - GM6 Lynx (Camo) - GM6 Lynx (Tarnmuster) - GM6 Lynx (kamuflaż) - GM6 Lynx (Kamufláž) - GM6 Lynx (Camo) - GM6 Gepárd (Terepmintás) - GM6 Lynx (Camuflaje) - GM6 Lynx (Камо) - GM6 Lynx (Camo) - GM6 Lynx (Camo) - - - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - - - M200 Intervention (Camo) - M200 Intervention (Tarnmuster) - M200 Intervention (kamuflaż) - M200 Intervention (Kamufláž) - M200 Intervention (Camo) - M200 Intervention (Terepmintás) - M200 Intervention (Camuflaje) - M200 Intervention (Камо) - M200 Intervention (Camo) - M200 Intervention (Camo) - - - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - - - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News"ULR - Noreen "Bad News" ULR - - - Noreen "Bad News" ULR (Black) - Noreen "Bad News" ULR (Černý) - Noreen "Bad News" ULR (Noir) - Noreen "Bad News" ULR (Negro) - Noreen "Bad News" ULR (Чёрный) - Noreen "Bad News" ULR (Schwarz) - Noreen "Bad News" ULR (czarny) - Noreen "Bad News" ULR (Nero) - Noreen "Bad News"ULR (Fekete) - Noreen "Bad News" ULR (Preto) - - - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (Kamufláž) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (Camuflaje) - Noreen "Bad News" ULR (Камо) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (kamuflaż) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News"ULR (Terepmintás) - Noreen "Bad News" ULR (Camuflagem) - - - Noreen "Bad News" ULR (Sand) - Noreen "Bad News" ULR (Pouštní) - Noreen "Bad News" ULR (Beige) - Noreen "Bad News" ULR (Arena) - Noreen "Bad News" ULR (Песочный) - Noreen "Bad News" ULR (Sand) - Noreen "Bad News" ULR (piaskowy) - Noreen "Bad News" ULR (Sabbia) - Noreen "Bad News"ULR (Homok) - Noreen "Bad News" ULR (Deserto) - - - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - - - SIG 556 (Black) - SIG 556 (Černý) - SIG 556 (Noir) - SIG 556 (Negro) - SIG 556 (Чёрный) - SIG 556 (czarny) - SIG 556 (Schwarz) - SIG 556 (Nero) - SIG 556 (Fekete) - SIG 556 (Preto) - - - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Kaki) - SIG 556 (Caqui) - SIG 556 (Хаки) - SIG 556 (khaki) - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Caqui) - - - SIG 556 (Sand) - SIG 556 (Pouštní) - SIG 556 (Beige) - SIG 556 (Arena) - SIG 556 (Песочный) - SIG 556 (piaskowy) - SIG 556 (Sand) - SIG 556 (Sabbia) - SIG 556 (Homok) - SIG 556 (Deserto) - - - SIG 556 (Camo) - SIG 556 (Kamufláž) - SIG 556 (Camo) - SIG 556 (Camuflaje) - SIG 556 (Камо) - SIG 556 (kamuflaż) - SIG 556 (Camo) - SIG 556 (Camo) - SIG 556 (Terepmintás) - SIG 556 (Camuflagem) - - - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Bosque) - SIG 556 (Лесной) - SIG 556 (leśny) - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Erdőmintás) - SIG 556 (Floresta) - - - SIG 556 (provisional) spotter - SIG 556 (Provizorní) spotter - SIG 556 (provisoire) Observateur - SIG 556 (provisional) observador - SIG 556 (provisional) корректировщик - SIG 556 (prowizoryczny) obserwator - SIG 556 (provisorisch) Beobachter - SIG 556 (provisional) spotter - SIG 556 (Ellátmányi) Megfigyelő - SIG 556 (provisional) observador - - - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - - - ASP-1 Kir (Black) - ASP-1 Kir (Čený) - ASP-1 Kir (Noir) - ASP-1 Kir (Negro) - ASP-1 Kir (Чёрный) - ASP-1 Kir (Schwarz) - ASP-1 Kir (czarny) - ASP-1 Kir (Nero) - ASP-1 Kir (Fekete) - ASP-1 Kir (Preto) - - - ASP-1 Kir (Tan) - ASP-1 Kir (Pouštní) - ASP-1 Kir (Tan) - ASP-1 Kir (Tan) - ASP-1 Kir (Бронзовый) - ASP-1 Kir (Hellbraun) - ASP-1 Kir (Tan) - ASP-1 Kir (Tan) - ASP-1 Kir (Cserszín) - ASP-1 Kir (Deserto) - - - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - - - Cyrus (Black) - Cyrus (Černý) - Cyrus (Noir) - Cyrus (Negro) - Cyrus (Чёрный) - Cyrus (Schwarz) - Cyrus (czarny) - Cyrus (Nero) - Cyrus (Fekete) - Cyrus (Preto) - - - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Гекс) - Cyrus (Hex) - Cyrus (hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - - - Cyrus (Tan) - Cyrus (Pouštní) - Cyrus (Tan) - Cyrus (Tan) - Cyrus (Бронза) - Cyrus (Hellbraun) - Cyrus (podpalany) - Cyrus (Tan) - Cyrus (Cserszín) - Cyrus (Deserto) - - - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - - - M14 (Camo) - M14 (Kamufláž) - M14 (Camo) - M14 (Camuflaje) - M14 (Камо) - M14 (kamuflaż) - M14 (Camo) - M14 (Camo) - M14 (Terepmintás) - M14 (Camuflagem) - - - M14 (Olive) - M14 (Olivový) - M14 (Olive) - M14 (Oliva) - M14 (Олива) - M14 (oliwkowy) - M14 (Olive) - M14 (Olive) - M14 (Olíva) - M14 (Oliva) - - - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - - - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Гекс) - HK121 (Hex) - HK121 (hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - - - HK121 (Tan) - HK121 (Pouštní) - HK121 (Tan) - HK121 (Tan) - HK121 (Бронза) - HK121 (Hellbraun) - HK121 (podpalany) - HK121 (Tan) - HK121 (Cserszín) - HK121 (Deserto) - - - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - - - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - - - LWMMG (Black) - LWMMG (Černý) - LWMMG (Noir) - LWMMG (Negro) - LWMMG (Чёрный) - LWMMG (czarny) - LWMMG (Schwarz) - LWMMG (Nero) - LWMMG (Fekete) - LWMMG (Preto) - - - LWMMG (Sand) - LWMMG (Pouštní) - SPMG (Beige) - LWMMG (Arena) - LWMMG (Песочный) - LWMMG (piaskowy) - LWMMG (Sand) - LWMMG (Sabbia) - LWMMG (Homok) - LWMMG (Deserto) - - + + + + + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312A + + + XM312A + XM312A + XM312 + XM312A + XM312A + XM312A + XM312A + XM312A + XM312A + XM312A + + + XM312 (High) + XM312 (Hoch) + XM312 (Alto) + XM312 (Haut) + XM312 (Vysoká montáž) + XM312 (Wysoki) + XM312 (Высокий) + XM312 (Alta) + XM312 (Magasított) + XM312 (Alta) + + + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + + + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + + + XM307 (High) + XM307 (Hoch) + XM307 (Alto) + XM307 (Haut) + XM307 (Vysoká montáž) + XM307 (Wysoki) + XM307 (Высокий) + XM307 (Alta) + XM307 (Magasított) + XM307 (Alta) + + + Mini-Spike Launcher (AT) + Mini-Spike Lenkflugkörper (PALR) + Lanzador Mini-Spike (AT) + Poste de tir Mini-Spike (AC) + Mini-Spike Odpalovač (AT) + Wyrzutnia Mini-Spike (AT) + Mini-Spike Пусковое устройство (ПТРК) + Lança-mísseis Mini-Spike (AC) + Mini-Spike rakétarendszer (Tankelhárító) + Lanciatore Mini-Spike (AC) + + + Mini-Spike Launcher (AA) + Mini-Spike Lenkflugkörper (FlaRak) + Lanzador Mini-Spike (AA) + Poste de tir Mini-Spike (AA) + Mini-Spike Odpalovač (AA) + Wyrzutnia Mini-Spike (AA) + Mini-Spike Пусковое устройство (ВВ) + Lança-mísseis Mini-Spike (AA) + Mini-Spike rakétarendszer (Repülő-elhárító) + Lanciatore Mini-Spike (AA) + + + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + + + YABHON-R3 (CAS) + YABHON-R3 (Luftnahunterstützung) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + YABHON-R3 (штурмовик) + YABHON-R3 (CAS) + YABHON-R3 (Légitámogató) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + + + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + + + M-ATV (HMG) + M-ATV (SMG) + M-ATV (HMG) + M-ATV (CKM) + M-ATV (TK) + M-ATV (HMG) + M-ATV (Пулемёт) + M-ATV (HMG) + M-ATV (nehézgéppuska) + M-ATV (HMG) + + + M-ATV (GMG) + M-ATV (GMW) + M-ATV (GMG) + M-ATV (GMG) + M-ATV (Granátomet) + M-ATV (GMG) + M-ATV (Гранатомёт) + M-ATV (GMG) + M-ATV (gránátgéppuska) + M-ATV (GMG) + + + Merkava Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Merkawa Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Меркава Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Merkava Mk IV M + + + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkawa Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Меркава Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + + + Sholef + Sholef + Sholef + Sholef + Sholef + Sholef + Шолеф + Sholef + Sholef + Sholef + + + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + + + Namer + Namer + Namer + Namer + Namer + Namer + Намер + Namer + Namer + Namer + + + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + + + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + + + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + + + HEMTT Transport + HEMTT Transport + HEMTT de transporte + HEMTT Transportowy + HEMTT Valník + HEMTT Transport + HEMTT Транспортный + HEMTT Transporte + HEMTT szállítójármű + HEMTT da trasporto + + + HEMTT Transport (covered) + HEMTT Transport (bedeckt) + HEMTT de transporte (cubierto) + HEMTT Transportowy (zakryty) + HEMTT Valník (krytý) + HEMTT Transport (bâché) + HEMTT Транспортный (крытый) + HEMTT Transporte (coberto) + HEMTT szállítójármű (ponyvás) + HEMTT da trasporto (coperto) + + + HEMTT + HEMTT + HEMTT + HEMTT + HEMTT + HEMTT Tracteur + HEMTT + HEMTT + HEMTT + HEMTT + + + HEMTT Container + HEMTT Container + HEMTT con contenedor + HEMTT Kontener + HEMTT Skříňový + HEMTT Conteneur + HEMTT Контейнер + HEMTT Contêiner + HEMTT (konténer) + HEMTT portacontainer + + + HEMTT Medical + HEMTT Sanitäter + HEMTT médico + HEMTT Medyczny + HEMTT Zdravotnický + HEMTT Médical + HEMTT Медицинский + HEMTT Médico + HEMTT (egészségügyi) + HEMTT Medico + + + HEMTT Ammo + HEMTT Munition + HEMTT de munición + HEMTT Amunicyjny + HEMTT Muniční + HEMTT Munitions + HEMTT Боеприпасы + HEMTT Munições + HEMTT (lőszerszállító) + HEMTT di rifornimento munizioni + + + HEMTT Fuel + HEMTT Treibstoff + HEMTT de combustible + HEMTT Cysterna + HEMTT Cisterna + HEMTT Citerne + HEMTT Заправщик + HEMTT Combustível + HEMTT (üzemanyag-szállító) + HEMTT di rifornimento carburante + + + HEMTT Repair + HEMTT Instandsetzung + HEMTT de reparación + HEMTT Naprawczy + HEMTT Opravárenský + HEMTT Réparation + HEMTT Ремонтный + HEMTT Reparador + HEMTT (szerelő-jármű) + HEMTT Riparatore + + + Fennek + Fennek + Fennek + Fennek + Fennek + Fennek + Феннек + Fennek + Fennek + Fennek + + + Fennek (HMG) + Fennek (SMG) + Fennek (HMG) + Fennek (CKM) + Fennek (TK) + Fennek (HMG) + Феннек (Пулемёт) + Fennek (HMG) + Fennek (nehézgéppuska) + Fennek (HMG) + + + Fennek (GMG) + Fennek (GMW) + Fennek (GMG) + Fennek (GMG) + Fennek (granátomet) + Fennek (GMG) + Феннек (Гранатомёт) + Fennek (GMG) + Fennek (gránátgéppuska) + Fennek (GMG) + + + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Леопард 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + + + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Уорриор + FV510 Warrior + FV510 Warrior + FV510 Warrior + + + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + + + KamAZ Transport + KamAZ Transport + KamAZ de transporte + KamAZ transportowy + KamAZ Valník + KamAZ Transport + КамАЗ Транспортный + KamAZ Transporte + KamAZ szállítójármű + KamAZ da trasporto + + + KamAZ Transport (covered) + KamAZ Transport (bedeckt) + KamAZ de transporte (cubierto) + KamAZ Transportowy (zakryty) + KamAZ Valník (krytý) + KamAZ Transport (bâché) + КамАЗ Транспортный (крытый) + KamAZ Transporte (coberto) + KamAZ szállítójármű (ponyvás) + KamAZ da trasporto (coperto) + + + KamAZ Ammo + KamAZ Munition + KamAZ de munición + KamAZ Amunicyjny + KamAZ Muniční + KamAZ Munitions + КамАЗ Боеприпасы + KamAZ Munições + KamAZ (lőszerszállító) + KamAZ di rifornimento munizioni + + + KamAZ Fuel + KamAZ Treibstoff + KamAZ de combustible + KamAZ cysterna + KamAZ Cisterna + KamAZ Citerne + КамАЗ Заправщик + KamAZ Combustível + KamAZ (üzemanyag-szállító) + KamAZ di rifornimento carburante + + + KamAZ Repair + KamAZ Instandsetzung + KamAZ de reparación + KamAZ Naprawczy + KamAZ Opravárenský + KamAZ Réparation + КамАЗ Ремонтный + KamAZ Reparador + KamAZ (szerelő-jármű) + KamAZ riparatore + + + KamAZ Medical + KamAZ Sanitäter + KamAZ médico + KamAZ Medyczny + KAMAZ Zdravotnický + KamAZ Médical + КамАЗ Медицинский + KamAZ Médico + KamAZ (egészségügyi) + KamAZ Medico + + + Punisher + Punisher + Punisher + Punisher + Punisher + Punisher + Kаратель + Punisher + Punisher + Punisher + + + Punisher (HMG) + Punisher (SMG) + Punisher (HMG) + Punisher (CKM) + Punisher (TK) + Punisher (HMG) + Kаратель (Пулемёт) + Punisher (HMG) + Punisher (nehézgéppuska) + Punisher (HMG) + + + Punisher (GMG) + Punisher (GMW) + Punisher (GMG) + Punisher (GMG) + Punisher (granátomet) + Punisher (GMG) + Kаратель (Гранатомёт) + Punisher (GMG) + Punisher (gránátgéppuska) + Punisher (GMG) + + + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Чёрный Орел + T100 Black Eagle + T100 Fekete Sas + T100 Black Eagle + + + 2S9 Sochor + 2S9 Sochor + 2S9 Sochor + 259 Sochor + 2S9 Sochor + 2S9 Sochor + 2S9 Сокор + 2S9 Sochor + 2S9 Sochor + 2S9 Sochor + + + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + БМ-2Т Сталкер + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + + + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ЗСУ-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + + + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + + + Typhoon Transport + Typhoon Transport + Typhoon de transporte + Typhoon Transportowy + Typhoon valník + Typhoon Transport + Тайфун Транспортный + Typhoon Transporte + Typhoon szállítójármű + Typhoon da trasporto + + + Typhoon Transport (covered) + Typhoon Transport (bedeckt) + Typhoon de transporte (cubierto) + Typhoon Transportowy (przykryty) + Typhoon valník (krytý) + Typhoon Transport (bâché) + Тайфун Транспортный (крытый) + Typhoon Transporte (coberto) + Typhoon szállítójármű (ponyvás) + Typhoon da trasporto (coperto) + + + Typhoon Device + Typhoon Gerät + Typhoon con dispositivo + Typhoon Urządzenie + Typhoon zařízení + Typhoon Dispositif + Тайфун Устройство + Typhoon Dispositivo + Typhoon (eszköz) + Typhoon per dispositivo + + + Typhoon Ammo + Typhoon Munition + Typhoon de munición + Typhoon Amunicyjny + Typhoon muniční + Typhoon Munitions + Тайфун Боеприпасы + Typhoon Munições + Typhoon (lőszerszállító) + Typhoon di rifornimento munizioni + + + Typhoon Fuel + Typhoon Treibstoff + Typhoon de combustible + Typhoon Cysterna + Typhoon cisterna + Typhoon Citerne + Тайфун Заправщик + Typhoon Combustível + Typhoon (üzemanyag-szállító) + Typhoon di rifornimento carburante + + + Typhoon Repair + Typhoon Instandsetzung + Typhoon de reparación + Typhoon Naprawczy + Typhoon opravárenský + Typhoon Réparation + Тайфун Ремонтный + Typhoon Reparador + Typhoon (szerelő-jármű) + Typhoon riparatore + + + Typhoon Medical + Typhoon Sanitäter + Typhoon médico + Typhoon Medyczny + Typhoon zdravotnický + Typhoon Médical + Тайфун Медицинский + Typhoon Médico + Typhoon (egészségügyi) + Typhoon medico + + + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Commanche + RAH-66 Команч + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + + + MH-6 Little Bird + MH-6 Little Bird + MH-6 Litte Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + + + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + + + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + + + CH-47I Chinook (unarmed) + CH-47I Chinook (unbewaffnet) + CH-47I Chinnok (Desarmado) + CH-47I Chinook (nieuzbrojony) + CH-47I Chinook (невооруженный) + CH-47I Chinook (neozbrojený) + CH-47I Chinook (non-armé) + CH-47I Chinook (fegyvertelen) + CH-47I Chinook (disarmato) + CH-47I Chinook (desarmado) + + + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Тандерболт II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + + + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + + + AW159 Wildcat (unarmed) + AW159 Wildcat (unbewaffnet) + AW159 Wildcat (desarmado) + AW159 Wildcat (nieuzbrojony) + AW159 Wildcat (neozbrojený) + AW159 Wildcat (non-armé) + AW159 Wildcat (невооруженный) + AW159 Wildcat (desarmado) + AW159 Wildcat (fegyvertelen) + AW159 Wildcat (disarmato) + + + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Мерлин + AW101 Merlin + AW101 Merlin + AW101 Merlin + + + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 Альбатрос (CAS) + L-159 ALCA (CAS) + L-159 ALCA (Légitámogató) + L-159 ALCA (CAS) + + + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 Альбатрос (AA) + L-159 ALCA (ВВ) + L-159 ALCA (Repülő-elhárító) + L-159 ALCA (AA) + + + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Касатка + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + + + Ka-60 Kasatka (unarmed) + Ka-60 Kasatka (unbewaffnet) + Ka-60 Kasatka (desarmado) + Ka-60 Kasatka (nieuzbrojony) + Ka-60 Kasatka (neozbrojený) + Ka-60 Kasatka (non-armé) + Ka-60 Касатка (невооруженный) + Ka-60 Kasatka (desarmado) + Ka-60 Kasatka (fegyvertelen) + Ka-60 Kasatka (disarmato) + + + Yak-130 + Yak-130 + Yak-130 + Jak-130 + Jak-130 + Yak-130 + Як-130 + Yak-130 + Jak-130 + Yak-130 + + + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + + + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + + + M18A1 Claymore + M18A1 Claymore + M18A1 Claymore + Mina kierunkowa M18A1 Claymore + Mina Claymore M18A1 + M18A1 Claymore + M18A1 Клеймор + M18A1 Claymore + M18A1 Claymore akna + M18A1 Claymore Mina antiuomo + + + M183 Demolition Charge Assembly + M183 Geballte Sprengladung + Conjunto de carga de demolición M183 + Ładunek burzący M183 + Demoliční nálož M183 + M183 Charge de Démolition + M183 Комплектный подрывной заряд + M183 Sacola de Demolição + M183 romboló töltet + M183 Demolition Charge Assembly + + + M112 Demolition Block + M112 Sprengladung + Bloque de demolición M112 + Ładunek burzący M112 + Výbušná nálož M112 + M112 Block de Démolition + M112 подрывной заряд + M112 Carga de Demolição + M112 romboló tömb + M112 Demolition Block + + + M67 Fragmentation Grenade + M67 Splittergranate + Granada de fragmentación M67 + Granat obronny M67 + Granát M67 + M67 Grenade à fragmentation + M67 ручная осколочная граната + M67 Granada de fragmentação + M67 repeszgránát + M67 Granata a frammentazione + + + M83 Smoke Grenade (White) + M83 Rauchgranate (Weiss) + Granada de humo M83 (Blanco) + Granat dymny M83 (Biały) + M83 Kouřový Granát (Bílý) + M83 Grenade fumigène (Blanche) + M83 дымовая граната (Белый) + M83 Granada de fumaça (Branca) + M83 füstgránát (Fehér) + M83 Granata fumogena (Bianco) + + + M18 Smoke Grenade (Blue) + M18 Rauchgranate (Blau) + Granada de humo M18 (Azul) + Granat dymny M18 (Niebieski) + M18 Kouřový Granát (Modrý) + M18 Grenade fumigène (Bleue) + M18 дымовая граната (Синий) + M18 Granada de fumaça (Azul) + M18 füstgránát (Kék) + M18 Granata fumogena (Blu) + + + M18 Smoke Grenade (Green) + M18 Rauchgranate (Grün) + Granada de humo M18 (Verde) + Granat dymny M18 (Zielony) + M18 Kouřový Granát (Zelený) + M18 Grenade fumigène (Verte) + M18 дымовая граната (Зелёный) + M18 Granada de fumaça (Verde) + M18 füstgránát (Zöld) + M18 Granata fumogena (Verde) + + + M18 Smoke Grenade (Orange) + M18 Rauchgranate (Orange) + Granada de humo M18 (Naranja) + Granat dymny M18 (Pomarańczowy) + M18 Kouřový Granát (Oranžový) + M18 Grenade fumigène (Orange) + M18 дымовая граната (Оранжевый) + M18 Granada de fumaça (Laranja) + M18 füstgránát (Narancssárga) + M18 Granata fumogena (Arancione) + + + M18 Smoke Grenade (Purple) + M18 Rauchgranate (Violett) + Granada de humo M18 (Púrpura) + Granat dymny M18 (Fioletowy) + M18 Kouřový Granát (Fialový) + M18 Grenade fumigène (Pourpre) + M18 дымовая граната (Пурпурный) + M18 Granada de fumaça (Roxa) + M18 füstgránát (Lila) + M18 Granata fumogena (Viola) + + + M18 Smoke Grenade (Red) + M18 Rauchgranate (Rot) + Granada de humo M18 (Rojo) + Granat dymny M18 (Czerwony) + M18 Kouřový Granát (Červený) + M18 Grenade fumigène (Rouge) + M18 дымовая граната (Красный) + M18 Granada de fumaça (Vermelha) + M18 füstgránát (Piros) + M18 Granata fumogena (Rosso) + + + M18 Smoke Grenade (Yellow) + M18 Rauchgranate (Gelb) + Granada de humo M18 (Amarillo) + Granat dymny M18 (Żółty) + M18 Kouřový Granát (Žlutý) + M18 Grenade fumigène (Jaune) + M183 дымовая граната (Жёлтый) + M18 Granada de fumaça (Amarela) + M18 füstgránát (Sárga) + M18 Granata fumogena (Giallo) + + + M15 Anti-Tank Mine + M15 Panzerabwehrmine + Mina antitanque M15 + Mina przeciwpancerna M15 + Protitanková mina M15 + M15 Mine antichar + M15 противотанковая мина + M15 Mina anticarro + M15 harckocsiakna + M15 Mine anticarro + + + VS-50 Anti-Personnel Mine + VS-50 Antipersonenmine + Mina antipersona VS-50 + Mina przeciwpiechotna VS-50 + Protipěchotní mina VS-50 + VS-50 Mine AP + VS-50 Противопехотная мина + VS-50 Mina antipessoal + VS-50 gyalogsági taposóakna + VS-50 Mine antiuomo + + + M26 Anti-Personnel Bounding Mine + M26 Antipersonensprungmine + Mina antipersona M26 + Mina przeciwpiechotna M26 + Šrapnelová mina M26 + M26 Mine AP bondissante + M26 Противопехотная мина + M26 Mina saltadora antipessoal + M26 gyalogsági ugróakna + M26 Mine saltanti antiuomo + + + PMR-3 Anti-Personnel Tripwire Mine + PMR-3 Antipersonenstolperdrahtmine + Mina antipersona de alambre PMR-3 + Mina przeciwpiechotna PMR-3 + Nástražná mina PMR-3 + PMR-3 Mine AP à traction + PMR-3 Противопехотная мина + PMR-3 Mina antipessoal (armadilha) + PMR-3 botlódrótos gyalogsági akna + PMR-3 Mine antiuomo + + + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + + + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + МР-443 "Грач" + MP-443 Grach + MP-443 Grach + + + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + ACP-C2 + + + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + + + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 6DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 6DS + + + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + + + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + + + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + РПГ-32 + RPG-32 + RPG-32 + + + Mini-Spike (AA) + Mini-Spike (FlaRak) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (Repülő-elhárító) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + + + Mini-Spike (AT) + Mini-Spike (PALR) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AC) + Mini-Spike (Tankelhárító) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AT) + + + MX + MX + MX + MX + MX + MX + MX + MX + MX + MX + + + MX (Black) + MX (Schwarz) + MX (Czarny) + MX (Černý) + MX (Noir) + MX (Fekete) + MX (Negro) + MX (Чёрный) + MX (Preto) + MX (Nero) + + + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + + + MXC (Black) + MXC (Schwarz) + MXC (Czarny) + MXC (Černý) + MXC (Noir) + MXC (Fekete) + MXC (Negro) + MXC (Чёрный) + MXC (Preto) + MXC (Nero) + + + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + + + MX 3GL (Black) + MX 3GL (Schwarz) + MX 3GL (Czarny) + MX 3GL (Černý) + MX 3GL (Noir) + MX 3GL (Fekete) + MX 3GL (Negro) + MX 3GL (Чёрный) + MX 3GL (Preto) + MX 3GL (Nero) + + + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + + + MX LSW (Black) + MX LSW (Schwarz) + MX LSW (Czarny) + MX LSW (Černý) + MX LSW (Noir) + MX LSW (Fekete) + MX LSW (Negro) + MX LSW (Чёрный) + MX LSW (Preto) + MX LSW (Nero) + + + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + + + MXM (Black) + MXM (Schwarz) + MXM (Czarny) + MXM (Černý) + MXM (Noir) + MXM (Fekete) + MXM (Negro) + MXM (Чёрный) + MXM (Preto) + MXM (Nero) + + + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Сама + KT2002 Sama + KT2002 Katiba + + + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Сама + KT2002C Sama + KT2002C Katiba + + + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Сама KGL + KT2002 Sama KGL + KT2002 Katiba KGL + + + F2000 (Camo) + F2000 (Tarnmuster) + F2000 (kamuflaż) + F2000 (Kamufláž) + F2000 (Camo) + F2000 (Terepmintás) + F2000 (Camuflaje) + F2000 (Камо) + F2000 (Camo) + F2000 (Camo) + + + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + + + F2000 Tactical (Camo) + F2000 Tactical (Tarnmuster) + F2000 Tactical (kamuflaż) + F2000 Tactical (Černý) + F2000 Tactical (Camo) + F2000 Tactical (Terepmintás) + F2000 Tactical (Camuflaje) + F2000 Tactical (Камо) + F2000 Tactical (Camo) + F2000 Tactical (Camo) + + + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + + + F2000 EGLM (Camo) + F2000 EGLM (Tarnmuster) + F2000 EGLM (kamuflaż) + F2000 EGLM (Kamufláž) + F2000 EGLM (Camo) + F2000 EGLM (Terepmintás) + F2000 EGLM (Camuflaje) + F2000 EGLM (Камо) + F2000 EGLM (Camo) + F2000 EGLM (Camo) + + + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + + + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + + + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + + + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + + + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + + + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + + + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + + + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + + + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 Könnyűgéppuska + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + + + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + + + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk 14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + + + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Gepárd + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + + + GM6 Lynx (Camo) + GM6 Lynx (Tarnmuster) + GM6 Lynx (kamuflaż) + GM6 Lynx (Kamufláž) + GM6 Lynx (Camo) + GM6 Gepárd (Terepmintás) + GM6 Lynx (Camuflaje) + GM6 Lynx (Камо) + GM6 Lynx (Camo) + GM6 Lynx (Camo) + + + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + + + M200 Intervention (Camo) + M200 Intervention (Tarnmuster) + M200 Intervention (kamuflaż) + M200 Intervention (Kamufláž) + M200 Intervention (Camo) + M200 Intervention (Terepmintás) + M200 Intervention (Camuflaje) + M200 Intervention (Камо) + M200 Intervention (Camo) + M200 Intervention (Camo) + + + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + + + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News"ULR + Noreen "Bad News" ULR + + + Noreen "Bad News" ULR (Black) + Noreen "Bad News" ULR (Černý) + Noreen "Bad News" ULR (Noir) + Noreen "Bad News" ULR (Negro) + Noreen "Bad News" ULR (Чёрный) + Noreen "Bad News" ULR (Schwarz) + Noreen "Bad News" ULR (czarny) + Noreen "Bad News" ULR (Nero) + Noreen "Bad News"ULR (Fekete) + Noreen "Bad News" ULR (Preto) + + + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (Kamufláž) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (Camuflaje) + Noreen "Bad News" ULR (Камо) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (kamuflaż) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News"ULR (Terepmintás) + Noreen "Bad News" ULR (Camuflagem) + + + Noreen "Bad News" ULR (Sand) + Noreen "Bad News" ULR (Pouštní) + Noreen "Bad News" ULR (Beige) + Noreen "Bad News" ULR (Arena) + Noreen "Bad News" ULR (Песочный) + Noreen "Bad News" ULR (Sand) + Noreen "Bad News" ULR (piaskowy) + Noreen "Bad News" ULR (Sabbia) + Noreen "Bad News"ULR (Homok) + Noreen "Bad News" ULR (Deserto) + + + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + + + SIG 556 (Black) + SIG 556 (Černý) + SIG 556 (Noir) + SIG 556 (Negro) + SIG 556 (Чёрный) + SIG 556 (czarny) + SIG 556 (Schwarz) + SIG 556 (Nero) + SIG 556 (Fekete) + SIG 556 (Preto) + + + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Kaki) + SIG 556 (Caqui) + SIG 556 (Хаки) + SIG 556 (khaki) + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Caqui) + + + SIG 556 (Sand) + SIG 556 (Pouštní) + SIG 556 (Beige) + SIG 556 (Arena) + SIG 556 (Песочный) + SIG 556 (piaskowy) + SIG 556 (Sand) + SIG 556 (Sabbia) + SIG 556 (Homok) + SIG 556 (Deserto) + + + SIG 556 (Camo) + SIG 556 (Kamufláž) + SIG 556 (Camo) + SIG 556 (Camuflaje) + SIG 556 (Камо) + SIG 556 (kamuflaż) + SIG 556 (Camo) + SIG 556 (Camo) + SIG 556 (Terepmintás) + SIG 556 (Camuflagem) + + + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Bosque) + SIG 556 (Лесной) + SIG 556 (leśny) + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Erdőmintás) + SIG 556 (Floresta) + + + SIG 556 (provisional) spotter + SIG 556 (Provizorní) spotter + SIG 556 (provisoire) Observateur + SIG 556 (provisional) observador + SIG 556 (provisional) корректировщик + SIG 556 (prowizoryczny) obserwator + SIG 556 (provisorisch) Beobachter + SIG 556 (provisional) spotter + SIG 556 (Ellátmányi) Megfigyelő + SIG 556 (provisional) observador + + + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + + + ASP-1 Kir (Black) + ASP-1 Kir (Čený) + ASP-1 Kir (Noir) + ASP-1 Kir (Negro) + ASP-1 Kir (Чёрный) + ASP-1 Kir (Schwarz) + ASP-1 Kir (czarny) + ASP-1 Kir (Nero) + ASP-1 Kir (Fekete) + ASP-1 Kir (Preto) + + + ASP-1 Kir (Tan) + ASP-1 Kir (Pouštní) + ASP-1 Kir (Tan) + ASP-1 Kir (Tan) + ASP-1 Kir (Бронзовый) + ASP-1 Kir (Hellbraun) + ASP-1 Kir (Tan) + ASP-1 Kir (Tan) + ASP-1 Kir (Cserszín) + ASP-1 Kir (Deserto) + + + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + + + Cyrus (Black) + Cyrus (Černý) + Cyrus (Noir) + Cyrus (Negro) + Cyrus (Чёрный) + Cyrus (Schwarz) + Cyrus (czarny) + Cyrus (Nero) + Cyrus (Fekete) + Cyrus (Preto) + + + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Гекс) + Cyrus (Hex) + Cyrus (hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + + + Cyrus (Tan) + Cyrus (Pouštní) + Cyrus (Tan) + Cyrus (Tan) + Cyrus (Бронза) + Cyrus (Hellbraun) + Cyrus (podpalany) + Cyrus (Tan) + Cyrus (Cserszín) + Cyrus (Deserto) + + + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + + + M14 (Camo) + M14 (Kamufláž) + M14 (Camo) + M14 (Camuflaje) + M14 (Камо) + M14 (kamuflaż) + M14 (Camo) + M14 (Camo) + M14 (Terepmintás) + M14 (Camuflagem) + + + M14 (Olive) + M14 (Olivový) + M14 (Olive) + M14 (Oliva) + M14 (Олива) + M14 (oliwkowy) + M14 (Olive) + M14 (Olive) + M14 (Olíva) + M14 (Oliva) + + + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + + + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Гекс) + HK121 (Hex) + HK121 (hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + + + HK121 (Tan) + HK121 (Pouštní) + HK121 (Tan) + HK121 (Tan) + HK121 (Бронза) + HK121 (Hellbraun) + HK121 (podpalany) + HK121 (Tan) + HK121 (Cserszín) + HK121 (Deserto) + + + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + + + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + + + LWMMG (Black) + LWMMG (Černý) + LWMMG (Noir) + LWMMG (Negro) + LWMMG (Чёрный) + LWMMG (czarny) + LWMMG (Schwarz) + LWMMG (Nero) + LWMMG (Fekete) + LWMMG (Preto) + + + LWMMG (Sand) + LWMMG (Pouštní) + SPMG (Beige) + LWMMG (Arena) + LWMMG (Песочный) + LWMMG (piaskowy) + LWMMG (Sand) + LWMMG (Sabbia) + LWMMG (Homok) + LWMMG (Deserto) + + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 09759344f8..13415817e3 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,660 +1,734 @@ - - - - - - Spare Track - Ersatzkette - Cadena de repuesto - Chenille de réserve - Zapasowa gąsienica - Náhradní pásy - Lagarta Reserva - Cingolo di scorta - Pót lánctalp - Запасная гусеница - - - Spare Wheel - Ersatzreifen - Rueda de repuesto - Roue de secours - Zapasowe koło - Náhradní Kolo - Roda Reserva - Ruota di scorta - Pótkerék - Запасное колесо - - - Change Wheel - Reifen wechseln - Cambiar rueda - Changer Roue - Wymień koło - Vyměňit kolo - Trocar Roda - Sostituisci la ruota - Kerék cseréje - Поменять колесо - - - Replacing Wheel ... - Ersetze Reifen ... - Wymienianie koła ... - - - Wheel replaced - Reifen ersetzt - Koło zostało wymienione - - - Remove Wheel - Reifen entfernen - Quitar rueda - Démonter Roue - Zdejmij koło - Odstranit Kolo - Remover Roda - Rimuovi la ruota - Kerék leszerelése - Снять колесо - - - Removing Wheel ... - Entferne Reifen ... - Zdejmowanie koła ... - - - Wheel removed - Reifen entfernt - Koło zostało zdjęte - - - Change Track - Wymień gąsienicę - - - Replacing Track ... - Wymienianie gąsienicy ... - - - Track replaced - Gąsienica została wymieniona - - - Remove Track - Zdejmij gąsienicę - - - Removing Track ... - Zdejmowanie gąsienicy ... - - - Track removed - Gąsienica została zdjęta - - - Full Repair - Pełna naprawa - - - Repairing Vehicle ... - Naprawianie pojazdu ... - - - Full Repair Locations - Lokaliz. pełnej naprawy - - - At what locations can a vehicle be fully repaired? - W jakich miejscach pojazd może zostać w pełni naprawiony? - - - Allow Full Repair - Zezwól na pełną naprawę - - - Who can perform a full repair on a vehicle? - Kto może przeprowadzić pełną naprawę pojazdu? - - - Repair >> - Reparieren >> - Reparación >> - Réparer >> - Napraw >> - Opravit >> - Reparar >> - Ripara >> - Szerelés >> - Ремонт >> - - - Display text on repair - Wyświetl tekst przy naprawie - - - Display a notification whenever you repair a vehicle - Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. - - - Repairing ... - Reparieren ... - Reparando ... - Réparation ... - Naprawianie... - Opravuji ... - Reparando ... - Sto riparando ... - javítása ... - Ремонтируем ... - - - Repairing %1 ... - Reparieren %1 ... - Reparando %1 ... - Réparation %1 ... - Naprawianie %1... - Opravuji %1 ... - Reparando %1 ... - Sto riparando %1 ... - %1 javítása ... - Ремонтируем %1 ... - - - Repaired %1 - %1 repariert - Reparado %1 - %1 réparé(e) - Naprawiono %1 - Opraveno - %1 - Reparado %1 - %1 Riparata/o - %1 megjavítva - %1 отремонтирован - - - Fully repaired part - Bauteil vollständig repariert - W pełni naprawiono część - - - Partially repaired %1 - Bauteil teilweise repariert - Częściowo naprawiono: %1 - - - Fully repaired %1 - %1 vollständig repariert - W pełni naprawiono: %1 - - - Partially repaired %1 - %1 teilweise repariert - Częściowo naprawiono: %1 - - - Body - Karosserie - Carrocería - Blindage - Karoseria - Karoserie - Carroceria - Carrozzeria - Test - Кузов - - - Hull - Wanne - Casco - Caisse - Kadłub - Trup - Chassi - Scafo - Test - Корпус - - - Engine - Motor - Motor - Moteur - Silnik - Motor - Motor - Motore - Motor - Двигатель - - - Left Horizontal Stabilizer - - - Right Horizontal Stabilizer - - - Vertical Stabilizer - - - Fuel Tank - Tank - Depósito - Réservoir - Zbiornik paliwa - Palivová nádrž - Tanque de Combustível - Serbatoio - Üzemanyagtank - Топливный бак - - - Transmission - - - Gear - - - Starter - - - Tail - - - Pilot Tube - - - Static Port - - - Ammo - - - Turret - Turm - Torreta - Tourelle - Wieżyczka - Věž - Torre - Torretta - Lövegtorony - Башню - - - Gun - Kanone - Cañón - Canon - Działo - Kanón - Canhão - Cannone - Ágyú - Пушку - - - Missiles - - - Left Track - Linke Kette - Cadena izquierda - Chenille gauche - Lewa gąsienica - Levý Pás - Lagarta Esquerda - Cingolo sinistro - Bal lánctalp - Левую гусеницу - - - Right Track - Rechte Kette - Cadena derecha - Chenille droite - Prawa gąsienica - Pravý Pás - Lagarta Direita - Cingolo destro - Jobb lánctalp - Правую гусеницу - - - Left Front Wheel - Linkes Vorderrad - Rueda frontal izquierda - Roue avant-gauche - Przednie lewe koło - Levé přední Kolo - Roda Dianteira Esquerda - Ruota frontale sinistra - Bal első kerék - Левое переднее колесо - - - Right Front Wheel - Rechtes Vorderrad - Rueda frontal derecha - Roue avant-droite - Przednie prawe koło - Pravé přední Kolo - Roda Dianteira Direita - Ruota frontale destra - Jobb első kerék - Правое переднее колесо - - - Second Left Front Wheel - Zweites linkes Vorderrad - Segunda rueda frontal izquierda - Deuxième roue avant-gauche - Drugie przednie lewe koło - Druhé Levé přední Kolo - Segunda Roda Dianteira Esquerda - Seconda ruota frontale sinistra - Második bal első kerék - Второе переднее левое колесо - - - Second Right Front Wheel - Zweites rechtes Vorderrad - Segunda rueda frontal derecha - Deuxième roue avant-droite - Drugie przednie prawe koło - Druhé Pravé přední Kolo - Segunda Roda Dianteira Direita - Seconda ruota frontale destra - Második jobb hátsó kerék - Второе правое переднее колесо - - - Left Middle Wheel - Linkes mittleres Rad - Rueda central izquierda - Roue centre-gauche - Środkowe lewe koło - Levé prostřední Kolo - Roda Intermediária Esquerda - Ruota centrale sinistra - Bal középső kerék - Левое среднее колесо - - - Right Middle Wheel - Rechtes mittleres Rad - Rueda central derecha - Roue centre-droite - Środkowe prawe koło - Pravé prostřední Kolo - Roda Intermediária Direita - Ruota centrale destra - Jobb középső kerék - Правое среднее колесо - - - Left Rear Wheel - Linkes Hinterrad - Rueda trasera izquierda - Roue arrière-gauche - Tylnie lewe koło - Levé zadní Kolo - Roda Traseira Esquerda - Ruota posteriore sinistra - Bal hátsó kerék - Левое заднее колесо - - - Right Rear Wheel - Rechtes Hinterrad - Rueda trasera derecha - Roue arrière-droite - Tylnie prawe koło - Pravé zadní Kolo - Roda Traseira Direita - Ruota posteriore destra - Jobb hátsó kerék - Правое заднее колесо - - - Avionics - Avionik - Aviónica - Avionique - Awionika - Elektronika - Aviônica - Avionica - Avionika - Авионику - - - Main Rotor - Hauptrotor - Rotor principal - Rotor principal - Główny rotor - Hlavní Rotor - Rotor Principal - Rotore principale - Főrotor - Несущий винт - - - Tail Rotor - Heckrotor - Rotor de cola - Rotor anticouple - Tylni rotor - Zadní Rotor - Rotor de Cauda - Rotore di coda - Farokrotor - Рулевой винт - - - Winch - Seilwinde - Wyciągarka - - - Glass (right) - Scheibe (rechts) - Ventana (derecha) - Vitre (droite) - Szyba (prawa) - Sklo (pravé) - Vidro (à direita) - Vetro destro - Jobb szélvédő - Стекло (справа) - - - Glass (left) - Scheibe (links) - Ventana (izquierda) - Vitre (gauche) - Szyba (lewa) - Sklo (pravé) - Vidro (à esquerda) - Vetro sinistro - Bal szélvédő - Стекло (слава) - - - Glass - Scheibe - Ventana - Vitre - Szyba - Sklo - Vidro - Vetro - Üveg - Стекло - - - Repair Settings - Ustawienia naprawy - - - Provides a repair system for all types of vehicles. - Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. - - - Anyone - Ktokolwiek - - - Engineer only - Tylko mechanicy - - - Repair Specialist only - Tylko inżynierowie - - - Allow Wheel - Wymiana kół - - - Who can remove and replace wheels? - Kto może zdejmować i zmieniać koła? - - - Allow Repair - Możliwość naprawy - - - Who can perform repair actions? - Kto może wykonywać czynności związane z naprawą pojazdów? - - - Repair Threshold - Próg naprawy - - - What is the maximum damage that can be repaired with a toolkit? - Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? - - - Repair Threshold (Engineer) - Próg naprawy (mechanik) - - - What is the maximum damage that can be repaired by an engineer? - Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? - - - Remove toolkit on use - Usuń narzędzia po użyciu - - - Should the toolkit be removed on usage? - Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? - - - Anywhere - Wszędzie - - - Repair Vehicle only - Przy pojazdach naprawczych - - - Repair Facility only - Przy budynkach naprawczych - - - Repair Facility or Vehicle - Przy budynkach i pojazdach naprawczych - - - Assign Engineer - Przydziel inżyniera - - - List - Lista - - - List of unit names that will be classified as engineer, separated by commas. - Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. - - - Is Engineer - Poziom wyszkolenia - - - Select the engineering skill level of the unit - Wybierz biegłość w dziedzinie naprawy danej jednostki - - - None - Żadny - - - Engineer - Mechanik - - - Specialist - Inżynier - - - Assign one or multiple units as an engineer - Przydziel klasę inżyniera do jednej lub kilku jednostek - - - Assign Repair Vehicle - Przydziel pojazd naprawczy - - - List - Lista - - - List of vehicles that will be classified as repair vehicle, separated by commas. - Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. - - - Is Repair Vehicle - Jest poj. naprawczym - - - Is the vehicle classified as a repair vehicle? - Czy pojazd jest zklasyfikowany jako pojazd naprawczy? - - - Assign one or multiple vehicles as a repair vehicle - Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. - - - Assign Repair Facility - Przydziel budynek naprawczy - - - List - Lista - - - List of objects that will be classified as repair Facility, separated by commas. - Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. - - - Is Repair Facility - Jest bud. naprawczym - - - Is the object classified as a repair Facility? - Czy budynek jest zklasyfikowany jako budynek naprawczy? - - - Assign one or multiple objects as a repair Facility - Przydziel klasę budynku naprawczego do jednego lub kilku budynków. - - - + + + + + + Spare Track + Ersatzkette + Cadena de repuesto + Chenille de réserve + Zapasowa gąsienica + Náhradní pásy + Lagarta Reserva + Cingolo di scorta + Pót lánctalp + Запасная гусеница + + + Spare Wheel + Ersatzreifen + Rueda de repuesto + Roue de secours + Zapasowe koło + Náhradní Kolo + Roda Reserva + Ruota di scorta + Pótkerék + Запасное колесо + + + Change Wheel + Reifen wechseln + Cambiar rueda + Changer Roue + Wymień koło + Vyměňit kolo + Trocar Roda + Sostituisci la ruota + Kerék cseréje + Поменять колесо + + + Replacing Wheel ... + Ersetze Reifen ... + Wymienianie koła ... + Замена колеса... + + + Wheel replaced + Reifen ersetzt + Koło zostało wymienione + Колесо заменено + + + Remove Wheel + Reifen entfernen + Quitar rueda + Démonter Roue + Zdejmij koło + Odstranit Kolo + Remover Roda + Rimuovi la ruota + Kerék leszerelése + Снять колесо + + + Removing Wheel ... + Entferne Reifen ... + Zdejmowanie koła ... + Снятие колеса... + + + Wheel removed + Reifen entfernt + Koło zostało zdjęte + Колесо снято + + + Change Track + Wymień gąsienicę + Заменить гусеницу + + + Replacing Track ... + Wymienianie gąsienicy ... + Замена гусеницы... + + + Track replaced + Gąsienica została wymieniona + Гусеница заменена + + + Remove Track + Zdejmij gąsienicę + Снять гусеницу + + + Removing Track ... + Zdejmowanie gąsienicy ... + Снятие гусеницы... + + + Track removed + Gąsienica została zdjęta + Гусеница снята + + + Full Repair + Pełna naprawa + Полный ремонт + + + Repairing Vehicle ... + Naprawianie pojazdu ... + Ремонт транспорта... + + + Full Repair Locations + Lokaliz. pełnej naprawy + Места полного ремонта + + + At what locations can a vehicle be fully repaired? + W jakich miejscach pojazd może zostać w pełni naprawiony? + В каких местах транспорт может быть полностью отремеонтирован? + + + Allow Full Repair + Zezwól na pełną naprawę + Полный ремонт выполняют + + + Who can perform a full repair on a vehicle? + Kto może przeprowadzić pełną naprawę pojazdu? + Кто может выполнять полный ремонт? + + + Repair >> + Reparieren >> + Reparación >> + Réparer >> + Napraw >> + Opravit >> + Reparar >> + Ripara >> + Szerelés >> + Ремонт >> + + + Display text on repair + Wyświetl tekst przy naprawie + Отображать текст при ремонте + + + Display a notification whenever you repair a vehicle + Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. + Отображать оповещение каждый раз, когда вы ремонтируете транспорт + + + Repairing ... + Reparieren ... + Reparando ... + Réparation ... + Naprawianie... + Opravuji ... + Reparando ... + Sto riparando ... + javítása ... + Ремонтируем ... + + + Repairing %1 ... + Reparieren %1 ... + Reparando %1 ... + Réparation %1 ... + Naprawianie %1... + Opravuji %1 ... + Reparando %1 ... + Sto riparando %1 ... + %1 javítása ... + Ремонтируем %1 ... + + + Repaired %1 + %1 repariert + Reparado %1 + %1 réparé(e) + Naprawiono %1 + Opraveno - %1 + Reparado %1 + %1 Riparata/o + %1 megjavítva + %1 отремонтирован + + + Fully repaired part + Bauteil vollständig repariert + W pełni naprawiono część + Полностью отремонтированная часть + + + Partially repaired %1 + Bauteil teilweise repariert + Częściowo naprawiono: %1 + Частично отремонтировано: %1 + + + Fully repaired %1 + %1 vollständig repariert + W pełni naprawiono: %1 + Полностью отремонтировано: %1 + + + Partially repaired %1 + %1 teilweise repariert + Częściowo naprawiono: %1 + Частично отремонтировано: %1 + + + Body + Karosserie + Carrocería + Blindage + Karoseria + Karoserie + Carroceria + Carrozzeria + Test + Кузов + + + Hull + Wanne + Casco + Caisse + Kadłub + Trup + Chassi + Scafo + Test + Корпус + + + Engine + Motor + Motor + Moteur + Silnik + Motor + Motor + Motore + Motor + Двигатель + + + Left Horizontal Stabilizer + Левый горизонтальный стабилизатор + + + Right Horizontal Stabilizer + Правый горизонтальный стабилизатор + + + Vertical Stabilizer + Вертикальный стабилизатор + + + Fuel Tank + Tank + Depósito + Réservoir + Zbiornik paliwa + Palivová nádrž + Tanque de Combustível + Serbatoio + Üzemanyagtank + Топливный бак + + + Transmission + Трансмиссия + + + Gear + Коробка передач + + + Starter + Стартер + + + Tail + Хвост + + + Pilot Tube + Кокпит + + + Static Port + Статический иллюминатор + + + Ammo + Боеприпасы + + + Turret + Turm + Torreta + Tourelle + Wieżyczka + Věž + Torre + Torretta + Lövegtorony + Башню + + + Gun + Kanone + Cañón + Canon + Działo + Kanón + Canhão + Cannone + Ágyú + Пушку + + + Missiles + Ракеты + + + Left Track + Linke Kette + Cadena izquierda + Chenille gauche + Lewa gąsienica + Levý Pás + Lagarta Esquerda + Cingolo sinistro + Bal lánctalp + Левую гусеницу + + + Right Track + Rechte Kette + Cadena derecha + Chenille droite + Prawa gąsienica + Pravý Pás + Lagarta Direita + Cingolo destro + Jobb lánctalp + Правую гусеницу + + + Left Front Wheel + Linkes Vorderrad + Rueda frontal izquierda + Roue avant-gauche + Przednie lewe koło + Levé přední Kolo + Roda Dianteira Esquerda + Ruota frontale sinistra + Bal első kerék + Левое переднее колесо + + + Right Front Wheel + Rechtes Vorderrad + Rueda frontal derecha + Roue avant-droite + Przednie prawe koło + Pravé přední Kolo + Roda Dianteira Direita + Ruota frontale destra + Jobb első kerék + Правое переднее колесо + + + Second Left Front Wheel + Zweites linkes Vorderrad + Segunda rueda frontal izquierda + Deuxième roue avant-gauche + Drugie przednie lewe koło + Druhé Levé přední Kolo + Segunda Roda Dianteira Esquerda + Seconda ruota frontale sinistra + Második bal első kerék + Второе переднее левое колесо + + + Second Right Front Wheel + Zweites rechtes Vorderrad + Segunda rueda frontal derecha + Deuxième roue avant-droite + Drugie przednie prawe koło + Druhé Pravé přední Kolo + Segunda Roda Dianteira Direita + Seconda ruota frontale destra + Második jobb hátsó kerék + Второе правое переднее колесо + + + Left Middle Wheel + Linkes mittleres Rad + Rueda central izquierda + Roue centre-gauche + Środkowe lewe koło + Levé prostřední Kolo + Roda Intermediária Esquerda + Ruota centrale sinistra + Bal középső kerék + Левое среднее колесо + + + Right Middle Wheel + Rechtes mittleres Rad + Rueda central derecha + Roue centre-droite + Środkowe prawe koło + Pravé prostřední Kolo + Roda Intermediária Direita + Ruota centrale destra + Jobb középső kerék + Правое среднее колесо + + + Left Rear Wheel + Linkes Hinterrad + Rueda trasera izquierda + Roue arrière-gauche + Tylnie lewe koło + Levé zadní Kolo + Roda Traseira Esquerda + Ruota posteriore sinistra + Bal hátsó kerék + Левое заднее колесо + + + Right Rear Wheel + Rechtes Hinterrad + Rueda trasera derecha + Roue arrière-droite + Tylnie prawe koło + Pravé zadní Kolo + Roda Traseira Direita + Ruota posteriore destra + Jobb hátsó kerék + Правое заднее колесо + + + Avionics + Avionik + Aviónica + Avionique + Awionika + Elektronika + Aviônica + Avionica + Avionika + Авионику + + + Main Rotor + Hauptrotor + Rotor principal + Rotor principal + Główny rotor + Hlavní Rotor + Rotor Principal + Rotore principale + Főrotor + Несущий винт + + + Tail Rotor + Heckrotor + Rotor de cola + Rotor anticouple + Tylni rotor + Zadní Rotor + Rotor de Cauda + Rotore di coda + Farokrotor + Рулевой винт + + + Winch + Seilwinde + Wyciągarka + Лебедка + + + Glass (right) + Scheibe (rechts) + Ventana (derecha) + Vitre (droite) + Szyba (prawa) + Sklo (pravé) + Vidro (à direita) + Vetro destro + Jobb szélvédő + Стекло (справа) + + + Glass (left) + Scheibe (links) + Ventana (izquierda) + Vitre (gauche) + Szyba (lewa) + Sklo (pravé) + Vidro (à esquerda) + Vetro sinistro + Bal szélvédő + Стекло (слава) + + + Glass + Scheibe + Ventana + Vitre + Szyba + Sklo + Vidro + Vetro + Üveg + Стекло + + + Repair Settings + Ustawienia naprawy + Ремонт + + + Provides a repair system for all types of vehicles. + Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. + Предоставляет систему ремонта для всех типов транспортных средств. + + + Anyone + Ktokolwiek + Кто угодно + + + Engineer only + Tylko mechanicy + Только инженеры + + + Repair Specialist only + Tylko inżynierowie + Только ремонтные специалисты + + + Allow Wheel + Wymiana kół + Разрешить замену колес + + + Who can remove and replace wheels? + Kto może zdejmować i zmieniać koła? + Кто может снимать и заменять колеса? + + + Allow Repair + Możliwość naprawy + Разрешить ремонт + + + Who can perform repair actions? + Kto może wykonywać czynności związane z naprawą pojazdów? + Кто может выполнять ремонт? + + + Repair Threshold + Próg naprawy + Лимит ремкомплекта + + + What is the maximum damage that can be repaired with a toolkit? + Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? + Какой максимальный урон можно починить с помощью ремкомплекта? + + + Repair Threshold (Engineer) + Próg naprawy (mechanik) + Лимит инженера + + + What is the maximum damage that can be repaired by an engineer? + Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? + Какой максимальный урон может починить инженер? + + + Remove toolkit on use + Usuń narzędzia po użyciu + Удалять ремкомплект после использования + + + Should the toolkit be removed on usage? + Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? + Следует ли удалять ремкомплект после использования? + + + Anywhere + Wszędzie + Где угодно + + + Repair Vehicle only + Przy pojazdach naprawczych + Только у ремонтного транспорта + + + Repair Facility only + Przy budynkach naprawczych + Только у ремонтных сооружений + + + Repair Facility or Vehicle + Przy budynkach i pojazdach naprawczych + Только у ремонтного транспорта или ремонтных сооружений + + + Assign Engineer + Przydziel inżyniera + Назначить инженером + + + List + Lista + Список + + + List of unit names that will be classified as engineer, separated by commas. + Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. + Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. + + + Is Engineer + Poziom wyszkolenia + Это инженер + + + Select the engineering skill level of the unit + Wybierz biegłość w dziedzinie naprawy danej jednostki + Укажите уровень инженерного мастерства для юнита + + + None + Żadny + Нет + + + Engineer + Mechanik + Инженер + + + Specialist + Inżynier + Специалист + + + Assign one or multiple units as an engineer + Przydziel klasę inżyniera do jednej lub kilku jednostek + Назначить одного или нескольких юнитов инженерами + + + Assign Repair Vehicle + Przydziel pojazd naprawczy + Назначить ремонтный транспорт + + + List + Lista + Список + + + List of vehicles that will be classified as repair vehicle, separated by commas. + Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. + Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. + + + Is Repair Vehicle + Jest poj. naprawczym + Это ремонтный транспорт + + + Is the vehicle classified as a repair vehicle? + Czy pojazd jest zklasyfikowany jako pojazd naprawczy? + Классифицируется ли этот транспорт как ремонтный? + + + Assign one or multiple vehicles as a repair vehicle + Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. + Назначить одно или несколько транспортных средств ремонтными + + + Assign Repair Facility + Przydziel budynek naprawczy + Назначить ремонтное сооружение + + + List + Lista + Список + + + List of objects that will be classified as repair Facility, separated by commas. + Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. + Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. + + + Is Repair Facility + Jest bud. naprawczym + Это ремонтное сооружение + + + Is the object classified as a repair Facility? + Czy budynek jest zklasyfikowany jako budynek naprawczy? + Классифицируется ли этот объект как ремонтное сооружение? + + + Assign one or multiple objects as a repair Facility + Przydziel klasę budynku naprawczego do jednego lub kilku budynków. + Назначить один или несколько объектов ремонтными сооружениями + + + \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 99d189ca50..2326de0d76 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,246 +1,258 @@ - - - - - Deploy in 5 seconds ... - Déploiement dans 5 secondes ... - Wird in 5 Sekunden errichtet ... - Despliegue en 5 segundos ... - Возрождение через 5 секунд ... - Rozmieszczenie za 5 sekund ... - Respawn za 5 sekund... - Kihelyezés 5 másodperc múlva ... - Dispiegamento in 5 secondi ... - Será posicionado em 5 segundos ... - - - Rallypoint deployed - Point de ralliement déployé - Sammelpunkt errichtet - Punto de reunión desplegado - Точка сбора установлена - Punkt zbiórki rozmieszczony - Rallypoint umístěn - Gyülekezőpont elhelyezve - Rallypoint dispiegato - Rallypoints posicionado - - - Teleport to Base - Teleportovat na Základnu - Zur Basis teleportieren - Treletransportar a Base - Teleport do bazy - Телепортироваться на базу - Téléportation à la base - Teletransportar para a Base - Bázisra teleportálás - Teleporta alla base - - - Teleport to Rallypoint - Teleport na Rallypoint - Teletransportar a Punto de reunión - Zum Sammelpunkt teleportieren - Teleport do punktu zbiórki - Телепортироваться на точку сбора - Téléporation au point de ralliement - Teletransportar para o ponto de encontro - Gyülekezőpontra teleportálás - Teleporta al rallypoint - - - Teleported to Base - Téléporté à la base - Zur Basis teleportiert - Teletransportado a base - Вы были телепортированы на базу - Przeteleportowano do bazy - Teleportován na základnu - Bázisra teleportálva - Teleportato alla base - Teletransportado para a Base - - - Teleported to Rallypoint - Téléporté au point de déploiement - Zum Sammelpunkt teleportiert - Teletransportado al punto de reunión - Вы были телепортированы на точку сбора - Przeteleportowano do punktu zbiórki - Teleportován na rallypoint - Gyülekezőpontra teleportálva - Teleportato al rallypoint - Teletransportado para o Rallypoints - - - Rallypoint West (Base) - Sammelpunkt West (Basis) - Punto de reunión Oeste (Base) - Точка сбора Синих (База) - Punkt zbiórki Zachodu (Baza) - Point de ralliement OUEST (Base) - Rallypoint West (Base) - Gyülekezőpont, Nyugat (Bázis) - Rallypoint Západ (Základna) - Ponto de encontro Oeste (Base) - - - Rallypoint East (Base) - Sammelpunkt Ost (Basis) - Punto de reunión Este (Base) - Точка сбора Красных (База) - Punkt zbiórki Wschodu (Baza) - Point de ralliement EST (Base) - Rallypoint East (Base) - Gyülekezőpont, Kelet (Bázis) - Ralllypoint Východ (Základna) - Ponto de encontro Lest (Base) - - - Rallypoint Independent (Base) - Sammelpunkt Widerstand (Basis) - Punto de reunión Independiente (Base) - Точка сбора Независимых (База) - Punkt zbiórki Ruchu oporu (Baza) - Point de ralliement Indépendant (Base) - Rallypoint Independent (Base) - Gyülekezőpont, Független (Bázis) - Rallypoint Nezávislý (Základna) - Ponto de encontro Independente (Base) - - - Rallypoint West - Sammelpunkt West - Punto de reunión Oeste - Точка сбора Синих - Punkt zbiórki Zachodu - Point de ralliement OUEST - Rallypoint West - Gyülekezőpont, Nyugat - Rallypoint Západ - Ponto de encontro Oeste - - - Rallypoint East - Sammelpunkt Ost - Punto de reunión Este - Точка сбора Красных - Punkt zbiórki Wschodu - Point de ralliement EST - Rallypoint East - Gyülekezőpont, Kelet - Rallypoint Východ - Ponto de encontro Leste - - - Rallypoint Independent - Sammelpunkt Widerstand - Punto de reunión Independiente - Точка сбора Независимых - Punkt zbiórki Ruchu oporu - Point de ralliement Indépendant - Rallypoint Independent - Gyülekezőpont, Független - Rallypoint Nezávislý - Ponto de encontro Independente - - - Respawn System - System odrodzenia - Sistema de reaparición - Respawn-System - Systém znovuzrození - Sistema de Renascimento - Respawn-rendszer - - - Save Gear? - Zapisać ekwipunek? - ¿Guardar equipo? - Ausrüstung speichern? - Uložit výbavu? - Salvar equipamento? - Felszerelés elmentése? - - - Respawn with the gear a soldier had just before his death? - Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? - Reaparece con el equipo que el soldado tenía justo antes de morir - Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? - Znovuubjevit s výbavou kterou měl voják před smrtí? - Renascer com o equipamento que um soldado tinha antes de sua morte? - Az egység halála előtti felszerelésével való respawnolása? - - - Remove bodies? - Usuwać ciała? - ¿Eliminar cuerpos? - Körper entfernen? - Odstranit těla? - Remover corpos? - Holttestek eltávolítása? - - - Remove player bodies after disconnect? - Usuwaj ciała graczy po rozłączeniu z serwera? - Elimina los cuerpos de los jugadores cuando se desconecten - Entferne Spielerkörper nach dem Trennen einer Verbindung? - Odstranit hráčova těla po odpojení? - Remover corpos dos jogadores depois de desconectar? - Játékosi testek eltávolítása távozás után? - - - Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). - Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. - Tento modul umožňuje nastavení znovuzrození (spawn). - Este módulo permite que você personalize as configurações do renascimento (Spawn). - - - Friendly Fire Messages - Wiadomości Friendly Fire - Mensajes de fuego amigo - Freundbeschuss-Nachrichten - Upozornění na přátelskou střelbu - Mensagens de fogo amigo - Baráti tűz üzenetek - - - Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. - Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. - Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. - - - Rallypoint System - System punktu zbiórki - Sistema de punto de reunión - Rallypoint-System - Systém shromáždění - Sistema de ponto de encontro - Gyülekezőpont-rendszer - - - Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. - Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. - Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. - - - Move Rallypoint - Przenieś punkt zbiórki - Mover punto de reunión - Bewege Rallypoint - Přesun na shromaždiště - Mover para ponto de encontro - Gyülekezőpont mozgatása - - - ACE Respawn - ACE Odrodzenie - Reaparición ACE - ACE-Respawn - ACE Znovuzrození - ACE Respawn - ACE Respawn - - + + + + + Deploy in 5 seconds ... + Déploiement dans 5 secondes ... + Wird in 5 Sekunden errichtet ... + Despliegue en 5 segundos ... + Возрождение через 5 секунд ... + Rozmieszczenie za 5 sekund ... + Respawn za 5 sekund... + Kihelyezés 5 másodperc múlva ... + Dispiegamento in 5 secondi ... + Será posicionado em 5 segundos ... + + + Rallypoint deployed + Point de ralliement déployé + Sammelpunkt errichtet + Punto de reunión desplegado + Точка сбора установлена + Punkt zbiórki rozmieszczony + Rallypoint umístěn + Gyülekezőpont elhelyezve + Rallypoint dispiegato + Rallypoints posicionado + + + Teleport to Base + Teleportovat na Základnu + Zur Basis teleportieren + Treletransportar a Base + Teleport do bazy + Телепортироваться на базу + Téléportation à la base + Teletransportar para a Base + Bázisra teleportálás + Teleporta alla base + + + Teleport to Rallypoint + Teleport na Rallypoint + Teletransportar a Punto de reunión + Zum Sammelpunkt teleportieren + Teleport do punktu zbiórki + Телепортироваться на точку сбора + Téléporation au point de ralliement + Teletransportar para o ponto de encontro + Gyülekezőpontra teleportálás + Teleporta al rallypoint + + + Teleported to Base + Téléporté à la base + Zur Basis teleportiert + Teletransportado a base + Вы были телепортированы на базу + Przeteleportowano do bazy + Teleportován na základnu + Bázisra teleportálva + Teleportato alla base + Teletransportado para a Base + + + Teleported to Rallypoint + Téléporté au point de déploiement + Zum Sammelpunkt teleportiert + Teletransportado al punto de reunión + Вы были телепортированы на точку сбора + Przeteleportowano do punktu zbiórki + Teleportován na rallypoint + Gyülekezőpontra teleportálva + Teleportato al rallypoint + Teletransportado para o Rallypoints + + + Rallypoint West (Base) + Sammelpunkt West (Basis) + Punto de reunión Oeste (Base) + Точка сбора Синих (База) + Punkt zbiórki Zachodu (Baza) + Point de ralliement OUEST (Base) + Rallypoint West (Base) + Gyülekezőpont, Nyugat (Bázis) + Rallypoint Západ (Základna) + Ponto de encontro Oeste (Base) + + + Rallypoint East (Base) + Sammelpunkt Ost (Basis) + Punto de reunión Este (Base) + Точка сбора Красных (База) + Punkt zbiórki Wschodu (Baza) + Point de ralliement EST (Base) + Rallypoint East (Base) + Gyülekezőpont, Kelet (Bázis) + Ralllypoint Východ (Základna) + Ponto de encontro Lest (Base) + + + Rallypoint Independent (Base) + Sammelpunkt Widerstand (Basis) + Punto de reunión Independiente (Base) + Точка сбора Независимых (База) + Punkt zbiórki Ruchu oporu (Baza) + Point de ralliement Indépendant (Base) + Rallypoint Independent (Base) + Gyülekezőpont, Független (Bázis) + Rallypoint Nezávislý (Základna) + Ponto de encontro Independente (Base) + + + Rallypoint West + Sammelpunkt West + Punto de reunión Oeste + Точка сбора Синих + Punkt zbiórki Zachodu + Point de ralliement OUEST + Rallypoint West + Gyülekezőpont, Nyugat + Rallypoint Západ + Ponto de encontro Oeste + + + Rallypoint East + Sammelpunkt Ost + Punto de reunión Este + Точка сбора Красных + Punkt zbiórki Wschodu + Point de ralliement EST + Rallypoint East + Gyülekezőpont, Kelet + Rallypoint Východ + Ponto de encontro Leste + + + Rallypoint Independent + Sammelpunkt Widerstand + Punto de reunión Independiente + Точка сбора Независимых + Punkt zbiórki Ruchu oporu + Point de ralliement Indépendant + Rallypoint Independent + Gyülekezőpont, Független + Rallypoint Nezávislý + Ponto de encontro Independente + + + Respawn System + System odrodzenia + Sistema de reaparición + Respawn-System + Systém znovuzrození + Sistema de Renascimento + Respawn-rendszer + Возрождение + + + Save Gear? + Zapisać ekwipunek? + ¿Guardar equipo? + Ausrüstung speichern? + Uložit výbavu? + Salvar equipamento? + Felszerelés elmentése? + Сохранять снаряжение? + + + Respawn with the gear a soldier had just before his death? + Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? + Reaparece con el equipo que el soldado tenía justo antes de morir + Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? + Znovuubjevit s výbavou kterou měl voják před smrtí? + Renascer com o equipamento que um soldado tinha antes de sua morte? + Az egység halála előtti felszerelésével való respawnolása? + Возрождать солдата с тем же снаряжением, которое было на нем при смерти? + + + Remove bodies? + Usuwać ciała? + ¿Eliminar cuerpos? + Körper entfernen? + Odstranit těla? + Remover corpos? + Holttestek eltávolítása? + Удалять трупы? + + + Remove player bodies after disconnect? + Usuwaj ciała graczy po rozłączeniu z serwera? + Elimina los cuerpos de los jugadores cuando se desconecten + Entferne Spielerkörper nach dem Trennen einer Verbindung? + Odstranit hráčova těla po odpojení? + Remover corpos dos jogadores depois de desconectar? + Játékosi testek eltávolítása távozás után? + Удалять трупы игроков после дисконнекта? + + + Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). + Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. + Tento modul umožňuje nastavení znovuzrození (spawn). + Este módulo permite que você personalize as configurações do renascimento (Spawn). + Этот модуль позволяет настроить систему возрождения. + + + Friendly Fire Messages + Wiadomości Friendly Fire + Mensajes de fuego amigo + Freundbeschuss-Nachrichten + Upozornění na přátelskou střelbu + Mensagens de fogo amigo + Baráti tűz üzenetek + Сообщения о дружественном огне (Friendly Fire) + + + Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. + Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. + Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. + Отображает сообщение в чате, в случае, когда убивают союзных игроков. В докладе указывается, кто стрелял, в кого. Кто кого убил. + + + Rallypoint System + System punktu zbiórki + Sistema de punto de reunión + Rallypoint-System + Systém shromáždění + Sistema de ponto de encontro + Gyülekezőpont-rendszer + Система точек сбора + + + Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. + Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. + Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. + Этот модуль позволяет вам указать место сбора, куда вы можете быстро телепортироваться с "базы". Требуется наличие соответствующих объектов на карте - базы и флага. Они могут быть найдены в категории Пусто -> ACE Возрождения. + + + Move Rallypoint + Przenieś punkt zbiórki + Mover punto de reunión + Bewege Rallypoint + Přesun na shromaždiště + Mover para ponto de encontro + Gyülekezőpont mozgatása + Двигать точку сбора + + + ACE Respawn + ACE Odrodzenie + Reaparición ACE + ACE-Respawn + ACE Znovuzrození + ACE Respawn + ACE Respawn + ACE Возрождение + + \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index e26c2b36f0..d0fe778da8 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -1,45 +1,50 @@ - - - - - Sit Down - Usiądź - Sentar - Sednout si - Sentarse - Leülés - - - Stand Up - Wstań - Levantar - Vstát - Levantarse - Felállás - - - Enable Sitting - Habilitar opção para sentar - Aktywuj siadanie - Povolit sezení - Acivar asiento - Ülés engedélyezése - - - Sitting - Sentado - Siadanie - Sedící - Sentarse - Ülés - - - This module allows you to disable the ability to sit on chairs and toilets. - Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. - Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. - Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. - Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos. - Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. - - + + + + + Sit Down + Usiądź + Sentar + Sednout si + Sentarse + Leülés + Сесть + + + Stand Up + Wstań + Levantar + Vstát + Levantarse + Felállás + Встать + + + Enable Sitting + Habilitar opção para sentar + Aktywuj siadanie + Povolit sezení + Acivar asiento + Ülés engedélyezése + Разрешить сидение + + + Sitting + Sentado + Siadanie + Sedící + Sentarse + Ülés + Сидение + + + This module allows you to disable the ability to sit on chairs and toilets. + Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. + Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. + Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. + Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos. + Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. + Этот модуль позволяет вам запретить возможность садиться на стулья и туалеты. + + \ No newline at end of file diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 843554061d..b690380e39 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -1,83 +1,96 @@ - - - - - Slideshow - Pokaz slajdów - Vetítés - Apresentação de Slides - - - This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. - Ten moduł pozwala skonfigurować pokaz slajdów na różnych obiektach. Jeden moduł na jedną liste slajdów. Tylko obiekty z hiddenSelection 0 są wspierane. - Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. - Este módulo permite que você monte apresentações de slides em diferentes objetos. Um módulo por lista de imagem. Somente objetos com hiddenSelection 0 são suportados. - - - Objects - Obiekty - Objektumok - Objetos - - - Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. - Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł. - Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. - Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto. - - - Controllers - Kontroler - Vezérlők - Controles - - - Controller object names, separated by commas if multiple. - Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. - Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. - Nome dos objetos de controle, separado por vírgula se mais de um. - - - Images - Obrazy - Képek - Imagens - - - List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). - Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). - A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) - Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). - - - Interaction Names - Nazwy interakcji - Interakciós nevek - Nomes de Interação - - - List of names that will be used for interaction entries, separated by commas, in order of images. - Lista nazw, które zostaną użyte do nazwania wpisów interakcji, oddzielone przecinkiem, w kolejności obrazów. - Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. - Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. - - - Slide Duration - Czas trwania slajdów - Dia időtartam - Duração do Slide - - - Duration of each slide. Default: 0 (Automatic Transitions Disabled) - Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone) - A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) - Duração de cada slide. Padrão: 0 (Transição automática desabilitada) - - - Slides - Slajdy - Diák - Slides - - - + + + + + Slideshow + Pokaz slajdów + Vetítés + Apresentação de Slides + Слайд-шоу + + + This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. + Ten moduł pozwala skonfigurować pokaz slajdów na różnych obiektach. Jeden moduł na jedną liste slajdów. Tylko obiekty z hiddenSelection 0 są wspierane. + Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. + Este módulo permite que você monte apresentações de slides em diferentes objetos. Um módulo por lista de imagem. Somente objetos com hiddenSelection 0 são suportados. + Этот модуль позволяет вам устроить слайд-шоу на различных объектах. Один модуль на один список изображений. Поддерживаются только объекты с hiddenSelection 0. + + + Objects + Obiekty + Objektumok + Objetos + Объекты + + + Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. + Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł. + Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. + Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto. + Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми. Посмотрите описание, чтобы понять, какие объекты поддерживаются. + + + Controllers + Kontroler + Vezérlők + Controles + Контроллеры + + + Controller object names, separated by commas if multiple. + Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. + Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. + Nome dos objetos de controle, separado por vírgula se mais de um. + Имена объектов-контроллеров, разделенные запятыми. + + + Images + Obrazy + Képek + Imagens + Изображения + + + List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). + Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). + A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) + Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). + Список изображений, которые будут использованы для слайд-шоу, разделенные запятыми, с полными путями в правильном формате (например, images\image.paa). + + + Interaction Names + Nazwy interakcji + Interakciós nevek + Nomes de Interação + Интерактивные имена + + + List of names that will be used for interaction entries, separated by commas, in order of images. + Lista nazw, które zostaną użyte do nazwania wpisów interakcji, oddzielone przecinkiem, w kolejności obrazów. + Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. + Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. + Список имен, которые будут использованы при взаимодействии, разделенные запятыми, в порядке следования изображений. + + + Slide Duration + Czas trwania slajdów + Dia időtartam + Duração do Slide + Длительность слайда + + + Duration of each slide. Default: 0 (Automatic Transitions Disabled) + Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone) + A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) + Duração de cada slide. Padrão: 0 (Transição automática desabilitada) + Длительность каждого слайда. По-умолчанию: 0 (автоматический переход отключен) + + + Slides + Slajdy + Diák + Slides + Слайды + + + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 5c24224b72..e4f2bb0b77 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -1,271 +1,337 @@ - - - - - Spectator Settings - Ustawienia obserwatora - - - Configure how the spectator system will operate by default. - Skonfiguruj domyślne ustawienia obserwatora. - - - Unit filter - Filtr jednostek - - - Method of filtering spectatable units. - Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. - - - No units - Brak jednostek - - - Only players - Tylko gracze - - - Playable Units - Grywalne jednostki - - - All units - Wszystkie jednostki - - - Side filter - Filtr stron - - - Method of filtering spectatable sides. - Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. - - - Player side - Strona gracza - - - Friendly sides - Strony sojusznicze - - - Hostile sides - Strony wrogie - - - All sides - Wszystkie strony - - - Camera modes - Tryby kamery - - - Camera modes that can be used. - Tryby kamery, jakie mogą być używane. - - - All - Wszystkie - - - Free only - Tylko wolna - - - Internal only - Tylko wewnętrzna - - - External only - Tylko zewnętrzna - - - Internal and external - Wewnętrzna i zewnętrzna - - - Vision modes - Tryby wizji - - - Vision modes that can be used. - Tryby wizji, jakie mogą być używane. - - - Night vision - Noktowizja - - - Thermal imaging - Termowizja - - - - Spectator Units - Jednostki obserwatora - - - Spectator Controls - Sterowanie obserwatorem - - - Free - Wolna - - - Internal - Wewnętrzna - - - External - Zewnętrzna - - - Normal - Normalna - - - Night - Noc - - - Thermal - Termo - - - - Free Camera - Kamera swobodna - - - Camera Forward - Kamera naprzód - - - Camera Backward - Kamera w tył - - - Camera Left - Kamera w lewo - - - Camera Right - Kamera w prawo - - - Camera Up - Kamera w górę - - - Camera Down - Kamera w dół - - - Pan Camera - Panoramowanie - - - Dolly Camera - Płynna kamera - - - Lock Camera to Target - Zablokuj kamerę na celu - - - Speed Boost - Przyśpieszenie kamery - - - Focus on Unit - Skup na jednostce - - - Interface - Interfejs - - - Toggle Interface - Przełącz interfejs - - - Toggle Unit Icons - Przełącz ikony jednostek - - - Toggle Unit List - Przełącz listę jednostek - - - Toggle Toolbar - Przełącz pasek narzędzi - - - Toggle Compass - Przełącz kompas - - - Toggle Map - Przełącz mapę - - - Toggle Help - Przełącz pomoc - - - Camera Attributes - Atrybuty kamery - - - Next Camera - Następna kamera - - - Previous Camera - Poprzednia kamera - - - Next Unit - Następna jednostka - - - Previous Unit - Poprzednia jednostka - - - Next Vision Mode - Następny tryb wizji - - - Previous Vision Mode - Poprzedni tryb wizji - - - Adjust Zoom - Reguluj zoom - - - Adjust Speed - Reguluj prędkość - - - Increment Zoom - Reguluj zoom (krok) - - - Increment Speed - Reguluj prędkość (krok) - - - Reset Zoom - Resetuj zoom - - - Reset Speed - Resetuj prędkość - - - + + + + + Spectator Settings + Ustawienia obserwatora + Настройки спектатора + + + Configure how the spectator system will operate by default. + Skonfiguruj domyślne ustawienia obserwatora. + Определяют, как система спектатора будет функционировать по-умолчанию. + + + Unit filter + Filtr jednostek + Фильтр юнитов + + + Method of filtering spectatable units. + Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. + Метод фильтрации наблюдаемых юнитов. + + + No units + Brak jednostek + Никто + + + Only players + Tylko gracze + Только игроки + + + Playable Units + Grywalne jednostki + Играбельные юниты + + + All units + Wszystkie jednostki + Все юниты + + + Side filter + Filtr stron + Фильтр стороны + + + Method of filtering spectatable sides. + Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. + Метод фильтрации наблюдаемых сторон. + + + Player side + Strona gracza + Сторона игрока + + + Friendly sides + Strony sojusznicze + Дружественные стороны + + + Hostile sides + Strony wrogie + Враждебные стороны + + + All sides + Wszystkie strony + Все стороны + + + Camera modes + Tryby kamery + Режимы камеры + + + Camera modes that can be used. + Tryby kamery, jakie mogą być używane. + Режимы камеры, которые могут быть использованы + + + All + Wszystkie + Все + + + Free only + Tylko wolna + Только свободная + + + Internal only + Tylko wewnętrzna + Только внутренняя + + + External only + Tylko zewnętrzna + Только внешняя + + + Internal and external + Wewnętrzna i zewnętrzna + Внутренняя и внешняя + + + Vision modes + Tryby wizji + Режимы видения + + + Vision modes that can be used. + Tryby wizji, jakie mogą być używane. + Режимы видения, которые могут быть использованы + + + Night vision + Noktowizja + Ночное видение + + + Thermal imaging + Termowizja + Тепловизионное + + + + Spectator Units + Jednostki obserwatora + Юниты + + + Spectator Controls + Sterowanie obserwatorem + Управление спектатором + + + Free + Wolna + Свободная + + + Internal + Wewnętrzna + Внутренняя + + + External + Zewnętrzna + Внешняя + + + Normal + Normalna + Нормальное + + + Night + Noc + Ночное + + + Thermal + Termo + Тепловизор + + + + Free Camera + Kamera swobodna + Свободная камера + + + Camera Forward + Kamera naprzód + Камера вперед + + + Camera Backward + Kamera w tył + Камера назад + + + Camera Left + Kamera w lewo + Камера влево + + + Camera Right + Kamera w prawo + Камера вправо + + + Camera Up + Kamera w górę + Камера вверх + + + Camera Down + Kamera w dół + Камера вниз + + + Pan Camera + Panoramowanie + Панорамирование + + + Dolly Camera + Płynna kamera + Рельсовая камера + + + Lock Camera to Target + Zablokuj kamerę na celu + Зафиксировать камеру на цели + + + Speed Boost + Przyśpieszenie kamery + Ускорение камеры + + + Focus on Unit + Skup na jednostce + Фокус на юните + + + Interface + Interfejs + Интерфейс + + + Toggle Interface + Przełącz interfejs + Переключить интерфейс + + + Toggle Unit Icons + Przełącz ikony jednostek + Вкл./выкл. иконки юнитов + + + Toggle Unit List + Przełącz listę jednostek + Вкл./выкл. список юнитов + + + Toggle Toolbar + Przełącz pasek narzędzi + Вкл./выкл. тулбар + + + Toggle Compass + Przełącz kompas + Вкл./выкл. компас + + + Toggle Map + Przełącz mapę + Вкл./выкл. карту + + + Toggle Help + Przełącz pomoc + Вкл./выкл. помощь + + + Camera Attributes + Atrybuty kamery + Атрибуты камеры + + + Next Camera + Następna kamera + Следующая камера + + + Previous Camera + Poprzednia kamera + Предыдущая камера + + + Next Unit + Następna jednostka + Следующий юнит + + + Previous Unit + Poprzednia jednostka + Предыдущий юнит + + + Next Vision Mode + Następny tryb wizji + Следующий режим видения + + + Previous Vision Mode + Poprzedni tryb wizji + Предыдущий режим видения + + + Adjust Zoom + Reguluj zoom + Настроить зум + + + Adjust Speed + Reguluj prędkość + Настроить скорость + + + Increment Zoom + Reguluj zoom (krok) + Увеличить зум + + + Increment Speed + Reguluj prędkość (krok) + Увеличить скорость + + + Reset Zoom + Resetuj zoom + Сбросить зум + + + Reset Speed + Resetuj prędkość + Сбросить скорость + + + \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index 71ef5a9704..bf8804222e 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -1,151 +1,165 @@ - - - - - Switched unit - Einheit gewechselt - Юнит переключён - Prohozená jednotka - Przełącz jednostkę - Cambiado de unidad - Unité changée - Egység átváltva - Cambia unità - Trocado de unidade - - - This unit is too close to the enemy. - Diese Einheit ist zu nah am Feind. - Юнит слишком близок к противнику. - Tato jednotka je moc blízko k nepříteli. - Ta jednostka jest zbyt blisko przeciwnika. - Esta unidad está demasiado cerca del enemigo. - Cette unité est trop proche des ennemis - Ez az egység túl közel van az ellenséghez. - Questa unità è troppo vicina al nemico. - Essa unidade está muito perto do inimigo. - - - SwitchUnits System - System zmiany stron - Sistema de cambio de unidad - Einheiten-Switch-System? - Systém výměny stran - Sistema de troca de unidades - Egységváltó-rendszer - - - Switch to West? - Zmiana na Zachód? - ¿Cambiar a Oeste? - Nach BLUFOR wechseln? - Přesunout k BLUFOR? - Trocar para Oeste? - Átváltás BLUFOR-ra? - - - Allow switching to west units? - Pozwolić zmieniać graczom stronę na Zachód? - ¿Permitir cambios a unidades del Oeste? - Erlaube das Wechseln zu BLUFOR-Einheiten? - Povolit přesun k BLUFOR? - Permitir troca de unidades para o Oeste? - Nyugat-fakciós egységekre való váltás engedélyezése? - - - Switch to East? - Zmiana na Wschód? - ¿Cambiar a Este? - Nach OPFOR wechseln? - Přesunout k OPFOR? - Trocar para Leste? - Átváltás OPFOR-ra? - - - Allow switching to east units? - Pozwolić zmieniać graczom stronę na Wschód? - ¿Permitir cambios a unidades del Este? - Erlaube das Wechseln zu OPFOR-Einheiten? - Povolit přesun k OPFOR? - Permitir troca de unidades para o Leste? - Kelet-fakciós egységekre való váltás engedélyezése? - - - Switch to Independent? - Zmiana na Ruch Oporu? - ¿Cambiar a Independiente? - Nach INDFOR wechseln? - Přesunout k INDFOR? - Trocar para Indenpendente - Átváltás INDFOR-ra? - - - Allow switching to independent units? - Pozwolić zmieniać stronę na Ruch Oporu? - ¿Permitir cambios a unidades Independientes? - Erlaube das Wechseln zu INDFOR-Einheiten? - Povolit přesun k INDFOR? - Permitir troca de unidades para o Indenpendente? - Független egységekre való váltás engedélyezése? - - - Switch to Civilian? - Zmiana na Cywili? - ¿Cambiar a Civil? - Nach CIVILIAN wechseln? - Přesunout k CIVILISTŮM? - Trocar para Civis? - Átváltás civilre? - - - Allow switching to civilian units? - Pozwolić zmieniać stronę na Cywili? - ¿Permitir cambios a unidades Civiles - Erlaube das Wechseln zu CIVILIAN-Einheiten? - Povolit přesun k CIVILISTŮM? - Permitir troca de unidades para o Civil? - Civil egységekre való váltás engedélyezése? - - - Enable Safe Zone? - Aktywuj bezp. strefę? - ¿Habilitar zona segura? - Aktiviere Sicherheitszone? - Povolit bezpečné oblasti? - Habilitar zona segura? - Biztonságos zóna engedélyezése? - - - Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. - Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy. - Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. - Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. - Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. - Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. - Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. - - - Safe Zone Radius - Promień bezp. strefy - Radio de la zona segura - Sicherheitszonenradius - Oblast bezpečné zóny - Raio da zona segura - Biztonságos zóna hatóköre - - - The safe zone around players from a different team. Default: 200 - Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 - La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200 - Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 - Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 - A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 - A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 200 - - - Moduł ten pozwala na zmianę strony w trakcie gry. - Tento modul umožňuje přepínání mazi dostupnými stranami. - Este módulo permite mudar o lado à disposição dos jogadores. - - + + + + + Switched unit + Einheit gewechselt + Юнит переключён + Prohozená jednotka + Przełącz jednostkę + Cambiado de unidad + Unité changée + Egység átváltva + Cambia unità + Trocado de unidade + + + This unit is too close to the enemy. + Diese Einheit ist zu nah am Feind. + Юнит слишком близок к противнику. + Tato jednotka je moc blízko k nepříteli. + Ta jednostka jest zbyt blisko przeciwnika. + Esta unidad está demasiado cerca del enemigo. + Cette unité est trop proche des ennemis + Ez az egység túl közel van az ellenséghez. + Questa unità è troppo vicina al nemico. + Essa unidade está muito perto do inimigo. + + + SwitchUnits System + System zmiany stron + Sistema de cambio de unidad + Einheiten-Switch-System? + Systém výměny stran + Sistema de troca de unidades + Egységváltó-rendszer + Переключение между юнитами + + + Switch to West? + Zmiana na Zachód? + ¿Cambiar a Oeste? + Nach BLUFOR wechseln? + Přesunout k BLUFOR? + Trocar para Oeste? + Átváltás BLUFOR-ra? + На синих? + + + Allow switching to west units? + Pozwolić zmieniać graczom stronę na Zachód? + ¿Permitir cambios a unidades del Oeste? + Erlaube das Wechseln zu BLUFOR-Einheiten? + Povolit přesun k BLUFOR? + Permitir troca de unidades para o Oeste? + Nyugat-fakciós egységekre való váltás engedélyezése? + Разрешить переключаться на синих юнитов? + + + Switch to East? + Zmiana na Wschód? + ¿Cambiar a Este? + Nach OPFOR wechseln? + Přesunout k OPFOR? + Trocar para Leste? + Átváltás OPFOR-ra? + На красных? + + + Allow switching to east units? + Pozwolić zmieniać graczom stronę na Wschód? + ¿Permitir cambios a unidades del Este? + Erlaube das Wechseln zu OPFOR-Einheiten? + Povolit přesun k OPFOR? + Permitir troca de unidades para o Leste? + Kelet-fakciós egységekre való váltás engedélyezése? + Разрешить переключаться на красных юнитов? + + + Switch to Independent? + Zmiana na Ruch Oporu? + ¿Cambiar a Independiente? + Nach INDFOR wechseln? + Přesunout k INDFOR? + Trocar para Indenpendente + Átváltás INDFOR-ra? + На независимых? + + + Allow switching to independent units? + Pozwolić zmieniać stronę na Ruch Oporu? + ¿Permitir cambios a unidades Independientes? + Erlaube das Wechseln zu INDFOR-Einheiten? + Povolit přesun k INDFOR? + Permitir troca de unidades para o Indenpendente? + Független egységekre való váltás engedélyezése? + Разрешить переключаться на независимых юнитов? + + + Switch to Civilian? + Zmiana na Cywili? + ¿Cambiar a Civil? + Nach CIVILIAN wechseln? + Přesunout k CIVILISTŮM? + Trocar para Civis? + Átváltás civilre? + На гражданских? + + + Allow switching to civilian units? + Pozwolić zmieniać stronę na Cywili? + ¿Permitir cambios a unidades Civiles + Erlaube das Wechseln zu CIVILIAN-Einheiten? + Povolit přesun k CIVILISTŮM? + Permitir troca de unidades para o Civil? + Civil egységekre való váltás engedélyezése? + Разрешить переключаться на гражданских юнитов? + + + Enable Safe Zone? + Aktywuj bezp. strefę? + ¿Habilitar zona segura? + Aktiviere Sicherheitszone? + Povolit bezpečné oblasti? + Habilitar zona segura? + Biztonságos zóna engedélyezése? + Безопасная зона + + + Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. + Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy. + Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. + Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. + Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. + Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. + Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. + Включить безопасную зону вокруг вражеских юнитов? Игроки не могут переключаться на юнитов, находящихся в безопасной зоне. + + + Safe Zone Radius + Promień bezp. strefy + Radio de la zona segura + Sicherheitszonenradius + Oblast bezpečné zóny + Raio da zona segura + Biztonságos zóna hatóköre + Радиус безопасной зоны + + + The safe zone around players from a different team. Default: 200 + Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 + La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200 + Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 + Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 + A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 + A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 200 + Радиус безопасной зоны вокруг ироков из противоположной команды. По-умолчанию: 200 + + + Moduł ten pozwala na zmianę strony w trakcie gry. + Tento modul umožňuje přepínání mazi dostupnými stranami. + Este módulo permite mudar o lado à disposição dos jogadores. + Этот модуль позволяет игрокам переключаться между доступными юнитами. + + \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 53a6935484..63e2f963c2 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -1,74 +1,75 @@ - - - - - Telescopic Ladder - Teleskopleiter - Телескопическая лестница - Drabina teleskopowa - Escalera telescópica - Telescopic Ladder - Teleskopický žebřík - Telescopic Ladder - Teleszkopikus létra - Escada telescópica - - - Deploy ladder - Leiter aufbauen - Установить лестницу - Rozłóż drabinę - Despelgar escalera - Deploy ladder - Rozložit žebřík - Deploy ladder - Létra lerakása - Implantar escada - - - Drop ladder - Leiter ablegen - Положить лестницу - Zostaw drabinę - Soltar escalera - Drop ladder - Položit žebřík - Drop ladder - Létra eldobása - Derrubar escada - - - Adjust ladder - Leiter einstellen - Reguluj drabinę - Upravit žebřík - Ajustar escalera - Ajustar escada - Létra állítása - - - Position ladder - Leiter positionieren - Перенести лестницу - Postaw drabinę - Colocar escalera - Position ladder - Umístit žebřík - Position ladder - Létra elhelyezése - Posicionar escada - - - Pickup ladder - Leiter aufnehmen - Взять лестницу - Zabierz drabinę - Recoger escalera - Pickup ladder - Vzít žebřík - Pickup ladder - Létra felvétele - Pegar escada - - + + + + + Telescopic Ladder + Teleskopleiter + Телескопическая лестница + Drabina teleskopowa + Escalera telescópica + Telescopic Ladder + Teleskopický žebřík + Telescopic Ladder + Teleszkopikus létra + Escada telescópica + + + Deploy ladder + Leiter aufbauen + Установить лестницу + Rozłóż drabinę + Despelgar escalera + Deploy ladder + Rozložit žebřík + Deploy ladder + Létra lerakása + Implantar escada + + + Drop ladder + Leiter ablegen + Положить лестницу + Zostaw drabinę + Soltar escalera + Drop ladder + Položit žebřík + Drop ladder + Létra eldobása + Derrubar escada + + + Adjust ladder + Leiter einstellen + Reguluj drabinę + Upravit žebřík + Ajustar escalera + Ajustar escada + Létra állítása + Выровнять лестницу + + + Position ladder + Leiter positionieren + Перенести лестницу + Postaw drabinę + Colocar escalera + Position ladder + Umístit žebřík + Position ladder + Létra elhelyezése + Posicionar escada + + + Pickup ladder + Leiter aufnehmen + Взять лестницу + Zabierz drabinę + Recoger escalera + Pickup ladder + Vzít žebřík + Pickup ladder + Létra felvétele + Pegar escada + + \ No newline at end of file diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index fc74ed8b92..8273cda728 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -1,65 +1,69 @@ - - - - - SSWT Kit - Scharfschützenzweibein - Снайперский штатив - Trójnóg snajperski - SSWT Kit - SSWT Kit - SSWT souprava - SSWT Kit - SSWT Készlet - Kit SSWT - - - Place SSWT Kit - Scharfschützenzweibein aufstellen - Установить снайперский штатив - Postaw trójnóg snajperski - Place SSWT Kit - Place SSWT Kit - Rozlož souprava SSWT - Place SSWT Kit - SSWT készlet elhelyezése - Colocar kit SSWT - - - Pick up SSWT Kit - Podnieś trójnóg snajperski - Coger equipo SSWT - Zvednout SSWT soupravu - SSWT-Werkzeug aufheben - Pegar kit SSWT - SSWT készlet felvétele - - - Adjust SSWT Kit - Reguluj trójnóg snajperski - Ajustar equipo SSWT - Regulovat SSWT soupravu - SSWT-Werkzeug anpassen - Ajustar kit SSWT - SSWT készlet állítása - - - Done - Gotowe - Hecho - Hotovo - Fertig - Feito - Kész - - - + Modifier, adjust - + Modyfikator, regulacja - + Modificador, ajuste - + Modifikátor, regulace - + Modifikator, anpassen - + Modificador, ajuste - + Módosító, szabályzás - - + + + + + SSWT Kit + Scharfschützenzweibein + Снайперский штатив + Trójnóg snajperski + SSWT Kit + SSWT Kit + SSWT souprava + SSWT Kit + SSWT Készlet + Kit SSWT + + + Place SSWT Kit + Scharfschützenzweibein aufstellen + Установить снайперский штатив + Postaw trójnóg snajperski + Place SSWT Kit + Place SSWT Kit + Rozlož souprava SSWT + Place SSWT Kit + SSWT készlet elhelyezése + Colocar kit SSWT + + + Pick up SSWT Kit + Podnieś trójnóg snajperski + Coger equipo SSWT + Zvednout SSWT soupravu + SSWT-Werkzeug aufheben + Pegar kit SSWT + SSWT készlet felvétele + Подобрать снайперский штатив + + + Adjust SSWT Kit + Reguluj trójnóg snajperski + Ajustar equipo SSWT + Regulovat SSWT soupravu + SSWT-Werkzeug anpassen + Ajustar kit SSWT + SSWT készlet állítása + Выровнять снайперский штатив + + + Done + Gotowe + Hecho + Hotovo + Fertig + Feito + Kész + Готово + + + + Modifier, adjust + + Modyfikator, regulacja + + Modificador, ajuste + + Modifikátor, regulace + + Modifikator, anpassen + + Modificador, ajuste + + Módosító, szabályzás + + Модификатор, подстройка + + \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index c190117fd0..644f2152d4 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -1,254 +1,267 @@ - - - - - Unlock Vehicle - Fahrzeug aufschließen - Abrir vehículo - Déverrouiller le véhicule - Odblokuj pojazd - Odemknout vozidlo - Jármű nyitása - Открыть машину - Sblocca il veicolo - Destravar veículo - - - Lock Vehicle - Fahrzeug abschließen - Cerrar vehículo - Verrouiller le véhicule - Zablokuj pojazd - Zamknout vozidlo - Jármű zárása - Закрыть машину - Chiudi il veicolo a chiave - Travar Veículo - - - Lockpick Vehicle - Fahrzeug knacken - Forzar vehículo - Crocheter le véhicule - Otwórz zamek - Vypáčit vozidlo - Jármű feltörése - Взломать замок - Scassina veicolo - Usar mixa no Veículo - - - Picking Lock.... - Schloss knacken... - Forzando cerradura... - Crochetage... - Otwieranie zamka... - Páčim vozidlo... - Zár feltörése... - Взламываем замок... - Scassino il veicolo.... - Usando Mixa... - - - A custom key that will open a specific vehicle. - Ein Schlüssel der ein bestimmtes Fahrzeug aufschließt. - Una llave concreta abrirá un vehículo concreto. - Une clé propre à un seul véhicule. - Unikatowy klucz, który otworzy konkretny pojazd. - Vlastní klíč, který otevře konkrétní vozidlo. - Egy egyedi kulcs, ami egy meghatározott járművet nyit ki. - Ключ от конкретной машины. - Una chiave personalizzata che apre determinati veicoli. - Uma chave específica que abre um veículo específico. - - - A Master Key will open any lock, no matter what! - Ein Generalschlüssel der jedes Schloss öffnet... - Una llave maestra abrirá cualquier cierre, no importa cual! - Un passe-partout qui ouvrira n'importe quelle serrure. - Uniwersalny klucz, który otworzy każdy zamek. - Hlavní klíč otevře libovolný zámek, bez vyjímek! - Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül! - Универсальный ключ, открывающий любой замок. - Un passe-partout che apre qualsiasi serratura! - Uma chave mestre irá abrir qualquer fechadura, não importa qual! - - - A lockpick set that can pick the locks of most vehicles. - Ein Dietrich der die meisten Fahrzeugschlösser knacken kann... - Un set de ganzúas que puede abrir las cerraduras de la mayoría vehículos. - Un crochet qui ouvrira la plupart des véhicules. - Zestaw wytrychów, dzięki któremu można otworzyć zamki w większości pojazdów. - Sada paklíčů, která dokáže odemknout zámky u většiny vozidel. - Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni. - Набор отмычек, которым можно взломать почти любую машину. - Un grimardello per forzare la maggior parte dei veicoli - Um set de chave mixas que pode abrir a maioria dos veículos. - - - A key that should open most WEST vehicles. - Ein Schlüssel der die meisten westlichen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos occidentales. - Une clé qui ouvrira la plupart des véhicules OUEST. - Klucz, który powinien otworzyć większość pojazdów ZACHODU. - Klíč který by měl otevřít většinou Západních vozidel. - Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni. - Ключ для открытия большинства машин Красных. - Una chiave che apre la maggior parte dei veicoli occidentali - Uma chave que abre a maioria dos veículos ocidentais - - - A key that should open most EAST vehicle. - Ein Schlüssel der die meisten östlichen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos orientales. - Une clé qui ouvrira la plupart des véhicules EST. - Klucz, który powinien otworzyć większość pojazdów WSCHODU. - Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. - Klíč který by měl otevřít vetšinu Východních vozidel. - Ключ для открытия большинства машин Синих. - Una chaive che apre la maggior parte dei veicoli orientali - Uma chave que abre a maioria dos veículos orientais - - - A key that should open most INDEP vehicle. - Ein Schlüssel der die meisten Fahrzeuge der Aufständischen öffnen sollte... - Una llave que abrirá la mayoría de vehículos independientes. - Une clé qui ouvrira la plupart des véhicules INDEP. - Klucz, który powinien otworzyć większość pojazdów INDFOR. - Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. - Klíč který by měl otevřít většinu Nezávislých vozidel. - Ключ для открытия большинства машин Независимых. - Una chaive che apre la maggior parte dei veicoli degli indipendenti - Uma chave que abre a maioria dos veículos independentes - - - A key that should open most CIV vehicle. - Ein Schlüssel der die meisten zivilen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos civiles. - Une clé qui ouvrira la plupart des véhicules CIV. - Klucz, który powinien otworzyć większość pojazdów CYWILNYCH. - Klíč který by měl otevřít většinu Civilních vozidel. - Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. - Ключ для открытия большинства машин Гражданских. - Una chaive che apr ela maggior parte dei veicoli civili - Uma chave que abre a maioria dos veículos civis. - - - Vehicle Lock Setup - Ustawienie blokady pojazdów - Configuración del cierre del vehiculo - Fahrzeugsperreinstellungen - Nastavení zámku vozidla - Configuração de fechadura do veículo - Jármű-zár beállítás - - - Lock Vehicle Inventory - Zablokuj ekwipunek pojazdu - Bloquear inventario del vehículo - Sperre Fahrzeuginventar - Inventář zamčeného vozidla - Bloquear inventário do veículo - Jármű rakodótér zárás - - - Locks the inventory of locked vehicles - Blokuje dostęp do ekwipunku pojazdu - Bloquea el inventario de los vehículos cerrados - Sperrt das Inventar von gesperrten Fahrzeugen - Zamknout inventář u zamčených vozidel - Bloqueia o inventário de veículos fechados - Bezárja a zárt járművek rakterét is - - - Vehicle Starting Lock State - Początkowy stan blok. poj. - Estado inicial del cierre en vehículos - Fahrzeuge spawnen gesperrt - Počáteční stav zámku vozidla - Estado inicial da fechadura dos veículos - Jármű kezdő zár-állapot - - - Set lock state for all vehicles (removes ambiguous lock states) - Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) - Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos) - Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) - Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) - Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) - Beállítja a zár-állapotot az összes járműhöz (eltávolítja az azonosíthatatlan zárállapotokat) - - - As Is - Jak jest - Está - Unverändert - Jak je - Como está - Úgy-ahogy - - - Locked - Zablokowany - Cerrado - Gesperrt - Zamčeno - Fechado - Zárva - - - Unlocked - Odblokowany - Abierto - Offen - Odemčeno - Aberto - Nyitva - - - Default Lockpick Strength - Czas włamywania - Durabilidad de la ganzua por defecto - Standard-Pick-Stärke - Výchozí síla páčidla - Durabilidade padrão da chave micha - Alapértelmezett zártörő-erősség - - - Default Time to lockpick (in seconds). Default: 10 - Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 - Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10 - Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 - Čas k vypáčení zámku (v sekundách). Výchozí: 10 - Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 - Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 - - - Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo - Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.<br />Źródło: vehiclelock.pbo - Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.<br />Fuente: vehiclelock.pbo - Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo - Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo - Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo - Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. <br />Forrás: vehiclelock.pbo - - - Vehicle Key Assign - Przydział kluczyka do pojazdu - Asignacion de la llave del vehículo - Fahrzeugschlüsselzuweisung - Přidělení klíče k vozidlu - Atribuição de chave de veículo - Járműkulcs-osztás - - - Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo - Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).<br />Źródło: vehiclelock.pbo - Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.<br />Fuente: vehiclelock.pbo - Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo - Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo - Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo - Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. <br />Forrás: vehiclelock.pbo - - + + + + + Unlock Vehicle + Fahrzeug aufschließen + Abrir vehículo + Déverrouiller le véhicule + Odblokuj pojazd + Odemknout vozidlo + Jármű nyitása + Открыть машину + Sblocca il veicolo + Destravar veículo + + + Lock Vehicle + Fahrzeug abschließen + Cerrar vehículo + Verrouiller le véhicule + Zablokuj pojazd + Zamknout vozidlo + Jármű zárása + Закрыть машину + Chiudi il veicolo a chiave + Travar Veículo + + + Lockpick Vehicle + Fahrzeug knacken + Forzar vehículo + Crocheter le véhicule + Otwórz zamek + Vypáčit vozidlo + Jármű feltörése + Взломать замок + Scassina veicolo + Usar mixa no Veículo + + + Picking Lock.... + Schloss knacken... + Forzando cerradura... + Crochetage... + Otwieranie zamka... + Páčim vozidlo... + Zár feltörése... + Взламываем замок... + Scassino il veicolo.... + Usando Mixa... + + + A custom key that will open a specific vehicle. + Ein Schlüssel der ein bestimmtes Fahrzeug aufschließt. + Una llave concreta abrirá un vehículo concreto. + Une clé propre à un seul véhicule. + Unikatowy klucz, który otworzy konkretny pojazd. + Vlastní klíč, který otevře konkrétní vozidlo. + Egy egyedi kulcs, ami egy meghatározott járművet nyit ki. + Ключ от конкретной машины. + Una chiave personalizzata che apre determinati veicoli. + Uma chave específica que abre um veículo específico. + + + A Master Key will open any lock, no matter what! + Ein Generalschlüssel der jedes Schloss öffnet... + Una llave maestra abrirá cualquier cierre, no importa cual! + Un passe-partout qui ouvrira n'importe quelle serrure. + Uniwersalny klucz, który otworzy każdy zamek. + Hlavní klíč otevře libovolný zámek, bez vyjímek! + Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül! + Универсальный ключ, открывающий любой замок. + Un passe-partout che apre qualsiasi serratura! + Uma chave mestre irá abrir qualquer fechadura, não importa qual! + + + A lockpick set that can pick the locks of most vehicles. + Ein Dietrich der die meisten Fahrzeugschlösser knacken kann... + Un set de ganzúas que puede abrir las cerraduras de la mayoría vehículos. + Un crochet qui ouvrira la plupart des véhicules. + Zestaw wytrychów, dzięki któremu można otworzyć zamki w większości pojazdów. + Sada paklíčů, která dokáže odemknout zámky u většiny vozidel. + Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni. + Набор отмычек, которым можно взломать почти любую машину. + Un grimardello per forzare la maggior parte dei veicoli + Um set de chave mixas que pode abrir a maioria dos veículos. + + + A key that should open most WEST vehicles. + Ein Schlüssel der die meisten westlichen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos occidentales. + Une clé qui ouvrira la plupart des véhicules OUEST. + Klucz, który powinien otworzyć większość pojazdów ZACHODU. + Klíč který by měl otevřít většinou Západních vozidel. + Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni. + Ключ для открытия большинства машин Красных. + Una chiave che apre la maggior parte dei veicoli occidentali + Uma chave que abre a maioria dos veículos ocidentais + + + A key that should open most EAST vehicle. + Ein Schlüssel der die meisten östlichen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos orientales. + Une clé qui ouvrira la plupart des véhicules EST. + Klucz, który powinien otworzyć większość pojazdów WSCHODU. + Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. + Klíč který by měl otevřít vetšinu Východních vozidel. + Ключ для открытия большинства машин Синих. + Una chaive che apre la maggior parte dei veicoli orientali + Uma chave que abre a maioria dos veículos orientais + + + A key that should open most INDEP vehicle. + Ein Schlüssel der die meisten Fahrzeuge der Aufständischen öffnen sollte... + Una llave que abrirá la mayoría de vehículos independientes. + Une clé qui ouvrira la plupart des véhicules INDEP. + Klucz, który powinien otworzyć większość pojazdów INDFOR. + Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. + Klíč který by měl otevřít většinu Nezávislých vozidel. + Ключ для открытия большинства машин Независимых. + Una chaive che apre la maggior parte dei veicoli degli indipendenti + Uma chave que abre a maioria dos veículos independentes + + + A key that should open most CIV vehicle. + Ein Schlüssel der die meisten zivilen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos civiles. + Une clé qui ouvrira la plupart des véhicules CIV. + Klucz, który powinien otworzyć większość pojazdów CYWILNYCH. + Klíč který by měl otevřít většinu Civilních vozidel. + Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. + Ключ для открытия большинства машин Гражданских. + Una chaive che apr ela maggior parte dei veicoli civili + Uma chave que abre a maioria dos veículos civis. + + + Vehicle Lock Setup + Ustawienie blokady pojazdów + Configuración del cierre del vehiculo + Fahrzeugsperreinstellungen + Nastavení zámku vozidla + Configuração de fechadura do veículo + Jármű-zár beállítás + Запирание транспорта + + + Lock Vehicle Inventory + Zablokuj ekwipunek pojazdu + Bloquear inventario del vehículo + Sperre Fahrzeuginventar + Inventář zamčeného vozidla + Bloquear inventário do veículo + Jármű rakodótér zárás + Закрывать инвентарь транспорта + + + Locks the inventory of locked vehicles + Blokuje dostęp do ekwipunku pojazdu + Bloquea el inventario de los vehículos cerrados + Sperrt das Inventar von gesperrten Fahrzeugen + Zamknout inventář u zamčených vozidel + Bloqueia o inventário de veículos fechados + Bezárja a zárt járművek rakterét is + Закрывать инвентарь транспорта, если транспорт закрыт + + + Vehicle Starting Lock State + Początkowy stan blok. poj. + Estado inicial del cierre en vehículos + Fahrzeuge spawnen gesperrt + Počáteční stav zámku vozidla + Estado inicial da fechadura dos veículos + Jármű kezdő zár-állapot + Начальное состояние замков + + + Set lock state for all vehicles (removes ambiguous lock states) + Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) + Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos) + Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) + Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) + Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) + Beállítja a zár-állapotot az összes járműhöz (eltávolítja az azonosíthatatlan zárállapotokat) + Устанавливает начальное состояние замков всех транспортных средств (устраняет неоднозначные состояния) + + + As Is + Jak jest + Está + Unverändert + Jak je + Como está + Úgy-ahogy + Как есть + + + Locked + Zablokowany + Cerrado + Gesperrt + Zamčeno + Fechado + Zárva + Закрыт + + + Unlocked + Odblokowany + Abierto + Offen + Odemčeno + Aberto + Nyitva + Открыт + + + Default Lockpick Strength + Czas włamywania + Durabilidad de la ganzua por defecto + Standard-Pick-Stärke + Výchozí síla páčidla + Durabilidade padrão da chave micha + Alapértelmezett zártörő-erősség + Сила отмычки по-умолчанию + + + Default Time to lockpick (in seconds). Default: 10 + Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 + Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10 + Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 + Čas k vypáčení zámku (v sekundách). Výchozí: 10 + Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 + Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 + Время для взлома замка отмычкой (в секундах). По-умолчанию: 10 + + + Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo + Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.<br />Źródło: vehiclelock.pbo + Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.<br />Fuente: vehiclelock.pbo + Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo + Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo + Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo + Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. <br />Forrás: vehiclelock.pbo + Настройки силы отмычек и начальное состояние замков транспорта. Устраняет неоднозначные состояния замков.<br />Источник: vehiclelock.pbo + + + Vehicle Key Assign + Przydział kluczyka do pojazdu + Asignacion de la llave del vehículo + Fahrzeugschlüsselzuweisung + Přidělení klíče k vozidlu + Atribuição de chave de veículo + Járműkulcs-osztás + Назначение ключей от транспорта + + + Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo + Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).<br />Źródło: vehiclelock.pbo + Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.<br />Fuente: vehiclelock.pbo + Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo + Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo + Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo + Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. <br />Forrás: vehiclelock.pbo + Синхронизируйте с транспортом и игроком. Это выдаст игроку ключи от всех синхронизированных транспортных средств. Работает только для объектов, присутствующих на старте миссии.<br />Источник: vehiclelock.pbo + + \ No newline at end of file diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index f5757a55cc..2dada70fec 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,230 +1,255 @@ - - - - - View Distance Limiter - Ogranicznik zasięgu widzenia - Limitador de distancia de visión - Omezovač dohlednosti - Sichtweitenbegrenzung - Limitador de distância de visão - Látótáv-korlátozó - - - Allows limiting maximum view distance that can be set by players. - Pozwala ustawić maksymalny limit zasięgu widzenia. - Permite limitar la distancia máxima de visión que se puede establecer por los jugadores. - Umožňuje určit maximální dohlednost, kterou si může hráč nastavit - Erlaubt das Einschränken der maximalen Sichtweite, welche von Spielern eingestellt werden kann. - Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. - Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. - - - Enable ACE viewdistance - Wł. zasięg widzenia ACE - Habilitar distancia de visión ACE - Povolit ACE dohlednost - Aktiviere ACE-Sichtweite - Habilitar distância de visão ACE - ACE látótávolság engedélyezése - - - Enables ACE viewdistance - Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE - Habilita la distancia de visión ACE - Povolit ACE dohlednost - Aktiviert ACE-Sichtweite - Habilita a distância de visão ACE - Engedélyezi az ACE látótávolságot - - - View Distance Limit - Limit zas. widzenia - Limite de distancia de visión - Limit dohlednosti - Sichtweitengrenze - Limite da distância de visão - Látótáv-korlát - - - Sets the limit for how high clients can raise their view distance (up to 10000) - Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) - Establece el límite de cuan alta pueden aumentar los clientes la distancia de visión (hasta 10.000) - Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) - Setze die Grenze fest, wie weit Spieler ihre Sichtweite erhöhen können (bis 10000) - Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) - Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) - - - Limit for client's view distance set here and can overridden by module - Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł - Establecer aqui el límite para la distancia de visión de los clientes. Puede ser anulado por módulo - Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. - Stellt die Grenze für die Sichtweite des Spielers ein. Das kann von einem Modul überschrieben werden. - Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. - A kliens látótávolsága itt állítható be, és felülbírálható modulok által - - - Client View Distance (On Foot) - Zasięg widzenia (piechota) - Distancia de visión del cliente (A pie) - Dohlednost (Pěšák) - Spielersichtweite (zu Fuß) - Distância de visão do cliente (A pé) - Kliens látótáv (gyalog) - - - Changes in game view distance when the player is on foot. - Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. - Cambia en juego la distancia de visión cuando el jugador va a pie. - Změna dohlednosti pro hráče pokud jde po svých. - Verändert die Sichtweite, wenn ein Spieler zu Fuß unterwegs ist. - Muda a distância de visão do jogador dentro do jogo quando ele está a pé. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos gyalogosan van. - - - Client View Distance (Land Vehicle) - Zasięg widzenia (pojazdy naziemne) - Distancia de visión del cliente (Vehículo terrestre) - Dohlednost (Pozemní technika) - Spielersichtweite (Landfahrzeuge) - Distância de visão do cliente (Veículo terrestre) - Kliens látótáv (szárazföldi jármű) - - - Changes in game view distance when the player is in a land vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. - Cambia en juego la distancia de visión cuando el jugador va en un vehículo terrestre. - Změna dohlednosti pro hráče pokud je v pozemní technice. - Verändert die Sichtweite, wenn ein Spieler in einem Landfahrzeug ist. - Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. - - - Client View Distance (Air Vehicle) - Zasięg widzenia (pojazdy lotnicze) - Distancia de visión del cliente (Vehículo aéreo) - Dohlednost (Vzdušná technika) - Spielersichtweite (Luftfahrzeuge) - Distância de visão do cliente (Veículo aéreo) - Kliens látótáv (légi jármű) - - - Changes in game view distance when the player is in an air vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. - Cambia en juego la distancia de visión cuando el jugador va en un vehículo aéreo. - Změna dohlednosti pro hráče pokud je ve vzdušné technice. - Verändert die Sichtweite wenn ein Spieler in einem Luftfahrzeug ist. - Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos légi járműben van. - - - Dynamic Object View Distance - Dynamiczny zasięg rysowania obiektów - Distancia de visión dinámica de objetos - Dynamická dohlednost objektů - Dynamische Objektsichtweite - Distância de visão dinâmica dos objetos - Dinamikus objektum-látótáv - - - Sets the object view distance as a coefficient of the view distance. - Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. - Establece la distancia de visión de objetos como un coeficiente de la distancia de visión. - Nastaví objekt dohlednosti jako koeficient dohlednosti. - Passt die Objektsichtweite dynamisch der Sichtweite an. - Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. - Beállítja az objektum-látótávot a megadott látótáv koefficienseként. - - - Off - Wyłącz - Apagada - Vypnout - Aus - Desligado - Kikapcsolva - - - Very Low - Bardzo niski - Muy baja - Velmi málo - Sehr niedrig - Muito baixo - Minimális - - - Low - Niski - Baja - Málo - Niedrig - Baixo - Alacsony - - - Medium - Średni - Media - Středně - Mittel - Médio - Közepes - - - High - Wysoki - Alta - Hodně - Hoch - Alto - Magas - - - Very High - Bardzo wysoki - Muy alta - Velmi hodně - Sehr hoch - Muito alto - Maximális - - - View Distance: - Zasięg widzenia: - Distancia de visión: - Dohlednost: - Sichtweite: - Distância de visão: - Látótávolság: - - - Object View Distance is - Zasięg widzenia obiektów wynosi - La distancia de visión de objetos es: - Dohlednost objektů je - Objektsichtweite ist - Distância de visão do objeto é - Az objektum-látótávolság: - - - That option is invalid! The limit is - Ta opcja jest nieprawidłowa! Limit wynosi - Esta opción no es valida! El limite es - Tato volba je neplatná! Limit je - Diese Option ist ungültig! Die Grenze ist - Essa opção é inválida. O limte é - Ez a beállítás érvénytelen! A maximum mennyiség - - - Video Settings - Ustawienia wideo - Ajustes de vídeo - Nastavení videa - Grafikeinstellungen - Ajustes de vídeo - Videobeállítások - - + + + + + View Distance Limiter + Ogranicznik zasięgu widzenia + Limitador de distancia de visión + Omezovač dohlednosti + Sichtweitenbegrenzung + Limitador de distância de visão + Látótáv-korlátozó + Ограничитель дальности видимости + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + Permite limitar la distancia máxima de visión que se puede establecer por los jugadores. + Umožňuje určit maximální dohlednost, kterou si může hráč nastavit + Erlaubt das Einschränken der maximalen Sichtweite, welche von Spielern eingestellt werden kann. + Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. + Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. + Позволяет ограничить максимальную дальность видимости, которая может быть установлена игроками. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + Habilitar distancia de visión ACE + Povolit ACE dohlednost + Aktiviere ACE-Sichtweite + Habilitar distância de visão ACE + ACE látótávolság engedélyezése + Ограничить дальность видимости + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + Habilita la distancia de visión ACE + Povolit ACE dohlednost + Aktiviert ACE-Sichtweite + Habilita a distância de visão ACE + Engedélyezi az ACE látótávolságot + Включает ограничитель дальности видимости ACE + + + View Distance Limit + Limit zas. widzenia + Limite de distancia de visión + Limit dohlednosti + Sichtweitengrenze + Limite da distância de visão + Látótáv-korlát + Дальность видимости + + + Sets the limit for how high clients can raise their view distance (up to 10000) + Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) + Establece el límite de cuan alta pueden aumentar los clientes la distancia de visión (hasta 10.000) + Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) + Setze die Grenze fest, wie weit Spieler ihre Sichtweite erhöhen können (bis 10000) + Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) + Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) + Устанавливает предел дальности, насколько клиенты могут увеличить свою дальность видимости (до 10000) + + + Limit for client's view distance set here and can overridden by module + Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł + Establecer aqui el límite para la distancia de visión de los clientes. Puede ser anulado por módulo + Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. + Stellt die Grenze für die Sichtweite des Spielers ein. Das kann von einem Modul überschrieben werden. + Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. + A kliens látótávolsága itt állítható be, és felülbírálható modulok által + Предел дальности видимости клиентов устанавливается здесь и может быть переопределен модулем + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + Distancia de visión del cliente (A pie) + Dohlednost (Pěšák) + Spielersichtweite (zu Fuß) + Distância de visão do cliente (A pé) + Kliens látótáv (gyalog) + Дальность видимости (Пешком) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + Cambia en juego la distancia de visión cuando el jugador va a pie. + Změna dohlednosti pro hráče pokud jde po svých. + Verändert die Sichtweite, wenn ein Spieler zu Fuß unterwegs ist. + Muda a distância de visão do jogador dentro do jogo quando ele está a pé. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos gyalogosan van. + Изменяет дальность видимости в игре, когда игрок перемещается пешком. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + Distancia de visión del cliente (Vehículo terrestre) + Dohlednost (Pozemní technika) + Spielersichtweite (Landfahrzeuge) + Distância de visão do cliente (Veículo terrestre) + Kliens látótáv (szárazföldi jármű) + Дальность видимости (В наземном трансп.) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + Cambia en juego la distancia de visión cuando el jugador va en un vehículo terrestre. + Změna dohlednosti pro hráče pokud je v pozemní technice. + Verändert die Sichtweite, wenn ein Spieler in einem Landfahrzeug ist. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. + Изменяет дальность видимости в игре, когда игрок перемещается в наземном транспорте. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + Distancia de visión del cliente (Vehículo aéreo) + Dohlednost (Vzdušná technika) + Spielersichtweite (Luftfahrzeuge) + Distância de visão do cliente (Veículo aéreo) + Kliens látótáv (légi jármű) + Дальность видимости (В воздушном трансп.) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + Cambia en juego la distancia de visión cuando el jugador va en un vehículo aéreo. + Změna dohlednosti pro hráče pokud je ve vzdušné technice. + Verändert die Sichtweite wenn ein Spieler in einem Luftfahrzeug ist. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos légi járműben van. + Изменяет дальность видимости в игре, когда игрок перемещается в воздушном транспорте. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + Distancia de visión dinámica de objetos + Dynamická dohlednost objektů + Dynamische Objektsichtweite + Distância de visão dinâmica dos objetos + Dinamikus objektum-látótáv + Динамич. дальность отрисовки объектов + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + Establece la distancia de visión de objetos como un coeficiente de la distancia de visión. + Nastaví objekt dohlednosti jako koeficient dohlednosti. + Passt die Objektsichtweite dynamisch der Sichtweite an. + Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. + Beállítja az objektum-látótávot a megadott látótáv koefficienseként. + Устанавливает дальность отрисовки объектов как коэффициент от общей дальности видимости. + + + Off + Wyłącz + Apagada + Vypnout + Aus + Desligado + Kikapcsolva + Выкл. + + + Very Low + Bardzo niski + Muy baja + Velmi málo + Sehr niedrig + Muito baixo + Minimális + Очень низкая + + + Low + Niski + Baja + Málo + Niedrig + Baixo + Alacsony + Низкая + + + Medium + Średni + Media + Středně + Mittel + Médio + Közepes + Средняя + + + High + Wysoki + Alta + Hodně + Hoch + Alto + Magas + Высокая + + + Very High + Bardzo wysoki + Muy alta + Velmi hodně + Sehr hoch + Muito alto + Maximális + Очень высокая + + + View Distance: + Zasięg widzenia: + Distancia de visión: + Dohlednost: + Sichtweite: + Distância de visão: + Látótávolság: + Дальность видимости: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + La distancia de visión de objetos es: + Dohlednost objektů je + Objektsichtweite ist + Distância de visão do objeto é + Az objektum-látótávolság: + Дальность видимости объектов: + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + Esta opción no es valida! El limite es + Tato volba je neplatná! Limit je + Diese Option ist ungültig! Die Grenze ist + Essa opção é inválida. O limte é + Ez a beállítás érvénytelen! A maximum mennyiség + Настройка не верна! Текущий предел: + + + Video Settings + Ustawienia wideo + Ajustes de vídeo + Nastavení videa + Grafikeinstellungen + Ajustes de vídeo + Videobeállítások + Видео настройки + + \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index aa6243b519..1c723b428f 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -1,143 +1,157 @@ - - - - - Show Wind Info - Pokaż inf. o wietrze - Показать информацию о ветре - Afficher information sur le vent - Mostrar información del viento - Mostra informazioni sul vento - Zeige Windinformationen - Széladatok mutatása - Zobrazit informace o větru - Mostrar informação do vento - - - Weather - Pogoda - Clima - Wetter - Počasí - Clima - Időjárás - - - Multiplayer synchronized ACE weather module - Synchronizowana pogoda ACE - Modulo climático del ACE sincronizado en multijugador - ACE-Wettermodul (synchron im Multiplayer) - Synchronizovat ACE počasí v multiplayeru - Módulo climático ACE para sincronismo multiplayer - Többjátékos szinkronizált ACE időjárás modul - - - Weather propagation - Zmiany pogody - Propagación del clima - Wetterübertragung - Změny počasí - Propagação do clima - Időjárás-változás - - - Enables server side weather propagation - Aktywuje zmiany pogody po stronie serwera - Permite al servidor controlar la propagación del clima - Aktiviere serverseitige Wetterübertragung - Aktivuje změny počasí na straně serveru - Ativa propagação de clima via server - Engedélyezi a szerveroldali időjárás-változást - - - ACE Weather - Pogoda ACE - Clima ACE - ACE-Wetter - ACE počasí - Clima ACE - ACE Időjárás - - - Overrides the default weather (editor, mission settings) with ACE weather (map based) - Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy) - Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa) - Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) - Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) - Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) - Felülbírálja az alapértelmezett időjárást (editor, küldetésbeállítások) az ACE időjárással (térkép-alapú) - - - Sync Rain - Synchronizuj deszcz - Sincronizar lluvia - Regen synchronisieren - Synchronizuj déšť - Sincronizar chuva - Eső szinkronizálása - - - Synchronizes rain - Synchronizuje deszcz - Sincroniza la lluvia - Synchronisiert den Regen - Synchronizace deště - Sincroniza a chuva - Szinkronizálja az esőt - - - Sync Wind - Synchronizuj wiatr - Sincronizar viento - Wind synchronisieren - Synchronizuj vítr - Sincronizar vento - Szél szinkronizálása - - - Synchronizes wind - Synchronizuje wiatr - Sincroniza el viento - Synchronisiert den Wind - Synchronizace větru - Sincroniza o vento - Szinkronizálja a szelet - - - Sync Misc - Synchronizuj różne - Sincronizar otros - Sonstiges synchronisieren - Synchronizuj různé - Sincronizar outros - Egyéb szinkronizálása - - - Synchronizes lightnings, rainbow, fog, ... - Synchronizuje pioruny, tęcze, mgłę, ... - Sincroniza relampagos, arcoiris, niebla ... - Synchronisiert Blitze, Regenbögen, Nebel, ... - Synchronizace blesků, duhy, mlhy, ... - Sincroniza relâmpagos, arco-íris, neblina... - Szinkronizálja a villámokat, szivárványokat, ködöt, ... - - - Update Interval - Interwał aktualizacji - Intervalo de actualización - Aktualisierungsintervall - Interval aktualizace - Intervalo de atualização - Frissítési intervallum - - - Defines the interval (seconds) between weather updates - Określa interwał (sekundy) pomiędzy aktualizacjami pogody - Defina el intervalo (en segundos) entre actualizacions de clima - Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen - Určit interval (v sekundách) mezi aktualizacemi počasí - Defina o intervalo (em segundos) entre as atualizações de clima - Megadja az intervallumot (másodpercben) az időjárás-frissítések között - - + + + + + Show Wind Info + Pokaż inf. o wietrze + Показать информацию о ветре + Afficher information sur le vent + Mostrar información del viento + Mostra informazioni sul vento + Zeige Windinformationen + Széladatok mutatása + Zobrazit informace o větru + Mostrar informação do vento + + + Weather + Pogoda + Clima + Wetter + Počasí + Clima + Időjárás + Погода + + + Multiplayer synchronized ACE weather module + Synchronizowana pogoda ACE + Modulo climático del ACE sincronizado en multijugador + ACE-Wettermodul (synchron im Multiplayer) + Synchronizovat ACE počasí v multiplayeru + Módulo climático ACE para sincronismo multiplayer + Többjátékos szinkronizált ACE időjárás modul + ACE Модуль для синхронизации погоды в мультиплеере + + + Weather propagation + Zmiany pogody + Propagación del clima + Wetterübertragung + Změny počasí + Propagação do clima + Időjárás-változás + Единая погода для всех + + + Enables server side weather propagation + Aktywuje zmiany pogody po stronie serwera + Permite al servidor controlar la propagación del clima + Aktiviere serverseitige Wetterübertragung + Aktivuje změny počasí na straně serveru + Ativa propagação de clima via server + Engedélyezi a szerveroldali időjárás-változást + Включает управление погодой на серверной стороне + + + ACE Weather + Pogoda ACE + Clima ACE + ACE-Wetter + ACE počasí + Clima ACE + ACE Időjárás + Погода ACE + + + Overrides the default weather (editor, mission settings) with ACE weather (map based) + Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy) + Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa) + Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) + Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) + Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) + Felülbírálja az alapértelmezett időjárást (editor, küldetésbeállítások) az ACE időjárással (térkép-alapú) + Заменяет погоду по-умолчанию (из редактора, настроек миссии) погодой ACE (на основе карты) + + + Sync Rain + Synchronizuj deszcz + Sincronizar lluvia + Regen synchronisieren + Synchronizuj déšť + Sincronizar chuva + Eső szinkronizálása + Синхрониз. дождь + + + Synchronizes rain + Synchronizuje deszcz + Sincroniza la lluvia + Synchronisiert den Regen + Synchronizace deště + Sincroniza a chuva + Szinkronizálja az esőt + Синхронизирует дождь + + + Sync Wind + Synchronizuj wiatr + Sincronizar viento + Wind synchronisieren + Synchronizuj vítr + Sincronizar vento + Szél szinkronizálása + Синхрониз. ветер + + + Synchronizes wind + Synchronizuje wiatr + Sincroniza el viento + Synchronisiert den Wind + Synchronizace větru + Sincroniza o vento + Szinkronizálja a szelet + Синхронизирует ветер + + + Sync Misc + Synchronizuj różne + Sincronizar otros + Sonstiges synchronisieren + Synchronizuj různé + Sincronizar outros + Egyéb szinkronizálása + Синхрониз. прочее + + + Synchronizes lightnings, rainbow, fog, ... + Synchronizuje pioruny, tęcze, mgłę, ... + Sincroniza relampagos, arcoiris, niebla ... + Synchronisiert Blitze, Regenbögen, Nebel, ... + Synchronizace blesků, duhy, mlhy, ... + Sincroniza relâmpagos, arco-íris, neblina... + Szinkronizálja a villámokat, szivárványokat, ködöt, ... + Синхронизирует молнии, радугу, туман... + + + Update Interval + Interwał aktualizacji + Intervalo de actualización + Aktualisierungsintervall + Interval aktualizace + Intervalo de atualização + Frissítési intervallum + Интервал обновления + + + Defines the interval (seconds) between weather updates + Określa interwał (sekundy) pomiędzy aktualizacjami pogody + Defina el intervalo (en segundos) entre actualizacions de clima + Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen + Určit interval (v sekundách) mezi aktualizacemi počasí + Defina o intervalo (em segundos) entre as atualizações de clima + Megadja az intervallumot (másodpercben) az időjárás-frissítések között + Определяет интервал (в секундах) между обновлениями погоды + + \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index dd96760310..8008201d80 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -1,155 +1,165 @@ - - - - - Wind Information - Informacje o wietrze - Información del viento - Информация о ветре - Informace o větru - Vent - Windinformationen - Szélinformáció - Informazioni sul vento - Informação do vento - - - Direction: %1 - Kierunek: %1 - Dirección: %1 - Направление: %1° - Směr: %1 - Direction %1 - Windrichtung: %1 - Irány: %1 - Direzione: %1° - Direção: %1 - - - Speed: %1 m/s - Prędkość: %1 - Velocidad: %1 m/s - Скорость: %1 м/с - Rychlost: %1 m/s - Vitesse %1 m/s - Geschwindigkeit: %1 m/s - Sebesség: %1 m/s - Velocità: %1 m/s - Velocidade: %1 m/s - - - Weather Information - Informacje o pogodzie - Información Meteorológica - Информация о погоде - Informace o počasí - Météo - Wetterinformationen - Időjárás-Információ - Meteo - Informação Meteorológica - - - Humidity: %1% - Wilgotność: %1 - Humedad: %1% - Влажность: %1% - Vlhkost: %1% - Humidité: %1% - Luftfeuchtigkeit: %1 - Páratartalom: %1% - Umidità: %1% - Humidade: %1% - - - Wind Deflection - Wpływ wiatru - Desviación por viento - Účinky větru - Windablenkung - Desvio de vento - Szél-hárítás - - - Wind Deflection - Wpływ wiatru - Desviación por viento - Windablenkung - Účinky větru - Desvio de vento - Szél-hárítás - - - Enables wind deflection - Aktywuje wpływ wiatru na trajektorię lotu pocisków - Activa la desviación por viento - Aktiviert Windablenkung - Umožňit vliv větru - Ativa o desvio de vento - Engedélyezi a szél-hárítást - - - Vehicle Enabled - Włączone dla pojazdów - Habilitada en vehículos - Fahrzeuge aktiviert - Vozidla povolena - Ativado em veículos - Jármű engedélyezve - - - Enables wind deflection for static/vehicle gunners - Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - Habilita la desviación por viento para artilleros estaticos/de vehículos - Aktiviere Windablenkung für statische oder Fahrzeugschützen - Umožnit vliv větru pro střelce z vozidla/statiky - Ativa o desvio de vento para atiradores de estáticas e veículos - Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél - - - Simulation Interval - Interwał symulacji - Intervalo de simulación - Simulationsintervall - Interval simulace - Intervalo de simulação - Szimulációs intervallum - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - Define el intervalo entre cada calculo - Definiert das Intervall zwischen jedem Berechnungsschritt - Určuje interval mezi každým výpočtem - Define o intervalo entre cada cálculo - Megszabja a számítási lépések közötti intervallumot - - - Simulation Radius - Zasięg symulacji - Radio de simulación - Simulationsradius - Oblast simulace - Radio da Simulação - Szimulációs hatókör - - - Defines the radius around the player (in meters) at which projectiles are wind deflected - Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr - Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento - Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden - Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem - Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento - Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékeket háríthatja a szél - - - Wind influence on projectiles trajectory - Wpływ wiatru na trajektorię lotu pocisków - Influencia del viento en la trayectoria de proyectiles - Windeinfluss auf die Geschossbahnen - Vítr ovlivňuje trajektorii projektilu - Influência do vento na trajetória dos projéteis - Szél hatása a lövedékek röppályájára - - + + + + + Wind Information + Informacje o wietrze + Información del viento + Информация о ветре + Informace o větru + Vent + Windinformationen + Szélinformáció + Informazioni sul vento + Informação do vento + + + Direction: %1 + Kierunek: %1 + Dirección: %1 + Направление: %1° + Směr: %1 + Direction %1 + Windrichtung: %1 + Irány: %1 + Direzione: %1° + Direção: %1 + + + Speed: %1 m/s + Prędkość: %1 + Velocidad: %1 m/s + Скорость: %1 м/с + Rychlost: %1 m/s + Vitesse %1 m/s + Geschwindigkeit: %1 m/s + Sebesség: %1 m/s + Velocità: %1 m/s + Velocidade: %1 m/s + + + Weather Information + Informacje o pogodzie + Información Meteorológica + Информация о погоде + Informace o počasí + Météo + Wetterinformationen + Időjárás-Információ + Meteo + Informação Meteorológica + + + Humidity: %1% + Wilgotność: %1 + Humedad: %1% + Влажность: %1% + Vlhkost: %1% + Humidité: %1% + Luftfeuchtigkeit: %1 + Páratartalom: %1% + Umidità: %1% + Humidade: %1% + + + Wind Deflection + Wpływ wiatru + Desviación por viento + Účinky větru + Windablenkung + Desvio de vento + Szél-hárítás + Отклонение ветром + + + Wind Deflection + Wpływ wiatru + Desviación por viento + Windablenkung + Účinky větru + Desvio de vento + Szél-hárítás + Отклонение ветром + + + Enables wind deflection + Aktywuje wpływ wiatru na trajektorię lotu pocisków + Activa la desviación por viento + Aktiviert Windablenkung + Umožňit vliv větru + Ativa o desvio de vento + Engedélyezi a szél-hárítást + Включает отклонение ветром + + + Vehicle Enabled + Włączone dla pojazdów + Habilitada en vehículos + Fahrzeuge aktiviert + Vozidla povolena + Ativado em veículos + Jármű engedélyezve + Для техники + + + Enables wind deflection for static/vehicle gunners + Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + Habilita la desviación por viento para artilleros estaticos/de vehículos + Aktiviere Windablenkung für statische oder Fahrzeugschützen + Umožnit vliv větru pro střelce z vozidla/statiky + Ativa o desvio de vento para atiradores de estáticas e veículos + Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél + Включает отклонение ветром для стрелков статичных орудий и транспортных средств + + + Simulation Interval + Interwał symulacji + Intervalo de simulación + Simulationsintervall + Interval simulace + Intervalo de simulação + Szimulációs intervallum + Интервал симуляции + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + Define el intervalo entre cada calculo + Definiert das Intervall zwischen jedem Berechnungsschritt + Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo + Megszabja a számítási lépések közötti intervallumot + Определяет временной интервал между расчетами + + + Simulation Radius + Zasięg symulacji + Radio de simulación + Simulationsradius + Oblast simulace + Radio da Simulação + Szimulációs hatókör + Радиус симуляции + + + Defines the radius around the player (in meters) at which projectiles are wind deflected + Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr + Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento + Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden + Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem + Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékeket háríthatja a szél + Определяет радиус вокруг игрока (а метрах), в котором снаряды отклоняются ветром + + + Wind influence on projectiles trajectory + Wpływ wiatru na trajektorię lotu pocisków + Influencia del viento en la trayectoria de proyectiles + Windeinfluss auf die Geschossbahnen + Vítr ovlivňuje trajektorii projektilu + Influência do vento na trajetória dos projéteis + Szél hatása a lövedékek röppályájára + Влияние втера на траекторию снарядов + + \ No newline at end of file diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index 7a3a6bdef2..f133d2f860 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -1,32 +1,35 @@ - - - - - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - - - Laser Rangefinder - Laserentfernungsmesser - Dalmierz laserowy - Telémetro láser - Laserový dálkoměr - Medidor de Distância a laser - Lézeres távolságmérő - - - Yardage 450 - Power Button - Yardage 450 - Einschalt-Taste - Yardage 450 - Przycisk zasilania - Yardage 450 - Botón de encendido - Yardage 450 - Tlačítko napájení - Yardage 450 - Botão de energia - Yardage 450 - Főkapcsoló gomb - - + + + + + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + + + Laser Rangefinder + Laserentfernungsmesser + Dalmierz laserowy + Telémetro láser + Laserový dálkoměr + Medidor de Distância a laser + Lézeres távolságmérő + Лазерный дальномер + + + Yardage 450 - Power Button + Yardage 450 - Einschalt-Taste + Yardage 450 - Przycisk zasilania + Yardage 450 - Botón de encendido + Yardage 450 - Tlačítko napájení + Yardage 450 - Botão de energia + Yardage 450 - Főkapcsoló gomb + Yardage 450 - Кнопка питания + + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 97bf5f40c7..f15d2452c7 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,240 +1,266 @@ - - - - - Zeus Settings - Ustawienia Zeusa - Ajustes Zeus - Nastavení Zeuse - Zeus-Einstellungen - Ajustes do Zeus - Zeus beállítások - - - Provides control over various aspects of Zeus. - Pozwala kontrolować różne aspekty Zeusa. - Proporciona control sobre diversos aspectos de Zeus. - Poskytuje kontrolu na různými aspekty Zeuse. - Bietet die Steuerung verschiedener Zeus-Optionen an. - Proporciona controle sobre diversos aspectos do Zeus. - Különböző beállítási lehetőségeket biztosít a Zeus részeihez. - - - Ascension Messages - Wiad. o nowym Zeusie - Mensajes de ascensión - Zpráva o novém Zeusovi - Aufstiegsnachrichten - Mensagens de ascensão - Felemelkedési üzenetek - - - Display global popup messages when a player is assigned as Zeus. - Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus - Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. - Zobrazit globální zprávu když je hráč přiřazen jako Zeus. - Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. - Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. - Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. - - - Zeus Eagle - Orzeł Zeusa - Águila Zeus - Orel Zeuse - Zeus-Adler - Águia do Zeus - Zeus sas - - - Spawn an eagle that follows the Zeus camera. - Spawnuj orła, który podąrza za kamerą Zeusa. - Generar un águila que sigue la cámara Zeus. - Vytvoří orla, který následuje kameru Zeuse. - Erstelle einen Adler, der der Zeus-Kamera folgt. - Cria uma águia que segue a câmera do Zeus - Lerak egy sast, ami követi a Zeus kamerát. - - - Wind Sounds - Dźwięki wiatru - Sonidos de viento - Zvuky větru - Windgeräusche - Sons de vento - Szélhangok - - - Play wind sounds when Zeus remote controls a unit. - Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. - Reproduce sonidos de viento cuando Zeus controle remotamente una unidad. - Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. - Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. - Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. - Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. - - - Ordnance Warning - Ostrz. o ostrzale arty. - Advertencia de artefactos explosivos - Varování před dělostřelectvem - Artilleriewarnung - Aviso de explosivos - Tüzérségi figyelmeztetés - - - Play a radio warning when Zeus uses ordnance. - Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. - Reproduce un aviso de radio cuando Zeus utiliza artefactos explosivos. - Přehrát varování (rádio) když Zeus použije dělostřelectvo. - Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. - Reproduz uma aviso via rádio quando o Zeus usa um explosivo. - Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. - - - Reveal Mines - Pokazuj miny - Revelar minas - Odhalit miny - Enthülle Minen - Revelar minas - Aknák feltárása - - - Reveal mines to allies and place map markers. - Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. - Revelar minas a aliados y establecer marcadores de mapa. - Odhalí miny pro spojence a umístnit jejich značku na mapu. - Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. - Revelar minas para aliados e colocar marcadores no mapa. - Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. - - - Reveal to Allies - Pokaż dla sojuszników - Revelar a aliados - Odhalit pro spojence - An Verbündete weitergeben - Revelar para aliados - Feltárás a szövetségeseknek - - - Allies + Map Markers - Sojusznicy + markery na mapie - Aliados + Marcas de mapa - Spojenci + Značky na mapě - Verbündete + Kartenmarkierungen - Aliados + Marcadores no mapa - Szövetségesek + térkép jelölők - - - Toggle Captive - Przełącz więźnia - Alternar cautivo - Přepnout - Vězeň - Gefangennahme umschalten - Alternar prisioneiro - Elfogott állapot váltása - - - Toggle Surrender - Przełącz kapitulację - Alternar rendición - Přepnout - Vzdávání - Aufgabe umschalten - Alternar rendição - Kapituláló állapot váltása - - - Toggle Unconscious - Przełącz nieprzytomność - Alternar inconsciencia - Přepnout - Bezvědomí - Bewusstlosigkeit umschalten - Alternar inconsciência - Eszméletlen állapot váltása - - - Assign Medic - Przydziel medyka - - - Assign Medical Vehicle - Przydziel pojazd medyczny - - - Assign Medical Facility - Przydziel budynek medyczny - - - Unit must be alive - Utiliser uniquement sur une unité vivante - Nur bei lebenden Einheiten verwendbar - Utilizar solo en unidades vivas - Použitelné jen na živé jednotky - Używaj tylko na żywych jednostkach - Применимо только к живым юнитам - Csak élő egységeken használni - Si può fare solo su persone vive - Usar somente em unidades vivas - - - Unit must be infantry - Utiliser uniquement sur du personnel à pied - Nur bei abgesessener Infanterie verwendbar - Utilizar solo en infanteria desmontada - Použitelné jen na pěsích jednotkách - 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 - Usar somente em infantaria desmontada - - - Unit must be a structure - Jednostka musi być budynkiem - - - Unit must be a vehicle - Jednostka musi być pojazdem - - - Unit must not be captive - Jednostka nie może być więźniem - La unidad no debe estar cautiva - Jednotka nemí být vězeň - Einheit darf nicht gefangen sein - Unidade não pode ser prisioneira - Csak elfogatlan egységeken használni - - - Place on a unit - Rien sous le curseur - Es wurde nichts ausgewählt - Nada bajo el ratón - Coloque em uma unidade - Umístni na jednotku - Nie ma nic pod kursorem - Ничего не выделено - Semmi sincs az egér alatt - Nessuna selezione - - - Requires an addon that is not present - Wymaga addonu, który nie jest obecny - Requiere un addon que no está presente - Vyžaduje addon, který není přítomen - Benötigt ein Addon, das nicht vorhanden ist - Requer um addon que não está presente - Egy jelenleg hiányzó bővítményt igényel - - - Add Objects to Curator - Dodaj obiekt do kuratora - - - Adds any spawned object to all curators in the mission - Dodaje każdy zespawnowany obiekt do wszystkich kuratorów podczas misji - - + + + + + Zeus Settings + Ustawienia Zeusa + Ajustes Zeus + Nastavení Zeuse + Zeus-Einstellungen + Ajustes do Zeus + Zeus beállítások + Настройки Зевса + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + Proporciona control sobre diversos aspectos de Zeus. + Poskytuje kontrolu na různými aspekty Zeuse. + Bietet die Steuerung verschiedener Zeus-Optionen an. + Proporciona controle sobre diversos aspectos do Zeus. + Különböző beállítási lehetőségeket biztosít a Zeus részeihez. + Обеспечивает контроль над различными аспектами работы Зевса + + + Ascension Messages + Wiad. o nowym Zeusie + Mensajes de ascensión + Zpráva o novém Zeusovi + Aufstiegsnachrichten + Mensagens de ascensão + Felemelkedési üzenetek + Сообщения о вознесении + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. + Zobrazit globální zprávu když je hráč přiřazen jako Zeus. + Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. + Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. + Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. + Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом + + + Zeus Eagle + Orzeł Zeusa + Águila Zeus + Orel Zeuse + Zeus-Adler + Águia do Zeus + Zeus sas + Орел Зевса + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + Generar un águila que sigue la cámara Zeus. + Vytvoří orla, který následuje kameru Zeuse. + Erstelle einen Adler, der der Zeus-Kamera folgt. + Cria uma águia que segue a câmera do Zeus + Lerak egy sast, ami követi a Zeus kamerát. + Спавнит орла, который следует за камерой Зевса. + + + Wind Sounds + Dźwięki wiatru + Sonidos de viento + Zvuky větru + Windgeräusche + Sons de vento + Szélhangok + Звук ветра + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + Reproduce sonidos de viento cuando Zeus controle remotamente una unidad. + Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. + Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. + Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. + Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. + Проигрывает звук ветра каждый раз, когда Зевс вселяется в юнита. + + + Ordnance Warning + Ostrz. o ostrzale arty. + Advertencia de artefactos explosivos + Varování před dělostřelectvem + Artilleriewarnung + Aviso de explosivos + Tüzérségi figyelmeztetés + Предупреждение об арте + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + Reproduce un aviso de radio cuando Zeus utiliza artefactos explosivos. + Přehrát varování (rádio) když Zeus použije dělostřelectvo. + Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. + Reproduz uma aviso via rádio quando o Zeus usa um explosivo. + Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. + Проигрывает звук радио каждый раз, когда Зевс использует артиллерию. + + + Reveal Mines + Pokazuj miny + Revelar minas + Odhalit miny + Enthülle Minen + Revelar minas + Aknák feltárása + Показывать мины + + + Reveal mines to allies and place map markers. + Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. + Revelar minas a aliados y establecer marcadores de mapa. + Odhalí miny pro spojence a umístnit jejich značku na mapu. + Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. + Revelar minas para aliados e colocar marcadores no mapa. + Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. + Показывает мины союзникам и отмечает их маркерами на карте. + + + Reveal to Allies + Pokaż dla sojuszników + Revelar a aliados + Odhalit pro spojence + An Verbündete weitergeben + Revelar para aliados + Feltárás a szövetségeseknek + Показывать союзникам + + + Allies + Map Markers + Sojusznicy + markery na mapie + Aliados + Marcas de mapa + Spojenci + Značky na mapě + Verbündete + Kartenmarkierungen + Aliados + Marcadores no mapa + Szövetségesek + térkép jelölők + Союзники + Маркеры на карте + + + Toggle Captive + Przełącz więźnia + Alternar cautivo + Přepnout - Vězeň + Gefangennahme umschalten + Alternar prisioneiro + Elfogott állapot váltása + Пленный (вкл./выкл.) + + + Toggle Surrender + Przełącz kapitulację + Alternar rendición + Přepnout - Vzdávání + Aufgabe umschalten + Alternar rendição + Kapituláló állapot váltása + Сдавшийся (вкл./выкл.) + + + Toggle Unconscious + Przełącz nieprzytomność + Alternar inconsciencia + Přepnout - Bezvědomí + Bewusstlosigkeit umschalten + Alternar inconsciência + Eszméletlen állapot váltása + Без сознания (вкл./выкл.) + + + Assign Medic + Przydziel medyka + Назначить медиком + + + Assign Medical Vehicle + Przydziel pojazd medyczny + Назначить медицинским транспортом + + + Assign Medical Facility + Przydziel budynek medyczny + Назанчить медицинским сооружением + + + Unit must be alive + Utiliser uniquement sur une unité vivante + Nur bei lebenden Einheiten verwendbar + Utilizar solo en unidades vivas + Použitelné jen na živé jednotky + Używaj tylko na żywych jednostkach + Применимо только к живым юнитам + Csak élő egységeken használni + Si può fare solo su persone vive + Usar somente em unidades vivas + + + Unit must be infantry + Utiliser uniquement sur du personnel à pied + Nur bei abgesessener Infanterie verwendbar + Utilizar solo en infanteria desmontada + Použitelné jen na pěsích jednotkách + 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 + Usar somente em infantaria desmontada + + + Unit must be a structure + Jednostka musi być budynkiem + Юнит должен быть строением + + + Unit must be a vehicle + Jednostka musi być pojazdem + Юнит должен быть транспортом + + + Unit must not be captive + Jednostka nie może być więźniem + La unidad no debe estar cautiva + Jednotka nemí být vězeň + Einheit darf nicht gefangen sein + Unidade não pode ser prisioneira + Csak elfogatlan egységeken használni + Юнит не должен быть пленным + + + Place on a unit + Rien sous le curseur + Es wurde nichts ausgewählt + Nada bajo el ratón + Coloque em uma unidade + Umístni na jednotku + Nie ma nic pod kursorem + Ничего не выделено + Semmi sincs az egér alatt + Nessuna selezione + + + Requires an addon that is not present + Wymaga addonu, który nie jest obecny + Requiere un addon que no está presente + Vyžaduje addon, který není přítomen + Benötigt ein Addon, das nicht vorhanden ist + Requer um addon que não está presente + Egy jelenleg hiányzó bővítményt igényel + Требуется аддон, который отсутствует + + + Add Objects to Curator + Dodaj obiekt do kuratora + Добавить объекты куратору + + + Adds any spawned object to all curators in the mission + Dodaje każdy zespawnowany obiekt do wszystkich kuratorów podczas misji + Добавляет любой отспавненный объект всем кураторам в миссии + + \ No newline at end of file From fbf00b9aa5e1065ee26c0f99bc7558382d7a7701 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 02:55:40 +0200 Subject: [PATCH 225/620] correct comment --- addons/grenades/functions/fnc_throwGrenade.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index 17c0fb78cc..9439aef4bd 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -30,7 +30,7 @@ if (isNull _projectile) then { _projectile = nearestObject [_unit, _ammo]; }; -// handle speial grenades +// handle special grenades if (local _unit) then { if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then { private "_fuzeTime"; From 50b05fcdf0534a4045c09882ff617aa5dc4c43c2 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 3 Sep 2015 04:38:38 +0300 Subject: [PATCH 226/620] Russian Translations - Update --- addons/advanced_ballistics/stringtable.xml | 532 ++++++++++----------- 1 file changed, 266 insertions(+), 266 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index b35ddfb353..250e9a014f 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -1,267 +1,267 @@ - - - - - Show Wind Info - Pokaż inf. o wietrze - Mostra indicazioni del vento - Показать информацию о ветре - Afficher les info sur le vent - Mostrar información del viento - Windinformationen anzeigen - Széladatok mutatása - Zobrazit informace o větru - Mostrar Informação do Vento - - - Show Protractor - Pokaż kątomierz - Mostra il rapportatore - Показать транспортир - Afficher le rapporteur - Mostrar transportador - Winkelmesser anzeigen - Szögmérő mutatása - Zobrazit úhloměr - Mostrar Transferidor - - - Advanced Ballistics - Zaawansowana balistyka - Balística avanzada - Erweiterte Ballistik - Pokročilá balistika - Balística avançada - Fejlett ballisztika - Продвинутая баллистика - - - Advanced Ballistics - Zaawansowana balistyka - Balística avanzada - Erweiterte Ballistik - Pokročilá balistika - Balística avançada - Fejlett ballisztika - Продвинутая баллистика - - - Enables advanced ballistics - Aktywuje zaawansowaną balistykę - Activa la balística avanzada - Aktiviert die erweiterte Ballistik - Aktivuje pokročilou balistiku - Ativa balística avançada - Engedélyezi a fejlett ballisztikát - Включает продвинутую баллистику - - - Enabled For Snipers - Activada para francotiradores - Akt. dla snajperów - Für Scharfschützen aktiviert - Povoleno pro odstřelovače - Ativar para caçadores - Mesterlövészeknek engedélyezve - Включена для снайперов - - - Enables advanced ballistics for non local snipers (when using high power optics) - Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica) - Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) - Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) - Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) - Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) - Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor) - Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики) - - - Enabled For Group Members - Activada para miembros de grupo - Akt. dla czł. grupy - Für Gruppenmitglieder aktiviert - Povoleno pro členy skupiny - Ativada para membros do grupo - Csoporttagoknak engedélyezve - Включена для группы - - - Enables advanced ballistics for non local group members - Activada la balística avanzada para miembros de grupo no locales - Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy - Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder - Aktivuje pokročilou balistiku pro nelokální členy skupiny - Ativa balística avançada para membros de grupo não locais - Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak - Включает продвинутую баллистику для нелокальных членов группы - - - Enabled For Everyone - Activada para todos - Akt. dla wszystkich - Für jeden aktiviert - Povoleno pro všechny - Ativada para todos - Mindenkinek engedélyezve - Включена для всех - - - Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) - Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador). - Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) - Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) - Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) - Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) - Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) - Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере) - - - Always Enabled For Group Members - Zawsze akt. dla czł. grupy - Siempre activada para miembros de grupo - Für Gruppenmitglieder immer aktiviert - Vždy povoleno pro členy skupiny - Sempre ativada para membros do grupo - Mindig engedélyezve csoporttagoknak - Всегда включена для членов группы - - - Always enables advanced ballistics when a group member fires - Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - Activada la balística avanzada siempre cuando miembros de grupo disparan - Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt - Aktivuje pokročilou balistiku pro členy skupiny - Sempre ative balística avançada quando um membro do grupo disparar - Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel - Всегда включает продвинутую баллистику когда стреляет член группы - - - Disabled In FullAuto Mode - Wył. podczas ognia auto. - Desactivada en modo automático - Beim vollautomatischen Feuern deaktiviert - Zakázáno v automatickém režimu střelby - Desabilitar no modo automático - Automata módban letiltva - Выкл. для автомат. режима - - - Disables the advanced ballistics during full auto fire - Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - Desactivada la balística avanzada durante el fuego automático - Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern - Zákáže pokročilou balistiku během střelby v režimu automat - Desabilitar a balística avançada durante fogo automático - Letiltja a fejlett ballisztikát automata tüzelés folyamán - Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме - - - Enable Ammo Temperature Simulation - Symulacja temp. amunicji - Activar simulación de temperatura de munición - Simulation der Munitionstemperatur aktivieren - Povolit simulaci teploty munice - Ativar simulação de temperatura de munição - Lőszer-hő szimuláció engedélyezése - Симуляция температуры для боеприпасов - - - Muzzle velocity varies with ammo temperature - Prędkość wylotowa pocisku jest zależna od temperatury amunicji - La velocidad de salida varía con la temperatura de la munición - Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit - Úsťová rychlost je závislá na teplotě munice - A velocidade de saída varia com a temperatura da munição - A kezdősebesség a lőszer hőmérsékletétől függően változó - Начальная скорость пули зависит от температуры - - - Enable Barrel Length Simulation - Symulacja długości lufy - Habilitar la simulación de longitud del cañón - Simulation der Lauflänge aktivieren - Povolit simulaci délky hlavně - Ativar a simulação de comprimento do cano - Csőhossz-szimuláció engedélyezése - Симуляция длины ствола - - - Muzzle velocity varies with barrel length - Prędkość wylotowa pocisku jest zależna od długości lufy - La velocidad de salidal varía con la longitud del cañón - Lauflänge beeinflusst Mündungsgeschwindigkeit - Úsťová rychlost je závislá na délce hlavně - A velocidade de saída caria com o comprimento do cano - A kezdősebesség a cső hosszától függően változó - Начальная скорость пули зависит от длины ствола - - - Enable Bullet Trace Effect - Efekt smugi pocisku - Activar el efecto trazador de la bala - Geschossspureffekt aktivieren - Povolit efekt trasírek - Ativa efeito traçante de projétil - Nyomkövető-effekt engedélyezése - Следы пуль - - - Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) - Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) - Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) - Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) - Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) - Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) - Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) - Включает эффект следов пуль для больших калибров (видны только через мощную оптику) - - - Simulation Interval - Interwał symulacji - Intervalo de simulación - Simulationsintervall - Interval simulace - Intervalo da simulação - Szimuláció intervalluma - Интервал симуляции - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - Define el intervalo entre cada cálculo - Legt das Intervall zwischen den Berechnungsschritten fest - Určuje interval mezi každým výpočtem - Define o intervalo entre cada cálculo - Meghatározza a számítási lépések közötti időintervallumot - Определяет временной интервал между вычислениями - - - Simulation Radius - Zasięg symulacji - Radio de simulación - Simulationsradius - Rozsah simulace - Raio de simulação - Szimuláció hatóköre - Радиус симуляции - - - Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles - Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków - Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles - Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird - Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil - Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis - Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak - Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам - - - This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired. - Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. - Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. - Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. - Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. - Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел. - - + + + + + Show Wind Info + Pokaż inf. o wietrze + Mostra indicazioni del vento + Показать информацию о ветре + Afficher les info sur le vent + Mostrar información del viento + Windinformationen anzeigen + Széladatok mutatása + Zobrazit informace o větru + Mostrar Informação do Vento + + + Show Protractor + Pokaż kątomierz + Mostra il rapportatore + Показать транспортир + Afficher le rapporteur + Mostrar transportador + Winkelmesser anzeigen + Szögmérő mutatása + Zobrazit úhloměr + Mostrar Transferidor + + + Advanced Ballistics + Zaawansowana balistyka + Balística avanzada + Erweiterte Ballistik + Pokročilá balistika + Balística avançada + Fejlett ballisztika + Продвинутая баллистика + + + Advanced Ballistics + Zaawansowana balistyka + Balística avanzada + Erweiterte Ballistik + Pokročilá balistika + Balística avançada + Fejlett ballisztika + Продвинутая баллистика + + + Enables advanced ballistics + Aktywuje zaawansowaną balistykę + Activa la balística avanzada + Aktiviert die erweiterte Ballistik + Aktivuje pokročilou balistiku + Ativa balística avançada + Engedélyezi a fejlett ballisztikát + Включает продвинутую баллистику + + + Enabled For Snipers + Activada para francotiradores + Akt. dla snajperów + Für Scharfschützen aktiviert + Povoleno pro odstřelovače + Ativar para caçadores + Mesterlövészeknek engedélyezve + Включена для снайперов + + + Enables advanced ballistics for non local snipers (when using high power optics) + Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica) + Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki) + Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) + Aktivuje pokročilou balistiku pro nelokální odstřelovače (když používá výkonnou optiku) + Ativa balística avançada para caçadores não locais (quando usando miras telescópicas) + Engedélyezi a fejlett ballisztikát nem-helyi mesterlövészeknek (nagy-teljesítményű optika használatakor) + Включает продвинутую баллистику для нелокальных снайперов (при использовании мощной оптики) + + + Enabled For Group Members + Activada para miembros de grupo + Akt. dla czł. grupy + Für Gruppenmitglieder aktiviert + Povoleno pro členy skupiny + Ativada para membros do grupo + Csoporttagoknak engedélyezve + Включена для группы + + + Enables advanced ballistics for non local group members + Activada la balística avanzada para miembros de grupo no locales + Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy + Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder + Aktivuje pokročilou balistiku pro nelokální členy skupiny + Ativa balística avançada para membros de grupo não locais + Engedélyezi a fejlett ballisztikát nem-helyi csoporttagoknak + Включает продвинутую баллистику для нелокальных членов группы + + + Enabled For Everyone + Activada para todos + Akt. dla wszystkich + Für jeden aktiviert + Povoleno pro všechny + Ativada para todos + Mindenkinek engedélyezve + Включена для всех + + + Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador). + Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia) + Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen) + Aktivovat pokročilou balistiku pro všechny nelokální hráče (aktivace této možnosti způsobuje pokles snímu za sekundu během těžké přestřelky v multiplayeru) + Ativa balística avançada para todos os jogadores não locais (ativando isso pode degradar a performance durante troca de tiros intensas no multiplayer) + Engedélyezi a fejlett ballisztikát az összes nem-helyi játékosnak (ez a funkció leronthatja a teljesítményt intenzív többjátékos tűzharcok alatt) + Включает продвинутую баллистику для всех нелокальных игроков (включение этой опции может снизить производительность при массовых перестрелках в мультиплеере) + + + Always Enabled For Group Members + Zawsze akt. dla czł. grupy + Siempre activada para miembros de grupo + Für Gruppenmitglieder immer aktiviert + Vždy povoleno pro členy skupiny + Sempre ativada para membros do grupo + Mindig engedélyezve csoporttagoknak + Всегда включена для членов группы + + + Always enables advanced ballistics when a group member fires + Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + Activada la balística avanzada siempre cuando miembros de grupo disparan + Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt + Aktivuje pokročilou balistiku pro členy skupiny + Sempre ative balística avançada quando um membro do grupo disparar + Mindig engedélyezi a fejlett ballisztikát, ha egy csoporttag tüzel + Всегда включает продвинутую баллистику когда стреляет член группы + + + Disabled In FullAuto Mode + Wył. podczas ognia auto. + Desactivada en modo automático + Beim vollautomatischen Feuern deaktiviert + Zakázáno v automatickém režimu střelby + Desabilitar no modo automático + Automata módban letiltva + Выкл. для автомат. режима + + + Disables the advanced ballistics during full auto fire + Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + Desactivada la balística avanzada durante el fuego automático + Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern + Zákáže pokročilou balistiku během střelby v režimu automat + Desabilitar a balística avançada durante fogo automático + Letiltja a fejlett ballisztikát automata tüzelés folyamán + Выключает продвинутую баллистику при стрельбе в полностью автоматическом режиме + + + Enable Ammo Temperature Simulation + Symulacja temp. amunicji + Activar simulación de temperatura de munición + Simulation der Munitionstemperatur aktivieren + Povolit simulaci teploty munice + Ativar simulação de temperatura de munição + Lőszer-hő szimuláció engedélyezése + Симуляция температуры для боеприпасов + + + Muzzle velocity varies with ammo temperature + Prędkość wylotowa pocisku jest zależna od temperatury amunicji + La velocidad de salida varía con la temperatura de la munición + Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit + Úsťová rychlost je závislá na teplotě munice + A velocidade de saída varia com a temperatura da munição + A kezdősebesség a lőszer hőmérsékletétől függően változó + Начальная скорость пули зависит от температуры + + + Enable Barrel Length Simulation + Symulacja długości lufy + Habilitar la simulación de longitud del cañón + Simulation der Lauflänge aktivieren + Povolit simulaci délky hlavně + Ativar a simulação de comprimento do cano + Csőhossz-szimuláció engedélyezése + Симуляция длины ствола + + + Muzzle velocity varies with barrel length + Prędkość wylotowa pocisku jest zależna od długości lufy + La velocidad de salidal varía con la longitud del cañón + Lauflänge beeinflusst Mündungsgeschwindigkeit + Úsťová rychlost je závislá na délce hlavně + A velocidade de saída caria com o comprimento do cano + A kezdősebesség a cső hosszától függően változó + Начальная скорость пули зависит от длины ствола + + + Enable Bullet Trace Effect + Efekt smugi pocisku + Activar el efecto trazador de la bala + Geschossspureffekt aktivieren + Povolit efekt trasírek + Ativa efeito traçante de projétil + Nyomkövető-effekt engedélyezése + Следы пуль + + + Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics) + Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę) + Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica) + Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) + Aktivuje efekt trasírek z vysokokaliberních zbraní (viditelné pouze skrze výkonnou optiku) + Ativa o efeito traçante de projétil para projéteis de alto calibre (somente visível quando observado por miras telescópicas) + Engedélyezi a nagy kaliberű lövedékek nyomának vizuális követését (csak nagy teljesítményű optikán keresztül látható) + Включает эффект следов пуль для больших калибров (видны только через мощную оптику) + + + Simulation Interval + Interwał symulacji + Intervalo de simulación + Simulationsintervall + Interval simulace + Intervalo da simulação + Szimuláció intervalluma + Интервал симуляции + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + Define el intervalo entre cada cálculo + Legt das Intervall zwischen den Berechnungsschritten fest + Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo + Meghatározza a számítási lépések közötti időintervallumot + Определяет временной интервал между вычислениями + + + Simulation Radius + Zasięg symulacji + Radio de simulación + Simulationsradius + Rozsah simulace + Raio de simulação + Szimuláció hatóköre + Радиус симуляции + + + Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles + Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków + Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles + Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird + Určuje oblast kolem hráče (v metrech), kde je pokročilá balistika použita na projektil + Define o raio ao redor do jogador (em metros) onde a balística avançada será aplicada aos projéteis + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékek fejlett ballisztikát használnak + Определяет радиус вокруг игрока (в метрах), в котором продвинутая баллистика применяется к снарядам + + + This module enables advanced ballistics simulation - meaning the trajectory of projectiles is influenced by variables like air temperature, atmospheric pressure, humidity, gravity, the type of ammunition and the weapon from which it was fired. + Moduł ten pozwala aktywować zaawansowaną balistykę biorącą przy obliczeniach trajektorii lotu pocisku pod uwagę takie rzeczy jak temperatura powietrza, ciśnienie atmosferyczne, wilgotność powietrza, siły Coriolisa i Eotvosa, grawitację a także broń z jakiej wykonywany jest strzał oraz rodzaj amunicji. Wszystko to sprowadza się na bardzo dokładne odwzorowanie balistyki. + Tento modul umožňuje aktivovat pokročilou balistiku, která vypočítává trajektorii kulky a bere do úvahy věci jako je teplota vzduchu, atmosférický tlak, vlhkost vzduchu, gravitaci, typ munice a zbraň, ze které je náboj vystřelen. To vše přispívá k velmi přesné balistice. + Este módulo permite que você ative cálculos de balística avançada, fazendo a trajetória do projétil levar em consideração coisas como temperatura do ar, pressão atmosférica, umidade, força de Coriolis, a gravidade, o modelo da arma no qual o disparo é realizado e o tipo de munição. Tudo isso acrescenta-se a um balística muito precisa. + Ez a modul engedélyezi a fejlett ballisztikai szimulációt - a lövedékek röppályáját befolyásolni fogja a levegő hőmérséklete, légnyomás, páratartalom, gravitáció, a lövedék fajtája, valamint a fegyver, amiből kilőtték a lövedéket. + Этот модуль включает симуляцию продвинутой баллистики - при этом на траекторию полета снаряда влияют различные параметры, такие как температура воздуха, атмосферное давление, влажность, гравитация, тип боеприпаса и оружия, из которого произвели выстрел. + + \ No newline at end of file From 08b7110e583b2048f8c61e7770eab09bc56dec56 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 3 Sep 2015 04:54:52 +0300 Subject: [PATCH 227/620] Russian Translations - Update --- addons/ballistics/stringtable.xml | 3210 +++++----- addons/captives/stringtable.xml | 520 +- addons/cargo/stringtable.xml | 98 +- addons/common/stringtable.xml | 1442 ++--- addons/concertina_wire/stringtable.xml | 104 +- addons/explosives/stringtable.xml | 1204 ++-- addons/flashlights/stringtable.xml | 68 +- addons/frag/stringtable.xml | 208 +- addons/hearing/stringtable.xml | 316 +- addons/interact_menu/stringtable.xml | 584 +- addons/interaction/stringtable.xml | 1642 +++--- addons/main/stringtable.xml | 18 +- addons/map/stringtable.xml | 424 +- addons/medical/stringtable.xml | 7492 ++++++++++++------------ addons/medical_menu/stringtable.xml | 736 +-- addons/microdagr/stringtable.xml | 748 +-- addons/missileguidance/stringtable.xml | 260 +- addons/missionmodules/stringtable.xml | 346 +- addons/mk6mortar/stringtable.xml | 258 +- addons/mx2a/stringtable.xml | 48 +- addons/nametags/stringtable.xml | 702 +-- addons/optionsmenu/stringtable.xml | 784 +-- addons/parachute/stringtable.xml | 132 +- addons/rangecard/stringtable.xml | 162 +- addons/realisticnames/stringtable.xml | 3824 ++++++------ addons/repair/stringtable.xml | 1466 ++--- addons/respawn/stringtable.xml | 514 +- addons/sitting/stringtable.xml | 98 +- addons/slideshow/stringtable.xml | 190 +- addons/spectator/stringtable.xml | 672 +-- addons/switchunits/stringtable.xml | 328 +- addons/tacticalladder/stringtable.xml | 148 +- addons/tripod/stringtable.xml | 136 +- addons/vehiclelock/stringtable.xml | 532 +- addons/viewdistance/stringtable.xml | 508 +- addons/weather/stringtable.xml | 312 +- addons/winddeflection/stringtable.xml | 328 +- addons/yardage450/stringtable.xml | 68 +- addons/zeus/stringtable.xml | 530 +- 39 files changed, 15580 insertions(+), 15580 deletions(-) diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 30a394e6ba..59e7af97dc 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1,1606 +1,1606 @@ - - - - - - 6.5mm 30Rnd Tracer IR-DIM Mag - 6,5mm Nyomjelző IR-DIM 30-as Tár - 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 6,5mm - Ch. 6,5mm 30Cps Traçantes IR-DIM - Magazynek 6,5mm 30rd Smugacz IR-DIM - 6.5mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 6,5mm - Caricatore 6.5mm 30Rnd Traccianti IR-DIM - Магазин из 30-ти 6,5 мм ИК-трассирующих - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - - - Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - 6.5mm 30Rnd SD Mag - 6,5mm Halk 30-as Tár - 6,5mm 30-Patronen-Magazin SD - Cargador de 30 balas SD de 6,5mm - Ch. 6,5mm 30Cps SD - Magazynek 6,5mm 30rd SD - 6.5mm 30náb. SD Zásobník - Carregador de 30 projéteis SD de 6,5mm - Caricatore 6.5mm 30Rnd Sil. - Магазин из 30-ти 6,5 мм дозвуковых - - - 6.5mm SD - 6,5mm Halk - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6.5mm SD - 6,5mm SD - 6.5mm Sil. - 6,5 мм дозвуковые - - - Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - 6.5mm 30Rnd AP Mag - 6,5mm Páncéltörő 30-as Tár - 6,5mm 30-Patronen-Magazin AP - Cargador de 30 balas AP de 6,5mm - Ch. 6,5mm 30Cps AP - Magazynek 6,5mm 30rd AP - 6.5mm 30náb. AP Zásobník - Carregador de 30 projéteis AP de 6,5mm - Caricatore 6.5mm 30Rnd AP - Магазин из 30-ти 6,5 мм бронебойных - - - 6.5mm AP - 6,5mm Páncéltörő - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6.5mm AP - 6,5mm AP - 6.5mm AP - 6,5 мм бронебойные - - - Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL - Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL - Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL - Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL - Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL - Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL - Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL - Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL - - - - 6.5mm 30Rnd Tracer IR-DIM Mag - 6,5mm IR-DIM Nyomjelző 30-as Tár - 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 6,5mm - Ch. 6,5mm 30Cps Traçantes IR-DIM - Magazynek 6,5mm 30rd Smugacz IR-DIM - 6.5mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 6,5mm - Caricatore 6.5mm 30Rnd Traccianti IR-DIM - Магазин из 30-ти 6,5 мм ИК-трассирующих - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - - - Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba - Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba - - - 6.5mm 30Rnd SD Mag - 6,5mm Halk 30-as Tár - 6,5mm 30-Patronen-Magazin SD - Cargador de 30 balas SD de 6,5mm - Ch. 6,5mm 30Cps SD - Magazynek 6,5mm 30rd SD - 6.5mm 30náb. SD Zásobník - Carregador de 30 projéteis SD de 6,5mm - Caricatore 6.5mm 30Rnd Sil. - Магазин из 30-ти 6,5 мм дозвуковых - - - 6.5mm SD - 6,5mm Halk - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6,5mm SD - 6.5mm SD - 6,5mm SD - 6.5mm Sil. - 6,5 мм дозвуковые - - - Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba - Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba - - - 6.5mm 30Rnd AP Mag - 6,5mm Páncéltörő 30-as Tár - 6,5mm 30-Patronen-Magazin AP - Cargador de 30 balas AP de 6,5mm - Ch. 6,5mm 30Cps AP - Magazynek 6,5mm 30rd AP - 6.5mm 30náb. AP Zásobník - Carregador de 30 projéteis AP de 6,5mm - Caricatore 6.5mm 30Rnd AP - Магазин из 30-ти 6,5 мм бронебойных - - - 6.5mm AP - 6,5mm Páncéltörő - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6,5mm AP - 6.5mm AP - 6,5mm AP - 6.5mm AP - 6,5 мм бронебойные - - - Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: Katiba - Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: Katiba - Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: Katiba - Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba - Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba - Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba - Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: Katiba - Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba - Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba - Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba - - - - 5.56mm 30rnd Tracer IR-DIM Mag - 5,56mm Nyomjelző IR-DIM 30-as Tár - 5,56mm 30-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 30 balas trazadoras IR-DIM de 5,56mm - Ch. 5,56mm 30Cps Traçantes IR-DIM - Magazynek 5,56mm 30rd Smugacz IR-DIM - 5.56mm 30náb. Svítící IR-DIM Zásobník - Carregador de 30 projéteis traçantes IR-DIM de 5,56mm - Caricatore 5.56mm 30rnd Traccianti IR-DIM - Магазин из 30-ти 5,56 мм ИК-трассирующих - - - 5.56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5,56mm IR-DIM - 5.56mm IR-DIM - 5,56mm IR-DIM - 5.56mm IR-DIM - 5,56 мм ИК-трассирующие - - - Caliber: 5.56x45mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Ráže: 5.56x45mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR - - - - 7.62mm 20rnd Tracer Mag - 7,62mm Nyomjelző IR-DIM 20-as Tár - 7,62mm 20-Patronen-Magazin Leuchtspur - Cargador de 20 balas trazadores de 7,62mm - Ch. 7,62mm 20Cps Traçantes - Magazynek 7,62mm 20rd Smugacz - 7.62mm 20náb. Svítící Zásobník - Carregador de 20 projéteis traçantes de 7,62mm - Caricatore 7.62mm 20Rnd Traccianti - Магазин из 20-ти 7,62 мм трассирующих - - - 7.62mm Tracer - 7,62mm Nyomjelző - 7,62mm Leuchtspur - 7,62mm Trazadora - 7,62mm Traçantes - 7,62mm Smugacz - 7.62mm Svítící - 7,62mm Traçante - 7.62mm Traccianti - 7,62 мм трассирущие - - - Caliber: 7.62x51mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Nyomjelző<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm Leuchtspur<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - - - 7.62mm 20rnd Tracer IR-DIM Mag - 7,62mm Nyomjelző IR-DIM 20-as Tár - 7,62mm 20-Patronen-Magazin Leuchtspur IR-DIM - Cargador de 20 balas trazadoras IR-DIM de 7,62mm - Ch. 7,62mm 20Cps Traçantes IR-DIM - Magazynek 7,62mm 20rd Smugacz IR-DIM - 7.62mm 20náb. Svítící IR-DIM Zásobník - Carregador de 20 projéteis IR-DIM de 7,62mm - Caricatore 7.62mm 20rnd Traccianti IR-DIM - Магазин из 20-ти 7,62 мм ИК-трассирующих - - - 7.62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7,62mm IR-DIM - 7.62mm IR-DIM - 7,62mm IR-DIM - 7.62mm IR-DIM - 7,62 мм ИК-трассирующие - - - Caliber: 7.62x51mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Nyomjelző IR-DIM<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm Leuchtspur IR-DIM<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR - - - 7.62mm 20Rnd SD Mag - 7,62mm Halk 20-as Tár - 7,62mm 20-Patronen-Magazin SD - Cargador de 20 balas SD de 7,62mm - Ch. 7,62mm 20Cps SD - Magazynek 7,62mm 20rd SD - 7.62mm 20náb. SD Zásobník - Carregador de 20 projéteis SD de 7,62mm - Caricatore 7.62mm 20Rnd Sil. - Магазин из 20-ти 7,62 мм дозвуковых - - - 7.62mm SD - 7,62mm Halk - 7,62mm SD - 7,62mm SD - 7,62mm SD - 7,62mm SD - 7.62mm SD - 7,62mm SD - 7.62mm Sil. - 7,62 мм дозвуковые - - - Caliber: 7.62x51mm SD<br />Rounds: 20<br />Used in: Mk18 ABR - Kaliber: 7,62x51mm Halk<br />Lövedékek: 20<br />Használható: Mk18 ABR - Kaliber: 7,62x51mm SD<br />Patronen: 20<br />Eingesetzt von: EBR - Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR - Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR - Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR - Ráže: 7.62x51mm SD<br />Munice: 20<br />Použití: Mk18 ABR - Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR - Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR - Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR - - - - .338 NM 130Rnd Tracer Belt - .338 NM 130-Patronen-Gurt Leuchtspur - Taśma .338 NM 130rd Smugacz - Bande .338 NM 130Cps Traçante - Cinta de 130 balas trazadoras de .338 NM - Лента из 130-ти .338 NM трассирующих - .338 NM 130Rnd Tracciante Belt - .338 NM 130náb. Svítící Pás - Cinto de munição .338 NM com 130 cartuchos - .338 NM 130-lövedékes nyomkövető heveder - - - .338 NM Tracer - .338 NM Leuchtspur - .338 NM Tracer - .338 NM Svítící - .338 NM Traçante - .338 NM Trazadora - .338 NM трассирующие - .338 NM 130Rnd Tracciante - .338 NM Traçante - .338 NM nyomkövető - - - Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Leuchtspur<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG - Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG - Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum Svítící<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - - - .338 NM 130Rnd IR-DIM Belt - .338 NM 130-Patronen-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 - Лента из 130-ти .338 NM ИК-трассирующих - .338 NM 130Rnd IR-DIM Belt - .338 NM 130náb. IR-DIM Pás - Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos - .338 NM 130-lövedékes infravörös nyomkövető heveder - - - .338 NM IR-DIM - .338 LM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM ИК-трассирующие - .338 NM IR-DIM - .338 NM IR-DIM - .338 NM infravörös nyomkövető - - - Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG - Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG - Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum Svítící IR-DIM<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG - - - .338 NM 130Rnd AP Belt - .338 NM 130-Patronen-Gurt Hartkern - Taśma .338 NM 130rd AP - Bande .338 NM 130Cps AP - Cinta de 130 balas AP de .338 NM - Лента из 130-ти .338 NM бронебойных - .338 NM 130Rnd AP Belt - .338 NM 130náb. AP Pás - Cinto de munição .338 NM com 130 cartuchos AP - .338 NM 130-lövedékes páncéltörő heveder - - - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM AP - .338 NM бронебойные - .338 NM AP - .338 NM AP - .338 NM páncéltörő - - - Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG - Kaliber: .338 Norma Magnum Hartkern<br />Patronen: 130<br />Eingesetzt von: SPMG - Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG - Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé avec: SPMG - Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG - Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG - Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG - Ráže: .338 Noma Magnum AP<br />Munice: 130<br />Použití: SPMG - Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG - Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG - - - - 9.3mm 10Rnd Tracer Mag - 9,3mm 10-Patronen-Magazin Leuchtspur - Magazynek 9.3mm 10rd Smugacz - Ch. 9.3mm 10Cps Traçante - Cargador de 10 balas trazadoras de 9.3mm - Магазин из 10-ти 9,3 мм трассирующих - 9.3mm 10Rnd Tracer Mag - 9.3mm 10náb. Svítící Zásobník - Carregador de 10 cartuchos 9.3mm traçantes - 9,3mm 10-lövedékes nyomkövető tár - - - 9.3mm Tracer - 9,3mm Leuchtspur - 9,3mm Smugacz - 9.3mm Svítící - 9.3mm Traçante - 9.3mm Trazadora - 9,3 мм трассирующие - 9.3mm Tracer - 9.3mm Traçante - 9,3mm nyomkövető - - - Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus - Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus - Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus - Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus - Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus - Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus - Ráže: 9.3x64mm Svítící<br />Munice: 10<br />Použití: Cyrus - Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus - Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus - - - 9.3mm 10Rnd Tracer IR-DIM Mag - 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM - Magazynek 9,3mm 10rd Smugacz IR-DIM - Ch. 9.3mm 10Cps Traçante IR-DIM - Cargador de 10 balas trazadoras IR-DIM de 9.3mm - Магазин из 10-ти 9,3 мм ИК-трассирующих - 9.3mm 10Rnd Tracciante IR-DIM Mag - 9.3mm 10náb. Svítící IR-DIM Zásobník - Carregador de 10 cartuchos 9.3mm traçantes IR-DIM - 9,3mm 10-lövedékes infravörös nyomkövető tár - - - 9.3mm IR-DIM - 9,3mm IR-DIM - 9,3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3 мм ИК-трассирующие - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3mm infravörös nyomkövető - - - Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus - Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus - Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus - Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus - Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus - Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus - Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 10<br />Použití: Cyrus - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus - Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus - - - - 9.3mm 150Rnd Tracer Belt - 9,3mm 150-Patronen-Gurt Leuchtspur - Taśma 9,3mm 150rd Smugacz - Bande 9.3mm 150Cps Traçante - Cinta de 150 balas trazadoras de 9.3mm - Лента из 150-ти 9,3 мм трассирующих - 9.3mm 150Rnd Tracer Belt - 9.3mm 150náb. Svítící Pás - Cinto de munição traçante 9.3mm com 150 cartuchos - 9,3mm 150-lövedékes nyomkövető heveder - - - 9.3mm Tracer - 9,3mm Leuchtspur - 9,3mm Smugacz - 9.3mm Svítící - 9.3mm Traçante - 9.3mm Trazadora - 9,3 мм трассирующие - 9.3mm Tracciante - 9.3mm Traçante - 9,3mm nyomkövető - - - Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm Svítící<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid - - - 9.3mm 150Rnd Tracer IR-DIM Belt - 9,3mm 150-Patronen-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 - Лента из 150-ти 9,3 мм ИК-трассирующих - 9.3mm 150Rnd Tracciante IR-DIM Belt - 9.3mm 150náb. Svítící IR-DIM Pás - Cinto de munição traçante 9.3mm IR-DIM com 150 cartuchos - 9,3mm 150-lövedékes infravörös nyomkövető heveder - - - 9.3mm IR-DIM - 9,3mm IR-DIM - 9,3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3 мм ИК-трассирующие - 9.3mm IR-DIM - 9.3mm IR-DIM - 9,3mm infravörös nyomkövető - - - Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid - - - 9.3mm 150Rnd AP Belt - 9,3mm 150-Patronen-Gurt Hartkern - Taśma 9,3mm 150rd AP - Bande 9.3mm 150Cps AP - Cinta de 150 balas AP de 9.3mm - Лента из 150-ти 9,3 мм бронебойных - 9.3mm 150Rnd AP Belt - 9.3mm 150náb. AP Pás - Cinto de munição 9.3mm AP com 150 cartuchos - 9,3mm 150-lövedékes páncéltörő heveder - - - 9.3mm AP - 9,3mm AP - 9,3mm AP - 9.3mm AP - 9.3mm AP - 9.3mm AP - 9,3 мм бронебойные - 9.3mm AP - 9.3mm AP - 9,3mm páncéltörő - - - Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid - Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid - Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid - Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid - Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid - Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид - Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid - Ráže: 9.3x64mm AP<br />Munice: 150<br />Použití: Navid - Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid - Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid - - - 9x19mm 16Rnd Mag - Magazynek 9x19mm 16rd - Ch. 9x19mm 16Cps - Cargador de 16 balas de 9x19mm - Магазин из 16-ти 9х19 мм - 9x19mm 20-Patronen-Magazin - 9x19mm 16Rnd Mag - 9x19mm 16náb. Zásobník - Carregador de 16 cartuchos 9x19mm - 9x19mm 16-lövedékes tár - - - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9х19 мм - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9x19mm - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 16rd - Ch. 9x19mm 30Cps - Cargador de 16 balas de 9x19mm - Магазин из 16-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 16 cartuchos 9x19mm - 9x19mm 16-lövedékes tár - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 30rd - Ch. 9x19mm 30Cps - Cargador de 30 balas de 9x19mm - Магазин из 30-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 30 cartuchos 9x19mm - 9x19mm 30-lövedékes tár - - - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9х19 мм - 9x19mm - 9x19mm - 9x19mm - 9x19mm - 9x19mm - - - 9x19mm 30Rnd Mag - Magazynek 9x19mm 30rd - Ch. 9x19mm 30Cps - Cargador de 30 balas de 9x19mm - Магазин из 30-ти 9х19 мм - 9x19mm 30-Patronen-Magazin - 9x19mm 30Rnd Mag - 9x19mm 30náb. Zásobník - Carregador de 30 cartuchos 9x19mm - 9x19mm 30-lövedékes tár - - - 7.62x54mm 10Rnd Tracer Mag - Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Rnd Traçante - Cargador de 10 balas trazadoras de 7.62x54mm - Магазин из 10-ти 7,62 мм ИК-трассирующих - 7,62x54mm 10-Patronen-Magazin Leuchtspur - 7.62x54mm 10Munizioni Traccianti IR-DIM Mag - 7.62x54mm 10náb. Svítící Zásobník - Carregador com 10 cartuchos 7.62x54mm Traçante - 7,62x54mm 10-lövedékes nyomkövető tár - - - 7.62mm - 7,62mm - 7.62mm - 7.62mm - 7,62 мм - 7,62mm - 7.62mm - 7.62mm - 7.62mm - 7,62mm - - - 7.62x54mm 10Rnd Tracer Mag - Magazynek 7,62x54mm 10rd Smugacz - Ch. 7.62x54mm 10Cps Traçante - Cargador de 10 balas trazadoras de 7.62x54mm - Магазин из 10-ти 7,62 мм ИК-трассирующих - 7,62x54mm 10-Patronen-Magazin Leuchtspur - 7.62x54mm 10Munizioni Traccianti IR-DIM Mag - 7.62x54mm 10náb. Svítící Zásobník - Carregador com 10 cartuchos 7.62x54mm Traçante - 7,62x54mm 10-lövedékes nyomkövető tár - - - 6.5mm 100Rnd Tracer IR-DIM Mag - Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM - Cargador de 100 balas trazadoras IR-DIM de 6.5mm - Магазин из 100 6,5 мм ИК-трассирующих - 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur - 6.5mm 100Munizioni Traccianti IR-DIM Mag - 6.5mm 100náb. Svítící IR-DIM Zásobník - Carregador com 100 cartuchos 6.5mm IR-DIM Traçante - 6,5mm 100-lövedékes infravörös nyomkövető tár - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5mm infravörös nyomkövető - - - 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW - Magazynek 6,5mm 100rd Smugacz IR-DIM - Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW - Cargador de 100 balas trazadoras IR-DIM de 6.5mm - Магазин из 100 6,5 мм ИК-трассирующих - 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW - 6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW - 6.5mm 100náb. Svítící IR-DIM Zásobník<br />Munice: 100<br />Použití: MX LSW - Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW - 6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW - - - 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 - Магазин из 200-т 6,5 мм ИК-трассирующих - 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur - 6.5mm 200Rnd Tracer IR-DIM Belt - 6.5mm 200náb. Svítící IR-DIM Pás - Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos - 6,5mm 200-lövedékes infravörös nyomkövető heveder - - - 6.5mm IR-DIM - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5 мм ИК-трассирующие - 6,5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6.5mm IR-DIM - 6,5mm infravörös nyomkövető - - - 6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG - Magazynek 6,5mm 200rd Smugacz IR-DIM - Bande 6.5mm 200Cps Traçante IR-DIM<br />Cartouches: 200<br />Utilisé avec: Stoner 99 LMG - Cinta de 200 balas trazadoras IR-DIM de 6.5mm - Магазин из 200-т 6,5 мм ИК-трассирующих - 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG - 6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG - 6.5mm 200náb. Svítící IR-DIM Pás<br />Munice: 200<br />Použití: Stoner 99 LMG - Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG - 6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG - - - 5.56mm 30Rnd Mag (Mk262) - Magazynek 5,56mm 30rd Mk262 - 5.56mm 30Cps (Mk262) - Cargador de 30 balas de 5.56mm (Mk262) - Магазин из 30-ти 5.56 мм Mk262 - 5,56mm 30-Patronen-Magazin (Mk262) - 5.56mm 30Rnd Mag (Mk262) - 5.56mm 30náb. Zásobník (Mk262) - Carregador 5.56mm com 30 cartuchos (Mk262) - 5,56mm 30-lövedékes tár (Mk262) - - - 5.56mm Mk262 - 5,56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5,56 мм Mk262 - 5,56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5.56mm Mk262 - 5,56mm Mk262 - - - Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (Mk262)<br />Munice: 30 - Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30 - - - 5.56mm 30Rnd Mag (Mk318) - Magazynek 5,56mm 30rd (Mk318) - Ch. 5.56mm 30Cps (Mk318) - Cargador de 30 balas de 5.56mm (Mk318) - Магазин из 30-ти 5.56 мм (Mk318) - 5,56mm 30-Patronen-Magazin (Mk318) - 5.56mm 30Rnd Mag (Mk318) - 5.56mm 30Rnd Zásobník (Mk318) - Carregador 5.56mm com 30 cartuchos (Mk318) - 5,56mm 30-lövedékes tár (Mk318) - - - 5.56mm Mk318 - 5,56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5.56 мм Mk318 - 5,56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5.56mm Mk318 - 5,56mm Mk318 - - - Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (Mk318)<br />Munice: 30 - Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30 - - - 5.56mm 30Rnd Mag (M995 AP) - Magazynek 5,56mm 30rd (M995 AP) - Ch. 5.56mm 30Cps (M995 AP) - Cargador de 30 balas de 5.56mm (M995 AP) - Магазин из 30-ти 5.56 мм (M995 бронебойные) - 5,56mm 30-Patronen-Magazin (M995AP) - 5.56mm 30Rnd Mag (M995 AP) - 5.56mm 30náb. Zásobník (M995 AP) - Carregador 5.56mm com 30 cartuchos (M995 AP) - 5,56mm 30-lövedékes tár (M995 páncéltörő) - - - 5.56mm AP - 5,56mm AP - 5.56mm AP - 5.56mm AP - 5.56 мм бронебойные - 5,56mm AP - 5.56mm AP - 5.56mm AP - 5.56mm M995 AP - 5,56mm páncéltörő - - - Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 - Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30 - Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30 - Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30 - Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30 - Ráže: 5.56x45mm NATO (M995 AP)<br />Munice: 30 - Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30 - Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30 - - - 7.62mm 10Rnd Mag (M118LR) - Magazynek 7,62mm 10rd (M118LR) - Ch. 7.62mm 10Cps (M118LR) - Cargador de 10 balas de 7.62mm (M118LR) - Магазин из 10-ти 7,62 мм (M118LR) - 7,62mm 10-Patronen-Magazin (M118LR) - 7.62mm 10Rnd Mag (M118LR) - 7.62mm 10náb. Zásobník (M118LR) - Carregador 7.62mm com 10 cartuchos (M118LR) - 7,62mm 10-lövedékes tár (M118LR) - - - 7.62mm M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62 мм M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62mm M118LR - - - Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 10 - Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (M118LR) - Magazynek 7,62mm 20rd (M118LR) - Ch. 7.62mm 20Cps (M118LR) - Cargador de 20 balas de 7.62mm (M118LR) - Магазин из 20-ти 7,62 мм (M118LR) - 7,62mm 20-Patronen-Magazin (M118LR) - 7.62mm 20Rnd Mag (M118LR) - 7.62mm 20náb. Zásobník (M118LR) - Carregador 7.62mm com 20 cartuchos (M118LR) - 7,62mm 20-lövedékes tár (M118LR) - - - 7.62mm M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62 мм M118LR - 7,62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7.62mm M118LR - 7,62mm M118LR - - - Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 20 - Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (Mk316 Mod 0) - Magazynek 7,62mm 10rd (Mk316 Mod 0) - Ch. 7.62mm 10Cps (Mk316 Mod 0) - Cargador de 10 balas de 7.62mm (Mk316 Mod 0) - Магазин из 10-ти 7,62 мм (Mk316 Mod 0) - 7,62mm 10-Patronen-Magazin (Mk316 Mod 0) - 7.62mm 10Rnd Mag (Mk316 Mod 0) - 7.62mm 10náb. Zásobník (Mk316 Mod 0) - Carregador 7.62mm com 10 cartuchos (Mk316 Mod 0) - 7,62mm 10-lövedékes tár (Mk316 Mod 0) - - - 7.62mm Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62 мм Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62mm Mk316 - - - Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 10 - Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (Mk316 Mod 0) - Magazynek 7,62mm 20rd (Mk316 Mod 0) - Ch. 7.62mm 20Cps (Mk316 Mod 0) - Cargador de 20 balas de 7.62mm (Mk316 Mod 0) - Магазин из 20-ти 7,62 мм (Mk316 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk316 Mod 0) - 7.62mm 20Rnd Mag (Mk316 Mod 0) - 7.62mm 20náb. Zásobník (Mk316 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk316 Mod 0) - 7,62mm 20-lövedékes tár (Mk316 Mod 0) - - - 7.62mm Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62 мм Mk316 - 7,62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7.62mm Mk316 - 7,62mm Mk316 - - - Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 20 - Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (Mk319 Mod 0) - Magazynek 7,62mm 10rd (Mk319 Mod 0) - Ch. 7.62mm 10Cps (Mk319 Mod 0) - Cargador de 10 balas de 7.62mm (Mk319 Mod 0) - Магазин из 10-ти 7,62 мм (Mk319 Mod 0) - 7,62mm 10-Patronen-Magazin (Mk319 Mod 0) - 7.62mm 10Rnd Mag (Mk319 Mod 0) - 7.62mm 10náb. Zásobník (Mk319 Mod 0) - Carregador 7.62mm com 10 cartuchos (Mk319 Mod 0) - 7,62mm 10-lövedékes tár (Mk319 Mod 0) - - - 7.62mm Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62 мм Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62mm Mk319 - - - Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 10 - Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (Mk319 Mod 0) - Magazynek 7,62mm 20rd (Mk319 Mod 0) - Ch. 7.62mm 20Cps (Mk319 Mod 0) - Cargador de 20 balas de 7.62mm (Mk319 Mod 0) - Магазин из 20-ти 7,62 мм (Mk319 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk319 Mod 0) - 7.62mm 20Rnd Mag (Mk319 Mod 0) - 7.62mm 20náb. Zásobník (Mk319 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk319 Mod 0) - 7,62mm 20-lövedékes tár (Mk319 Mod 0) - - - 7.62mm Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62 мм Mk319 - 7,62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7.62mm Mk319 - 7,62mm Mk319 - - - Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20 - Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 20 - Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 10Rnd Mag (M993 AP) - Magazynek 7,62mm 10rd (M993 AP) - Ch. 7.62mm 10Cps (M993 AP) - Cargador de 10 balas de 7.62mm (M993 AP) - Магазин из 10-ти 7,62 мм (M993 бронебойные) - 7,62mm 10-Patronen-Magazin (M993 AP) - 7.62mm 10Rnd Mag (M993 AP) - 7.62 10náb. Zásobník (M993 AP) - Carregador 7.62mm com 10 cartuchos (M993 AP) - 7,62mm 10-lövedékes tár (M993 páncéltörő) - - - 7.62mm AP - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm бронебойные - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm páncéltörő - - - Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 - Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10 - Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10 - Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10 - Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 10 - Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10 - Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10 - - - 7.62mm 20Rnd Mag (M993 AP) - Magazynek 7,62mm 20rd (M993 AP) - Ch. 7.62mm 20Cps (M993 AP) - Cargador de 20 balas de 7.62mm (M993 AP) - Магазин из 20-ти 7,62 мм (M993 бронебойные) - 7,62mm 20-Patronen-Magazin (M993 AP) - 7.62mm 20Rnd Mag (M993 AP) - 7.62mm 20náb. Zásobník (M993 AP) - Carregador 7.62mm com 20 cartuchos (M993 AP) - 7,62mm 20-lövedékes tár (M993 páncéltörő) - - - 7.62mm AP - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7,62 мм бронебойные - 7,62mm AP - 7.62mm AP - 7.62mm AP - 7.62mm AP - 7,62mm páncéltörő - - - Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 - Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 - Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20 - Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20 - Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20 - Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 20 - Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Mk248 Mod 0) - Magazynek 7,62mm 20rd (Mk248 Mod 0) - Ch. 7.62mm 20Cps (Mk248 Mod 0) - Cargador de 20 balas de 7.62mm (Mk248 Mod 0) - Магазин из 20-ти 7,62 мм (Mk248 Mod 0) - 7,62mm 20-Patronen-Magazin (Mk248 Mod 0) - 7.62mm 20Rnd Mag (Mk248 Mod 0) - 7.62mm 20náb. Zásobník (Mk248 Mod 0) - Carregador 7.62mm com 20 cartuchos (Mk248 Mod 0) - 7,62mm 20-lövedékes tár (Mk248 Mod 0) - - - 7.62mm Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62 мм Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62mm Mk248 - - - Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Mk248 Mod 1) - Magazynek 7,62mm 20rd (Mk248 Mod 1) - Ch. 7.62mm 20Cps (Mk248 Mod 1) - Cargador de 20 balas de 7.62mm (Mk248 Mod 1) - Магазин из 20-ти 7,62 мм (Mk248 Mod 1) - 7,62mm 20-Patronen-Magazin (Mk248 Mod 1) - 7.62mm 20Rnd Mag (Mk248 Mod 1) - 7.62mm 20náb. Zásobník (Mk248 Mod 1) - Carregador 7.62mm com 20 cartuchos (Mk248 Mod 1) - 7,62mm 20-lövedékes tár (Mk248 Mod 1) - - - 7.62mm Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62 мм Mk248 - 7,62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7.62mm Mk248 - 7,62mm Mk248 - - - Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20 - Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20 - - - 7.62mm 20Rnd Mag (Berger Hybrid OTM) - Magazynek 7,62mm 20rd (Berger Hybrid OTM) - Ch. 7.62 20Cps (Berger Hybrid OTM) - Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) - Магазин из 20-ти 7,62 мм (Berger Hybrid OTM) - 7,62mm 20-Patronen-Magazin (Berger Hybrid OTM) - 7.62mm 20Rnd Mag (Berger Hybrid OTM) - 7.62mm 20náb. Zásobník (Berger Hybrid OTM) - Carregador 7.62mm com 20 cartuchos (Berger Hybrid OTM) - 7,62mm 20-lövedékes tár (Berger Hybrid OTM) - - - 7.62mm OTM - 7,62mm OTM - 7.62mm OTM - 7.62mm OTM - 7,62 мм OTM - 7,62mm OTM - 7.62mm OTM - 7.62mm OTM - 7.62mm OTM - 7,62mm OTM - - - Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 - Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 - Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20 - Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20 - Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20 - Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Munice: 20 - Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20 - Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20 - - - 6.5x47mm 30Rnd Mag (HPBT Scenar) - Ch. 6.5x47mm 30Cps (HPBT Scenar) - Cargador de 30 balas de 6.5x47mm (HPBT Scenar) - Magazynek 6,5x47mm 30rd (HPBT Scenar) - Магазин из 30-ти 6,5x47 мм (экспансивные Scenar) - 6,5x47mm 30-Patronen-Magazin (HPBT Scenar) - 6.5x47mm 30Rnd Mag (HPBT Scenar) - 6.5x47mm 30náb. Zásobník (HPBT Scenar) - Carregador 6.5x47mm com 30 cartuchos (HPBT Scenar) - 6,5x47mm 30-lövedékes tár (HPBT Scenar) - - - 6.5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6,5mm Lapua - 6,5 мм Lapua - 6,5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6.5mm Lapua - 6,5mm Lapua - - - Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM - Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 - Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30 - Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM - Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM - Ráže: 6.5x47mm (HPBT Scenar)<br />Munice: 30<br />Použití: MXM - Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM - Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM - - - 6.5mm Creedmor 30Rnd Mag - Magazynek 6,5mm Creedmor 30rd - 6.5mm Creedmor 30Rnd Mag - Магазин из 30-ти 6,5 мм Creedmor - 6,5mm Creedmor 30-Patronen-Magazin - Cargador de 30 balas Creedmor de 6.5mm - Ch. 6.5mm Creedmor 30Cps - 6.5mm Creedmor 30náb. Zásobník - Carregador 6.5mm com 30 cartuchos Creedmor - 6,5mm Creedmor 30-lövedékes tár - - - 6.5mm CM - 6.5mm CM - 6.5mm CM - 6,5mm CM - 6,5 мм CM - 6,5mm CM - 6.5mm CM - 6.5mm CM - 6.5mm CM - 6,5mm CM - - - Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM - Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM - Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM - Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM - Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM - Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM - Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM - Ráže: 6.5x47mm Creedmor<br />Munice: 30<br />Použití: MXM - Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM - Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM - - - .338 10Rnd Mag (300gr Sierra MatchKing HPBT) - Ch. .338 10 Cps (300gr Sierra MatchKing HPBT) - Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) - Magazynek .338 10rd (300gr Sierra MatchKing HPBT) - Магазин из 10-ти .338 (300 гран Sierra MatchKing экспансивные) - .338 10-Patronen-Magazin (300gr Sierra MatchKing HPBT) - .338 10Munizioni Mag (300gr Sierra MatchKing HPBT) - .338 10náb. Zásobník (300gr Sierra MatchKing HPBT) - Carregador .338 (300gr Sierra MatchKing HPBT) com 10 cartuchos - .338 10-lövedékes tár (300gr Sierra MatchKing HPBT) - - - .338 HPBT - .338 HPBT - .338 HPBT - .338 HPBT - .338 экспансивные - .338 HPBT - .338 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 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10 - Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10 - Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10 - Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munice: 10 - Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10 - Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10 - - - .338 10Rnd Mag (API526) - Ch. .338 10Cps (API526) - Cargador de 10 balas de .338 (API526) - Magazynek .338 10rd (API526) - Магазин из 10-ти .338 (API526) - .338 10-Patronen-Magazin (API526) - .338 10Rnd Mag (API526) - .338 10náb. Zásobník (API526) - Carregador .338 (API526) com 10 cartuchos - .338 10-lövedékes tár (API526) - - - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 AP - .338 páncéltörő - - - Caliber: 8.6x70mm (API526)<br />Rounds: 10 - Calibre: 8.6x70mm (API526)<br />Cartouches: 10 - Calibre: 8.6x70mm (API526)<br />Balas: 10 - Kaliber: 8,6x70mm (API526)<br />Pociski: 10 - Калибр: 8,6x70 мм (API526)<br />Патронов: 10 - Kaliber: 8,6x70mm (API526)<br />Patronen: 10 - Calibro: 8.6x70mm (API526)<br />Munizioni: 10 - Ráže: 8.6x70mm (API526)<br />Munice: 10 - Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10 - Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10 - - - 12.7x99mm 5Rnd Mag - Ch. 12.7x99mm 5Cps - Cargador de 5 balas de 12.7x99mm - Magazynek 12,7x99mm 5rd - Магазин из 5-ти 12,7x99 мм - 12,7x99mm 5-Patronen-Magazin - 12.7x99mm 5Rnd Mag - 12.7x99mm 5náb. Zásobník - Carregador 12.7x99mm com 5 cartuchos - 12,7x99mm 5-lövedékes tár - - - 12.7mm - 12.7mm - 12.7mm - 12,7mm - 12,7 мм - 12,7mm - 12.7mm - 12.7mm - 12.7mm - 12,7mm - - - Caliber: 12.7x99mm<br />Rounds: 5 - Calibre: 12.7x99mm<br />Cartouches: 5 - Calibre: 12.7x99mm<br />Balas: 5 - Kaliber: 12,7x99mm<br />Pociski: 5 - Калибр: 12,7x99 мм<br />Патронов: 5 - Kaliber: 12,7x99mm<br />Patronen: 5 - Calibro: 12.7x99mm<br />Munizioni: 5 - Ráže: 12.7x99mm<br />Munice: 5 - Calibre: 12.7x99mm<br/>Cartuchos: 5 - Kaliber: 12,7x99mm<br />Lövedékek: 5 - - - 12.7x99mm API 5Rnd Mag - Ch. 12.7x99mm API 5Cps - Cargador de 5 balas de 12.7x99mm API - Magazynek 12,7x99mm API 5rd - 12.7x99mm API 5Rnd Mag - Магазин из 5-ти 12,7x99 мм (бронебойно-зажигательные) - 12,7x99mm 5-Patronen-Magazin (API) - 12.7x99mm API 5náb. Zásobník - Carregador 12.7x99mm API com 5 cartuchos - 12,7x99mm 5-lövedékes tár (páncéltörő-gyújtó) - - - 12.7mm API - 12.7mm API - 12.7mm API - 12,7mm API - 12.7mm API - 12.7 мм бронебойно-зажигательные - 12,7mm API - 12.7mm API - 12.7mm API - 12,7mm páncéltörő-gyújtó - - - Caliber: 12.7x99mm API<br />Rounds: 5 - Calibre: 12.7x99mm API<br />Cartouches: 5 - Calibre: 12.7x99mm API<br />Balas: 5 - Kaliber: 12,7x99mm API<br />Pociski: 5 - Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5 - Kaliber:12,7x99mm API<br />Patronen: 5 - Calibro: 12.7x99mm API<br />Munizioni: 5 - Ráže: 12.7x99mm API<br />Munice: 5 - Calibre: 12.7x99mm API<br/>Cartuchos: 5 - Kaliber: 12,7x99mm API<br />Lövedékek: 5 - - - 12.7x99mm 5Rnd Mag (AMAX) - Ch. 12.7x99mm 5Cps (AMAX) - Cargador de 5 balas de 12.7x99mm (AMAX) - Magazynek 12,7x99mm 5rd (AMAX) - Магазин из 5-ти 12,7x99 мм (A-MAX) - 12,7x99mm 5-Patronen-Magazin (AMAX) - 12.7x99mm 5Rnd Mag (AMAX) - 12.7x99mm 5náb. Zásobník (AMAX) - Carregador 12.7x99mm (AMAX) com 5 cartuchos - 12,7x99mm 5-lövedékes tár (AMAX) - - - 12.7mm - 12.7mm - 12.7mm - 12,7mm - 12,7 мм - 12,7mm - 12.7mm - 12.7mm - 12.7mm - 12,7mm - - - Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 - Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 - Calibre: 12.7x99mm (AMAX)<br />Balas: 5 - Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5 - Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5 - Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5 - Kaliber:12,7x99mm (AMAX)<br />Patronen: 5 - Ráže: 12.7x99mm (AMAX)<br />Munice: 5 - Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 - Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 - - - [ACE] Ammo Supply Crate - [ACE] Skrzynka z amunicją - [ACE] Caja de suministros de munición - [ACE] Munitionskiste - [ACE] Bedna s municí - [ACE] Caixa com suprimentos de munição - [ACE] Lőszeres láda - [ACE] Ящик с боеприпасами - - + + + + + + 6.5mm 30Rnd Tracer IR-DIM Mag + 6,5mm Nyomjelző IR-DIM 30-as Tár + 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 6,5mm + Ch. 6,5mm 30Cps Traçantes IR-DIM + Magazynek 6,5mm 30rd Smugacz IR-DIM + 6.5mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 6,5mm + Caricatore 6.5mm 30Rnd Traccianti IR-DIM + Магазин из 30-ти 6,5 мм ИК-трассирующих + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + + + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm Traccianti IR-DIM <br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + 6.5mm 30Rnd SD Mag + 6,5mm Halk 30-as Tár + 6,5mm 30-Patronen-Magazin SD + Cargador de 30 balas SD de 6,5mm + Ch. 6,5mm 30Cps SD + Magazynek 6,5mm 30rd SD + 6.5mm 30náb. SD Zásobník + Carregador de 30 projéteis SD de 6,5mm + Caricatore 6.5mm 30Rnd Sil. + Магазин из 30-ти 6,5 мм дозвуковых + + + 6.5mm SD + 6,5mm Halk + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6.5mm SD + 6,5mm SD + 6.5mm Sil. + 6,5 мм дозвуковые + + + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm SD<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + 6.5mm 30Rnd AP Mag + 6,5mm Páncéltörő 30-as Tár + 6,5mm 30-Patronen-Magazin AP + Cargador de 30 balas AP de 6,5mm + Ch. 6,5mm 30Cps AP + Magazynek 6,5mm 30rd AP + 6.5mm 30náb. AP Zásobník + Carregador de 30 projéteis AP de 6,5mm + Caricatore 6.5mm 30Rnd AP + Магазин из 30-ти 6,5 мм бронебойных + + + 6.5mm AP + 6,5mm Páncéltörő + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6.5mm AP + 6,5mm AP + 6.5mm AP + 6,5 мм бронебойные + + + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: MX/C/M/SW/3GL + Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: MX/C/M/SW/3GL + Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: MX/C/M/SW/3GL + Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: MX/C/M/SW/3GL + Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: MX/C/M/SW/3GL + Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: MX/C/M/SW/3GL + Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: MX/C/M/SW/3GL + Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: MX/C/M/SW/3GL + + + + 6.5mm 30Rnd Tracer IR-DIM Mag + 6,5mm IR-DIM Nyomjelző 30-as Tár + 6,5mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 6,5mm + Ch. 6,5mm 30Cps Traçantes IR-DIM + Magazynek 6,5mm 30rd Smugacz IR-DIM + 6.5mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 6,5mm + Caricatore 6.5mm 30Rnd Traccianti IR-DIM + Магазин из 30-ти 6,5 мм ИК-трассирующих + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + + + Caliber: 6.5x39mm Tracer IR-DIM<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: Katiba + Ráže: 6.5x39mm Svítící IR-DIM<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm Tracciant IR-DIM<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: Katiba + + + 6.5mm 30Rnd SD Mag + 6,5mm Halk 30-as Tár + 6,5mm 30-Patronen-Magazin SD + Cargador de 30 balas SD de 6,5mm + Ch. 6,5mm 30Cps SD + Magazynek 6,5mm 30rd SD + 6.5mm 30náb. SD Zásobník + Carregador de 30 projéteis SD de 6,5mm + Caricatore 6.5mm 30Rnd Sil. + Магазин из 30-ти 6,5 мм дозвуковых + + + 6.5mm SD + 6,5mm Halk + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6,5mm SD + 6.5mm SD + 6,5mm SD + 6.5mm Sil. + 6,5 мм дозвуковые + + + Caliber: 6.5x39mm SD<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Halk<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm SD<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm SD<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm SD<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm SD<br />Naboje: 30<br />Używane w: Katiba + Ráže: 6.5x39mm SD<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm SD<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm Sil.<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм дозвуковые<br />Патронов: 30<br />Используются с: Katiba + + + 6.5mm 30Rnd AP Mag + 6,5mm Páncéltörő 30-as Tár + 6,5mm 30-Patronen-Magazin AP + Cargador de 30 balas AP de 6,5mm + Ch. 6,5mm 30Cps AP + Magazynek 6,5mm 30rd AP + 6.5mm 30náb. AP Zásobník + Carregador de 30 projéteis AP de 6,5mm + Caricatore 6.5mm 30Rnd AP + Магазин из 30-ти 6,5 мм бронебойных + + + 6.5mm AP + 6,5mm Páncéltörő + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6,5mm AP + 6.5mm AP + 6,5mm AP + 6.5mm AP + 6,5 мм бронебойные + + + Caliber: 6.5x39mm AP<br />Rounds: 30<br />Used in: Katiba + Kaliber: 6,5x39mm Páncéltörő<br />Lövedékek: 30<br />Használható: Katiba + Kaliber: 6,5x39mm AP<br />Patronen: 30<br />Eingesetzt von: Katiba + Calibre: 6,5x39mm AP<br />Balas: 30<br />Se usa en: Katiba + Calibre: 6,5x39mm AP<br />Cartouches: 30<br />Utilisé avec: Katiba + Kaliber: 6,5x39mm AP<br />Pociski: 30<br />Używane w: Katiba + Ráže: 6.5x39mm AP<br />Munice: 30<br />Použití: Katiba + Calibre: 6,5x39mm AP<br />Projéteis: 30<br />Usado em: Katiba + Calibro: 6.5x39mm AP<br />Munizioni: 30<br />In uso su: Katiba + Калибр: 6,5x39 мм бронебойные<br />Патронов: 30<br />Используются с: Katiba + + + + 5.56mm 30rnd Tracer IR-DIM Mag + 5,56mm Nyomjelző IR-DIM 30-as Tár + 5,56mm 30-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 30 balas trazadoras IR-DIM de 5,56mm + Ch. 5,56mm 30Cps Traçantes IR-DIM + Magazynek 5,56mm 30rd Smugacz IR-DIM + 5.56mm 30náb. Svítící IR-DIM Zásobník + Carregador de 30 projéteis traçantes IR-DIM de 5,56mm + Caricatore 5.56mm 30rnd Traccianti IR-DIM + Магазин из 30-ти 5,56 мм ИК-трассирующих + + + 5.56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5,56mm IR-DIM + 5.56mm IR-DIM + 5,56mm IR-DIM + 5.56mm IR-DIM + 5,56 мм ИК-трассирующие + + + Caliber: 5.56x45mm Tracer IR-DIM<br />Rounds: 30<br />Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Nyomjelző IR-DIM<br />Lövedékek: 30<br />Használható: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Leuchtspur IR-DIM<br />Patronen: 30<br />Eingesetzt von: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Trazadoras IR-DIM<br />Balas: 30<br />Se usa en: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Traçantes IR-DIM<br />Cartouches: 30<br />Utilisé avec: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Kaliber: 5,56x45mm Smugacz IR-DIM<br />Pociski: 30<br />Używane w: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Ráže: 5.56x45mm Svítící IR-DIM<br />Munice: 30<br />Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibre: 5,56x45mm Traçante IR-DIM<br />Projéteis: 30<br />Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Calibro: 5.56x45mm Traccianti IR-DIM<br />Munizioni: 30<br />In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + Калибр: 5,56x45 мм ИК-трассирующие<br />Патронов: 30<br />Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR + + + + 7.62mm 20rnd Tracer Mag + 7,62mm Nyomjelző IR-DIM 20-as Tár + 7,62mm 20-Patronen-Magazin Leuchtspur + Cargador de 20 balas trazadores de 7,62mm + Ch. 7,62mm 20Cps Traçantes + Magazynek 7,62mm 20rd Smugacz + 7.62mm 20náb. Svítící Zásobník + Carregador de 20 projéteis traçantes de 7,62mm + Caricatore 7.62mm 20Rnd Traccianti + Магазин из 20-ти 7,62 мм трассирующих + + + 7.62mm Tracer + 7,62mm Nyomjelző + 7,62mm Leuchtspur + 7,62mm Trazadora + 7,62mm Traçantes + 7,62mm Smugacz + 7.62mm Svítící + 7,62mm Traçante + 7.62mm Traccianti + 7,62 мм трассирущие + + + Caliber: 7.62x51mm Tracer<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Nyomjelző<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm Leuchtspur<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm Trazadora<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm Traçantes<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm Smugacz<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm Svítící<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm Traçante<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Traccianti<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR + + + 7.62mm 20rnd Tracer IR-DIM Mag + 7,62mm Nyomjelző IR-DIM 20-as Tár + 7,62mm 20-Patronen-Magazin Leuchtspur IR-DIM + Cargador de 20 balas trazadoras IR-DIM de 7,62mm + Ch. 7,62mm 20Cps Traçantes IR-DIM + Magazynek 7,62mm 20rd Smugacz IR-DIM + 7.62mm 20náb. Svítící IR-DIM Zásobník + Carregador de 20 projéteis IR-DIM de 7,62mm + Caricatore 7.62mm 20rnd Traccianti IR-DIM + Магазин из 20-ти 7,62 мм ИК-трассирующих + + + 7.62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7,62mm IR-DIM + 7.62mm IR-DIM + 7,62mm IR-DIM + 7.62mm IR-DIM + 7,62 мм ИК-трассирующие + + + Caliber: 7.62x51mm Tracer IR-DIM<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Nyomjelző IR-DIM<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm Leuchtspur IR-DIM<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm Trazadoras IR-DIM<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm Traçantes IR-DIM<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm Smugacz IR-DIM<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm Svítící IR-DIM<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm Traçante IR-DIM<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Traccianti IR-DIM<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм ИК-трассирующие<br />Патронов: 20<br />Используются с: Mk18 ABR + + + 7.62mm 20Rnd SD Mag + 7,62mm Halk 20-as Tár + 7,62mm 20-Patronen-Magazin SD + Cargador de 20 balas SD de 7,62mm + Ch. 7,62mm 20Cps SD + Magazynek 7,62mm 20rd SD + 7.62mm 20náb. SD Zásobník + Carregador de 20 projéteis SD de 7,62mm + Caricatore 7.62mm 20Rnd Sil. + Магазин из 20-ти 7,62 мм дозвуковых + + + 7.62mm SD + 7,62mm Halk + 7,62mm SD + 7,62mm SD + 7,62mm SD + 7,62mm SD + 7.62mm SD + 7,62mm SD + 7.62mm Sil. + 7,62 мм дозвуковые + + + Caliber: 7.62x51mm SD<br />Rounds: 20<br />Used in: Mk18 ABR + Kaliber: 7,62x51mm Halk<br />Lövedékek: 20<br />Használható: Mk18 ABR + Kaliber: 7,62x51mm SD<br />Patronen: 20<br />Eingesetzt von: EBR + Calibre: 7,62x51mm SD<br />Balas: 20<br />Se usa en: Mk18 ABR + Calibre: 7,62x51mm SD<br />Cartouches: 20<br />Utilisé avec: EBR + Kaliber: 7,62x51mm SD<br />Pociski: 20<br />Używane w: Mk18 ABR + Ráže: 7.62x51mm SD<br />Munice: 20<br />Použití: Mk18 ABR + Calibre: 7,62x51mm SD<br />Projéteis: 20<br />Usado em: Mk18 ABR + Calibro: 7.62x51mm Sil.<br />Munizioni: 20<br />In uso su: Mk18 ABR + Калибр: 7,62x51 мм дозвуковые<br />Патронов: 20<br />Используются с: Mk18 ABR + + + + .338 NM 130Rnd Tracer Belt + .338 NM 130-Patronen-Gurt Leuchtspur + Taśma .338 NM 130rd Smugacz + Bande .338 NM 130Cps Traçante + Cinta de 130 balas trazadoras de .338 NM + Лента из 130-ти .338 NM трассирующих + .338 NM 130Rnd Tracciante Belt + .338 NM 130náb. Svítící Pás + Cinto de munição .338 NM com 130 cartuchos + .338 NM 130-lövedékes nyomkövető heveder + + + .338 NM Tracer + .338 NM Leuchtspur + .338 NM Tracer + .338 NM Svítící + .338 NM Traçante + .338 NM Trazadora + .338 NM трассирующие + .338 NM 130Rnd Tracciante + .338 NM Traçante + .338 NM nyomkövető + + + Caliber: .338 Norma Magnum Tracer<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Leuchtspur<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG + Calibre: .338 Norma Magnum trazadora<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum трассирующие<br />Патронов: 130<br />Используются в: SPMG + Calibro: .338 Norma Magnum Tracciante<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum Svítící<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum Traçante<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum nyomkövető<br />Lövedékek: 130<br />Használható: SPMG + + + .338 NM 130Rnd IR-DIM Belt + .338 NM 130-Patronen-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 + Лента из 130-ти .338 NM ИК-трассирующих + .338 NM 130Rnd IR-DIM Belt + .338 NM 130náb. IR-DIM Pás + Cinto de munição traçante .338 NM IR-DIM com 130 cartuchos + .338 NM 130-lövedékes infravörös nyomkövető heveder + + + .338 NM IR-DIM + .338 LM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM ИК-трассирующие + .338 NM IR-DIM + .338 NM IR-DIM + .338 NM infravörös nyomkövető + + + Caliber: .338 Norma Magnum Tracer IR-DIM<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Leuchtspur IR-DIM<br />Patronen: 130<br />Eingesetzt von: 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é avec: SPMG + Calibre: .338 Norma Magnum trazadora IR-DIM<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum ИК-трассирующие<br />Патронов: 130<br />Используются с: SPMG + Calibro: .338 Norma Magnum Tracciante IR-DIM<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum Svítící IR-DIM<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum Traçante IR-DIM<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum infravörös nyomkövető<br />Lövedékek: 130<br />Használható: SPMG + + + .338 NM 130Rnd AP Belt + .338 NM 130-Patronen-Gurt Hartkern + Taśma .338 NM 130rd AP + Bande .338 NM 130Cps AP + Cinta de 130 balas AP de .338 NM + Лента из 130-ти .338 NM бронебойных + .338 NM 130Rnd AP Belt + .338 NM 130náb. AP Pás + Cinto de munição .338 NM com 130 cartuchos AP + .338 NM 130-lövedékes páncéltörő heveder + + + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM AP + .338 NM бронебойные + .338 NM AP + .338 NM AP + .338 NM páncéltörő + + + Caliber: .338 Norma Magnum AP<br />Rounds: 130<br />Used in: SPMG + Kaliber: .338 Norma Magnum Hartkern<br />Patronen: 130<br />Eingesetzt von: SPMG + Kaliber: .338 Norma Magnum AP<br />Pociski: 130<br />Używane w: SPMG + Calibre: .338 Norma Magnum AP<br />Cartouches: 130<br />Utilisé avec: SPMG + Calibre: .338 Norma Magnum AP<br />Balas: 130<br />Se usa en: SPMG + Калибр: .338 Norma Magnum бронебойные<br />Патронов: 130<br />Используются с: SPMG + Calibro: .338 Norma Magnum AP<br />Munizioni: 130<br />In uso su: SPMG + Ráže: .338 Noma Magnum AP<br />Munice: 130<br />Použití: SPMG + Calibre: .338 Norma Magnum AP<br />Cartuchos: 130<br />Usado em: SPMG + Kaliber: .338 Norma Magnum páncéltörő<br />Lövedékek: 130<br />Használható: SPMG + + + + 9.3mm 10Rnd Tracer Mag + 9,3mm 10-Patronen-Magazin Leuchtspur + Magazynek 9.3mm 10rd Smugacz + Ch. 9.3mm 10Cps Traçante + Cargador de 10 balas trazadoras de 9.3mm + Магазин из 10-ти 9,3 мм трассирующих + 9.3mm 10Rnd Tracer Mag + 9.3mm 10náb. Svítící Zásobník + Carregador de 10 cartuchos 9.3mm traçantes + 9,3mm 10-lövedékes nyomkövető tár + + + 9.3mm Tracer + 9,3mm Leuchtspur + 9,3mm Smugacz + 9.3mm Svítící + 9.3mm Traçante + 9.3mm Trazadora + 9,3 мм трассирующие + 9.3mm Tracer + 9.3mm Traçante + 9,3mm nyomkövető + + + Caliber: 9.3x64mm Tracer<br />Rounds: 10<br />Used in: Cyrus + Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 10<br />Eingesetzt von: Cyrus + Kaliber: 9,3x64mm Smugacz<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9.3x64mm trazadora<br />Balas: 10<br />Se usa en: Cyrus + Калибр: 9,3x64 мм трассирующие<br />Патронов: 10<br />Используются с: Cyrus + Calibro: 9.3x64mm Tracer<br />Munizioni: 10<br />In uso su: Cyrus + Ráže: 9.3x64mm Svítící<br />Munice: 10<br />Použití: Cyrus + Calibre: 9.3x64mm Traçante<br />Cartuchos: 10<br />Usado em: Cyrus + Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 10<br />Használható: Cyrus + + + 9.3mm 10Rnd Tracer IR-DIM Mag + 9,3mm 10-Patronen-Magazin Leuchtspur IR-DIM + Magazynek 9,3mm 10rd Smugacz IR-DIM + Ch. 9.3mm 10Cps Traçante IR-DIM + Cargador de 10 balas trazadoras IR-DIM de 9.3mm + Магазин из 10-ти 9,3 мм ИК-трассирующих + 9.3mm 10Rnd Tracciante IR-DIM Mag + 9.3mm 10náb. Svítící IR-DIM Zásobník + Carregador de 10 cartuchos 9.3mm traçantes IR-DIM + 9,3mm 10-lövedékes infravörös nyomkövető tár + + + 9.3mm IR-DIM + 9,3mm IR-DIM + 9,3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3 мм ИК-трассирующие + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3mm infravörös nyomkövető + + + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 10<br />Used in: Cyrus + Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 10<br />Eingesetzt von: Cyrus + Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 10<br />Używany w: Cyrus + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 10<br />Utilisé avec: Cyrus + Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 10<br />Se usa en: Cyrus + Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 10<br />Используются с: Cyrus + Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 10<br />In uso su: Cyrus + Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 10<br />Použití: Cyrus + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 10<br />Usado em: Cyrus + Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 10<br /> Használható: Cyrus + + + + 9.3mm 150Rnd Tracer Belt + 9,3mm 150-Patronen-Gurt Leuchtspur + Taśma 9,3mm 150rd Smugacz + Bande 9.3mm 150Cps Traçante + Cinta de 150 balas trazadoras de 9.3mm + Лента из 150-ти 9,3 мм трассирующих + 9.3mm 150Rnd Tracer Belt + 9.3mm 150náb. Svítící Pás + Cinto de munição traçante 9.3mm com 150 cartuchos + 9,3mm 150-lövedékes nyomkövető heveder + + + 9.3mm Tracer + 9,3mm Leuchtspur + 9,3mm Smugacz + 9.3mm Svítící + 9.3mm Traçante + 9.3mm Trazadora + 9,3 мм трассирующие + 9.3mm Tracciante + 9.3mm Traçante + 9,3mm nyomkövető + + + Caliber: 9.3x64mm Tracer<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Leuchtspur<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm Smugacz<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm trazadora<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм трассирующие<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm Tracciante<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm Svítící<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm Traçante<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm nyomkövető<br />Lövedékek: 150<br />Használható: Navid + + + 9.3mm 150Rnd Tracer IR-DIM Belt + 9,3mm 150-Patronen-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 + Лента из 150-ти 9,3 мм ИК-трассирующих + 9.3mm 150Rnd Tracciante IR-DIM Belt + 9.3mm 150náb. Svítící IR-DIM Pás + Cinto de munição traçante 9.3mm IR-DIM com 150 cartuchos + 9,3mm 150-lövedékes infravörös nyomkövető heveder + + + 9.3mm IR-DIM + 9,3mm IR-DIM + 9,3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3 мм ИК-трассирующие + 9.3mm IR-DIM + 9.3mm IR-DIM + 9,3mm infravörös nyomkövető + + + Caliber: 9.3x64mm Tracer IR-DIM<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Leuchtspur IR-DIM<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm Smugacz IR-DIM<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm trazadora IR-DIM<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм ИК-трассирующие<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm Tracciante IR-DIM<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm Svítící IR-DIM<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm Traçante IR-DIM<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm infravörös nyomkövető<br />Lövedékek: 150<br />Használható: Navid + + + 9.3mm 150Rnd AP Belt + 9,3mm 150-Patronen-Gurt Hartkern + Taśma 9,3mm 150rd AP + Bande 9.3mm 150Cps AP + Cinta de 150 balas AP de 9.3mm + Лента из 150-ти 9,3 мм бронебойных + 9.3mm 150Rnd AP Belt + 9.3mm 150náb. AP Pás + Cinto de munição 9.3mm AP com 150 cartuchos + 9,3mm 150-lövedékes páncéltörő heveder + + + 9.3mm AP + 9,3mm AP + 9,3mm AP + 9.3mm AP + 9.3mm AP + 9.3mm AP + 9,3 мм бронебойные + 9.3mm AP + 9.3mm AP + 9,3mm páncéltörő + + + Caliber: 9.3x64mm AP<br />Rounds: 150<br />Used in: Navid + Kaliber: 9,3x64mm Hartkern<br />Patronen: 150<br />Eingesetzt von: Navid + Kaliber: 9,3x64mm AP<br />Pociski: 150<br />Używane w: Navid + Calibre: 9.3x64mm AP<br />Cartouches: 150<br />Utilisé avec: Navid + Calibre: 9.3x64mm AP<br />Balas: 150<br />Se usa en: Navid + Калибр: 9,3x64 мм бронебойные<br />Патронов: 150<br />Используются с: Навид + Calibro: 9.3x64mm AP<br />Munizioni: 150<br />In uso su: Navid + Ráže: 9.3x64mm AP<br />Munice: 150<br />Použití: Navid + Calibre: 9.3x64mm AP<br />Cartuchos: 150<br />Usado em: Navid + Kaliber: 9,3x64mm páncéltörő<br />Lövedékek: 150<br />Használható: Navid + + + 9x19mm 16Rnd Mag + Magazynek 9x19mm 16rd + Ch. 9x19mm 16Cps + Cargador de 16 balas de 9x19mm + Магазин из 16-ти 9х19 мм + 9x19mm 20-Patronen-Magazin + 9x19mm 16Rnd Mag + 9x19mm 16náb. Zásobník + Carregador de 16 cartuchos 9x19mm + 9x19mm 16-lövedékes tár + + + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9х19 мм + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9x19mm + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 16rd + Ch. 9x19mm 30Cps + Cargador de 16 balas de 9x19mm + Магазин из 16-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 16 cartuchos 9x19mm + 9x19mm 16-lövedékes tár + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 30rd + Ch. 9x19mm 30Cps + Cargador de 30 balas de 9x19mm + Магазин из 30-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 30 cartuchos 9x19mm + 9x19mm 30-lövedékes tár + + + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9х19 мм + 9x19mm + 9x19mm + 9x19mm + 9x19mm + 9x19mm + + + 9x19mm 30Rnd Mag + Magazynek 9x19mm 30rd + Ch. 9x19mm 30Cps + Cargador de 30 balas de 9x19mm + Магазин из 30-ти 9х19 мм + 9x19mm 30-Patronen-Magazin + 9x19mm 30Rnd Mag + 9x19mm 30náb. Zásobník + Carregador de 30 cartuchos 9x19mm + 9x19mm 30-lövedékes tár + + + 7.62x54mm 10Rnd Tracer Mag + Magazynek 7,62x54mm 10rd Smugacz + Ch. 7.62x54mm 10Rnd Traçante + Cargador de 10 balas trazadoras de 7.62x54mm + Магазин из 10-ти 7,62 мм ИК-трассирующих + 7,62x54mm 10-Patronen-Magazin Leuchtspur + 7.62x54mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54mm 10náb. Svítící Zásobník + Carregador com 10 cartuchos 7.62x54mm Traçante + 7,62x54mm 10-lövedékes nyomkövető tár + + + 7.62mm + 7,62mm + 7.62mm + 7.62mm + 7,62 мм + 7,62mm + 7.62mm + 7.62mm + 7.62mm + 7,62mm + + + 7.62x54mm 10Rnd Tracer Mag + Magazynek 7,62x54mm 10rd Smugacz + Ch. 7.62x54mm 10Cps Traçante + Cargador de 10 balas trazadoras de 7.62x54mm + Магазин из 10-ти 7,62 мм ИК-трассирующих + 7,62x54mm 10-Patronen-Magazin Leuchtspur + 7.62x54mm 10Munizioni Traccianti IR-DIM Mag + 7.62x54mm 10náb. Svítící Zásobník + Carregador com 10 cartuchos 7.62x54mm Traçante + 7,62x54mm 10-lövedékes nyomkövető tár + + + 6.5mm 100Rnd Tracer IR-DIM Mag + Magazynek 6,5mm 100rd Smugacz IR-DIM + Ch. 6.5mm 100Rnd Traçante IR-DIM + Cargador de 100 balas trazadoras IR-DIM de 6.5mm + Магазин из 100 6,5 мм ИК-трассирующих + 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur + 6.5mm 100Munizioni Traccianti IR-DIM Mag + 6.5mm 100náb. Svítící IR-DIM Zásobník + Carregador com 100 cartuchos 6.5mm IR-DIM Traçante + 6,5mm 100-lövedékes infravörös nyomkövető tár + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5mm infravörös nyomkövető + + + 6.5mm 100Rnd Tracer IR-DIM Mag<br />Rounds: 100<br />Used in: MX LSW + Magazynek 6,5mm 100rd Smugacz IR-DIM + Ch. 6.5mm 100Rnd Traçante IR-DIM<br />Cartouches: 100<br />Utilisé avec: MX LSW + Cargador de 100 balas trazadoras IR-DIM de 6.5mm + Магазин из 100 6,5 мм ИК-трассирующих + 6,5mm 100-Patronen-Magazin IR-DIM Leuchtspur<br />Patronen: 100<br />Eingesetzt von: MXLSW + 6.5mm 100Rnd Tracer IR-DIM Mag<br />Munizioni: 100<br />In uso su: MX LSW + 6.5mm 100náb. Svítící IR-DIM Zásobník<br />Munice: 100<br />Použití: MX LSW + Carregador 6.5mm 100 Cartuchos Traçantes IR-DIM<br />Cartuchos: 100<br />Usado em: MX LSW + 6.5mm 100-lövedékes infravörös nyomkövető tár<br />Lövedékek: 100<br />Használható: MX LSW + + + 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 + Магазин из 200-т 6,5 мм ИК-трассирующих + 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur + 6.5mm 200Rnd Tracer IR-DIM Belt + 6.5mm 200náb. Svítící IR-DIM Pás + Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos + 6,5mm 200-lövedékes infravörös nyomkövető heveder + + + 6.5mm IR-DIM + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5 мм ИК-трассирующие + 6,5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6.5mm IR-DIM + 6,5mm infravörös nyomkövető + + + 6.5mm 200Rnd Tracer IR-DIM Belt<br />Rounds: 200<br />Used in: Stoner 99 LMG + Magazynek 6,5mm 200rd Smugacz IR-DIM + Bande 6.5mm 200Cps Traçante IR-DIM<br />Cartouches: 200<br />Utilisé avec: Stoner 99 LMG + Cinta de 200 balas trazadoras IR-DIM de 6.5mm + Магазин из 200-т 6,5 мм ИК-трассирующих + 6,5mm 200-Patronen-Gurt IR-DIM Leuchtspur<br />Patronen: 200<br />Eingesetzt von: Stoner 99 LMG + 6.5mm 200Rnd Tracer IR-DIM Belt<br />Munizioni: 200<br />In uso su: Stoner 99 LMG + 6.5mm 200náb. Svítící IR-DIM Pás<br />Munice: 200<br />Použití: Stoner 99 LMG + Cinto de munição traçante 6.5mm IR-DIM com 200 cartuchos<br />Cartuchos: 200<br />Usado em: Stoner 99 LMG + 6.5mm 200-lövedékes infravörös nyomkövető heveder<br />Lövedékek: 200<br />Használható: Stoner 99 LMG + + + 5.56mm 30Rnd Mag (Mk262) + Magazynek 5,56mm 30rd Mk262 + 5.56mm 30Cps (Mk262) + Cargador de 30 balas de 5.56mm (Mk262) + Магазин из 30-ти 5.56 мм Mk262 + 5,56mm 30-Patronen-Magazin (Mk262) + 5.56mm 30Rnd Mag (Mk262) + 5.56mm 30náb. Zásobník (Mk262) + Carregador 5.56mm com 30 cartuchos (Mk262) + 5,56mm 30-lövedékes tár (Mk262) + + + 5.56mm Mk262 + 5,56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5,56 мм Mk262 + 5,56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5.56mm Mk262 + 5,56mm Mk262 + + + Caliber: 5.56x45mm NATO (Mk262)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (Mk262)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (Mk262)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (Mk262)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (Mk262)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (Mk262)<br />Munice: 30 + Calibre: 5.56x45mm NATO (Mk262)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (Mk262)<br />Lövedékek: 30 + + + 5.56mm 30Rnd Mag (Mk318) + Magazynek 5,56mm 30rd (Mk318) + Ch. 5.56mm 30Cps (Mk318) + Cargador de 30 balas de 5.56mm (Mk318) + Магазин из 30-ти 5.56 мм (Mk318) + 5,56mm 30-Patronen-Magazin (Mk318) + 5.56mm 30Rnd Mag (Mk318) + 5.56mm 30Rnd Zásobník (Mk318) + Carregador 5.56mm com 30 cartuchos (Mk318) + 5,56mm 30-lövedékes tár (Mk318) + + + 5.56mm Mk318 + 5,56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5.56 мм Mk318 + 5,56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5.56mm Mk318 + 5,56mm Mk318 + + + Caliber: 5.56x45mm NATO (Mk318)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (Mk318)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (Mk318)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (Mk318)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (Mk318)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (Mk318)<br />Munice: 30 + Calibre: 5.56x45mm NATO (Mk318)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (Mk318)<br />Lövedékek: 30 + + + 5.56mm 30Rnd Mag (M995 AP) + Magazynek 5,56mm 30rd (M995 AP) + Ch. 5.56mm 30Cps (M995 AP) + Cargador de 30 balas de 5.56mm (M995 AP) + Магазин из 30-ти 5.56 мм (M995 бронебойные) + 5,56mm 30-Patronen-Magazin (M995AP) + 5.56mm 30Rnd Mag (M995 AP) + 5.56mm 30náb. Zásobník (M995 AP) + Carregador 5.56mm com 30 cartuchos (M995 AP) + 5,56mm 30-lövedékes tár (M995 páncéltörő) + + + 5.56mm AP + 5,56mm AP + 5.56mm AP + 5.56mm AP + 5.56 мм бронебойные + 5,56mm AP + 5.56mm AP + 5.56mm AP + 5.56mm M995 AP + 5,56mm páncéltörő + + + Caliber: 5.56x45mm NATO (M995 AP)<br />Rounds: 30 + Kaliber: 5,56x45mm NATO (M995 AP)<br />Pociski: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br />Cartouches: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br />Balas: 30 + Калибр: 5,56x45 мм NATO (M995 бронебойные)<br />Патронов: 30 + Kaliber: 5,56x45mm NATO (M995 AP)<br />Patronen: 30 + Calibro: 5.56x45 mm NATO (M995 AP)<br />Munizioni: 30 + Ráže: 5.56x45mm NATO (M995 AP)<br />Munice: 30 + Calibre: 5.56x45mm NATO (M995 AP)<br/>Cartuchos: 30 + Kaliber: 5,56x45mm NATO (M995 páncéltörő)<br />Lövedékek: 30 + + + 7.62mm 10Rnd Mag (M118LR) + Magazynek 7,62mm 10rd (M118LR) + Ch. 7.62mm 10Cps (M118LR) + Cargador de 10 balas de 7.62mm (M118LR) + Магазин из 10-ти 7,62 мм (M118LR) + 7,62mm 10-Patronen-Magazin (M118LR) + 7.62mm 10Rnd Mag (M118LR) + 7.62mm 10náb. Zásobník (M118LR) + Carregador 7.62mm com 10 cartuchos (M118LR) + 7,62mm 10-lövedékes tár (M118LR) + + + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62 мм M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62mm M118LR + + + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 10 + Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (M118LR) + Magazynek 7,62mm 20rd (M118LR) + Ch. 7.62mm 20Cps (M118LR) + Cargador de 20 balas de 7.62mm (M118LR) + Магазин из 20-ти 7,62 мм (M118LR) + 7,62mm 20-Patronen-Magazin (M118LR) + 7.62mm 20Rnd Mag (M118LR) + 7.62mm 20náb. Zásobník (M118LR) + Carregador 7.62mm com 20 cartuchos (M118LR) + 7,62mm 20-lövedékes tár (M118LR) + + + 7.62mm M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62 мм M118LR + 7,62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7.62mm M118LR + 7,62mm M118LR + + + Caliber: 7.62x51mm NATO (M118LR)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (M118LR)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (M118LR)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (M118LR)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (M118LR)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (M118LR)<br />Munice: 20 + Calibre: 7.26x51mm NATO (M118LR)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (M118LR)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (Mk316 Mod 0) + Magazynek 7,62mm 10rd (Mk316 Mod 0) + Ch. 7.62mm 10Cps (Mk316 Mod 0) + Cargador de 10 balas de 7.62mm (Mk316 Mod 0) + Магазин из 10-ти 7,62 мм (Mk316 Mod 0) + 7,62mm 10-Patronen-Magazin (Mk316 Mod 0) + 7.62mm 10Rnd Mag (Mk316 Mod 0) + 7.62mm 10náb. Zásobník (Mk316 Mod 0) + Carregador 7.62mm com 10 cartuchos (Mk316 Mod 0) + 7,62mm 10-lövedékes tár (Mk316 Mod 0) + + + 7.62mm Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62 мм Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62mm Mk316 + + + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 10 + Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (Mk316 Mod 0) + Magazynek 7,62mm 20rd (Mk316 Mod 0) + Ch. 7.62mm 20Cps (Mk316 Mod 0) + Cargador de 20 balas de 7.62mm (Mk316 Mod 0) + Магазин из 20-ти 7,62 мм (Mk316 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk316 Mod 0) + 7.62mm 20Rnd Mag (Mk316 Mod 0) + 7.62mm 20náb. Zásobník (Mk316 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk316 Mod 0) + 7,62mm 20-lövedékes tár (Mk316 Mod 0) + + + 7.62mm Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62 мм Mk316 + 7,62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7.62mm Mk316 + 7,62mm Mk316 + + + Caliber: 7.62x51mm NATO (Mk316 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (Mk316 Mod 0)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (Mk316 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (Mk316 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (Mk316 Mod 0)<br />Munice: 20 + Calibre: 7.26x51mm NATO (Mk316 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk316 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 10rd (Mk319 Mod 0) + Ch. 7.62mm 10Cps (Mk319 Mod 0) + Cargador de 10 balas de 7.62mm (Mk319 Mod 0) + Магазин из 10-ти 7,62 мм (Mk319 Mod 0) + 7,62mm 10-Patronen-Magazin (Mk319 Mod 0) + 7.62mm 10Rnd Mag (Mk319 Mod 0) + 7.62mm 10náb. Zásobník (Mk319 Mod 0) + Carregador 7.62mm com 10 cartuchos (Mk319 Mod 0) + 7,62mm 10-lövedékes tár (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62 мм Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62mm Mk319 + + + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 10 + Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (Mk319 Mod 0) + Magazynek 7,62mm 20rd (Mk319 Mod 0) + Ch. 7.62mm 20Cps (Mk319 Mod 0) + Cargador de 20 balas de 7.62mm (Mk319 Mod 0) + Магазин из 20-ти 7,62 мм (Mk319 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk319 Mod 0) + 7.62mm 20Rnd Mag (Mk319 Mod 0) + 7.62mm 20náb. Zásobník (Mk319 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk319 Mod 0) + 7,62mm 20-lövedékes tár (Mk319 Mod 0) + + + 7.62mm Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62 мм Mk319 + 7,62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7.62mm Mk319 + 7,62mm Mk319 + + + Caliber: 7.62x51mm NATO (Mk319 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x51mm NATO (Mk319 Mod 0)<br />Balas: 20 + Калибр: 7,62x51 мм NATO (Mk319 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (Mk319 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x51mm NATO (Mk319 Mod 0)<br />Munice: 20 + Calibre: 7.26x51mm NATO (Mk319 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk319 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 10Rnd Mag (M993 AP) + Magazynek 7,62mm 10rd (M993 AP) + Ch. 7.62mm 10Cps (M993 AP) + Cargador de 10 balas de 7.62mm (M993 AP) + Магазин из 10-ти 7,62 мм (M993 бронебойные) + 7,62mm 10-Patronen-Magazin (M993 AP) + 7.62mm 10Rnd Mag (M993 AP) + 7.62 10náb. Zásobník (M993 AP) + Carregador 7.62mm com 10 cartuchos (M993 AP) + 7,62mm 10-lövedékes tár (M993 páncéltörő) + + + 7.62mm AP + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm бронебойные + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm páncéltörő + + + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 10 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 10 + Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 10 + Calibre: 7.62x51mm NATO (M993 AP)<br />Balas: 10 + Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 10 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 10 + Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 10 + Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 10 + Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 10 + Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 10 + + + 7.62mm 20Rnd Mag (M993 AP) + Magazynek 7,62mm 20rd (M993 AP) + Ch. 7.62mm 20Cps (M993 AP) + Cargador de 20 balas de 7.62mm (M993 AP) + Магазин из 20-ти 7,62 мм (M993 бронебойные) + 7,62mm 20-Patronen-Magazin (M993 AP) + 7.62mm 20Rnd Mag (M993 AP) + 7.62mm 20náb. Zásobník (M993 AP) + Carregador 7.62mm com 20 cartuchos (M993 AP) + 7,62mm 20-lövedékes tár (M993 páncéltörő) + + + 7.62mm AP + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7,62 мм бронебойные + 7,62mm AP + 7.62mm AP + 7.62mm AP + 7.62mm AP + 7,62mm páncéltörő + + + Caliber: 7.62x51mm NATO (M993 AP)<br />Rounds: 20 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Pociski: 20 + Calibre: 7.62x51mm NATO (M993 AP)<br />Cartouches: 20 + Калибр: 7,62x51 мм NATO (M993 бронебойные)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (M993 AP)<br />Patronen: 20 + Calibro: 7.62x51 mm NATO (M993 AP)<br />Munizioni: 20 + Calibre: 7.62x51 mm NATO (M993 AP)<br />Balas: 20 + Ráže: 7.62x51mm NATO (M993 AP)<br />Munice: 20 + Calibre: 7.26x51mm NATO (M993 AP)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (M993 páncéltörő)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Mk248 Mod 0) + Magazynek 7,62mm 20rd (Mk248 Mod 0) + Ch. 7.62mm 20Cps (Mk248 Mod 0) + Cargador de 20 balas de 7.62mm (Mk248 Mod 0) + Магазин из 20-ти 7,62 мм (Mk248 Mod 0) + 7,62mm 20-Patronen-Magazin (Mk248 Mod 0) + 7.62mm 20Rnd Mag (Mk248 Mod 0) + 7.62mm 20náb. Zásobník (Mk248 Mod 0) + Carregador 7.62mm com 20 cartuchos (Mk248 Mod 0) + 7,62mm 20-lövedékes tár (Mk248 Mod 0) + + + 7.62mm Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62 мм Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62mm Mk248 + + + Caliber: 7.62x67mm NATO (Mk248 Mod 0)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Mk248 Mod 0)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 0)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Mk248 Mod 0)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Mk248 Mod 0)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Mk248 Mod 0)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Mk248 Mod 0)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 0)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Mk248 Mod 1) + Magazynek 7,62mm 20rd (Mk248 Mod 1) + Ch. 7.62mm 20Cps (Mk248 Mod 1) + Cargador de 20 balas de 7.62mm (Mk248 Mod 1) + Магазин из 20-ти 7,62 мм (Mk248 Mod 1) + 7,62mm 20-Patronen-Magazin (Mk248 Mod 1) + 7.62mm 20Rnd Mag (Mk248 Mod 1) + 7.62mm 20náb. Zásobník (Mk248 Mod 1) + Carregador 7.62mm com 20 cartuchos (Mk248 Mod 1) + 7,62mm 20-lövedékes tár (Mk248 Mod 1) + + + 7.62mm Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62 мм Mk248 + 7,62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7.62mm Mk248 + 7,62mm Mk248 + + + Caliber: 7.62x67mm NATO (Mk248 Mod 1)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Mk248 Mod 1)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Mk248 Mod 1)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Mk248 Mod 1)<br />Патронов: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Mk248 Mod 1)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Mk248 Mod 1)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Mk248 Mod 1)<br/>Cartuchos: 20 + Kaliber: 7,62x51mm NATO (Mk248 Mod 1)<br />Lövedékek: 20 + + + 7.62mm 20Rnd Mag (Berger Hybrid OTM) + Magazynek 7,62mm 20rd (Berger Hybrid OTM) + Ch. 7.62 20Cps (Berger Hybrid OTM) + Cargador de 20 balas de 7.62mm (Berger Hybrid OTM) + Магазин из 20-ти 7,62 мм (Berger Hybrid OTM) + 7,62mm 20-Patronen-Magazin (Berger Hybrid OTM) + 7.62mm 20Rnd Mag (Berger Hybrid OTM) + 7.62mm 20náb. Zásobník (Berger Hybrid OTM) + Carregador 7.62mm com 20 cartuchos (Berger Hybrid OTM) + 7,62mm 20-lövedékes tár (Berger Hybrid OTM) + + + 7.62mm OTM + 7,62mm OTM + 7.62mm OTM + 7.62mm OTM + 7,62 мм OTM + 7,62mm OTM + 7.62mm OTM + 7.62mm OTM + 7.62mm OTM + 7,62mm OTM + + + Caliber: 7.62x67mm NATO (Berger Hybrid OTM)<br />Rounds: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Pociski: 20 + Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Cartouches: 20 + Calibre: 7.62x67mm NATO (Berger Hybrid OTM)<br />Balas: 20 + Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)<br />Патронов: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Patronen: 20 + Calibro: 7.62x67 mm NATO (Berger Hybrid OTM)<br />Munizioni: 20 + Ráže: 7.62x67mm NATO (Berger Hybrid OTM)<br />Munice: 20 + Calibre: 7.26x67mm NATO (Berger Hybrid OTM)<br/>Cartuchos: 20 + Kaliber: 7,62x67mm NATO (Berger Hybrid OTM)<br />Lövedékek: 20 + + + 6.5x47mm 30Rnd Mag (HPBT Scenar) + Ch. 6.5x47mm 30Cps (HPBT Scenar) + Cargador de 30 balas de 6.5x47mm (HPBT Scenar) + Magazynek 6,5x47mm 30rd (HPBT Scenar) + Магазин из 30-ти 6,5x47 мм (экспансивные Scenar) + 6,5x47mm 30-Patronen-Magazin (HPBT Scenar) + 6.5x47mm 30Rnd Mag (HPBT Scenar) + 6.5x47mm 30náb. Zásobník (HPBT Scenar) + Carregador 6.5x47mm com 30 cartuchos (HPBT Scenar) + 6,5x47mm 30-lövedékes tár (HPBT Scenar) + + + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + 6,5 мм Lapua + 6,5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6.5mm Lapua + 6,5mm Lapua + + + Caliber: 6.5x47mm (HPBT Scenar)<br />Rounds: 30<br />Used in: MXM + Calibre: 6.5x47mm (HPBT Scenar)<br />Cartouches: 30 + Calibre: 6.5x47mm (HPBT Scenar)<br />Balas: 30<br />Se usa en: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Pociski: 30 + Калибр: 6,5x47 мм (экспансивные Scenar)<br />Патронов: 30<br />Используются с: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Patronen: 30<br />Eingesetzt von: MXM + Calibro: 6.5x47mm (HPBT Scenar)<br />Munizioni: 30<br />In uso su: MXM + Ráže: 6.5x47mm (HPBT Scenar)<br />Munice: 30<br />Použití: MXM + Calibre: 6.5x47mm (HPBT Scenar)<br/>Cartuchos: 30<br/>Usado em: MXM + Kaliber: 6,5x47mm (HPBT Scenar)<br />Lövedékek: 30<br />Használható: MXM + + + 6.5mm Creedmor 30Rnd Mag + Magazynek 6,5mm Creedmor 30rd + 6.5mm Creedmor 30Rnd Mag + Магазин из 30-ти 6,5 мм Creedmor + 6,5mm Creedmor 30-Patronen-Magazin + Cargador de 30 balas Creedmor de 6.5mm + Ch. 6.5mm Creedmor 30Cps + 6.5mm Creedmor 30náb. Zásobník + Carregador 6.5mm com 30 cartuchos Creedmor + 6,5mm Creedmor 30-lövedékes tár + + + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + 6,5 мм CM + 6,5mm CM + 6.5mm CM + 6.5mm CM + 6.5mm CM + 6,5mm CM + + + Caliber: 6.5x47mm Creedmor<br />Rounds: 30<br />Used in: MXM + Kaliber: 6,5x47mm Creedmor<br />Pociski: 30<br />Używany w: MXM + Kaliber: 6,5x47mm Creedmor<br />Patronen: 30<br />Eingesetzt von: MXM + Calibre: 6.5x47mm Creedmor <br />Cartouches: 30<br />Utilisé avec: MXM + Calibro: 6.5mm Creedmor<br />Munizioni: 30<br />In uso su: MXM + Calibre: 6.5mm Creedmor<br />Balas: 30<br />Se usa en: MXM + Калибр: 6,5x47мм Creedmor<br />Патронов: 30<br />Используются c: MXM + Ráže: 6.5x47mm Creedmor<br />Munice: 30<br />Použití: MXM + Calibre: 6.5x47mm Creedmor<br/>Cartuchos: 30<br/>Usado em: MXM + Kaliber: 6,5x47mm Creedmor<br />Lövedékek: 30<br />Használható: MXM + + + .338 10Rnd Mag (300gr Sierra MatchKing HPBT) + Ch. .338 10 Cps (300gr Sierra MatchKing HPBT) + Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT) + Magazynek .338 10rd (300gr Sierra MatchKing HPBT) + Магазин из 10-ти .338 (300 гран Sierra MatchKing экспансивные) + .338 10-Patronen-Magazin (300gr Sierra MatchKing HPBT) + .338 10Munizioni Mag (300gr Sierra MatchKing HPBT) + .338 10náb. Zásobník (300gr Sierra MatchKing HPBT) + Carregador .338 (300gr Sierra MatchKing HPBT) com 10 cartuchos + .338 10-lövedékes tár (300gr Sierra MatchKing HPBT) + + + .338 HPBT + .338 HPBT + .338 HPBT + .338 HPBT + .338 экспансивные + .338 HPBT + .338 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 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Pociski: 10 + Калибр: 8,6x70mm (300 гран Sierra MatchKing экспансивные)<br />Патронов: 10 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Patronen: 10 + Calibro: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munizioni: 10 + Ráže: 8.6x70mm (300gr Sierra MatchKing HPBT)<br />Munice: 10 + Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)<br/>Cartuchos: 10 + Kaliber: 8,6x70mm (300gr Sierra MatchKing HPBT)<br />Lövedékek: 10 + + + .338 10Rnd Mag (API526) + Ch. .338 10Cps (API526) + Cargador de 10 balas de .338 (API526) + Magazynek .338 10rd (API526) + Магазин из 10-ти .338 (API526) + .338 10-Patronen-Magazin (API526) + .338 10Rnd Mag (API526) + .338 10náb. Zásobník (API526) + Carregador .338 (API526) com 10 cartuchos + .338 10-lövedékes tár (API526) + + + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 AP + .338 páncéltörő + + + Caliber: 8.6x70mm (API526)<br />Rounds: 10 + Calibre: 8.6x70mm (API526)<br />Cartouches: 10 + Calibre: 8.6x70mm (API526)<br />Balas: 10 + Kaliber: 8,6x70mm (API526)<br />Pociski: 10 + Калибр: 8,6x70 мм (API526)<br />Патронов: 10 + Kaliber: 8,6x70mm (API526)<br />Patronen: 10 + Calibro: 8.6x70mm (API526)<br />Munizioni: 10 + Ráže: 8.6x70mm (API526)<br />Munice: 10 + Calibre: 8.6x70mm (API526)<br/>Cartuchos: 10 + Kaliber: 8,6x70mm (API526)<br />Lövedékek: 10 + + + 12.7x99mm 5Rnd Mag + Ch. 12.7x99mm 5Cps + Cargador de 5 balas de 12.7x99mm + Magazynek 12,7x99mm 5rd + Магазин из 5-ти 12,7x99 мм + 12,7x99mm 5-Patronen-Magazin + 12.7x99mm 5Rnd Mag + 12.7x99mm 5náb. Zásobník + Carregador 12.7x99mm com 5 cartuchos + 12,7x99mm 5-lövedékes tár + + + 12.7mm + 12.7mm + 12.7mm + 12,7mm + 12,7 мм + 12,7mm + 12.7mm + 12.7mm + 12.7mm + 12,7mm + + + Caliber: 12.7x99mm<br />Rounds: 5 + Calibre: 12.7x99mm<br />Cartouches: 5 + Calibre: 12.7x99mm<br />Balas: 5 + Kaliber: 12,7x99mm<br />Pociski: 5 + Калибр: 12,7x99 мм<br />Патронов: 5 + Kaliber: 12,7x99mm<br />Patronen: 5 + Calibro: 12.7x99mm<br />Munizioni: 5 + Ráže: 12.7x99mm<br />Munice: 5 + Calibre: 12.7x99mm<br/>Cartuchos: 5 + Kaliber: 12,7x99mm<br />Lövedékek: 5 + + + 12.7x99mm API 5Rnd Mag + Ch. 12.7x99mm API 5Cps + Cargador de 5 balas de 12.7x99mm API + Magazynek 12,7x99mm API 5rd + 12.7x99mm API 5Rnd Mag + Магазин из 5-ти 12,7x99 мм (бронебойно-зажигательные) + 12,7x99mm 5-Patronen-Magazin (API) + 12.7x99mm API 5náb. Zásobník + Carregador 12.7x99mm API com 5 cartuchos + 12,7x99mm 5-lövedékes tár (páncéltörő-gyújtó) + + + 12.7mm API + 12.7mm API + 12.7mm API + 12,7mm API + 12.7mm API + 12.7 мм бронебойно-зажигательные + 12,7mm API + 12.7mm API + 12.7mm API + 12,7mm páncéltörő-gyújtó + + + Caliber: 12.7x99mm API<br />Rounds: 5 + Calibre: 12.7x99mm API<br />Cartouches: 5 + Calibre: 12.7x99mm API<br />Balas: 5 + Kaliber: 12,7x99mm API<br />Pociski: 5 + Калибр: 12,7x99 мм бронебойно-зажигательные<br />Патронов: 5 + Kaliber:12,7x99mm API<br />Patronen: 5 + Calibro: 12.7x99mm API<br />Munizioni: 5 + Ráže: 12.7x99mm API<br />Munice: 5 + Calibre: 12.7x99mm API<br/>Cartuchos: 5 + Kaliber: 12,7x99mm API<br />Lövedékek: 5 + + + 12.7x99mm 5Rnd Mag (AMAX) + Ch. 12.7x99mm 5Cps (AMAX) + Cargador de 5 balas de 12.7x99mm (AMAX) + Magazynek 12,7x99mm 5rd (AMAX) + Магазин из 5-ти 12,7x99 мм (A-MAX) + 12,7x99mm 5-Patronen-Magazin (AMAX) + 12.7x99mm 5Rnd Mag (AMAX) + 12.7x99mm 5náb. Zásobník (AMAX) + Carregador 12.7x99mm (AMAX) com 5 cartuchos + 12,7x99mm 5-lövedékes tár (AMAX) + + + 12.7mm + 12.7mm + 12.7mm + 12,7mm + 12,7 мм + 12,7mm + 12.7mm + 12.7mm + 12.7mm + 12,7mm + + + Caliber: 12.7x99mm (AMAX)<br />Rounds: 5 + Calibre: 12.7x99mm (AMAX)<br />Cartouches: 5 + Calibre: 12.7x99mm (AMAX)<br />Balas: 5 + Kaliber: 12,7x99mm (AMAX)<br />Pociski: 5 + Калибр: 12,7x99 мм (A-MAX)<br />Патронов: 5 + Calibro: 12.7x99mm (AMAX)<br />Munizioni: 5 + Kaliber:12,7x99mm (AMAX)<br />Patronen: 5 + Ráže: 12.7x99mm (AMAX)<br />Munice: 5 + Calibre: 12.7x99mm (AMAX)<br/>Cartuchos: 5 + Kaliber: 12,7x99mm (AMAX)<br />Lövedékek: 5 + + + [ACE] Ammo Supply Crate + [ACE] Skrzynka z amunicją + [ACE] Caja de suministros de munición + [ACE] Munitionskiste + [ACE] Bedna s municí + [ACE] Caixa com suprimentos de munição + [ACE] Lőszeres láda + [ACE] Ящик с боеприпасами + + \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 97cd3d3be5..d1b2da15bb 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,261 +1,261 @@ - - - - - Take Prisoner - Gefangen nehmen - Tomar prisionero - Capturer le prisonnier - Aresztuj - Zajmout Osobu - Arresta il prigioniero - Tomar Prisioneiro - Foglyul ejtés - Взять в плен - - - Free Prisoner - Gefangenen freilassen - Liberar prisionero - Wypuść więźnia - Libérer le prisonnier - Osvobodit Zajatce - Libera il prigioniero - Libertar Prisioneiro - Fogoly szabadon engedése - Освободить пленника - - - Escort Prisoner - Gefangenen eskortieren - Escoltar prisionero - Eskortuj więźnia - Escorter le prisonnier - Eskortovat Zajatce - Scorta il Prigioniero - Escoltar Prisioneiro - Fogoly kísérése - Конвоировать пленника - - - Release Prisoner - Gefangenen loslassen - Soltar prisionero - Anuluj eskortowanie - Relâcher le prisonnier - Uvolnit Zajatce - Rilascia il Prigioniero - Largar Prisioneiro - Fogoly elengedése - Прекратить конвоирование - - - You need to take him as prisoner first! - Du musst ihn zuerst gefangen nehmen. - Necesitas hacerle prisionero primero! - Najpierw musisz go aresztować! - Vous devez d'abord le capturer! - Musíš ho nejdříve zajmout! - Prima devi arrestarlo! - Você deve tomá-lo como prisioneiro primeiro! - Először foglyul kell ejtened őt! - Вы должны сначала взять его в плен! - - - Load Captive - Gefangenen einladen - Cargar prisionero - Embarquer le prisonnier - Załaduj więźnia - Naložit zajatce - Fogoly berakása - Загрузить пленного - Embarcar Prisioneiro - Fai salire il prigioniero - - - Unload Captive - Gefangenen ausladen - Descargar prisionero - Débarquer le prisonnier - Wyładuj więźnia - Vyložit zajatce - Fogoly kivevése - Выгрузить пленного - Desembarcar Prisioneiro - Fai scendere il prigioniero - - - Cable Tie - Kabelbinder - Opaska zaciskowa - Precinto - Serflex - Stahovací Pásek - Algema Plástica - Fascietta - Gyorskötöző - Кабельная стяжка - - - Cable ties that allow you to restrain prisoners. - Kabelbinder ermöglichen es, Gefangene zu fesseln. - Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia. - Los precintos permiten maniatar prisioneros - Les Serflex permettent de menotter les prisonniers. - Stahovací pásky vám umožní zadržet vězně. - A algema plástica permite que você contenha prisioneiros. - Fascetta per arrestare i prigionieri - Gyorskötöző, emberek foglyulejtéséhez használható. - Кабельные стяжки позволяют связывать пленников. - - - Inventory of frisked person - Inventar der durchsuchten Person - Inventaire de la fouille - Inventario de la persona cacheada - Motozott személy felszerelése - Inventář prohledávané osoby - Ekwipunek rewidowanej osoby - Инвентарь обысканного человека - Inventário da pessoa revistada - Inventario della persona perquisita - - - Frisk person - Person durchsuchen - Fouiller - Cachear - Prohledávaná osoba - Rewiduj osobę - Motozás - Обыскать человека - Revistar - Perquisisci la persona - - - Surrender - Se rendre - Kapitulieren - Rendirse - Render-se - Vzdát se - Kapituluj - Сдаться - Megadás - Arrenditi - - - Stop Surrendering - Annuler la capitulation - Den Kampf erneut aufnehmen - Dejar de rendirse - Parar de se render - Přestat se vzdávat - Podejmij walkę ponownie - Прекратить сдачу в плен - Megadás abbahagyása - Smetti di arrenderti - - - Make Unit Surrender - Skapituluj jednostkę - Hacer que la unidad se rinda - Einheit kapitulieren lassen - Vzdávající se jednotka - Fazer unidade se render - Egység kapitulálása - Сделать юнита пленным - - - Sync a unit to make them surrender.<br />Source: ace_captives - Zsynchronizuj z jednostką, aby skapitulowała.<br />Źródło: ace_captives - Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives - Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives - Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives - Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives - Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives - Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives - - - Captives Settings - Ustawienia więźniów - Ajustes de prisioneros - Nastavení zajatce - Gefangenen-Einstellungen - Ajustes de prisioneiros - Fogoly-beállítások - Настройки пленения - - - Controls settings for surrender and cable ties - Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych - Ajustes de control para rendición y precintos - Toto kontroluje nastavení kapitulace a pout - Einstellungen zur Kapitulation und Kabelbindern - Controla as configurações de rendição e abraçadeiras - Szabályozza a kapituláció és bilincselés beállításait - Управляет настройками сдачи в плен и связывания - - - Can handcuff own side - Skuwanie sojuszników - Se puede esposar el bando propio - Může spoutat spolubojovníky - Kann Teamkollegen fesseln - Pode algemar o próprio lado - Saját oldal megbilincselhető - Связать союзника - - - Can players cabletie units on their own side - Czy gracze mogą skuwać sojuszników? - Pueden los jugadores esposar unidades en su propio bando - Mohou hráči spoutat jednotky na své straně - Können Spieler eigene Einheiten fesseln - Os jogadores podem algemar unidades do seu lado - A játékosok megkötözhetik-e a saját oldalukon lévő egységeket - Разрешить игрокам связывать юнитов своей стороны - - - Allow surrendering - Pozwól kapitulować - Permitir rendición - Povolit vzdávání - Kapitulation erlauben - Permite rendição - Kapituláció engedélyezése - Сдаться в плен - - - Players can surrender after holstering their weapon - Gracze mogą skapitulować po schowaniu swojej broni do kabury - Los jugadores pueden rendirse después de enfundar su arma - Hráč se může vzdát poté, co si skryje zbraň - Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben - Jogadores podem se render depois de guardar sua arma - A játékosok megadhatják magukat a fegyverük elrakása után - Игроки могут сдаться в плен после того, как уберут оружие - - - Require surrendering - Wymagaj kapitulacji - Требовать пленения - - - Require Players to surrender before they can be arrested - Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować - Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать - - - Surrendering only - Tylko kapitulacja - Только сдавшийся в плен - - - Surrendering or No weapon - Kapitulacja lub brak broni - Сдавшийся или безоружный - - + + + + + Take Prisoner + Gefangen nehmen + Tomar prisionero + Capturer le prisonnier + Aresztuj + Zajmout Osobu + Arresta il prigioniero + Tomar Prisioneiro + Foglyul ejtés + Взять в плен + + + Free Prisoner + Gefangenen freilassen + Liberar prisionero + Wypuść więźnia + Libérer le prisonnier + Osvobodit Zajatce + Libera il prigioniero + Libertar Prisioneiro + Fogoly szabadon engedése + Освободить пленника + + + Escort Prisoner + Gefangenen eskortieren + Escoltar prisionero + Eskortuj więźnia + Escorter le prisonnier + Eskortovat Zajatce + Scorta il Prigioniero + Escoltar Prisioneiro + Fogoly kísérése + Конвоировать пленника + + + Release Prisoner + Gefangenen loslassen + Soltar prisionero + Anuluj eskortowanie + Relâcher le prisonnier + Uvolnit Zajatce + Rilascia il Prigioniero + Largar Prisioneiro + Fogoly elengedése + Прекратить конвоирование + + + You need to take him as prisoner first! + Du musst ihn zuerst gefangen nehmen. + Necesitas hacerle prisionero primero! + Najpierw musisz go aresztować! + Vous devez d'abord le capturer! + Musíš ho nejdříve zajmout! + Prima devi arrestarlo! + Você deve tomá-lo como prisioneiro primeiro! + Először foglyul kell ejtened őt! + Вы должны сначала взять его в плен! + + + Load Captive + Gefangenen einladen + Cargar prisionero + Embarquer le prisonnier + Załaduj więźnia + Naložit zajatce + Fogoly berakása + Загрузить пленного + Embarcar Prisioneiro + Fai salire il prigioniero + + + Unload Captive + Gefangenen ausladen + Descargar prisionero + Débarquer le prisonnier + Wyładuj więźnia + Vyložit zajatce + Fogoly kivevése + Выгрузить пленного + Desembarcar Prisioneiro + Fai scendere il prigioniero + + + Cable Tie + Kabelbinder + Opaska zaciskowa + Precinto + Serflex + Stahovací Pásek + Algema Plástica + Fascietta + Gyorskötöző + Кабельная стяжка + + + Cable ties that allow you to restrain prisoners. + Kabelbinder ermöglichen es, Gefangene zu fesseln. + Opaska zaciskowa pozwala na skrępowanie dłoni u więźnia. + Los precintos permiten maniatar prisioneros + Les Serflex permettent de menotter les prisonniers. + Stahovací pásky vám umožní zadržet vězně. + A algema plástica permite que você contenha prisioneiros. + Fascetta per arrestare i prigionieri + Gyorskötöző, emberek foglyulejtéséhez használható. + Кабельные стяжки позволяют связывать пленников. + + + Inventory of frisked person + Inventar der durchsuchten Person + Inventaire de la fouille + Inventario de la persona cacheada + Motozott személy felszerelése + Inventář prohledávané osoby + Ekwipunek rewidowanej osoby + Инвентарь обысканного человека + Inventário da pessoa revistada + Inventario della persona perquisita + + + Frisk person + Person durchsuchen + Fouiller + Cachear + Prohledávaná osoba + Rewiduj osobę + Motozás + Обыскать человека + Revistar + Perquisisci la persona + + + Surrender + Se rendre + Kapitulieren + Rendirse + Render-se + Vzdát se + Kapituluj + Сдаться + Megadás + Arrenditi + + + Stop Surrendering + Annuler la capitulation + Den Kampf erneut aufnehmen + Dejar de rendirse + Parar de se render + Přestat se vzdávat + Podejmij walkę ponownie + Прекратить сдачу в плен + Megadás abbahagyása + Smetti di arrenderti + + + Make Unit Surrender + Skapituluj jednostkę + Hacer que la unidad se rinda + Einheit kapitulieren lassen + Vzdávající se jednotka + Fazer unidade se render + Egység kapitulálása + Сделать юнита пленным + + + Sync a unit to make them surrender.<br />Source: ace_captives + Zsynchronizuj z jednostką, aby skapitulowała.<br />Źródło: ace_captives + Sincroniza una unidad para hacer que se rinda.<br />Fuente: ace_captives + Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives + Synchronizuj s jednotkou, která se má vzdát.<br />Zdroj: ace_captives + Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives + Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives + Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives + + + Captives Settings + Ustawienia więźniów + Ajustes de prisioneros + Nastavení zajatce + Gefangenen-Einstellungen + Ajustes de prisioneiros + Fogoly-beállítások + Настройки пленения + + + Controls settings for surrender and cable ties + Moduł ten kontroluje ustawienia kapitulacji oraz opasek zaciskowych + Ajustes de control para rendición y precintos + Toto kontroluje nastavení kapitulace a pout + Einstellungen zur Kapitulation und Kabelbindern + Controla as configurações de rendição e abraçadeiras + Szabályozza a kapituláció és bilincselés beállításait + Управляет настройками сдачи в плен и связывания + + + Can handcuff own side + Skuwanie sojuszników + Se puede esposar el bando propio + Může spoutat spolubojovníky + Kann Teamkollegen fesseln + Pode algemar o próprio lado + Saját oldal megbilincselhető + Связать союзника + + + Can players cabletie units on their own side + Czy gracze mogą skuwać sojuszników? + Pueden los jugadores esposar unidades en su propio bando + Mohou hráči spoutat jednotky na své straně + Können Spieler eigene Einheiten fesseln + Os jogadores podem algemar unidades do seu lado + A játékosok megkötözhetik-e a saját oldalukon lévő egységeket + Разрешить игрокам связывать юнитов своей стороны + + + Allow surrendering + Pozwól kapitulować + Permitir rendición + Povolit vzdávání + Kapitulation erlauben + Permite rendição + Kapituláció engedélyezése + Сдаться в плен + + + Players can surrender after holstering their weapon + Gracze mogą skapitulować po schowaniu swojej broni do kabury + Los jugadores pueden rendirse después de enfundar su arma + Hráč se může vzdát poté, co si skryje zbraň + Spieler können kapitulieren, nachdem sie ihre Waffe geholstert haben + Jogadores podem se render depois de guardar sua arma + A játékosok megadhatják magukat a fegyverük elrakása után + Игроки могут сдаться в плен после того, как уберут оружие + + + Require surrendering + Wymagaj kapitulacji + Требовать пленения + + + Require Players to surrender before they can be arrested + Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować + Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать + + + Surrendering only + Tylko kapitulacja + Только сдавшийся в плен + + + Surrendering or No weapon + Kapitulacja lub brak broni + Сдавшийся или безоружный + + \ No newline at end of file diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index cbf9ab6bd5..9681f7173d 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -1,50 +1,50 @@ - - - - - Load - Załaduj - Загрузить - - - Unload - Wyładuj - Выгрузить - - - Cargo - Ładunek - Грузовой отсек - - - Cargo Menu - Menu ładunku - Грузовой отсек - - - Cargo space left: %1 - Pozostałe miejsce: %1 - Осталось мест: %1 - - - Enable Cargo - Aktywuj cargo - Включить модуль перевозки грузов - - - Enable the load in cargo module - Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. - Включает модуль погрузки и перевозки грузов - - - Cargo Settings - Ustawienia cargo - Перевозка грузов - - - Configure the cargo module settings - Skonfiguruj ustawienia modułu cargo. - Конфигурирует настройки модуля перевозки грузов - - + + + + + Load + Załaduj + Загрузить + + + Unload + Wyładuj + Выгрузить + + + Cargo + Ładunek + Грузовой отсек + + + Cargo Menu + Menu ładunku + Грузовой отсек + + + Cargo space left: %1 + Pozostałe miejsce: %1 + Осталось мест: %1 + + + Enable Cargo + Aktywuj cargo + Включить модуль перевозки грузов + + + Enable the load in cargo module + Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. + Включает модуль погрузки и перевозки грузов + + + Cargo Settings + Ustawienia cargo + Перевозка грузов + + + Configure the cargo module settings + Skonfiguruj ustawienia modułu cargo. + Конфигурирует настройки модуля перевозки грузов + + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index e79004b369..a36ab7d3a9 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -1,722 +1,722 @@ - - - - - ACE-Team - ACE-Team - ACE-Team - ACE-Team - ACE-Team - ACE-Team - Команда ACE - ACE-Team - ACE-Team - ACE-Team - - - Save - Speichern - Guardar - Zapisz - Uložit - Sauvegarder - Сохранить - Salvar - Mentés - Salva - - - Cancel - Abbrechen - Cancelar - Anuluj - Zrušit - Annuler - Отмена - Cancelar - Mégse - Annulla - - - ACE Options - ACE-Optionen - Opciones ACE - Ustawienia ACE - Nastavení ACE - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - - N - N - N - N - S - N - С - N - É - N - - - NNE - NNO - NNE - NNE - SSV - NNE - ССВ - NNE - ÉÉK - NNE - - - NE - NO - NE - NE - SV - NE - СВ - NE - ÉK - NE - - - ENE - ONO - ENE - ENE - VSV - ENE - ВСВ - LNE - KÉK - ENE - - - E - O - E - E - V - E - В - L - K - E - - - ESE - OSO - ESE - ESE - VJV - ESE - ВЮВ - LSE - KDK - ESE - - - SE - SO - SE - SE - JV - SE - ЮВ - SE - DK - SE - - - SSE - SSO - SSE - SSE - JJV - SSE - ЮЮВ - SSE - DDK - SSE - - - S - S - S - S - J - S - Ю - S - D - S - - - SSW - SSW - SSO - SSW - JJZ - SSO - ЮЮЗ - SSO - DDNy - SSO - - - SW - SW - SO - SW - JZ - SO - ЮЗ - SO - DNy - SO - - - WSW - WSW - OSO - WSW - ZJZ - OSO - ЗЮЗ - OSO - NyDNy - OSO - - - W - W - O - W - Z - O - З - O - Ny - O - - - WNW - WNW - ONO - WNW - ZSZ - ONO - ЗСЗ - ONO - NyÉNy - ONO - - - NW - NW - NO - NW - SZ - NO - СЗ - NO - ÉNy - NO - - - NNW - NNW - NNO - NNW - SSZ - NNO - ССЗ - NNO - ÉÉNy - NNO - - - Action cancelled. - Aktion abgebrochen. - Acción cancelada. - Przerwano czynność - Akce přerušena. - Action annulée. - Действие отменено. - Ação cancelada. - Művelet megszakítva. - Azione cancellata. - - - [ACE] Miscellaneous Items - [ACE] Verschiedenes - [ACE] Objetos varios - [ACE] Różne przedmioty - [ACE] Ostatní předměty - [ACE] Objets divers - [ACE] Различные предметы - [ACE] Itens diversos - [ACE] Egyéb tárgyak - [ACE] Oggetti vari - - - Disable Command Menu - Befehlsmenü ausschalten - Desactivar menú de mando - Wyłącz menu dowodzenia - Vypnout velící menu - Désactiver menu commande - Выключить командное меню - Parancsnoki menü kikapcsolása - Disabilita menù di comando - Desabilitar menu de comando - - - Unknown - Unbekannt - Desconocido - Nieznany - Neznámý - Неизвестно - Ismeretlen - Sconosciuto - Inconnu - Desconhecido - - - No Voice - Keine Stimme - Sin voz - Brak głosu - Žádný hlas - Без голоса - Nincs hang - Senza voce - Pas de voix - Sem voz - - - Accept Requests - Anfrage akzeptieren - Aceptar peticiones - Akceptuj prośby - Přijmout žádost - Accepter requête - Принять запросы - Kérések elfogadása - Aceitar Pedido - Accetta la richiesta - - - Decline Requests - Anfrage ablehnen - Rechazar peticiones - Ignoruj prośby - Zamítnout žádost - Отклонить запросы - Rejeter requête - Kérések elutasítása - Rejeitar pedido - Rifiuta la richiesta - - - Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. - Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. - Acepta peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. - Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. - Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. - Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. - Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий - Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. - Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. - Aceitar pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. - - - Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions. - Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. - Rechazar peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. - Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. - Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. - Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. - Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий - Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. - Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. - Rejeita pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. - - - Feedback icons - Rückmeldungssymbole - Iconos de respuesta - Icone informative - Иконки состояний - Ikony pomocnicze - Icones d'information - Pomocné ikony - Visszajelző ikonok - Ícones de Feedback - - - Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. - Wähle die Position der Rückmeldungssymbole, oder deaktiviere sie. Diese Symbole stellen eine zusätzliche Rückmeldung über die Lage und Handlungen deines Soldaten dar. - Seleccionar la posición de o desactivar los íconos de respuesta en la pantalla. Estos iconos se mostrarán para proporcionar información adicional sobre el estado de su personaje y las acciones a realizar. - Seleziona la posizione o disabilita le icone informative sul tuo schermo. Queste saranno mostrate per fornire informazioni aggiuntive sullo stato o sulle azioni del giocatore. - Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях. - Ustaw pozycję lub wyłącz całkowicie ikony pomocnicze na ekranie. Te ikony dostarczają dodatkowych informacji na temat statusu Twojej postaci i wykonywanych przez nią akcji. - Sélection de la position ou la désactivation des icones de feedback. Ces icones vous apportent des informations complémentaires sur votre status et sur les actions en cours. - Nastavuje pozici nebo vypíná pomocné ikony. Tyto ikony ukazují extra informace ke stavu postavy a vykonávaných činností. - Itt beállítható a visszajelző ikonok képernyőn lévő helyzete és jelenléte. Ezek az ikonok extra visszajelzést biztosítanak a karaktered állapotán és végrehajtott cselekvésein. - Selecione a posição ou disabilite a posição dos ícones de feedback na sua tela. Esses ícones irão aparecer para mostrar feedback extra do status do seu personagem e ações realizadas. - - - Progress bar location - Position der Fortschrittsanzeige - Ubicación de la barra de progreso - Posizione della barra di avanzamento - Положение прогресс-бара - Lokalizacja paska postępu - Position de la barre de progression - Pozice ukazetele průběhu činnosti - Állapotjelző sáv helyzete - Local da barra de progresso - - - Set the desired location of the progress bar on your screen. - Setze die gewünschte Position der Fortschrittsanzeige fest. - Seleccionar la ubicación deseada de la barra de progreso en tu pantalla - Modifica la posizione della barra di avanzamernto sullo schermo - Установите желаемое положение строки состояния на экране. - Ustaw pożądaną lokalizację paska postępu na ekranie - Appliquer la position de la barre de progression sur l'écran - Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce. - Itt beállítható az állapotjelző sáv képernyődön lévő helyzete. - Define o local desejado da barra de progresso na sua tela. - - - Hint Background color - Hintergrundfarbe der Hinweise - Color de fondo de las notificaciones - Colore di sfondo dei suggerimenti - Цвет фона всплывающих подсказок - Kolor tła powiadomień - Notification: couleur de l'arrière plan - Barva pozadí nápovědy - Súgó háttérszíne - Cor do fundo da hint - - - The color of the background from the ACE hints. - Die Hintergrundfarbe der ACE-Hinweise. - El color de fondo de las notificaciones del ACE - Il colore di sfondo dei suggerimenti di ACE. - Цвет фона всплывающих подсказок АСЕ. - Kolor tła dla powiadomień ACE - Notification ACE: couleur de l'arrière plan - Barva pozadí ACE nápověd. - Az ACE-súgók hátterének színe. - A cor de fundo das hints do ACE. - - - Hint text font color - Textfarbe der Hinweise - Color del texto de las notificaciones - Il colore del testo dei suggerimenti - Цвет шрифта всплывающих подсказок - Kolor tekstu powiadomień - Notification: couleur du texte - Barva fontu nápověd. - Súgószöveg betűinek színe - Cor do do texto da hint - - - The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. - Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. - El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. - Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. - Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. - Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. - Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications - Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu. - Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt. - A cor do texto das hints do ACE. Essa cor é a cor default para todos os texos exibidos pelo sistema de hints do ACE , caso o texto da hint não tem outra cor especificada. - - - Banana - Banane - Banana - Banán - Banana - Банан - Banan - Banane - Banán - Banana - - - A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. - Die Bananen (Musa) sind eine Pflanzengattung in der Familie der Bananengewächse (Musaceae) innerhalb der Einkeimblättrigen Pflanzen (Monokotyledonen). - Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa. - Banán je protáhlé ovoce a plod banánovníku (epigeická bobule). - Una banana è un frutto commestibile, nello specifico una bacca cuoiosa, prodotta da un gran numero di grandi piante erbacee dotate di fiori, della famiglia delle Musaceae. - Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa). - A banán egy ehető gyümölcs, technikai szempontból bogyótermés, melyet több fürtvirágzatú növény termel a Musa rendszertani nemzetségben. - Rodzaj roślin z rodziny bananowatych, obejmujący około 80 gatunków.<br />Przedstawiciele są typowymi przedstawicielami flory międzyzwrotnikowej Azji, Afryki i Australii.<br />Część gatunków dostarcza jadalnych owoców. Słowo banan pochodzi prawdopodobnie od arabskiego słowa banan, co oznacza palec, lub afrykańskiego języka wolof, w którym rośliny te określa się mianem banaana. - Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. - A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. - - - Check PBOs - Sprawdzaj PBO - Comprobar PBOs - Überprüfe PBOs - Zkontrolovat PBO - Verificar PBOs - PBO-k ellenőrzése - Проверка аддонов - - - Sprawdzaj spójność addonów z serwerem - Este módulo verifica la integridad de los addons con los que iniciamos el simulador - Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. - Zjistit addon který je v souladu se serverem - Este módulo verifica a integridade dos addons quando iniciamos a simulação - Выполняет проверку версий аддонов ACE у подключаемых игроков - - - Action - Akcja - Acción - Aktion - Akce - Ação - Cselekvés - Действие - - - What to do with people who do not have the right PBOs? - Co zrobić z graczami, którzy nie mają właściwych PBO? - ¿Qué hacer con la gente que no tiene correctamente los PBOs? - Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? - Co udělat s lidmi, co nemají správné addony? - O que fazer com pessoas que não tem os PBOs corretos? - Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? - Что делать с игроками с неправильными аддонами? - - - Warn once - Ostrzeż raz - Avisar una vez - Einmal verwarnen - Upozornit jednou - Avisar uma vez - Egyszeri figyelmeztetés - Предупредить один раз - - - Warn (permanent) - Ostrzeżenie (permanentne) - Avisar (permanente) - Immer verwarnen - Upozornit (permanentně) - Avisar (permanente) - Figyelmeztetés (tartós) - Предупреждать (постоянно) - - - Kick - Kick - Expulsar - Kicken - Vyhodit - Chutar - Kirúgás - Кикнуть - - - Check all addons - Sprawdź wsz. addony - Comprobar todos los addons - Alle Addons überprüfen - Zkontrolovat všechny addony - Verificar todos addons - Összes bővítmény ellenőrzése - Проверять все аддоны - - - Check all addons instead of only those of ACE? - Sprawdzaj wszystkie addony czy tylko te z ACE? - Comprobar todos los addons en vez de solo los del ACE - Alle Addons anstatt nur ACE überprüfen? - Zkontrolovat všechny addony namísto jen těch od ACE? - Verificar todos addons invés de só os do ACE? - Az összes bővítmény ellenőrzése, csak az ACE helyett? - Проверять все аддоны, а не только ACE? - - - Whitelist - Biała lista - Lista blanca - Whitelist - Seznam povolených - Lista branca - Fehérlista - Вайтлист доп. аддонов - - - What addons are allowed regardless? - Jakie addony są dozwolone? - Qué addons están permitidos igualmente - Welche Addons werden dennoch erlaubt? - Jaké addony jsou povoleny? - Quais addons são permitidos de qualquer maneira? - Milyen bővítmények vannak feltétlenül engedélyezve? - Какие аддоны дополнительно разрешены? - - - LSD Vehicles - Pojazdy LSD - Vehículos LSD - LSD-Fahrzeuge - LSD vozidla - Veículos LSD - LSD járművek - Транспорт под LSD - - - Adds LSD effect to synchronized vehicle - Dodaje efekt LSD pod zsynchronizowany pojazd - Añade el efecto LSD al vehículo sincronizado - Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu - Přidá LSD efekt pro synchronizované vozidla - Adiciona efeito LSD ao veículo sincronizado - LSD-effekt hozzáadása a szinkronizált járművekhez - Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам - - - Toggle Handheld Device - Seleccionar dispositivo de mano - Handheld aufrufen - Ativa dispositivo de mão - Przełącz urządzenie podręczne - Přepnout ruční zařízení - Kézi eszköz kapcsolása - Включить портативное устройство - - - Close Handheld Device - Cerrar dispositivo de mano - Handheld schließen - Fecha dispositivo de mão - Zamknij urządzenie podręczne - Zavřít ruční zařízení - Kézi eszköz bezárása - Закрыть портативное устройство - - - Cycle Handheld Devices - Cambiar dispositivos de mano - Handheld wechseln - Troca dispositivos de mão - Następne urządzenie podręczne - Procházet ruční zařízení - Kézi eszköz váltása - Следующее портативное устройство - - - Disabled - Zakázáno - Non - Deaktiviert - Disattivato - Wyłączone - Desativado - Откл. - Desactivado - - - Enabled - Zapnuto - Oui - Aktiviert - Attivato - Włączone - Ativado - Вкл. - Activado - - - Yes - Ja - Si - Tak - Ano - Oui - Да - Igen - Sim - Si - - - No - Nein - No - Nie - Ne - Non - Нет - Nem - Não - No - - - Vehicles only - Tylko pojazdy - Только в транспорте - - - Do Not Force - Nie wymuszaj - No forzar - Nicht erzwingen - Nevynucovat - Não forçar - Не обязывать - - - ACE3 Equipment - ACE3 Wyposażenie - ACE3: Снаряжение - - - ACE3 Common - ACE3 Ogólne - ACE3: Общие - - - ACE3 Weapons - ACE3 Broń - ACE3: Оружие - - - ACE3 Movement - ACE3 Ruch - ACE3: Перемещение - - - ACE3 Scope Adjustment - ACE3 Regulacja optyki - ACE3: Прицелы - - - ACE3 Vehicles - ACE3 Pojazdy - ACE3: Транспорт - - + + + + + ACE-Team + ACE-Team + ACE-Team + ACE-Team + ACE-Team + ACE-Team + Команда ACE + ACE-Team + ACE-Team + ACE-Team + + + Save + Speichern + Guardar + Zapisz + Uložit + Sauvegarder + Сохранить + Salvar + Mentés + Salva + + + Cancel + Abbrechen + Cancelar + Anuluj + Zrušit + Annuler + Отмена + Cancelar + Mégse + Annulla + + + ACE Options + ACE-Optionen + Opciones ACE + Ustawienia ACE + Nastavení ACE + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + + N + N + N + N + S + N + С + N + É + N + + + NNE + NNO + NNE + NNE + SSV + NNE + ССВ + NNE + ÉÉK + NNE + + + NE + NO + NE + NE + SV + NE + СВ + NE + ÉK + NE + + + ENE + ONO + ENE + ENE + VSV + ENE + ВСВ + LNE + KÉK + ENE + + + E + O + E + E + V + E + В + L + K + E + + + ESE + OSO + ESE + ESE + VJV + ESE + ВЮВ + LSE + KDK + ESE + + + SE + SO + SE + SE + JV + SE + ЮВ + SE + DK + SE + + + SSE + SSO + SSE + SSE + JJV + SSE + ЮЮВ + SSE + DDK + SSE + + + S + S + S + S + J + S + Ю + S + D + S + + + SSW + SSW + SSO + SSW + JJZ + SSO + ЮЮЗ + SSO + DDNy + SSO + + + SW + SW + SO + SW + JZ + SO + ЮЗ + SO + DNy + SO + + + WSW + WSW + OSO + WSW + ZJZ + OSO + ЗЮЗ + OSO + NyDNy + OSO + + + W + W + O + W + Z + O + З + O + Ny + O + + + WNW + WNW + ONO + WNW + ZSZ + ONO + ЗСЗ + ONO + NyÉNy + ONO + + + NW + NW + NO + NW + SZ + NO + СЗ + NO + ÉNy + NO + + + NNW + NNW + NNO + NNW + SSZ + NNO + ССЗ + NNO + ÉÉNy + NNO + + + Action cancelled. + Aktion abgebrochen. + Acción cancelada. + Przerwano czynność + Akce přerušena. + Action annulée. + Действие отменено. + Ação cancelada. + Művelet megszakítva. + Azione cancellata. + + + [ACE] Miscellaneous Items + [ACE] Verschiedenes + [ACE] Objetos varios + [ACE] Różne przedmioty + [ACE] Ostatní předměty + [ACE] Objets divers + [ACE] Различные предметы + [ACE] Itens diversos + [ACE] Egyéb tárgyak + [ACE] Oggetti vari + + + Disable Command Menu + Befehlsmenü ausschalten + Desactivar menú de mando + Wyłącz menu dowodzenia + Vypnout velící menu + Désactiver menu commande + Выключить командное меню + Parancsnoki menü kikapcsolása + Disabilita menù di comando + Desabilitar menu de comando + + + Unknown + Unbekannt + Desconocido + Nieznany + Neznámý + Неизвестно + Ismeretlen + Sconosciuto + Inconnu + Desconhecido + + + No Voice + Keine Stimme + Sin voz + Brak głosu + Žádný hlas + Без голоса + Nincs hang + Senza voce + Pas de voix + Sem voz + + + Accept Requests + Anfrage akzeptieren + Aceptar peticiones + Akceptuj prośby + Přijmout žádost + Accepter requête + Принять запросы + Kérések elfogadása + Aceitar Pedido + Accetta la richiesta + + + Decline Requests + Anfrage ablehnen + Rechazar peticiones + Ignoruj prośby + Zamítnout žádost + Отклонить запросы + Rejeter requête + Kérések elutasítása + Rejeitar pedido + Rifiuta la richiesta + + + Accept Requests send by other players. These can be requests to use / share equipment, perform certain actions. + Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. + Acepta peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. + Akceptuj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. + Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. + Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. + Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий + Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. + Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. + Aceitar pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. + + + Decline Requests send by other players. These can be requests to use / share equipment, perform certain actions. + Anfragen werden von anderen Mitspielen gestellt. Diese können Anfragen u.a. zum Teilen/Verwenden von Ausrüstungsgegenständen, oder auch zum Ausführen von Handlungen sein. + Rechazar peticiones de otros jugadores. Pueden ser solicitudes para usar / compartir equipamiento, realizar ciertas acciones. + Ignoruj prośby wysłane przez innych graczy. Akceptacji wymagają między innymi akcje używania / współdzielenia wyposażenia, wykonywania określonych czynności. + Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni. + Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti. + Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий + Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions. + Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre. + Rejeita pedidos enviados por outros jogadores. Podem ser pedidos para usar/ compartilhar equipamento, realizar certas ações. + + + Feedback icons + Rückmeldungssymbole + Iconos de respuesta + Icone informative + Иконки состояний + Ikony pomocnicze + Icones d'information + Pomocné ikony + Visszajelző ikonok + Ícones de Feedback + + + Select the position of or disable the feedback icons on your screen. These icons will show to provide extra feedback on your character status and actions performed. + Wähle die Position der Rückmeldungssymbole, oder deaktiviere sie. Diese Symbole stellen eine zusätzliche Rückmeldung über die Lage und Handlungen deines Soldaten dar. + Seleccionar la posición de o desactivar los íconos de respuesta en la pantalla. Estos iconos se mostrarán para proporcionar información adicional sobre el estado de su personaje y las acciones a realizar. + Seleziona la posizione o disabilita le icone informative sul tuo schermo. Queste saranno mostrate per fornire informazioni aggiuntive sullo stato o sulle azioni del giocatore. + Выберите положение или или отключите отображение иконок состояний на Вашем экране. Эти иконки предоставят дополнительную информацию о состоянии персонажа и выполняемых действиях. + Ustaw pozycję lub wyłącz całkowicie ikony pomocnicze na ekranie. Te ikony dostarczają dodatkowych informacji na temat statusu Twojej postaci i wykonywanych przez nią akcji. + Sélection de la position ou la désactivation des icones de feedback. Ces icones vous apportent des informations complémentaires sur votre status et sur les actions en cours. + Nastavuje pozici nebo vypíná pomocné ikony. Tyto ikony ukazují extra informace ke stavu postavy a vykonávaných činností. + Itt beállítható a visszajelző ikonok képernyőn lévő helyzete és jelenléte. Ezek az ikonok extra visszajelzést biztosítanak a karaktered állapotán és végrehajtott cselekvésein. + Selecione a posição ou disabilite a posição dos ícones de feedback na sua tela. Esses ícones irão aparecer para mostrar feedback extra do status do seu personagem e ações realizadas. + + + Progress bar location + Position der Fortschrittsanzeige + Ubicación de la barra de progreso + Posizione della barra di avanzamento + Положение прогресс-бара + Lokalizacja paska postępu + Position de la barre de progression + Pozice ukazetele průběhu činnosti + Állapotjelző sáv helyzete + Local da barra de progresso + + + Set the desired location of the progress bar on your screen. + Setze die gewünschte Position der Fortschrittsanzeige fest. + Seleccionar la ubicación deseada de la barra de progreso en tu pantalla + Modifica la posizione della barra di avanzamernto sullo schermo + Установите желаемое положение строки состояния на экране. + Ustaw pożądaną lokalizację paska postępu na ekranie + Appliquer la position de la barre de progression sur l'écran + Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce. + Itt beállítható az állapotjelző sáv képernyődön lévő helyzete. + Define o local desejado da barra de progresso na sua tela. + + + Hint Background color + Hintergrundfarbe der Hinweise + Color de fondo de las notificaciones + Colore di sfondo dei suggerimenti + Цвет фона всплывающих подсказок + Kolor tła powiadomień + Notification: couleur de l'arrière plan + Barva pozadí nápovědy + Súgó háttérszíne + Cor do fundo da hint + + + The color of the background from the ACE hints. + Die Hintergrundfarbe der ACE-Hinweise. + El color de fondo de las notificaciones del ACE + Il colore di sfondo dei suggerimenti di ACE. + Цвет фона всплывающих подсказок АСЕ. + Kolor tła dla powiadomień ACE + Notification ACE: couleur de l'arrière plan + Barva pozadí ACE nápověd. + Az ACE-súgók hátterének színe. + A cor de fundo das hints do ACE. + + + Hint text font color + Textfarbe der Hinweise + Color del texto de las notificaciones + Il colore del testo dei suggerimenti + Цвет шрифта всплывающих подсказок + Kolor tekstu powiadomień + Notification: couleur du texte + Barva fontu nápověd. + Súgószöveg betűinek színe + Cor do do texto da hint + + + The color of the text font from the ACE hints. This color is the default color for all text displayed through the ACE Hint system, if the hint text has no other color specified. + Wähle die Textfarbe für ACE-Hinweise. Die gewählte Farbe wird als Standartfarbe der Hinweise angezeigt, wenn der Hinweis selbst keine spezifische Farbe hat. + El color del texto de las notificaciones del ACE. Este es el color predeterminado para todo el texto que se muestra a través del sistema de notificaciones del ACE, si el texto de notificación no tiene otro color especificado. + Il colore del testo dei suggerimenti di ACE. Questo è il colore predefinito per tutto il testo mostrato dal sistema di suggerimenti di ACE quando il colore del testo non ha altro colore specificato. + Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок. + Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru. + Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications + Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu. + Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt. + A cor do texto das hints do ACE. Essa cor é a cor default para todos os texos exibidos pelo sistema de hints do ACE , caso o texto da hint não tem outra cor especificada. + + + Banana + Banane + Banana + Banán + Banana + Банан + Banan + Banane + Banán + Banana + + + A banana is an edible fruit, botanically a berry, produced by several kinds of large herbaceous flowering plants in the genus Musa. + Die Bananen (Musa) sind eine Pflanzengattung in der Familie der Bananengewächse (Musaceae) innerhalb der Einkeimblättrigen Pflanzen (Monokotyledonen). + Una banana es una fruta comestible, botanicamente una baya, producida por varios tipos de grandes plantas herbáceas del género Musa. + Banán je protáhlé ovoce a plod banánovníku (epigeická bobule). + Una banana è un frutto commestibile, nello specifico una bacca cuoiosa, prodotta da un gran numero di grandi piante erbacee dotate di fiori, della famiglia delle Musaceae. + Банан - это съедобный фрукт, ягода с ботанической точки зрения, произрастающий на нескольких видах травянистых растениях рода Банан (Musa). + A banán egy ehető gyümölcs, technikai szempontból bogyótermés, melyet több fürtvirágzatú növény termel a Musa rendszertani nemzetségben. + Rodzaj roślin z rodziny bananowatych, obejmujący około 80 gatunków.<br />Przedstawiciele są typowymi przedstawicielami flory międzyzwrotnikowej Azji, Afryki i Australii.<br />Część gatunków dostarcza jadalnych owoców. Słowo banan pochodzi prawdopodobnie od arabskiego słowa banan, co oznacza palec, lub afrykańskiego języka wolof, w którym rośliny te określa się mianem banaana. + Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa. + A banana é uma fruta comestível, botanicamente uma baga, produzida por vários tipos de plantas herbáceas grandes do genero Musa. + + + Check PBOs + Sprawdzaj PBO + Comprobar PBOs + Überprüfe PBOs + Zkontrolovat PBO + Verificar PBOs + PBO-k ellenőrzése + Проверка аддонов + + + Sprawdzaj spójność addonów z serwerem + Este módulo verifica la integridad de los addons con los que iniciamos el simulador + Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. + Zjistit addon který je v souladu se serverem + Este módulo verifica a integridade dos addons quando iniciamos a simulação + Выполняет проверку версий аддонов ACE у подключаемых игроков + + + Action + Akcja + Acción + Aktion + Akce + Ação + Cselekvés + Действие + + + What to do with people who do not have the right PBOs? + Co zrobić z graczami, którzy nie mają właściwych PBO? + ¿Qué hacer con la gente que no tiene correctamente los PBOs? + Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? + Co udělat s lidmi, co nemají správné addony? + O que fazer com pessoas que não tem os PBOs corretos? + Mi legyen azokkal a személyekkel, akiknek nincsenek meg a helyes PBO-k? + Что делать с игроками с неправильными аддонами? + + + Warn once + Ostrzeż raz + Avisar una vez + Einmal verwarnen + Upozornit jednou + Avisar uma vez + Egyszeri figyelmeztetés + Предупредить один раз + + + Warn (permanent) + Ostrzeżenie (permanentne) + Avisar (permanente) + Immer verwarnen + Upozornit (permanentně) + Avisar (permanente) + Figyelmeztetés (tartós) + Предупреждать (постоянно) + + + Kick + Kick + Expulsar + Kicken + Vyhodit + Chutar + Kirúgás + Кикнуть + + + Check all addons + Sprawdź wsz. addony + Comprobar todos los addons + Alle Addons überprüfen + Zkontrolovat všechny addony + Verificar todos addons + Összes bővítmény ellenőrzése + Проверять все аддоны + + + Check all addons instead of only those of ACE? + Sprawdzaj wszystkie addony czy tylko te z ACE? + Comprobar todos los addons en vez de solo los del ACE + Alle Addons anstatt nur ACE überprüfen? + Zkontrolovat všechny addony namísto jen těch od ACE? + Verificar todos addons invés de só os do ACE? + Az összes bővítmény ellenőrzése, csak az ACE helyett? + Проверять все аддоны, а не только ACE? + + + Whitelist + Biała lista + Lista blanca + Whitelist + Seznam povolených + Lista branca + Fehérlista + Вайтлист доп. аддонов + + + What addons are allowed regardless? + Jakie addony są dozwolone? + Qué addons están permitidos igualmente + Welche Addons werden dennoch erlaubt? + Jaké addony jsou povoleny? + Quais addons são permitidos de qualquer maneira? + Milyen bővítmények vannak feltétlenül engedélyezve? + Какие аддоны дополнительно разрешены? + + + LSD Vehicles + Pojazdy LSD + Vehículos LSD + LSD-Fahrzeuge + LSD vozidla + Veículos LSD + LSD járművek + Транспорт под LSD + + + Adds LSD effect to synchronized vehicle + Dodaje efekt LSD pod zsynchronizowany pojazd + Añade el efecto LSD al vehículo sincronizado + Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu + Přidá LSD efekt pro synchronizované vozidla + Adiciona efeito LSD ao veículo sincronizado + LSD-effekt hozzáadása a szinkronizált járművekhez + Добавляет эффект LSD (мигание всеми цветами радуги) синхронизированным транспортным средствам + + + Toggle Handheld Device + Seleccionar dispositivo de mano + Handheld aufrufen + Ativa dispositivo de mão + Przełącz urządzenie podręczne + Přepnout ruční zařízení + Kézi eszköz kapcsolása + Включить портативное устройство + + + Close Handheld Device + Cerrar dispositivo de mano + Handheld schließen + Fecha dispositivo de mão + Zamknij urządzenie podręczne + Zavřít ruční zařízení + Kézi eszköz bezárása + Закрыть портативное устройство + + + Cycle Handheld Devices + Cambiar dispositivos de mano + Handheld wechseln + Troca dispositivos de mão + Następne urządzenie podręczne + Procházet ruční zařízení + Kézi eszköz váltása + Следующее портативное устройство + + + Disabled + Zakázáno + Non + Deaktiviert + Disattivato + Wyłączone + Desativado + Откл. + Desactivado + + + Enabled + Zapnuto + Oui + Aktiviert + Attivato + Włączone + Ativado + Вкл. + Activado + + + Yes + Ja + Si + Tak + Ano + Oui + Да + Igen + Sim + Si + + + No + Nein + No + Nie + Ne + Non + Нет + Nem + Não + No + + + Vehicles only + Tylko pojazdy + Только в транспорте + + + Do Not Force + Nie wymuszaj + No forzar + Nicht erzwingen + Nevynucovat + Não forçar + Не обязывать + + + ACE3 Equipment + ACE3 Wyposażenie + ACE3: Снаряжение + + + ACE3 Common + ACE3 Ogólne + ACE3: Общие + + + ACE3 Weapons + ACE3 Broń + ACE3: Оружие + + + ACE3 Movement + ACE3 Ruch + ACE3: Перемещение + + + ACE3 Scope Adjustment + ACE3 Regulacja optyki + ACE3: Прицелы + + + ACE3 Vehicles + ACE3 Pojazdy + ACE3: Транспорт + + \ No newline at end of file diff --git a/addons/concertina_wire/stringtable.xml b/addons/concertina_wire/stringtable.xml index 06094fa855..1e6be8cf98 100644 --- a/addons/concertina_wire/stringtable.xml +++ b/addons/concertina_wire/stringtable.xml @@ -1,53 +1,53 @@ - - - - - Concertina Wire - NATO-Draht - Колючая проволока - Koncentrina - Alambre de espino - Concertina wire - Ostnatý drát - Concertina wire - Concertina wire - Arame farpado - - - Concertina Wire Coil - NATO-Draht Rolle - Колючая проволока (моток) - Zwój koncentriny - Bobina de alambre de espino - Concertina wire coil - Smyčka ostnatého drátu - Concertina wire coil - Concertina wire coil - Bobina de arame farpado - - - Dismount Concertina Wire - NATO-Draht abbauen - Демонтировать колючую проволоку - Zwiń koncentrinę - Desmontar alambre de espino - Dismount Concertina wire - Svinout ostnatý drát - Dismount Concertina wire - Dismount Concertina wire - Desmontar arame farpado - - - Deploy Concertina Wire - NATO-Draht verlegen - Монтировать колючую проволоку - Rozwiń koncentrinę - Desplegar alambre de espino - Deploy Concertina wire - Rozvinout ostnatý drát - Deploy Concertina wire - Deploy Concertina wire - Colocar arame farpado - - + + + + + Concertina Wire + NATO-Draht + Колючая проволока + Koncentrina + Alambre de espino + Concertina wire + Ostnatý drát + Concertina wire + Concertina wire + Arame farpado + + + Concertina Wire Coil + NATO-Draht Rolle + Колючая проволока (моток) + Zwój koncentriny + Bobina de alambre de espino + Concertina wire coil + Smyčka ostnatého drátu + Concertina wire coil + Concertina wire coil + Bobina de arame farpado + + + Dismount Concertina Wire + NATO-Draht abbauen + Демонтировать колючую проволоку + Zwiń koncentrinę + Desmontar alambre de espino + Dismount Concertina wire + Svinout ostnatý drát + Dismount Concertina wire + Dismount Concertina wire + Desmontar arame farpado + + + Deploy Concertina Wire + NATO-Draht verlegen + Монтировать колючую проволоку + Rozwiń koncentrinę + Desplegar alambre de espino + Deploy Concertina wire + Rozvinout ostnatý drát + Deploy Concertina wire + Deploy Concertina wire + Colocar arame farpado + + \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index ff32a0cffb..0d85415ec3 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,603 +1,603 @@ - - - - - Explosives - Sprengstoffe - Explosivos - Mat. wybuchowe - Explosifs - Výbušniny - Esplosivi - Robbanóanyagok - Explosivos - Взрывчатка - - - Place >> - Platzieren >> - Colocar >> - Umieść >> - Placer >> - Položit >> - Piazza >> - Elhelyezés >> - Colocar >> - Установить >> - - - Detonate >> - Zünden >> - Detonar >> - Detonuj >> - Mise à feu >> - Odpálit >> - Detona >> - Robbantás >> - Detonar >> - Подрыв >> - - - Explosive code: %1 - Sprengstoffcode: %1 - Código del explosivo: %1 - Kod ładunku: %1 - Code de l'explosif: %1 - Kód výbušniny: %1 - Robbanóanyag kódja: %1 - Código do explosivo: %1 - Код подрыва: %1 - Codice esplosivo: %1 - - - Place - Platzieren - Colocar - Umieść - Placer - Položit - Piazza - Elhelyezés - Colocar - Установить - - - Attach - Befestigen - Acoplar - Przyczep - Attacher - Připnout - Fixar - Attacca - Hozzácsatolás - Прикрепить - - - Blocked - Obstruido - Заблокировано - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Mégsem - Cancelar - Отмена - - - + Modifier, rotates - + Modifikator, drehen - + Modificador, girar - + Modificateur, tourner - + Modificatore, rotazione - + Modifikátor, otočit - + Változtatás, forgatás - + Modyfikator, obrót - + Modificador, rotaciona - + Bращать - - - Turn On Thor III - Thor III aktivieren - Encender Thor III - Włącz Thor III - Allumer Thor III - Zapnout Thor III - Accendi Thor III - Thor III bekapcsolása - Ativar Thor III - Активировать Thor III - - - Turn Off Thor III - Thor III deaktivieren - Apagar Thor III - Wyłącz Thor III - Éteindre Thor III - Vypnout Thor III - Spegni Thor III - Thor III kikapcsolása - Desativar Thor III - Деактивировать Thor III - - - Cellphone - Mobiltelefon - Télefono móvil - Telefon komórkowy - Téléphone portable - Telefon - Cellulare - Mobiltelefon - Celular - Сотовый телефон - - - Used to remotely trigger explosives - Wird benutzt um Sprengstoffe fernzuzünden - Usado para detonar remotamente explosivos - Używany do zdalnego detonowania ładunków wybuchowych - Utilisé pour déclencher des explosifs à distance - Používaný ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi - Robbanóanyagok távoli robbantásához való - Usado para acionar explosivos remotamente - Используется для удаленной детонации СВУ - - - M57 Firing Device - M57 Zündvorrichtung - Dispositivo de detonación M57 - Zapalnik M57 - Dispositif de mise à feu M57 - Odpalovací zařízení M57 - Detonatore M57 - M57 Gyújtóeszköz - M57 Dispositivo de Detonação - Взрыватель M57 - - - Used to remotely trigger explosives - Wird benutzt um Sprengstoffe fernzuzünden - Usado para detonar remotamente explosivos - Używany do zdalnego detonowania ładunków wybuchowych - Utilisé pour déclencher des explosifs à distance - Používané ke vzdálenému odpalování výbušnin - Usato per l'attivazione a distanza degli esplosivi - Robbanóanyagok távoli robbantásához - Usado para acionar explosivos remotamente - Используется для удаленной детонации зарядов - - - M26 Firing Device - M26 Zündvorrichtung - Dispositivo de detonación MK26 - Zapalnik M26 - Dispositif de mise à feu M26 - Odpalovací zařízení M26 - Detonatore M26 - M26 Gyújtóeszköz - M26 Dispositivo de Detonação - Взрыватель M26 - - - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - M152 RAMS - - - Defusal Kit - Entschärfungskit - Kit de desactivación - Zestaw do rozbrajania - Kit de désamorçage - Zneškodňovací sada - Kit E.O.D. - Hatástalanító felszerelés - Kit de desarme - Комплект разминирования - - - Allows defusing of explosives - Erlaubt die Entschärfung von Sprengstoffen - Permite desactivar explosivos - Umożliwia rozbrajanie ładunków wybuchowych - Permet de désamorçer des explosifs - Dovoluje zneškodňování výbušnin - Consente la disattivazione degli ordigni esplosivi - Robbanóanyagok hatástalanítását teszi lehetővé - Permite o desarme de explosivos - Позволяет обезвреживать взрывчатку - - - Add to Speed Dial - Zur Schnellauswahl hinzufügen - Añadir a marcado rápido - Dodaj do szybkiego wybierania - Ajouter à la composition rapide - Přidat jako rychlou volbu - Aggiungi alla selezione rapida - Hozzáadás a gyorstárcsázóhoz - Adicionar à ligação rápida - Добавить в быстрый вызов - - - Clear - Löschen - Borrar - Usuń - Effacer - Čistý - Libera - Törlés - Limpar - Очистить - - - Dial - Wählen - Marcar - Wybierz numer - Composer - Vytočit - Composizione numero - Tárcsázás - Discar - Hабрать - - - Up - Hoch - Arriba - W górę - Haut - Nahoru - Sopra - Fel - Cima - Вызов - - - Down - Runter - Abajo - W dół - Bas - Dolu - Sotto - Le - Baixo - Сброс - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Mégsem - Cancelar - Отмена - - - Detonate Menu - "Zünden"-Menü - Menú de detonación - Menu detonacji - Menu de mise à feux - Menu Detonace - Menù di detonazione - Robbantási menü - Menu de detonação - Меню подрыва - - - Place Menu - "Platzieren"-Menü - Menú de colocación - Menu umieszczania - Menu de placement - Menu Umístění - Menù di collocamento - Elhelyezési menü - Menu de posicionamento - Меню установки - - - Defuse - Entschärfen - Desactivar - Rozbrój - Désamorçer - Zneškodnit - Disinnesca - Hatástalanítás - Desarmar - Обезвредить - - - Defusing Explosive... - Entschärfe Sprengstoff... - Desactivando explosivo... - Rozbrajanie ładunku... - Désamorçage des explosifs... - Zneškodňuji Výbušninu... - Esposivo in fase di disattivazione... - Robbanóanyag hatástalanítása... - Desarmando Explosivo... - Обезвреживание... - - - Timer - Zeitzünder - Temporizador - Czasomierz - Minuteur - Časovač - Cronometro - Időzítő - Timer - Таймер - - - Time: %1m %2s - Zeit: %1m %2s - Tiempo: %1m %2s - Czas: %1m %2s - Temps : %1m %2s - Čas: %1m %2s - Tempo : %1m %2s - Idő: %1m %2s - Tempo: %1m %2s - Время: %1m %2c - - - Set Time - Zeit einstellen - Configurar tiempo - Ustaw czas - Régler minuteur - Nastavit Čas - Modifica il conto alla rovescia - Idő beállítása - Configurar Tempo - Установить время - - - Select a Trigger - Wähle einen Zünder - Seleccionar un detonador - Wybierz zapalnik - Sélectionner une mise à feu - Zvolit Detonátor - Seleziona un attivatore - Gyújtóeszköz kiválasztása - Selecionar um Gatilho - Выберите детонатор - - - Select - Wählen - Seleccionar - Wybierz - Sélectionner - Zvolit - Seleziona - Kiválasztás - Selecionar - Выбрать - - - Pressure Plate - Płyta naciskowa - Placa de presión - Druckplatte - Plaque de pression - Nášlapná nástraha - Piastra a pressione - Nyomólap - Placa de pressão - Нажимная плита - - - Tripwire - Linka naciągu - Cable trampa - Stolperdraht - Fil de détente - Nástražný drát - Filo a inciampo - Botlódrót - Linha de tração - Растяжка - - - IR Sensor - Czujnik podczerwieni - Sensor IR - Infrarotsensor - Capteur IR - IR Značkovač - Sensore IR - Infravörös szenzor - Sensor IV - ИК сенсор - - - No triggers available for %1 - Brak dostępnych zapalników dla %1 - No hay detonadores disponibles para %1 - Keine Auslöser vorhanden für %1 - Pas de mise à feu disponible pour %1 - Žádný detonátor k dispozici pro %1 - Nessun attivatore disponibile per %1 - Nincs elérhető gyújtóeszköz ide: %1 - Nenhum gatilho disponível para %1 - Нет доступных взрывателей для %1 - - - IR Sensor (Side Attack) - Czujnik podczerwieni (wybuch na bok) - Sensor IR (ataque lateral) - Infrarotsensor (Seitenangriff) - Capteur IR (de flanc) - IR Značkovač (Výbuch stranou) - Sensore IR (attacco laterale) - Infravörös szenzor (Side Attack) - Sensor infravermelho (ataque lateral) - ИК сенсор (детонация вбок) - - - Magnetic Influence Sensor (Bottom Attack) - Czujnik magnetyczny (wybuch w górę) - Sensor IM (ataque inferior) - Magnetfeldsensor (Bodenangriff) - Capteur magnétique (par le bas) - Magnetický Senzor (Výbuch ze spoda) - Sensore Magnetico di Prossimità (attacco inferiore) - Mágneses mező érzékelő (Bottom Attack) - Influência magnética (ataque inferior) - Магнитный сенсор (детонация вверх) - - - No explosives on trigger. - Keine Sprengladungen auf diesem Auslöser. - Ningún explosivo en el detonador. - Pas d'explosif à mettre à feu. - Nessun esplosivo - Žádná výbušnina k odpálení. - Nincs robbanóanyag a gyújtóeszközhöz kötve. - Brak ładunków na zapalnik. - Nenhum explosivo no gatilho. - Взрыватель не подсоединён к взрывчатке - - - Dead Man's Switch - Totmannschalter - Mise à feu par relâchement de pression - Spínač mrtvého muže - Czuwak - Detonador de hombre muerto - Halott ember kapcsolója - Detonador do homem morto - Кнопка мертвеца - Detonatore a rilascio - - - Used to remotely trigger explosives when released. - Zündet Sprengladungen wenn losgelassen. - Déclenche la mise à feu d'un explosif lorsqu'il est libéré. - Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny - Używany w celu zdalnej detonacji ładunków, kiedy jego operator zostanie zabity. - Utilizado para detonar explosivos remotamente al soltarlo. - Robbanóanyagok távoli robbantásához - Usado para detonar remotamente o explosivo quando solto. - Используется для дистанционного подрыва, после смерти оператора. - Usato per attivare a distanza esplosivi al momento del rilascio - - - Pick up - Aufheben - Recoger - Sebrat - Podnieś - Ramasser - Felszedés - Поднять - Raccogli - Pegar - - - Explosive System - System ładunków wybuchowych - Sistema de explosivos - Sprengstoffsystem - Systém výbušnin - Sistema de explosivos - Robbanóanyag-rendszer - Взрывные устройства - - - Require specialists? - Wymagaj specjalistów? - ¿Requiere especialista? - Benötigt Sprengstoffexperten? - Vyžadovat specialistu? - Requer especialista? - Specialisták igénylése? - Требуется специалист? - - - Require explosive specialists to disable explosives? Default: No - Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie - Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No - Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein - Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne - Requer especialista em explosivos para desativar explosivos? Padrão: Não - Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem - Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет - - - Punish non-specialists? - Karaj nie-specjalistów? - ¿Penalizar a los no especialistas? - Bestrafe Nicht-Sprengstoffexperten? - Potrestat, pokud není specialista? - Punir não especialistas? - Nem-specialisták büntetése? - Штраф не-специалистам? - - - Increase the time it takes to complete actions for non-specialists? Default: Yes - Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak - Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si - Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja - Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano - Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim - Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen - Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет - - - Explode on defusal? - Explosão no desarmamento? - Eksplozja przy rozbrajaniu? - Explodovat při zneškodňování? - Explotar al desactivar? - Robbanás hatástalanításkor? - Взрыв при разминир.? - - - Enable certain explosives to explode on defusal? Default: Yes - Ativa certos explosivos para detonar no desarmamento? Padrão: Sim - Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak - Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano - ¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí - Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen - Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да - - - This module adjusts the settings related to explosives. - Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. - Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. - Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. - Este módulo permite personalizar as definições relacionadas a explosivos. - Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza. - Этот модуль управляет настройками, связанными со взрывными устройствами - - + + + + + Explosives + Sprengstoffe + Explosivos + Mat. wybuchowe + Explosifs + Výbušniny + Esplosivi + Robbanóanyagok + Explosivos + Взрывчатка + + + Place >> + Platzieren >> + Colocar >> + Umieść >> + Placer >> + Položit >> + Piazza >> + Elhelyezés >> + Colocar >> + Установить >> + + + Detonate >> + Zünden >> + Detonar >> + Detonuj >> + Mise à feu >> + Odpálit >> + Detona >> + Robbantás >> + Detonar >> + Подрыв >> + + + Explosive code: %1 + Sprengstoffcode: %1 + Código del explosivo: %1 + Kod ładunku: %1 + Code de l'explosif: %1 + Kód výbušniny: %1 + Robbanóanyag kódja: %1 + Código do explosivo: %1 + Код подрыва: %1 + Codice esplosivo: %1 + + + Place + Platzieren + Colocar + Umieść + Placer + Položit + Piazza + Elhelyezés + Colocar + Установить + + + Attach + Befestigen + Acoplar + Przyczep + Attacher + Připnout + Fixar + Attacca + Hozzácsatolás + Прикрепить + + + Blocked + Obstruido + Заблокировано + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Mégsem + Cancelar + Отмена + + + + Modifier, rotates + + Modifikator, drehen + + Modificador, girar + + Modificateur, tourner + + Modificatore, rotazione + + Modifikátor, otočit + + Változtatás, forgatás + + Modyfikator, obrót + + Modificador, rotaciona + + Bращать + + + Turn On Thor III + Thor III aktivieren + Encender Thor III + Włącz Thor III + Allumer Thor III + Zapnout Thor III + Accendi Thor III + Thor III bekapcsolása + Ativar Thor III + Активировать Thor III + + + Turn Off Thor III + Thor III deaktivieren + Apagar Thor III + Wyłącz Thor III + Éteindre Thor III + Vypnout Thor III + Spegni Thor III + Thor III kikapcsolása + Desativar Thor III + Деактивировать Thor III + + + Cellphone + Mobiltelefon + Télefono móvil + Telefon komórkowy + Téléphone portable + Telefon + Cellulare + Mobiltelefon + Celular + Сотовый телефон + + + Used to remotely trigger explosives + Wird benutzt um Sprengstoffe fernzuzünden + Usado para detonar remotamente explosivos + Używany do zdalnego detonowania ładunków wybuchowych + Utilisé pour déclencher des explosifs à distance + Používaný ke vzdálenému odpalování výbušnin + Usato per l'attivazione a distanza degli esplosivi + Robbanóanyagok távoli robbantásához való + Usado para acionar explosivos remotamente + Используется для удаленной детонации СВУ + + + M57 Firing Device + M57 Zündvorrichtung + Dispositivo de detonación M57 + Zapalnik M57 + Dispositif de mise à feu M57 + Odpalovací zařízení M57 + Detonatore M57 + M57 Gyújtóeszköz + M57 Dispositivo de Detonação + Взрыватель M57 + + + Used to remotely trigger explosives + Wird benutzt um Sprengstoffe fernzuzünden + Usado para detonar remotamente explosivos + Używany do zdalnego detonowania ładunków wybuchowych + Utilisé pour déclencher des explosifs à distance + Používané ke vzdálenému odpalování výbušnin + Usato per l'attivazione a distanza degli esplosivi + Robbanóanyagok távoli robbantásához + Usado para acionar explosivos remotamente + Используется для удаленной детонации зарядов + + + M26 Firing Device + M26 Zündvorrichtung + Dispositivo de detonación MK26 + Zapalnik M26 + Dispositif de mise à feu M26 + Odpalovací zařízení M26 + Detonatore M26 + M26 Gyújtóeszköz + M26 Dispositivo de Detonação + Взрыватель M26 + + + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + M152 RAMS + + + Defusal Kit + Entschärfungskit + Kit de desactivación + Zestaw do rozbrajania + Kit de désamorçage + Zneškodňovací sada + Kit E.O.D. + Hatástalanító felszerelés + Kit de desarme + Комплект разминирования + + + Allows defusing of explosives + Erlaubt die Entschärfung von Sprengstoffen + Permite desactivar explosivos + Umożliwia rozbrajanie ładunków wybuchowych + Permet de désamorçer des explosifs + Dovoluje zneškodňování výbušnin + Consente la disattivazione degli ordigni esplosivi + Robbanóanyagok hatástalanítását teszi lehetővé + Permite o desarme de explosivos + Позволяет обезвреживать взрывчатку + + + Add to Speed Dial + Zur Schnellauswahl hinzufügen + Añadir a marcado rápido + Dodaj do szybkiego wybierania + Ajouter à la composition rapide + Přidat jako rychlou volbu + Aggiungi alla selezione rapida + Hozzáadás a gyorstárcsázóhoz + Adicionar à ligação rápida + Добавить в быстрый вызов + + + Clear + Löschen + Borrar + Usuń + Effacer + Čistý + Libera + Törlés + Limpar + Очистить + + + Dial + Wählen + Marcar + Wybierz numer + Composer + Vytočit + Composizione numero + Tárcsázás + Discar + Hабрать + + + Up + Hoch + Arriba + W górę + Haut + Nahoru + Sopra + Fel + Cima + Вызов + + + Down + Runter + Abajo + W dół + Bas + Dolu + Sotto + Le + Baixo + Сброс + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Mégsem + Cancelar + Отмена + + + Detonate Menu + "Zünden"-Menü + Menú de detonación + Menu detonacji + Menu de mise à feux + Menu Detonace + Menù di detonazione + Robbantási menü + Menu de detonação + Меню подрыва + + + Place Menu + "Platzieren"-Menü + Menú de colocación + Menu umieszczania + Menu de placement + Menu Umístění + Menù di collocamento + Elhelyezési menü + Menu de posicionamento + Меню установки + + + Defuse + Entschärfen + Desactivar + Rozbrój + Désamorçer + Zneškodnit + Disinnesca + Hatástalanítás + Desarmar + Обезвредить + + + Defusing Explosive... + Entschärfe Sprengstoff... + Desactivando explosivo... + Rozbrajanie ładunku... + Désamorçage des explosifs... + Zneškodňuji Výbušninu... + Esposivo in fase di disattivazione... + Robbanóanyag hatástalanítása... + Desarmando Explosivo... + Обезвреживание... + + + Timer + Zeitzünder + Temporizador + Czasomierz + Minuteur + Časovač + Cronometro + Időzítő + Timer + Таймер + + + Time: %1m %2s + Zeit: %1m %2s + Tiempo: %1m %2s + Czas: %1m %2s + Temps : %1m %2s + Čas: %1m %2s + Tempo : %1m %2s + Idő: %1m %2s + Tempo: %1m %2s + Время: %1m %2c + + + Set Time + Zeit einstellen + Configurar tiempo + Ustaw czas + Régler minuteur + Nastavit Čas + Modifica il conto alla rovescia + Idő beállítása + Configurar Tempo + Установить время + + + Select a Trigger + Wähle einen Zünder + Seleccionar un detonador + Wybierz zapalnik + Sélectionner une mise à feu + Zvolit Detonátor + Seleziona un attivatore + Gyújtóeszköz kiválasztása + Selecionar um Gatilho + Выберите детонатор + + + Select + Wählen + Seleccionar + Wybierz + Sélectionner + Zvolit + Seleziona + Kiválasztás + Selecionar + Выбрать + + + Pressure Plate + Płyta naciskowa + Placa de presión + Druckplatte + Plaque de pression + Nášlapná nástraha + Piastra a pressione + Nyomólap + Placa de pressão + Нажимная плита + + + Tripwire + Linka naciągu + Cable trampa + Stolperdraht + Fil de détente + Nástražný drát + Filo a inciampo + Botlódrót + Linha de tração + Растяжка + + + IR Sensor + Czujnik podczerwieni + Sensor IR + Infrarotsensor + Capteur IR + IR Značkovač + Sensore IR + Infravörös szenzor + Sensor IV + ИК сенсор + + + No triggers available for %1 + Brak dostępnych zapalników dla %1 + No hay detonadores disponibles para %1 + Keine Auslöser vorhanden für %1 + Pas de mise à feu disponible pour %1 + Žádný detonátor k dispozici pro %1 + Nessun attivatore disponibile per %1 + Nincs elérhető gyújtóeszköz ide: %1 + Nenhum gatilho disponível para %1 + Нет доступных взрывателей для %1 + + + IR Sensor (Side Attack) + Czujnik podczerwieni (wybuch na bok) + Sensor IR (ataque lateral) + Infrarotsensor (Seitenangriff) + Capteur IR (de flanc) + IR Značkovač (Výbuch stranou) + Sensore IR (attacco laterale) + Infravörös szenzor (Side Attack) + Sensor infravermelho (ataque lateral) + ИК сенсор (детонация вбок) + + + Magnetic Influence Sensor (Bottom Attack) + Czujnik magnetyczny (wybuch w górę) + Sensor IM (ataque inferior) + Magnetfeldsensor (Bodenangriff) + Capteur magnétique (par le bas) + Magnetický Senzor (Výbuch ze spoda) + Sensore Magnetico di Prossimità (attacco inferiore) + Mágneses mező érzékelő (Bottom Attack) + Influência magnética (ataque inferior) + Магнитный сенсор (детонация вверх) + + + No explosives on trigger. + Keine Sprengladungen auf diesem Auslöser. + Ningún explosivo en el detonador. + Pas d'explosif à mettre à feu. + Nessun esplosivo + Žádná výbušnina k odpálení. + Nincs robbanóanyag a gyújtóeszközhöz kötve. + Brak ładunków na zapalnik. + Nenhum explosivo no gatilho. + Взрыватель не подсоединён к взрывчатке + + + Dead Man's Switch + Totmannschalter + Mise à feu par relâchement de pression + Spínač mrtvého muže + Czuwak + Detonador de hombre muerto + Halott ember kapcsolója + Detonador do homem morto + Кнопка мертвеца + Detonatore a rilascio + + + Used to remotely trigger explosives when released. + Zündet Sprengladungen wenn losgelassen. + Déclenche la mise à feu d'un explosif lorsqu'il est libéré. + Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny + Używany w celu zdalnej detonacji ładunków, kiedy jego operator zostanie zabity. + Utilizado para detonar explosivos remotamente al soltarlo. + Robbanóanyagok távoli robbantásához + Usado para detonar remotamente o explosivo quando solto. + Используется для дистанционного подрыва, после смерти оператора. + Usato per attivare a distanza esplosivi al momento del rilascio + + + Pick up + Aufheben + Recoger + Sebrat + Podnieś + Ramasser + Felszedés + Поднять + Raccogli + Pegar + + + Explosive System + System ładunków wybuchowych + Sistema de explosivos + Sprengstoffsystem + Systém výbušnin + Sistema de explosivos + Robbanóanyag-rendszer + Взрывные устройства + + + Require specialists? + Wymagaj specjalistów? + ¿Requiere especialista? + Benötigt Sprengstoffexperten? + Vyžadovat specialistu? + Requer especialista? + Specialisták igénylése? + Требуется специалист? + + + Require explosive specialists to disable explosives? Default: No + Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie + Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No + Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein + Vyžadovat specialistu na zneškodnění výbušniny? Výchozí: Ne + Requer especialista em explosivos para desativar explosivos? Padrão: Não + Szükséges-e egy specialista a robbanóanyagok hatástalanításához? Alapértelmezett: Nem + Требуется ли специалист по минному делу для обезвреживания взрывчатки? По-умолчанию: Нет + + + Punish non-specialists? + Karaj nie-specjalistów? + ¿Penalizar a los no especialistas? + Bestrafe Nicht-Sprengstoffexperten? + Potrestat, pokud není specialista? + Punir não especialistas? + Nem-specialisták büntetése? + Штраф не-специалистам? + + + Increase the time it takes to complete actions for non-specialists? Default: Yes + Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak + Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si + Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja + Zvýšit čas potřebný k dokončení akce pokud není specialista? Výchozí: Ano + Aumentar o tempo necessário para completar ações por não especialistas? Padrão: Sim + Nem-specialisták esetén több ideig tartson a cselekvés befejezése? Alapértelmezett: Igen + Увеличивать время завершения действий для не-специалистов? По-умолчанию: Нет + + + Explode on defusal? + Explosão no desarmamento? + Eksplozja przy rozbrajaniu? + Explodovat při zneškodňování? + Explotar al desactivar? + Robbanás hatástalanításkor? + Взрыв при разминир.? + + + Enable certain explosives to explode on defusal? Default: Yes + Ativa certos explosivos para detonar no desarmamento? Padrão: Sim + Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak + Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano + ¿Habilitar ciertos explosivos para estallar al desactivar? Por defecto: Sí + Meghatározott robbanóanyagok felrobbanjanak-e hatástalanításkor? Alapértelmezett: Igen + Разрешить определенным взрывным устройствам взрываться при разминировании? По-умолчанию: Да + + + This module adjusts the settings related to explosives. + Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. + Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern. + Tento modul umoňuje přizpůsobit nastavení týkajících se výbušnin. + Este módulo permite personalizar as definições relacionadas a explosivos. + Ez a modul a robbanóanyagokhoz kötött beállításokat szabályozza. + Этот модуль управляет настройками, связанными со взрывными устройствами + + \ No newline at end of file diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index 07b22f549c..acffa4ad4a 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -1,35 +1,35 @@ - - - - - Fulton MX-991 - Fulton MX-991 - Fulton MX-991 - - - Flashlight with red filter. For use on map. - Latarka z czerwonym filtrem. Używana do podświetlania mapy. - Фонарь с красным светофильтром. Для использования на карте. - - - Maglite XL50 - Maglite XL50 - Maglite XL50 - - - White mini flashlight. For use on map. - Mini latarka. Światło białe. Używana do podświetlania mapy. - Небольшой фонарик белого света. Для использования на карте. - - - KSF-1 - KSF-1 - KSF-1 - - - Flashlight with red filter. For use on map. - Latarka z czerwonym filtrem. Używana do podświetlania mapy. - Фонарь с красным светофильтром. Для использования на карте. - - + + + + + Fulton MX-991 + Fulton MX-991 + Fulton MX-991 + + + Flashlight with red filter. For use on map. + Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Фонарь с красным светофильтром. Для использования на карте. + + + Maglite XL50 + Maglite XL50 + Maglite XL50 + + + White mini flashlight. For use on map. + Mini latarka. Światło białe. Używana do podświetlania mapy. + Небольшой фонарик белого света. Для использования на карте. + + + KSF-1 + KSF-1 + KSF-1 + + + Flashlight with red filter. For use on map. + Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Фонарь с красным светофильтром. Для использования на карте. + + \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 46be307e1f..1c76af3f94 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -1,105 +1,105 @@ - - - - - Fragmentation Simulation - Symulacja fragmentacji - Simulación de fragmentación - Splittersimulation - Simulace fragmentace - Simulação de fragmentação - Repesz-szimuláció - Симуляция осколков - - - Enable the ACE Fragmentation Simulation - Activa la simulación de fragmentación ACE - Aktywuje symulację fragmentacji ACE - Aktiviere die ACE-Splittersimulation - Povolit ACE simulaci fragmentace - Ativa a simulação de fragmentação do ACE - Az ACE repesz-szimuláció engedélyezése - Включить симуляцию осколков ACE - - - Spalling Simulation - Simulación de astillamiento - Symulacja odprysków - Explosionssimulation - Simulace úlomků - Simulação de estilhaços - Pattogzás-szimuláció - Симуляция обломков - - - Enable the ACE Spalling Simulation - Activa la simulación de astillamiento ACE - Aktywuje symulację odprysków ACE - Aktiviere ACE-Explosionssimulation - Povolit ACE simulaci úlomků - Ativa a simulação de estilhaços do ACE - Az ACE pattogzás-szimuláció engedélyezése - Включить симуляцию обломков ACE - - - Maximum Projectiles Tracked - Máximos proyectiles rastreados - Maks. liczba śledzonych pocisków - Maximalzahl der verfolgten Projektile - Maximální počet sledovaných projektilů - Máximo de projéteis rastreados - Maximum követett repeszek - Макс. количество отслеживаемых снарядов - - - This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) - Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (>200 proyectiles en el aire a la vez) - To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). - Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) - Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) - Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) - Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) - Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов) - - - Maximum Projectiles Per Frame - Máximos proyectiles por cuadro - Maximale Anzahl an Projektilen pro Frame - Maks. liczba pocisków na klatkę - Maximální počet projektilů ze jeden snímek - Projéteis máximos por quadro - Maximum repesz/képkocka - Макс. количество снарядов за кадр - - - The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. - Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. - Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. - El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. - Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. - O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. - A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. - Число обсчитываемых осколков за один кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. - - - (SP Only) Frag/Spall Debug Tracing - (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento - (Tylko SP) Wizualny debug odł./odpr. - (Pouze SP) Debug sledování Frag/Úlomků - (nur SP) Splitter-/Explosions-Debug-Verfolgung - (Somente SP) Depuração de fragmentação e estilhaços traçantes - (Csak SP) Repesz/Pattogzás debug követés - (Только для одиночной игры) Отслеживаение/отладка осколков - - - (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. - (Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP. - (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. - (nur SP) Splitter-/Explosions-Debugging - (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. - (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. - (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. - (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. - - + + + + + Fragmentation Simulation + Symulacja fragmentacji + Simulación de fragmentación + Splittersimulation + Simulace fragmentace + Simulação de fragmentação + Repesz-szimuláció + Симуляция осколков + + + Enable the ACE Fragmentation Simulation + Activa la simulación de fragmentación ACE + Aktywuje symulację fragmentacji ACE + Aktiviere die ACE-Splittersimulation + Povolit ACE simulaci fragmentace + Ativa a simulação de fragmentação do ACE + Az ACE repesz-szimuláció engedélyezése + Включить симуляцию осколков ACE + + + Spalling Simulation + Simulación de astillamiento + Symulacja odprysków + Explosionssimulation + Simulace úlomků + Simulação de estilhaços + Pattogzás-szimuláció + Симуляция обломков + + + Enable the ACE Spalling Simulation + Activa la simulación de astillamiento ACE + Aktywuje symulację odprysków ACE + Aktiviere ACE-Explosionssimulation + Povolit ACE simulaci úlomků + Ativa a simulação de estilhaços do ACE + Az ACE pattogzás-szimuláció engedélyezése + Включить симуляцию обломков ACE + + + Maximum Projectiles Tracked + Máximos proyectiles rastreados + Maks. liczba śledzonych pocisków + Maximalzahl der verfolgten Projektile + Maximální počet sledovaných projektilů + Máximo de projéteis rastreados + Maximum követett repeszek + Макс. количество отслеживаемых снарядов + + + This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once) + Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (>200 proyectiles en el aire a la vez) + To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz). + Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft) + Toto nastavení kontroluje maximální množství projektilů z fragmentace a úlomků, která jsou sledována v dané době. Pokud je vystřeleno více projektilů, tak nebudou sledovány. Snižte toto nastavení pokud si nepřejete propady FPS v situacích, kde je velké množství projektilů ( >200 nábojů najednou ve vzduchu) + Esta definição controla a quantidade máxima de projéteis que o sistema de fragmentação e estilhaçamento irá acompanhar em qualquer momento. Se mais projéteis são disparados, eles não serão rastreados. Diminua essa configuração se você não quiser que o FPS caia em cenários com alta contagem de projéteis (> 200 projéteis no ar ao mesmo tempo) + Ez a beállítás szabályozza a repeszeződés és pattogzás által kilőtt objektumok követett számát. Ha több ez a szám, ezek az objektumok nem lesznek követve. Csökkentsd ezt a beállítást, ha nem akarsz lassulásokat magas-törmelékmennyiségű helyzetekben (200+ repesz a levegőben egyszerre) + Эта настройка контролирует максимальное количество снарядов, которок отслеживает система осколков и обломков в каждый момент времени. Снаряды, выстреленные сверх этого числа, отслеживаться не будут. Уменьшите это значение, если вы не хотите падения FPS при большом количестве снарядов в одной перестрелке (> 200 одновременно летящих снарядов) + + + Maximum Projectiles Per Frame + Máximos proyectiles por cuadro + Maximale Anzahl an Projektilen pro Frame + Maks. liczba pocisków na klatkę + Maximální počet projektilů ze jeden snímek + Projéteis máximos por quadro + Maximum repesz/képkocka + Макс. количество снарядов за кадр + + + The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further. + Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej. + Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden. + El número de cálculos de esquirlas que se hará en cualquier cuadro. Esto ayuda a dispersar el impacto en FPS del seguimiento de esquirlas de balas a través de múltiples cuadros, lo que limita aún más su impacto. + Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. + O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. + A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. + Число обсчитываемых осколков за один кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. + + + (SP Only) Frag/Spall Debug Tracing + (Solo SP) Seguimiento de depuración de Fragmentación/Astillamiento + (Tylko SP) Wizualny debug odł./odpr. + (Pouze SP) Debug sledování Frag/Úlomků + (nur SP) Splitter-/Explosions-Debug-Verfolgung + (Somente SP) Depuração de fragmentação e estilhaços traçantes + (Csak SP) Repesz/Pattogzás debug követés + (Только для одиночной игры) Отслеживаение/отладка осколков + + + (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP. + (Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player. + (nur SP) Splitter-/Explosions-Debugging + (Pouze SP) Vyžaduje restart mise/editoru. Aktivuje vizuální stopování fragmentace a úlomů pouze v režimu jednoho hráče. + (Somente SP) Requer um reinício de missão / editor. Habilita o rastreamento visual de projéteis de fragmentação e estilhaçamento apenas no modo de jogo SP. + (Csak SP) Küldetés/Editor újraindítás szükséges. Engedélyezi a repeszek és pattogzó lövedékek vizuális nyomkövetését, csak egyjátékos módok alatt. + (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. + + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 566de6dd27..0fd7b557e8 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -1,159 +1,159 @@ - - - - - Earplugs - Ohrenstöpsel - Tapones para los oídos - Stopery do uszu - Špunty - Беруши - Bouchons Anti-Bruits - Füldugó - Protetor auricular - Tappi auricolari - - - Protective Earplugs allow the wearer to be near loud weaponry without damage to his hearing. - Schützende Ohrenstöpsel, die es dem Träger ermöglichen, sich in der Nähe lauter Waffen aufzuhalten ohne Gehörschäden davonzutragen.. - Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición. - Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu. - Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní. - Беруши позволяют носителю находиться возле громкого вооружения без потери слуха. - Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus. - Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. - Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. - Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. - - - Earplugs in - Ohrenstöpsel rein - Poner tapones - Włóż stopery - Dát špunty do uší - Надеть беруши - Bouchons mis - Füldugó berakva - Protetores colocados - Indossa i tappi auricolari - - - Earplugs out - Ohrenstöpsel raus - Quitar tapones - Wyjmij stopery - Vyndat špunty z uší - Снять беруши - Bouchons enlevés - Füldugó kivéve - Protetores retirados - Levati i tappi auricolari - - - Earplugs in - Ohrenstöpsel drinnen - Tapones puestos - Stopery włożone - Špunty v uších - Беруши надеты - Bouchons mis - Füldugó berakva - Protetores colocados - Indossa i tappi auricolari - - - Earplugs out - Ohrenstöpsel raus - Tapones quitados - Stopery wyjęte - Špunty venku z uší - Беруши сняты - Bouchons enlevés - Füldugó kivéve - Protetores retirados - Levati i tappi auricolari - - - You have no earplugs - Keine Ohrenstöpsel im Inventar - No tienes tapones para los oídos - Nie masz stoperów - Nemáš žádné špunty - У вас нет беруш - Vous n'avez pas de bouchons anti-bruits - Nincsen füldugód - Você não possui protetores auriculares - Non hai i tappi auricolari - - - No inventory space - Kein Platz im Inventar - Sin espacio en el inventario - Brak miejsca w ekwipunku - Pas de place dans l'inventaire - Není místo v inventáři - Non hai abbastanza spazio - Não há espaço no inventário - Nincs több hely - Нет места в инвентаре - - - Disable ear ringing - Désactiver le bourdonnement - Desactivar zumbido de oídos - Отключить звон в ушах - Knalltrauma deaktivieren - Vypnout pískání v uších - Wyłącz dzwonienie w uszach - Fülcsengés letiltása - Disabilita i fischi nelle orecchie - Desabilitar zumbido de ouvidos - - - Hearing - Słuch - Audición - Gehör - Sluch - Audição - Hallás - Слух - - - Combat Deafness - Wł. głuchotę bojową - ¿Habilitar sordera de combate? - Aktiviere Taubheit im Gefecht? - Povolit ztrátu sluchu? - Ativar surdez em combate? - Harci süketség engedélyezése? - Оглушение - - - Reduces the hearing ability as the player takes hearing damage - Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów - Habilita la sordera de combate - Aktiviere Taubheit im Gefecht? - Povolit ztrátu sluchu? - Ativar surdez em combate? - Harci süketség engedélyezése? - Уменьшает способность игроков слышать при повреждении слуха - - - Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection - Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. - Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. - Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. - Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. - Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. - - - Effect Zeus RC - Влияет на юнита Зевса - - - Allow zeus remote controlled units to be able to take hearing damage. - Позволить юнитам, контролируемым Зевсом, получать повреждение слуха. - - + + + + + Earplugs + Ohrenstöpsel + Tapones para los oídos + Stopery do uszu + Špunty + Беруши + Bouchons Anti-Bruits + Füldugó + Protetor auricular + Tappi auricolari + + + Protective Earplugs allow the wearer to be near loud weaponry without damage to his hearing. + Schützende Ohrenstöpsel, die es dem Träger ermöglichen, sich in der Nähe lauter Waffen aufzuhalten ohne Gehörschäden davonzutragen.. + Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición. + Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu. + Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní. + Беруши позволяют носителю находиться возле громкого вооружения без потери слуха. + Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus. + Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást. + Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição. + Proteggono l'apparato uditivo, permettendo a chi li indossa di resistere ai suoni particolarmente forti senza alcun danno. + + + Earplugs in + Ohrenstöpsel rein + Poner tapones + Włóż stopery + Dát špunty do uší + Надеть беруши + Bouchons mis + Füldugó berakva + Protetores colocados + Indossa i tappi auricolari + + + Earplugs out + Ohrenstöpsel raus + Quitar tapones + Wyjmij stopery + Vyndat špunty z uší + Снять беруши + Bouchons enlevés + Füldugó kivéve + Protetores retirados + Levati i tappi auricolari + + + Earplugs in + Ohrenstöpsel drinnen + Tapones puestos + Stopery włożone + Špunty v uších + Беруши надеты + Bouchons mis + Füldugó berakva + Protetores colocados + Indossa i tappi auricolari + + + Earplugs out + Ohrenstöpsel raus + Tapones quitados + Stopery wyjęte + Špunty venku z uší + Беруши сняты + Bouchons enlevés + Füldugó kivéve + Protetores retirados + Levati i tappi auricolari + + + You have no earplugs + Keine Ohrenstöpsel im Inventar + No tienes tapones para los oídos + Nie masz stoperów + Nemáš žádné špunty + У вас нет беруш + Vous n'avez pas de bouchons anti-bruits + Nincsen füldugód + Você não possui protetores auriculares + Non hai i tappi auricolari + + + No inventory space + Kein Platz im Inventar + Sin espacio en el inventario + Brak miejsca w ekwipunku + Pas de place dans l'inventaire + Není místo v inventáři + Non hai abbastanza spazio + Não há espaço no inventário + Nincs több hely + Нет места в инвентаре + + + Disable ear ringing + Désactiver le bourdonnement + Desactivar zumbido de oídos + Отключить звон в ушах + Knalltrauma deaktivieren + Vypnout pískání v uších + Wyłącz dzwonienie w uszach + Fülcsengés letiltása + Disabilita i fischi nelle orecchie + Desabilitar zumbido de ouvidos + + + Hearing + Słuch + Audición + Gehör + Sluch + Audição + Hallás + Слух + + + Combat Deafness + Wł. głuchotę bojową + ¿Habilitar sordera de combate? + Aktiviere Taubheit im Gefecht? + Povolit ztrátu sluchu? + Ativar surdez em combate? + Harci süketség engedélyezése? + Оглушение + + + Reduces the hearing ability as the player takes hearing damage + Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów + Habilita la sordera de combate + Aktiviere Taubheit im Gefecht? + Povolit ztrátu sluchu? + Ativar surdez em combate? + Harci süketség engedélyezése? + Уменьшает способность игроков слышать при повреждении слуха + + + Controls combat deafness and ear ringing. When activated, players can be deafened when a gun is fired in their vicinity or an explosion takes place without hearing protection + Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu. + Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet. + Ztráta sluchu je možná ve chvíly, kdy se v bezprostřední blízkosti střílí z velkorážní zbraně nebo při bombardování a osoba je bez ochrany sluchu (např. špunty). Tento modul umožňuje tuto věc povolit nebo zakázat. + Este módulo ativa / desativa surdez em combate. Quando ativado, os jogadores podem ficar surdos quando uma arma é disparada ao seu redor ou uma explosão ocorre sem proteção auditiva. + Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. + + + Effect Zeus RC + Влияет на юнита Зевса + + + Allow zeus remote controlled units to be able to take hearing damage. + Позволить юнитам, контролируемым Зевсом, получать повреждение слуха. + + \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index a233d4953d..735e888245 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -1,293 +1,293 @@ - - - - - Always display cursor for self interaction - Immer den Cursor für Selbst-Interaktionen anzeigen. - Mostrar siempre el cursor para la interacción propia - Показывать курсор (взаимодействия с собой) - Zobrazit kurzor v menu pro vlastní interakci - 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 interazioni su se stessi - Sempre mostrar cursor para interação pessoal - - - Always display cursor for interaction - Mostrar siempre el cursor para la interacción - Toujours afficher le curseur pour les interactions - Mostra sempre il cursore per le interazioni - Zawsze wyświetlaj kursor dla interakcji - Показывать курсор (взаимодействие) - Zobrazit kurzor v menu pro interakci - Immer den Cursor für Fremd-Interaktionen anzeigen - Mindig legyen a cselekvés kurzorja látható - Sempre mostrar cursor para interação - - - Display interaction menus as lists - Mostrar los menus de interacción como listas - Меню взаимодействий в виде списка - Afficher le menu d'interaction sous forme de liste - Mostra il menù di interazione come lista - Wyświetlaj menu interakcji jako listę - Zobrazit menu interakce jako seznam - Interaktionsmenü in Listen anzeigen - Cselekvő menük listaként való megjelenítése - Mostrar menu de interação como listas - - - Interact Key - Fremdinteraktionsmenü-Taste - Tecla de interacción - Клавиша взаимодействия - Klávesa pro interakci - Klawisz interakcji - Touche d'interaction - Cselekvő gomb - Tasto interazione - Tecla de Interação - - - Self Interaction Key - Eigeninteraktionsmenü-Taste - Tecla de interacción propia - Клавиша взаимодействия (с собой) - Klávesa pro vlastní interakci - Klawisz własnej interakcji - Touche d'interaction personnelle - Saját cselekvő gomb - Tasto interazione su se stessi - Tecla de Interação Pessoal - - - Self Actions - Selbst-Aktionen - Acciones propias - Действия с собой - Vlastní akce - Własne akcje - Interaction personnelle - Saját cselekvések - Interazioni su se stessi - Ações Pessoais - - - Vehicle Actions - Fahrzeug-Aktionen - Acciones de vehículo - Действия на транспорте - Interakce s vozidly - Akcje pojazdu - Interaction véhicule - Járműves cselekvések - Interazioni con veicoli - Ações de Veículos - - - Zeus Actions - Akcje Zeusa - Akce Zeuse - Acciones Zeus - Zeus cselekvések - Ações do Zeus - Действия Зевса - - - Interaction - Text Max - Interakcja - Tekst max - Interakce - Text Max - Interaction - Texte Max - Interaktionstextfarbe Max - Interazioni - Testo Massimo - Взаимодействие - Текст Макс. - Interacción - Texto al max. - Cselekvés - Szöveg max. - Interação - Max. de Texto - - - Interaction - Text Min - Interakcja - Tekst min - Interakce - Text Min - Interaction - Texte Min - Interaktionstextfarbe Min - Interazioni - Testo Minimo - Взаимодействие - Текст Мин. - Interacción - Texto al min. - Cselekvés - Szöveg min. - Interação - Min. de Texto - - - Interaction - Shadow Max - Interakcja - Cień max - Interakce - Stín Max - Interaction - Ombre Max - Interaktionstextschatten Max - Interazioni - Ombra Massima - Взаимодействие - Тень Макс. - Interacción - Sombras al max. - Cselekvés - Árnyék max. - Interação - Max. de Sombra - - - Interaction - Shadow Min - Interakcja - Cień min - Interakce - Stín Min - Interaction - Ombre Min - Interaktionstextschatten Min - Interazioni - Ombra Minima - Взаимодействие - Тень Мин. - Interacción - Sombras al min. - Cselekvés - Árnyék min. - Interação - Min. de Sombra - - - Keep cursor centered - Garder le curseur au centre - Центрировать курсор - Cursor zentriert halten - Kurzor középen tartása - Utrzymaj kursor wyśrodkowany - Mantener el cursor centrado - Udržuj kurzor na středu - Manter o cursor centralizado - Mantieni il cursore centrato - - - Keeps cursor centered and pans the option menu around. Useful if screen size is limited. - Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena. - Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée. - Центрирует курсор и двигает само меню опций. Полезно при ограниченном размере экрана. - Hält den Cursor zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen. - Középen tartja a kurzort, és a menüelemeket mozgatja. Hasznos lehetőség korlátozott képméretnél. - Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony. - Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado. - Manter o cursor centralizado e mover o menu de opções. Útil caso o tamanho da tela seja limitado. - Mantieni il cursore centrato e sposta il menù intorno. Utile se lo schermo è piccolo. - - - Do action when releasing menu key - Aktion nach Loslassen der Taste ausführen - Wykonuj akcje po puszczeniu klawisza menu - Provést akci při pustění klávesy menu - Action au relachement de touche - Выполнять действие при отпускании кнопки взаимодействия - Realizar la acción al soltar la tecla menu - Execute a ação quando soltar a tecla de menu - Cselekvés végrehajtása a menügomb elengedésekor - Esegui l'azione quando rilasci il tasto menu - - - Interaction Text Size - Velikost textu interakce - Menü-Schriftgröße - Taille du texte d'interaction - Размер текста (меню взаимодействия) - Tamaño del texto de interacción - Rozmiar tekstu interakcji - Tamanho do texto de interação - Cselekvő szöveg mérete - Dimensione del testo d'interazione - - - Interaction Text Shadow - Stín textu interakce - Menü-Hintergrundschatten - Ombre du texte d'interaction - Тень от текста (меню взаимодействия) - Sombra del texto de interacción - Cień tekstu interakcji - Sombra do texto de interação - Cselekvő szöveg árnyéka - Ombra del testo d'interazione - - - Allows controlling the text's shadow. Outline ignores custom shadow colors. - Umožňuje změnit stíny textu v menu interakce. Barva stínu je u tahu písma ignorována. - Stellt den Hintergrundschatten ein. Die Einstellung 'Kontur' ignoriert die Farbe des Schattens. - Permet de controler l'ombre du texte. Le contour ne prend pas en compte la couleur des ombres. - Дает возможность изменять тень, отбрасываемую текстом. Контур не зависит от выбранного цвета тени. - Permite contolar la sombra del texto. El contorno ignora los colores personalizados de la sombra. - Pozwala kontrolować cień tekstu. Kontury ignorują niestandardowe kolory cienia. - Permite controlar a sombra do texto. Contorno ignora sombras com cores customizadas. - Hozzáférést biztosít a szöveg árnyékának kezeléséhez. A körvonal nem veszi figyelembe az egyedi árnyékszíneket. - Permette di controllare l'ombra del testo. L'impostazione "Contorno" ignora il colore dell'ombra. - - - Outline - Kontura - Kontur - Contour - Контур - Contorno - Kontur - Contorno - Körvonal - Contorno - - - Interaction menu background - Tło menu interakcji - Fondo del menú de interacción - Pozadí menu interakce - Interaktionsmenü-Hintergrund - Fundo do menu de interação - Cselekvő menü háttere - Фон меню взаимодействия - - - Blur the background while the interaction menu is open. - Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji - Desenfocar el fondo mientras el menú de interacción está abierto. - Rozmazat obraz pokud je interakční menu otevřené. - Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. - Desfocar o fundo enquanto o menu de interação está aberto. - A háttér elmosása a cselekvő menü használata alatt. - Размыть фон, пока открыто меню взаимодействия. - - - Blur screen - Rozmycie ekranu - Pantalla de desenfoque - Rozmazaný obraz - Verschwommenes Bild - Desfoque de tela - Kép elmosása - Размытый - - - Black - Przyciemnienie ekranu - Negro - Černý obraz - Preto - Schwarz - Fekete - Черный - - - Show actions for buildings - Pokazuj akcje dla budynków - Zobrazit akci pro budovy - Mostrar acciones para edificios - Cselekvések mutatása épületeknél - Mostrar ações para edifícios - Показывать действия для зданий - - - Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) - Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. - Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) - Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) - Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) - Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) - Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах) - - - Interaction Menu - Menu interakcji - Меню взаимодействия - - + + + + + Always display cursor for self interaction + Immer den Cursor für Selbst-Interaktionen anzeigen. + Mostrar siempre el cursor para la interacción propia + Показывать курсор (взаимодействия с собой) + Zobrazit kurzor v menu pro vlastní interakci + 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 interazioni su se stessi + Sempre mostrar cursor para interação pessoal + + + Always display cursor for interaction + Mostrar siempre el cursor para la interacción + Toujours afficher le curseur pour les interactions + Mostra sempre il cursore per le interazioni + Zawsze wyświetlaj kursor dla interakcji + Показывать курсор (взаимодействие) + Zobrazit kurzor v menu pro interakci + Immer den Cursor für Fremd-Interaktionen anzeigen + Mindig legyen a cselekvés kurzorja látható + Sempre mostrar cursor para interação + + + Display interaction menus as lists + Mostrar los menus de interacción como listas + Меню взаимодействий в виде списка + Afficher le menu d'interaction sous forme de liste + Mostra il menù di interazione come lista + Wyświetlaj menu interakcji jako listę + Zobrazit menu interakce jako seznam + Interaktionsmenü in Listen anzeigen + Cselekvő menük listaként való megjelenítése + Mostrar menu de interação como listas + + + Interact Key + Fremdinteraktionsmenü-Taste + Tecla de interacción + Клавиша взаимодействия + Klávesa pro interakci + Klawisz interakcji + Touche d'interaction + Cselekvő gomb + Tasto interazione + Tecla de Interação + + + Self Interaction Key + Eigeninteraktionsmenü-Taste + Tecla de interacción propia + Клавиша взаимодействия (с собой) + Klávesa pro vlastní interakci + Klawisz własnej interakcji + Touche d'interaction personnelle + Saját cselekvő gomb + Tasto interazione su se stessi + Tecla de Interação Pessoal + + + Self Actions + Selbst-Aktionen + Acciones propias + Действия с собой + Vlastní akce + Własne akcje + Interaction personnelle + Saját cselekvések + Interazioni su se stessi + Ações Pessoais + + + Vehicle Actions + Fahrzeug-Aktionen + Acciones de vehículo + Действия на транспорте + Interakce s vozidly + Akcje pojazdu + Interaction véhicule + Járműves cselekvések + Interazioni con veicoli + Ações de Veículos + + + Zeus Actions + Akcje Zeusa + Akce Zeuse + Acciones Zeus + Zeus cselekvések + Ações do Zeus + Действия Зевса + + + Interaction - Text Max + Interakcja - Tekst max + Interakce - Text Max + Interaction - Texte Max + Interaktionstextfarbe Max + Interazioni - Testo Massimo + Взаимодействие - Текст Макс. + Interacción - Texto al max. + Cselekvés - Szöveg max. + Interação - Max. de Texto + + + Interaction - Text Min + Interakcja - Tekst min + Interakce - Text Min + Interaction - Texte Min + Interaktionstextfarbe Min + Interazioni - Testo Minimo + Взаимодействие - Текст Мин. + Interacción - Texto al min. + Cselekvés - Szöveg min. + Interação - Min. de Texto + + + Interaction - Shadow Max + Interakcja - Cień max + Interakce - Stín Max + Interaction - Ombre Max + Interaktionstextschatten Max + Interazioni - Ombra Massima + Взаимодействие - Тень Макс. + Interacción - Sombras al max. + Cselekvés - Árnyék max. + Interação - Max. de Sombra + + + Interaction - Shadow Min + Interakcja - Cień min + Interakce - Stín Min + Interaction - Ombre Min + Interaktionstextschatten Min + Interazioni - Ombra Minima + Взаимодействие - Тень Мин. + Interacción - Sombras al min. + Cselekvés - Árnyék min. + Interação - Min. de Sombra + + + Keep cursor centered + Garder le curseur au centre + Центрировать курсор + Cursor zentriert halten + Kurzor középen tartása + Utrzymaj kursor wyśrodkowany + Mantener el cursor centrado + Udržuj kurzor na středu + Manter o cursor centralizado + Mantieni il cursore centrato + + + Keeps cursor centered and pans the option menu around. Useful if screen size is limited. + Udržuje kurzor na středu. Užitečné, pokud je velikost obrazovky omezena. + Garde le curseur au milieu et dispose le menu des options autour. Utile si la taille de l'écran est limitée. + Центрирует курсор и двигает само меню опций. Полезно при ограниченном размере экрана. + Hält den Cursor zentriert und verschiebt das Menü beim Bewegen. Nützlich bei kleinen Bildschirmen. + Középen tartja a kurzort, és a menüelemeket mozgatja. Hasznos lehetőség korlátozott képméretnél. + Utrzymuje kursor na środku ekranu, zamiast tego ruch myszą powoduje przesuwanie menu interakcji. Użyteczne w przypadku kiedy rozmiar ekranu jest ograniczony. + Mantiene el cursor centrado y despliega los menús alrededor. Útil si el tamaño de la pantalla es limitado. + Manter o cursor centralizado e mover o menu de opções. Útil caso o tamanho da tela seja limitado. + Mantieni il cursore centrato e sposta il menù intorno. Utile se lo schermo è piccolo. + + + Do action when releasing menu key + Aktion nach Loslassen der Taste ausführen + Wykonuj akcje po puszczeniu klawisza menu + Provést akci při pustění klávesy menu + Action au relachement de touche + Выполнять действие при отпускании кнопки взаимодействия + Realizar la acción al soltar la tecla menu + Execute a ação quando soltar a tecla de menu + Cselekvés végrehajtása a menügomb elengedésekor + Esegui l'azione quando rilasci il tasto menu + + + Interaction Text Size + Velikost textu interakce + Menü-Schriftgröße + Taille du texte d'interaction + Размер текста (меню взаимодействия) + Tamaño del texto de interacción + Rozmiar tekstu interakcji + Tamanho do texto de interação + Cselekvő szöveg mérete + Dimensione del testo d'interazione + + + Interaction Text Shadow + Stín textu interakce + Menü-Hintergrundschatten + Ombre du texte d'interaction + Тень от текста (меню взаимодействия) + Sombra del texto de interacción + Cień tekstu interakcji + Sombra do texto de interação + Cselekvő szöveg árnyéka + Ombra del testo d'interazione + + + Allows controlling the text's shadow. Outline ignores custom shadow colors. + Umožňuje změnit stíny textu v menu interakce. Barva stínu je u tahu písma ignorována. + Stellt den Hintergrundschatten ein. Die Einstellung 'Kontur' ignoriert die Farbe des Schattens. + Permet de controler l'ombre du texte. Le contour ne prend pas en compte la couleur des ombres. + Дает возможность изменять тень, отбрасываемую текстом. Контур не зависит от выбранного цвета тени. + Permite contolar la sombra del texto. El contorno ignora los colores personalizados de la sombra. + Pozwala kontrolować cień tekstu. Kontury ignorują niestandardowe kolory cienia. + Permite controlar a sombra do texto. Contorno ignora sombras com cores customizadas. + Hozzáférést biztosít a szöveg árnyékának kezeléséhez. A körvonal nem veszi figyelembe az egyedi árnyékszíneket. + Permette di controllare l'ombra del testo. L'impostazione "Contorno" ignora il colore dell'ombra. + + + Outline + Kontura + Kontur + Contour + Контур + Contorno + Kontur + Contorno + Körvonal + Contorno + + + Interaction menu background + Tło menu interakcji + Fondo del menú de interacción + Pozadí menu interakce + Interaktionsmenü-Hintergrund + Fundo do menu de interação + Cselekvő menü háttere + Фон меню взаимодействия + + + Blur the background while the interaction menu is open. + Rozmywa lub przyciemnia tło na czas otwarcia menu interakcji + Desenfocar el fondo mientras el menú de interacción está abierto. + Rozmazat obraz pokud je interakční menu otevřené. + Den Hintergrund verschwimmen lassen, während das Interaktionsmenü geöffnet ist. + Desfocar o fundo enquanto o menu de interação está aberto. + A háttér elmosása a cselekvő menü használata alatt. + Размыть фон, пока открыто меню взаимодействия. + + + Blur screen + Rozmycie ekranu + Pantalla de desenfoque + Rozmazaný obraz + Verschwommenes Bild + Desfoque de tela + Kép elmosása + Размытый + + + Black + Przyciemnienie ekranu + Negro + Černý obraz + Preto + Schwarz + Fekete + Черный + + + Show actions for buildings + Pokazuj akcje dla budynków + Zobrazit akci pro budovy + Mostrar acciones para edificios + Cselekvések mutatása épületeknél + Mostrar ações para edifícios + Показывать действия для зданий + + + Adds interaction actions for opening doors and mounting ladders on buildings. (Note: There is a performance cost when opening interaction menu, especially in towns) + Dodaje opcje interakcji dla otwierania drzwi oraz wchodzenia po drabinach do budynków. Uwaga: Użycie tej opcji może spowodować spadek wydajności menu interakcji, szczególnie w dużych miastach. + Přidá možnost interakce pro otevření dvěří a umistňovat žebříky na budovy. (Poznámka: Použití této možnosti snižuje výkon při otevírání pomocí interakčního menu, zejména ve velkých městech.) + Añade las acciones de interacción para la apertura de puertas y montaje de escaleras en los edificios. (Nota: Hay un coste de rendimiento al abrir el menú de interacción, especialmente en las ciudades) + Cselekvéseket engedélyez ajtók kinyitására és létrák mászására. (Figyelem: ez teljesítményvesztéssel járhat a menü megnyitásakor, főleg városokban) + Adiciona ações de interações para abrir portas e montar escadas em edifícios. (Nota: Existe um custo de performance quando aberto o menu de interação, especialmente em cidades) + Добавляет действия открывания дверей и залезания на лестницы для зданий. (Примечание: возможно падение производительности при открытии меню взаимодействия, особенно в городах) + + + Interaction Menu + Menu interakcji + Меню взаимодействия + + \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 0467ee316b..bfa2df6560 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,822 +1,822 @@ - - - - - Interactions - Interaktionen - Interacciones - Interakce - Interakcje - Interactions - Взаимодействия - Cselekvések - Interazioni - Interaçãoes - - - Torso - Torse - Torso - Torso - Trup - Tors - Торс - Testtörzs - Torso - Torso - - - Head - Tête - Kopf - Cabeza - Hlava - Głowa - Голова - Fej - Testa - Cabeça - - - Left Arm - Bras gauche - Linker Arm - Brazo izquierdo - Levá paže - Lewe ramię - Левая рука - Bal kar - Braccio sinistro - Braço Esquerdo - - - Right Arm - Rechter Arm - Brazo derecho - Pravá paže - Prawe ramię - Bras droit - Правая рука - Jobb kar - Braccio destro - Braço Direito - - - Left Leg - Linkes Bein - Pierna izquierda - Levá noha - Lewa noga - Jambe gauche - Левая нога - Bal láb - Gamba sinistra - Perna Esquerda - - - Right Leg - Rechtes Bein - Pierna derecha - Pravá noha - Prawa noga - Jambe droite - Правая нога - Jobb láb - Gamba destra - Perna Direita - - - Weapon - Arme - Waffe - Arma - Zbraň - Broń - Оружие - Fegyver - Arma - Arma - - - Interaction Menu - Interaktionsmenü - Menú de interacción - Menu interakcji - Menu interakce - Menu d'interaction - Меню взаимодействия - Cselekvő menü - Menu de Interação - Menù interazione - - - Interaction Menu (Self) - Interaktionsmenü (selbst) - Menú de interacción (Propio) - Menu interakcji (własne) - Menu interakce (vlastní) - Menu d'interaction (Perso) - Меню взаимодействия (с собой) - Cselekvő menü (saját) - Menu de Interação (Individual) - Menù interazione (individuale) - - - Open / Close Door - Tür öffnen / schließen - Abrir / Cerrar puerta - Otwórz / Zamknij drzwi - Otevřít / Zavřít dveře - Ouvrir / Fermer Portes - Открыть / Закрыть двери - Ajtó nyitása / zárása - Abrir / Fechar Porta - Apri / Chiudi la porta - - - Lock Door - Tür sperren - Bloquear puerta - Verrouiller Porte - Blocca la porta - Заблокировать дверь - Trancar Porta - Ajtó bezárása - Zablokuj drzwi - Zamknout dveře - - - Unlock Door - Tür entsperren - Desbloquear puerta - Déverrouiller Porte - Sblocca la porta - Разблокировать дверь - Destrancar Porta - Zár kinyitása - Odblokuj drzwi - Odemknout dveře - - - Locked Door - Tür gesperrt - Puerta bloqueada - Porte Verrouillée - Porta bloccata - Дверь заблокирована - Porta Trancada - Zárt ajtó - Zablokowano drzwi - Zamčené dveře - - - Unlocked Door - Tür entsperrt - Puerta desbloqueada - Porte Déverrouillée - Porta sbloccata - Дверь разблокирована - Porta Destrancada - Nyitott ajtó - Odblokowano drzwi - Odemčené dveře - - - Join group - Gruppe beitreten - Unirse al grupo - Dołącz do grupy - Přidat se do skupiny - Rejoindre Groupe - Вступить в группу - Csatlakozás a csoporthoz - Unir-se ao grupo - Unisciti alla squadra - - - Leave Group - Gruppe verlassen - Dejar grupo - Opuść grupę - Opustit skupinu - Quitter Groupe - Выйти из группы - Csoport elhagyása - Deixar grupo - Lascia la squadra - - - Become Leader - Grp.-führung übern. - Asumir el liderazgo - Przejmij dowodzenie - Stát se velitelem - Devenir Chef de groupe - Стать лидером - Vezetés átvétele - Tornar-se Líder - Prendi il comando - - - DANCE! - TANZEN! - BAILAR! - TAŃCZ! - TANČIT! - Danse! - ТАНЦЕВАТЬ! - TÁNC! - DANCE! - DANZA! - - - Stop Dancing - Tanzen abbrechen - Dejar de bailar - Przestań tańczyć - Přestat tancovat - Arrêter de danser - Прекратить танцевать - Tánc abbahagyása - Parar de dançar - Smetti di ballare - - - << Back - << Zurück - << Atrás - << Wstecz - << Zpět - << Retour - << Назад - << Vissza - << Voltar - << Indietro - - - Gestures - Gesten - Gestos - Gesty - Posunky - Signaux - Жесты - Kézjelek - Gestos - Gesti - - - Attack - Angreifen - Atacar - Do ataku - Zaútočit - Attaquer - Атаковать - Támadás - Atacar - Attaccare - - - Advance - Vordringen - Avanzar - Naprzód - Postoupit - Avancer - Продвигаться - Előre - Avançar - Avanzare - - - Go - Los - Adelante - Szybko - Jít - Aller - Идти - Mozgás - Mover-se - Muoversi - - - Follow - Folgen - Seguirme - Za mną - Následovat - Suivre - Следовать - Utánam - Seguir - Seguire - - - Point - Zeigen - Señalar - Wskazać - Ukázat - Pointer - Точка - Mutat - Apontar - Puntare a - - - Up - Aufstehen - Arriba - Do góry - Vztyk - Debout - Вверх - Fel - Acima - Alzarsi - - - Cover - Deckung - Cubrirse - Do osłony - Krýt se - A couvert - Укрыться - Fedezékbe - Proteger-se - Copertura - - - Cease Fire - Feuer einstellen - Alto el fuego - Wstrzymać ogień - Zastavit palbu - Halte au feu - Прекратить огонь - Tüzet szüntess - Cessar Fogo - Cessare il Fuoco - - - Freeze - Keine Bewegung - Alto - Stać - Stát - Halte - Замереть - Állj - Alto - Fermi - - - Hi - Hallo - Hola - Witaj - Ahoj - Salut - Привет - Helló - Olá - Ciao - - - Put weapon on back - Waffe wegstecken - Arma a la espalda - Umieść broń na plecach - Dát zbraň na záda - Arme à la bretelle - Повесить оружие на спину - Fegyvert hátra - Colocar arma nas costas - Metti l'arma in spalla - - - Tap Shoulder - Auf Schulter klopfen - Tocar el hombro - Klepnij w ramię - Poklepat na rameno - Taper sur l'épaule - Похлопать по плечу - Vállveregetés - Tocar ombro - Dai un colpetto - - - You were tapped on the RIGHT shoulder - Te tocaron el hombro DERECHO - Dir wurde auf die rechte Schulter geklopft - On te tape sur l'épaule droite - Zostałeś klepnięty w prawe ramię - Megveregették a JOBB válladat. - Někdo tě poklepal na PRAVÉ rameno - Вас похлопали по ПРАВОМУ плечу - Você foi tocado no ombro - Ti è stato dato un colpetto sulla spalla destra - - - You were tapped on the LEFT shoulder. - Te tocaron el hombro IZQUIERDO. - Dir wurde auf die linke Schulter geklopft - On te tape sur l'épaule gauche - Zostałeś klepnięty w lewe ramię - Megveregették a BAL válladat. - Někdo tě poklepal na LEVÉ rameno - Вас похлопали по ЛЕВОМУ плечу - Você foi tocado no ombro. - Ti è stato dato un colpetto sulla spalla sinistra - - - Cancel - Abbrechen - Cancelar - Anuluj - Annuler - Zrušit - Annulla - Отменить - Cancelar - Mégse - - - Select - Wählen - Seleccionar - Wybierz - Sélectionner - Zvolit - Seleziona - Выбрать - Selecionar - Kiválaszt - - - Go Away! - Geh Weg! - Aléjate! - Odejdź! - Jděte pryč! - Allez-vous-en! - Уходите отсюда! - Tűnés! - Vá Embora! - Via di qui! - - - Get Down! - Auf den Boden! - Al suelo! - Padnij! - K zemi! - A terre! - A földre! - Ложись! - Abaixe-se! - A terra! - - - Team Management - Gruppenverwaltung - Gestión de equipo - Gestion d'équipe - Zarządzanie oddziałem - Správa týmu - Управление группой - Gerenciamento de Equipe - Organizzazione Squadra - Csapat kezelése - - - Red - Rot - Rojo - Rouge - Czerwonych - Červený - Красный - Vermelha - Rosso - Piros - - - Green - Grün - Verde - Vert - Zielonych - Zelený - Зеленый - Verde - Verde - Zöld - - - Blue - Blau - Azul - Bleu - Niebieskich - Modrý - Синий - Azul - Blu - Kék - - - Yellow - Gelb - Amarillo - Jaune - Żółtych - Žlutý - Жёлтый - Amarela - Giallo - Sárga - - - Assign Red - Rot zuweisen - Asignar a rojo - Przydziel do czerwonych - Atribuir Vermelho - Hozzávonás a Piroshoz - Přiřadit k červeným - Назначить в Красную группу - Assigner à rouge - Assegna al team rosso - - - Assign Green - Grün zuweisen - Asignar a verde - Przydziel do zielonych - Atribuir Verde - Hozzávonás a Zöldhöz - Přiřadit k zeleným - Назначить в Зеленую группу - Assigner à vert - Assegna al team verde - - - Assign Blue - Blau zuweisen - Asignar a azul - Przydziel do niebieskich - Atribuir Azul - Hozzávonás a Kékhez - Přiřadit k modrým - Назначить в Синюю группу - Assigner à bleu - Assegna al team blu - - - Assign Yellow - Gelb zuweisen - Asignar a amarillo - Przydziel do żółtych - Atribuir Amarelo - Hozzávonás a Sárgához - Přiřadit ke žlutým - Назначить в Желтую группу - Assigner à jaune - Assegna al team giallo - - - Join Red - Rot beitreten - Unirse a rojo - Dołącz do czerwonych - Entrar em Vermelho - Belépés a Pirosba - Připojit k červeným - Присоединиться к Красной группе - Rejoindre rouge - Unirsi al team rosso - - - Join Green - Grün beitreten - Unirse a verde - Dołącz do zielonych - Entrar em Verde - Belépés a Zöldbe - Připojit k zeleným - Присоединиться к Зеленой группе - Rejoindre vert - Unirsi al team verde - - - Join Blue - Blau beitreten - Unirse a azul - Dołącz do niebieskich - Entrar em Azul - Belépés a Kékbe - Připojit k modrým - Присоединиться к Синей группе - Rejoindre bleu - Unirsi al team blu - - - Join Yellow - Gelb beitreten - Unirse a amarillo - Dołącz do żółtych - Entrar em Amarelo - Belépés a Sárgába - Připojit ke žlutým - Присоединиться к Жёлтой группе - Rejoindre jaune - Unirsi al team giallo - - - You joined Team %1 - Du bist Gruppe %1 beigetreten - Te has unido al equipo %1 - Tu as rejoint l'équipe %1 - Dołączyłeś do %1 - Připojil ses do %1 týmu - Вы присоединились к группе %1 - Você uniu-se à Equipe %1 - Sei entrato nel team %1 - Csatlakoztál a %1 csapathoz - - - Leave Team - Gruppe verlassen - Dejar equipo - Quitter l'équipe - Opuść drużynę - Opustit tým - Покинуть группу - Deixar Equipe - Lascia il team - Csapat elhagyása - - - You left the Team - Du hast die Gruppe verlassen - Has dejado el equipo - Tu as quitté l'équipe - Opuściłeś drużynę - Opustil jsi tým - Вы покинули группу - Você deixou a Equipe - Hai lasciato il team - Elhagytad a csapatot - - - Pardon - Begnadigen - Perdonar - Przebacz - Pardon - Pardon - Извините - Perdão - Perdona - Megbocsátás - - - Scroll - Scrollen - Przewiń - Défilement - Desplazar - Пролистать - Rolar - Scorri - Görgetés - Otáčení - - - Modifier Key - Modifikator-Taste - Modyfikator - Modifier la touche - Tecla modificadora - Клавиша-модификатор - Tecla Modificadora - Tasto modifica - Módosító billentyű - Modifikátor - - - Not in Range - Außer Reichweite - Hors de portée. - Fuera de rango - Слишком далеко - Fora do Alcançe - Hatótávolságon kívül - Poza zasięgiem - Mimo dosah - Fuori limite - - - Equipment - Ausrüstung - Equipamiento - Équipement - Ekwipunek - Vybavení - Felszerelés - Снаряжение - Equipaggiamento - Equipamento - - - Push - Schieben - Empujar - Pousser - Pchnij - Odstrčit - Tolás - Толкать - Empurrar - Spingere - - - Interact - Interagir - Interagiere - Interakce - Взаимодействовать - Interakcja - Interactuar - Cselekvés - Interagire - Interagir - - - Passengers - Insassen - Pasajeros - Пассажиры - Pasažéři - Pasażerowie - Passagers - Utasok - Passeggeri - Passageiros - - - Open - Otwórz - Otevřít - Abrir - Nyitás - Abrir - Открыть - - - Interaction System - System interakcji - Sistema de interacción - Interaktionssystem - Systém interakce - Взаимодействие - Interakciós rendszer - Sistema de interação - - - Enable Team Management - Wł. zarządzanie drużyną - Habilitar gestión de equipos - Aktiviere Gruppenverwaltung - Povolit správu týmu - Управление группами - Csapatkezelés engedélyezése - Habilitar gestão de equipes - - - Should players be allowed to use the Team Management Menu? Default: Yes - Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak - ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si - Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja - Mohou hráči použít menu správy týmu? Výchozí: Ano - Разрешить ли игрокам использовать меню управления группами? По-умолчани: Да - A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen - Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim - - - Team management allows color allocation for team members, taking team command and joining/leaving teams. - Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. - Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. - Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. - La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. - A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. - O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. - Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их. - - + + + + + Interactions + Interaktionen + Interacciones + Interakce + Interakcje + Interactions + Взаимодействия + Cselekvések + Interazioni + Interaçãoes + + + Torso + Torse + Torso + Torso + Trup + Tors + Торс + Testtörzs + Torso + Torso + + + Head + Tête + Kopf + Cabeza + Hlava + Głowa + Голова + Fej + Testa + Cabeça + + + Left Arm + Bras gauche + Linker Arm + Brazo izquierdo + Levá paže + Lewe ramię + Левая рука + Bal kar + Braccio sinistro + Braço Esquerdo + + + Right Arm + Rechter Arm + Brazo derecho + Pravá paže + Prawe ramię + Bras droit + Правая рука + Jobb kar + Braccio destro + Braço Direito + + + Left Leg + Linkes Bein + Pierna izquierda + Levá noha + Lewa noga + Jambe gauche + Левая нога + Bal láb + Gamba sinistra + Perna Esquerda + + + Right Leg + Rechtes Bein + Pierna derecha + Pravá noha + Prawa noga + Jambe droite + Правая нога + Jobb láb + Gamba destra + Perna Direita + + + Weapon + Arme + Waffe + Arma + Zbraň + Broń + Оружие + Fegyver + Arma + Arma + + + Interaction Menu + Interaktionsmenü + Menú de interacción + Menu interakcji + Menu interakce + Menu d'interaction + Меню взаимодействия + Cselekvő menü + Menu de Interação + Menù interazione + + + Interaction Menu (Self) + Interaktionsmenü (selbst) + Menú de interacción (Propio) + Menu interakcji (własne) + Menu interakce (vlastní) + Menu d'interaction (Perso) + Меню взаимодействия (с собой) + Cselekvő menü (saját) + Menu de Interação (Individual) + Menù interazione (individuale) + + + Open / Close Door + Tür öffnen / schließen + Abrir / Cerrar puerta + Otwórz / Zamknij drzwi + Otevřít / Zavřít dveře + Ouvrir / Fermer Portes + Открыть / Закрыть двери + Ajtó nyitása / zárása + Abrir / Fechar Porta + Apri / Chiudi la porta + + + Lock Door + Tür sperren + Bloquear puerta + Verrouiller Porte + Blocca la porta + Заблокировать дверь + Trancar Porta + Ajtó bezárása + Zablokuj drzwi + Zamknout dveře + + + Unlock Door + Tür entsperren + Desbloquear puerta + Déverrouiller Porte + Sblocca la porta + Разблокировать дверь + Destrancar Porta + Zár kinyitása + Odblokuj drzwi + Odemknout dveře + + + Locked Door + Tür gesperrt + Puerta bloqueada + Porte Verrouillée + Porta bloccata + Дверь заблокирована + Porta Trancada + Zárt ajtó + Zablokowano drzwi + Zamčené dveře + + + Unlocked Door + Tür entsperrt + Puerta desbloqueada + Porte Déverrouillée + Porta sbloccata + Дверь разблокирована + Porta Destrancada + Nyitott ajtó + Odblokowano drzwi + Odemčené dveře + + + Join group + Gruppe beitreten + Unirse al grupo + Dołącz do grupy + Přidat se do skupiny + Rejoindre Groupe + Вступить в группу + Csatlakozás a csoporthoz + Unir-se ao grupo + Unisciti alla squadra + + + Leave Group + Gruppe verlassen + Dejar grupo + Opuść grupę + Opustit skupinu + Quitter Groupe + Выйти из группы + Csoport elhagyása + Deixar grupo + Lascia la squadra + + + Become Leader + Grp.-führung übern. + Asumir el liderazgo + Przejmij dowodzenie + Stát se velitelem + Devenir Chef de groupe + Стать лидером + Vezetés átvétele + Tornar-se Líder + Prendi il comando + + + DANCE! + TANZEN! + BAILAR! + TAŃCZ! + TANČIT! + Danse! + ТАНЦЕВАТЬ! + TÁNC! + DANCE! + DANZA! + + + Stop Dancing + Tanzen abbrechen + Dejar de bailar + Przestań tańczyć + Přestat tancovat + Arrêter de danser + Прекратить танцевать + Tánc abbahagyása + Parar de dançar + Smetti di ballare + + + << Back + << Zurück + << Atrás + << Wstecz + << Zpět + << Retour + << Назад + << Vissza + << Voltar + << Indietro + + + Gestures + Gesten + Gestos + Gesty + Posunky + Signaux + Жесты + Kézjelek + Gestos + Gesti + + + Attack + Angreifen + Atacar + Do ataku + Zaútočit + Attaquer + Атаковать + Támadás + Atacar + Attaccare + + + Advance + Vordringen + Avanzar + Naprzód + Postoupit + Avancer + Продвигаться + Előre + Avançar + Avanzare + + + Go + Los + Adelante + Szybko + Jít + Aller + Идти + Mozgás + Mover-se + Muoversi + + + Follow + Folgen + Seguirme + Za mną + Následovat + Suivre + Следовать + Utánam + Seguir + Seguire + + + Point + Zeigen + Señalar + Wskazać + Ukázat + Pointer + Точка + Mutat + Apontar + Puntare a + + + Up + Aufstehen + Arriba + Do góry + Vztyk + Debout + Вверх + Fel + Acima + Alzarsi + + + Cover + Deckung + Cubrirse + Do osłony + Krýt se + A couvert + Укрыться + Fedezékbe + Proteger-se + Copertura + + + Cease Fire + Feuer einstellen + Alto el fuego + Wstrzymać ogień + Zastavit palbu + Halte au feu + Прекратить огонь + Tüzet szüntess + Cessar Fogo + Cessare il Fuoco + + + Freeze + Keine Bewegung + Alto + Stać + Stát + Halte + Замереть + Állj + Alto + Fermi + + + Hi + Hallo + Hola + Witaj + Ahoj + Salut + Привет + Helló + Olá + Ciao + + + Put weapon on back + Waffe wegstecken + Arma a la espalda + Umieść broń na plecach + Dát zbraň na záda + Arme à la bretelle + Повесить оружие на спину + Fegyvert hátra + Colocar arma nas costas + Metti l'arma in spalla + + + Tap Shoulder + Auf Schulter klopfen + Tocar el hombro + Klepnij w ramię + Poklepat na rameno + Taper sur l'épaule + Похлопать по плечу + Vállveregetés + Tocar ombro + Dai un colpetto + + + You were tapped on the RIGHT shoulder + Te tocaron el hombro DERECHO + Dir wurde auf die rechte Schulter geklopft + On te tape sur l'épaule droite + Zostałeś klepnięty w prawe ramię + Megveregették a JOBB válladat. + Někdo tě poklepal na PRAVÉ rameno + Вас похлопали по ПРАВОМУ плечу + Você foi tocado no ombro + Ti è stato dato un colpetto sulla spalla destra + + + You were tapped on the LEFT shoulder. + Te tocaron el hombro IZQUIERDO. + Dir wurde auf die linke Schulter geklopft + On te tape sur l'épaule gauche + Zostałeś klepnięty w lewe ramię + Megveregették a BAL válladat. + Někdo tě poklepal na LEVÉ rameno + Вас похлопали по ЛЕВОМУ плечу + Você foi tocado no ombro. + Ti è stato dato un colpetto sulla spalla sinistra + + + Cancel + Abbrechen + Cancelar + Anuluj + Annuler + Zrušit + Annulla + Отменить + Cancelar + Mégse + + + Select + Wählen + Seleccionar + Wybierz + Sélectionner + Zvolit + Seleziona + Выбрать + Selecionar + Kiválaszt + + + Go Away! + Geh Weg! + Aléjate! + Odejdź! + Jděte pryč! + Allez-vous-en! + Уходите отсюда! + Tűnés! + Vá Embora! + Via di qui! + + + Get Down! + Auf den Boden! + Al suelo! + Padnij! + K zemi! + A terre! + A földre! + Ложись! + Abaixe-se! + A terra! + + + Team Management + Gruppenverwaltung + Gestión de equipo + Gestion d'équipe + Zarządzanie oddziałem + Správa týmu + Управление группой + Gerenciamento de Equipe + Organizzazione Squadra + Csapat kezelése + + + Red + Rot + Rojo + Rouge + Czerwonych + Červený + Красный + Vermelha + Rosso + Piros + + + Green + Grün + Verde + Vert + Zielonych + Zelený + Зеленый + Verde + Verde + Zöld + + + Blue + Blau + Azul + Bleu + Niebieskich + Modrý + Синий + Azul + Blu + Kék + + + Yellow + Gelb + Amarillo + Jaune + Żółtych + Žlutý + Жёлтый + Amarela + Giallo + Sárga + + + Assign Red + Rot zuweisen + Asignar a rojo + Przydziel do czerwonych + Atribuir Vermelho + Hozzávonás a Piroshoz + Přiřadit k červeným + Назначить в Красную группу + Assigner à rouge + Assegna al team rosso + + + Assign Green + Grün zuweisen + Asignar a verde + Przydziel do zielonych + Atribuir Verde + Hozzávonás a Zöldhöz + Přiřadit k zeleným + Назначить в Зеленую группу + Assigner à vert + Assegna al team verde + + + Assign Blue + Blau zuweisen + Asignar a azul + Przydziel do niebieskich + Atribuir Azul + Hozzávonás a Kékhez + Přiřadit k modrým + Назначить в Синюю группу + Assigner à bleu + Assegna al team blu + + + Assign Yellow + Gelb zuweisen + Asignar a amarillo + Przydziel do żółtych + Atribuir Amarelo + Hozzávonás a Sárgához + Přiřadit ke žlutým + Назначить в Желтую группу + Assigner à jaune + Assegna al team giallo + + + Join Red + Rot beitreten + Unirse a rojo + Dołącz do czerwonych + Entrar em Vermelho + Belépés a Pirosba + Připojit k červeným + Присоединиться к Красной группе + Rejoindre rouge + Unirsi al team rosso + + + Join Green + Grün beitreten + Unirse a verde + Dołącz do zielonych + Entrar em Verde + Belépés a Zöldbe + Připojit k zeleným + Присоединиться к Зеленой группе + Rejoindre vert + Unirsi al team verde + + + Join Blue + Blau beitreten + Unirse a azul + Dołącz do niebieskich + Entrar em Azul + Belépés a Kékbe + Připojit k modrým + Присоединиться к Синей группе + Rejoindre bleu + Unirsi al team blu + + + Join Yellow + Gelb beitreten + Unirse a amarillo + Dołącz do żółtych + Entrar em Amarelo + Belépés a Sárgába + Připojit ke žlutým + Присоединиться к Жёлтой группе + Rejoindre jaune + Unirsi al team giallo + + + You joined Team %1 + Du bist Gruppe %1 beigetreten + Te has unido al equipo %1 + Tu as rejoint l'équipe %1 + Dołączyłeś do %1 + Připojil ses do %1 týmu + Вы присоединились к группе %1 + Você uniu-se à Equipe %1 + Sei entrato nel team %1 + Csatlakoztál a %1 csapathoz + + + Leave Team + Gruppe verlassen + Dejar equipo + Quitter l'équipe + Opuść drużynę + Opustit tým + Покинуть группу + Deixar Equipe + Lascia il team + Csapat elhagyása + + + You left the Team + Du hast die Gruppe verlassen + Has dejado el equipo + Tu as quitté l'équipe + Opuściłeś drużynę + Opustil jsi tým + Вы покинули группу + Você deixou a Equipe + Hai lasciato il team + Elhagytad a csapatot + + + Pardon + Begnadigen + Perdonar + Przebacz + Pardon + Pardon + Извините + Perdão + Perdona + Megbocsátás + + + Scroll + Scrollen + Przewiń + Défilement + Desplazar + Пролистать + Rolar + Scorri + Görgetés + Otáčení + + + Modifier Key + Modifikator-Taste + Modyfikator + Modifier la touche + Tecla modificadora + Клавиша-модификатор + Tecla Modificadora + Tasto modifica + Módosító billentyű + Modifikátor + + + Not in Range + Außer Reichweite + Hors de portée. + Fuera de rango + Слишком далеко + Fora do Alcançe + Hatótávolságon kívül + Poza zasięgiem + Mimo dosah + Fuori limite + + + Equipment + Ausrüstung + Equipamiento + Équipement + Ekwipunek + Vybavení + Felszerelés + Снаряжение + Equipaggiamento + Equipamento + + + Push + Schieben + Empujar + Pousser + Pchnij + Odstrčit + Tolás + Толкать + Empurrar + Spingere + + + Interact + Interagir + Interagiere + Interakce + Взаимодействовать + Interakcja + Interactuar + Cselekvés + Interagire + Interagir + + + Passengers + Insassen + Pasajeros + Пассажиры + Pasažéři + Pasażerowie + Passagers + Utasok + Passeggeri + Passageiros + + + Open + Otwórz + Otevřít + Abrir + Nyitás + Abrir + Открыть + + + Interaction System + System interakcji + Sistema de interacción + Interaktionssystem + Systém interakce + Взаимодействие + Interakciós rendszer + Sistema de interação + + + Enable Team Management + Wł. zarządzanie drużyną + Habilitar gestión de equipos + Aktiviere Gruppenverwaltung + Povolit správu týmu + Управление группами + Csapatkezelés engedélyezése + Habilitar gestão de equipes + + + Should players be allowed to use the Team Management Menu? Default: Yes + Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak + ¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si + Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja + Mohou hráči použít menu správy týmu? Výchozí: Ano + Разрешить ли игрокам использовать меню управления группами? По-умолчани: Да + A játékosoknak engedélyezve legyen a csapatkezelő menü? Alapértelmezett: Igen + Devem os jogadores ter permissão de usar o menu de gestão de equipes? Padrão: Sim + + + Team management allows color allocation for team members, taking team command and joining/leaving teams. + Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn. + Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe. + Správa týmu se skládá z: přidělení barev pro členy týmu, převzetí velení, připojení/odpojení. + La gestión del equipo permite la asignación de colores para los miembros del equipo, tomando el mando del equipo y uniendo/dejando equipos. + A csapatkezelés engedélyezi a tagok színének meghatározását, a vezetés átvételét, és csapatoknál be-és kilépést. + O módulo de gestão de equipe é composto por: a atribuição de cores para os membros da equipe, comando das equipes, juntando-se / deixando equipes. + Управление группами позволяет назначать цвета членам групп, брать командование, вступать в группы или покидать их. + + \ No newline at end of file diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index c3f0b9cc21..610fd00195 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -1,10 +1,10 @@ - - - - - ACE Logistics - ACE Logistyka - ACE: логистика - - + + + + + ACE Logistics + ACE Logistyka + ACE: логистика + + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 29e27ac338..433c369ef5 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -1,213 +1,213 @@ - - - - - Map - Mapa - Mapa - Karte - Mapa - Mapa - Térkép - Карта - - - Map illumination? - Oświetlenie mapy - ¿Iluminación de mapa? - Kartenausleuchtung - Osvětlení mapy - Iluminação do mapa? - Térkép megvilágítása? - Освещение карты? - - - Simulate map lighting based on ambient lighting and player's items? - Симулировать освещение карты на основе окружающего света и приборов игрока? - - - Map flashlight glow? - Свет фонаря на карте? - - - Add external glow to players who use flashlight on map? - Добавить свет при использовании фонаря на карте? - - - Map shake? - Drżenie mapy - ¿Temblor de mapa? - Kamerawackeln - Třesení mapy? - Tremor de mapa? - Térkép-rázkódás? - Тряска карты? - - - Make map shake when walking? - Ekran mapy drży podczas ruchu - Hace que el mapa tiemble cuando caminas - Kamerawackeln beim Gehen? - Umožnit třesení mapy za pochodu? - Tremer o mapa enquanto caminha? - Rázkódjon-e a térkép mozgáskor? - Заставлять карту трястись при ходьбе? - - - Limit map zoom? - Ograniczony zoom - ¿Limitar el zoom de mapa? - Kartenzoom einschränken - Omezit přiblížení mapy? - Limitar zoom do mapa? - Térkép-nagyítás korlátozása? - Ограничить приближение карты? - - - Limit the amount of zoom available for the map? - Ogranicza maksymalny stopień przybliżenia mapy - Limita la cantidad de zoom disponible para el mapa - Zoomstufe der Karte einschränken? - Omezit stupeň přiblížení pro mapu? - Limitar a quantidade de zoom disponível para o mapa? - Korlátozva legyen-e a nagyítás mennyisége a térképnél? - Ограничить максимальное приближение, доступное на карте? - - - Show cursor coordinates? - Koordynaty pod kursorem - ¿Mostrar coordenadas de cursor? - Zeige Cursor-Koordinaten? - Zobrazit souřadnice u kurzoru? - Mostrar coordenadas no cursor? - Kurzor-koordináták mutatása? - Показывать координаты курсора? - - - Show the grid coordinates on the mouse pointer? - Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy - Muestra las coordenadas de la cuadricula en el puntero del ratón - Gitter-Koordinaten auf dem Mauszeiger anzeigen? - Zobrazit souřadnice u kurzoru v mapě? - Mostrar as coordenadas de grade no ponteiro do mouse? - Mutatva legyen-e a kurzornál található rész rácskoordinátája? - Показывать координаты около курсора мыши? - - - This module allows you to customize the map screen. - Moduł ten pozwala dostosować opcje widoku ekranu mapy. - Dieses Modul erweitert die Kartenfunktionen. - Tento modul umožňuje přizpůsobit mapu s obrazem. - Este módulo permite que você personalize a tela de mapa. - Ez a modul lehetővé teszi a térképnézet testreszabását. - Этот модуль позволяет настроить отображение карты. - - - Blue Force Tracking - Blue Force Tracking - Seguimiento de fuerzas amigas - Blue Force Tracking - Blue Force Tracking - Rastreio de forças azuis - Blue Force követés - Система слежения Blue Force Tracking - - - BFT Enable - RFA ativo - Aktywuj BFT - Povolit BFT - Activar BFT - BFT engedélyezése - Включить BFT - - - Enable Blue Force Tracking. Default: No - Ativa Rastreio de Forças Azuis. Padrão: Não - Aktywuj Blue Force Tracking. Domyślnie: Nie - Povolit Blue Force Tracking. Výchozí: Ne - Activar Blue Force Tracking. Por defecto: No - Blue Force követés engedélyezése. Alapértelmezett: Nem - Включает систему служения BFT. По-умолчанию: Нет - - - Interval - Interwał - Intervalo - Intervall - Interval - Intervalo - Intervallum - Интервал - - - How often the markers should be refreshed (in seconds) - Jak często markery powinny być odświeżane (w sekundach) - Frecuencia de actualización de los marcadores (en segundos) - Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) - Jak často budou značky aktualizovány (v sekundách) - Frequência em que os marcadores devem ser atualizados (em segundos) - Milyen gyakran frissüljenek a jelölők (másodpercben) - Как часто должны обновляться маркеры (в секундах) - - - Hide AI groups? - Ukryj grupy AI - ¿Ocultar grupos de IA? - KI-Gruppen verstecken? - Skrýt AI skupiny? - Esconder grupos de IA? - AI csoportok elrejtése? - Скрыть группы ботов? - - - Hide markers for 'AI only' groups? - Ukrywa markery dla grup złożonych tylko z AI - Oculta las marcas de grupos 'solo IA' - Verstecke Marker für "nur KI"-Gruppen? - Skrýt značky pouze pro AI skupiny? - Esconder marcadores que pertencem ao grupo de IA? - Jelölők elrejtése "csak AI" csoportoknál? - Скрыть маркеры групп, которые состоят полностью из ботов? - - - This module allows the tracking of allied units with BFT map markers. - Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. - Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. - Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. - Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. - Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. - Этот модуль позволяет отслеживать перемещение союзных войск по карте при помощи маркеров BFT. - - - Flashlights - Latarki - Фонари - - - NVG - Noktowizja - ПНВ - - - On - Włącz - Вкл. - - - Off - Wyłącz - Выкл. - - - Increase Brightness - Zwiększ czułość - Увеличить яркость - - - Decrease Brightness - Zmniejsz czułość - Уменьшить яркость - - + + + + + Map + Mapa + Mapa + Karte + Mapa + Mapa + Térkép + Карта + + + Map illumination? + Oświetlenie mapy + ¿Iluminación de mapa? + Kartenausleuchtung + Osvětlení mapy + Iluminação do mapa? + Térkép megvilágítása? + Освещение карты? + + + Simulate map lighting based on ambient lighting and player's items? + Симулировать освещение карты на основе окружающего света и приборов игрока? + + + Map flashlight glow? + Свет фонаря на карте? + + + Add external glow to players who use flashlight on map? + Добавить свет при использовании фонаря на карте? + + + Map shake? + Drżenie mapy + ¿Temblor de mapa? + Kamerawackeln + Třesení mapy? + Tremor de mapa? + Térkép-rázkódás? + Тряска карты? + + + Make map shake when walking? + Ekran mapy drży podczas ruchu + Hace que el mapa tiemble cuando caminas + Kamerawackeln beim Gehen? + Umožnit třesení mapy za pochodu? + Tremer o mapa enquanto caminha? + Rázkódjon-e a térkép mozgáskor? + Заставлять карту трястись при ходьбе? + + + Limit map zoom? + Ograniczony zoom + ¿Limitar el zoom de mapa? + Kartenzoom einschränken + Omezit přiblížení mapy? + Limitar zoom do mapa? + Térkép-nagyítás korlátozása? + Ограничить приближение карты? + + + Limit the amount of zoom available for the map? + Ogranicza maksymalny stopień przybliżenia mapy + Limita la cantidad de zoom disponible para el mapa + Zoomstufe der Karte einschränken? + Omezit stupeň přiblížení pro mapu? + Limitar a quantidade de zoom disponível para o mapa? + Korlátozva legyen-e a nagyítás mennyisége a térképnél? + Ограничить максимальное приближение, доступное на карте? + + + Show cursor coordinates? + Koordynaty pod kursorem + ¿Mostrar coordenadas de cursor? + Zeige Cursor-Koordinaten? + Zobrazit souřadnice u kurzoru? + Mostrar coordenadas no cursor? + Kurzor-koordináták mutatása? + Показывать координаты курсора? + + + Show the grid coordinates on the mouse pointer? + Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy + Muestra las coordenadas de la cuadricula en el puntero del ratón + Gitter-Koordinaten auf dem Mauszeiger anzeigen? + Zobrazit souřadnice u kurzoru v mapě? + Mostrar as coordenadas de grade no ponteiro do mouse? + Mutatva legyen-e a kurzornál található rész rácskoordinátája? + Показывать координаты около курсора мыши? + + + This module allows you to customize the map screen. + Moduł ten pozwala dostosować opcje widoku ekranu mapy. + Dieses Modul erweitert die Kartenfunktionen. + Tento modul umožňuje přizpůsobit mapu s obrazem. + Este módulo permite que você personalize a tela de mapa. + Ez a modul lehetővé teszi a térképnézet testreszabását. + Этот модуль позволяет настроить отображение карты. + + + Blue Force Tracking + Blue Force Tracking + Seguimiento de fuerzas amigas + Blue Force Tracking + Blue Force Tracking + Rastreio de forças azuis + Blue Force követés + Система слежения Blue Force Tracking + + + BFT Enable + RFA ativo + Aktywuj BFT + Povolit BFT + Activar BFT + BFT engedélyezése + Включить BFT + + + Enable Blue Force Tracking. Default: No + Ativa Rastreio de Forças Azuis. Padrão: Não + Aktywuj Blue Force Tracking. Domyślnie: Nie + Povolit Blue Force Tracking. Výchozí: Ne + Activar Blue Force Tracking. Por defecto: No + Blue Force követés engedélyezése. Alapértelmezett: Nem + Включает систему служения BFT. По-умолчанию: Нет + + + Interval + Interwał + Intervalo + Intervall + Interval + Intervalo + Intervallum + Интервал + + + How often the markers should be refreshed (in seconds) + Jak często markery powinny być odświeżane (w sekundach) + Frecuencia de actualización de los marcadores (en segundos) + Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) + Jak často budou značky aktualizovány (v sekundách) + Frequência em que os marcadores devem ser atualizados (em segundos) + Milyen gyakran frissüljenek a jelölők (másodpercben) + Как часто должны обновляться маркеры (в секундах) + + + Hide AI groups? + Ukryj grupy AI + ¿Ocultar grupos de IA? + KI-Gruppen verstecken? + Skrýt AI skupiny? + Esconder grupos de IA? + AI csoportok elrejtése? + Скрыть группы ботов? + + + Hide markers for 'AI only' groups? + Ukrywa markery dla grup złożonych tylko z AI + Oculta las marcas de grupos 'solo IA' + Verstecke Marker für "nur KI"-Gruppen? + Skrýt značky pouze pro AI skupiny? + Esconder marcadores que pertencem ao grupo de IA? + Jelölők elrejtése "csak AI" csoportoknál? + Скрыть маркеры групп, которые состоят полностью из ботов? + + + This module allows the tracking of allied units with BFT map markers. + Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT. + Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen. + Umožňuje sledovat přátelské jednokty na mapě v rámci BFT. + Permite que você acompanhe as posições no mapa das unidades aliadas com marcadores RFA. + Ez a modul lehetővé teszi a szövetséges egységek követését BFT térképjelzőjkkel. + Этот модуль позволяет отслеживать перемещение союзных войск по карте при помощи маркеров BFT. + + + Flashlights + Latarki + Фонари + + + NVG + Noktowizja + ПНВ + + + On + Włącz + Вкл. + + + Off + Wyłącz + Выкл. + + + Increase Brightness + Zwiększ czułość + Увеличить яркость + + + Decrease Brightness + Zmniejsz czułość + Уменьшить яркость + + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index e8110685e3..8d0ec93113 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -1,3747 +1,3747 @@ - - - - - INJURIES - VERLETZUNGEN - LESIONI - ТРАВМЫ - BLESSURES - OBRAŻENIA - HERIDAS - SÉRÜLÉSEK - ZRANĚNÍ - FERIMENTOS - - - No injuries on this bodypart ... - Körperteil nicht verletzt ... - Non ci sono lesioni in questa parte del corpo ... - Данная часть тела не повреждена ... - Aucune blessures sur cette partie du corps ... - Brak obrażeń na tej części ciała ... - Sin heridas en esta parte del cuerpo ... - Ezen a testrészen nincs sérülés ... - Žádné zranění na této části těla ... - Nenhum ferimento nesta parte do corpo... - - - Litter Simulation Detail - Detale zużytych medykamentów - Detalle de simulación de basura - Количество мусора от медицины - Dettagli Simulazione Rifiuti - Niveau de simulation des détritus - Abfall-Detaillevel - Hulladékszimuláció részletessége - Detalhe da simulação de sujeira - Počet zobrazených předmětů po použití zdravotnického materiálu - - - Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting. - Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta. - Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente. - Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. - Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client. - Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. - Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. - A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. - O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. - Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. - - - Inject Atropine - Atropin injizieren - Inyectar Atropina - Aplikovat atropin - Wstrzyknij atropinę - Injecter de l'atropine - Ввести атропин - Atropin beadása - Inietta atropina - Injetar Atropina - - - Inject Epinephrine - Epinephrine injizieren - Inyectar Epinefrina - Wstrzyknij adrenalinę - Aplikovat adrenalin - Injecter de l'épinéphrine - Ввести адреналин - Epinefrin beadása - Injetar Epinefrina - Inietta epinefrina - - - Inject Morphine - Morphin injizieren - Inyectar Morfina - Wstrzyknij morfinę - Aplikovat morfin - Ввести морфин - Injecter de la morphine - Morfium beadása - Injetar Morfina - Inietta morfina - - - Transfuse Blood - Bluttransfusion - Transfundir sangre - Przetocz krew - Transfúze krve - Перелить кровь - Transfusion - Infúzió (vér) - Transfundir Sangue - Trasfusione di sangue - - - Transfuse Plasma - Plasmatransfusion - Transfundir plasma - Transfúze plazmy - Przetocz osocze - Transfuser du Plasma - Перелить плазму - Infúzió (vérplazma) - Trasfusione di Plasma - Transfundir Plasma - - - Transfuse Saline - Salzlösungstransfusion - Transfundir salino - Transfúze fyziologický roztoku - Przetocz sól fizjologiczną - Transfuser de la solution saline - Перелить физраствор - Infúzió (sós víz) - Trasfusione di soluzione salina - Transfundir Soro - - - Apply Tourniquet - Tourniquet anwenden - Aplicar torniquete - Aplikovat škrtidlo - Załóż stazę - Appliquer un garrot - Наложить жгут - Applica laccio emostatico - Aplicar Torniquete - Érszorító alkalmazása - - - Bandage - Verbinden - Venda - Bandażuj - Obvázat - Pansement - Benda - Kötözés - Atadura - Перевязать - - - Bandage Head - Kopf verbinden - Vendar la cabeza - Bandażuj głowę - Obvázat hlavu - Перевязать голову - Pansement Tête - Fej kötözése - Atar Cabeça - Benda la testa - - - Bandage Torso - Torso verbinden - Vendar el torso - Bandażuj tors - Obvázat hruď - Перевязать торс - Pansement Torse - Testtörzs kötözése - Atar Tronco - Benda il torso - - - Bandage Left Arm - Linken Arm verbinden - Vendar el brazo izquierdo - Bandażuj lewe ramię - Obvázat levou ruku - Перевязать левую руку - Pansement Bras Gauche - Bal kar kötözése - Atar Braço Esquerdo - Benda il braccio sinistro - - - Bandage Right Arm - Rechten Arm verbinden - Vendar el brazo derecho - Bandażuj prawe ramię - Obvázat pravou ruku - Перевязать правую руку - Pansement Bras Droit - Jobb kar kötözése - Atar Braço Direito - Benda il braccio destro - - - Bandage Left Leg - Linkes Bein verbinden - Vendar la pierna izquierda - Bandażuj lewą nogę - Obvázat levou nohu - Перевязать левую ногу - Pansement Jambe Gauche - Bal láb kötözése - Atar Perna Esquerda - Benda la gamba sinistra - - - Bandage Right Leg - Rechtes Bein verbinden - Vendar la pierna derecha - Bandażuj prawą nogę - Obvázat pravou nohu - Перевязать правую ногу - Pansement Jambe Droite - Jobb láb kötözése - Atar Perna Direita - Benda la gamba destra - - - Injecting Morphine ... - Morphin injizieren ... - Inyectando Morfina ... - Wstrzykiwanie morfiny ... - Aplikuji morfin ... - Введение морфина ... - Injection de Morphine... - Morfium beadása ... - Injetando Morfina ... - Inietto la morfina ... - - - Injecting Epinephrine ... - Epinephrin injizieren ... - Inyectando Epinefrina ... - Wstrzykiwanie adrenaliny ... - Aplikuji adrenalin ... - Введение адреналина ... - Injection d'Adrénaline ... - Epinefrin beadása ... - Injetando Epinefrina ... - Inietto l'epinefrina ... - - - Injecting Atropine ... - Atropin injizieren ... - Inyectando Atropina ... - Aplikuji atropin ... - Wstrzykiwanie atropiny ... - Injection d'Atropine ... - Введение атропина ... - Atropin beadása ... - Inietto l'atropina ... - Injetando Atropina - - - Transfusing Blood ... - Bluttransfusion ... - Transfusión de sangre ... - Przetaczanie krwi ... - Probíhá transfúze krve ... - Переливание крови ... - Transfusion Sanguine ... - Infúzió vérrel ... - Transfundindo Sangue ... - Effettuo la trasfusione di sangue ... - - - Transfusing Saline ... - Salzlösungtransfusion ... - Transfusión de salino ... - Probíha transfúze fyziologický roztoku ... - Przetaczanie soli fizjologicznej ... - Transfusion de saline ... - Переливание физраствора ... - Infúzió sós vizzel ... - Effettuo la rasfusione di soluzione salina - Transfundindo Soro... - - - Transfusing Plasma ... - Plasmatransfusion ... - Transfusión de plasma ... - Probíha transfúze plazmy ... - Przetaczanie osocza ... - Transfusion de Plasma ... - Переливание плазмы ... - Infúzió vérplazmával ... - Effettu la trasfusione di plasma ... - Transfundindo Plasma... - - - Bandaging ... - Verbinden ... - Vendando ... - Bandażowanie ... - Obvazuji ... - Pansement ... - Sto applicando la benda ... - Bekötözés ... - Atando ... - Перевязывание ... - - - Applying Tourniquet ... - Setze Tourniquet an ... - Aplicando torniquete ... - Aplikuji škrtidlo - Zakładanie stazy ... - Mise en place du Garrot ... - Наложение жгута ... - Érszorító felhelyezése ... - Sto applicando il laccio emostatico ... - Applicando Torniquete - - - Medical - Zdravotní - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Field Dressing - Verbandpäckchen - Compresa de campaña - Бинтовая повязка - Obinadlo - Bandaż jałowy - Bandage rapide - Zárókötszer - Bendaggio rapido - Curativo de Campo - - - Packing Bandage - Mullbinde - Vendaje compresivo - Компресионный пакет - Bandaż uciskowy - Nyomókötszer - Bendaggio compressivo - Bandage gauze - Bandagem de Compressão - Tlakový obvaz - - - Elastic Bandage - Elastischer Verband - Vendaje elástico - Давящая повязка - Elastické obinadlo - Bandaż elastyczny - Pansement élastique - Rögzitő kötszer - Bendaggio elastico - Bandagem Elástica - - - QuikClot - QuikClot - QuikClot - QuikClot - Opatrunek QuikClot - QuikClot - Hémostatique - QuikClot - QuikClot (polvere emostatica) - QuikClot - - - Check Pulse - Puls überprüfen - Comprobar pulso - Проверить пульс - Zkontrolovat pulz - Sprawdź tętno - Vérifier le pouls - Pulzus ellenőrzése - Controlla il polso - Checar Pulso - - - Check Blood Pressure - Blutdruck überprüfen - Comprobar presión arterial - Проверить давление - Zkontrolovat krevní tlak - Sprawdź ciśnienie krwi - Vérification de la tension - Vérnyomás megmérése - Controlla pressionsa sanguigna - Chegar Pressão Sanguínea - - - Triage Card - Triagekarte - Tarjeta de clasificación - Медкарта - Karta segregacyjna - Štítek - Carte de triage - Orvosi lap - Triage Card - Cartão de Triagem - - - No entries on this triage card. - Keine Einträge auf der Triagekarte - Nessuna voce sulla Triage Card - Нет записей. - Aucune entrée sur cette carte de triage - Brak wpisów w tej karcie segregacyjnej. - Sin entradas en esta tarjeta de clasificación. - Ez az orvosi lap nem tartalmaz bejegyzést. - Žádné záznamy na tomto štítku - Nenhuma entrada neste cartão de triagem - - - Tourniquet - Tourniquet - Torniquete - Жгут - Škrtidlo - Staza - Tourniquet - Érszorító - Laccio emostatico - Torniquete - - - Remove Tourniquet - Tourniquet entfernen - Quitar torniquete - Снять жгут - Sundat škrtidlo - Zdejmij stazę - Enlever le Tourniquet - Érszorító leszedése - Rimuovi laccio emostatico - Remover Torniquete - - - Diagnose - Diagnose - Diagnosi - Диагностика - Diagnostiquer - Diagnoza - Diagnosticar - Diagnosztizálás - Diagnóza - Diagnosticar - - - Diagnosing ... - Diagnostizieren ... - Diagnosi in corso... - Диагностика ... - Diagnostic en cours - Diagnozowanie ... - Diagnosticando ... - Diagnózis folyamatban... - Diagnostika ... - Diagnosticando... - - - CPR - HLW - RCP - Сердечно-лёгочная реанимация - RPC - RKO - RCP - Újraélesztés - KPR - SBV - - - Performing CPR ... - HLW durchführen ... - Eseguendo RCP... - Сердечно-лёгочная реанимация ... - RPC en cours - Przeprowadzanie RKO ... - Realizando RCP ... - Újraélesztés folyamatban... - Provádím KPR ... - Realizando o SBV... - - - Give Blood IV (1000ml) - Bluttransfusion IV (1000ml) - Dar Sangre IV (1000ml) - Перелить пакет крови (1000 мл) - Podaj krew IV (1000ml) - Administrer du sang en IV (1000ml) - Podat krev. transfúzi (1000ml) - Vér adása intravénásan (1000ml) - Effettua trasfusione sangue IV (1000ml) - Administrar Sangue IV (1000ml) - - - Give Blood IV (500ml) - Bluttransfusion IV (500ml) - Dar Sangre IV (500ml) - Перелить пакет крови (500 мл) - Podaj krew IV (500ml) - Administrer du sang en IV (500ml) - Podat krev. transfúzi (500ml) - Vér adása intravénásan (500ml) - Effettua trasfusione sangue IV (500ml) - Administrar Sangue IV (500ml) - - - Give Blood IV (250ml) - Bluttransfusion IV (250ml) - Dar Sangre IV (250ml) - Перелить пакет крови (250 мл) - Podaj krew IV (250ml) - Administrer du sang en IV (250ml) - Podat krev. transfúzi (250ml) - Vér adása intravénásan (250ml) - Effettua trasfusione sangue IV (250ml) - Administrar Sangue IV (250ml) - - - Give Plasma IV (1000ml) - Plasmatransfusion IV (1000ml) - Dar Plasma IV (1000ml) - Перелить пакет плазмы (1000 мл) - Podaj osocze IV (1000ml) - Administrer du plasma en IV (1000ml) - Podat plazmu (1000ml) - Vérplazma adása intravénásan (1000ml) - Effettua trasfusione plasma IV (1000ml) - Administrar Plasma IV (1000ml) - - - Give Plasma IV (500ml) - Plasmatransfusion IV (500ml) - Dar Plasma IV (500ml) - Перелить пакет плазмы (500 мл) - Podaj osocze IV (500ml) - Administrer du plasma en IV (500ml) - Podat plazmu (500ml) - Vérplazma adása intravénásan (500ml) - Effettua trasfusione plasma IV (500ml) - Administrar Plasma IV (500ml) - - - Give Plasma IV (250ml) - Plasmatransfusion IV (250ml) - Dar Plasma IV (250ml) - Перелить пакет плазмы (250 мл) - Podaj osocze IV (250ml) - Administrer du plasma en IV (250ml) - Podat plazmu (250ml) - Vérplazma adása intravénásan (250ml) - Effettua trasfusione plasma IV (250ml) - Administrar Plasma IV (250ml) - - - Give Saline IV (1000ml) - Kochsalzlösung IV (1000ml) - Dar Salino IV (1000ml) - Перелить пакет физраствора (1000 мл) - Podaj sól fizjologiczną IV (1000ml) - 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) - Administrar Soro IV (1000ml) - - - Give Saline IV (500ml) - Kochsalzlösung IV (500ml) - Dar Salino IV (500ml) - Перелить пакет физраствора (500 мл) - Podaj sól fizjologiczną IV (500ml) - 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) - Administrar Soro IV (500ml) - - - Give Saline IV (250ml) - Kochsalzlösung IV (250ml) - Dar Salino IV (250ml) - Перелить пакет физраствора (250 мл) - Podaj sól fizjologiczną IV (250ml) - 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) - Administrar Soro IV (250ml) - - - Minor - Gering - Menor - Несрочная помощь - Normalny - Mineur - Minimální - Enyhe - Minore - Leve - - - Delayed - Retrasado - Срочная помощь - Opóźniony - Différé - Verzögert - Odložitelný - Késleltetett - Differito - Atrasado - - - Immediate - Inmediato - Неотложная помощь - Natychmiastowy - Urgence Immédiate - Sofort - Okamžitý - Azonnali - Immediata - Imediato - - - Deceased - Fallecido - Труп - Nie żyje - Décédé - Verstorben - Mrtvý - Elhalálozott - Deceduto - Falecido - - - None - Ninguno - Отсутствует - Brak - Aucun - Keine - Nic - Semmi - Nessuna - Nenhum - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration normale - Normalny oddech - Normale Atmung - Dýchá normálně - Normális légzés - Respiro normale - Respiração normal - - - No breathing - Keine Atmung - Дыхание отсутствует - No respira - Aucune respiration - Brak oddechu - Nedýchá - Nincs légzés - Mancanza di respiro - Não respira - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée respiratoire - Trudności z oddychaniem - Schwere Atmung - Dýchá s obtížemi - Nehéz légzés - Difficoltà a respirare - Dificuldade para respirar - - - Almost no breathing - Fast keine Atmung - Дыхание очень слабое - Casi sin respiración - Respiration faible - Prawie brak oddechu - Skoro nedýchá - Alig van légzés - Respira a fatica - Quase não respira - - - Bleeding - Blutet - Кровотечение - Sangrando - Saignement - Krwawienie zewnętrzne - Krvácí - Vérzik - Sanguinando - Sangrando - - - In Pain - Hat Schmerzen - Испытывает боль - Con dolor - Ressent de la douleur - W bólu - V bolestech - Fájdalom alatt - Con dolore - Com dor - - - Lost a lot of Blood - Hat eine große Menge Blut verloren - Большая кровопотеря - Mucha sangre perdida - A perdu beaucoup de sang - Stracił dużo krwi - Ztratil hodně krve - Sok vért vesztett - Ha perso parecchio sangue - Perdeu muito sangue - - - Tourniquet [CAT] - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Tourniquet [CAT] - Staza [typ. CAT] - Škrtidlo [CAT] - Érszorító [CAT] - Laccio emostatico [CAT] - Torniquete [CAT] - - - Receiving IV [%1ml] - Erhalte IV [%1ml] - Reciviendo IV [%1ml] - Принимается переливание [%1 мл] - Otrzymywanie IV [pozostało %1ml] - Transfusion en IV [%1ml] - Přijímání transfúze [%1ml] - Infúzióra kötve [%1ml] - Ricevendo IV [%1ml] - Recebendo IV [%1ml] - - - Bandage (Basic) - Bandage (Standard) - Повязка (обычная) - Vendaje (Básico) - Bandage (Standard) - Bandaż (jałowy) - Obvaz (standartní) - Kötszer (Általános) - Bendaggio (base) - Bandagem(Básico) - - - Used to cover a wound - Для перевязки ран - Utilizado para cubrir una herida - Utilisé pour couvrir une blessure - Używany w celu przykrycia i ochrony miejsca zranienia. Najczęściej stosowany bandaż na otarcia i draśnięcia. - Verwendet um Wunden abzudecken - Sebesülések befedésére alkalmas - Usato per coprire una ferita - Usado para cobrir um ferimento - Slouží k překrytí poranění - - - A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. - Ein Verband, der aus einem besonderen Material besteht um die Wunde zu schützen, nachdem die Blutung gestoppt wurde. - Повязка, накладываемая поверх раны после остановки кровотечения. - Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. - 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 apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. - Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. - Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. - - - Packing Bandage - Mullbinde - Тампонирующая повязка - Vendaje compresivo - Bandage gauze - Bandaż (uciskowy) - Nyomókötszer - Bendaggio compressivo - Bandagem de Compressão - Tlakový obvaz - - - Used to pack medium to large wounds and stem the bleeding - Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen - Для тампонирования ран среднего и большого размера и остановки кровотечения. - Se utiliza para vendar heridas medianas o grandes y detener el sangrado - Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies - Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. - Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer - Usato su ferite medie o larghe per fermare emorragie. - Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. - Používá se k zastavení středních až silnějších krvácení - - - A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. - Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. - Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. - Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques - 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 coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. - Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen - Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. - Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. - - - Bandage (Elastic) - Bandage (Elastisch) - Повязка (давящая) - Vendaje (Elástico) - Bandage (Élastique) - Bandaż (elastyczny) - Obvaz (elastický) - Rögzító kötszer - Benda (elastica) - Bandagem (Elástica) - - - Bandage kit, Elastic - Elastische Binde (Kompressionsbinde) - Давящая повязка - Kit de vendaje (Elástico) - Bandage compressif élastique - Bandaż elastyczny służy do opatrywania ran ciętych oraz kłutych. Dobrze radzi sobie również ze zgniecieniami tkanek miękkich oraz rozerwaniami powierzchni skóry. - Rugalmas kötszercsomag, "rögzítő" - Kit di bendaggio, elastico - Kit de Bandagem, Elástica - Sada obvazů, Elastická - - - Allows an even compression and extra support to the injured area. - Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich. - Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку повреждённой области - Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement. - 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 comprimere e aiutare la zone ferita. - Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. - Hodí se k fixačním účelům a to i v oblastech kloubů. - - - Tourniquet (CAT) - Tourniquet [CAT] - Жгут - Torniquete (CAT) - Tourniquet (CAT) - Staza (typ. CAT) - Škrtidlo (CAT) - Érszorító (CAT) - Laccio emostatico (CAT) - Torniquete (CAT) - - - Slows down blood loss when bleeding - Замедляет кровопотерю при кровотечении - Reduce la velocidad de pérdida de sangre - Ralentit le saignement - Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. - 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 - Reduz a velocidade da perda de sangue - Zpomaluje ztráty krve při krvácení - - - A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. - Жгут используется для прижатия сосудов к костным выступам, которое приводит к остановке или значительному уменьшению кровотечения - Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre - Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. - 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. - A aparelho que comprime as artérias e veias para diminuir a perda de sangue. - Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. - - - Morphine autoinjector - Morphium-Autoinjektor - Морфин в пневмошприце - Morfina auto-inyectable - Auto-injecteur de Morphine - Autostrzykawka z morfiną - Autoinjektor morfin - Morfium autoinjektor - Autoiniettore di morfina - Auto-injetor de morfina - - - Used to combat moderate to severe pain experiences - Wird verwendet um moderate bis starke Schmärzen zu lindern. - Для снятия средних и сильных болевых ощущений - Usado para combatir los estados dolorosos de moderados a severos - Utilisé pour réduire les douleurs modérées à sévères. - Morfina. Ma silne działanie przeciwbólowe. Powoduje spowolnienie tętna oraz rozrzedzenie krwi, zwiększając tym samym ciśnienie tętnicze krwi. Działa przez ok. 15 minut. - Mérsékelttől erős fájdalomig, ellene alkalmazandó termék - Usato per combattere il dolore. - Usado para combater dores moderadas e severas - Slouží k tlumení středně těžkých a těžkých bolestí - - - An analgesic used to combat moderate to severe pain experiences. - Обезболивающее для снятия средних и сильных болевых ощущений. - Analgésico usado para combatir los estados dolorosos de moderados a severos. - Un analgésique puissant servant à réduire les douleurs modérées à sévères. - 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. - Um analgésico usado para combater dores moderadas e fortes. - Analgetikum slouží k tlumení středně těžkých a těžkých bolestí - - - Atropine autoinjector - Атропин в пневмошприце - Atropina auto-inyectable - Auto-injecteur d'Atropine - Autostrzykawka AtroPen - Atropin-Autoinjektor - Autoinjektor atropin - Atropin autoinjektor - Autoiniettore di atropina - Auto-injetor de Atropina - - - Used in NBC scenarios - Применяется для защиты от ОМП - Usado en escenarios NBQ - Utilisé en cas d'attaque CBRN - 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. - Usado em casos de ataque QBRN - Používá se v přítomnosti nervových plynů - - - A drug used by the Military in NBC scenarios. - Препарат, используемый в войсках для защиты от оружия массового поражения. - Medicamento usado por militares en escenarios NBQ - Médicament utilisé par l'armée en cas d'attaque CBRN - 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. - Uma droga usada por militares em casos de ataque QBRN. - Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. - - - Epinephrine autoinjector - Адреналин в пневмошприце - Epinefrina auto-inyectable - Auto-injecteur d'épinéphrine - Autostrzykawka EpiPen - Epiniphrin-Autoinjektor - Autoinjektor adrenalin - Epinefrin autoinjektor - Autoiniettore di epinefrina - Auto-injetor de epinefrina - - - Increase heart rate and counter effects given by allergic reactions - Стимулирует работу сердца и купирует аллергические реакции - Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas - Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique - Adrenalina. Przyśpiesza tętno oraz zwiększa ciśnienie krwi a także przeciwdziała efektom wywołanym przez reakcje alergiczne. - Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen. - 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. - Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas - Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi - - - 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. - Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшенной вероятностью благоприятного исхода. - 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. - Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. - Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. - Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. - Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. - - - Plasma IV (1000ml) - Плазма для в/в вливания (1000 мл) - Plasma IV (1000ml) - Plasma Sanguin IV (1000ml) - Osocze IV (1000ml) - Plasma IV (1000ml) - Vérplazma-infúzió (1000ml) - Plasma IV (1000ml) - Plasma IV (1000ml) - Krevní plazma (1000ml) - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - 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. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - A volume-expanding blood supplement. - Дополнительный препарат, применяемый при возмещении объема крови. - Suplemento para expandir el volumen sanguíneo. - 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. - Volumenerweiterungsmittel (künstliches Blutvolumen) - Suplemento para expandir o volume sanguíneo. - Intravenózně podávaný doplněk k zvětšení objemu krve - - - Plasma IV (500ml) - Плазма для в/в вливания (500 мл) - Plasma IV (500ml) - Plasma sanguin IV (500ml) - Osocze IV (500ml) - Plasma IV (500ml) - Vérplazma-infúzió (500ml) - Plasma IV (500ml) - Plasma IV (500ml) - Krevní plazma (500ml) - - - Plasma IV (250ml) - Плазма для в/в вливания (250 мл) - Plasma IV (250ml) - Plasma sanguin (250ml) - Osocze IV (250ml) - Plasma IV (250ml) - Vérplazma-infúzió (250ml) - Plasma IV (250ml) - Plasma IV (250ml) - Krevní plazma (250ml) - - - Blood IV (1000ml) - Кровь для переливания (1000 мл) - Sangre IV (1000ml) - Cullot sanguin IV (1000ml) - Krew IV (1000ml) - Blut IV (1000ml) - Vér-infúzió (1000ml) - Sangue IV (1000ml) - Sangue IV (1000ml) - Krevní transfúze (1000ml) - - - Blood IV, for restoring a patients blood (keep cold) - Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) - Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) - 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) - Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten) - Sangue intravenoso, para restaurar o volume sanguinio do paciente.(Manter frio) - Krevní transfuze pro doplnění pacientovi krve (skladujte v chladu) - - - 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. - Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC - O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. - Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. - Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. - 0 Rh negativní krev se používá v vzácných případech k doplnění pacientovy hladiny krve, obvykle při převozu zraněné osoby do nemocnice. - - - Blood IV (500ml) - Кровь для переливания (500 мл) - Sangre IV (500ml) - Cullot sanguin IV (500ml) - Krew IV (500ml) - Blut IV (500ml) - Vér-infúzió (500ml) - Sangue IV (500ml) - Sangue IV (500ml) - Krevní transfúze (500ml) - - - Blood IV (250ml) - Кровь для переливания (250 мл) - Sangre IV (250ml) - Cullot sanguin IV (250ml) - Krew IV (250ml) - Blut IV (250ml) - Vér-infúzió (250ml) - Samgue IV (250ml) - Sangue IV (250ml) - Krevní transfúze (250ml) - - - Saline IV (1000ml) - Физраствор для в/в вливания (1000 мл) - Salino IV (1000ml) - Solution saline 0.9% IV (1000ml) - Sól fizjologiczna IV (1000ml) - Kochsalzlösung (1000ml) - 0,9%-os sósvíz-infúzió (1000ml) - Soluzione salina IV (1000ml) - Soro IV (1000ml) - Fyziologický roztok (1000ml) - - - Saline IV, for restoring a patients blood - Пакет физраствора для возмещения объёма потерянной крови - Solución salina intravenosa, para restaurar el volumen sanguíneo - Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle - 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). - 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. - Kochsalzlösung, ein medizinisches Volumenersatzmittel - Solução Salina Intravenosa 0.9%, para restaurar o volume de sangue temporariamente. - Fyziologický roztok se aplikuje intravenózně a slouží k obnově pacientovi krve - - - A medical volume-replenishing agent introduced into the blood system through an IV infusion. - Пакет физиологического раствора для возмещения объёма потерянной крови путем внутривенного вливания - Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. - Un remplacant 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. - Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. - Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. - Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. - - - Saline IV (500ml) - Физраствор для в/в вливания (500 мл) - Salino IV (500ml) - Solution saline 0.9% IV (500ml) - Sól fizjologiczna IV (500ml) - Kochsalzlösung (500ml) - 0,9%-os sósvíz-infúzió (500ml) - Soluzione salina IV (500ml) - Soro IV (1000ml) - Fyziologický roztok (500ml) - - - Saline IV (250ml) - Физраствор для в/в вливания (250 мл) - Salino IV (250ml) - Solution saline 0.9% IV (250ml) - Sól fizjologiczna IV (250ml) - Kochsalzlösung (250ml) - 0,9%-os sósvíz-infúzió (250ml) - Soluzione salina IV (250ml) - Soro IV (1000ml) - Fyziologický roztok (250ml) - - - Basic Field Dressing (QuikClot) - Первичный перевязочный пакет (QuikClot) - Vendaje básico (QuickClot) - Bandage basique (Hémostatique) - Opatrunek QuikClot ACS - Verbandpäckchen(Gerinnungsmittel) - Általános zárókötszer (QuikClot) - Bendaggio emostatico (QuikClot) - Bandagem básica (Coagulante) - Hemostatický obvaz (QuikClot) - - - QuikClot bandage - Гемостатический пакет QuikClot - Vendaje QuikClot - Bandage hémostatique - Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - Bandage mit Gerinnungsmittel - QuikClot kötszer - Bendaggio emostatico (QuikClot) - Bandagem com agente coagulante - Hemostatický obvaz (QuikClot) - - - Hemostatic bandage with coagulant that stops bleeding. - Медицинский коагулянт для экстренной остановки кровотечения - Un bandage aidant à coaguler les saignements mineurs à moyens. - Proszkowy opatrunek adsorpcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. - 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 - Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. - Hemostatický obvaz určený k zástavě krvácení - - - Personal Aid Kit - Аптечка - Trousse de premiers soins - Equipo de primeros auxilios - Apteczka osobista - Persönliches Erste-Hilfe-Set - Elsősegélycsomag - Pronto soccorso personale - Kit De Primeiros Socorros Pessoal - Osobní lékárnička - - - Includes various treatment kit needed for stitching or advanced treatment - Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. - Incluye material médico para tratamientos avanzados - Inclue du matériel medical pour les traitements avancés, tel les points de suture. - 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. - Inclui vários tratamentos materiais para custura e tratamento avançado - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných - - - Personal Aid Kit for in field stitching or advanced treatment - W znacznym stopniu poprawia stan pacjenta - Полевая аптчека для продвинутого лечения и зашивания ран - Persönliches Erste-Hilfe-Set zum ambulanten Nähen und fortgeschrittener Behandlung. - Trousse de premiers soins pour coudre sur le terrain et traitements avancés. - Equipo de primeros auxilios para sutura de campaña o tratamientos avanzados - Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz - Kit de primeiros socorros para sutura ou tratamentos avançados - Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli - Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. - - - Use Personal Aid Kit - Erste-Hilfe-Set benutzen - Использовать аптечку - Utiliser la Trousse de premier soins - Użyj apteczki osobistej - Usar equipo de primeros auxilios - Elsősegélycsomag használata - Usar o kit de primeiros socorros - Použít osobní lékárničku - Usa il pronto soccorso personale - - - Surgical Kit - Trousse chirurgicale - Хирургический набор - Kit quirúrgico - Zestaw do szycia ran - Operationsset - Sebészeti készlet - Kit chirurgico - Kit Cirurgico - Chirurgická sada - - - Surgical Kit for in field advanced medical treatment - Trousse chirurgicale pour le traitement sur le terrain - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - 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. - Kit Cirurgico para uso de tratamento médico avançado em campo - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Surgical Kit for in field advanced medical treatment - Набор для хирургической помощи в полевых условиях - Kit quirúrgico para el tratamiento avanzado en el campo de batalla - Zestaw pozwalający na zszywanie ran w polu - 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. - Kit Cirurgico para uso de tratamento médico avançado em campo. - Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli - - - Use Surgical Kit - Operationsset benutzen - Usa kit chirurgico - Использовать хирургический набор - Utiliser la trousse chirugicale - Zszyj rany - Usar equipo quirúrgico - Sebészeti készlet használata - Použít chirurgickou sadu - Usar kit cirúrgico - - - Bodybag - Housse mortuaire - Мешок для трупов - Bolsa para cadáveres - Worek na zwłoki - Leichensack - Hullazsák - Sacca per corpi - Saco para cadáver - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos - Pytel na mrtvoly - - - A bodybag for dead bodies - Housse de transport des corps - Мешок для упаковки трупов - Una bolsa para cadáveres - Worek do pakowania zwłok - Ein Leichensack für Tote - Egy hullazsák a holttestek számára - Una sacca nera per trasportare cadaveri. - Um saco para corpos mortos. - Pytel na mrtvoly - - - Blood Pressure - Tension artérielle - Артериальное давление - Presión arterial - Ciśnienie krwi - Blutdruck - Vérnyomás - Pressione sanguigna - Pressão Arterial - Krevní tlak - - - 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.. - Aferindo Pressão Arterial... - Kontroluji krevní tlak ... - - - %1 checked Blood Pressure: %2 - %1 kontrollierte Blutdruck: %2 - %1 controllata pressione sanguigna: %2 - %1 проверил артериальное давление: %2 - %1 à vérifié la tension: %2 - %1 sprawdził ciśnienie krwi: %2 - %1 verificada la presión arterial: %2 - %1 ellenőrizte a vérnyomást: %2 - %1 zkontrolován krevní tlak: %2 - %1 verificou pressão arterial: %2 - - - You checked %1 - Vous diagnostiquez %1 - Вы осмотрели раненого %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você verificou o paciente %1 - Zkontroloval jsi %1 - - - You find a blood pressure of %2/%3 - Vous avez trouvé une tension de %2/%3 - Артериальное давление %2/%3 - La Presión Arterial es %2/%3 - A vérnyomás %2/%3 - Hai riscontrato una pressione di %2/%3 - Wyczuwasz ciśnienie krwi o wartości %2/%3 - Der Blutdruck liegt bei %2/%3 - A Pressão Arterial é de %2/%3 - Našel jsi krevní tlak u %2/%3 - - - You find a low blood pressure - Tension basse - Давление низкое - La presión arterial es baja - Wyczuwasz niskie ciśnienie krwi - Blutdruck ist niedrig - A vérnyomás alacsony - La pressione sanguigna è bassa - Pressão Arterial baixa - Naměřil jsi nízký krevní tlak - - - You find a normal blood pressure - Tension normale - Давление нормальное - La presión arterial es normal - Wyczuwasz normalne ciśnienie krwi - Blutdruck ist normal - A vérnyomás normális - La pressione sanguigna è normale - Pressão Arterial normal - Naměřil jsi normální krevní tlak - - - You find a high blood pressure - Tension haute - Давление высокое - La presión arterial es alta - Wyczuwasz wysokie ciśnienie krwi - Blutdruck ist hoch - A vérnyomás magas - La pressione sanguigna è alta - Pressão Arterial Alta - Naměřil jsi vysoký krevní tlak - - - You find no blood pressure - Pas de tension - Давления нет - No hay presión arterial - Nie wyczuwasz ciśnienia krwi - Patient hat keinen Blutdruck - Nem észlelhető vérnyomás - La pressione sanguigna è assente - Sem Pressão Arterial - Nenaměřil jsi žádný krevní tlak - - - You fail to find a blood pressure - Vous n'avez pas pu mesurer de tension - Артериальное давление не определяется - No puedes encontrar presión arterial - 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 - Você falhou em aferir a Pressão Arterial - Nedokázal jsi změřit krevní tlak - - - Low - Niedrig - Basso - Низкое - Faible - Niskie - Baja - Alacsony - Nízký - Baixa - - - Normal - Normal - Normale - Нормальное - Normale - Normalne - Normal - Normális - Normální - Normal - - - High - Hoch - Alto - Высокое - Haute - Wysokie - Alta - Magas - Vysoký - Alta - - - No Blood Pressure - Kein Blutdruck - Nessuna Pressione Sanguigna - Артериальное давление отсутствует - Aucune tension - Brak ciśnienia krwi - Sin presión arterial - Nincs vérnyomás - Žádný krevní tlak - Sem pressão arterial - - - Pulse - Пульс - Pouls - Pulso - Tętno - Puls - Pulzus - Polso - Pulso - Tep - - - 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 ... - Aferindo Pulso ... - Kontroluji srdeční tep ... - - - You checked %1 - Вы осмотрели раненого %1 - Vous examinez %1 - Examinando a %1 - Zbadałeś %1 - Kontrolliert %1 - A %1 ellenőrizve - Hai diagnosticato %1 - Você aferiu o paciente %1 - Zkontroloval jsi %1 - - - %1 checked Heart Rate: %2 - %1 kontrollierte Herzfrequenz: %2 - %1 Controllata Frequenza Cardiaca: %2 - %1 проверил пульс: %2 - %1 à vérifié le rythme cardiaque: %2 - %1 sprawdził tętno: %2 - %1 verificado el ritmo cardíaco: %2 - %1 ellenőrizte a szívverés-számot: %2 - %1 zkontroloval srdeční tep: %2 - %1 verificou a frequência cardíaca: %2 - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Nincs - - - Weak - Schwach - Lento - Слабый - Faible - Słabe - Débil - Gyenge - Slabý - Fraca - - - Normal - Normal - Normale - Нормальный - Normal - Normalne - Normal - Normális - Normální - Normal - - - Strong - Stark - Veloce - Сильный - Fort - Silne - Fuerte - Erős - Silný - Forte - - - You find a Heart Rate of %2 - Rythme cardiaque de %2 - Пульс %2 уд./мин. - El ritmo cardíaco es de %2 - Wyczuwasz tętno o wartości %2 - Herzfrequenz ist %2 - A szívverés-szám %2 - Il battito cardiaco è %2 - A Freqüência Cardíaca é de %2 - Nahmatal jsi srdeční tep u %2 - - - You find a weak Heart Rate - Rythme cardiaque faible - Пульс слабый - El ritmo cardíaco es débil - Wyczuwasz słabe tętno - Schwacher Puls - A szívverés-szám alacsony - Hai riscontrato un debole battito cardiaco - Freqüência Cardíaca baixa - Nahmatal jsi slabý srdeční tep - - - You find a strong Heart Rate - Rythme cardiaque élevé - Пульс учащенный - El ritmo cardíaco está acelerado - Wyczuwasz silne tętno - Starker Puls - A szívverés-szám magas - Hai riscontrato un forte battito cardiaco - Freqüência Cardíaca normal - Nahmatal jsi silný srdeční tep - - - You find a normal Heart Rate - Rythme cardiaque normal - Пульс в норме - El ritmo cardíaco es bueno - Wyczuwasz normalne tętno - Normaler Puls - A szívverés-szám normális - Hai riscontrato un normale battito cardiaco - Freqüência Cardíaca alta - Nahmatal jsi normální srdeční tep - - - You find no Heart Rate - Pas de rythme cardiaque - Пульс не прощупывается - No tiene ritmo cardíaco - Wyczuwasz brak tętna - Kein Puls gefunden - Nem észlelhető szívverés - Hai riscontrato una assenza di battito cardiaco - Sem Freqüência Cardíaca - Nenašel jsi - - - Response - Etat de Conscience - Реакция - Respuesta - Przytomność - Ansprechbarkeit - Reagálóképesség - Risposta - Reação - Odezva - - - You check response of patient - Vous vérifiez la réponse du patient - Вы проверяете реакцию раненого - Compruebas si el paciente reacciona - 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 - Aferindo se o paciente tem reação... - Zkontroloval jsi reakci pacienta - - - %1 is responsive - %1 реагирует на раздражители - %1 est conscient - %1 ha reaccionado - %1 jest przytomny - %1 ist anprechbar - %1 reakcióképes - %1 e' cosciente - %1 está respondendo - %1 odpovídá - - - %1 is not responsive - %1 не реагирует на раздражители - %1 est inconscient - %1 no reacciona - %1 jest nieprzytomny - %1 ist nicht ansprechbar - %1 nem reagál - %1 e' incosciente - %1 não está respondendo - %1 neodpovídá - - - You checked %1 - Вы осмотрели раненого %1 - Vous avez examiné %1 - Examinas a %1 - Zbadałeś %1 - Du hast versucht, %1 anzusprechen - Megnézted %1-t - Hai controllato %1 - Você aferiu o paciente %1 - Zkontroloval jsi %1 - - - Patient %1<br/>is %2.<br/>%3.<br/>%4 - Paziente %1<br/>è %2.<br/>%3.<br/>%4 - Пациент %1<br/>%2.<br/>%3.<br/>%4 - Patient %1<br/>ist %2.<br/>%3.<br/>%4 - Patient %1<br/>est %2.<br/>%3.<br/> - Pacjent %1<br/>jest %2.<br/>%3.<br/>%4 - Paciente %1<br/>is %2.<br/>%3.<br/>%4 - A páciens, %1,<br/>%2.<br/>%3.<br/>%4 - Pacient %1<br/>je %2.<br/>%3.<br/>%4 - Paciente %1<br/>é %2.<br/>%3.<br/>%4 - - - alive - Vivo - жив - lebendig - vivant - żywy - vivo - élő - naživu - vivo - - - dead - Morto - мёртв - muerto - tot - mort - martwy - halott - mrtev - morto - - - He's lost some blood - Ha perso sangue - Ha perdido un poco de sangre - Есть кровопотеря - Er hat etwas Blut verloren - Il a perdu du sang - Stracił trochę krwi - Valamennyi vért vesztett - Ztratil trochu krve - Ele perdeu um pouco de sangue - - - He's lost a lot of blood - Er hat viel Blut verloren - Sok vért vesztett - Stracił sporo krwi - Большая кровопотеря - Ha perdido mucha sangre - Il a perdu beaucoup de sang - Ztratil hodně krve - Ele perdeu muito sangue - Ha perso molto sangue - - - He hasn't lost blood - Non ha perso sangue - Нет кровопотери - Er hat kein Blut verloren - Il n'a pas perdu de sang - Nie stracił krwi - No ha perdido sangre - Nem vesztett vért - Neztratil žádnou krev - Ele não perdeu sangue - - - He is in pain - è affetto da dolore - Испытывает боль - Er hat Schmerzen - Il souffre - Odczuwa ból - Siente dolor - Fájdalmai vannak - Je v bolestech - Ele está com dor - - - He is not in pain - Non è affetto da dolore - Не испытывает боли - Er hat keine Schmerzen - Il ne souffre pas - Nie odczuwa bólu - No siente dolor - Nincsenek fájdalmai - Nemá žádné bolesti - Ele não está com dor - - - Bandaged - Bandé - Повязка наложена - Vendado - Zabandażowano - Bekötözve - Bendato - verbunden - Enfaixado - Obvázaný - - - You bandage %1 (%2) - Vous bandez %1 (%2) - Вы перевязали раненого %1 (%2) - Aplicas vendaje a %1 en %2 - Bandażujesz %1 (%2) - Bekötözöd %1-t (%2) - Stai bendando %1 (%2) - Du verbindest %1 (%2) - Você aplica bandagem no paciente %1 (%2) - Obvazuješ %1 (%2) - - - %1 is bandaging you - %1 vous bande - %1 перевязывает вас - %1 te está vendando - %1 bandażuje Ciebie - %1 bekötöz téged - %1 ti sta bendando - %1 verbindet dich - %1 está aplicando uma bandagem em você - %1 tě obvazuje - - - You start stitching injuries from %1 (%2) - Вы зашиваете ранения от %1 (%2) - Du nähst die Wunden von %1 (%2) - Vous suturez %1 (%2) - 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) - Você começa a suturar os ferimentos do %1 (%2) - Zašíváš rány %1 (%2) - - - Stitching - Наложение швов - Suturando - Nähen - Sutures - Szycie - Összevarrás - Suturando - Suturando... - Šití - - - You treat the airway of %1 - Вы интубируете раненого %1 - Estás intubando a %1 - Du behandelst die Atemwege von %1 - Vous traitez les voies respiratoires de %1 - Udrażniasz drogi oddechowe %1 - Kezeled %1 légútját - Controlli le vie respiratorie di %1 - Você entuba o %1 - Ošetřuješ dýchací cesty %1 - - - Airway - Дыхательные пути - Vías aéreas - Drogi oddechowe - Atemwege - Voies respiratoires - Légút - Vie respiratorie - Vias Aéreas - Dýchací cesty - - - %1 is treating your airway - %1 проводит вам интубацию - %1 traite vos voies respiratoires - %1 te está intubando - %1 udrażnia Twoje drogi oddechowe - %1 behandelt deine Atemwege - %1 kezeli a légútadat - %1 ti sta trattando le vie respiratorie - %1 está te entubando - %1 ošetřuje tvoje dýchací cesty - - - Drag - Ziehen - Arrastrar - Ciągnij - Táhnout - Тащить - Trainer - Húzás - Arrastar - Trascina - - - Carry - Tragen - Cargar - Nieś - Nést - Нести - Porter - Cipelés - Carregar - Trasporta - - - Release - Loslassen - Soltar - Połóż - Položit - Отпустить - Déposer - Elengedés - Soltar - Rrilascia - - - Load Patient Into - Patient Einladen - Cargar al paciente en - Załaduj pacjenta - Naložit pacianta do - Погрузить пациента в - Embarquer le patient - Sebesült berakása - Carregar Paciente Em - Carica paziente nel - - - Unload Patient - Patient Ausladen - Descargar al paciente - Wyładuj pacjenta - Vyložit pacienta - Выгрузить пациента - Débarquer le patient - Sebesült kihúzása - Descarregar Paciente - Scarica il paziente - - - Unload patient - Descargar al paciente - Выгрузить пациента - Patient Ausladen - Wyładuj pacjenta - Débarquer le patient - Sebesült kihúzása - Scarica il paziente - Descarregar Paciente - Vyložit pacienta - - - Load patient - Cargar al paciente en - Погрузить пациента - Patient Einladen - Załaduj pacjenta - Embarquer le patient - Sebesült berakása - Carica il paziente - Carregar Paciente Em - Naložit pacienta - - - Place body in bodybag - Colocar cuerpo en bolsa para cadáveres - Поместить тело в мешок для трупов - Körper in Leichesack verstauen - 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 - Colocar corpo dentro do saco para cadáver - Umístni tělo do pytle na mrtvoly - - - Placing body in bodybag - Colocando cuerpo en bolsa para cadáveres - Упаковка тела ... - Verstaue Körper in Leichensack - 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 - Colocando corpo dentro do saco para cadáver... - Umístňuji tělo do pytle na mrtvoly - - - %1 has bandaged patient - %1 has vendado al paciente - %1 перевязал пациента - %1 hat den Patienten verbunden - %1 założył bandaż - %1 a pansé le patient - %1 bekötözte a pácienst - %1 ha bendato il paziente - %1 aplicou bandagem no paciente - %1 již obvázal pacienta - - - %1 used %2 - %1 usó %2 - %1 benutzt %2 - %1 использовал %2 - %1 użył %2 - %1 utilise %2 - %1 használta a %2-t - %1 ha usato %2 - %1 usou %2 - %1 použil %2 - - - %1 has given an IV - %1 провёл переливание - %1 ha puesto una IV - %1 hat eine Infusion verabreicht - %1 podał IV - %1 a administré une IV - %1 infúziót adott - %1 ha somministrato una IV - %1 aplicou um intravenoso - %1 již aplikoval IV - - - %1 applied a tourniquet - %1 aplicado torniquete - %1 наложил жгут - %1 hat einen Tourniquet angelegt - %1 założył stazę - %1 a appliqué un garrot - %1 felhelyezett egy érszorítót - %1 ha applicato un laccio emostatico - %1 aplicou um torniquete - %1 použil škrtidlo - - - %1 performed CPR - %1 wykonał cykl RKO - %1 провел сердечно-легочную реанимацию - - - Heavily wounded - Schwer verwundet: - Ciężko ranny - Тяжелые ранения - Gravemente ferito - Gravemente herido - Lourdement blessé - Erősen sérült - Těžce zraněn - Gravemente ferido - - - Lightly wounded - Leicht verwundet: - Lekko ranny - Легкие ранения - Leggermente ferito - Levemente herido - Légèrement blessé - Enyhén sérült - Lehce zraněn - Levemente ferido - - - Very lightly wounded - Sehr leicht verwundet: - B. lekko ranny - Царапины - Ferito lievemente - Muy levemente herido - Très légèrement blessé - Nagyon enyhén sérült - Velmi lehce zraněn - Muito levemente ferido - - - Head - Kopf - Głowa - Головы - Testa - Cabeza - Tête - Fej - Hlava - Cabeça - - - Torso - Torso - Tors - Торса - Torso - Torso - Torse - Testtörzs - Trup - Torso - - - Left Arm - Linker Arm - Lewe ramię - Левой руки - Braccio sinistro - Brazo izquierdo - Bras gouche - Bal kar - Levá ruka - Braço Esquerdo - - - Right Arm - Rechter Arm - Prawe ramię - Правой руки - Braccio destro - Brazo derecho - Bras droit - Jobb kar - Pravá ruka - Braço Direito - - - Left Leg - Linkes Bein - Lewa noga - Левой ноги - Gamba sinistra - Pierna izquierda - Jambe gauche - Bal láb - Levá noha - Perna Esquerda - - - Right Leg - Rechtes Bein - Prawa noga - Правой ноги - Gamba destra - Pierna derecha - Jambe droite - Jobb láb - Pravá noha - Perna Direita - - - Bandaging removes bloodstains - Bandagieren entfernt Blutflecken - Bandażowanie usuwa ślady krwi - Obvázání odstraňuje skvrny od krve - El vendaje elimina las manchas de sangre - Bandagem remove manchas de sangue - A kötözés eltávolítja a vérfoltokat - Перевязка убирает пятна крови - - - Pain is only temporarily suppressed - Schmerzen werden nur vorübergehend unterdrückt - Ból jest tymczasowo zwalczany - Bolest je potlačena pouze dočasně - El dolor se suprime solo temporalmente - Dor é suprimida somente temporáriamente - A fájdalom csak ideiglenesen csökken - Боль приглушается только временно - - - Pain Effect Type - Schmerzeffekt-Typ - Rodzaj efektu bólu - Визуальный эффект боли - Pain Effect Type - Tipo de efecto de dolor - Type d'effet de douleur - Fájdalom-effekt típusa - Tipo do efeito de dor - Typ bolesti - efekt - - - Colour Flashing - Farbblinken - Pulsujące kolory - Пульсирующий свет - Colore lampeggiante - Parpadeo de color - Flash de couleur - Színvillódzás - Flash de cor - Blikající barva - - - Chromatic Aberration - Chromatische Aberration - Aberracja chromatyczna - Хроматическая аберрация - Aberrazione cromatica - Aberración cromática - Aberration chromatique - Kromatikus aberráció - Chromatická aberace - Aberração Cromática - - - Style of menu (Medical) - Styl menu medycznego - Style de menu (Médical) - Menü-Stil (Medical) - Вид меню (медицина) - Tipo de menú (Medico) - Styl menu (Zdravotní) - Estilo do menu (Médico) - Menü stílusa (Orvosi) - Stile del menù (medico) - - - Select the type of menu you prefer; default 3d selections or radial. - Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne - Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale - Wähle den Menü-Stil: Standard 3D-Selektion oder kreisförmig. - Выберите тип меню: стандартный вариант (3D) или радиальный - Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. - Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. - Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. - Zvolte typ menu: základní 3D výběr nebo kruhový - Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. - - - Selections (3d) - Pozycje (3D) - sélections (3D) - 3D-Selektion - Стандартный (3D) - Selecciones (3d) - Seleção (3d) - Választékok (3D) - 3D výběr - Selezione (3D) - - - Radial - Radialne - Radiale - Kreisförmig - Радиальный - Radial - Radial - Kerek - Kruhový - Radiale - - - Scrape - Kratzer - Scorticatura - Ссадина - Eraflure - Draśnięcie - Arañazo - Horzsolás - Raspão - Odřenina - - - Minor Scrape - Kleiner Kratzer - Minima Scorticatura - Малая ссадина - Petite éraflure - Pomniejsze draśnięcie - Arañazo menor - Kis horzsolás - Raspão leve - Malá odřenina - - - Medium Scrape - Mittlerer Kratzer - Media Scorticatura - Средняя ссадина - Moyenne éraflure - Średnie draśnięcie - Arañazo medio - Közepes horzsolás - Raspão médio - Středně velká odřenina - - - Large Scrape - Großer Kratzer - Alta Scorticatura - Большая ссадина - Grande éraflure - Duże draśnięcie - Arañazo severo - Nagy horzsolás - Raspão grave - Velká odřenina - - - Avulsion - Avulsion - Avulsione - Рваная рана - Avulsion - Rana płatowa - Avulsión - Leszakadás - Avulsão - Avulze - - - Minor Avulsion - Kleine Avulsion - Minima Avulsione - Малая рваная рана - Petite avulsion - Pomniejsza rana płatowa - Avulsión menor - Kis leszakadás - Avulsão leve - Malá avulze - - - Medium Avulsion - Mittlere Avulsion - Media Avulsione - Средняя рваная рана - Moyenne avulsion - Średnia rana płatowa - Avulsión media - Közepes leszakadás - Avulsão média - Střední avulze - - - Large Avulsion - Große Avulsion - Alta Avulsione - Большая рваная рана - Grande avulsion - Duża rana płatowa - Avulsión severa - Nagy leszakadás - Avulsão grave - Velká avulze - - - Bruise - Prellung - Contusione - Ушиб - Hématome - Stłuczenie - Contusión - Zúzódás - Contusão - Modřina - - - Minor Bruise - Kleine Prellung - Minima Contusione - Малый ушиб - Petit hématome - Pomniejsze stłuczenie - Contusión menor - Kis zúzódás - Contusão leve - Malá modřina - - - Medium Bruise - Mittlere Prellung - Media Contusione - Средний ушиб - Hématome moyen - Średnie stłuczenie - Contusión media - Közepes zúzódás - Contusão média - Středně velká modřina - - - Large Bruise - Große Prellung - Alta Contusione - Большой ушиб - Hématome important - Duże stłuczenie - Contusión severa - Nagy zúzódás - Contusão grave - Velká modřina - - - Crushed tissue - Quetschverletzung - Tessuto Schiacciato - Компресионная травма - Tissu écrasé - Zgniecienie tkanek miękkich - Tejido triturado - Zúzott szövet - Tecido esmagado - Zhmoždění měkkých tkání - - - Minor crushed tissue - Kleine Quetschverletzung - Minimo Tessuto Schiacciato - Малая компрессионная травма - Tissu écrasé léger - Pomniejsze zgniecienie tkanek miękkich - Tejido triturado menor - Kis zúzott szövet - Tecido esmagado leve - Malé zhmoždění měkkých tkání - - - Medium crushed tissue - Mittlere Quetschverletzung - Medio Tessuto Schiacciato - Средняя компрессионная травма - Tissu écrasé moyen - Średnie zgniecienie tkanek miękkich - Tejido triturado medio - Közepes zúzott szövet - Tecido esmagado médio - Střední zhmoždění měkkých tkání - - - Large crushed tissue - Große Quetschverletzung - Alto Tessuto Schiacciato - Большая компрессионная травма - Tissu écrasé large - Duże zgniecienie tkanek miękkich - Tejido triturado severo - Nagy zúzött szövet - Tecido esmagado grave - Velké zhmoždění měkkých tkání - - - Cut - Schnittwunde - Taglio - Резаная рана - Coupure - Rana cięta - Corte - Vágás - Corte - Řezná rána - - - Small Cut - Kleine Schnittwunde - Piccolo Taglio - Малая резаная рана - Pomniejsza rana cięta - Corte menor - Kis vágás - Petite coupure - Corte leve - Malá řezná rána - - - Medium Cut - Mittlere Schnittwunde - Medio Taglio - Средняя резаная рана - Średnia rana cięta - Corte mediano - Közepes vágás - Moyenne coupure - Corte médio - Střední řezná rána - - - Large Cut - Große Schnittwunde - Grande Taglio - Большая резаная рана - Duża rana cięta - Corte severo - Nagy vágás - Large coupure - Corte grave - Velká řezná rána - - - Tear - Riss - Strappo - Рваная рана - Rozerwanie skóry - Déchirure - Desgarro - Szakadás - Ruptura - Tržná rána - - - Small Tear - Kleiner Riss - Piccolo Strappo - Малая рваная рана - Pomniejsze rozerwanie skóry - Petite Déchirure - Desgarro menor - Kis szakadás - Ruptura leve - Malá tržná rána - - - Medium Tear - Mittlerer Riss - Medio Strappo - Средняя рваная рана - Średnie rozerwanie skóry - Desgarro medio - Közepes szakadás - Moyenne déchirure - Ruptura média - Střední tržná rána - - - Large Tear - Großer Riss - Grande Strappo - Большая рваная рана - Duże rozerwanie skóry - Desgarro severo - Nagy szakadás - Large déchirure - Ruptura grave - Velká tržná rána - - - Velocity Wound - Ballistisches Trauma - Velocità Ferita - Огнестрельная рана - Rana postrzałowa - Blessure de vélocité - Herida de bala - Lőtt seb - Ferimento por projétil de arma de fogo - Střelné poranění - - - Smal Velocity Wound - Kleines Ballistisches Trauma - Lenta Velocità Ferita - Малая огнестрельная рана - Pomniejsza rana postrzałowa - Herida de bala menor - Kis lőtt seb - Petite blessure de vélocité - Ferimento leve por projétil de arma de fogo - Malé střelné poranění - - - Medium Velocity Wound - Mittleres Ballistisches Trauma - Media Velocità Ferita - Средняя огнестрельная рана - Średnia rana postrzałowa - Herida de bala media - Közepes lőtt seb - Moyenne blessure de vélocité - Ferimento médio por projétil de arma de fogo - Střední střelné poranění - - - Large Velocity Wound - Großes Ballistisches Trauma - Alta Velocità Ferita - Большая огнестрельная рана - Duża rana postrzałowa - Herida de bala severa - Nagy lőtt seb - Large blessure de vélocité - Ferimento grave por projétil de arma de fogo - Velké střelné poranění - - - Puncture Wound - Stichwunde - Puntura Ferita - Колотая рана - Rana kłuta - Blessure de perforation - Herida punzante - Szúrt seb - Ferimento por perfuração - Bodná rána - - - Minor Puncture Wound - Kleine Stichwunde - Piccola Puntura Ferita - Малая колотая рана - Pomniejsza rana kłuta - Herida punzante menor - Kis szúrt seb - Légère blessure de perforation - Ferimento leve por perfuração - Malá bodná rána - - - Medium Puncture Wound - Mittlere Stichwunde - Media Puntura Ferita - Средняя колотая рана - Średnia rana kłuta - Herida punzante media - Közepes szúrt seb - Moyenne blessure de perforation - Ferimento médio por perfuração - Střední bodná rána - - - Large Puncture Wound - Große Stichwunde - Grande Puntura Ferita - Большая колотая рана - Duża rana kłuta - Herida punzante severa - Nagy szúrt seb - Large blessure de perforation - Ferimento grave por perfuração - Velká bodná rána - - - Broken Femur - Gebrochener Oberschenkelknochen - Femore Rotto - Перелом - Zkłamana kość udowa - Fémur cassé - Femur roto - Törött combcsont - Fêmur quebrado - Zlomená stehenní kost - - - Treating ... - Behandeln ... - Ellátás ... - Opatrywanie ran ... - Traitement ... - Лечение ... - Tratando ... - Tratando... - Ošetřuji ... - Curando ... - - - Removing Tourniquet ... - Tourniquet entfernen ... - Zdejmowanie stazy ... - Quitando torniquete ... - Retire le tourniquet ... - Removendo torniquete... - Érszorító eltávolítása ... - Sundavám škrtidlo ... - Снятие жгута ... - Togliendo il laccio emostatico ... - - - ACE Medical - ACE: медицина - ACE Opcje medyczne - Médico ACE - ACE-Medicsystem - ACE Zdravotnické - ACE Médico - ACE Orvosi Rendszer - - - Medical Settings [ACE] - Настройки медицины [ACE] - Ustawienia medyczne - Ajustes médicos [ACE] - Medizinische Einstellungen [ACE] - Lékařské nastavení [ACE] - Ajustes médicos [ACE] - Orvosi beállítások [ACE] - - - Medical Level - Сложность медицины - Poziom medyczny - Nivel médico - Medizinisches Level - Úroveň medického - Nível médico - Orvosi szint - - - What is the medical simulation level? - Каков уровень сложности медицинской системы? - Jaki jest poziom symulacji medycznej? - ¿Cuál es el nivel de simulación médica? - Wie hoch soll das medizinische Simulationslevel sein? - Jaká je úroveň lékařské simulace? - Qual o nível de simulação médica? - Milyen komplex legyen az orvosi szimuláció? - - - Basic - Базовый - Podstawowy - Básico - Standard - Základní - Básica - Alap - - - Advanced - Усложненный - Zaawansowany - Avanzado - Erweitert - Pokročilé - Avançada - Fejlett - - - Medics setting - Настройки медиков - Poziom medyków - Configuración médica - Medizinische Einstellungen - Úroveň zdravotníků - Configuração médica - Orvosok beállítása - - - What is the level of detail prefered for medics? - Каков уровень подробностей для медиков? - Jaki jest poziom detali medycznych wyświetlanych dla medyków? - ¿Cuál es el nivel de detalle preferido para los médicos? - Jaká úroveň detailů je preferována pro zdravotníky? - Qual o nível de detalhe preferido para os médicos? - Mi a javasolt részletesség orvosok számára? - - - Disable medics - Отключить медиков - Wyłącz medyków - Desactivar médicos - Sanitäter deaktivieren - Zakázat zdravotníky - Desativar médicos - Orvosok letiltása - - - Enable Litter - Включить мусор - Aktywuj odpadki - Activar restos médicos - Abfälle aktivieren - Povolit odpadky - Ativar lixo médico - Szemét engedélyezése - - - Enable litter being created upon treatment - Включить появление мусора после лечения - Twórz odpadki medyczne podczas leczenia - Activar los restos médicos que se crean en el tratamiento - Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde - Vytváří odpad zdravotnického materiálu pří léčení - Ativar lixo ser criado após tratamento - Engedélyezi a szemét keletkezését ellátáskor - - - Life time of litter objects - Время удаления мусора - Długość życia odpadków - Tiempo de vida de los restos médicos - Dauer des angezeigten Abfalls - Životnost pro odpadky - Tempo de vida dos objetos do lixo - Szemétobjektumok élettartama - - - How long should litter objects stay? In seconds. -1 is forever. - Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время. - Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. - ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. - Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. - Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. - Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. - Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. - - - Enable Screams - Включить крики - Aktywuj wrzaski - Activar gritos - Schreie aktivieren - Povolit křik - Ativar gritos - Kiáltások engedélyezése - - - Enable screaming by injuried units - Включить крики раненных бойцов - Aktywuj wrzeszczenie z bólu przez ranne jednostki - Activar gritos para unidades heridas - Aktiviere Schreie bei verletzten Einheiten - Povolit křičení zraněných jednotek - Ativa gritos para unidades feridas - Engedélyezi a sérült egységek kiáltásait - - - Player Damage - Урон игроку - Próg obrażeń graczy - Daño de jugador - Spielerschaden - Poškození hráče - Dano do jogador - Játékos sérülés - - - What is the damage a player can take before being killed? - Какой уровень урона необходим, чтобы убить игрока? - Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? - ¿Cuál es el daño que un jugador puede sufrir antes de morir? - Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? - Jaké poškození může hráč dostat než bude zabit? - Qal é o dano que um jogador pode sofrer antes de morrer? - Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? - - - AI Damage - Урон ботам - Próg obrażeń AI - Daño IA - KI-Schaden - Poškození AI - Dano da IA - AI sérülés - - - What is the damage an AI can take before being killed? - Какой уровень урона необходим, чтобы убить бота? - Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? - ¿Cuál es el daño que la IA puede sufrir antes de morir? - Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? - Jaké poškození může AI dostat než bude zabito? - Qual é o dano que uma IA pode sofrer antes de morrer? - Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? - - - AI Unconsciousness - Потеря сознания ботами - Nieprzytomność AI - Inconsciencia IA - KI-Bewusstlosigkeit - Bezvědomí AI - Inconsciência da IA - AI eszméletlenség - - - Allow AI to go unconscious - Позволить ботам терять сознание - Czy AI może być nieprzytomne od odniesionych obrażeń? - Permita a la IA caer inconsciente - KI kann bewusstlos werden - Umožňuje AI upadnout do bezvědomí - Permite IA ficar inconsciente - Engedélyezi az AI eszméletének elvesztését - - - Remote Controlled AI - IA controlada remotamente - IA controlada remotamente - Zdalnie sterowane AI - Vzdáleně ovládané AI - Távvezérelt AI - Зевса считать ботом - - - Treat remote controlled units as AI not players? - ¿Tratar unidades remotamente controladas como IA? - Tratar unidades remotamente controladas como IA? - Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? - Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? - Távvezérelt egységek AI-ként, nem játékosként való kezelése? - Обрабатывать дистанционно управляемых юнитов как ботов, а не как игроков? - - - Prevent instant death - Откл. мгновенную смерть - Wył. natychmiast. śmierć - Prevenir muerte instantánea - Verhindere direkten Tod - Zabránit okamžité smrti - Previnir morte instantânea - Azonnali halál kiiktatása - - - Have a unit move to unconscious instead of death - Бойцы теряют сознание вместо того, чтобы умирать - Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń - Mover una unidad a inconsciente en vez de a muerta - Lässt eine Einheit bewusstlos werden anstatt zu sterben - Jednotka upadne do bezvědomí namísto smrti - Fazer a unidade ficar inconsciente invés de morrer - Egy egység kerüljön eszméletlen állapotba a halott helyett - - - Bleeding coefficient - Коэффициент кровопотери - Mnożnik krwawienia - Coeficiente de sangrado - Verblutungsmultiplikator - Koeficient krvácení - Coeficiente de sangramento - Vérzési koefficiens - - - Coefficient to modify the bleeding speed - Коэффициент, изменяющий скорость потери крови - Mnożnik modyfikujący prędkość wykrwawiania się - Coeficiente para modificar la velocidad de sangrado - Multiplikator um die Verblutungsgeschwindigkeit zu verändern - Koeficient rychlosti krvácení - Coeficiente para modificar a velocidade do sangramento - Egy szorzó a vérzés sebességének szabályozására - - - Pain coefficient - Коэффициент боли - Mnożnik bólu - Coeficiente de dolor - Schmerzmultiplikator - Koeficient bolesti - Coeficiente de dor - Fájdalmi koefficiens - - - Coefficient to modify the pain intensity - Коэффициент, изменяющий уровень боли - Mnożnik modyfikujący intensywność bólu - Coeficiente para modificar la intensidad del dolor - Multiplikator um den Schmerzintensität zu verändern - Koeficient intenzity bolesti - Coeficiente para modificar a instensidade de dor - Egy szorzó a fájdalom erősségének szabályozására - - - Sync status - Синхронизация статуса - Synchronizuj status - Sincronizador estado - Status synchronisieren - Synchronizovat status - Sincronizar estado - Szinkronizációs állapot - - - Keep unit status synced. Recommended on. - Синхронизировать статус юнитов. Рекомендуется включить. - Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. - Mantener el estado de la unidad sincronizado. Recomendado activado - Status der Einheit synchron halten. Sollte aktiviert bleiben. - Udržuje status jednotky synchronizovaný. Doporučeno zapnout. - Mater o estado da unidade sincronizado. Recomendado ativado. - Egységállapotok szinkronizálása. Javasolt a bekapcsolása. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten dostarcza system medyczny dla graczy oraz AI. - Proporciona un sistema médico para jugadores e IA. - Aktiviert ein medizinisches System für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona o sistema médico para os jogadores e a IA. - Egy orvosi rendszert ad játékosok és AI-k számára. - - - Advanced Medical Settings [ACE] - Настройки усложненной медицины [ACE] - Zaawansowane ustawienia medyczne - Ajustes médicos avanzados [ACE] - Erweiterte medizinische Einstellungen [ACE] - Pokročilé zdravotnické nastavení [ACE] - Ajustes médicos avançados [ACE] - Fejlett orvosi beállítások [ACE] - - - Enabled for - Включено для - Aktywne dla - Hablitado para - Aktiviert für - Povoleno pro - Habilitado para - Engedélyezve... - - - Select what units the advanced medical system will be enabled for - Выберите, на кого будет распространяться усложненная система медицины - Wybierz dla kogo zaawansowany system medyczny będzie aktywny - Seleccione para qué unidades será habilitado el sistema médico avanzado - Wähle aus welche Einheiten das erweiterte medizinische System haben - Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen - Selecione quais unidades o sistema médico avançado será habilitado - Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer - - - Players only - Игроков - Tylko dla graczy - Solo jugadores - Nur Spieler - Pouze hráči - Somente jogadores - Csak játékosok - - - Players and AI - Игроков и ботов - Gracze oraz AI - Jugadors e IA - Spieler und KI - Hráči a AI - Jogadores e IA - Játékosok és AI - - - Enable Advanced wounds - Усложненные раны - Akt. zaawansowane rany - Activa heridas avanzadas - Aktiviere erweiterte Wunden - Povolit pokročilé zranění - Ativar ferimentos avançados - Komplex sebek engedélyezése - - - Allow reopening of bandaged wounds? - Будут ли открываться уже перевязанные раны? - Pozwól na otwieranie się zabandażowanych ran? - Permitir la reapertura de las heridas vendadas? - Erlaube das Öffnen von bandagierten Wunden? - Umožnit znovuotevření zavázané rány? - Permitr reabertura de ferimentos enfaixados? - Visszanyílhatnak a bekötözött sebek? - - - Vehicle Crashes - Аварии транспорта - Obrażenia od kolizji - Accidentes de vehículos - Fahrzeugunfälle - Poškození z kolize - Batidas de veículos - Járműbalesetek - - - Do units take damage from a vehicle crash? - Должны ли юниты получать повреждения от аварий на транспорте? - Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? - ¿Las unidades reciben daño de un accidente de tráfico? - Bekommen Einheiten von Fahrzeugunfällen Schaden? - Dostane jednotka poškození při autonehodě? - As unidades recebem dano de uma batida de veículo? - Sérülnek-e az egységek autós ütközés során? - - - Allow PAK - Использование аптечки - Ust. apteczek osobistych - Permitir EPA - Erlaube Erste-Hilfe-Set - Povolit osobní lékárničky - Permitir Kit de Primeiros Socorros - Elsősegélycsomag engedélyezése - - - Who can use the PAK for full heal? - Кому разрешено выполнять полное лечение с помощью аптечки? - Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? - ¿Quién puede utilizar el EPA para una cura completa? - Wer kann das Erste-Hilfe-Set für eine Endheilung verwenden? - Kdo může použít osobní lékárničku pro plné vyléčení? - Quem pode usar o KPS para cura completa? - Ki használhatja az elsősegélycsomagot teljes gyógyításra? - - - Anyone - Кем угодно - Wszyscy - Nadie - Jeder - Kdokoliv - Qualquer um - Akárki - - - Medics only - Только медиками - Tylko medycy - Solo médicos - Nur Sanitäter - Pouze zdravotník - Somente médicos - Csak orvosok - - - Doctors only - Только врачами - Tylko doktorzy - Solo doctores - Nur Ärzte - Pouze doktor - Somente doutores - Csak doktorok - - - Remove PAK on use - Удалять аптечки после использования - Usuń apteczkę po użyciu - Eliminar EPA después del uso - Entferne Erste-Hilfe-Set bei Verwendung - Odebrat osobní lékárničku po použití - Remover o KPS depois do uso - Elsősegélycsomag eltávolítása használatkor - - - Should PAK be removed on usage? - Нужно ли удалять аптечки после использования? - Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? - El EPA será eliminado después de usarlo - Sollen Erste-Hilfe-Sets bei Verwendung entfernt werden? - Má se osobní lékárnička odstranit po použití? - Deve o KPS ser removido depois do uso? - Eltávolítódjon az elsősegélycsomag használatkor? - - - Locations PAK - Место использования аптечки - Ogr. apteczek osobistych - Ubicacions del EPA - Orte für Erste-Hilfe-Set - Lokace osobní lékárničky - Localizações do KPS - Elsősegélycsomag helyek - - - Where can the Personal Aid Kit be used? - Где может использоваться аптечка? - Gdzie można korzystać z apteczek osobistych? - ¿Dónde se puede utilizar el equipo de primeros auxilios? - Wo kann das Erste-Hilfe-Set verwendet werden? - Kde může být použita osobní lékárnička? - Onde o kit de primeiros socorros pode ser utilizado? - Hol lehet az elsősegélycsomagot használni? - - - Condition PAK - Podmínka osobní lékárničky - Condición EPA - Warunek apteczek - Elsősegélycsomag állapot - Condição do KPS - Условие использования аптечки - - - When can the Personal Aid Kit be used? - Kde může být použita osobní lékárnička? - ¿Cuando se puede utilizar el Equipo de primeros auxilios? - Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? - Mikor lehet az elsősegélycsomagot használni? - Onde o kit de primeiros socorros pode ser utilizado? - Когда может использоваться аптечка? - - - Anywhere - Где угодно - Wszędzie - Donde sea - Überall - Kdekoliv - Qualquer lugar - Akárhol - - - Medical vehicles - В медицинском транспорте - Pojazdy medyczne - Vehiculos médicos - Medizinische Fahrzeuge - Zdravotnická vozidla - Veículos médcos - Orvosi járművek - - - Medical facility - В госпитале - Budynki medyczne - Centro médico - Medizinische Einrichtungen - Zdravotnické zařízení - Instalação médica - Orvosi létesítmény - - - Vehicles & facility - В транспорте и госпитале - Pojazdy i budynki medyczne - Vehículos y centros - Fahrzeuge & Einrichtungen - Vozidla a zařízení - Veículos e instalações - Járművek & létesítmény - - - Allow Surgical kit (Adv) - Хирургический набор может использоваться (усл.) - Ust. zestawu chirurg. - Permitir equipo quirúrgico (Avanzado) - Erlaube Operationskasten - Povolit chirurgickou soupravu (Pokr.) - Permite kit cirúrgico (avançado) - Sebészkészlet (Fejlett) engedélyezése - - - Who can use the surgical kit? - Кто может использовать хирургический набор? - Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? - ¿Quién puede utilizar el equipo quirúrgico? - Wer kann den Operationskasten verwenden? - Kdo může použít chirurgickou soupravu? - Quem pode usar o kit cirúrgico? - Ki használhatja a sebészkészletet? - - - Remove Surgical kit (Adv) - Удалять хирургический набор (усл.) - Usuń zest. chir. po użyciu - Eliminar equipo quirúrgico (Avanzado) - Enrtferne Operationskasten (erweitert) - Odebrat chirurgickou soupravu (Pokr.) - Remover kit cirúrgico (avançado) - Sebészkészlet (Fejlett) eltávolítása - - - Should Surgical kit be removed on usage? - Нужно ли удалять хирургический набор после использования? - Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? - Eliminar el equipo quirúrgico después del uso - Entferne Operationskästen bei Verwendung? - Odebrat chirurgickou soupravu po použití? - Deve o kit cirúrgico ser removido após o uso? - Eltávolítódjon a sebészkészlet használatkor? - - - Locations Surgical kit (Adv) - Место использования хирургического набора (усл.) - Ogr. zestawu chirurg. - Ubicaciones del equipo quirúrgico (Avanzado) - Orte für Operationskästen (erweitert) - Lokace chirurgické soupravy (Pokr.) - Localizações do kit cirúrgico (avançado) - Sebészkészlet (Fejlett) helyei - - - Where can the Surgical kit be used? - Где может использоваться хирургический набор? - Gdzie można korzystać z zestawu chirurgicznego? - Dónde se puede utilizar el equipo quirúrgico - Wo kann der Operationskasten verwendet werden? - Kde může být použita chirurgická souprava? - Onde o kit cirúrgico pode ser utilizado? - Hol lehet a sebészkészletet használni? - - - Condition Surgical kit (Adv) - Podmínka chirurgické soupravy (Pokr.) - Condición de equipo quirúrgico (Av) - Warunek zestawu chir. - Sebészkészlet állapot - Condição do Kit Cirúrgico (Avançado) - Условие использования хирургического набора (усл.) - - - When can the Surgical kit be used? - Kde může být použita chirurgická souprava? - ¿Cuando se puede utilizar el equipo quirúrgico? - Po spełnieniu jakich warunków zestaw chirurgiczny może zostać zastosowany na pacjencie? - Mikor lehet a sebészkészletet használni? - Onde o kit cirúrgico pode ser utilizado? - Когда может использоваться хирургический набор? - - - Bloodstains - Blutflecken - Plamy krwi - Skvrny od krve - Manchas de sangre - Manchas de sangue - Vérfoltok - Удалять пятна крови - - - Bandaging removes bloodstains - Bandagieren entfernt Blutflecken - Bandażowanie usuwa ślady krwi - Obvázání odstraňuje skvrny od krve - El vendaje elimina las manchas de sangre - Bandagem remove manchas de sangue - Kötözés eltávolítja a vérfoltokat - Перевязка удаляет пятна крови - - - Pain suppression - Schmerzunterdrückung - Zwalczanie bólu - Potlačení bolesti - Supresión del dolor - Supressão de dor - Fájdalomcsillapítás - Приглушение боли - - - Pain is only temporarily suppressed, not removed - Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt - Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale - Bolest je potlačena, ale jen dočastně - El dolor se suprime solo temporalmente, no se elimina. - Dor é somente temporáriamente suprimida, não removida - A fájdalom csak ideiglenesen csökken, nem távolítódik el - Боль приглушается только временно - - - Configure the treatment settings from ACE Medical - Настройка лечения в медицинской системе ACE - Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE - Configure las opciones de tratamiento del ACE Médico - Behandlungseinstellungen vom ACE-Medical konfigurieren - Konfigurace nastavení léčby ze zdravotnické systému ACE - Configure as opções de tratamento do ACE Médico - Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből - - - Revive Settings [ACE] - Настройки реанимации [ACE] - Ustawienia wskrzeszania - Sistema de resucitado [ACE] - Wiederbelebungseinstellungen [ACE] - Nastavení oživení [ACE] - Sistema de reavivamento [ACE] - Újraélesztés beállításai [ACE] - - - Enable Revive - Включить реанимацию - Aktywuj wskrzeszanie - Habilitar resucitado - Erlaube Wiederbelebung - Povolit oživení - Habilitar reavivamento - Újraélesztés engedélyezése - - - Enable a basic revive system - Включить базовую систему реанимации - Aktywuj podstawowy system wskrzeszania - Habilitar un sistema básico de resucitado - Aktiviere Standard-Wiederbelebungssystem - Povolit základní systém oživení - Habilitar um sistema básico de reavivamento - Egy alap újraélesztési rendszer engedélyezése - - - Max Revive time - Макс. время реанимации - Maks. czas agonii - Tiempo máximo de resucitado - Maximale Wiederbelebungszeit - Maximální čas pro oživení - Tempo máximo de reavivamento - Maximum újraélesztési idő - - - Max amount of seconds a unit can spend in revive state - Максимальное время в секундах, в течение которого бойца можно реанимировать - Maksymalna długość agonii w sekundach (czas na wskrzeszenie) - Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación - Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann - Maximální doba v agónii v sekundách - Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento - Maximum másodperc, amit egy egység újraélesztési állapotban tölthet - - - Max Revive lives - Макс. кол-во жизней - Maks. ilość wskrzeszeń - Vidas máximas de resucitado - Maximale Leben bei Wiederbelebung - Maximální počet oživení - Vidas máximas do reavivado - Maximum újraélesztési lehetőségek - - - Max amount of lives a unit. 0 or -1 is disabled. - Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. - Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. - Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. - Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. - Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. - Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. - Egy egység maximum "életei". 0 vagy -1 letiltja. - - - Provides a medical system for both players and AI. - Включает медицинскую систему как для игроков, так и для ботов. - Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. - Proporciona un sistema médico para jugadores e IA. - Aktiviert das Medicsystem für Spieler und KI. - Poskytuje zdravotní systém pro hráče a AI. - Proporciona um sistema médico para jogadores e IA. - Egy orvosi rendszert ad játékosok és AI-k számára. - - - Set Medic Class [ACE] - Сделать медиком [ACE] - Ustaw klasę medyka - Establecer case médica [ACE] - Setze Sanitäterklassen [ACE] - Určit třídu medika [ACE] - Definir classe médica [ACE] - Orvos beállítása [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Lista - - - List of unit names that will be classified as medic, separated by commas. - Список имен юнитов, которые будут считаться медиками (через запятую). - Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. - Lista de los nombres de las unidades que se clasifican como médico, separados por comas. - Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. - Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. - Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. - Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. - - - Is Medic - Является медиком - Klasa medyczna - Es médico - Ist Sanitäter - Je zdravotník - É médico - Orvos-e - - - This module allows you to assign the medic class to selected units. - Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. - Dieses Modul legt fest welche Einheit ein Sanitäter ist. - Tento modul určuje, která jednotka je zdravotník. - Este módulo determina qual unidade é um paramédico. - Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. - Этот модуль позволяет назначить класс медика выбранным юнитам. - - - None - Нет - Żadna - Nada - Keine - Žádný - Nada - Nincs - - - Regular medic - Обычный медик - Zwykły medyk - Médico regular - Normaler Sanitäter - Řadový zdravotník - Médico regular - Hagyományos orvos - - - Doctor (Only Advanced Medics) - Врач (только усложн.) - Doktor (tylko zaawansowani medycy) - Doctor (Solo medicina avanzada) - Arzt (nur erweiterte Sanitäter) - Doktor (Pouze pokročilý zdravotníci) - Doutor (Somente médicos avançados) - Doktor (csak fejlett orvosok) - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten przypisuje klasę medyka ACE do jednostek. - Asigna la clase médico ACE a una unidad - Weise die ACE-Sanitäterklasse einer Einheit zu - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica do ACE a uma unidade - Az ACE orvosi jelző hozzárendelése egy egységhez - - - Set Medical Vehicle [ACE] - Сделать мед. транспортом [ACE] - Ustaw pojazd medyczny - Establecer vehículos médicos [ACE] - Setze medizinisches Fahrzeug [ACE] - Určit zdravotnické vozidlo [ACE] - Definir veículo médico [ACE] - Orvosi jármű beállítása [ACE] - - - List - Список - Lista - Lista - Liste - Seznam - Lista - Lista - - - List of vehicles that will be classified as medical vehicle, separated by commas. - Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). - Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. - Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. - Liste von Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. - Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. - Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. - Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. - - - Is Medical Vehicle - Является медицинским транспортом - Jest pojazdem med. - Es vehículo médico - Ist medizinisches Fahrzeug - Je zdravotnické vozidlo - É um veículo médico - Orvosi jármű-e - - - Whatever or not the objects in the list will be a medical vehicle. - Будут ли объекты в списке считаться медицинским транспортом. - Czy pojazdy z tej listy są pojazdami medycznymi? - Cualquiera de la lista o fuera de ella será un vehículo médico. - Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. - Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. - Se serão ou não os objetos dessa lista veículos médicos. - A listában lévő objektumok orvosi járművek-e, vagy sem. - - - Assigns the ACE medic class to a unit - Задает юниту класс медика - Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. - Asigna la clase médico ACE a una unidad - Weist die ACE-Sanitäterklasse einer Einheit zu - Přiřadí ACE třídu zdravotníka do jednotky - Atribui a classe médica ACE a uma unidade - Hozzárendeli az ACE orvosi jelzőt egy egységhez - - - Set Medical Facility [ACE] - Сделать госпиталем [ACE] - Ustaw budynek medyczny - Establece el centro médico [ACE] - Setze medizinische Einrichtung [ACE] - Určit zdravotnické zařízení [ACE] - Definir instalação médica [ACE] - Orvosi létesítmény beállítása [ACE] - - - Is Medical Facility - Является госпиталем - Jest budynkiem med. - Es centro médico - Ist eine medizinische Einrichtung - Je zdravotnické zařízení - É uma instalação médica - Orvosi létesítmény-e - - - Registers an object as a medical facility - Определяет объект в качестве госпиталя - Przypisuje danemu obiektowi status budynku medycznego - Registra un objeto como un centro médico - Definiert ein Objekt als medizinische Einrichtung - Registruje objekt jako zdravotnické zařízení - Registra um objeto como instalacão médica - Egy objektum orvosi létesítményként való regisztrálása - - - Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. - Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. - Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. - Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. - Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. - Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. - Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. - Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. - - - [ACE] Medical Supply Crate (Basic) - [ACE] Ящик с медикаментами (базовая медицина) - [ACE] Skrzynka z zapasami medycznymi (podstawowa) - [ACE] Caja de suministros médicos (Básica) - [ACE] Medizinische Kiste (standard) - [ACE] Zdravotnické zásoby (základní) - [ACE] Caixa com suprimentos médicos - [ACE] Orvosi láda (Alap) - - - [ACE] Medical Supply Crate (Advanced) - [ACE] Ящик с медикаментами (усложн. медицина) - [ACE] Skrzynka z zapasami medycznymi (zaawansowana) - [ACE] Caja de suministros médicos (Avanzada) - [ACE] Medizinische Kiste (erweitert) - [ACE] Zdravotnické zásoby (pokročilé) - [ACE] Caixa com suprimentos médicos (Avançados) - [ACE] Orvosi láda (Fejlett) - - - Anytime - Kdykoli - Siempre - Zawsze - Akármikor - Sempre - В любое время - - - Stable - Stabilní - Estable - Po stabilizacji - Stabil - Estável - После стабилизации - - - Medical - Zdravotní - Médical - Sanitäter - Medico - Medyczne - Médico - Медик - Médico - Orvosi - - - Distance to %1 has become to far for treatment - %1 odszedł zbyt daleko, nie można kontynuować leczenia - Расстояние до %1 стало слишком большим для лечения - - + + + + + INJURIES + VERLETZUNGEN + LESIONI + ТРАВМЫ + BLESSURES + OBRAŻENIA + HERIDAS + SÉRÜLÉSEK + ZRANĚNÍ + FERIMENTOS + + + No injuries on this bodypart ... + Körperteil nicht verletzt ... + Non ci sono lesioni in questa parte del corpo ... + Данная часть тела не повреждена ... + Aucune blessures sur cette partie du corps ... + Brak obrażeń na tej części ciała ... + Sin heridas en esta parte del cuerpo ... + Ezen a testrészen nincs sérülés ... + Žádné zranění na této části těla ... + Nenhum ferimento nesta parte do corpo... + + + Litter Simulation Detail + Detale zużytych medykamentów + Detalle de simulación de basura + Количество мусора от медицины + Dettagli Simulazione Rifiuti + Niveau de simulation des détritus + Abfall-Detaillevel + Hulladékszimuláció részletessége + Detalhe da simulação de sujeira + Počet zobrazených předmětů po použití zdravotnického materiálu + + + Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting. + Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta. + Detalle simulación de basura establece el número de artículos de basura que se generan a nivel local en el cliente. Las cantidades excesivas en áreas locales podrían causar caída de rendimiento, así que esto es un ajuste de cliente únicamente. + Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. + Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client. + Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement. + Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. + A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás. + O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente. + Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi. + + + Inject Atropine + Atropin injizieren + Inyectar Atropina + Aplikovat atropin + Wstrzyknij atropinę + Injecter de l'atropine + Ввести атропин + Atropin beadása + Inietta atropina + Injetar Atropina + + + Inject Epinephrine + Epinephrine injizieren + Inyectar Epinefrina + Wstrzyknij adrenalinę + Aplikovat adrenalin + Injecter de l'épinéphrine + Ввести адреналин + Epinefrin beadása + Injetar Epinefrina + Inietta epinefrina + + + Inject Morphine + Morphin injizieren + Inyectar Morfina + Wstrzyknij morfinę + Aplikovat morfin + Ввести морфин + Injecter de la morphine + Morfium beadása + Injetar Morfina + Inietta morfina + + + Transfuse Blood + Bluttransfusion + Transfundir sangre + Przetocz krew + Transfúze krve + Перелить кровь + Transfusion + Infúzió (vér) + Transfundir Sangue + Trasfusione di sangue + + + Transfuse Plasma + Plasmatransfusion + Transfundir plasma + Transfúze plazmy + Przetocz osocze + Transfuser du Plasma + Перелить плазму + Infúzió (vérplazma) + Trasfusione di Plasma + Transfundir Plasma + + + Transfuse Saline + Salzlösungstransfusion + Transfundir salino + Transfúze fyziologický roztoku + Przetocz sól fizjologiczną + Transfuser de la solution saline + Перелить физраствор + Infúzió (sós víz) + Trasfusione di soluzione salina + Transfundir Soro + + + Apply Tourniquet + Tourniquet anwenden + Aplicar torniquete + Aplikovat škrtidlo + Załóż stazę + Appliquer un garrot + Наложить жгут + Applica laccio emostatico + Aplicar Torniquete + Érszorító alkalmazása + + + Bandage + Verbinden + Venda + Bandażuj + Obvázat + Pansement + Benda + Kötözés + Atadura + Перевязать + + + Bandage Head + Kopf verbinden + Vendar la cabeza + Bandażuj głowę + Obvázat hlavu + Перевязать голову + Pansement Tête + Fej kötözése + Atar Cabeça + Benda la testa + + + Bandage Torso + Torso verbinden + Vendar el torso + Bandażuj tors + Obvázat hruď + Перевязать торс + Pansement Torse + Testtörzs kötözése + Atar Tronco + Benda il torso + + + Bandage Left Arm + Linken Arm verbinden + Vendar el brazo izquierdo + Bandażuj lewe ramię + Obvázat levou ruku + Перевязать левую руку + Pansement Bras Gauche + Bal kar kötözése + Atar Braço Esquerdo + Benda il braccio sinistro + + + Bandage Right Arm + Rechten Arm verbinden + Vendar el brazo derecho + Bandażuj prawe ramię + Obvázat pravou ruku + Перевязать правую руку + Pansement Bras Droit + Jobb kar kötözése + Atar Braço Direito + Benda il braccio destro + + + Bandage Left Leg + Linkes Bein verbinden + Vendar la pierna izquierda + Bandażuj lewą nogę + Obvázat levou nohu + Перевязать левую ногу + Pansement Jambe Gauche + Bal láb kötözése + Atar Perna Esquerda + Benda la gamba sinistra + + + Bandage Right Leg + Rechtes Bein verbinden + Vendar la pierna derecha + Bandażuj prawą nogę + Obvázat pravou nohu + Перевязать правую ногу + Pansement Jambe Droite + Jobb láb kötözése + Atar Perna Direita + Benda la gamba destra + + + Injecting Morphine ... + Morphin injizieren ... + Inyectando Morfina ... + Wstrzykiwanie morfiny ... + Aplikuji morfin ... + Введение морфина ... + Injection de Morphine... + Morfium beadása ... + Injetando Morfina ... + Inietto la morfina ... + + + Injecting Epinephrine ... + Epinephrin injizieren ... + Inyectando Epinefrina ... + Wstrzykiwanie adrenaliny ... + Aplikuji adrenalin ... + Введение адреналина ... + Injection d'Adrénaline ... + Epinefrin beadása ... + Injetando Epinefrina ... + Inietto l'epinefrina ... + + + Injecting Atropine ... + Atropin injizieren ... + Inyectando Atropina ... + Aplikuji atropin ... + Wstrzykiwanie atropiny ... + Injection d'Atropine ... + Введение атропина ... + Atropin beadása ... + Inietto l'atropina ... + Injetando Atropina + + + Transfusing Blood ... + Bluttransfusion ... + Transfusión de sangre ... + Przetaczanie krwi ... + Probíhá transfúze krve ... + Переливание крови ... + Transfusion Sanguine ... + Infúzió vérrel ... + Transfundindo Sangue ... + Effettuo la trasfusione di sangue ... + + + Transfusing Saline ... + Salzlösungtransfusion ... + Transfusión de salino ... + Probíha transfúze fyziologický roztoku ... + Przetaczanie soli fizjologicznej ... + Transfusion de saline ... + Переливание физраствора ... + Infúzió sós vizzel ... + Effettuo la rasfusione di soluzione salina + Transfundindo Soro... + + + Transfusing Plasma ... + Plasmatransfusion ... + Transfusión de plasma ... + Probíha transfúze plazmy ... + Przetaczanie osocza ... + Transfusion de Plasma ... + Переливание плазмы ... + Infúzió vérplazmával ... + Effettu la trasfusione di plasma ... + Transfundindo Plasma... + + + Bandaging ... + Verbinden ... + Vendando ... + Bandażowanie ... + Obvazuji ... + Pansement ... + Sto applicando la benda ... + Bekötözés ... + Atando ... + Перевязывание ... + + + Applying Tourniquet ... + Setze Tourniquet an ... + Aplicando torniquete ... + Aplikuji škrtidlo + Zakładanie stazy ... + Mise en place du Garrot ... + Наложение жгута ... + Érszorító felhelyezése ... + Sto applicando il laccio emostatico ... + Applicando Torniquete + + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + Orvosi + + + Field Dressing + Verbandpäckchen + Compresa de campaña + Бинтовая повязка + Obinadlo + Bandaż jałowy + Bandage rapide + Zárókötszer + Bendaggio rapido + Curativo de Campo + + + Packing Bandage + Mullbinde + Vendaje compresivo + Компресионный пакет + Bandaż uciskowy + Nyomókötszer + Bendaggio compressivo + Bandage gauze + Bandagem de Compressão + Tlakový obvaz + + + Elastic Bandage + Elastischer Verband + Vendaje elástico + Давящая повязка + Elastické obinadlo + Bandaż elastyczny + Pansement élastique + Rögzitő kötszer + Bendaggio elastico + Bandagem Elástica + + + QuikClot + QuikClot + QuikClot + QuikClot + Opatrunek QuikClot + QuikClot + Hémostatique + QuikClot + QuikClot (polvere emostatica) + QuikClot + + + Check Pulse + Puls überprüfen + Comprobar pulso + Проверить пульс + Zkontrolovat pulz + Sprawdź tętno + Vérifier le pouls + Pulzus ellenőrzése + Controlla il polso + Checar Pulso + + + Check Blood Pressure + Blutdruck überprüfen + Comprobar presión arterial + Проверить давление + Zkontrolovat krevní tlak + Sprawdź ciśnienie krwi + Vérification de la tension + Vérnyomás megmérése + Controlla pressionsa sanguigna + Chegar Pressão Sanguínea + + + Triage Card + Triagekarte + Tarjeta de clasificación + Медкарта + Karta segregacyjna + Štítek + Carte de triage + Orvosi lap + Triage Card + Cartão de Triagem + + + No entries on this triage card. + Keine Einträge auf der Triagekarte + Nessuna voce sulla Triage Card + Нет записей. + Aucune entrée sur cette carte de triage + Brak wpisów w tej karcie segregacyjnej. + Sin entradas en esta tarjeta de clasificación. + Ez az orvosi lap nem tartalmaz bejegyzést. + Žádné záznamy na tomto štítku + Nenhuma entrada neste cartão de triagem + + + Tourniquet + Tourniquet + Torniquete + Жгут + Škrtidlo + Staza + Tourniquet + Érszorító + Laccio emostatico + Torniquete + + + Remove Tourniquet + Tourniquet entfernen + Quitar torniquete + Снять жгут + Sundat škrtidlo + Zdejmij stazę + Enlever le Tourniquet + Érszorító leszedése + Rimuovi laccio emostatico + Remover Torniquete + + + Diagnose + Diagnose + Diagnosi + Диагностика + Diagnostiquer + Diagnoza + Diagnosticar + Diagnosztizálás + Diagnóza + Diagnosticar + + + Diagnosing ... + Diagnostizieren ... + Diagnosi in corso... + Диагностика ... + Diagnostic en cours + Diagnozowanie ... + Diagnosticando ... + Diagnózis folyamatban... + Diagnostika ... + Diagnosticando... + + + CPR + HLW + RCP + Сердечно-лёгочная реанимация + RPC + RKO + RCP + Újraélesztés + KPR + SBV + + + Performing CPR ... + HLW durchführen ... + Eseguendo RCP... + Сердечно-лёгочная реанимация ... + RPC en cours + Przeprowadzanie RKO ... + Realizando RCP ... + Újraélesztés folyamatban... + Provádím KPR ... + Realizando o SBV... + + + Give Blood IV (1000ml) + Bluttransfusion IV (1000ml) + Dar Sangre IV (1000ml) + Перелить пакет крови (1000 мл) + Podaj krew IV (1000ml) + Administrer du sang en IV (1000ml) + Podat krev. transfúzi (1000ml) + Vér adása intravénásan (1000ml) + Effettua trasfusione sangue IV (1000ml) + Administrar Sangue IV (1000ml) + + + Give Blood IV (500ml) + Bluttransfusion IV (500ml) + Dar Sangre IV (500ml) + Перелить пакет крови (500 мл) + Podaj krew IV (500ml) + Administrer du sang en IV (500ml) + Podat krev. transfúzi (500ml) + Vér adása intravénásan (500ml) + Effettua trasfusione sangue IV (500ml) + Administrar Sangue IV (500ml) + + + Give Blood IV (250ml) + Bluttransfusion IV (250ml) + Dar Sangre IV (250ml) + Перелить пакет крови (250 мл) + Podaj krew IV (250ml) + Administrer du sang en IV (250ml) + Podat krev. transfúzi (250ml) + Vér adása intravénásan (250ml) + Effettua trasfusione sangue IV (250ml) + Administrar Sangue IV (250ml) + + + Give Plasma IV (1000ml) + Plasmatransfusion IV (1000ml) + Dar Plasma IV (1000ml) + Перелить пакет плазмы (1000 мл) + Podaj osocze IV (1000ml) + Administrer du plasma en IV (1000ml) + Podat plazmu (1000ml) + Vérplazma adása intravénásan (1000ml) + Effettua trasfusione plasma IV (1000ml) + Administrar Plasma IV (1000ml) + + + Give Plasma IV (500ml) + Plasmatransfusion IV (500ml) + Dar Plasma IV (500ml) + Перелить пакет плазмы (500 мл) + Podaj osocze IV (500ml) + Administrer du plasma en IV (500ml) + Podat plazmu (500ml) + Vérplazma adása intravénásan (500ml) + Effettua trasfusione plasma IV (500ml) + Administrar Plasma IV (500ml) + + + Give Plasma IV (250ml) + Plasmatransfusion IV (250ml) + Dar Plasma IV (250ml) + Перелить пакет плазмы (250 мл) + Podaj osocze IV (250ml) + Administrer du plasma en IV (250ml) + Podat plazmu (250ml) + Vérplazma adása intravénásan (250ml) + Effettua trasfusione plasma IV (250ml) + Administrar Plasma IV (250ml) + + + Give Saline IV (1000ml) + Kochsalzlösung IV (1000ml) + Dar Salino IV (1000ml) + Перелить пакет физраствора (1000 мл) + Podaj sól fizjologiczną IV (1000ml) + 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) + Administrar Soro IV (1000ml) + + + Give Saline IV (500ml) + Kochsalzlösung IV (500ml) + Dar Salino IV (500ml) + Перелить пакет физраствора (500 мл) + Podaj sól fizjologiczną IV (500ml) + 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) + Administrar Soro IV (500ml) + + + Give Saline IV (250ml) + Kochsalzlösung IV (250ml) + Dar Salino IV (250ml) + Перелить пакет физраствора (250 мл) + Podaj sól fizjologiczną IV (250ml) + 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) + Administrar Soro IV (250ml) + + + Minor + Gering + Menor + Несрочная помощь + Normalny + Mineur + Minimální + Enyhe + Minore + Leve + + + Delayed + Retrasado + Срочная помощь + Opóźniony + Différé + Verzögert + Odložitelný + Késleltetett + Differito + Atrasado + + + Immediate + Inmediato + Неотложная помощь + Natychmiastowy + Urgence Immédiate + Sofort + Okamžitý + Azonnali + Immediata + Imediato + + + Deceased + Fallecido + Труп + Nie żyje + Décédé + Verstorben + Mrtvý + Elhalálozott + Deceduto + Falecido + + + None + Ninguno + Отсутствует + Brak + Aucun + Keine + Nic + Semmi + Nessuna + Nenhum + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration normale + Normalny oddech + Normale Atmung + Dýchá normálně + Normális légzés + Respiro normale + Respiração normal + + + No breathing + Keine Atmung + Дыхание отсутствует + No respira + Aucune respiration + Brak oddechu + Nedýchá + Nincs légzés + Mancanza di respiro + Não respira + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée respiratoire + Trudności z oddychaniem + Schwere Atmung + Dýchá s obtížemi + Nehéz légzés + Difficoltà a respirare + Dificuldade para respirar + + + Almost no breathing + Fast keine Atmung + Дыхание очень слабое + Casi sin respiración + Respiration faible + Prawie brak oddechu + Skoro nedýchá + Alig van légzés + Respira a fatica + Quase não respira + + + Bleeding + Blutet + Кровотечение + Sangrando + Saignement + Krwawienie zewnętrzne + Krvácí + Vérzik + Sanguinando + Sangrando + + + In Pain + Hat Schmerzen + Испытывает боль + Con dolor + Ressent de la douleur + W bólu + V bolestech + Fájdalom alatt + Con dolore + Com dor + + + Lost a lot of Blood + Hat eine große Menge Blut verloren + Большая кровопотеря + Mucha sangre perdida + A perdu beaucoup de sang + Stracił dużo krwi + Ztratil hodně krve + Sok vért vesztett + Ha perso parecchio sangue + Perdeu muito sangue + + + Tourniquet [CAT] + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Tourniquet [CAT] + Staza [typ. CAT] + Škrtidlo [CAT] + Érszorító [CAT] + Laccio emostatico [CAT] + Torniquete [CAT] + + + Receiving IV [%1ml] + Erhalte IV [%1ml] + Reciviendo IV [%1ml] + Принимается переливание [%1 мл] + Otrzymywanie IV [pozostało %1ml] + Transfusion en IV [%1ml] + Přijímání transfúze [%1ml] + Infúzióra kötve [%1ml] + Ricevendo IV [%1ml] + Recebendo IV [%1ml] + + + Bandage (Basic) + Bandage (Standard) + Повязка (обычная) + Vendaje (Básico) + Bandage (Standard) + Bandaż (jałowy) + Obvaz (standartní) + Kötszer (Általános) + Bendaggio (base) + Bandagem(Básico) + + + Used to cover a wound + Для перевязки ран + Utilizado para cubrir una herida + Utilisé pour couvrir une blessure + Używany w celu przykrycia i ochrony miejsca zranienia. Najczęściej stosowany bandaż na otarcia i draśnięcia. + Verwendet um Wunden abzudecken + Sebesülések befedésére alkalmas + Usato per coprire una ferita + Usado para cobrir um ferimento + Slouží k překrytí poranění + + + A dressing, that is a particular material used to cover a wound, which is applied over the wound once bleeding has been stemmed. + Ein Verband, der aus einem besonderen Material besteht um die Wunde zu schützen, nachdem die Blutung gestoppt wurde. + Повязка, накладываемая поверх раны после остановки кровотечения. + Un apósito, material específico utilizado para cubrir una herida, se aplica sobre la herida una vez ha dejado de sangrar. + 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 apposita, utilizzata per coprire una ferita, la quale viene applicata su di essa una volta fermata l'emorragia. + Uma curativo, material específico para cobrir um ferimento que é aplicado assim que o sangramento é estancando. + Obvaz je vhodným způsobem upravený sterilní materiál, určený k překrytí rány, případně k fixaci poranění. + + + Packing Bandage + Mullbinde + Тампонирующая повязка + Vendaje compresivo + Bandage gauze + Bandaż (uciskowy) + Nyomókötszer + Bendaggio compressivo + Bandagem de Compressão + Tlakový obvaz + + + Used to pack medium to large wounds and stem the bleeding + Wird verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen + Для тампонирования ран среднего и большого размера и остановки кровотечения. + Se utiliza para vendar heridas medianas o grandes y detener el sangrado + Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies + Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia. Dobrze radzi sobie z tamowaniem ran płatowych oraz postrzałowych. + Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer + Usato su ferite medie o larghe per fermare emorragie. + Usado para o preenchimento de cavidades geradas por ferimentos médios e grandes e estancar o sangramento. + Používá se k zastavení středních až silnějších krvácení + + + A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries. + Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжёлых сочетанных ранениях возможно тампонирование раны. + Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos. + Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques + 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 coprire la ferita, fermare il sanguinamento e facilitarne la guarigione. Questa tecnica è opzionale su ferite multiple. + Ein Verband, um die Wunde abzudecken und die Wundheilung zu fördern. Wunden abdecken ist eine Option bei größeren Polytraumen + Uma bandagem usada para preencher o ferimento para estancar o sangramento e facilitar a cicatrização. Preenchimento de feridas é uma opção em ferimentos de politrauma grandes. + Tlakový obvaz se skládá se ze sterilní krycí vrstvy, na kterou je přiložena silná vrstva savého materiálu stlačující cévu v ráně a která je přitlačována k ráně a připevněna obinadlem. Slouží k zastavení silnějších krvácení. + + + Bandage (Elastic) + Bandage (Elastisch) + Повязка (давящая) + Vendaje (Elástico) + Bandage (Élastique) + Bandaż (elastyczny) + Obvaz (elastický) + Rögzító kötszer + Benda (elastica) + Bandagem (Elástica) + + + Bandage kit, Elastic + Elastische Binde (Kompressionsbinde) + Давящая повязка + Kit de vendaje (Elástico) + Bandage compressif élastique + Bandaż elastyczny służy do opatrywania ran ciętych oraz kłutych. Dobrze radzi sobie również ze zgniecieniami tkanek miękkich oraz rozerwaniami powierzchni skóry. + Rugalmas kötszercsomag, "rögzítő" + Kit di bendaggio, elastico + Kit de Bandagem, Elástica + Sada obvazů, Elastická + + + Allows an even compression and extra support to the injured area. + Ermöglicht eine gleichmäßige Kompression und zusätzliche Unterstützung für den verletzten Bereich. + Давящая повязка обеспечивает равномерное сжатие и дополнительную поддержку повреждённой области + Ce bandage peut être utilisé pour compresser la plaie afin de ralentir le saignement et assurer la tenue du bandage lors de mouvement. + 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 comprimere e aiutare la zone ferita. + Esta bandagem pode ser utilizada para comprimir o ferimento e diminuir o sangramento e garantir que o ferimento não abra em movimento. + Hodí se k fixačním účelům a to i v oblastech kloubů. + + + Tourniquet (CAT) + Tourniquet [CAT] + Жгут + Torniquete (CAT) + Tourniquet (CAT) + Staza (typ. CAT) + Škrtidlo (CAT) + Érszorító (CAT) + Laccio emostatico (CAT) + Torniquete (CAT) + + + Slows down blood loss when bleeding + Замедляет кровопотерю при кровотечении + Reduce la velocidad de pérdida de sangre + Ralentit le saignement + Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. + 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 + Reduz a velocidade da perda de sangue + Zpomaluje ztráty krve při krvácení + + + A constricting device used to compress venous and arterial circulation in effect inhibiting or slowing blood flow and therefore decreasing loss of blood. + Жгут используется для прижатия сосудов к костным выступам, которое приводит к остановке или значительному уменьшению кровотечения + Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre + Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. + 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. + A aparelho que comprime as artérias e veias para diminuir a perda de sangue. + Zařízení používané ke stlačení venózního a arteriálního oběhu. V důsledku dochází ke zpomalení toku krve a tedy i snížení ztrát krve. + + + Morphine autoinjector + Morphium-Autoinjektor + Морфин в пневмошприце + Morfina auto-inyectable + Auto-injecteur de Morphine + Autostrzykawka z morfiną + Autoinjektor morfin + Morfium autoinjektor + Autoiniettore di morfina + Auto-injetor de morfina + + + Used to combat moderate to severe pain experiences + Wird verwendet um moderate bis starke Schmärzen zu lindern. + Для снятия средних и сильных болевых ощущений + Usado para combatir los estados dolorosos de moderados a severos + Utilisé pour réduire les douleurs modérées à sévères. + Morfina. Ma silne działanie przeciwbólowe. Powoduje spowolnienie tętna oraz rozrzedzenie krwi, zwiększając tym samym ciśnienie tętnicze krwi. Działa przez ok. 15 minut. + Mérsékelttől erős fájdalomig, ellene alkalmazandó termék + Usato per combattere il dolore. + Usado para combater dores moderadas e severas + Slouží k tlumení středně těžkých a těžkých bolestí + + + An analgesic used to combat moderate to severe pain experiences. + Обезболивающее для снятия средних и сильных болевых ощущений. + Analgésico usado para combatir los estados dolorosos de moderados a severos. + Un analgésique puissant servant à réduire les douleurs modérées à sévères. + 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. + Um analgésico usado para combater dores moderadas e fortes. + Analgetikum slouží k tlumení středně těžkých a těžkých bolestí + + + Atropine autoinjector + Атропин в пневмошприце + Atropina auto-inyectable + Auto-injecteur d'Atropine + Autostrzykawka AtroPen + Atropin-Autoinjektor + Autoinjektor atropin + Atropin autoinjektor + Autoiniettore di atropina + Auto-injetor de Atropina + + + Used in NBC scenarios + Применяется для защиты от ОМП + Usado en escenarios NBQ + Utilisé en cas d'attaque CBRN + 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. + Usado em casos de ataque QBRN + Používá se v přítomnosti nervových plynů + + + A drug used by the Military in NBC scenarios. + Препарат, используемый в войсках для защиты от оружия массового поражения. + Medicamento usado por militares en escenarios NBQ + Médicament utilisé par l'armée en cas d'attaque CBRN + 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. + Uma droga usada por militares em casos de ataque QBRN. + Atropin slouží jako protijed na otravu organofosfátovými insekticidy (diazinon) a nervovými plyny. + + + Epinephrine autoinjector + Адреналин в пневмошприце + Epinefrina auto-inyectable + Auto-injecteur d'épinéphrine + Autostrzykawka EpiPen + Epiniphrin-Autoinjektor + Autoinjektor adrenalin + Epinefrin autoinjektor + Autoiniettore di epinefrina + Auto-injetor de epinefrina + + + Increase heart rate and counter effects given by allergic reactions + Стимулирует работу сердца и купирует аллергические реакции + Aumenta la frecuencia cardiaca y contraresta los efectos de las reacciones alérgicas + Augmente la fréquence cadiaque et annule les effets d'une réaction anaphylactique + Adrenalina. Przyśpiesza tętno oraz zwiększa ciśnienie krwi a także przeciwdziała efektom wywołanym przez reakcje alergiczne. + Steigert die Herzfrequenz und bekämpft Symptome von allergischen Reaktionen. + 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. + Aumenta a frequência cardíaca e combate efeitos causados por reações alérgicas + Zvyšuje srdeční frekvenci a chrání před alergickými reakcemi + + + 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. + Препарат, вызывающий симпатическую реакцию, приводящую к расширению бронхов, увеличению частоты сердечных сокращений и купированию аллергических реакций (анафилактического шока). Применяется при остановке сердца с уменьшенной вероятностью благоприятного исхода. + 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. + Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. + Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação. + Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal. + Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě. + + + Plasma IV (1000ml) + Плазма для в/в вливания (1000 мл) + Plasma IV (1000ml) + Plasma Sanguin IV (1000ml) + Osocze IV (1000ml) + Plasma IV (1000ml) + Vérplazma-infúzió (1000ml) + Plasma IV (1000ml) + Plasma IV (1000ml) + Krevní plazma (1000ml) + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + 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. + Volumenerweiterungsmittel (künstliches Blutvolumen) + Suplemento para expandir o volume sanguíneo. + Intravenózně podávaný doplněk k zvětšení objemu krve + + + A volume-expanding blood supplement. + Дополнительный препарат, применяемый при возмещении объема крови. + Suplemento para expandir el volumen sanguíneo. + 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. + Volumenerweiterungsmittel (künstliches Blutvolumen) + Suplemento para expandir o volume sanguíneo. + Intravenózně podávaný doplněk k zvětšení objemu krve + + + Plasma IV (500ml) + Плазма для в/в вливания (500 мл) + Plasma IV (500ml) + Plasma sanguin IV (500ml) + Osocze IV (500ml) + Plasma IV (500ml) + Vérplazma-infúzió (500ml) + Plasma IV (500ml) + Plasma IV (500ml) + Krevní plazma (500ml) + + + Plasma IV (250ml) + Плазма для в/в вливания (250 мл) + Plasma IV (250ml) + Plasma sanguin (250ml) + Osocze IV (250ml) + Plasma IV (250ml) + Vérplazma-infúzió (250ml) + Plasma IV (250ml) + Plasma IV (250ml) + Krevní plazma (250ml) + + + Blood IV (1000ml) + Кровь для переливания (1000 мл) + Sangre IV (1000ml) + Cullot sanguin IV (1000ml) + Krew IV (1000ml) + Blut IV (1000ml) + Vér-infúzió (1000ml) + Sangue IV (1000ml) + Sangue IV (1000ml) + Krevní transfúze (1000ml) + + + Blood IV, for restoring a patients blood (keep cold) + Пакет крови для возмещения объёма потерянной крови (хранить в холодильнике) + Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío) + 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) + Blut IV, Bluthaushalt des Patienten wiederherstellen. (Kühl halten) + Sangue intravenoso, para restaurar o volume sanguinio do paciente.(Manter frio) + Krevní transfuze pro doplnění pacientovi krve (skladujte v chladu) + + + 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. + Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC + O Negative Blutinfusion wird nur in seltenen Fällen verwendet, um den Bluthaushalt des Patienten zu ergänzen. Wird in der Regel wärend der Transportphase durchgeführt. + Sangue O- , utilizado em casos raros para rapidamente repor o sangue. Uso habitual ocorre durante o transporte ou em estações de tratamento. + Nullás vércsoportú, Rh-negatív vér-infúzió, melyet kritikus és ritka helyzetekben vérutánpótlásra használnak, jellemzően az orvosi ellátás szállítási fázisa közben. + 0 Rh negativní krev se používá v vzácných případech k doplnění pacientovy hladiny krve, obvykle při převozu zraněné osoby do nemocnice. + + + Blood IV (500ml) + Кровь для переливания (500 мл) + Sangre IV (500ml) + Cullot sanguin IV (500ml) + Krew IV (500ml) + Blut IV (500ml) + Vér-infúzió (500ml) + Sangue IV (500ml) + Sangue IV (500ml) + Krevní transfúze (500ml) + + + Blood IV (250ml) + Кровь для переливания (250 мл) + Sangre IV (250ml) + Cullot sanguin IV (250ml) + Krew IV (250ml) + Blut IV (250ml) + Vér-infúzió (250ml) + Samgue IV (250ml) + Sangue IV (250ml) + Krevní transfúze (250ml) + + + Saline IV (1000ml) + Физраствор для в/в вливания (1000 мл) + Salino IV (1000ml) + Solution saline 0.9% IV (1000ml) + Sól fizjologiczna IV (1000ml) + Kochsalzlösung (1000ml) + 0,9%-os sósvíz-infúzió (1000ml) + Soluzione salina IV (1000ml) + Soro IV (1000ml) + Fyziologický roztok (1000ml) + + + Saline IV, for restoring a patients blood + Пакет физраствора для возмещения объёма потерянной крови + Solución salina intravenosa, para restaurar el volumen sanguíneo + Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle + 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). + 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. + Kochsalzlösung, ein medizinisches Volumenersatzmittel + Solução Salina Intravenosa 0.9%, para restaurar o volume de sangue temporariamente. + Fyziologický roztok se aplikuje intravenózně a slouží k obnově pacientovi krve + + + A medical volume-replenishing agent introduced into the blood system through an IV infusion. + Пакет физиологического раствора для возмещения объёма потерянной крови путем внутривенного вливания + Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa. + Un remplacant 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. + Ein medizinisches Volumenersatzmittel, dass durch einen intravenösen Zugang in den Blutkreislauf verabreicht wird. + Uma reposição temporaria para restaurar a pressão arterial perdida por perda de sangue. + Fyziologický roztok se využívá nejčastěji jako infuze při dehydrataci organismu. + + + Saline IV (500ml) + Физраствор для в/в вливания (500 мл) + Salino IV (500ml) + Solution saline 0.9% IV (500ml) + Sól fizjologiczna IV (500ml) + Kochsalzlösung (500ml) + 0,9%-os sósvíz-infúzió (500ml) + Soluzione salina IV (500ml) + Soro IV (1000ml) + Fyziologický roztok (500ml) + + + Saline IV (250ml) + Физраствор для в/в вливания (250 мл) + Salino IV (250ml) + Solution saline 0.9% IV (250ml) + Sól fizjologiczna IV (250ml) + Kochsalzlösung (250ml) + 0,9%-os sósvíz-infúzió (250ml) + Soluzione salina IV (250ml) + Soro IV (1000ml) + Fyziologický roztok (250ml) + + + Basic Field Dressing (QuikClot) + Первичный перевязочный пакет (QuikClot) + Vendaje básico (QuickClot) + Bandage basique (Hémostatique) + Opatrunek QuikClot ACS + Verbandpäckchen(Gerinnungsmittel) + Általános zárókötszer (QuikClot) + Bendaggio emostatico (QuikClot) + Bandagem básica (Coagulante) + Hemostatický obvaz (QuikClot) + + + QuikClot bandage + Гемостатический пакет QuikClot + Vendaje QuikClot + Bandage hémostatique + Proszkowy opatrunek adsorbcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. + Bandage mit Gerinnungsmittel + QuikClot kötszer + Bendaggio emostatico (QuikClot) + Bandagem com agente coagulante + Hemostatický obvaz (QuikClot) + + + Hemostatic bandage with coagulant that stops bleeding. + Медицинский коагулянт для экстренной остановки кровотечения + Un bandage aidant à coaguler les saignements mineurs à moyens. + Proszkowy opatrunek adsorpcyjny przeznaczony do tamowania zagrażających życiu krwawień średniej i dużej intensywności. + 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 + Bandagem Hemostática com coagulante que controla hemorragia médias e grandes com risco de vida. + Hemostatický obvaz určený k zástavě krvácení + + + Personal Aid Kit + Аптечка + Trousse de premiers soins + Equipo de primeros auxilios + Apteczka osobista + Persönliches Erste-Hilfe-Set + Elsősegélycsomag + Pronto soccorso personale + Kit De Primeiros Socorros Pessoal + Osobní lékárnička + + + Includes various treatment kit needed for stitching or advanced treatment + Содержит различные материалы и инструменты для зашивания ран и оказания специальной медпомощи. + Incluye material médico para tratamientos avanzados + Inclue du matériel medical pour les traitements avancés, tel les points de suture. + 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. + Inclui vários tratamentos materiais para custura e tratamento avançado + Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných + + + Personal Aid Kit for in field stitching or advanced treatment + W znacznym stopniu poprawia stan pacjenta + Полевая аптчека для продвинутого лечения и зашивания ран + Persönliches Erste-Hilfe-Set zum ambulanten Nähen und fortgeschrittener Behandlung. + Trousse de premiers soins pour coudre sur le terrain et traitements avancés. + Equipo de primeros auxilios para sutura de campaña o tratamientos avanzados + Elsősegélycsomag, terepen való sebvarráshoz és haladó ellátáshoz + Kit de primeiros socorros para sutura ou tratamentos avançados + Osobní lékárnička obsahuje zdravotnický materiál umožňující šití a pokročilejší ošetřování raněných v poli + Pronto soccorso personale da campo per mettersi i punti o per trattamenti avanzati. + + + Use Personal Aid Kit + Erste-Hilfe-Set benutzen + Использовать аптечку + Utiliser la Trousse de premier soins + Użyj apteczki osobistej + Usar equipo de primeros auxilios + Elsősegélycsomag használata + Usar o kit de primeiros socorros + Použít osobní lékárničku + Usa il pronto soccorso personale + + + Surgical Kit + Trousse chirurgicale + Хирургический набор + Kit quirúrgico + Zestaw do szycia ran + Operationsset + Sebészeti készlet + Kit chirurgico + Kit Cirurgico + Chirurgická sada + + + Surgical Kit for in field advanced medical treatment + Trousse chirurgicale pour le traitement sur le terrain + Набор для хирургической помощи в полевых условиях + Kit quirúrgico para el tratamiento avanzado en el campo de batalla + 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. + Kit Cirurgico para uso de tratamento médico avançado em campo + Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli + + + Surgical Kit for in field advanced medical treatment + Набор для хирургической помощи в полевых условиях + Kit quirúrgico para el tratamiento avanzado en el campo de batalla + Zestaw pozwalający na zszywanie ran w polu + 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. + Kit Cirurgico para uso de tratamento médico avançado em campo. + Chirurgická sada určená k pokročilejším zdravotnickým zákrokům v poli + + + Use Surgical Kit + Operationsset benutzen + Usa kit chirurgico + Использовать хирургический набор + Utiliser la trousse chirugicale + Zszyj rany + Usar equipo quirúrgico + Sebészeti készlet használata + Použít chirurgickou sadu + Usar kit cirúrgico + + + Bodybag + Housse mortuaire + Мешок для трупов + Bolsa para cadáveres + Worek na zwłoki + Leichensack + Hullazsák + Sacca per corpi + Saco para cadáver + Pytel na mrtvoly + + + A bodybag for dead bodies + Housse de transport des corps + Мешок для упаковки трупов + Una bolsa para cadáveres + Worek do pakowania zwłok + Ein Leichensack für Tote + Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. + Um saco para corpos mortos + Pytel na mrtvoly + + + A bodybag for dead bodies + Housse de transport des corps + Мешок для упаковки трупов + Una bolsa para cadáveres + Worek do pakowania zwłok + Ein Leichensack für Tote + Egy hullazsák a holttestek számára + Una sacca nera per trasportare cadaveri. + Um saco para corpos mortos. + Pytel na mrtvoly + + + Blood Pressure + Tension artérielle + Артериальное давление + Presión arterial + Ciśnienie krwi + Blutdruck + Vérnyomás + Pressione sanguigna + Pressão Arterial + Krevní tlak + + + 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.. + Aferindo Pressão Arterial... + Kontroluji krevní tlak ... + + + %1 checked Blood Pressure: %2 + %1 kontrollierte Blutdruck: %2 + %1 controllata pressione sanguigna: %2 + %1 проверил артериальное давление: %2 + %1 à vérifié la tension: %2 + %1 sprawdził ciśnienie krwi: %2 + %1 verificada la presión arterial: %2 + %1 ellenőrizte a vérnyomást: %2 + %1 zkontrolován krevní tlak: %2 + %1 verificou pressão arterial: %2 + + + You checked %1 + Vous diagnostiquez %1 + Вы осмотрели раненого %1 + Examinando a %1 + Zbadałeś %1 + Kontrolliert %1 + A %1 ellenőrizve + Hai diagnosticato %1 + Você verificou o paciente %1 + Zkontroloval jsi %1 + + + You find a blood pressure of %2/%3 + Vous avez trouvé une tension de %2/%3 + Артериальное давление %2/%3 + La Presión Arterial es %2/%3 + A vérnyomás %2/%3 + Hai riscontrato una pressione di %2/%3 + Wyczuwasz ciśnienie krwi o wartości %2/%3 + Der Blutdruck liegt bei %2/%3 + A Pressão Arterial é de %2/%3 + Našel jsi krevní tlak u %2/%3 + + + You find a low blood pressure + Tension basse + Давление низкое + La presión arterial es baja + Wyczuwasz niskie ciśnienie krwi + Blutdruck ist niedrig + A vérnyomás alacsony + La pressione sanguigna è bassa + Pressão Arterial baixa + Naměřil jsi nízký krevní tlak + + + You find a normal blood pressure + Tension normale + Давление нормальное + La presión arterial es normal + Wyczuwasz normalne ciśnienie krwi + Blutdruck ist normal + A vérnyomás normális + La pressione sanguigna è normale + Pressão Arterial normal + Naměřil jsi normální krevní tlak + + + You find a high blood pressure + Tension haute + Давление высокое + La presión arterial es alta + Wyczuwasz wysokie ciśnienie krwi + Blutdruck ist hoch + A vérnyomás magas + La pressione sanguigna è alta + Pressão Arterial Alta + Naměřil jsi vysoký krevní tlak + + + You find no blood pressure + Pas de tension + Давления нет + No hay presión arterial + Nie wyczuwasz ciśnienia krwi + Patient hat keinen Blutdruck + Nem észlelhető vérnyomás + La pressione sanguigna è assente + Sem Pressão Arterial + Nenaměřil jsi žádný krevní tlak + + + You fail to find a blood pressure + Vous n'avez pas pu mesurer de tension + Артериальное давление не определяется + No puedes encontrar presión arterial + 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 + Você falhou em aferir a Pressão Arterial + Nedokázal jsi změřit krevní tlak + + + Low + Niedrig + Basso + Низкое + Faible + Niskie + Baja + Alacsony + Nízký + Baixa + + + Normal + Normal + Normale + Нормальное + Normale + Normalne + Normal + Normális + Normální + Normal + + + High + Hoch + Alto + Высокое + Haute + Wysokie + Alta + Magas + Vysoký + Alta + + + No Blood Pressure + Kein Blutdruck + Nessuna Pressione Sanguigna + Артериальное давление отсутствует + Aucune tension + Brak ciśnienia krwi + Sin presión arterial + Nincs vérnyomás + Žádný krevní tlak + Sem pressão arterial + + + Pulse + Пульс + Pouls + Pulso + Tętno + Puls + Pulzus + Polso + Pulso + Tep + + + 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 ... + Aferindo Pulso ... + Kontroluji srdeční tep ... + + + You checked %1 + Вы осмотрели раненого %1 + Vous examinez %1 + Examinando a %1 + Zbadałeś %1 + Kontrolliert %1 + A %1 ellenőrizve + Hai diagnosticato %1 + Você aferiu o paciente %1 + Zkontroloval jsi %1 + + + %1 checked Heart Rate: %2 + %1 kontrollierte Herzfrequenz: %2 + %1 Controllata Frequenza Cardiaca: %2 + %1 проверил пульс: %2 + %1 à vérifié le rythme cardiaque: %2 + %1 sprawdził tętno: %2 + %1 verificado el ritmo cardíaco: %2 + %1 ellenőrizte a szívverés-számot: %2 + %1 zkontroloval srdeční tep: %2 + %1 verificou a frequência cardíaca: %2 + + + None + Нет + Żadna + Nada + Keine + Žádný + Nada + Nincs + + + Weak + Schwach + Lento + Слабый + Faible + Słabe + Débil + Gyenge + Slabý + Fraca + + + Normal + Normal + Normale + Нормальный + Normal + Normalne + Normal + Normális + Normální + Normal + + + Strong + Stark + Veloce + Сильный + Fort + Silne + Fuerte + Erős + Silný + Forte + + + You find a Heart Rate of %2 + Rythme cardiaque de %2 + Пульс %2 уд./мин. + El ritmo cardíaco es de %2 + Wyczuwasz tętno o wartości %2 + Herzfrequenz ist %2 + A szívverés-szám %2 + Il battito cardiaco è %2 + A Freqüência Cardíaca é de %2 + Nahmatal jsi srdeční tep u %2 + + + You find a weak Heart Rate + Rythme cardiaque faible + Пульс слабый + El ritmo cardíaco es débil + Wyczuwasz słabe tętno + Schwacher Puls + A szívverés-szám alacsony + Hai riscontrato un debole battito cardiaco + Freqüência Cardíaca baixa + Nahmatal jsi slabý srdeční tep + + + You find a strong Heart Rate + Rythme cardiaque élevé + Пульс учащенный + El ritmo cardíaco está acelerado + Wyczuwasz silne tętno + Starker Puls + A szívverés-szám magas + Hai riscontrato un forte battito cardiaco + Freqüência Cardíaca normal + Nahmatal jsi silný srdeční tep + + + You find a normal Heart Rate + Rythme cardiaque normal + Пульс в норме + El ritmo cardíaco es bueno + Wyczuwasz normalne tętno + Normaler Puls + A szívverés-szám normális + Hai riscontrato un normale battito cardiaco + Freqüência Cardíaca alta + Nahmatal jsi normální srdeční tep + + + You find no Heart Rate + Pas de rythme cardiaque + Пульс не прощупывается + No tiene ritmo cardíaco + Wyczuwasz brak tętna + Kein Puls gefunden + Nem észlelhető szívverés + Hai riscontrato una assenza di battito cardiaco + Sem Freqüência Cardíaca + Nenašel jsi + + + Response + Etat de Conscience + Реакция + Respuesta + Przytomność + Ansprechbarkeit + Reagálóképesség + Risposta + Reação + Odezva + + + You check response of patient + Vous vérifiez la réponse du patient + Вы проверяете реакцию раненого + Compruebas si el paciente reacciona + 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 + Aferindo se o paciente tem reação... + Zkontroloval jsi reakci pacienta + + + %1 is responsive + %1 реагирует на раздражители + %1 est conscient + %1 ha reaccionado + %1 jest przytomny + %1 ist anprechbar + %1 reakcióképes + %1 e' cosciente + %1 está respondendo + %1 odpovídá + + + %1 is not responsive + %1 не реагирует на раздражители + %1 est inconscient + %1 no reacciona + %1 jest nieprzytomny + %1 ist nicht ansprechbar + %1 nem reagál + %1 e' incosciente + %1 não está respondendo + %1 neodpovídá + + + You checked %1 + Вы осмотрели раненого %1 + Vous avez examiné %1 + Examinas a %1 + Zbadałeś %1 + Du hast versucht, %1 anzusprechen + Megnézted %1-t + Hai controllato %1 + Você aferiu o paciente %1 + Zkontroloval jsi %1 + + + Patient %1<br/>is %2.<br/>%3.<br/>%4 + Paziente %1<br/>è %2.<br/>%3.<br/>%4 + Пациент %1<br/>%2.<br/>%3.<br/>%4 + Patient %1<br/>ist %2.<br/>%3.<br/>%4 + Patient %1<br/>est %2.<br/>%3.<br/> + Pacjent %1<br/>jest %2.<br/>%3.<br/>%4 + Paciente %1<br/>is %2.<br/>%3.<br/>%4 + A páciens, %1,<br/>%2.<br/>%3.<br/>%4 + Pacient %1<br/>je %2.<br/>%3.<br/>%4 + Paciente %1<br/>é %2.<br/>%3.<br/>%4 + + + alive + Vivo + жив + lebendig + vivant + żywy + vivo + élő + naživu + vivo + + + dead + Morto + мёртв + muerto + tot + mort + martwy + halott + mrtev + morto + + + He's lost some blood + Ha perso sangue + Ha perdido un poco de sangre + Есть кровопотеря + Er hat etwas Blut verloren + Il a perdu du sang + Stracił trochę krwi + Valamennyi vért vesztett + Ztratil trochu krve + Ele perdeu um pouco de sangue + + + He's lost a lot of blood + Er hat viel Blut verloren + Sok vért vesztett + Stracił sporo krwi + Большая кровопотеря + Ha perdido mucha sangre + Il a perdu beaucoup de sang + Ztratil hodně krve + Ele perdeu muito sangue + Ha perso molto sangue + + + He hasn't lost blood + Non ha perso sangue + Нет кровопотери + Er hat kein Blut verloren + Il n'a pas perdu de sang + Nie stracił krwi + No ha perdido sangre + Nem vesztett vért + Neztratil žádnou krev + Ele não perdeu sangue + + + He is in pain + è affetto da dolore + Испытывает боль + Er hat Schmerzen + Il souffre + Odczuwa ból + Siente dolor + Fájdalmai vannak + Je v bolestech + Ele está com dor + + + He is not in pain + Non è affetto da dolore + Не испытывает боли + Er hat keine Schmerzen + Il ne souffre pas + Nie odczuwa bólu + No siente dolor + Nincsenek fájdalmai + Nemá žádné bolesti + Ele não está com dor + + + Bandaged + Bandé + Повязка наложена + Vendado + Zabandażowano + Bekötözve + Bendato + verbunden + Enfaixado + Obvázaný + + + You bandage %1 (%2) + Vous bandez %1 (%2) + Вы перевязали раненого %1 (%2) + Aplicas vendaje a %1 en %2 + Bandażujesz %1 (%2) + Bekötözöd %1-t (%2) + Stai bendando %1 (%2) + Du verbindest %1 (%2) + Você aplica bandagem no paciente %1 (%2) + Obvazuješ %1 (%2) + + + %1 is bandaging you + %1 vous bande + %1 перевязывает вас + %1 te está vendando + %1 bandażuje Ciebie + %1 bekötöz téged + %1 ti sta bendando + %1 verbindet dich + %1 está aplicando uma bandagem em você + %1 tě obvazuje + + + You start stitching injuries from %1 (%2) + Вы зашиваете ранения от %1 (%2) + Du nähst die Wunden von %1 (%2) + Vous suturez %1 (%2) + 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) + Você começa a suturar os ferimentos do %1 (%2) + Zašíváš rány %1 (%2) + + + Stitching + Наложение швов + Suturando + Nähen + Sutures + Szycie + Összevarrás + Suturando + Suturando... + Šití + + + You treat the airway of %1 + Вы интубируете раненого %1 + Estás intubando a %1 + Du behandelst die Atemwege von %1 + Vous traitez les voies respiratoires de %1 + Udrażniasz drogi oddechowe %1 + Kezeled %1 légútját + Controlli le vie respiratorie di %1 + Você entuba o %1 + Ošetřuješ dýchací cesty %1 + + + Airway + Дыхательные пути + Vías aéreas + Drogi oddechowe + Atemwege + Voies respiratoires + Légút + Vie respiratorie + Vias Aéreas + Dýchací cesty + + + %1 is treating your airway + %1 проводит вам интубацию + %1 traite vos voies respiratoires + %1 te está intubando + %1 udrażnia Twoje drogi oddechowe + %1 behandelt deine Atemwege + %1 kezeli a légútadat + %1 ti sta trattando le vie respiratorie + %1 está te entubando + %1 ošetřuje tvoje dýchací cesty + + + Drag + Ziehen + Arrastrar + Ciągnij + Táhnout + Тащить + Trainer + Húzás + Arrastar + Trascina + + + Carry + Tragen + Cargar + Nieś + Nést + Нести + Porter + Cipelés + Carregar + Trasporta + + + Release + Loslassen + Soltar + Połóż + Položit + Отпустить + Déposer + Elengedés + Soltar + Rrilascia + + + Load Patient Into + Patient Einladen + Cargar al paciente en + Załaduj pacjenta + Naložit pacianta do + Погрузить пациента в + Embarquer le patient + Sebesült berakása + Carregar Paciente Em + Carica paziente nel + + + Unload Patient + Patient Ausladen + Descargar al paciente + Wyładuj pacjenta + Vyložit pacienta + Выгрузить пациента + Débarquer le patient + Sebesült kihúzása + Descarregar Paciente + Scarica il paziente + + + Unload patient + Descargar al paciente + Выгрузить пациента + Patient Ausladen + Wyładuj pacjenta + Débarquer le patient + Sebesült kihúzása + Scarica il paziente + Descarregar Paciente + Vyložit pacienta + + + Load patient + Cargar al paciente en + Погрузить пациента + Patient Einladen + Załaduj pacjenta + Embarquer le patient + Sebesült berakása + Carica il paziente + Carregar Paciente Em + Naložit pacienta + + + Place body in bodybag + Colocar cuerpo en bolsa para cadáveres + Поместить тело в мешок для трупов + Körper in Leichesack verstauen + 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 + Colocar corpo dentro do saco para cadáver + Umístni tělo do pytle na mrtvoly + + + Placing body in bodybag + Colocando cuerpo en bolsa para cadáveres + Упаковка тела ... + Verstaue Körper in Leichensack + 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 + Colocando corpo dentro do saco para cadáver... + Umístňuji tělo do pytle na mrtvoly + + + %1 has bandaged patient + %1 has vendado al paciente + %1 перевязал пациента + %1 hat den Patienten verbunden + %1 założył bandaż + %1 a pansé le patient + %1 bekötözte a pácienst + %1 ha bendato il paziente + %1 aplicou bandagem no paciente + %1 již obvázal pacienta + + + %1 used %2 + %1 usó %2 + %1 benutzt %2 + %1 использовал %2 + %1 użył %2 + %1 utilise %2 + %1 használta a %2-t + %1 ha usato %2 + %1 usou %2 + %1 použil %2 + + + %1 has given an IV + %1 провёл переливание + %1 ha puesto una IV + %1 hat eine Infusion verabreicht + %1 podał IV + %1 a administré une IV + %1 infúziót adott + %1 ha somministrato una IV + %1 aplicou um intravenoso + %1 již aplikoval IV + + + %1 applied a tourniquet + %1 aplicado torniquete + %1 наложил жгут + %1 hat einen Tourniquet angelegt + %1 założył stazę + %1 a appliqué un garrot + %1 felhelyezett egy érszorítót + %1 ha applicato un laccio emostatico + %1 aplicou um torniquete + %1 použil škrtidlo + + + %1 performed CPR + %1 wykonał cykl RKO + %1 провел сердечно-легочную реанимацию + + + Heavily wounded + Schwer verwundet: + Ciężko ranny + Тяжелые ранения + Gravemente ferito + Gravemente herido + Lourdement blessé + Erősen sérült + Těžce zraněn + Gravemente ferido + + + Lightly wounded + Leicht verwundet: + Lekko ranny + Легкие ранения + Leggermente ferito + Levemente herido + Légèrement blessé + Enyhén sérült + Lehce zraněn + Levemente ferido + + + Very lightly wounded + Sehr leicht verwundet: + B. lekko ranny + Царапины + Ferito lievemente + Muy levemente herido + Très légèrement blessé + Nagyon enyhén sérült + Velmi lehce zraněn + Muito levemente ferido + + + Head + Kopf + Głowa + Головы + Testa + Cabeza + Tête + Fej + Hlava + Cabeça + + + Torso + Torso + Tors + Торса + Torso + Torso + Torse + Testtörzs + Trup + Torso + + + Left Arm + Linker Arm + Lewe ramię + Левой руки + Braccio sinistro + Brazo izquierdo + Bras gouche + Bal kar + Levá ruka + Braço Esquerdo + + + Right Arm + Rechter Arm + Prawe ramię + Правой руки + Braccio destro + Brazo derecho + Bras droit + Jobb kar + Pravá ruka + Braço Direito + + + Left Leg + Linkes Bein + Lewa noga + Левой ноги + Gamba sinistra + Pierna izquierda + Jambe gauche + Bal láb + Levá noha + Perna Esquerda + + + Right Leg + Rechtes Bein + Prawa noga + Правой ноги + Gamba destra + Pierna derecha + Jambe droite + Jobb láb + Pravá noha + Perna Direita + + + Bandaging removes bloodstains + Bandagieren entfernt Blutflecken + Bandażowanie usuwa ślady krwi + Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue + A kötözés eltávolítja a vérfoltokat + Перевязка убирает пятна крови + + + Pain is only temporarily suppressed + Schmerzen werden nur vorübergehend unterdrückt + Ból jest tymczasowo zwalczany + Bolest je potlačena pouze dočasně + El dolor se suprime solo temporalmente + Dor é suprimida somente temporáriamente + A fájdalom csak ideiglenesen csökken + Боль приглушается только временно + + + Pain Effect Type + Schmerzeffekt-Typ + Rodzaj efektu bólu + Визуальный эффект боли + Pain Effect Type + Tipo de efecto de dolor + Type d'effet de douleur + Fájdalom-effekt típusa + Tipo do efeito de dor + Typ bolesti - efekt + + + Colour Flashing + Farbblinken + Pulsujące kolory + Пульсирующий свет + Colore lampeggiante + Parpadeo de color + Flash de couleur + Színvillódzás + Flash de cor + Blikající barva + + + Chromatic Aberration + Chromatische Aberration + Aberracja chromatyczna + Хроматическая аберрация + Aberrazione cromatica + Aberración cromática + Aberration chromatique + Kromatikus aberráció + Chromatická aberace + Aberração Cromática + + + Style of menu (Medical) + Styl menu medycznego + Style de menu (Médical) + Menü-Stil (Medical) + Вид меню (медицина) + Tipo de menú (Medico) + Styl menu (Zdravotní) + Estilo do menu (Médico) + Menü stílusa (Orvosi) + Stile del menù (medico) + + + Select the type of menu you prefer; default 3d selections or radial. + Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne + Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale + Wähle den Menü-Stil: Standard 3D-Selektion oder kreisförmig. + Выберите тип меню: стандартный вариант (3D) или радиальный + Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. + Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. + Válaszd ki a neked megfelelő menüt: Alapértelmezett 3D válogatás, vagy kerek. + Zvolte typ menu: základní 3D výběr nebo kruhový + Seleziona il tipo di menù che preferisci: selezione 3d predefinita o radiale. + + + Selections (3d) + Pozycje (3D) + sélections (3D) + 3D-Selektion + Стандартный (3D) + Selecciones (3d) + Seleção (3d) + Választékok (3D) + 3D výběr + Selezione (3D) + + + Radial + Radialne + Radiale + Kreisförmig + Радиальный + Radial + Radial + Kerek + Kruhový + Radiale + + + Scrape + Kratzer + Scorticatura + Ссадина + Eraflure + Draśnięcie + Arañazo + Horzsolás + Raspão + Odřenina + + + Minor Scrape + Kleiner Kratzer + Minima Scorticatura + Малая ссадина + Petite éraflure + Pomniejsze draśnięcie + Arañazo menor + Kis horzsolás + Raspão leve + Malá odřenina + + + Medium Scrape + Mittlerer Kratzer + Media Scorticatura + Средняя ссадина + Moyenne éraflure + Średnie draśnięcie + Arañazo medio + Közepes horzsolás + Raspão médio + Středně velká odřenina + + + Large Scrape + Großer Kratzer + Alta Scorticatura + Большая ссадина + Grande éraflure + Duże draśnięcie + Arañazo severo + Nagy horzsolás + Raspão grave + Velká odřenina + + + Avulsion + Avulsion + Avulsione + Рваная рана + Avulsion + Rana płatowa + Avulsión + Leszakadás + Avulsão + Avulze + + + Minor Avulsion + Kleine Avulsion + Minima Avulsione + Малая рваная рана + Petite avulsion + Pomniejsza rana płatowa + Avulsión menor + Kis leszakadás + Avulsão leve + Malá avulze + + + Medium Avulsion + Mittlere Avulsion + Media Avulsione + Средняя рваная рана + Moyenne avulsion + Średnia rana płatowa + Avulsión media + Közepes leszakadás + Avulsão média + Střední avulze + + + Large Avulsion + Große Avulsion + Alta Avulsione + Большая рваная рана + Grande avulsion + Duża rana płatowa + Avulsión severa + Nagy leszakadás + Avulsão grave + Velká avulze + + + Bruise + Prellung + Contusione + Ушиб + Hématome + Stłuczenie + Contusión + Zúzódás + Contusão + Modřina + + + Minor Bruise + Kleine Prellung + Minima Contusione + Малый ушиб + Petit hématome + Pomniejsze stłuczenie + Contusión menor + Kis zúzódás + Contusão leve + Malá modřina + + + Medium Bruise + Mittlere Prellung + Media Contusione + Средний ушиб + Hématome moyen + Średnie stłuczenie + Contusión media + Közepes zúzódás + Contusão média + Středně velká modřina + + + Large Bruise + Große Prellung + Alta Contusione + Большой ушиб + Hématome important + Duże stłuczenie + Contusión severa + Nagy zúzódás + Contusão grave + Velká modřina + + + Crushed tissue + Quetschverletzung + Tessuto Schiacciato + Компресионная травма + Tissu écrasé + Zgniecienie tkanek miękkich + Tejido triturado + Zúzott szövet + Tecido esmagado + Zhmoždění měkkých tkání + + + Minor crushed tissue + Kleine Quetschverletzung + Minimo Tessuto Schiacciato + Малая компрессионная травма + Tissu écrasé léger + Pomniejsze zgniecienie tkanek miękkich + Tejido triturado menor + Kis zúzott szövet + Tecido esmagado leve + Malé zhmoždění měkkých tkání + + + Medium crushed tissue + Mittlere Quetschverletzung + Medio Tessuto Schiacciato + Средняя компрессионная травма + Tissu écrasé moyen + Średnie zgniecienie tkanek miękkich + Tejido triturado medio + Közepes zúzott szövet + Tecido esmagado médio + Střední zhmoždění měkkých tkání + + + Large crushed tissue + Große Quetschverletzung + Alto Tessuto Schiacciato + Большая компрессионная травма + Tissu écrasé large + Duże zgniecienie tkanek miękkich + Tejido triturado severo + Nagy zúzött szövet + Tecido esmagado grave + Velké zhmoždění měkkých tkání + + + Cut + Schnittwunde + Taglio + Резаная рана + Coupure + Rana cięta + Corte + Vágás + Corte + Řezná rána + + + Small Cut + Kleine Schnittwunde + Piccolo Taglio + Малая резаная рана + Pomniejsza rana cięta + Corte menor + Kis vágás + Petite coupure + Corte leve + Malá řezná rána + + + Medium Cut + Mittlere Schnittwunde + Medio Taglio + Средняя резаная рана + Średnia rana cięta + Corte mediano + Közepes vágás + Moyenne coupure + Corte médio + Střední řezná rána + + + Large Cut + Große Schnittwunde + Grande Taglio + Большая резаная рана + Duża rana cięta + Corte severo + Nagy vágás + Large coupure + Corte grave + Velká řezná rána + + + Tear + Riss + Strappo + Рваная рана + Rozerwanie skóry + Déchirure + Desgarro + Szakadás + Ruptura + Tržná rána + + + Small Tear + Kleiner Riss + Piccolo Strappo + Малая рваная рана + Pomniejsze rozerwanie skóry + Petite Déchirure + Desgarro menor + Kis szakadás + Ruptura leve + Malá tržná rána + + + Medium Tear + Mittlerer Riss + Medio Strappo + Средняя рваная рана + Średnie rozerwanie skóry + Desgarro medio + Közepes szakadás + Moyenne déchirure + Ruptura média + Střední tržná rána + + + Large Tear + Großer Riss + Grande Strappo + Большая рваная рана + Duże rozerwanie skóry + Desgarro severo + Nagy szakadás + Large déchirure + Ruptura grave + Velká tržná rána + + + Velocity Wound + Ballistisches Trauma + Velocità Ferita + Огнестрельная рана + Rana postrzałowa + Blessure de vélocité + Herida de bala + Lőtt seb + Ferimento por projétil de arma de fogo + Střelné poranění + + + Smal Velocity Wound + Kleines Ballistisches Trauma + Lenta Velocità Ferita + Малая огнестрельная рана + Pomniejsza rana postrzałowa + Herida de bala menor + Kis lőtt seb + Petite blessure de vélocité + Ferimento leve por projétil de arma de fogo + Malé střelné poranění + + + Medium Velocity Wound + Mittleres Ballistisches Trauma + Media Velocità Ferita + Средняя огнестрельная рана + Średnia rana postrzałowa + Herida de bala media + Közepes lőtt seb + Moyenne blessure de vélocité + Ferimento médio por projétil de arma de fogo + Střední střelné poranění + + + Large Velocity Wound + Großes Ballistisches Trauma + Alta Velocità Ferita + Большая огнестрельная рана + Duża rana postrzałowa + Herida de bala severa + Nagy lőtt seb + Large blessure de vélocité + Ferimento grave por projétil de arma de fogo + Velké střelné poranění + + + Puncture Wound + Stichwunde + Puntura Ferita + Колотая рана + Rana kłuta + Blessure de perforation + Herida punzante + Szúrt seb + Ferimento por perfuração + Bodná rána + + + Minor Puncture Wound + Kleine Stichwunde + Piccola Puntura Ferita + Малая колотая рана + Pomniejsza rana kłuta + Herida punzante menor + Kis szúrt seb + Légère blessure de perforation + Ferimento leve por perfuração + Malá bodná rána + + + Medium Puncture Wound + Mittlere Stichwunde + Media Puntura Ferita + Средняя колотая рана + Średnia rana kłuta + Herida punzante media + Közepes szúrt seb + Moyenne blessure de perforation + Ferimento médio por perfuração + Střední bodná rána + + + Large Puncture Wound + Große Stichwunde + Grande Puntura Ferita + Большая колотая рана + Duża rana kłuta + Herida punzante severa + Nagy szúrt seb + Large blessure de perforation + Ferimento grave por perfuração + Velká bodná rána + + + Broken Femur + Gebrochener Oberschenkelknochen + Femore Rotto + Перелом + Zkłamana kość udowa + Fémur cassé + Femur roto + Törött combcsont + Fêmur quebrado + Zlomená stehenní kost + + + Treating ... + Behandeln ... + Ellátás ... + Opatrywanie ran ... + Traitement ... + Лечение ... + Tratando ... + Tratando... + Ošetřuji ... + Curando ... + + + Removing Tourniquet ... + Tourniquet entfernen ... + Zdejmowanie stazy ... + Quitando torniquete ... + Retire le tourniquet ... + Removendo torniquete... + Érszorító eltávolítása ... + Sundavám škrtidlo ... + Снятие жгута ... + Togliendo il laccio emostatico ... + + + ACE Medical + ACE: медицина + ACE Opcje medyczne + Médico ACE + ACE-Medicsystem + ACE Zdravotnické + ACE Médico + ACE Orvosi Rendszer + + + Medical Settings [ACE] + Настройки медицины [ACE] + Ustawienia medyczne + Ajustes médicos [ACE] + Medizinische Einstellungen [ACE] + Lékařské nastavení [ACE] + Ajustes médicos [ACE] + Orvosi beállítások [ACE] + + + Medical Level + Сложность медицины + Poziom medyczny + Nivel médico + Medizinisches Level + Úroveň medického + Nível médico + Orvosi szint + + + What is the medical simulation level? + Каков уровень сложности медицинской системы? + Jaki jest poziom symulacji medycznej? + ¿Cuál es el nivel de simulación médica? + Wie hoch soll das medizinische Simulationslevel sein? + Jaká je úroveň lékařské simulace? + Qual o nível de simulação médica? + Milyen komplex legyen az orvosi szimuláció? + + + Basic + Базовый + Podstawowy + Básico + Standard + Základní + Básica + Alap + + + Advanced + Усложненный + Zaawansowany + Avanzado + Erweitert + Pokročilé + Avançada + Fejlett + + + Medics setting + Настройки медиков + Poziom medyków + Configuración médica + Medizinische Einstellungen + Úroveň zdravotníků + Configuração médica + Orvosok beállítása + + + What is the level of detail prefered for medics? + Каков уровень подробностей для медиков? + Jaki jest poziom detali medycznych wyświetlanych dla medyków? + ¿Cuál es el nivel de detalle preferido para los médicos? + Jaká úroveň detailů je preferována pro zdravotníky? + Qual o nível de detalhe preferido para os médicos? + Mi a javasolt részletesség orvosok számára? + + + Disable medics + Отключить медиков + Wyłącz medyków + Desactivar médicos + Sanitäter deaktivieren + Zakázat zdravotníky + Desativar médicos + Orvosok letiltása + + + Enable Litter + Включить мусор + Aktywuj odpadki + Activar restos médicos + Abfälle aktivieren + Povolit odpadky + Ativar lixo médico + Szemét engedélyezése + + + Enable litter being created upon treatment + Включить появление мусора после лечения + Twórz odpadki medyczne podczas leczenia + Activar los restos médicos que se crean en el tratamiento + Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde + Vytváří odpad zdravotnického materiálu pří léčení + Ativar lixo ser criado após tratamento + Engedélyezi a szemét keletkezését ellátáskor + + + Life time of litter objects + Время удаления мусора + Długość życia odpadków + Tiempo de vida de los restos médicos + Dauer des angezeigten Abfalls + Životnost pro odpadky + Tempo de vida dos objetos do lixo + Szemétobjektumok élettartama + + + How long should litter objects stay? In seconds. -1 is forever. + Как долго мусор будет оставаться на земле? В секундах. -1 означает бесконечное время. + Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. + ¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre. + Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. + Za jak dlouho začnou odpadky mizet? V sekundách. -1 navždy. + Quanto tempo os objetos do lixo devem ficar? Em segundos. -1 é para sempre. + Milyen sokáig legyenek jelen a szemétobjektumok (másodpercben)? A -1 végtelen időt jelent. + + + Enable Screams + Включить крики + Aktywuj wrzaski + Activar gritos + Schreie aktivieren + Povolit křik + Ativar gritos + Kiáltások engedélyezése + + + Enable screaming by injuried units + Включить крики раненных бойцов + Aktywuj wrzeszczenie z bólu przez ranne jednostki + Activar gritos para unidades heridas + Aktiviere Schreie bei verletzten Einheiten + Povolit křičení zraněných jednotek + Ativa gritos para unidades feridas + Engedélyezi a sérült egységek kiáltásait + + + Player Damage + Урон игроку + Próg obrażeń graczy + Daño de jugador + Spielerschaden + Poškození hráče + Dano do jogador + Játékos sérülés + + + What is the damage a player can take before being killed? + Какой уровень урона необходим, чтобы убить игрока? + Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity? + ¿Cuál es el daño que un jugador puede sufrir antes de morir? + Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? + Jaké poškození může hráč dostat než bude zabit? + Qal é o dano que um jogador pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy játékos, mielőtt meghal? + + + AI Damage + Урон ботам + Próg obrażeń AI + Daño IA + KI-Schaden + Poškození AI + Dano da IA + AI sérülés + + + What is the damage an AI can take before being killed? + Какой уровень урона необходим, чтобы убить бота? + Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite? + ¿Cuál es el daño que la IA puede sufrir antes de morir? + Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? + Jaké poškození může AI dostat než bude zabito? + Qual é o dano que uma IA pode sofrer antes de morrer? + Mennyi sérülést szenvedhet el egy AI, mielőtt meghal? + + + AI Unconsciousness + Потеря сознания ботами + Nieprzytomność AI + Inconsciencia IA + KI-Bewusstlosigkeit + Bezvědomí AI + Inconsciência da IA + AI eszméletlenség + + + Allow AI to go unconscious + Позволить ботам терять сознание + Czy AI może być nieprzytomne od odniesionych obrażeń? + Permita a la IA caer inconsciente + KI kann bewusstlos werden + Umožňuje AI upadnout do bezvědomí + Permite IA ficar inconsciente + Engedélyezi az AI eszméletének elvesztését + + + Remote Controlled AI + IA controlada remotamente + IA controlada remotamente + Zdalnie sterowane AI + Vzdáleně ovládané AI + Távvezérelt AI + Зевса считать ботом + + + Treat remote controlled units as AI not players? + ¿Tratar unidades remotamente controladas como IA? + Tratar unidades remotamente controladas como IA? + Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? + Ošetřit vzdáleně ovládané jednotky jako AI, ne jako hráče? + Távvezérelt egységek AI-ként, nem játékosként való kezelése? + Обрабатывать дистанционно управляемых юнитов как ботов, а не как игроков? + + + Prevent instant death + Откл. мгновенную смерть + Wył. natychmiast. śmierć + Prevenir muerte instantánea + Verhindere direkten Tod + Zabránit okamžité smrti + Previnir morte instantânea + Azonnali halál kiiktatása + + + Have a unit move to unconscious instead of death + Бойцы теряют сознание вместо того, чтобы умирать + Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń + Mover una unidad a inconsciente en vez de a muerta + Lässt eine Einheit bewusstlos werden anstatt zu sterben + Jednotka upadne do bezvědomí namísto smrti + Fazer a unidade ficar inconsciente invés de morrer + Egy egység kerüljön eszméletlen állapotba a halott helyett + + + Bleeding coefficient + Коэффициент кровопотери + Mnożnik krwawienia + Coeficiente de sangrado + Verblutungsmultiplikator + Koeficient krvácení + Coeficiente de sangramento + Vérzési koefficiens + + + Coefficient to modify the bleeding speed + Коэффициент, изменяющий скорость потери крови + Mnożnik modyfikujący prędkość wykrwawiania się + Coeficiente para modificar la velocidad de sangrado + Multiplikator um die Verblutungsgeschwindigkeit zu verändern + Koeficient rychlosti krvácení + Coeficiente para modificar a velocidade do sangramento + Egy szorzó a vérzés sebességének szabályozására + + + Pain coefficient + Коэффициент боли + Mnożnik bólu + Coeficiente de dolor + Schmerzmultiplikator + Koeficient bolesti + Coeficiente de dor + Fájdalmi koefficiens + + + Coefficient to modify the pain intensity + Коэффициент, изменяющий уровень боли + Mnożnik modyfikujący intensywność bólu + Coeficiente para modificar la intensidad del dolor + Multiplikator um den Schmerzintensität zu verändern + Koeficient intenzity bolesti + Coeficiente para modificar a instensidade de dor + Egy szorzó a fájdalom erősségének szabályozására + + + Sync status + Синхронизация статуса + Synchronizuj status + Sincronizador estado + Status synchronisieren + Synchronizovat status + Sincronizar estado + Szinkronizációs állapot + + + Keep unit status synced. Recommended on. + Синхронизировать статус юнитов. Рекомендуется включить. + Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + Mantener el estado de la unidad sincronizado. Recomendado activado + Status der Einheit synchron halten. Sollte aktiviert bleiben. + Udržuje status jednotky synchronizovaný. Doporučeno zapnout. + Mater o estado da unidade sincronizado. Recomendado ativado. + Egységállapotok szinkronizálása. Javasolt a bekapcsolása. + + + Provides a medical system for both players and AI. + Включает медицинскую систему как для игроков, так и для ботов. + Moduł ten dostarcza system medyczny dla graczy oraz AI. + Proporciona un sistema médico para jugadores e IA. + Aktiviert ein medizinisches System für Spieler und KI. + Poskytuje zdravotní systém pro hráče a AI. + Proporciona o sistema médico para os jogadores e a IA. + Egy orvosi rendszert ad játékosok és AI-k számára. + + + Advanced Medical Settings [ACE] + Настройки усложненной медицины [ACE] + Zaawansowane ustawienia medyczne + Ajustes médicos avanzados [ACE] + Erweiterte medizinische Einstellungen [ACE] + Pokročilé zdravotnické nastavení [ACE] + Ajustes médicos avançados [ACE] + Fejlett orvosi beállítások [ACE] + + + Enabled for + Включено для + Aktywne dla + Hablitado para + Aktiviert für + Povoleno pro + Habilitado para + Engedélyezve... + + + Select what units the advanced medical system will be enabled for + Выберите, на кого будет распространяться усложненная система медицины + Wybierz dla kogo zaawansowany system medyczny będzie aktywny + Seleccione para qué unidades será habilitado el sistema médico avanzado + Wähle aus welche Einheiten das erweiterte medizinische System haben + Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen + Selecione quais unidades o sistema médico avançado será habilitado + Kiválasztható, mely egységek számára legyen engedélyezve a fejlett orvosi rendszer + + + Players only + Игроков + Tylko dla graczy + Solo jugadores + Nur Spieler + Pouze hráči + Somente jogadores + Csak játékosok + + + Players and AI + Игроков и ботов + Gracze oraz AI + Jugadors e IA + Spieler und KI + Hráči a AI + Jogadores e IA + Játékosok és AI + + + Enable Advanced wounds + Усложненные раны + Akt. zaawansowane rany + Activa heridas avanzadas + Aktiviere erweiterte Wunden + Povolit pokročilé zranění + Ativar ferimentos avançados + Komplex sebek engedélyezése + + + Allow reopening of bandaged wounds? + Будут ли открываться уже перевязанные раны? + Pozwól na otwieranie się zabandażowanych ran? + Permitir la reapertura de las heridas vendadas? + Erlaube das Öffnen von bandagierten Wunden? + Umožnit znovuotevření zavázané rány? + Permitr reabertura de ferimentos enfaixados? + Visszanyílhatnak a bekötözött sebek? + + + Vehicle Crashes + Аварии транспорта + Obrażenia od kolizji + Accidentes de vehículos + Fahrzeugunfälle + Poškození z kolize + Batidas de veículos + Járműbalesetek + + + Do units take damage from a vehicle crash? + Должны ли юниты получать повреждения от аварий на транспорте? + Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + ¿Las unidades reciben daño de un accidente de tráfico? + Bekommen Einheiten von Fahrzeugunfällen Schaden? + Dostane jednotka poškození při autonehodě? + As unidades recebem dano de uma batida de veículo? + Sérülnek-e az egységek autós ütközés során? + + + Allow PAK + Использование аптечки + Ust. apteczek osobistych + Permitir EPA + Erlaube Erste-Hilfe-Set + Povolit osobní lékárničky + Permitir Kit de Primeiros Socorros + Elsősegélycsomag engedélyezése + + + Who can use the PAK for full heal? + Кому разрешено выполнять полное лечение с помощью аптечки? + Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + ¿Quién puede utilizar el EPA para una cura completa? + Wer kann das Erste-Hilfe-Set für eine Endheilung verwenden? + Kdo může použít osobní lékárničku pro plné vyléčení? + Quem pode usar o KPS para cura completa? + Ki használhatja az elsősegélycsomagot teljes gyógyításra? + + + Anyone + Кем угодно + Wszyscy + Nadie + Jeder + Kdokoliv + Qualquer um + Akárki + + + Medics only + Только медиками + Tylko medycy + Solo médicos + Nur Sanitäter + Pouze zdravotník + Somente médicos + Csak orvosok + + + Doctors only + Только врачами + Tylko doktorzy + Solo doctores + Nur Ärzte + Pouze doktor + Somente doutores + Csak doktorok + + + Remove PAK on use + Удалять аптечки после использования + Usuń apteczkę po użyciu + Eliminar EPA después del uso + Entferne Erste-Hilfe-Set bei Verwendung + Odebrat osobní lékárničku po použití + Remover o KPS depois do uso + Elsősegélycsomag eltávolítása használatkor + + + Should PAK be removed on usage? + Нужно ли удалять аптечки после использования? + Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + El EPA será eliminado después de usarlo + Sollen Erste-Hilfe-Sets bei Verwendung entfernt werden? + Má se osobní lékárnička odstranit po použití? + Deve o KPS ser removido depois do uso? + Eltávolítódjon az elsősegélycsomag használatkor? + + + Locations PAK + Место использования аптечки + Ogr. apteczek osobistych + Ubicacions del EPA + Orte für Erste-Hilfe-Set + Lokace osobní lékárničky + Localizações do KPS + Elsősegélycsomag helyek + + + Where can the Personal Aid Kit be used? + Где может использоваться аптечка? + Gdzie można korzystać z apteczek osobistych? + ¿Dónde se puede utilizar el equipo de primeros auxilios? + Wo kann das Erste-Hilfe-Set verwendet werden? + Kde může být použita osobní lékárnička? + Onde o kit de primeiros socorros pode ser utilizado? + Hol lehet az elsősegélycsomagot használni? + + + Condition PAK + Podmínka osobní lékárničky + Condición EPA + Warunek apteczek + Elsősegélycsomag állapot + Condição do KPS + Условие использования аптечки + + + When can the Personal Aid Kit be used? + Kde může být použita osobní lékárnička? + ¿Cuando se puede utilizar el Equipo de primeros auxilios? + Po spełnieniu jakich warunków apteczka osobista może zostać zastosowana na pacjencie? + Mikor lehet az elsősegélycsomagot használni? + Onde o kit de primeiros socorros pode ser utilizado? + Когда может использоваться аптечка? + + + Anywhere + Где угодно + Wszędzie + Donde sea + Überall + Kdekoliv + Qualquer lugar + Akárhol + + + Medical vehicles + В медицинском транспорте + Pojazdy medyczne + Vehiculos médicos + Medizinische Fahrzeuge + Zdravotnická vozidla + Veículos médcos + Orvosi járművek + + + Medical facility + В госпитале + Budynki medyczne + Centro médico + Medizinische Einrichtungen + Zdravotnické zařízení + Instalação médica + Orvosi létesítmény + + + Vehicles & facility + В транспорте и госпитале + Pojazdy i budynki medyczne + Vehículos y centros + Fahrzeuge & Einrichtungen + Vozidla a zařízení + Veículos e instalações + Járművek & létesítmény + + + Allow Surgical kit (Adv) + Хирургический набор может использоваться (усл.) + Ust. zestawu chirurg. + Permitir equipo quirúrgico (Avanzado) + Erlaube Operationskasten + Povolit chirurgickou soupravu (Pokr.) + Permite kit cirúrgico (avançado) + Sebészkészlet (Fejlett) engedélyezése + + + Who can use the surgical kit? + Кто может использовать хирургический набор? + Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + ¿Quién puede utilizar el equipo quirúrgico? + Wer kann den Operationskasten verwenden? + Kdo může použít chirurgickou soupravu? + Quem pode usar o kit cirúrgico? + Ki használhatja a sebészkészletet? + + + Remove Surgical kit (Adv) + Удалять хирургический набор (усл.) + Usuń zest. chir. po użyciu + Eliminar equipo quirúrgico (Avanzado) + Enrtferne Operationskasten (erweitert) + Odebrat chirurgickou soupravu (Pokr.) + Remover kit cirúrgico (avançado) + Sebészkészlet (Fejlett) eltávolítása + + + Should Surgical kit be removed on usage? + Нужно ли удалять хирургический набор после использования? + Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + Eliminar el equipo quirúrgico después del uso + Entferne Operationskästen bei Verwendung? + Odebrat chirurgickou soupravu po použití? + Deve o kit cirúrgico ser removido após o uso? + Eltávolítódjon a sebészkészlet használatkor? + + + Locations Surgical kit (Adv) + Место использования хирургического набора (усл.) + Ogr. zestawu chirurg. + Ubicaciones del equipo quirúrgico (Avanzado) + Orte für Operationskästen (erweitert) + Lokace chirurgické soupravy (Pokr.) + Localizações do kit cirúrgico (avançado) + Sebészkészlet (Fejlett) helyei + + + Where can the Surgical kit be used? + Где может использоваться хирургический набор? + Gdzie można korzystać z zestawu chirurgicznego? + Dónde se puede utilizar el equipo quirúrgico + Wo kann der Operationskasten verwendet werden? + Kde může být použita chirurgická souprava? + Onde o kit cirúrgico pode ser utilizado? + Hol lehet a sebészkészletet használni? + + + Condition Surgical kit (Adv) + Podmínka chirurgické soupravy (Pokr.) + Condición de equipo quirúrgico (Av) + Warunek zestawu chir. + Sebészkészlet állapot + Condição do Kit Cirúrgico (Avançado) + Условие использования хирургического набора (усл.) + + + When can the Surgical kit be used? + Kde může být použita chirurgická souprava? + ¿Cuando se puede utilizar el equipo quirúrgico? + Po spełnieniu jakich warunków zestaw chirurgiczny może zostać zastosowany na pacjencie? + Mikor lehet a sebészkészletet használni? + Onde o kit cirúrgico pode ser utilizado? + Когда может использоваться хирургический набор? + + + Bloodstains + Blutflecken + Plamy krwi + Skvrny od krve + Manchas de sangre + Manchas de sangue + Vérfoltok + Удалять пятна крови + + + Bandaging removes bloodstains + Bandagieren entfernt Blutflecken + Bandażowanie usuwa ślady krwi + Obvázání odstraňuje skvrny od krve + El vendaje elimina las manchas de sangre + Bandagem remove manchas de sangue + Kötözés eltávolítja a vérfoltokat + Перевязка удаляет пятна крови + + + Pain suppression + Schmerzunterdrückung + Zwalczanie bólu + Potlačení bolesti + Supresión del dolor + Supressão de dor + Fájdalomcsillapítás + Приглушение боли + + + Pain is only temporarily suppressed, not removed + Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt + Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale + Bolest je potlačena, ale jen dočastně + El dolor se suprime solo temporalmente, no se elimina. + Dor é somente temporáriamente suprimida, não removida + A fájdalom csak ideiglenesen csökken, nem távolítódik el + Боль приглушается только временно + + + Configure the treatment settings from ACE Medical + Настройка лечения в медицинской системе ACE + Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + Configure las opciones de tratamiento del ACE Médico + Behandlungseinstellungen vom ACE-Medical konfigurieren + Konfigurace nastavení léčby ze zdravotnické systému ACE + Configure as opções de tratamento do ACE Médico + Kezelési lehetőségek konfigurálása az ACE Orvosi rendszerből + + + Revive Settings [ACE] + Настройки реанимации [ACE] + Ustawienia wskrzeszania + Sistema de resucitado [ACE] + Wiederbelebungseinstellungen [ACE] + Nastavení oživení [ACE] + Sistema de reavivamento [ACE] + Újraélesztés beállításai [ACE] + + + Enable Revive + Включить реанимацию + Aktywuj wskrzeszanie + Habilitar resucitado + Erlaube Wiederbelebung + Povolit oživení + Habilitar reavivamento + Újraélesztés engedélyezése + + + Enable a basic revive system + Включить базовую систему реанимации + Aktywuj podstawowy system wskrzeszania + Habilitar un sistema básico de resucitado + Aktiviere Standard-Wiederbelebungssystem + Povolit základní systém oživení + Habilitar um sistema básico de reavivamento + Egy alap újraélesztési rendszer engedélyezése + + + Max Revive time + Макс. время реанимации + Maks. czas agonii + Tiempo máximo de resucitado + Maximale Wiederbelebungszeit + Maximální čas pro oživení + Tempo máximo de reavivamento + Maximum újraélesztési idő + + + Max amount of seconds a unit can spend in revive state + Максимальное время в секундах, в течение которого бойца можно реанимировать + Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación + Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann + Maximální doba v agónii v sekundách + Quantidade máxima de segundos que uma unidade pode gastar em um estado de reavivamento + Maximum másodperc, amit egy egység újraélesztési állapotban tölthet + + + Max Revive lives + Макс. кол-во жизней + Maks. ilość wskrzeszeń + Vidas máximas de resucitado + Maximale Leben bei Wiederbelebung + Maximální počet oživení + Vidas máximas do reavivado + Maximum újraélesztési lehetőségek + + + Max amount of lives a unit. 0 or -1 is disabled. + Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. + Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. + Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. + Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. + Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. + Egy egység maximum "életei". 0 vagy -1 letiltja. + + + Provides a medical system for both players and AI. + Включает медицинскую систему как для игроков, так и для ботов. + Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. + Proporciona un sistema médico para jugadores e IA. + Aktiviert das Medicsystem für Spieler und KI. + Poskytuje zdravotní systém pro hráče a AI. + Proporciona um sistema médico para jogadores e IA. + Egy orvosi rendszert ad játékosok és AI-k számára. + + + Set Medic Class [ACE] + Сделать медиком [ACE] + Ustaw klasę medyka + Establecer case médica [ACE] + Setze Sanitäterklassen [ACE] + Určit třídu medika [ACE] + Definir classe médica [ACE] + Orvos beállítása [ACE] + + + List + Список + Lista + Lista + Liste + Seznam + Lista + Lista + + + List of unit names that will be classified as medic, separated by commas. + Список имен юнитов, которые будут считаться медиками (через запятую). + Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. + Lista de los nombres de las unidades que se clasifican como médico, separados por comas. + Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. + Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. + Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. + Azon egységek nevei, melyek orvosként vannak meghatározva, vesszővel elválasztva. + + + Is Medic + Является медиком + Klasa medyczna + Es médico + Ist Sanitäter + Je zdravotník + É médico + Orvos-e + + + This module allows you to assign the medic class to selected units. + Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. + Dieses Modul legt fest welche Einheit ein Sanitäter ist. + Tento modul určuje, která jednotka je zdravotník. + Este módulo determina qual unidade é um paramédico. + Ez a modul engedélyezi az orvosi jelző hozzárendelését kiválasztott egységekhez. + Этот модуль позволяет назначить класс медика выбранным юнитам. + + + None + Нет + Żadna + Nada + Keine + Žádný + Nada + Nincs + + + Regular medic + Обычный медик + Zwykły medyk + Médico regular + Normaler Sanitäter + Řadový zdravotník + Médico regular + Hagyományos orvos + + + Doctor (Only Advanced Medics) + Врач (только усложн.) + Doktor (tylko zaawansowani medycy) + Doctor (Solo medicina avanzada) + Arzt (nur erweiterte Sanitäter) + Doktor (Pouze pokročilý zdravotníci) + Doutor (Somente médicos avançados) + Doktor (csak fejlett orvosok) + + + Assigns the ACE medic class to a unit + Задает юниту класс медика + Moduł ten przypisuje klasę medyka ACE do jednostek. + Asigna la clase médico ACE a una unidad + Weise die ACE-Sanitäterklasse einer Einheit zu + Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica do ACE a uma unidade + Az ACE orvosi jelző hozzárendelése egy egységhez + + + Set Medical Vehicle [ACE] + Сделать мед. транспортом [ACE] + Ustaw pojazd medyczny + Establecer vehículos médicos [ACE] + Setze medizinisches Fahrzeug [ACE] + Určit zdravotnické vozidlo [ACE] + Definir veículo médico [ACE] + Orvosi jármű beállítása [ACE] + + + List + Список + Lista + Lista + Liste + Seznam + Lista + Lista + + + List of vehicles that will be classified as medical vehicle, separated by commas. + Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). + Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. + Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. + Liste von Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. + Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. + Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. + Orvosi járműveknek tekintett járművek listája, vesszővel elválasztva. + + + Is Medical Vehicle + Является медицинским транспортом + Jest pojazdem med. + Es vehículo médico + Ist medizinisches Fahrzeug + Je zdravotnické vozidlo + É um veículo médico + Orvosi jármű-e + + + Whatever or not the objects in the list will be a medical vehicle. + Будут ли объекты в списке считаться медицинским транспортом. + Czy pojazdy z tej listy są pojazdami medycznymi? + Cualquiera de la lista o fuera de ella será un vehículo médico. + Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. + Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. + Se serão ou não os objetos dessa lista veículos médicos. + A listában lévő objektumok orvosi járművek-e, vagy sem. + + + Assigns the ACE medic class to a unit + Задает юниту класс медика + Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne. + Asigna la clase médico ACE a una unidad + Weist die ACE-Sanitäterklasse einer Einheit zu + Přiřadí ACE třídu zdravotníka do jednotky + Atribui a classe médica ACE a uma unidade + Hozzárendeli az ACE orvosi jelzőt egy egységhez + + + Set Medical Facility [ACE] + Сделать госпиталем [ACE] + Ustaw budynek medyczny + Establece el centro médico [ACE] + Setze medizinische Einrichtung [ACE] + Určit zdravotnické zařízení [ACE] + Definir instalação médica [ACE] + Orvosi létesítmény beállítása [ACE] + + + Is Medical Facility + Является госпиталем + Jest budynkiem med. + Es centro médico + Ist eine medizinische Einrichtung + Je zdravotnické zařízení + É uma instalação médica + Orvosi létesítmény-e + + + Registers an object as a medical facility + Определяет объект в качестве госпиталя + Przypisuje danemu obiektowi status budynku medycznego + Registra un objeto como un centro médico + Definiert ein Objekt als medizinische Einrichtung + Registruje objekt jako zdravotnické zařízení + Registra um objeto como instalacão médica + Egy objektum orvosi létesítményként való regisztrálása + + + Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles. + Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. + Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. + Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. + Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. + Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. + Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. + Egy objektumot orvosi létesítményként határoz meg. Ez fejlett ellátási lehetőségeket engedélyez. Használható járműveken és épületeken. + + + [ACE] Medical Supply Crate (Basic) + [ACE] Ящик с медикаментами (базовая медицина) + [ACE] Skrzynka z zapasami medycznymi (podstawowa) + [ACE] Caja de suministros médicos (Básica) + [ACE] Medizinische Kiste (standard) + [ACE] Zdravotnické zásoby (základní) + [ACE] Caixa com suprimentos médicos + [ACE] Orvosi láda (Alap) + + + [ACE] Medical Supply Crate (Advanced) + [ACE] Ящик с медикаментами (усложн. медицина) + [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + [ACE] Caja de suministros médicos (Avanzada) + [ACE] Medizinische Kiste (erweitert) + [ACE] Zdravotnické zásoby (pokročilé) + [ACE] Caixa com suprimentos médicos (Avançados) + [ACE] Orvosi láda (Fejlett) + + + Anytime + Kdykoli + Siempre + Zawsze + Akármikor + Sempre + В любое время + + + Stable + Stabilní + Estable + Po stabilizacji + Stabil + Estável + После стабилизации + + + Medical + Zdravotní + Médical + Sanitäter + Medico + Medyczne + Médico + Медик + Médico + Orvosi + + + Distance to %1 has become to far for treatment + %1 odszedł zbyt daleko, nie można kontynuować leczenia + Расстояние до %1 стало слишком большим для лечения + + \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index fb6fcda817..2c8713de09 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,369 +1,369 @@ - - - - - Medical Menu - Menu medyczne - Медицинское меню - - - Allow Medical Menu - Akt. menu medyczne - Разрешить мед. меню - - - Allow clients to use the medical menu - Zezwalaj graczom korzystać z menu medycznego - Разрешает клиентам использовать медицинское меню - - - Use Medical menu - Użyj menu medycznego - Использовать медицинское меню - - - If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu - Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. - Если разрешено сервером, включает опцию использования медицинского меню с помощью горячих главиш или меню взаимодействия - - - Re-open Medical menu - Otwieraj ponownie menu medyczne - Переоткрывать мед. меню - - - Re-open the medical menu after succesful treatment - Otwórz ponownie menu medyczne po udanym zakończeniu leczenia - Переоткрывать медицинское меню после удачного лечения - - - Open Medical Menu - Otwórz menu medyczne - Открыть медицинское меню - - - Medical Menu Settings - Ustawienia menu medycznego - Настройки медицинского меню - - - Configure the usage of the Medical Menu - Skonfiguruj opcje menu medycznego - Настройки использования медицинского меню - - - EXAMINE & TREATMENT - ОСМОТР И ЛЕЧЕНИЕ - EXAMINAR & TRATAMIENTO - EXAMINER & TRAITEMENTS - BADANIE & LECZENIE - - - STATUS - СОСТОЯНИЕ - ESTADO - ÉTATS - STATUS - - - OVERVIEW - ОБЩАЯ ИНФОРМАЦИЯ - DESCRIPCIÓN - DESCRIPTION - OPIS - - - ACTIVITY LOG - ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ - REGISTRO DE ACTIVIDAD - REGISTRE DES SOINS - LOGI AKTYWNOŚCI - - - QUICK VIEW - БЫСТРЫЙ ОСМОТР - VISTA RÁPIDA - VUE RAPIDE - SZYBKI PODGLĄD - - - View triage Card - Смотреть первичную карточку - Ver Triage - Voir Carte de Triage - Pokaż kartę segregacyjną - - - Examine Patient - Осмотреть пациента - Examinar Paciente - Examiner Patient - Zbadaj pacjenta - - - Bandage / Fractures - Раны / переломы - Vendajes/Fracturas - Bandages / Fractures - Bandaże / Złamania - - - Medication - Медикаменты - Medicación - Médications - Leki - - - Airway Management - Дыхательные пути - Vías Aéreas - Gestion Des Voie REspiratoire - Drogi oddechowe - - - Advanced Treatments - Специальная медпомощь - Tratamientos Avanzados - Traitement Avancé - Zaawansowane zabiegi - - - Drag/Carry - Тащить/нести - Arrastrar/Cargar - Glisser/Porter - Ciągnij/Nieś - - - Toggle (Self) - Лечить себя/другого раненого - Activer (sois) - Przełącz (na siebie) - Alternar - - - Select triage status - Сортировка - Seleccionar estado de Triage - Selectioner l'état de Triage - Wybierz priorytet - - - Select Head - Выбрать голову - Seleccionar Cabeza - Selectioner Tête - Wybierz głowę - - - Select Torso - Выбрать торс - Seleccionar Torso - Selectioner Torse - Wybierz tors - - - Select Left Arm - Выбрать левую руку - Seleccionar Brazo Izquierdo - Selectioner Bras Gauche - Wybierz lewą rękę - - - Select Right Arm - Выбрать правую руку - Seleccionar Brazo Derecho - Selectioner Bras Droit - Wybierz prawą rękę - - - Select Left Leg - Выбрать левую ногу - Seleccionar Pierna Izquierda - Selectioner Jambe Gauche - Wybierz lewą nogę - - - Select Right Leg - Выбрать правую ногу - Seleccionar Pierna Derecha - Selectioner Jambe Droite - Wybierz prawą nogę - - - Head - Голова - Cabeza - Tête - Głowa - - - Torso - Торс - Torse - Tors - - - Left Arm - Левая рука - Brazo Izquierdo - Bras Gauche - Lewa ręka - - - Right Arm - Правая рука - Brazo Derecho - Bras Droit - Prawa ręka - - - Left Leg - Левая нога - Pierna Izquierda - Jambe Gauche - Lewa noga - - - Right Leg - Правая нога - Pierna Derecha - Jambe Droite - Prawa noga - - - Body Part: %1 - Часть тела: %1 - Parte del cuerpo: %1 - Partie du corps: %1 - Część ciała: %1 - - - Small - малого размера - Pequeña - Petite - małym - - - Medium - среднего размера - Mediana - moyenne - średnim - - - Large - большого размера - Grande - Grande - dużym - - - There are %2 %1 Open Wounds - %2 открытые раны %1 - Hay %2 Heridas Abiertas %1 - Il y a %2 %1 Blessure Ouverte - Widzisz otwarte rany w ilości %2 o %1 rozmiarze - - - There is 1 %1 Open Wound - Открытая рана %1 - Hay 1 Herida Abierta %1 - Il y a 1 blessure ouverte %1 - Widzisz 1 otwartą ranę o %1 rozmiarze - - - There is a partial %1 Open wound - Частично открытая рана %1 - Hay una herida parcial abierta %1 - Il y a une Blessure Patiellement Ouverte %1 - Widzisz częściowo otwartą ranę o %1 rozmiarze - - - There are %2 %1 Bandaged Wounds - %2 перевязанные раны %1 - Hay %2 Heridas %1 Vendadas - Il y a %2 %1 Blessure Bandée - Widzisz %2 zabandażowanych ran o %1 rozmiarze - - - There is 1 %1 Bandaged Wound - 1 перевязанная рана %1 - Hay 1 Herida Vendada %1 - Il y a 1 %1 Blessure Bandée - Widzisz 1 zabandażowaną ranę o %1 rozmiarze - - - There is a partial %1 Bandaged wound - Частично перевязанная рана %1 - Hay una Herida parcial %1 Vendada - Il y a %1 Blessure Partielment Bandée - Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze - - - Normal breathing - Дыхание в норме - Respiración normal - Respiration Normale - Normalny oddech - - - No breathing - Дыхания нет - No respira - Apnée - Brak oddechu - - - Difficult breathing - Дыхание затруднено - Dificultad para respirar - Difficultée Respiratoire - Trudności z oddychaniem - - - Almost no breathing - Дыхания почти нет - Casi sin respirar - Respiration Faible - Prawie brak oddechu - - - Bleeding - Кровотечение - Sangrando - Seignement - Krwawienie zewnętrzne - - - in Pain - Испытывает боль - Con Dolor - A De La Douleur - W bólu - - - Lost a lot of Blood - Большая кровопотеря - Mucha Sangre perdida - A Perdu Bcp de Sang - Stracił dużo krwi - - - Tourniquet [CAT] - Жгут - Torniquete [CAT] - Garot [CAT] - Opaska uciskowa [CAT] - - - Nasopharyngeal Tube [NPA] - Назотрахеальная трубка - Torniquete [CAT] - Canule Naseaupharyngée [NPA] - Rurka nosowo-gardłowa [NPA] - - + + + + + Medical Menu + Menu medyczne + Медицинское меню + + + Allow Medical Menu + Akt. menu medyczne + Разрешить мед. меню + + + Allow clients to use the medical menu + Zezwalaj graczom korzystać z menu medycznego + Разрешает клиентам использовать медицинское меню + + + Use Medical menu + Użyj menu medycznego + Использовать медицинское меню + + + If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu + Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. + Если разрешено сервером, включает опцию использования медицинского меню с помощью горячих главиш или меню взаимодействия + + + Re-open Medical menu + Otwieraj ponownie menu medyczne + Переоткрывать мед. меню + + + Re-open the medical menu after succesful treatment + Otwórz ponownie menu medyczne po udanym zakończeniu leczenia + Переоткрывать медицинское меню после удачного лечения + + + Open Medical Menu + Otwórz menu medyczne + Открыть медицинское меню + + + Medical Menu Settings + Ustawienia menu medycznego + Настройки медицинского меню + + + Configure the usage of the Medical Menu + Skonfiguruj opcje menu medycznego + Настройки использования медицинского меню + + + EXAMINE & TREATMENT + ОСМОТР И ЛЕЧЕНИЕ + EXAMINAR & TRATAMIENTO + EXAMINER & TRAITEMENTS + BADANIE & LECZENIE + + + STATUS + СОСТОЯНИЕ + ESTADO + ÉTATS + STATUS + + + OVERVIEW + ОБЩАЯ ИНФОРМАЦИЯ + DESCRIPCIÓN + DESCRIPTION + OPIS + + + ACTIVITY LOG + ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ + REGISTRO DE ACTIVIDAD + REGISTRE DES SOINS + LOGI AKTYWNOŚCI + + + QUICK VIEW + БЫСТРЫЙ ОСМОТР + VISTA RÁPIDA + VUE RAPIDE + SZYBKI PODGLĄD + + + View triage Card + Смотреть первичную карточку + Ver Triage + Voir Carte de Triage + Pokaż kartę segregacyjną + + + Examine Patient + Осмотреть пациента + Examinar Paciente + Examiner Patient + Zbadaj pacjenta + + + Bandage / Fractures + Раны / переломы + Vendajes/Fracturas + Bandages / Fractures + Bandaże / Złamania + + + Medication + Медикаменты + Medicación + Médications + Leki + + + Airway Management + Дыхательные пути + Vías Aéreas + Gestion Des Voie REspiratoire + Drogi oddechowe + + + Advanced Treatments + Специальная медпомощь + Tratamientos Avanzados + Traitement Avancé + Zaawansowane zabiegi + + + Drag/Carry + Тащить/нести + Arrastrar/Cargar + Glisser/Porter + Ciągnij/Nieś + + + Toggle (Self) + Лечить себя/другого раненого + Activer (sois) + Przełącz (na siebie) + Alternar + + + Select triage status + Сортировка + Seleccionar estado de Triage + Selectioner l'état de Triage + Wybierz priorytet + + + Select Head + Выбрать голову + Seleccionar Cabeza + Selectioner Tête + Wybierz głowę + + + Select Torso + Выбрать торс + Seleccionar Torso + Selectioner Torse + Wybierz tors + + + Select Left Arm + Выбрать левую руку + Seleccionar Brazo Izquierdo + Selectioner Bras Gauche + Wybierz lewą rękę + + + Select Right Arm + Выбрать правую руку + Seleccionar Brazo Derecho + Selectioner Bras Droit + Wybierz prawą rękę + + + Select Left Leg + Выбрать левую ногу + Seleccionar Pierna Izquierda + Selectioner Jambe Gauche + Wybierz lewą nogę + + + Select Right Leg + Выбрать правую ногу + Seleccionar Pierna Derecha + Selectioner Jambe Droite + Wybierz prawą nogę + + + Head + Голова + Cabeza + Tête + Głowa + + + Torso + Торс + Torse + Tors + + + Left Arm + Левая рука + Brazo Izquierdo + Bras Gauche + Lewa ręka + + + Right Arm + Правая рука + Brazo Derecho + Bras Droit + Prawa ręka + + + Left Leg + Левая нога + Pierna Izquierda + Jambe Gauche + Lewa noga + + + Right Leg + Правая нога + Pierna Derecha + Jambe Droite + Prawa noga + + + Body Part: %1 + Часть тела: %1 + Parte del cuerpo: %1 + Partie du corps: %1 + Część ciała: %1 + + + Small + малого размера + Pequeña + Petite + małym + + + Medium + среднего размера + Mediana + moyenne + średnim + + + Large + большого размера + Grande + Grande + dużym + + + There are %2 %1 Open Wounds + %2 открытые раны %1 + Hay %2 Heridas Abiertas %1 + Il y a %2 %1 Blessure Ouverte + Widzisz otwarte rany w ilości %2 o %1 rozmiarze + + + There is 1 %1 Open Wound + Открытая рана %1 + Hay 1 Herida Abierta %1 + Il y a 1 blessure ouverte %1 + Widzisz 1 otwartą ranę o %1 rozmiarze + + + There is a partial %1 Open wound + Частично открытая рана %1 + Hay una herida parcial abierta %1 + Il y a une Blessure Patiellement Ouverte %1 + Widzisz częściowo otwartą ranę o %1 rozmiarze + + + There are %2 %1 Bandaged Wounds + %2 перевязанные раны %1 + Hay %2 Heridas %1 Vendadas + Il y a %2 %1 Blessure Bandée + Widzisz %2 zabandażowanych ran o %1 rozmiarze + + + There is 1 %1 Bandaged Wound + 1 перевязанная рана %1 + Hay 1 Herida Vendada %1 + Il y a 1 %1 Blessure Bandée + Widzisz 1 zabandażowaną ranę o %1 rozmiarze + + + There is a partial %1 Bandaged wound + Частично перевязанная рана %1 + Hay una Herida parcial %1 Vendada + Il y a %1 Blessure Partielment Bandée + Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze + + + Normal breathing + Дыхание в норме + Respiración normal + Respiration Normale + Normalny oddech + + + No breathing + Дыхания нет + No respira + Apnée + Brak oddechu + + + Difficult breathing + Дыхание затруднено + Dificultad para respirar + Difficultée Respiratoire + Trudności z oddychaniem + + + Almost no breathing + Дыхания почти нет + Casi sin respirar + Respiration Faible + Prawie brak oddechu + + + Bleeding + Кровотечение + Sangrando + Seignement + Krwawienie zewnętrzne + + + in Pain + Испытывает боль + Con Dolor + A De La Douleur + W bólu + + + Lost a lot of Blood + Большая кровопотеря + Mucha Sangre perdida + A Perdu Bcp de Sang + Stracił dużo krwi + + + Tourniquet [CAT] + Жгут + Torniquete [CAT] + Garot [CAT] + Opaska uciskowa [CAT] + + + Nasopharyngeal Tube [NPA] + Назотрахеальная трубка + Torniquete [CAT] + Canule Naseaupharyngée [NPA] + Rurka nosowo-gardłowa [NPA] + + \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index f9dcda6e0c..f6c44dfcb4 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -1,375 +1,375 @@ - - - - - MicroDAGR GPS - MicroDAGR GPS - GPS MicroDAGR - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - MicroDAGR GPS - GPS MicroDAGR - GPS MicroDAGR - - - MicroDAGR advanced GPS receiver - MicroDAGR - Fortgeschrittener GPS-Empfänger - Receptor avanzado GPS MicroDAGR - Многофункциональный GPS-приёмник. - Zaawansowany odbiornik GPS MicroDAGR - Récepteur GPS MicroDAGR - MicroDAGR pokročílá GPS příjímač - MicroDAGR fejlett GPS vevőegység - Ricevitore GPS avanzato MicroDAGR - Recepitor GPS avançado MicroDAGR - - - Angular Unit: - Unidad angular: - Угловые единицы: - Jednostka kątowa: - Unité angulaire - Winkeleinheit: - Úhlová jednotka: - Szögmértékegység: - Unità angolare: - Unidade Angular: - - - Mils - Mil - Mils - Тысячные - Tysiączne - Mils - Mils - Mil - Mils - Mils: - - - Show Waypoints On Map: - Zeige Wegpunkte auf Karte - Mostrar puntos de ruta en el mapa: - Показывать маршрутные точки на карте: - Pokaż PT na mapie: - Montrer points de passage sur la carte - Ukázat waypointy na mapě: - Útvonalpontok mutatása a térképen: - Mostra waypoint sulla mappa: - Mostrar Waypoints no mapa: - - - Degrees - Grad - Grados - Градусы - Stopnie - Degrés - Stupně - Fok - Gradi - Graus - - - On - Zapnuto - Allumé - Ein - Acceso - Wł. - Ativar - Вкл. - Encendido - Be - - - Off - Vypnuto - Eteint - Aus - Spento - Wył. - Desativar - Выкл. - Apagado - Ki - - - Enter Grid Cords: - Introducir coordenadas de cuadrícula: - Введите сеточные координаты: - Wprowadź współrzędne: - Entrer coordonnées - Koordinaten eingeben: - Napiš souřadnice: - Add meg a rácskoordinátákat: - Introduci griglia coordinate: - Digite as Ccords. do Grid - - - Name of [%1] - Name von [%1] - Nombre de [%1] - Название [%1] - Nazwa [%1] - Nom de %1 - Název [%1] - [%1] neve - Nome di [%1] - Nome do [%1] - - - MGRS-New - UTMREF-NEU - Nuevo-MGRS - MGRS-Новая - MGRS-Nowy - Info-MGRS - MGRS-Nový - MGRS-új - Nuovo MGRS - MGRS-Novo - - - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - WGD - - - Range: - Distancia: - Distanz: - Дистанция: - Dystans: - Distance: - Vzdálenost: - Távolság: - Distanza: - Distância: - - - Compass Direction - Kompass Richtung - Dirección de la brújula - Азимут - Azymut - Azimut - Azimut: - Irányszög - Azimut - Direção na bússula - - - Mark - Markieren - Marca - Отметка - Oznacz - Marque - Označit - Jelölés - Marca - Marca - - - Waypoints - Puntos de ruta - Wegpunkte - Машрутные точки - Waypointy - Punkty trasy - Point de passage - Útvonalpontok - waypoints - Waypoints - - - Connect To - Conectar a - Подключиться к - Verbinde zu - Připojit k - Podłącz do - Connecter - Csatlakozás - Collega a - Conectar à - - - Settings - Paramètres - Einstellungen - Configuración - Настройки - Nastavení - Ustawienia - Beállítások - Impostaizoni - Opções - - - SetWP - WP setzen - Fijar PR - Установить МТ - Nastavit WP - UstawPT - Définir point de passage - UP Beállítása - Definisci WayPoints - Definir WP - - - Add - Hinzufügen - Añadir - Добавить - Přidat - Dodaj - Ajouter - Hozzáadás - Aggiungi - Adicionar - - - Delete - Smazat - Supprimer - Löschen - Elimina - Usuń - Excluir - Удалить - Borrar - Törlés - - - Toggle MicroDAGR Display Mode - MicoDAGR Anzeigemodus wechseln - Cambiar modo de pantalla del MicroDAGR - Сменить режим показа MicroDAGR - Przełącz GUI MicroDAGR - Basculer le mode d'affichage MicroDAGR - Přepnout zobrazení MircroDAGRu - MicroDAGR kijelzési mód váltása - Alterna modalità display MicroDAGR - Alternar Modo de Display do MicroDAGR - - - Show MicoDAGR - Zeige MicroDAGR - Mostrar MicroDAGR - Показать MicroDAGR - Ukázat MicroDAGR - Pokaż MicroDAGR - Afficher MicroDAGR - MicroDAGR mutatása - Mostra MicroDAGR - Mostrar MicroDAGR - - - Configure MicroDAGR - Konfiguriere MicroDAGR - Configurar MicroDAGR - Настроить MicroDAGR - Konfigurovat MicroDAGR - Otwórz MicroDAGR - Configurer MicroDAGR - MicroDAGR konfigurálása - ConfiguraMicroDAGR - Configurar MicroDAGR - - - Close MicroDAGR - Schließe MicroDAGR - Cerrar MicroDAGR - Закрыть MicroDAGR - Zavřít MicroDAGR - Zamknij MicroDAGR - Fermer MicroDAGR - MicroDAGR elrejtése - Chiudi MicroDAGR - Fechar MicroDAGR - - - MicroDAGR Map Fill - Wypełnienie mapy MicroDAGR - Relleno del mapa MicroDAGR - MicroDAGR - Vyplnění mapy - MicroDAGR-Kartenfüllung - Preenchimento de mapa do MicroDAGR - MicroDAGR térképkitöltés - Заполнение карты MicroDAGR - - - MicroDAGR Map Fill - Wypełnienie mapy MicroDAGR - Relleno del mapa MicroDAGR - MicroDAGR - Vyplnění mapy - MicroDAGR-Kartenfüllung - Preenchimento de mapa do MicroDAGR - MicroDAGR térképkitöltés - Заполнение карты MicroDAGR - - - How much map data is filled on MicroDAGR's - Jak duża część informacji mapy jest załadowana do MicroDAGR? - Cuanta información está disponible en el mapa del MicroDAG - Wie viel Daten auf einem MicroDAGR zu sehen sind - Kolik informací je načteno do MicroDAGR? - Quanta informação é preenchida no mapa do MicroDAGR - Mennyi térképadatot tartalmaz a MicroDAGR - Сколько данных должно отображаться на карте MicroDAGR - - - Full Satellite + Buildings - Pełna satelitarna + budynki - Satelite completo + Edificios - Satellitenbild + Gebäude - Satelit + Budovy - Satélite completo + Edifícios - Teljes műholdas + épületek - Спутник + Здания - - - Topographical + Roads - Topograficzna + drogi - Topografico + Carreteras - Topografisch + Straßen - Topografické + Cesty - Topográfico + Estradas - Topográfia + utak - Топография + Дороги - - - None (Cannot use map view) - Żadna (wyłącza ekran mapy) - Nada (No se puede el mapa) - Keine (kann keine Kartenansicht verwenden) - Žádný (Nelze použít zobrazení mapy) - Nada (Não pode usar a tela de mapa) - Semmi (nem használható a térképnézet) - Не показывать (запрещает использовать режим карты) - - - Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo - Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo - Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo - Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo - Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo - Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo - Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. <br />Forrás: microDAGR.pbo - Контролирует, сколько данных должно отображаться на карте устройств MicroDAGR. Ограничивает объем отображаемых данных на миникарте.<br />Источник: microDAGR.pbo - - + + + + + MicroDAGR GPS + MicroDAGR GPS + GPS MicroDAGR + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + MicroDAGR GPS + GPS MicroDAGR + GPS MicroDAGR + + + MicroDAGR advanced GPS receiver + MicroDAGR - Fortgeschrittener GPS-Empfänger + Receptor avanzado GPS MicroDAGR + Многофункциональный GPS-приёмник. + Zaawansowany odbiornik GPS MicroDAGR + Récepteur GPS MicroDAGR + MicroDAGR pokročílá GPS příjímač + MicroDAGR fejlett GPS vevőegység + Ricevitore GPS avanzato MicroDAGR + Recepitor GPS avançado MicroDAGR + + + Angular Unit: + Unidad angular: + Угловые единицы: + Jednostka kątowa: + Unité angulaire + Winkeleinheit: + Úhlová jednotka: + Szögmértékegység: + Unità angolare: + Unidade Angular: + + + Mils + Mil + Mils + Тысячные + Tysiączne + Mils + Mils + Mil + Mils + Mils: + + + Show Waypoints On Map: + Zeige Wegpunkte auf Karte + Mostrar puntos de ruta en el mapa: + Показывать маршрутные точки на карте: + Pokaż PT na mapie: + Montrer points de passage sur la carte + Ukázat waypointy na mapě: + Útvonalpontok mutatása a térképen: + Mostra waypoint sulla mappa: + Mostrar Waypoints no mapa: + + + Degrees + Grad + Grados + Градусы + Stopnie + Degrés + Stupně + Fok + Gradi + Graus + + + On + Zapnuto + Allumé + Ein + Acceso + Wł. + Ativar + Вкл. + Encendido + Be + + + Off + Vypnuto + Eteint + Aus + Spento + Wył. + Desativar + Выкл. + Apagado + Ki + + + Enter Grid Cords: + Introducir coordenadas de cuadrícula: + Введите сеточные координаты: + Wprowadź współrzędne: + Entrer coordonnées + Koordinaten eingeben: + Napiš souřadnice: + Add meg a rácskoordinátákat: + Introduci griglia coordinate: + Digite as Ccords. do Grid + + + Name of [%1] + Name von [%1] + Nombre de [%1] + Название [%1] + Nazwa [%1] + Nom de %1 + Název [%1] + [%1] neve + Nome di [%1] + Nome do [%1] + + + MGRS-New + UTMREF-NEU + Nuevo-MGRS + MGRS-Новая + MGRS-Nowy + Info-MGRS + MGRS-Nový + MGRS-új + Nuovo MGRS + MGRS-Novo + + + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + WGD + + + Range: + Distancia: + Distanz: + Дистанция: + Dystans: + Distance: + Vzdálenost: + Távolság: + Distanza: + Distância: + + + Compass Direction + Kompass Richtung + Dirección de la brújula + Азимут + Azymut + Azimut + Azimut: + Irányszög + Azimut + Direção na bússula + + + Mark + Markieren + Marca + Отметка + Oznacz + Marque + Označit + Jelölés + Marca + Marca + + + Waypoints + Puntos de ruta + Wegpunkte + Машрутные точки + Waypointy + Punkty trasy + Point de passage + Útvonalpontok + waypoints + Waypoints + + + Connect To + Conectar a + Подключиться к + Verbinde zu + Připojit k + Podłącz do + Connecter + Csatlakozás + Collega a + Conectar à + + + Settings + Paramètres + Einstellungen + Configuración + Настройки + Nastavení + Ustawienia + Beállítások + Impostaizoni + Opções + + + SetWP + WP setzen + Fijar PR + Установить МТ + Nastavit WP + UstawPT + Définir point de passage + UP Beállítása + Definisci WayPoints + Definir WP + + + Add + Hinzufügen + Añadir + Добавить + Přidat + Dodaj + Ajouter + Hozzáadás + Aggiungi + Adicionar + + + Delete + Smazat + Supprimer + Löschen + Elimina + Usuń + Excluir + Удалить + Borrar + Törlés + + + Toggle MicroDAGR Display Mode + MicoDAGR Anzeigemodus wechseln + Cambiar modo de pantalla del MicroDAGR + Сменить режим показа MicroDAGR + Przełącz GUI MicroDAGR + Basculer le mode d'affichage MicroDAGR + Přepnout zobrazení MircroDAGRu + MicroDAGR kijelzési mód váltása + Alterna modalità display MicroDAGR + Alternar Modo de Display do MicroDAGR + + + Show MicoDAGR + Zeige MicroDAGR + Mostrar MicroDAGR + Показать MicroDAGR + Ukázat MicroDAGR + Pokaż MicroDAGR + Afficher MicroDAGR + MicroDAGR mutatása + Mostra MicroDAGR + Mostrar MicroDAGR + + + Configure MicroDAGR + Konfiguriere MicroDAGR + Configurar MicroDAGR + Настроить MicroDAGR + Konfigurovat MicroDAGR + Otwórz MicroDAGR + Configurer MicroDAGR + MicroDAGR konfigurálása + ConfiguraMicroDAGR + Configurar MicroDAGR + + + Close MicroDAGR + Schließe MicroDAGR + Cerrar MicroDAGR + Закрыть MicroDAGR + Zavřít MicroDAGR + Zamknij MicroDAGR + Fermer MicroDAGR + MicroDAGR elrejtése + Chiudi MicroDAGR + Fechar MicroDAGR + + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + Relleno del mapa MicroDAGR + MicroDAGR - Vyplnění mapy + MicroDAGR-Kartenfüllung + Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés + Заполнение карты MicroDAGR + + + MicroDAGR Map Fill + Wypełnienie mapy MicroDAGR + Relleno del mapa MicroDAGR + MicroDAGR - Vyplnění mapy + MicroDAGR-Kartenfüllung + Preenchimento de mapa do MicroDAGR + MicroDAGR térképkitöltés + Заполнение карты MicroDAGR + + + How much map data is filled on MicroDAGR's + Jak duża część informacji mapy jest załadowana do MicroDAGR? + Cuanta información está disponible en el mapa del MicroDAG + Wie viel Daten auf einem MicroDAGR zu sehen sind + Kolik informací je načteno do MicroDAGR? + Quanta informação é preenchida no mapa do MicroDAGR + Mennyi térképadatot tartalmaz a MicroDAGR + Сколько данных должно отображаться на карте MicroDAGR + + + Full Satellite + Buildings + Pełna satelitarna + budynki + Satelite completo + Edificios + Satellitenbild + Gebäude + Satelit + Budovy + Satélite completo + Edifícios + Teljes műholdas + épületek + Спутник + Здания + + + Topographical + Roads + Topograficzna + drogi + Topografico + Carreteras + Topografisch + Straßen + Topografické + Cesty + Topográfico + Estradas + Topográfia + utak + Топография + Дороги + + + None (Cannot use map view) + Żadna (wyłącza ekran mapy) + Nada (No se puede el mapa) + Keine (kann keine Kartenansicht verwenden) + Žádný (Nelze použít zobrazení mapy) + Nada (Não pode usar a tela de mapa) + Semmi (nem használható a térképnézet) + Не показывать (запрещает использовать режим карты) + + + Controls how much data is filled on the microDAGR items. Less data restricts the map view to show less on the minimap.<br />Source: microDAGR.pbo + Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.<br />Źródło: microDAGR.pbo + Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.<br />Fuente: microDAGR.pbo + Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.<br />Quelle: microDAGR.pbo + Tento modul umožňuje kontrolovat, kolik informací je obsaženo v MicroDAGR. Menší množství dat omezené zobrazením mapy ukazují méně věcí na minimapě.<br />Zdroj: microDAGR.pbo + Controla quantos dados são preenchidos nos itens microDAGR. Menos dados restringe a visualização de mapa para mostrar menos informações no minimapa<br/>Fonte: MicroDAGR.pbo + Meghatárroza a MicroDAGR objektumok térképének tartalmát. A kevesebb adat korlátozza a térképnézeti módot az eszközön. <br />Forrás: microDAGR.pbo + Контролирует, сколько данных должно отображаться на карте устройств MicroDAGR. Ограничивает объем отображаемых данных на миникарте.<br />Источник: microDAGR.pbo + + \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 0e36b25905..5e80e00e30 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -1,131 +1,131 @@ - - - - - Advanced Missile Guidance - Guiado Avanzado de Misiles - Guidage avancé de missile - Zaawansowane naprowadzanie rakiet - Erweitertes Raketenlenksystem - Pokročilé řízení střel - Guida missili avanzata - Avançado Missile Guidance - Fejlett rakétairányító - Продвинутое наведение ракет - - - Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. - Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. - Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. - Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. - El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. - Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. - Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. - A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. - Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. - Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. - - - Hydra-70 DAGR Missile - Misil Hydra-70 DAGR - Hydra-70 DAGR - Hydra-70 DAGR - Hydra-70 DAGR Rackete - Hydra-70 DAGR - Missile Hydra-70 DAGR - Míssil Hydra-70 DAGR - Hydra-70 DAGR rakéta - Hydra-70 DAGR - - - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - DAGR - - - Hydra-70 DAGR Laser Guided Missile - Misil guiado por láser Hydra-70 DAGR - Missile à guidage laser Hydra-70 DAGR - 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 - Míssil guiado a laser Hydra-70 DAGR - Hydra-70 DAGR lézer-irányított rakéta - Управляемая ракета лазерного наведения Hydra-70 DAGR - - - Hellfire II AGM-114K Missile - Misil Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Hellfire II AGM-114K - Missile Hellfire II AGM-114K - Míssil Hellfire II AGM-114K - Hellfire II AGM-114K rakéta - Hellfire II AGM-114K - - - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - AGM-114K - - - Hellfire II AGM-114K Laser Guided Missile - Misil guiado por láser Hellfire II AGM-114K - Missile à guidage laser Hellfire II AGM-114K - 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 - Míssil guiado a laser Hellfire II AGM-114K - Hellfire II AGM-114K lézer-irányított rakéta - Управляемая ракета лазерного наведения Hellfire II AGM-114K - - - Off - Wyłącz - Desactivado - Aus - Vypnout - Desligado - Ki - Выкл. - - - Player Only - Tylko gracz - Solo jugador - Nur Spieler - Pouze hráči - Somente jogador - Csak játékosok - Только игрок - - - Player and AI - Gracz oraz AI - Jugador e IA - Spieler und KI - Hráči a AI - Jogador e IA - Játékosok és AI - Игрок и боты - - + + + + + Advanced Missile Guidance + Guiado Avanzado de Misiles + Guidage avancé de missile + Zaawansowane naprowadzanie rakiet + Erweitertes Raketenlenksystem + Pokročilé řízení střel + Guida missili avanzata + Avançado Missile Guidance + Fejlett rakétairányító + Продвинутое наведение ракет + + + Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types. + Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych. + Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile. + Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия. + El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil. + Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. + Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile. + A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez. + Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis. + Pokočilé navádění raket (AMG) poskytuje několik vylepšení pro lepší zaměření a následnou střelbu. Je to prvek vyžadovaný u typu zbraní jako jsou rakety. + + + Hydra-70 DAGR Missile + Misil Hydra-70 DAGR + Hydra-70 DAGR + Hydra-70 DAGR + Hydra-70 DAGR Rackete + Hydra-70 DAGR + Missile Hydra-70 DAGR + Míssil Hydra-70 DAGR + Hydra-70 DAGR rakéta + Hydra-70 DAGR + + + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + DAGR + + + Hydra-70 DAGR Laser Guided Missile + Misil guiado por láser Hydra-70 DAGR + Missile à guidage laser Hydra-70 DAGR + 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 + Míssil guiado a laser Hydra-70 DAGR + Hydra-70 DAGR lézer-irányított rakéta + Управляемая ракета лазерного наведения Hydra-70 DAGR + + + Hellfire II AGM-114K Missile + Misil Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Hellfire II AGM-114K + Missile Hellfire II AGM-114K + Míssil Hellfire II AGM-114K + Hellfire II AGM-114K rakéta + Hellfire II AGM-114K + + + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + AGM-114K + + + Hellfire II AGM-114K Laser Guided Missile + Misil guiado por láser Hellfire II AGM-114K + Missile à guidage laser Hellfire II AGM-114K + 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 + Míssil guiado a laser Hellfire II AGM-114K + Hellfire II AGM-114K lézer-irányított rakéta + Управляемая ракета лазерного наведения Hellfire II AGM-114K + + + Off + Wyłącz + Desactivado + Aus + Vypnout + Desligado + Ki + Выкл. + + + Player Only + Tylko gracz + Solo jugador + Nur Spieler + Pouze hráči + Somente jogador + Csak játékosok + Только игрок + + + Player and AI + Gracz oraz AI + Jugador e IA + Spieler und KI + Hráči a AI + Jogador e IA + Játékosok és AI + Игрок и боты + + \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index e3860b177b..c1c847d051 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,174 +1,174 @@ - - - - - ACE Mission Modules - ACE Moduły misji - Módulo de misiones ACE - ACE-Missionsmodule - ACE Moduly mise - Módulo de missões ACE - ACE küldetési modulok - Модули миссий ACE - - - Ambiance Sounds [ACE] - Dźwięki [ACE] - [ACE] Sonidos ambiente - Umgebungsgeräusche [ACE] - Zvuky prostředí [ACE] - [ACE] Sons ambientes - Ambiens hangok [ACE] - Звук окружения [ACE] - - - Sounds - Dźwięki - Sonidos - Sounds - Zvuky - Sons - Hangok - Звуки - - - Class names of the ambiance sounds to be played. Seperated by ',' - Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' - Class names de los sonidos ambiente que se reproducirán. Separados por ',' - Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," - Class names zvuků prostředí, které budou přehrány. Oddělené ',' - Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por "," - Имена классов звуков окружения, которые должны проигрываться. Разделенные ',' - - - Minimal Distance - Minimalny dystans - Distancia mínima - Mindestabstand - Minimální vzdálenost - Distância mínima - Minimális távolság - Минимальная дистанция - - - Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) - Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi - Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos - Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest - Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. - Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. - Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között - Используется для расчета случайной позиции и указывает минимальное расстояние между игроками и источниками звука - - - Maximum Distance - Maksymalny dystans - Distancia máxima - Maximalabstand - Maximální vzdálenost - Distância máxima - Maximális távolság - Максимальная дистанция - - - Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) - Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi - Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos - Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest - Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. - Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. - Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között - Используется для расчета случайной позиции и указывает максимальное расстояние между игроками и источниками звука - - - Minimal Delay - Minimalne opóźnienie - Retraso mínimo - Minimale Verzögerung - Minimální prodleva - Atraso mínimo - Minimum késleltetés - Минимальная задержка - - - Minimal delay between sounds played - Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami - Retraso mínimo entre los sonidos reproducidos - Minimale Verzögerung zwischen abzuspielenden Sounds - Minimální prodleva mezi přehrávanými zvuky - Atraso mínimo entre os sons reproduzidos - Minimum késleltetés a lejátszott hangok között - Минимальная задержка между воспроизведением звуков - - - Maximum Delay - Maksymalne opóźnienie - Retraso máximo - Maximale Verzögerung - Maximální prodleva - Atraso máximo - Maximum késleltetés - Максимальная задержка - - - Maximum delay between sounds played - Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami - Retraso máximo entre los sonidos reproducidos - Maximale Verzögerung zwischen abzuspielenden Sounds - Maximální prodleva mezi přehrávanými zvuky - Atraso máximo entre os sons reproduzidos - Maximum késleltetés a lejátszott hangok között - Максимальная задержка между воспроизведением звуков - - - Follow Players - Podążaj za graczami - Seguir jugadores - Spielern folgen - Následovat hráče - Seguir jogadores - Játékosok követése - Следовать за игроками - - - Follow players. If set to false, loop will play sounds only nearby logic position. - Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki. - Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica. - Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. - Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. - Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. - Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. - Следовать за игроками. Если установить в Ложь, звуки будут циклически проигрываться только около позиции Логики. - - - Volume - Głośność - Volumen - Lautstärke - Hlasitost - Volume - Hangerő - Громкость - - - The volume of the sounds played - Głośność odtwarzanych dźwięków - Volumen de los sonidos reproducidos - Lautstärke der abzuspielenden Sounds - Hlasitost přehrávaného zvuku - O volume em que os sons serão reproduzidos - A lejátszott hangok hangereje - Громкость воспроизводимых звуков - - - Ambiance sounds loop (synced across MP) - Pętla odtwarzania dzwięków (synchronizowana na MP) - Bucle de sonidos ambiente (sincronizados en MP) - Umgebungsgeräusch-Schleife (im MP synchronisiert) - Smyčka okkolního zvuku (synchronizováno v MP) - Loop de sons ambientes (sincronizados através do MP) - Ambiens hangok folyamatossága (MP alatt szinkronizálva) - Циклически воспроизодимые звуки окружения (синхронизируется по сети между игроками в мультиплеере) - - + + + + + ACE Mission Modules + ACE Moduły misji + Módulo de misiones ACE + ACE-Missionsmodule + ACE Moduly mise + Módulo de missões ACE + ACE küldetési modulok + Модули миссий ACE + + + Ambiance Sounds [ACE] + Dźwięki [ACE] + [ACE] Sonidos ambiente + Umgebungsgeräusche [ACE] + Zvuky prostředí [ACE] + [ACE] Sons ambientes + Ambiens hangok [ACE] + Звук окружения [ACE] + + + Sounds + Dźwięki + Sonidos + Sounds + Zvuky + Sons + Hangok + Звуки + + + Class names of the ambiance sounds to be played. Seperated by ',' + Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' + Class names de los sonidos ambiente que se reproducirán. Separados por ',' + Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," + Class names zvuků prostředí, které budou přehrány. Oddělené ',' + Nomes de classe dos sons de ambiente para serem reproduzidos. Separados por "," + Имена классов звуков окружения, которые должны проигрываться. Разделенные ',' + + + Minimal Distance + Minimalny dystans + Distancia mínima + Mindestabstand + Minimální vzdálenost + Distância mínima + Minimális távolság + Минимальная дистанция + + + Used for calculating a random position and sets the minimal distance between the players and the played sound file(s) + Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest + Používá se pro výpočet náhodné pozice a určuje minimální vzdálenost mezi hráči a přehrávaným zvukem. + Usada para calcular uma posição aleatória e definir a distância mínima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a minimum távolságot a játékosok és a lejátszott hangfájl(ok) között + Используется для расчета случайной позиции и указывает минимальное расстояние между игроками и источниками звука + + + Maximum Distance + Maksymalny dystans + Distancia máxima + Maximalabstand + Maximální vzdálenost + Distância máxima + Maximális távolság + Максимальная дистанция + + + Used for calculating a random position and sets the maximum distance between the players and the played sound file(s) + Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi + Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest + Používá se pro výpočet náhodné pozice a určuje maximální vzdálenost mezi hráči a přehrávaným zvukem. + Usado para calcular uma posição aleatória e definir uma distância máxima entre os jogadores e os arquivos de sons que estão sendo reproduzidos. + Egy véletlenszerű pozíció számításához használt érték, amihez megadja a maximum távolságot a játékosok és a lejátszott hangfájl(ok) között + Используется для расчета случайной позиции и указывает максимальное расстояние между игроками и источниками звука + + + Minimal Delay + Minimalne opóźnienie + Retraso mínimo + Minimale Verzögerung + Minimální prodleva + Atraso mínimo + Minimum késleltetés + Минимальная задержка + + + Minimal delay between sounds played + Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Retraso mínimo entre los sonidos reproducidos + Minimale Verzögerung zwischen abzuspielenden Sounds + Minimální prodleva mezi přehrávanými zvuky + Atraso mínimo entre os sons reproduzidos + Minimum késleltetés a lejátszott hangok között + Минимальная задержка между воспроизведением звуков + + + Maximum Delay + Maksymalne opóźnienie + Retraso máximo + Maximale Verzögerung + Maximální prodleva + Atraso máximo + Maximum késleltetés + Максимальная задержка + + + Maximum delay between sounds played + Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Retraso máximo entre los sonidos reproducidos + Maximale Verzögerung zwischen abzuspielenden Sounds + Maximální prodleva mezi přehrávanými zvuky + Atraso máximo entre os sons reproduzidos + Maximum késleltetés a lejátszott hangok között + Максимальная задержка между воспроизведением звуков + + + Follow Players + Podążaj za graczami + Seguir jugadores + Spielern folgen + Následovat hráče + Seguir jogadores + Játékosok követése + Следовать за игроками + + + Follow players. If set to false, loop will play sounds only nearby logic position. + Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki. + Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica. + Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. + Následuj hráče. Pokud je FALSE, smyčka zvuku bude přehrávána na nejbližší pozici logiki. + Segue os jogadores. Se esta desabilitado (falso), o loop reproduzirá os sons somente perto de sua posição lógica. + Játékosok követése. Ha le van tiltva, az ismétlés csak a legközelebbi logikai ponton játszik le hangokat. + Следовать за игроками. Если установить в Ложь, звуки будут циклически проигрываться только около позиции Логики. + + + Volume + Głośność + Volumen + Lautstärke + Hlasitost + Volume + Hangerő + Громкость + + + The volume of the sounds played + Głośność odtwarzanych dźwięków + Volumen de los sonidos reproducidos + Lautstärke der abzuspielenden Sounds + Hlasitost přehrávaného zvuku + O volume em que os sons serão reproduzidos + A lejátszott hangok hangereje + Громкость воспроизводимых звуков + + + Ambiance sounds loop (synced across MP) + Pętla odtwarzania dzwięków (synchronizowana na MP) + Bucle de sonidos ambiente (sincronizados en MP) + Umgebungsgeräusch-Schleife (im MP synchronisiert) + Smyčka okkolního zvuku (synchronizováno v MP) + Loop de sons ambientes (sincronizados através do MP) + Ambiens hangok folyamatossága (MP alatt szinkronizálva) + Циклически воспроизодимые звуки окружения (синхронизируется по сети между игроками в мультиплеере) + + \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 976938d6d3..22e4ed5244 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -1,130 +1,130 @@ - - - - - 82mm Rangetable - 82mm Distanztabelle - Tabela strzelnicza 82mm - Table de tir 82mm - 82 мм Таблица дальностей и прицелов - Tabla de distancias de 82mm - 82mm hatótáv-tábla - Tabela de distâncias de para 82mm - 82mm Rangetable - Tavola di tiro 82mm - - - Range Table for the MK6 82mm Mortar - Distanztabelle für den Mk6 82mm Mortar - Tabela strzelnicza dla moździerza 82mm MK6 - Table de tir pour le mortier MK6 82mm - Таблица дальностей и прицелов для MK6 82 мм мортиры - Tabla de distancias para el mortero MK6 de 82mm - Hatótáv-tábla a MK6 82mm-es mozsárhoz - Tabela de distâncias para morteiro MK6 82mm - Rangetable pro MK6 82mm minomet - Tavola di tiro per il mortaio calibro 82mm MK6 - - - Open 82mm Rangetable - Öffne 82mm Distanztabelle - Otwórz tabelę strzelniczą 82mm - Ouvrir la table de tir 82mm - Открыть 82 мм Таблицу дальностей и прицелов - Abrir tabla de distancias de 82mm - 82mm hatótáv-tábla megnyitása - Abrir tabela de distâncias para 82mm - Otevřít 82mm Rangetable - Apri la tavola di tiro 82mm - - - Charge - Ladung - Charge - Ładunek - Зарядить - Carga - Töltés - Carregar - Nabít - Carica - - - MK6 Settings - Moździerz MK6 - Ustawienia - Ajustes MK6 - MK6-Einstellungen - MK6 - Nastavení - Ajustes do MK6 - MK6 beállítások - Настройки MK6 - - - Air Resistance - Opór powietrza - Resistencia al aire - Luftwiderstand - Odpor vzduchu - Resistência do Ar - Légellenállás - Сопротивление воздуха - - - For Player Shots, Model Air Resistance and Wind Effects - Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy - Para disparos del jugador, modelo de resistencia al aire y efectos de viento - Für Spielerschüsse, Luftwiderstand und Windeffekte - Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek - Para disparos do jogador, modelo de resistência de ar e efeitos de vento - Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás - Для выстрелов игрока. Моделирует сопротивление воздуха и эффект ветра - - - Allow MK6 Computer - Komputer MK6 - Habilitar ordenador del MK6 - Erlaube MK6-Computer - MK6 - Povolit počítač - Permitir computador do MK6 - MK6 számítógép engedélyezése - Разрешить компьютер MK6 - - - Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) - Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) - Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) - Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) - Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) - Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) - A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) - Показывает компьютер и дальномер (это НУЖНО отключить, если вы включаете сопротивление воздуха) - - - Allow MK6 Compass - Kompas MK6 - Habilitar brujula del MK6 - Erlaube MK6-Kompass - MK6 - Povolit kompas - Permitir bússula do MK6 - MK6 iránytű engedélyezése - Разрешить компас MK6 - - - Show the MK6 Digital Compass - Pokaż kompas MK6 - Muestra la brujula digital en el MK6 - Zeige MK6-Digitaler-Kompass - MK6 - Zobrazit digitální kompas - Mostra a bússula digital do MK6 - Az MK6 digitális iránytű megjelenítése - Показывает цифровой компас MK6 - - - Moduł ten pozwala dostosować ustawienia moździerza MK6. - Dieses Modul erlaubt das Einstellen des MK6-Mörsers. - Tento modul umožňuje nastavení minometu MK6. - Este módulo permite que você ajuste o morteiro MK6. - Модуль настройки миномета MK6 - - + + + + + 82mm Rangetable + 82mm Distanztabelle + Tabela strzelnicza 82mm + Table de tir 82mm + 82 мм Таблица дальностей и прицелов + Tabla de distancias de 82mm + 82mm hatótáv-tábla + Tabela de distâncias de para 82mm + 82mm Rangetable + Tavola di tiro 82mm + + + Range Table for the MK6 82mm Mortar + Distanztabelle für den Mk6 82mm Mortar + Tabela strzelnicza dla moździerza 82mm MK6 + Table de tir pour le mortier MK6 82mm + Таблица дальностей и прицелов для MK6 82 мм мортиры + Tabla de distancias para el mortero MK6 de 82mm + Hatótáv-tábla a MK6 82mm-es mozsárhoz + Tabela de distâncias para morteiro MK6 82mm + Rangetable pro MK6 82mm minomet + Tavola di tiro per il mortaio calibro 82mm MK6 + + + Open 82mm Rangetable + Öffne 82mm Distanztabelle + Otwórz tabelę strzelniczą 82mm + Ouvrir la table de tir 82mm + Открыть 82 мм Таблицу дальностей и прицелов + Abrir tabla de distancias de 82mm + 82mm hatótáv-tábla megnyitása + Abrir tabela de distâncias para 82mm + Otevřít 82mm Rangetable + Apri la tavola di tiro 82mm + + + Charge + Ladung + Charge + Ładunek + Зарядить + Carga + Töltés + Carregar + Nabít + Carica + + + MK6 Settings + Moździerz MK6 - Ustawienia + Ajustes MK6 + MK6-Einstellungen + MK6 - Nastavení + Ajustes do MK6 + MK6 beállítások + Настройки MK6 + + + Air Resistance + Opór powietrza + Resistencia al aire + Luftwiderstand + Odpor vzduchu + Resistência do Ar + Légellenállás + Сопротивление воздуха + + + For Player Shots, Model Air Resistance and Wind Effects + Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy + Para disparos del jugador, modelo de resistencia al aire y efectos de viento + Für Spielerschüsse, Luftwiderstand und Windeffekte + Pro hráčovu střelbu, Model odporu vzduchu a povětrných podmínek + Para disparos do jogador, modelo de resistência de ar e efeitos de vento + Játékos általi lövésekhez, legyen-e számított légellenállás és szélhatás + Для выстрелов игрока. Моделирует сопротивление воздуха и эффект ветра + + + Allow MK6 Computer + Komputer MK6 + Habilitar ordenador del MK6 + Erlaube MK6-Computer + MK6 - Povolit počítač + Permitir computador do MK6 + MK6 számítógép engedélyezése + Разрешить компьютер MK6 + + + Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance) + Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza) + Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire) + Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) + Zobrazit počítač a dálkoměr (toto MUSÍ být odstraněno pokud je zapnut odpor vzduchu) + Mostra o computador e o medidor de distância (estes DEVEM ser removidos se você habilitar resistência do ar) + A távmérő és számítógép megjelenítése (ezeket el KELL távolítani ha a légellenállás engedélyezve van) + Показывает компьютер и дальномер (это НУЖНО отключить, если вы включаете сопротивление воздуха) + + + Allow MK6 Compass + Kompas MK6 + Habilitar brujula del MK6 + Erlaube MK6-Kompass + MK6 - Povolit kompas + Permitir bússula do MK6 + MK6 iránytű engedélyezése + Разрешить компас MK6 + + + Show the MK6 Digital Compass + Pokaż kompas MK6 + Muestra la brujula digital en el MK6 + Zeige MK6-Digitaler-Kompass + MK6 - Zobrazit digitální kompas + Mostra a bússula digital do MK6 + Az MK6 digitális iránytű megjelenítése + Показывает цифровой компас MK6 + + + Moduł ten pozwala dostosować ustawienia moździerza MK6. + Dieses Modul erlaubt das Einstellen des MK6-Mörsers. + Tento modul umožňuje nastavení minometu MK6. + Este módulo permite que você ajuste o morteiro MK6. + Модуль настройки миномета MK6 + + \ No newline at end of file diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml index d98c3a712b..e9abbb8e8b 100644 --- a/addons/mx2a/stringtable.xml +++ b/addons/mx2a/stringtable.xml @@ -1,25 +1,25 @@ - - - - - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - MX-2A - - - Thermal imaging device - Wärmebildgerät - Monokular termowizyjny - Dispositivo de imagen térmica - Termální dalekohled - Dispositivo de imagem térmica - Hőleképező készülék - Тепловизионный прибор - - + + + + + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + MX-2A + + + Thermal imaging device + Wärmebildgerät + Monokular termowizyjny + Dispositivo de imagen térmica + Termální dalekohled + Dispositivo de imagem térmica + Hőleképező készülék + Тепловизионный прибор + + \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 26db389ce5..ae03267035 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -1,352 +1,352 @@ - - - - - Show Names - Namen anzeigen - Mostrar nombres - Afficher noms - Zobrazit jména - Pokaż imiona - Nevek mutatása - Показать имена - Mostra i nomi - Mostrar nomes - - - Show player names - Spielernamen anzeigen - Mostrar nombres de jugadores - Pokaż imiona graczy - Afficher les nom des joueurs - Játékosnevek mutatása - Zobrazit jména hráčů - Mostrar nomes de jogadores - Mostra i nomi dei giocatori - Показывать имена игроков (включить имена) - - - Show player name only on cursor (requires player names) - Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) - Mostrar nombres de jugadores solo al apuntarles (requiere Mostrar nombres de jugadores) - Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen) - Noms uniquement sous le curseur (si noms affichés) - Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů) - Mostra i nomi solo se puntati (richiede mostra nomi abilitato) - Mostrar nome de jogador somente no cursor (requer nome de jogadores) - Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) - Показать имена игроков только под курсором (при включенных именах) - - - Show player name only on keypress (requires player names) - Spielernamen nur auf Tastendruck anzeigen (benötigt Spielernamen) - Mostrar nombres solo al pulsar la tecla(requiere Mostrar nombres de jugadores) - Noms uniquement sur pression de la touche (si noms affichés) - Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) - Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) - Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) - Показать имена игроков только по нажатию клавиши (при включенных именах) - Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) - Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) - - - Show player ranks (requires player names) - Spielerränge anzeigen (benötig Spielernamen) - Pokaż rangi graczy (wymagana opcja Pokaż imiona graczy) - Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores) - Grade des joueurs (si noms affichés) - Zobrazit hodnosti hráčů (vyžaduje jména hráčů) - Mostra i gradi (richiede mostra nomi abilitato) - Mostrar patente de jogadores (requer nome de jogadores) - Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) - Показывать звания игроков (при вкл. именах) - - - Show vehicle crew info - Afficher les informations de l'équipage - Fahrzeugbesatzung anzeigen - Mostrar tripulantes - Pokaż załogę pojazdu - Zobrazit info o posádce vozidla - Показывать информацию об экипаже - Jármű-legénység adatainak mutatása - Mostrar tripulantes - Mostra l'elenco del personale a bordo - - - Show name tags for AI units - Namen für KI Einheiten anzeigen - Mostrar etiquetas de nombre para unidades IA - Показывать имена ботов - Zobrazit jména AI - Wyświetl imiona jednostek AI - Afficher les noms des IA - Névcímkék mutatása MI-egységeknél - Mostra i nomi delle le unità AI - Mostrar nomes para unidades de IA - - - Show SoundWaves (requires player names) - Schallwellen anzeigen (benötigt Spielernamen) - Mostrar onda sonora (requiere Mostrar nombres de jugadores) - Индикатор разговора (при вкл. именах) - Zobrazit SoundWaves (vyžaduje jména hráčů) - Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) - Afficher "qui parle" (si noms affichés) - "Hanghullámok" mutatása (a nevek mutatása szükséges) - Mostra movimento audio (richiede mostra nomi abilitato) - Mostrar onda sonora (requer nome de jogadores) - - - Default Nametag Color (Non Group Members) - Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) - Цвет меток игроков (не членов групп) - Color de etiquetas de nombre por defecto (No miembros de grupo) - Domyślny kolor imion (członkowie spoza grupy) - Couleur d'affichage par défaut (si dans aucun groupe) - Standardní barva jmenovek (pro nečleny jednotky) - Alap névcímke-szín (csoporton kívüli személyek) - Colore dei nomi non appartenenti al gruppo - Cor padrão do nome (unidades fora do grupo) - - - Name Tags - Ustawienia imion - Etiquetas de nombre - Namensanzeigen - Jmenovky - Etiquetas de nome - Névcímkék - Имена игроков - - - Player Names View Dist. - Zasięg imion graczy - Distancia de vision para nombres de jugadores - Spielernamen-Distanz - Vzdálenost zobrazení jména hráčů - Distância de visão dos nomes dos jogadores - Játékosok nevének látótávja - Дистанция отображения имен - - - Distance in meters at which player names are shown. Default: 5 - Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 - Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 - Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 - Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 - Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 - Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 - Дистанция в метрах, на которой отображаются имена игроков. По-умолчанию: 5 - - - Show name tags for AI? - Imiona AI - ¿Mostrar nombres para la IA? - Zeige Namensanzeigen für KI? - Zobrazit jmenovky pro AI? - Mostrar nomes para IA? - Névcímkék megjelenítése AI-nál? - Показывать имена ботов? - - - Show the name and rank tags for friendly AI units? Default: Do not force - Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj - Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar - Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen - Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat - Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar - Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás - Показывать имена и звания дружественных ботов? По-умолчанию: Не обязывать - - - Force Hide - Wymuś ukrycie - Ocultar forzado - Verstecken erzwingen - Vynuceno skrýt - Ocultar forçado - Erőltetett rejtett - Обязательно: Скрывать - - - Force Show - Wymuś wyświetlanie - Mostrar forzado - Anzeigen erzwingen - Vynuceno zobrazit - Mostrar forçado - Erőltetett látható - Обязательно: Показывать - - - Show crew info? - Pokaż załogę - ¿Mostrar información de la tripulación? - Zeige Besatzungsinfo? - Zobrazit informace o posádce? - Mostrar informação de tripulação? - Legénységi adatok megjelenítése? - Показывать экипаж? - - - Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force - Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj - Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar - Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. - Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat - Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. - A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás - Показывать информацию об экипаже техники, или по-умолчанию, позволяет игрокам выбрать свою настройку. По-умолчанию: Не обязывать - - - Show for Vehicles - Pokaż dla pojazdów - Mostrar para vehiculos - Zeige bei Fahrzeugen - Zobrazit pro vozidla - Mostrar para veículos - Mutatás járműveknél - Показывать для техники - - - Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No - Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie - Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No - Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein - Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne - Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não - Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет - - - This module allows you to customize settings and range of Name Tags. - Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. - Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. - Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. - Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. - Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. - Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. - Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. - - - Only on Cursor - Tylko pod kursorem - Solo cursor - Nur bei Maus - Pouze na kurzor - Somente no cursor - Csak kurzorra - Только под курсором - - - Only on Keypress - Tylko po wciśnięciu klawisza - Solo al pulsar tecla - Nur bei Tastendruck - Pouze na klávesu - Somente em tecla ativada - Csak gombnyomásra - Только по нажатию клавиши - - - Only on Cursor and Keypress - Tylko pod kursorem i po wciśnięciu klawisza - En cursor y al pulsar tecla - Nur Maus und Tastendruck - Pouze na kurzor a klávesu - Somente em cursor ou tecla ativada - Csak kurzorra és gombnyomásra - Под курсором или по нажатию клавиши - - - Force Show Only on Cursor - Wymuś pod kursorem - Forzar mostrar solo en el cursor - Vynuceno zobrazit pouze na kurzor - Erzwinge nur mit Mauszeiger anzuzeigen - Forçar mostrar somente no cursor - Erőltetett látható, csak kurzorra - Обязательно: Только под курсором - - - Force Show Only on Keypress - Wymuś po wciśnięciu klawisza - Forzar mostrar solo al pulsar tecla - Vynuceno zobrazit pouze na klávesu - Erzwinge nur mit Tastendruck anzuzeigen - Forçar somente mostrar em tecla ativada - Erőltetett látható, csak gombnyomásra - Обязательно: Только по нажатию клавиши - - - Force Show Only on Cursor and Keypress - Wymuś pod kursorem i po wciśnięciu klawisza - Forzar mostrar en el cursor y al pulsar tecla - Vynuceno zobrazit pouze na kurzor a klávesu - Erzwinge nur mit Mauszeiger und Tastendruck anzuzeigen - Forçar mostrar somente em cursor e tecla ativada - Erőltetett látható, csak kurzorra és gombnyomásra - Обязательно: Под курсором или по нажатию клавиши - - - Use Nametag settings - Użyj ustawień imion - Usar ajustes de etiquetas de nombre - Verwende Namenanzeigen - Použít nastavení jmenovky - Usar ajustes de etiquetas de nome - Névcímkék beállításának használata - Так же, как имена - - - Always Show All - Zawsze pokazuj wszystkie - Mostrar siempre todo - Immer alle zeigen - Vždy zobrazit vše - Sempre mostrar tudo - Mindig minden mutatása - Всегда показывать - - - Show player names and set their activation. Default: Enabled - Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. - Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado - Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno - Erlaubt das Anzeigen von Spielernamen und stellt ein, ob sie standardmäßig aktiviert oder deaktiviert sind. Standard: aktiviert - Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado - Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve - Показывать имена игроков и установить их активацию. По-умолчанию: Включено - - - Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. - Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. - Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. - Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. - Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. - Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. - Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. - Эффект звуковой волны над головами говорящих игроков при удерживании кнопки push-to-talk. Эта опация работает также с рациями TFAR и ACRE2. - - - Nametags Size - Rozmiar imion - Tamaño de las Etiquetas de nombre - Velikost jmenovky - Namensschildgröße - Tamanho das etiquetas de nome - Névcímkék mérete - Размер имен игроков - - - Text and Icon Size Scaling - Skalowanie tekstu oraz ikon - Escala del texto y el icono - Velikost textu a ikon - Text- und Symbolgrößen - Escala de tamanho dos ícones e textos - Szöveg és ikon méretének skálázása - Масштабирование размера текста и иконок - - + + + + + Show Names + Namen anzeigen + Mostrar nombres + Afficher noms + Zobrazit jména + Pokaż imiona + Nevek mutatása + Показать имена + Mostra i nomi + Mostrar nomes + + + Show player names + Spielernamen anzeigen + Mostrar nombres de jugadores + Pokaż imiona graczy + Afficher les nom des joueurs + Játékosnevek mutatása + Zobrazit jména hráčů + Mostrar nomes de jogadores + Mostra i nomi dei giocatori + Показывать имена игроков (включить имена) + + + Show player name only on cursor (requires player names) + Pokaż imiona graczy tylko pod kursorem (wymagana opcja Pokaż imiona graczy) + Mostrar nombres de jugadores solo al apuntarles (requiere Mostrar nombres de jugadores) + Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen) + Noms uniquement sous le curseur (si noms affichés) + Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů) + Mostra i nomi solo se puntati (richiede mostra nomi abilitato) + Mostrar nome de jogador somente no cursor (requer nome de jogadores) + Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) + Показать имена игроков только под курсором (при включенных именах) + + + Show player name only on keypress (requires player names) + Spielernamen nur auf Tastendruck anzeigen (benötigt Spielernamen) + Mostrar nombres solo al pulsar la tecla(requiere Mostrar nombres de jugadores) + Noms uniquement sur pression de la touche (si noms affichés) + Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) + Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) + Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) + Показать имена игроков только по нажатию клавиши (при включенных именах) + Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) + Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) + + + Show player ranks (requires player names) + Spielerränge anzeigen (benötig Spielernamen) + Pokaż rangi graczy (wymagana opcja Pokaż imiona graczy) + Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores) + Grade des joueurs (si noms affichés) + Zobrazit hodnosti hráčů (vyžaduje jména hráčů) + Mostra i gradi (richiede mostra nomi abilitato) + Mostrar patente de jogadores (requer nome de jogadores) + Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) + Показывать звания игроков (при вкл. именах) + + + Show vehicle crew info + Afficher les informations de l'équipage + Fahrzeugbesatzung anzeigen + Mostrar tripulantes + Pokaż załogę pojazdu + Zobrazit info o posádce vozidla + Показывать информацию об экипаже + Jármű-legénység adatainak mutatása + Mostrar tripulantes + Mostra l'elenco del personale a bordo + + + Show name tags for AI units + Namen für KI Einheiten anzeigen + Mostrar etiquetas de nombre para unidades IA + Показывать имена ботов + Zobrazit jména AI + Wyświetl imiona jednostek AI + Afficher les noms des IA + Névcímkék mutatása MI-egységeknél + Mostra i nomi delle le unità AI + Mostrar nomes para unidades de IA + + + Show SoundWaves (requires player names) + Schallwellen anzeigen (benötigt Spielernamen) + Mostrar onda sonora (requiere Mostrar nombres de jugadores) + Индикатор разговора (при вкл. именах) + Zobrazit SoundWaves (vyžaduje jména hráčů) + Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) + Afficher "qui parle" (si noms affichés) + "Hanghullámok" mutatása (a nevek mutatása szükséges) + Mostra movimento audio (richiede mostra nomi abilitato) + Mostrar onda sonora (requer nome de jogadores) + + + Default Nametag Color (Non Group Members) + Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) + Цвет меток игроков (не членов групп) + Color de etiquetas de nombre por defecto (No miembros de grupo) + Domyślny kolor imion (członkowie spoza grupy) + Couleur d'affichage par défaut (si dans aucun groupe) + Standardní barva jmenovek (pro nečleny jednotky) + Alap névcímke-szín (csoporton kívüli személyek) + Colore dei nomi non appartenenti al gruppo + Cor padrão do nome (unidades fora do grupo) + + + Name Tags + Ustawienia imion + Etiquetas de nombre + Namensanzeigen + Jmenovky + Etiquetas de nome + Névcímkék + Имена игроков + + + Player Names View Dist. + Zasięg imion graczy + Distancia de vision para nombres de jugadores + Spielernamen-Distanz + Vzdálenost zobrazení jména hráčů + Distância de visão dos nomes dos jogadores + Játékosok nevének látótávja + Дистанция отображения имен + + + Distance in meters at which player names are shown. Default: 5 + Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 + Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 + Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 + Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 + Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 + Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 + Дистанция в метрах, на которой отображаются имена игроков. По-умолчанию: 5 + + + Show name tags for AI? + Imiona AI + ¿Mostrar nombres para la IA? + Zeige Namensanzeigen für KI? + Zobrazit jmenovky pro AI? + Mostrar nomes para IA? + Névcímkék megjelenítése AI-nál? + Показывать имена ботов? + + + Show the name and rank tags for friendly AI units? Default: Do not force + Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj + Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar + Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen + Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat + Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar + Mutassa-e a szövetséges AI egységek nevét és rangját? Alapértelmezett: Nincs felülbírálás + Показывать имена и звания дружественных ботов? По-умолчанию: Не обязывать + + + Force Hide + Wymuś ukrycie + Ocultar forzado + Verstecken erzwingen + Vynuceno skrýt + Ocultar forçado + Erőltetett rejtett + Обязательно: Скрывать + + + Force Show + Wymuś wyświetlanie + Mostrar forzado + Anzeigen erzwingen + Vynuceno zobrazit + Mostrar forçado + Erőltetett látható + Обязательно: Показывать + + + Show crew info? + Pokaż załogę + ¿Mostrar información de la tripulación? + Zeige Besatzungsinfo? + Zobrazit informace o posádce? + Mostrar informação de tripulação? + Legénységi adatok megjelenítése? + Показывать экипаж? + + + Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force + Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj + Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar + Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. + Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat + Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. + A legénységi adatok mutatása, alapértelmezett esetben a játékos által kiválasztható. Alapértelmezett: Nincs felülbírálás + Показывать информацию об экипаже техники, или по-умолчанию, позволяет игрокам выбрать свою настройку. По-умолчанию: Не обязывать + + + Show for Vehicles + Pokaż dla pojazdów + Mostrar para vehiculos + Zeige bei Fahrzeugen + Zobrazit pro vozidla + Mostrar para veículos + Mutatás járműveknél + Показывать для техники + + + Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No + Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie + Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No + Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein + Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne + Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não + Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет + + + This module allows you to customize settings and range of Name Tags. + Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. + Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. + Este módulo permite personalizar la configuración y la distancia de las Etiquetas de nombre. + Tento modul umožňuje si přizpůsobit nastavení a vzdálenost jmenovky. + Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. + Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. + Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. + + + Only on Cursor + Tylko pod kursorem + Solo cursor + Nur bei Maus + Pouze na kurzor + Somente no cursor + Csak kurzorra + Только под курсором + + + Only on Keypress + Tylko po wciśnięciu klawisza + Solo al pulsar tecla + Nur bei Tastendruck + Pouze na klávesu + Somente em tecla ativada + Csak gombnyomásra + Только по нажатию клавиши + + + Only on Cursor and Keypress + Tylko pod kursorem i po wciśnięciu klawisza + En cursor y al pulsar tecla + Nur Maus und Tastendruck + Pouze na kurzor a klávesu + Somente em cursor ou tecla ativada + Csak kurzorra és gombnyomásra + Под курсором или по нажатию клавиши + + + Force Show Only on Cursor + Wymuś pod kursorem + Forzar mostrar solo en el cursor + Vynuceno zobrazit pouze na kurzor + Erzwinge nur mit Mauszeiger anzuzeigen + Forçar mostrar somente no cursor + Erőltetett látható, csak kurzorra + Обязательно: Только под курсором + + + Force Show Only on Keypress + Wymuś po wciśnięciu klawisza + Forzar mostrar solo al pulsar tecla + Vynuceno zobrazit pouze na klávesu + Erzwinge nur mit Tastendruck anzuzeigen + Forçar somente mostrar em tecla ativada + Erőltetett látható, csak gombnyomásra + Обязательно: Только по нажатию клавиши + + + Force Show Only on Cursor and Keypress + Wymuś pod kursorem i po wciśnięciu klawisza + Forzar mostrar en el cursor y al pulsar tecla + Vynuceno zobrazit pouze na kurzor a klávesu + Erzwinge nur mit Mauszeiger und Tastendruck anzuzeigen + Forçar mostrar somente em cursor e tecla ativada + Erőltetett látható, csak kurzorra és gombnyomásra + Обязательно: Под курсором или по нажатию клавиши + + + Use Nametag settings + Użyj ustawień imion + Usar ajustes de etiquetas de nombre + Verwende Namenanzeigen + Použít nastavení jmenovky + Usar ajustes de etiquetas de nome + Névcímkék beállításának használata + Так же, как имена + + + Always Show All + Zawsze pokazuj wszystkie + Mostrar siempre todo + Immer alle zeigen + Vždy zobrazit vše + Sempre mostrar tudo + Mindig minden mutatása + Всегда показывать + + + Show player names and set their activation. Default: Enabled + Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -> ACE3. + Mostrar nombres de los jugadores y establecer su activación. Predeterminado: Habilitado + Zobrazit jména hráčů a nastavit jejich aktivaci. Výchozí: Povoleno + Erlaubt das Anzeigen von Spielernamen und stellt ein, ob sie standardmäßig aktiviert oder deaktiviert sind. Standard: aktiviert + Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado + Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve + Показывать имена игроков и установить их активацию. По-умолчанию: Включено + + + Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. + Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. + Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. + Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. + Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. + Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. + Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. + Эффект звуковой волны над головами говорящих игроков при удерживании кнопки push-to-talk. Эта опация работает также с рациями TFAR и ACRE2. + + + Nametags Size + Rozmiar imion + Tamaño de las Etiquetas de nombre + Velikost jmenovky + Namensschildgröße + Tamanho das etiquetas de nome + Névcímkék mérete + Размер имен игроков + + + Text and Icon Size Scaling + Skalowanie tekstu oraz ikon + Escala del texto y el icono + Velikost textu a ikon + Text- und Symbolgrößen + Escala de tamanho dos ícones e textos + Szöveg és ikon méretének skálázása + Масштабирование размера текста и иконок + + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 6387cbf13a..41026c8912 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,393 +1,393 @@ - - - - - ACE Options - ACE-Optionen - Opciones ACE - Ustawienia ACE - ACE Nastavení - Options ACE - ACE Настройки - Opções do ACE - ACE Beállítások - Opzioni ACE - - - Fix Animation - Behebe Animation - Arreglar animación - Фикс анимации - Opravit animace - Napraw animację - Corriger animation - Animációk kijavítása - Fixa l'animazione - Arrumar Animação - - - Reset All - Alles zurücksetzen - Reiniciar todo - Полный сброс - Vyresetovat vše - Resetuj wszystko - Défaut - Minden visszaállítása - Resetta tutto - Resetar Tudo - - - Colors - Couleurs - Farben - Colores - Цвета - Barvy - Kolory - Színek - Colori - Cores - - - Options - Optionen - Opciones - Opcje - Nastavení - Options - Настройки - Opções - Beállítások - Opzioni - - - Values - Valores - Значения - Hodnoty - Wartości - Valeurs - Werte - Értékek - Valori - Valores - - - Setting: - Nastavení: - Einstellung: - Установки: - Ajuste: - Ustaw: - Paramètres - Opció: - Parametri: - Opção: - - - Export - Exportieren - Exportar - Экспорт - Exportovat - Eksport - Exporter - Exportálás - Esporta - Exportar - - - Open Export Menu - Öffne Exportmenü - Abrir menú de exportación - Открыть меню экспорта - Otevřít exportovací menu - Eksport ustawień - Ouvrir le menu d'exportation - Exportálási menü megnyitása - Apri menù esportazione - Abrir menu de exportação - - - String input. - Zeichenketteneingabe - Introducir cadena de texto. - Строчный ввод. - Wpisywanie tekstu. - Vkládání textu. - Entrée - String bevitel. - Stringa di unput. - Input de String - - - Array. Seperate elements by using ,. - Array. Teile unterschiedliche Elemente mit ,. - Matriz. Separa elementos usando ,. - Массив. Разделяйте элемены, используя запятую. - Tablica. Oddziel elementy używając ,. - Tableau. Séparation par ,. - Tabulka. Odděl elementy použitím ,. - Array. Válasszad el az elemeket vesszővel. - Array. Separa gli elementi usando ,. - Vetor. Separe elementos usando *,*. - - - Number - Zahl - Número - Число - Číslo - Cyfra - Nombre - Szám - Numero - Número - - - Uknown input type - Unbekannter Eingabetyp - Tipo de entrada desconocida - Неизвестный тип ввода - Neznámý vstup - Nieznany rodzaj danych - Type d'entrée inconnue - Ismeretlen beviteli típus - Input inserito sconosciuto - Tipo desonhecido de input - - - Save input - Speichere Eingabe - Guardar entrada - Сохранить ввод - Uložit vstup - Zapisz dane - Sauvegarder - Bevitel elmentése - Salva input - Salvar input - - - Include Client Settings - Schließe Client-Einstellungen ein - Incluir configuración de cliente - Включить настройки клиента - Zahrnout nastavení klienta - Zaw. ustaw. klienta - Inclure paramètres client - Kliens-beállítások melléklése - Includi i parametri del client - Incluir opções do cliente - - - Exclude Client Settings - Schließe Client-Einstellungen aus - Excluir configuración de cliente - Исключить настройки клиента - Nezahrnout nastavení klienta - Wyklucz ustawienia klienta - Exclure paramètres client - Kliens-beállítások elhagyása - Escludi i parametri del client - Excluir opções do cliente - - - Settings exported to clipboard - Einstellungen in die Zwischenablage exportiert - Configuración exportada al portapapeles - Настройки экспортированы в буфер обмена - Nastevení exportována do schránky - Ustawienia wyeksportowano do schowka - Paramètres exportés dans le presse papier - Beállítások exportálva a vágólapba - Parametri esportati alla clipboard - Opções exportadas para o clipboard. - - - Option Menu UI Scaling - Menu option: taille de l'UI - Skalowanie UI menu ustawień - Měřítko UI v menu nastavení - Размер интерфейса меню настройки - Opción de escalado del menú IU - UI Skalierung - Beállításmenü kezelőfelületének skálázása - Escalar o menu de opções - Proporzioni della interfaccia utente - - - Allow Config Export [ACE] - Pozwól na eksport ustawień - [ACE] Permitir exportar configuración - Erlaube Config-Export [ACE] - Povolit export natavení [ACE] - [ACE] Permitir exportação de configurações - Konfiguráció-exportálás engedélyezése [ACE] - Разрешить экспорт настроек [ACE] - - - Allow - Zezwól - Permitir - Erlaube - Povolit - Permitir - Engedélyezés - Разрешить - - - Allow export of all settings to a server config formatted. - Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. - Permitir la exportación de todos los ajustes de configuración a un servidor con formato. - Erlaube alle Einstellungen in einer Server-Config zu exportieren. - Povolit exportovat všechna nastavení do formátu server configu. - Permitir exportação de todas as configurações para uma configuração formatada de servidor. - Az összes beállítás szerver-konfigurációba való exportálásának engedélyezése. - Разрешить экспорт всех настроек в формате серверного конфига. - - - When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. - Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. - Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. - Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. - Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. - Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. - Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. - Когда разршен, у вас появляется доступ к модификации настроек и экспорту их в одинночном режиме. Нажатие на кнопку Экспорт поместит форматированные настройки в буфер обмена. - - - Hide - Ukryj - Ocultar - Verstecken - Skrýt - Ocultar - Elrejtés - Скрыть - - - Top right, downwards - Po prawej u góry, w dół - Arriba a la derecha, hacia abajo - Open rechts, nach unten - Vpravo nahoře, dolů - Superior direito, para baixo - Jobb felül, lefele - Справа - сверху вниз - - - Top right, to the left - Po prawej u góry, do lewej - Arriba a la derecha, hacia la izquierda - Von rechts nach links - Vpravo nahoře, do leva - Superior direito, à esquerda - Jobb felül, balra - Сверху - справа налево - - - Top left, downwards - Po lewej u góry, w dół - Arriba a la izquierda, hacia abajo - Von links, nach unten - Vlevo nahoře, dolů - Superior esquerdo, para baixo - Bal felül, lefele - Слева - сверху вниз - - - Top left, to the right - Po lewej u góry, do prawej - Arriba a la izquierda, hacia la derecha - Oben links nach rechts - Vlevo nahoře, do prava - Superior esquerdo, para a direita - Bal felül, jobbra - Сверху - слева направо - - - Top - Góra - Arriba - Oben - Nahoře - Acima - Fent - Сверху - - - Bottom - Dół - Abajo - Unten - Dole - Abaixo - Alul - Снизу - - - Debug To Clipboard - Debug do schowka - Depurar al portapapeles - Debug do schránky - Debug in die Zwischenablage - Depuração para área de transferência - Debug a vágólapra - Отладка в буфер обмена - - - Sends debug information to RPT and clipboard. - Wysyła informacje o debugowaniu do RPT oraz schowka. - Envía información de depuración al RPT y el portapapeles. - Pošle debug informace do RPT a schránky. - Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. - Envia informação de depuração para RPT e área de transferência. - Debug információt küld az RPT-be és a vágólapra. - Отправляет отладочную информацию в RPT и буфер обмена. - - - Headbug Fix - Fix Headbug - "Fejhiba" fix - Fix Headbug - - - Resets your animation state. - Resetuje aktualną animację. - Visszaállítja az animációs állapotodat. - Исправляет баг с зациклившейся анимацией. - - - ACE News - Noticias ACE - ACE-Neuigkeiten - Notícias do ACE - Wiadomości ACE - ACE Novinky - ACE hírek - Новости ACE - - - Show News on Main Menu - Mostrar noticias en el menú principal - Zeige Neuigkeiten im Hauptmenü - Mostrar notícias no menu principal - Pokazuj wiadomości ACE w menu głównym - Zobrazit novinky v hlavním menu - Hírek mutatása a főmenüben - Показывать новости в Главном Меню - - - All Categories - Wszystkie kategorie - Все категории - - - Logistics - Logistyka - Логистика - - + + + + + ACE Options + ACE-Optionen + Opciones ACE + Ustawienia ACE + ACE Nastavení + Options ACE + ACE Настройки + Opções do ACE + ACE Beállítások + Opzioni ACE + + + Fix Animation + Behebe Animation + Arreglar animación + Фикс анимации + Opravit animace + Napraw animację + Corriger animation + Animációk kijavítása + Fixa l'animazione + Arrumar Animação + + + Reset All + Alles zurücksetzen + Reiniciar todo + Полный сброс + Vyresetovat vše + Resetuj wszystko + Défaut + Minden visszaállítása + Resetta tutto + Resetar Tudo + + + Colors + Couleurs + Farben + Colores + Цвета + Barvy + Kolory + Színek + Colori + Cores + + + Options + Optionen + Opciones + Opcje + Nastavení + Options + Настройки + Opções + Beállítások + Opzioni + + + Values + Valores + Значения + Hodnoty + Wartości + Valeurs + Werte + Értékek + Valori + Valores + + + Setting: + Nastavení: + Einstellung: + Установки: + Ajuste: + Ustaw: + Paramètres + Opció: + Parametri: + Opção: + + + Export + Exportieren + Exportar + Экспорт + Exportovat + Eksport + Exporter + Exportálás + Esporta + Exportar + + + Open Export Menu + Öffne Exportmenü + Abrir menú de exportación + Открыть меню экспорта + Otevřít exportovací menu + Eksport ustawień + Ouvrir le menu d'exportation + Exportálási menü megnyitása + Apri menù esportazione + Abrir menu de exportação + + + String input. + Zeichenketteneingabe + Introducir cadena de texto. + Строчный ввод. + Wpisywanie tekstu. + Vkládání textu. + Entrée + String bevitel. + Stringa di unput. + Input de String + + + Array. Seperate elements by using ,. + Array. Teile unterschiedliche Elemente mit ,. + Matriz. Separa elementos usando ,. + Массив. Разделяйте элемены, используя запятую. + Tablica. Oddziel elementy używając ,. + Tableau. Séparation par ,. + Tabulka. Odděl elementy použitím ,. + Array. Válasszad el az elemeket vesszővel. + Array. Separa gli elementi usando ,. + Vetor. Separe elementos usando *,*. + + + Number + Zahl + Número + Число + Číslo + Cyfra + Nombre + Szám + Numero + Número + + + Uknown input type + Unbekannter Eingabetyp + Tipo de entrada desconocida + Неизвестный тип ввода + Neznámý vstup + Nieznany rodzaj danych + Type d'entrée inconnue + Ismeretlen beviteli típus + Input inserito sconosciuto + Tipo desonhecido de input + + + Save input + Speichere Eingabe + Guardar entrada + Сохранить ввод + Uložit vstup + Zapisz dane + Sauvegarder + Bevitel elmentése + Salva input + Salvar input + + + Include Client Settings + Schließe Client-Einstellungen ein + Incluir configuración de cliente + Включить настройки клиента + Zahrnout nastavení klienta + Zaw. ustaw. klienta + Inclure paramètres client + Kliens-beállítások melléklése + Includi i parametri del client + Incluir opções do cliente + + + Exclude Client Settings + Schließe Client-Einstellungen aus + Excluir configuración de cliente + Исключить настройки клиента + Nezahrnout nastavení klienta + Wyklucz ustawienia klienta + Exclure paramètres client + Kliens-beállítások elhagyása + Escludi i parametri del client + Excluir opções do cliente + + + Settings exported to clipboard + Einstellungen in die Zwischenablage exportiert + Configuración exportada al portapapeles + Настройки экспортированы в буфер обмена + Nastevení exportována do schránky + Ustawienia wyeksportowano do schowka + Paramètres exportés dans le presse papier + Beállítások exportálva a vágólapba + Parametri esportati alla clipboard + Opções exportadas para o clipboard. + + + Option Menu UI Scaling + Menu option: taille de l'UI + Skalowanie UI menu ustawień + Měřítko UI v menu nastavení + Размер интерфейса меню настройки + Opción de escalado del menú IU + UI Skalierung + Beállításmenü kezelőfelületének skálázása + Escalar o menu de opções + Proporzioni della interfaccia utente + + + Allow Config Export [ACE] + Pozwól na eksport ustawień + [ACE] Permitir exportar configuración + Erlaube Config-Export [ACE] + Povolit export natavení [ACE] + [ACE] Permitir exportação de configurações + Konfiguráció-exportálás engedélyezése [ACE] + Разрешить экспорт настроек [ACE] + + + Allow + Zezwól + Permitir + Erlaube + Povolit + Permitir + Engedélyezés + Разрешить + + + Allow export of all settings to a server config formatted. + Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + Permitir la exportación de todos los ajustes de configuración a un servidor con formato. + Erlaube alle Einstellungen in einer Server-Config zu exportieren. + Povolit exportovat všechna nastavení do formátu server configu. + Permitir exportação de todas as configurações para uma configuração formatada de servidor. + Az összes beállítás szerver-konfigurációba való exportálásának engedélyezése. + Разрешить экспорт всех настроек в формате серверного конфига. + + + When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. + Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP. + Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles. + Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert. + Pokud je povoleno, budete mít přístup k modifikaci nastavení a exportování v SP. Kliknutím na export umístníte formátovaný config do vaší schránky. + Quando permitido, você tem acesso à modificação de definições e exportação em SP. Clicando em exportação colocará a configuração formatada em sua área de transferência. + Engedélyezéskor hozzáférést kapsz a beállítások módosításához és exportálásához egyjátékos módban. Exportáláskor a formázott konfiguráció a vágólapra kerül. + Когда разршен, у вас появляется доступ к модификации настроек и экспорту их в одинночном режиме. Нажатие на кнопку Экспорт поместит форматированные настройки в буфер обмена. + + + Hide + Ukryj + Ocultar + Verstecken + Skrýt + Ocultar + Elrejtés + Скрыть + + + Top right, downwards + Po prawej u góry, w dół + Arriba a la derecha, hacia abajo + Open rechts, nach unten + Vpravo nahoře, dolů + Superior direito, para baixo + Jobb felül, lefele + Справа - сверху вниз + + + Top right, to the left + Po prawej u góry, do lewej + Arriba a la derecha, hacia la izquierda + Von rechts nach links + Vpravo nahoře, do leva + Superior direito, à esquerda + Jobb felül, balra + Сверху - справа налево + + + Top left, downwards + Po lewej u góry, w dół + Arriba a la izquierda, hacia abajo + Von links, nach unten + Vlevo nahoře, dolů + Superior esquerdo, para baixo + Bal felül, lefele + Слева - сверху вниз + + + Top left, to the right + Po lewej u góry, do prawej + Arriba a la izquierda, hacia la derecha + Oben links nach rechts + Vlevo nahoře, do prava + Superior esquerdo, para a direita + Bal felül, jobbra + Сверху - слева направо + + + Top + Góra + Arriba + Oben + Nahoře + Acima + Fent + Сверху + + + Bottom + Dół + Abajo + Unten + Dole + Abaixo + Alul + Снизу + + + Debug To Clipboard + Debug do schowka + Depurar al portapapeles + Debug do schránky + Debug in die Zwischenablage + Depuração para área de transferência + Debug a vágólapra + Отладка в буфер обмена + + + Sends debug information to RPT and clipboard. + Wysyła informacje o debugowaniu do RPT oraz schowka. + Envía información de depuración al RPT y el portapapeles. + Pošle debug informace do RPT a schránky. + Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. + Envia informação de depuração para RPT e área de transferência. + Debug információt küld az RPT-be és a vágólapra. + Отправляет отладочную информацию в RPT и буфер обмена. + + + Headbug Fix + Fix Headbug + "Fejhiba" fix + Fix Headbug + + + Resets your animation state. + Resetuje aktualną animację. + Visszaállítja az animációs állapotodat. + Исправляет баг с зациклившейся анимацией. + + + ACE News + Noticias ACE + ACE-Neuigkeiten + Notícias do ACE + Wiadomości ACE + ACE Novinky + ACE hírek + Новости ACE + + + Show News on Main Menu + Mostrar noticias en el menú principal + Zeige Neuigkeiten im Hauptmenü + Mostrar notícias no menu principal + Pokazuj wiadomości ACE w menu głównym + Zobrazit novinky v hlavním menu + Hírek mutatása a főmenüben + Показывать новости в Главном Меню + + + All Categories + Wszystkie kategorie + Все категории + + + Logistics + Logistyka + Логистика + + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index 7fe2f0adcb..d29499a2bb 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -1,67 +1,67 @@ - - - - - Altimeter - Altimètre - Höhenmesser - Výškoměr - Wysokościomierz - Altímetro - Magasságmérő - Высотомер - Altimetro - Altímetro - - - Altimeter Watch - Montre altimètre - Höhenmesser - Hodinky s výškoměrem - Zegarek z wysokościomierzem - Reloj altímetro - Magasságmérős karóra - Часы с высотомером - Controlla l'altimetro - Relógio Altímetro - - - Used to show height, descent rate and the time. - Affiche la hauteur, le taux de descente et l'heure. - Zeigt Höhe, Fallgeschwindigkeit und Uhrzeit. - Používané k zjištění výšky, rychlosti sestupu a času. - Używany przez spadochroniarzy, pokazuje wysokość, prędkość opadania oraz czas. - Utilizado para mostrar altura, tasa de descenso y hora. - Mutatja a magasságot, a zuhanási sebességet, és az időt. - Используется для определения высоты, скорости снижения и времени. - Usato per mostrare l'altitudine, la velocità di discesa e l'ora. - Usado para mostrar altura, taxa de descida e o tempo. - - - Non-Steerable Parachute - Ungelenkter Fallschirm - Paracaídas no dirigible - Parachute non manœuvrable - Niesterowalny spadochron - Neříditelný padák - Irányíthatatlan ejtőernyő - Неуправляемый парашют - Paracadute non manovrabile - Para-querdas não controlável - - - Cut Parachute - Fallschirm abschneiden - Odetnij spadochron - Ejtőernyő elvágása - Обрезать стропы - - - Reserve Parachute - Reserve Fallschirm - Spadochron awaryjny - Tartalék ejtőernyő - Запасной парашют - - + + + + + Altimeter + Altimètre + Höhenmesser + Výškoměr + Wysokościomierz + Altímetro + Magasságmérő + Высотомер + Altimetro + Altímetro + + + Altimeter Watch + Montre altimètre + Höhenmesser + Hodinky s výškoměrem + Zegarek z wysokościomierzem + Reloj altímetro + Magasságmérős karóra + Часы с высотомером + Controlla l'altimetro + Relógio Altímetro + + + Used to show height, descent rate and the time. + Affiche la hauteur, le taux de descente et l'heure. + Zeigt Höhe, Fallgeschwindigkeit und Uhrzeit. + Používané k zjištění výšky, rychlosti sestupu a času. + Używany przez spadochroniarzy, pokazuje wysokość, prędkość opadania oraz czas. + Utilizado para mostrar altura, tasa de descenso y hora. + Mutatja a magasságot, a zuhanási sebességet, és az időt. + Используется для определения высоты, скорости снижения и времени. + Usato per mostrare l'altitudine, la velocità di discesa e l'ora. + Usado para mostrar altura, taxa de descida e o tempo. + + + Non-Steerable Parachute + Ungelenkter Fallschirm + Paracaídas no dirigible + Parachute non manœuvrable + Niesterowalny spadochron + Neříditelný padák + Irányíthatatlan ejtőernyő + Неуправляемый парашют + Paracadute non manovrabile + Para-querdas não controlável + + + Cut Parachute + Fallschirm abschneiden + Odetnij spadochron + Ejtőernyő elvágása + Обрезать стропы + + + Reserve Parachute + Reserve Fallschirm + Spadochron awaryjny + Tartalék ejtőernyő + Запасной парашют + + \ No newline at end of file diff --git a/addons/rangecard/stringtable.xml b/addons/rangecard/stringtable.xml index f87dbd125b..5faa244513 100644 --- a/addons/rangecard/stringtable.xml +++ b/addons/rangecard/stringtable.xml @@ -1,82 +1,82 @@ - - - - - Range Card - Tabela balistyczna - Tarjeta de distancias - Vzdálenostní tabulka - Entfernungsspinne - Tabela de distâncias - Table de tir - Távolsági kártya - Таблица поправок - - - 50 METER increments -- MRAD/MRAD (reticle/turrets) - Co 50 metrów - MRAD/MRAD (siatka/pokrętło) - Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas) - Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) - 50-Meter-Schritte MRAD/MRAD (Fadenkreuz/Geschützturm) - Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) - Intervalle 50 mètres -- millième/millième (réticule/tambours) - 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) - Шаг 50 МЕТРОВ - MRAD/MRAD (сетка/маховички) - - - Open Range Card - Otwórz tabelę balistyczną - Abrir tarjeta de distancias - Otevřít vzdálenostní tabulku - Öffne Entfernungsspinne - Abrir tabela de distâncias - Afficher table de tir - Távolsági kártya kinyitása - Открыть таблицу поправок - - - Open Range Card Copy - Otwórz kopię tabeli balistycznej - Abrir copia de tarjeta de distancias - Otevřít kopii vzdálenostní tabulky - Öffne Kopie der Entfernungsspinne - Abrir cópia da tabela de distâncias - Afficher table de tir copiée - Távolsági kártya-másolat kinyitása - Открыть копию таблицы поправок - - - Open Range Card - Otwórz tabelę balistyczną - Abrir tarjeta de distancias - Otevřít vzdálenostní tabulku - Öffne Entfernungsspinne - Abrir tabela de distäncias - Afficher table de tir - Távolsági kártya kinyitása - Открыть таблицу поправок - - - Open Range Card Copy - Otwórz kopię tabeli balistycznej - Abrir copia de tarjeta de distancias - Otevřít kopii vzdálenostní tabulky - Öffne Kopie der Entfernungsspinne - Abrir cópia da tabela de distâncias - Afficher table de tir copiée - Távolsági kártya-másolat kinyitása - Открыть копию таблицы поправок - - - Copy Range Card - Skopiuj tabelę balistyczną - Copiar tarjeta de distancias - Kopírovat vzdálenostní tabulku - Kopiere Entfernungsspinne - Copiar tabela de distäncias - Copier table de tir - Távolsági kártya másolása - Скопировать таблицу поправок - - + + + + + Range Card + Tabela balistyczna + Tarjeta de distancias + Vzdálenostní tabulka + Entfernungsspinne + Tabela de distâncias + Table de tir + Távolsági kártya + Таблица поправок + + + 50 METER increments -- MRAD/MRAD (reticle/turrets) + Co 50 metrów - MRAD/MRAD (siatka/pokrętło) + Incrementos de 50 METROS -- MRAD/MRAD (retícula/torretas) + Přidat 50 METRŮ -- MRAD/MRAD (síťka/věže) + 50-Meter-Schritte MRAD/MRAD (Fadenkreuz/Geschützturm) + Incrementos de 50 METROS - MRAD/MRAD (retícula/torres) + Intervalle 50 mètres -- millième/millième (réticule/tambours) + 50 MÉTERES lépések - MRAD/MRAD (célzó/lövegek) + Шаг 50 МЕТРОВ - MRAD/MRAD (сетка/маховички) + + + Open Range Card + Otwórz tabelę balistyczną + Abrir tarjeta de distancias + Otevřít vzdálenostní tabulku + Öffne Entfernungsspinne + Abrir tabela de distâncias + Afficher table de tir + Távolsági kártya kinyitása + Открыть таблицу поправок + + + Open Range Card Copy + Otwórz kopię tabeli balistycznej + Abrir copia de tarjeta de distancias + Otevřít kopii vzdálenostní tabulky + Öffne Kopie der Entfernungsspinne + Abrir cópia da tabela de distâncias + Afficher table de tir copiée + Távolsági kártya-másolat kinyitása + Открыть копию таблицы поправок + + + Open Range Card + Otwórz tabelę balistyczną + Abrir tarjeta de distancias + Otevřít vzdálenostní tabulku + Öffne Entfernungsspinne + Abrir tabela de distäncias + Afficher table de tir + Távolsági kártya kinyitása + Открыть таблицу поправок + + + Open Range Card Copy + Otwórz kopię tabeli balistycznej + Abrir copia de tarjeta de distancias + Otevřít kopii vzdálenostní tabulky + Öffne Kopie der Entfernungsspinne + Abrir cópia da tabela de distâncias + Afficher table de tir copiée + Távolsági kártya-másolat kinyitása + Открыть копию таблицы поправок + + + Copy Range Card + Skopiuj tabelę balistyczną + Copiar tarjeta de distancias + Kopírovat vzdálenostní tabulku + Kopiere Entfernungsspinne + Copiar tabela de distäncias + Copier table de tir + Távolsági kártya másolása + Скопировать таблицу поправок + + \ No newline at end of file diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index 741609f7f9..5f84a4f16d 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -1,1913 +1,1913 @@ - - - - - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312 - XM312A - - - XM312A - XM312A - XM312 - XM312A - XM312A - XM312A - XM312A - XM312A - XM312A - XM312A - - - XM312 (High) - XM312 (Hoch) - XM312 (Alto) - XM312 (Haut) - XM312 (Vysoká montáž) - XM312 (Wysoki) - XM312 (Высокий) - XM312 (Alta) - XM312 (Magasított) - XM312 (Alta) - - - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - XM307 - - - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - XM307A - - - XM307 (High) - XM307 (Hoch) - XM307 (Alto) - XM307 (Haut) - XM307 (Vysoká montáž) - XM307 (Wysoki) - XM307 (Высокий) - XM307 (Alta) - XM307 (Magasított) - XM307 (Alta) - - - Mini-Spike Launcher (AT) - Mini-Spike Lenkflugkörper (PALR) - Lanzador Mini-Spike (AT) - Poste de tir Mini-Spike (AC) - Mini-Spike Odpalovač (AT) - Wyrzutnia Mini-Spike (AT) - Mini-Spike Пусковое устройство (ПТРК) - Lança-mísseis Mini-Spike (AC) - Mini-Spike rakétarendszer (Tankelhárító) - Lanciatore Mini-Spike (AC) - - - Mini-Spike Launcher (AA) - Mini-Spike Lenkflugkörper (FlaRak) - Lanzador Mini-Spike (AA) - Poste de tir Mini-Spike (AA) - Mini-Spike Odpalovač (AA) - Wyrzutnia Mini-Spike (AA) - Mini-Spike Пусковое устройство (ВВ) - Lança-mísseis Mini-Spike (AA) - Mini-Spike rakétarendszer (Repülő-elhárító) - Lanciatore Mini-Spike (AA) - - - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - YABHON-R3 - - - YABHON-R3 (CAS) - YABHON-R3 (Luftnahunterstützung) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - YABHON-R3 (штурмовик) - YABHON-R3 (CAS) - YABHON-R3 (Légitámogató) - YABHON-R3 (CAS) - YABHON-R3 (CAS) - - - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - M-ATV - - - M-ATV (HMG) - M-ATV (SMG) - M-ATV (HMG) - M-ATV (CKM) - M-ATV (TK) - M-ATV (HMG) - M-ATV (Пулемёт) - M-ATV (HMG) - M-ATV (nehézgéppuska) - M-ATV (HMG) - - - M-ATV (GMG) - M-ATV (GMW) - M-ATV (GMG) - M-ATV (GMG) - M-ATV (Granátomet) - M-ATV (GMG) - M-ATV (Гранатомёт) - M-ATV (GMG) - M-ATV (gránátgéppuska) - M-ATV (GMG) - - - Merkava Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Merkawa Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Меркава Mk IV M - Merkava Mk IV M - Merkava Mk IV M - Merkava Mk IV M - - - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkawa Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Меркава Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - Merkava Mk IV LIC - - - Sholef - Sholef - Sholef - Sholef - Sholef - Sholef - Шолеф - Sholef - Sholef - Sholef - - - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - Seara - - - Namer - Namer - Namer - Namer - Namer - Namer - Намер - Namer - Namer - Namer - - - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - Bardelas - - - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - Patria AMV - - - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - Nemmera - - - HEMTT Transport - HEMTT Transport - HEMTT de transporte - HEMTT Transportowy - HEMTT Valník - HEMTT Transport - HEMTT Транспортный - HEMTT Transporte - HEMTT szállítójármű - HEMTT da trasporto - - - HEMTT Transport (covered) - HEMTT Transport (bedeckt) - HEMTT de transporte (cubierto) - HEMTT Transportowy (zakryty) - HEMTT Valník (krytý) - HEMTT Transport (bâché) - HEMTT Транспортный (крытый) - HEMTT Transporte (coberto) - HEMTT szállítójármű (ponyvás) - HEMTT da trasporto (coperto) - - - HEMTT - HEMTT - HEMTT - HEMTT - HEMTT - HEMTT Tracteur - HEMTT - HEMTT - HEMTT - HEMTT - - - HEMTT Container - HEMTT Container - HEMTT con contenedor - HEMTT Kontener - HEMTT Skříňový - HEMTT Conteneur - HEMTT Контейнер - HEMTT Contêiner - HEMTT (konténer) - HEMTT portacontainer - - - HEMTT Medical - HEMTT Sanitäter - HEMTT médico - HEMTT Medyczny - HEMTT Zdravotnický - HEMTT Médical - HEMTT Медицинский - HEMTT Médico - HEMTT (egészségügyi) - HEMTT Medico - - - HEMTT Ammo - HEMTT Munition - HEMTT de munición - HEMTT Amunicyjny - HEMTT Muniční - HEMTT Munitions - HEMTT Боеприпасы - HEMTT Munições - HEMTT (lőszerszállító) - HEMTT di rifornimento munizioni - - - HEMTT Fuel - HEMTT Treibstoff - HEMTT de combustible - HEMTT Cysterna - HEMTT Cisterna - HEMTT Citerne - HEMTT Заправщик - HEMTT Combustível - HEMTT (üzemanyag-szállító) - HEMTT di rifornimento carburante - - - HEMTT Repair - HEMTT Instandsetzung - HEMTT de reparación - HEMTT Naprawczy - HEMTT Opravárenský - HEMTT Réparation - HEMTT Ремонтный - HEMTT Reparador - HEMTT (szerelő-jármű) - HEMTT Riparatore - - - Fennek - Fennek - Fennek - Fennek - Fennek - Fennek - Феннек - Fennek - Fennek - Fennek - - - Fennek (HMG) - Fennek (SMG) - Fennek (HMG) - Fennek (CKM) - Fennek (TK) - Fennek (HMG) - Феннек (Пулемёт) - Fennek (HMG) - Fennek (nehézgéppuska) - Fennek (HMG) - - - Fennek (GMG) - Fennek (GMW) - Fennek (GMG) - Fennek (GMG) - Fennek (granátomet) - Fennek (GMG) - Феннек (Гранатомёт) - Fennek (GMG) - Fennek (gránátgéppuska) - Fennek (GMG) - - - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - Леопард 2SG - Leopard 2SG - Leopard 2SG - Leopard 2SG - - - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Warrior - FV510 Уорриор - FV510 Warrior - FV510 Warrior - FV510 Warrior - - - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - Pandur II - - - KamAZ Transport - KamAZ Transport - KamAZ de transporte - KamAZ transportowy - KamAZ Valník - KamAZ Transport - КамАЗ Транспортный - KamAZ Transporte - KamAZ szállítójármű - KamAZ da trasporto - - - KamAZ Transport (covered) - KamAZ Transport (bedeckt) - KamAZ de transporte (cubierto) - KamAZ Transportowy (zakryty) - KamAZ Valník (krytý) - KamAZ Transport (bâché) - КамАЗ Транспортный (крытый) - KamAZ Transporte (coberto) - KamAZ szállítójármű (ponyvás) - KamAZ da trasporto (coperto) - - - KamAZ Ammo - KamAZ Munition - KamAZ de munición - KamAZ Amunicyjny - KamAZ Muniční - KamAZ Munitions - КамАЗ Боеприпасы - KamAZ Munições - KamAZ (lőszerszállító) - KamAZ di rifornimento munizioni - - - KamAZ Fuel - KamAZ Treibstoff - KamAZ de combustible - KamAZ cysterna - KamAZ Cisterna - KamAZ Citerne - КамАЗ Заправщик - KamAZ Combustível - KamAZ (üzemanyag-szállító) - KamAZ di rifornimento carburante - - - KamAZ Repair - KamAZ Instandsetzung - KamAZ de reparación - KamAZ Naprawczy - KamAZ Opravárenský - KamAZ Réparation - КамАЗ Ремонтный - KamAZ Reparador - KamAZ (szerelő-jármű) - KamAZ riparatore - - - KamAZ Medical - KamAZ Sanitäter - KamAZ médico - KamAZ Medyczny - KAMAZ Zdravotnický - KamAZ Médical - КамАЗ Медицинский - KamAZ Médico - KamAZ (egészségügyi) - KamAZ Medico - - - Punisher - Punisher - Punisher - Punisher - Punisher - Punisher - Kаратель - Punisher - Punisher - Punisher - - - Punisher (HMG) - Punisher (SMG) - Punisher (HMG) - Punisher (CKM) - Punisher (TK) - Punisher (HMG) - Kаратель (Пулемёт) - Punisher (HMG) - Punisher (nehézgéppuska) - Punisher (HMG) - - - Punisher (GMG) - Punisher (GMW) - Punisher (GMG) - Punisher (GMG) - Punisher (granátomet) - Punisher (GMG) - Kаратель (Гранатомёт) - Punisher (GMG) - Punisher (gránátgéppuska) - Punisher (GMG) - - - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Black Eagle - T100 Чёрный Орел - T100 Black Eagle - T100 Fekete Sas - T100 Black Eagle - - - 2S9 Sochor - 2S9 Sochor - 2S9 Sochor - 259 Sochor - 2S9 Sochor - 2S9 Sochor - 2S9 Сокор - 2S9 Sochor - 2S9 Sochor - 2S9 Sochor - - - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - БМ-2Т Сталкер - BM-2T Stalker - BM-2T Stalker - BM-2T Stalker - - - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ЗСУ-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - ZSU-35 Tigris - - - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - Otokar ARMA - - - Typhoon Transport - Typhoon Transport - Typhoon de transporte - Typhoon Transportowy - Typhoon valník - Typhoon Transport - Тайфун Транспортный - Typhoon Transporte - Typhoon szállítójármű - Typhoon da trasporto - - - Typhoon Transport (covered) - Typhoon Transport (bedeckt) - Typhoon de transporte (cubierto) - Typhoon Transportowy (przykryty) - Typhoon valník (krytý) - Typhoon Transport (bâché) - Тайфун Транспортный (крытый) - Typhoon Transporte (coberto) - Typhoon szállítójármű (ponyvás) - Typhoon da trasporto (coperto) - - - Typhoon Device - Typhoon Gerät - Typhoon con dispositivo - Typhoon Urządzenie - Typhoon zařízení - Typhoon Dispositif - Тайфун Устройство - Typhoon Dispositivo - Typhoon (eszköz) - Typhoon per dispositivo - - - Typhoon Ammo - Typhoon Munition - Typhoon de munición - Typhoon Amunicyjny - Typhoon muniční - Typhoon Munitions - Тайфун Боеприпасы - Typhoon Munições - Typhoon (lőszerszállító) - Typhoon di rifornimento munizioni - - - Typhoon Fuel - Typhoon Treibstoff - Typhoon de combustible - Typhoon Cysterna - Typhoon cisterna - Typhoon Citerne - Тайфун Заправщик - Typhoon Combustível - Typhoon (üzemanyag-szállító) - Typhoon di rifornimento carburante - - - Typhoon Repair - Typhoon Instandsetzung - Typhoon de reparación - Typhoon Naprawczy - Typhoon opravárenský - Typhoon Réparation - Тайфун Ремонтный - Typhoon Reparador - Typhoon (szerelő-jármű) - Typhoon riparatore - - - Typhoon Medical - Typhoon Sanitäter - Typhoon médico - Typhoon Medyczny - Typhoon zdravotnický - Typhoon Médical - Тайфун Медицинский - Typhoon Médico - Typhoon (egészségügyi) - Typhoon medico - - - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Commanche - RAH-66 Команч - RAH-66 Comanche - RAH-66 Comanche - RAH-66 Comanche - - - MH-6 Little Bird - MH-6 Little Bird - MH-6 Litte Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - MH-6 Little Bird - - - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - AH-6 Little Bird - - - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - CH-47I Chinook - - - CH-47I Chinook (unarmed) - CH-47I Chinook (unbewaffnet) - CH-47I Chinnok (Desarmado) - CH-47I Chinook (nieuzbrojony) - CH-47I Chinook (невооруженный) - CH-47I Chinook (neozbrojený) - CH-47I Chinook (non-armé) - CH-47I Chinook (fegyvertelen) - CH-47I Chinook (disarmato) - CH-47I Chinook (desarmado) - - - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Тандерболт II - A-10D Thunderbolt II - A-10D Thunderbolt II - A-10D Thunderbolt II - - - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - AW159 Wildcat - - - AW159 Wildcat (unarmed) - AW159 Wildcat (unbewaffnet) - AW159 Wildcat (desarmado) - AW159 Wildcat (nieuzbrojony) - AW159 Wildcat (neozbrojený) - AW159 Wildcat (non-armé) - AW159 Wildcat (невооруженный) - AW159 Wildcat (desarmado) - AW159 Wildcat (fegyvertelen) - AW159 Wildcat (disarmato) - - - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Merlin - AW101 Мерлин - AW101 Merlin - AW101 Merlin - AW101 Merlin - - - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 ALCA (CAS) - L-159 Альбатрос (CAS) - L-159 ALCA (CAS) - L-159 ALCA (Légitámogató) - L-159 ALCA (CAS) - - - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 ALCA (AA) - L-159 Альбатрос (AA) - L-159 ALCA (ВВ) - L-159 ALCA (Repülő-elhárító) - L-159 ALCA (AA) - - - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Касатка - Ka-60 Kasatka - Ka-60 Kasatka - Ka-60 Kasatka - - - Ka-60 Kasatka (unarmed) - Ka-60 Kasatka (unbewaffnet) - Ka-60 Kasatka (desarmado) - Ka-60 Kasatka (nieuzbrojony) - Ka-60 Kasatka (neozbrojený) - Ka-60 Kasatka (non-armé) - Ka-60 Касатка (невооруженный) - Ka-60 Kasatka (desarmado) - Ka-60 Kasatka (fegyvertelen) - Ka-60 Kasatka (disarmato) - - - Yak-130 - Yak-130 - Yak-130 - Jak-130 - Jak-130 - Yak-130 - Як-130 - Yak-130 - Jak-130 - Yak-130 - - - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - MD 500 - - - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - M4A1 SLAM - - - M18A1 Claymore - M18A1 Claymore - M18A1 Claymore - Mina kierunkowa M18A1 Claymore - Mina Claymore M18A1 - M18A1 Claymore - M18A1 Клеймор - M18A1 Claymore - M18A1 Claymore akna - M18A1 Claymore Mina antiuomo - - - M183 Demolition Charge Assembly - M183 Geballte Sprengladung - Conjunto de carga de demolición M183 - Ładunek burzący M183 - Demoliční nálož M183 - M183 Charge de Démolition - M183 Комплектный подрывной заряд - M183 Sacola de Demolição - M183 romboló töltet - M183 Demolition Charge Assembly - - - M112 Demolition Block - M112 Sprengladung - Bloque de demolición M112 - Ładunek burzący M112 - Výbušná nálož M112 - M112 Block de Démolition - M112 подрывной заряд - M112 Carga de Demolição - M112 romboló tömb - M112 Demolition Block - - - M67 Fragmentation Grenade - M67 Splittergranate - Granada de fragmentación M67 - Granat obronny M67 - Granát M67 - M67 Grenade à fragmentation - M67 ручная осколочная граната - M67 Granada de fragmentação - M67 repeszgránát - M67 Granata a frammentazione - - - M83 Smoke Grenade (White) - M83 Rauchgranate (Weiss) - Granada de humo M83 (Blanco) - Granat dymny M83 (Biały) - M83 Kouřový Granát (Bílý) - M83 Grenade fumigène (Blanche) - M83 дымовая граната (Белый) - M83 Granada de fumaça (Branca) - M83 füstgránát (Fehér) - M83 Granata fumogena (Bianco) - - - M18 Smoke Grenade (Blue) - M18 Rauchgranate (Blau) - Granada de humo M18 (Azul) - Granat dymny M18 (Niebieski) - M18 Kouřový Granát (Modrý) - M18 Grenade fumigène (Bleue) - M18 дымовая граната (Синий) - M18 Granada de fumaça (Azul) - M18 füstgránát (Kék) - M18 Granata fumogena (Blu) - - - M18 Smoke Grenade (Green) - M18 Rauchgranate (Grün) - Granada de humo M18 (Verde) - Granat dymny M18 (Zielony) - M18 Kouřový Granát (Zelený) - M18 Grenade fumigène (Verte) - M18 дымовая граната (Зелёный) - M18 Granada de fumaça (Verde) - M18 füstgránát (Zöld) - M18 Granata fumogena (Verde) - - - M18 Smoke Grenade (Orange) - M18 Rauchgranate (Orange) - Granada de humo M18 (Naranja) - Granat dymny M18 (Pomarańczowy) - M18 Kouřový Granát (Oranžový) - M18 Grenade fumigène (Orange) - M18 дымовая граната (Оранжевый) - M18 Granada de fumaça (Laranja) - M18 füstgránát (Narancssárga) - M18 Granata fumogena (Arancione) - - - M18 Smoke Grenade (Purple) - M18 Rauchgranate (Violett) - Granada de humo M18 (Púrpura) - Granat dymny M18 (Fioletowy) - M18 Kouřový Granát (Fialový) - M18 Grenade fumigène (Pourpre) - M18 дымовая граната (Пурпурный) - M18 Granada de fumaça (Roxa) - M18 füstgránát (Lila) - M18 Granata fumogena (Viola) - - - M18 Smoke Grenade (Red) - M18 Rauchgranate (Rot) - Granada de humo M18 (Rojo) - Granat dymny M18 (Czerwony) - M18 Kouřový Granát (Červený) - M18 Grenade fumigène (Rouge) - M18 дымовая граната (Красный) - M18 Granada de fumaça (Vermelha) - M18 füstgránát (Piros) - M18 Granata fumogena (Rosso) - - - M18 Smoke Grenade (Yellow) - M18 Rauchgranate (Gelb) - Granada de humo M18 (Amarillo) - Granat dymny M18 (Żółty) - M18 Kouřový Granát (Žlutý) - M18 Grenade fumigène (Jaune) - M183 дымовая граната (Жёлтый) - M18 Granada de fumaça (Amarela) - M18 füstgránát (Sárga) - M18 Granata fumogena (Giallo) - - - M15 Anti-Tank Mine - M15 Panzerabwehrmine - Mina antitanque M15 - Mina przeciwpancerna M15 - Protitanková mina M15 - M15 Mine antichar - M15 противотанковая мина - M15 Mina anticarro - M15 harckocsiakna - M15 Mine anticarro - - - VS-50 Anti-Personnel Mine - VS-50 Antipersonenmine - Mina antipersona VS-50 - Mina przeciwpiechotna VS-50 - Protipěchotní mina VS-50 - VS-50 Mine AP - VS-50 Противопехотная мина - VS-50 Mina antipessoal - VS-50 gyalogsági taposóakna - VS-50 Mine antiuomo - - - M26 Anti-Personnel Bounding Mine - M26 Antipersonensprungmine - Mina antipersona M26 - Mina przeciwpiechotna M26 - Šrapnelová mina M26 - M26 Mine AP bondissante - M26 Противопехотная мина - M26 Mina saltadora antipessoal - M26 gyalogsági ugróakna - M26 Mine saltanti antiuomo - - - PMR-3 Anti-Personnel Tripwire Mine - PMR-3 Antipersonenstolperdrahtmine - Mina antipersona de alambre PMR-3 - Mina przeciwpiechotna PMR-3 - Nástražná mina PMR-3 - PMR-3 Mine AP à traction - PMR-3 Противопехотная мина - PMR-3 Mina antipessoal (armadilha) - PMR-3 botlódrótos gyalogsági akna - PMR-3 Mine antiuomo - - - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - P99 - - - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - MP-443 Grach - МР-443 "Грач" - MP-443 Grach - MP-443 Grach - - - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - Custom Covert II - ACP-C2 - - - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - FNX-45 Tactical - - - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 6DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 60DS - Chiappa Rhino 6DS - - - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - Taurus Judge - - - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - NLAW - - - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - RPG-32 - РПГ-32 - RPG-32 - RPG-32 - - - Mini-Spike (AA) - Mini-Spike (FlaRak) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (Repülő-elhárító) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - Mini-Spike (AA) - - - Mini-Spike (AT) - Mini-Spike (PALR) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AC) - Mini-Spike (Tankelhárító) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AT) - Mini-Spike (AT) - - - MX - MX - MX - MX - MX - MX - MX - MX - MX - MX - - - MX (Black) - MX (Schwarz) - MX (Czarny) - MX (Černý) - MX (Noir) - MX (Fekete) - MX (Negro) - MX (Чёрный) - MX (Preto) - MX (Nero) - - - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - MXC - - - MXC (Black) - MXC (Schwarz) - MXC (Czarny) - MXC (Černý) - MXC (Noir) - MXC (Fekete) - MXC (Negro) - MXC (Чёрный) - MXC (Preto) - MXC (Nero) - - - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - MX 3GL - - - MX 3GL (Black) - MX 3GL (Schwarz) - MX 3GL (Czarny) - MX 3GL (Černý) - MX 3GL (Noir) - MX 3GL (Fekete) - MX 3GL (Negro) - MX 3GL (Чёрный) - MX 3GL (Preto) - MX 3GL (Nero) - - - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - MX LSW - - - MX LSW (Black) - MX LSW (Schwarz) - MX LSW (Czarny) - MX LSW (Černý) - MX LSW (Noir) - MX LSW (Fekete) - MX LSW (Negro) - MX LSW (Чёрный) - MX LSW (Preto) - MX LSW (Nero) - - - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - MXM - - - MXM (Black) - MXM (Schwarz) - MXM (Czarny) - MXM (Černý) - MXM (Noir) - MXM (Fekete) - MXM (Negro) - MXM (Чёрный) - MXM (Preto) - MXM (Nero) - - - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Sama - KH2002 Сама - KT2002 Sama - KT2002 Katiba - - - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Sama - KH2002C Сама - KT2002C Sama - KT2002C Katiba - - - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Sama KGL - KH2002 Сама KGL - KT2002 Sama KGL - KT2002 Katiba KGL - - - F2000 (Camo) - F2000 (Tarnmuster) - F2000 (kamuflaż) - F2000 (Kamufláž) - F2000 (Camo) - F2000 (Terepmintás) - F2000 (Camuflaje) - F2000 (Камо) - F2000 (Camo) - F2000 (Camo) - - - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - F2000 - - - F2000 Tactical (Camo) - F2000 Tactical (Tarnmuster) - F2000 Tactical (kamuflaż) - F2000 Tactical (Černý) - F2000 Tactical (Camo) - F2000 Tactical (Terepmintás) - F2000 Tactical (Camuflaje) - F2000 Tactical (Камо) - F2000 Tactical (Camo) - F2000 Tactical (Camo) - - - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - F2000 Tactical - - - F2000 EGLM (Camo) - F2000 EGLM (Tarnmuster) - F2000 EGLM (kamuflaż) - F2000 EGLM (Kamufláž) - F2000 EGLM (Camo) - F2000 EGLM (Terepmintás) - F2000 EGLM (Camuflaje) - F2000 EGLM (Камо) - F2000 EGLM (Camo) - F2000 EGLM (Camo) - - - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - F2000 EGLM - - - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - TAR-21 - - - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - CTAR-21 - - - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - TAR-21 EGLM - - - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - Vector SMG - - - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - Scorpion Evo 3 A1 - - - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - CPW - - - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - RFB SDAR - - - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 Könnyűgéppuska - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - Stoner 99 LMG - - - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - Negev NG7 - - - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk 14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - Mk14 Mod 1 EBR - - - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Gepárd - GM6 Lynx - GM6 Lynx - GM6 Lynx - GM6 Lynx - - - GM6 Lynx (Camo) - GM6 Lynx (Tarnmuster) - GM6 Lynx (kamuflaż) - GM6 Lynx (Kamufláž) - GM6 Lynx (Camo) - GM6 Gepárd (Terepmintás) - GM6 Lynx (Camuflaje) - GM6 Lynx (Камо) - GM6 Lynx (Camo) - GM6 Lynx (Camo) - - - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - M200 Intervention - - - M200 Intervention (Camo) - M200 Intervention (Tarnmuster) - M200 Intervention (kamuflaż) - M200 Intervention (Kamufláž) - M200 Intervention (Camo) - M200 Intervention (Terepmintás) - M200 Intervention (Camuflaje) - M200 Intervention (Камо) - M200 Intervention (Camo) - M200 Intervention (Camo) - - - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - VS-121 - - - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News" ULR - Noreen "Bad News"ULR - Noreen "Bad News" ULR - - - Noreen "Bad News" ULR (Black) - Noreen "Bad News" ULR (Černý) - Noreen "Bad News" ULR (Noir) - Noreen "Bad News" ULR (Negro) - Noreen "Bad News" ULR (Чёрный) - Noreen "Bad News" ULR (Schwarz) - Noreen "Bad News" ULR (czarny) - Noreen "Bad News" ULR (Nero) - Noreen "Bad News"ULR (Fekete) - Noreen "Bad News" ULR (Preto) - - - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (Kamufláž) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (Camuflaje) - Noreen "Bad News" ULR (Камо) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News" ULR (kamuflaż) - Noreen "Bad News" ULR (Camo) - Noreen "Bad News"ULR (Terepmintás) - Noreen "Bad News" ULR (Camuflagem) - - - Noreen "Bad News" ULR (Sand) - Noreen "Bad News" ULR (Pouštní) - Noreen "Bad News" ULR (Beige) - Noreen "Bad News" ULR (Arena) - Noreen "Bad News" ULR (Песочный) - Noreen "Bad News" ULR (Sand) - Noreen "Bad News" ULR (piaskowy) - Noreen "Bad News" ULR (Sabbia) - Noreen "Bad News"ULR (Homok) - Noreen "Bad News" ULR (Deserto) - - - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - SIG 556 - - - SIG 556 (Black) - SIG 556 (Černý) - SIG 556 (Noir) - SIG 556 (Negro) - SIG 556 (Чёрный) - SIG 556 (czarny) - SIG 556 (Schwarz) - SIG 556 (Nero) - SIG 556 (Fekete) - SIG 556 (Preto) - - - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Kaki) - SIG 556 (Caqui) - SIG 556 (Хаки) - SIG 556 (khaki) - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Khaki) - SIG 556 (Caqui) - - - SIG 556 (Sand) - SIG 556 (Pouštní) - SIG 556 (Beige) - SIG 556 (Arena) - SIG 556 (Песочный) - SIG 556 (piaskowy) - SIG 556 (Sand) - SIG 556 (Sabbia) - SIG 556 (Homok) - SIG 556 (Deserto) - - - SIG 556 (Camo) - SIG 556 (Kamufláž) - SIG 556 (Camo) - SIG 556 (Camuflaje) - SIG 556 (Камо) - SIG 556 (kamuflaż) - SIG 556 (Camo) - SIG 556 (Camo) - SIG 556 (Terepmintás) - SIG 556 (Camuflagem) - - - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Bosque) - SIG 556 (Лесной) - SIG 556 (leśny) - SIG 556 (Woodland) - SIG 556 (Woodland) - SIG 556 (Erdőmintás) - SIG 556 (Floresta) - - - SIG 556 (provisional) spotter - SIG 556 (Provizorní) spotter - SIG 556 (provisoire) Observateur - SIG 556 (provisional) observador - SIG 556 (provisional) корректировщик - SIG 556 (prowizoryczny) obserwator - SIG 556 (provisorisch) Beobachter - SIG 556 (provisional) spotter - SIG 556 (Ellátmányi) Megfigyelő - SIG 556 (provisional) observador - - - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - ASP-1 Kir - - - ASP-1 Kir (Black) - ASP-1 Kir (Čený) - ASP-1 Kir (Noir) - ASP-1 Kir (Negro) - ASP-1 Kir (Чёрный) - ASP-1 Kir (Schwarz) - ASP-1 Kir (czarny) - ASP-1 Kir (Nero) - ASP-1 Kir (Fekete) - ASP-1 Kir (Preto) - - - ASP-1 Kir (Tan) - ASP-1 Kir (Pouštní) - ASP-1 Kir (Tan) - ASP-1 Kir (Tan) - ASP-1 Kir (Бронзовый) - ASP-1 Kir (Hellbraun) - ASP-1 Kir (Tan) - ASP-1 Kir (Tan) - ASP-1 Kir (Cserszín) - ASP-1 Kir (Deserto) - - - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - Cyrus - - - Cyrus (Black) - Cyrus (Černý) - Cyrus (Noir) - Cyrus (Negro) - Cyrus (Чёрный) - Cyrus (Schwarz) - Cyrus (czarny) - Cyrus (Nero) - Cyrus (Fekete) - Cyrus (Preto) - - - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Гекс) - Cyrus (Hex) - Cyrus (hex) - Cyrus (Hex) - Cyrus (Hex) - Cyrus (Hex) - - - Cyrus (Tan) - Cyrus (Pouštní) - Cyrus (Tan) - Cyrus (Tan) - Cyrus (Бронза) - Cyrus (Hellbraun) - Cyrus (podpalany) - Cyrus (Tan) - Cyrus (Cserszín) - Cyrus (Deserto) - - - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - M14 - - - M14 (Camo) - M14 (Kamufláž) - M14 (Camo) - M14 (Camuflaje) - M14 (Камо) - M14 (kamuflaż) - M14 (Camo) - M14 (Camo) - M14 (Terepmintás) - M14 (Camuflagem) - - - M14 (Olive) - M14 (Olivový) - M14 (Olive) - M14 (Oliva) - M14 (Олива) - M14 (oliwkowy) - M14 (Olive) - M14 (Olive) - M14 (Olíva) - M14 (Oliva) - - - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - HK121 - - - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Гекс) - HK121 (Hex) - HK121 (hex) - HK121 (Hex) - HK121 (Hex) - HK121 (Hex) - - - HK121 (Tan) - HK121 (Pouštní) - HK121 (Tan) - HK121 (Tan) - HK121 (Бронза) - HK121 (Hellbraun) - HK121 (podpalany) - HK121 (Tan) - HK121 (Cserszín) - HK121 (Deserto) - - - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - LWMMG - - - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - LWMMG (MTP) - - - LWMMG (Black) - LWMMG (Černý) - LWMMG (Noir) - LWMMG (Negro) - LWMMG (Чёрный) - LWMMG (czarny) - LWMMG (Schwarz) - LWMMG (Nero) - LWMMG (Fekete) - LWMMG (Preto) - - - LWMMG (Sand) - LWMMG (Pouštní) - SPMG (Beige) - LWMMG (Arena) - LWMMG (Песочный) - LWMMG (piaskowy) - LWMMG (Sand) - LWMMG (Sabbia) - LWMMG (Homok) - LWMMG (Deserto) - - + + + + + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312 + XM312A + + + XM312A + XM312A + XM312 + XM312A + XM312A + XM312A + XM312A + XM312A + XM312A + XM312A + + + XM312 (High) + XM312 (Hoch) + XM312 (Alto) + XM312 (Haut) + XM312 (Vysoká montáž) + XM312 (Wysoki) + XM312 (Высокий) + XM312 (Alta) + XM312 (Magasított) + XM312 (Alta) + + + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + XM307 + + + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + XM307A + + + XM307 (High) + XM307 (Hoch) + XM307 (Alto) + XM307 (Haut) + XM307 (Vysoká montáž) + XM307 (Wysoki) + XM307 (Высокий) + XM307 (Alta) + XM307 (Magasított) + XM307 (Alta) + + + Mini-Spike Launcher (AT) + Mini-Spike Lenkflugkörper (PALR) + Lanzador Mini-Spike (AT) + Poste de tir Mini-Spike (AC) + Mini-Spike Odpalovač (AT) + Wyrzutnia Mini-Spike (AT) + Mini-Spike Пусковое устройство (ПТРК) + Lança-mísseis Mini-Spike (AC) + Mini-Spike rakétarendszer (Tankelhárító) + Lanciatore Mini-Spike (AC) + + + Mini-Spike Launcher (AA) + Mini-Spike Lenkflugkörper (FlaRak) + Lanzador Mini-Spike (AA) + Poste de tir Mini-Spike (AA) + Mini-Spike Odpalovač (AA) + Wyrzutnia Mini-Spike (AA) + Mini-Spike Пусковое устройство (ВВ) + Lança-mísseis Mini-Spike (AA) + Mini-Spike rakétarendszer (Repülő-elhárító) + Lanciatore Mini-Spike (AA) + + + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + YABHON-R3 + + + YABHON-R3 (CAS) + YABHON-R3 (Luftnahunterstützung) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + YABHON-R3 (штурмовик) + YABHON-R3 (CAS) + YABHON-R3 (Légitámogató) + YABHON-R3 (CAS) + YABHON-R3 (CAS) + + + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + M-ATV + + + M-ATV (HMG) + M-ATV (SMG) + M-ATV (HMG) + M-ATV (CKM) + M-ATV (TK) + M-ATV (HMG) + M-ATV (Пулемёт) + M-ATV (HMG) + M-ATV (nehézgéppuska) + M-ATV (HMG) + + + M-ATV (GMG) + M-ATV (GMW) + M-ATV (GMG) + M-ATV (GMG) + M-ATV (Granátomet) + M-ATV (GMG) + M-ATV (Гранатомёт) + M-ATV (GMG) + M-ATV (gránátgéppuska) + M-ATV (GMG) + + + Merkava Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Merkawa Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Меркава Mk IV M + Merkava Mk IV M + Merkava Mk IV M + Merkava Mk IV M + + + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkawa Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Меркава Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + Merkava Mk IV LIC + + + Sholef + Sholef + Sholef + Sholef + Sholef + Sholef + Шолеф + Sholef + Sholef + Sholef + + + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + Seara + + + Namer + Namer + Namer + Namer + Namer + Namer + Намер + Namer + Namer + Namer + + + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + Bardelas + + + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + Patria AMV + + + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + Nemmera + + + HEMTT Transport + HEMTT Transport + HEMTT de transporte + HEMTT Transportowy + HEMTT Valník + HEMTT Transport + HEMTT Транспортный + HEMTT Transporte + HEMTT szállítójármű + HEMTT da trasporto + + + HEMTT Transport (covered) + HEMTT Transport (bedeckt) + HEMTT de transporte (cubierto) + HEMTT Transportowy (zakryty) + HEMTT Valník (krytý) + HEMTT Transport (bâché) + HEMTT Транспортный (крытый) + HEMTT Transporte (coberto) + HEMTT szállítójármű (ponyvás) + HEMTT da trasporto (coperto) + + + HEMTT + HEMTT + HEMTT + HEMTT + HEMTT + HEMTT Tracteur + HEMTT + HEMTT + HEMTT + HEMTT + + + HEMTT Container + HEMTT Container + HEMTT con contenedor + HEMTT Kontener + HEMTT Skříňový + HEMTT Conteneur + HEMTT Контейнер + HEMTT Contêiner + HEMTT (konténer) + HEMTT portacontainer + + + HEMTT Medical + HEMTT Sanitäter + HEMTT médico + HEMTT Medyczny + HEMTT Zdravotnický + HEMTT Médical + HEMTT Медицинский + HEMTT Médico + HEMTT (egészségügyi) + HEMTT Medico + + + HEMTT Ammo + HEMTT Munition + HEMTT de munición + HEMTT Amunicyjny + HEMTT Muniční + HEMTT Munitions + HEMTT Боеприпасы + HEMTT Munições + HEMTT (lőszerszállító) + HEMTT di rifornimento munizioni + + + HEMTT Fuel + HEMTT Treibstoff + HEMTT de combustible + HEMTT Cysterna + HEMTT Cisterna + HEMTT Citerne + HEMTT Заправщик + HEMTT Combustível + HEMTT (üzemanyag-szállító) + HEMTT di rifornimento carburante + + + HEMTT Repair + HEMTT Instandsetzung + HEMTT de reparación + HEMTT Naprawczy + HEMTT Opravárenský + HEMTT Réparation + HEMTT Ремонтный + HEMTT Reparador + HEMTT (szerelő-jármű) + HEMTT Riparatore + + + Fennek + Fennek + Fennek + Fennek + Fennek + Fennek + Феннек + Fennek + Fennek + Fennek + + + Fennek (HMG) + Fennek (SMG) + Fennek (HMG) + Fennek (CKM) + Fennek (TK) + Fennek (HMG) + Феннек (Пулемёт) + Fennek (HMG) + Fennek (nehézgéppuska) + Fennek (HMG) + + + Fennek (GMG) + Fennek (GMW) + Fennek (GMG) + Fennek (GMG) + Fennek (granátomet) + Fennek (GMG) + Феннек (Гранатомёт) + Fennek (GMG) + Fennek (gránátgéppuska) + Fennek (GMG) + + + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + Леопард 2SG + Leopard 2SG + Leopard 2SG + Leopard 2SG + + + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Warrior + FV510 Уорриор + FV510 Warrior + FV510 Warrior + FV510 Warrior + + + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + Pandur II + + + KamAZ Transport + KamAZ Transport + KamAZ de transporte + KamAZ transportowy + KamAZ Valník + KamAZ Transport + КамАЗ Транспортный + KamAZ Transporte + KamAZ szállítójármű + KamAZ da trasporto + + + KamAZ Transport (covered) + KamAZ Transport (bedeckt) + KamAZ de transporte (cubierto) + KamAZ Transportowy (zakryty) + KamAZ Valník (krytý) + KamAZ Transport (bâché) + КамАЗ Транспортный (крытый) + KamAZ Transporte (coberto) + KamAZ szállítójármű (ponyvás) + KamAZ da trasporto (coperto) + + + KamAZ Ammo + KamAZ Munition + KamAZ de munición + KamAZ Amunicyjny + KamAZ Muniční + KamAZ Munitions + КамАЗ Боеприпасы + KamAZ Munições + KamAZ (lőszerszállító) + KamAZ di rifornimento munizioni + + + KamAZ Fuel + KamAZ Treibstoff + KamAZ de combustible + KamAZ cysterna + KamAZ Cisterna + KamAZ Citerne + КамАЗ Заправщик + KamAZ Combustível + KamAZ (üzemanyag-szállító) + KamAZ di rifornimento carburante + + + KamAZ Repair + KamAZ Instandsetzung + KamAZ de reparación + KamAZ Naprawczy + KamAZ Opravárenský + KamAZ Réparation + КамАЗ Ремонтный + KamAZ Reparador + KamAZ (szerelő-jármű) + KamAZ riparatore + + + KamAZ Medical + KamAZ Sanitäter + KamAZ médico + KamAZ Medyczny + KAMAZ Zdravotnický + KamAZ Médical + КамАЗ Медицинский + KamAZ Médico + KamAZ (egészségügyi) + KamAZ Medico + + + Punisher + Punisher + Punisher + Punisher + Punisher + Punisher + Kаратель + Punisher + Punisher + Punisher + + + Punisher (HMG) + Punisher (SMG) + Punisher (HMG) + Punisher (CKM) + Punisher (TK) + Punisher (HMG) + Kаратель (Пулемёт) + Punisher (HMG) + Punisher (nehézgéppuska) + Punisher (HMG) + + + Punisher (GMG) + Punisher (GMW) + Punisher (GMG) + Punisher (GMG) + Punisher (granátomet) + Punisher (GMG) + Kаратель (Гранатомёт) + Punisher (GMG) + Punisher (gránátgéppuska) + Punisher (GMG) + + + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Black Eagle + T100 Чёрный Орел + T100 Black Eagle + T100 Fekete Sas + T100 Black Eagle + + + 2S9 Sochor + 2S9 Sochor + 2S9 Sochor + 259 Sochor + 2S9 Sochor + 2S9 Sochor + 2S9 Сокор + 2S9 Sochor + 2S9 Sochor + 2S9 Sochor + + + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + БМ-2Т Сталкер + BM-2T Stalker + BM-2T Stalker + BM-2T Stalker + + + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ЗСУ-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + ZSU-35 Tigris + + + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + Otokar ARMA + + + Typhoon Transport + Typhoon Transport + Typhoon de transporte + Typhoon Transportowy + Typhoon valník + Typhoon Transport + Тайфун Транспортный + Typhoon Transporte + Typhoon szállítójármű + Typhoon da trasporto + + + Typhoon Transport (covered) + Typhoon Transport (bedeckt) + Typhoon de transporte (cubierto) + Typhoon Transportowy (przykryty) + Typhoon valník (krytý) + Typhoon Transport (bâché) + Тайфун Транспортный (крытый) + Typhoon Transporte (coberto) + Typhoon szállítójármű (ponyvás) + Typhoon da trasporto (coperto) + + + Typhoon Device + Typhoon Gerät + Typhoon con dispositivo + Typhoon Urządzenie + Typhoon zařízení + Typhoon Dispositif + Тайфун Устройство + Typhoon Dispositivo + Typhoon (eszköz) + Typhoon per dispositivo + + + Typhoon Ammo + Typhoon Munition + Typhoon de munición + Typhoon Amunicyjny + Typhoon muniční + Typhoon Munitions + Тайфун Боеприпасы + Typhoon Munições + Typhoon (lőszerszállító) + Typhoon di rifornimento munizioni + + + Typhoon Fuel + Typhoon Treibstoff + Typhoon de combustible + Typhoon Cysterna + Typhoon cisterna + Typhoon Citerne + Тайфун Заправщик + Typhoon Combustível + Typhoon (üzemanyag-szállító) + Typhoon di rifornimento carburante + + + Typhoon Repair + Typhoon Instandsetzung + Typhoon de reparación + Typhoon Naprawczy + Typhoon opravárenský + Typhoon Réparation + Тайфун Ремонтный + Typhoon Reparador + Typhoon (szerelő-jármű) + Typhoon riparatore + + + Typhoon Medical + Typhoon Sanitäter + Typhoon médico + Typhoon Medyczny + Typhoon zdravotnický + Typhoon Médical + Тайфун Медицинский + Typhoon Médico + Typhoon (egészségügyi) + Typhoon medico + + + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Commanche + RAH-66 Команч + RAH-66 Comanche + RAH-66 Comanche + RAH-66 Comanche + + + MH-6 Little Bird + MH-6 Little Bird + MH-6 Litte Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + MH-6 Little Bird + + + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + AH-6 Little Bird + + + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + CH-47I Chinook + + + CH-47I Chinook (unarmed) + CH-47I Chinook (unbewaffnet) + CH-47I Chinnok (Desarmado) + CH-47I Chinook (nieuzbrojony) + CH-47I Chinook (невооруженный) + CH-47I Chinook (neozbrojený) + CH-47I Chinook (non-armé) + CH-47I Chinook (fegyvertelen) + CH-47I Chinook (disarmato) + CH-47I Chinook (desarmado) + + + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Тандерболт II + A-10D Thunderbolt II + A-10D Thunderbolt II + A-10D Thunderbolt II + + + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + AW159 Wildcat + + + AW159 Wildcat (unarmed) + AW159 Wildcat (unbewaffnet) + AW159 Wildcat (desarmado) + AW159 Wildcat (nieuzbrojony) + AW159 Wildcat (neozbrojený) + AW159 Wildcat (non-armé) + AW159 Wildcat (невооруженный) + AW159 Wildcat (desarmado) + AW159 Wildcat (fegyvertelen) + AW159 Wildcat (disarmato) + + + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Merlin + AW101 Мерлин + AW101 Merlin + AW101 Merlin + AW101 Merlin + + + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 ALCA (CAS) + L-159 Альбатрос (CAS) + L-159 ALCA (CAS) + L-159 ALCA (Légitámogató) + L-159 ALCA (CAS) + + + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 ALCA (AA) + L-159 Альбатрос (AA) + L-159 ALCA (ВВ) + L-159 ALCA (Repülő-elhárító) + L-159 ALCA (AA) + + + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Касатка + Ka-60 Kasatka + Ka-60 Kasatka + Ka-60 Kasatka + + + Ka-60 Kasatka (unarmed) + Ka-60 Kasatka (unbewaffnet) + Ka-60 Kasatka (desarmado) + Ka-60 Kasatka (nieuzbrojony) + Ka-60 Kasatka (neozbrojený) + Ka-60 Kasatka (non-armé) + Ka-60 Касатка (невооруженный) + Ka-60 Kasatka (desarmado) + Ka-60 Kasatka (fegyvertelen) + Ka-60 Kasatka (disarmato) + + + Yak-130 + Yak-130 + Yak-130 + Jak-130 + Jak-130 + Yak-130 + Як-130 + Yak-130 + Jak-130 + Yak-130 + + + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + MD 500 + + + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + M4A1 SLAM + + + M18A1 Claymore + M18A1 Claymore + M18A1 Claymore + Mina kierunkowa M18A1 Claymore + Mina Claymore M18A1 + M18A1 Claymore + M18A1 Клеймор + M18A1 Claymore + M18A1 Claymore akna + M18A1 Claymore Mina antiuomo + + + M183 Demolition Charge Assembly + M183 Geballte Sprengladung + Conjunto de carga de demolición M183 + Ładunek burzący M183 + Demoliční nálož M183 + M183 Charge de Démolition + M183 Комплектный подрывной заряд + M183 Sacola de Demolição + M183 romboló töltet + M183 Demolition Charge Assembly + + + M112 Demolition Block + M112 Sprengladung + Bloque de demolición M112 + Ładunek burzący M112 + Výbušná nálož M112 + M112 Block de Démolition + M112 подрывной заряд + M112 Carga de Demolição + M112 romboló tömb + M112 Demolition Block + + + M67 Fragmentation Grenade + M67 Splittergranate + Granada de fragmentación M67 + Granat obronny M67 + Granát M67 + M67 Grenade à fragmentation + M67 ручная осколочная граната + M67 Granada de fragmentação + M67 repeszgránát + M67 Granata a frammentazione + + + M83 Smoke Grenade (White) + M83 Rauchgranate (Weiss) + Granada de humo M83 (Blanco) + Granat dymny M83 (Biały) + M83 Kouřový Granát (Bílý) + M83 Grenade fumigène (Blanche) + M83 дымовая граната (Белый) + M83 Granada de fumaça (Branca) + M83 füstgránát (Fehér) + M83 Granata fumogena (Bianco) + + + M18 Smoke Grenade (Blue) + M18 Rauchgranate (Blau) + Granada de humo M18 (Azul) + Granat dymny M18 (Niebieski) + M18 Kouřový Granát (Modrý) + M18 Grenade fumigène (Bleue) + M18 дымовая граната (Синий) + M18 Granada de fumaça (Azul) + M18 füstgránát (Kék) + M18 Granata fumogena (Blu) + + + M18 Smoke Grenade (Green) + M18 Rauchgranate (Grün) + Granada de humo M18 (Verde) + Granat dymny M18 (Zielony) + M18 Kouřový Granát (Zelený) + M18 Grenade fumigène (Verte) + M18 дымовая граната (Зелёный) + M18 Granada de fumaça (Verde) + M18 füstgránát (Zöld) + M18 Granata fumogena (Verde) + + + M18 Smoke Grenade (Orange) + M18 Rauchgranate (Orange) + Granada de humo M18 (Naranja) + Granat dymny M18 (Pomarańczowy) + M18 Kouřový Granát (Oranžový) + M18 Grenade fumigène (Orange) + M18 дымовая граната (Оранжевый) + M18 Granada de fumaça (Laranja) + M18 füstgránát (Narancssárga) + M18 Granata fumogena (Arancione) + + + M18 Smoke Grenade (Purple) + M18 Rauchgranate (Violett) + Granada de humo M18 (Púrpura) + Granat dymny M18 (Fioletowy) + M18 Kouřový Granát (Fialový) + M18 Grenade fumigène (Pourpre) + M18 дымовая граната (Пурпурный) + M18 Granada de fumaça (Roxa) + M18 füstgránát (Lila) + M18 Granata fumogena (Viola) + + + M18 Smoke Grenade (Red) + M18 Rauchgranate (Rot) + Granada de humo M18 (Rojo) + Granat dymny M18 (Czerwony) + M18 Kouřový Granát (Červený) + M18 Grenade fumigène (Rouge) + M18 дымовая граната (Красный) + M18 Granada de fumaça (Vermelha) + M18 füstgránát (Piros) + M18 Granata fumogena (Rosso) + + + M18 Smoke Grenade (Yellow) + M18 Rauchgranate (Gelb) + Granada de humo M18 (Amarillo) + Granat dymny M18 (Żółty) + M18 Kouřový Granát (Žlutý) + M18 Grenade fumigène (Jaune) + M183 дымовая граната (Жёлтый) + M18 Granada de fumaça (Amarela) + M18 füstgránát (Sárga) + M18 Granata fumogena (Giallo) + + + M15 Anti-Tank Mine + M15 Panzerabwehrmine + Mina antitanque M15 + Mina przeciwpancerna M15 + Protitanková mina M15 + M15 Mine antichar + M15 противотанковая мина + M15 Mina anticarro + M15 harckocsiakna + M15 Mine anticarro + + + VS-50 Anti-Personnel Mine + VS-50 Antipersonenmine + Mina antipersona VS-50 + Mina przeciwpiechotna VS-50 + Protipěchotní mina VS-50 + VS-50 Mine AP + VS-50 Противопехотная мина + VS-50 Mina antipessoal + VS-50 gyalogsági taposóakna + VS-50 Mine antiuomo + + + M26 Anti-Personnel Bounding Mine + M26 Antipersonensprungmine + Mina antipersona M26 + Mina przeciwpiechotna M26 + Šrapnelová mina M26 + M26 Mine AP bondissante + M26 Противопехотная мина + M26 Mina saltadora antipessoal + M26 gyalogsági ugróakna + M26 Mine saltanti antiuomo + + + PMR-3 Anti-Personnel Tripwire Mine + PMR-3 Antipersonenstolperdrahtmine + Mina antipersona de alambre PMR-3 + Mina przeciwpiechotna PMR-3 + Nástražná mina PMR-3 + PMR-3 Mine AP à traction + PMR-3 Противопехотная мина + PMR-3 Mina antipessoal (armadilha) + PMR-3 botlódrótos gyalogsági akna + PMR-3 Mine antiuomo + + + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + P99 + + + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + MP-443 Grach + МР-443 "Грач" + MP-443 Grach + MP-443 Grach + + + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + Custom Covert II + ACP-C2 + + + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + FNX-45 Tactical + + + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 6DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 60DS + Chiappa Rhino 6DS + + + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + Taurus Judge + + + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + NLAW + + + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + RPG-32 + РПГ-32 + RPG-32 + RPG-32 + + + Mini-Spike (AA) + Mini-Spike (FlaRak) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (Repülő-elhárító) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + Mini-Spike (AA) + + + Mini-Spike (AT) + Mini-Spike (PALR) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AC) + Mini-Spike (Tankelhárító) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AT) + Mini-Spike (AT) + + + MX + MX + MX + MX + MX + MX + MX + MX + MX + MX + + + MX (Black) + MX (Schwarz) + MX (Czarny) + MX (Černý) + MX (Noir) + MX (Fekete) + MX (Negro) + MX (Чёрный) + MX (Preto) + MX (Nero) + + + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + MXC + + + MXC (Black) + MXC (Schwarz) + MXC (Czarny) + MXC (Černý) + MXC (Noir) + MXC (Fekete) + MXC (Negro) + MXC (Чёрный) + MXC (Preto) + MXC (Nero) + + + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + MX 3GL + + + MX 3GL (Black) + MX 3GL (Schwarz) + MX 3GL (Czarny) + MX 3GL (Černý) + MX 3GL (Noir) + MX 3GL (Fekete) + MX 3GL (Negro) + MX 3GL (Чёрный) + MX 3GL (Preto) + MX 3GL (Nero) + + + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + MX LSW + + + MX LSW (Black) + MX LSW (Schwarz) + MX LSW (Czarny) + MX LSW (Černý) + MX LSW (Noir) + MX LSW (Fekete) + MX LSW (Negro) + MX LSW (Чёрный) + MX LSW (Preto) + MX LSW (Nero) + + + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + MXM + + + MXM (Black) + MXM (Schwarz) + MXM (Czarny) + MXM (Černý) + MXM (Noir) + MXM (Fekete) + MXM (Negro) + MXM (Чёрный) + MXM (Preto) + MXM (Nero) + + + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Sama + KH2002 Сама + KT2002 Sama + KT2002 Katiba + + + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Sama + KH2002C Сама + KT2002C Sama + KT2002C Katiba + + + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Sama KGL + KH2002 Сама KGL + KT2002 Sama KGL + KT2002 Katiba KGL + + + F2000 (Camo) + F2000 (Tarnmuster) + F2000 (kamuflaż) + F2000 (Kamufláž) + F2000 (Camo) + F2000 (Terepmintás) + F2000 (Camuflaje) + F2000 (Камо) + F2000 (Camo) + F2000 (Camo) + + + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + F2000 + + + F2000 Tactical (Camo) + F2000 Tactical (Tarnmuster) + F2000 Tactical (kamuflaż) + F2000 Tactical (Černý) + F2000 Tactical (Camo) + F2000 Tactical (Terepmintás) + F2000 Tactical (Camuflaje) + F2000 Tactical (Камо) + F2000 Tactical (Camo) + F2000 Tactical (Camo) + + + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + F2000 Tactical + + + F2000 EGLM (Camo) + F2000 EGLM (Tarnmuster) + F2000 EGLM (kamuflaż) + F2000 EGLM (Kamufláž) + F2000 EGLM (Camo) + F2000 EGLM (Terepmintás) + F2000 EGLM (Camuflaje) + F2000 EGLM (Камо) + F2000 EGLM (Camo) + F2000 EGLM (Camo) + + + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + F2000 EGLM + + + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + TAR-21 + + + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + CTAR-21 + + + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + TAR-21 EGLM + + + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + Vector SMG + + + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + Scorpion Evo 3 A1 + + + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + CPW + + + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + RFB SDAR + + + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 Könnyűgéppuska + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + Stoner 99 LMG + + + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + Negev NG7 + + + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk 14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + Mk14 Mod 1 EBR + + + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Gepárd + GM6 Lynx + GM6 Lynx + GM6 Lynx + GM6 Lynx + + + GM6 Lynx (Camo) + GM6 Lynx (Tarnmuster) + GM6 Lynx (kamuflaż) + GM6 Lynx (Kamufláž) + GM6 Lynx (Camo) + GM6 Gepárd (Terepmintás) + GM6 Lynx (Camuflaje) + GM6 Lynx (Камо) + GM6 Lynx (Camo) + GM6 Lynx (Camo) + + + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + M200 Intervention + + + M200 Intervention (Camo) + M200 Intervention (Tarnmuster) + M200 Intervention (kamuflaż) + M200 Intervention (Kamufláž) + M200 Intervention (Camo) + M200 Intervention (Terepmintás) + M200 Intervention (Camuflaje) + M200 Intervention (Камо) + M200 Intervention (Camo) + M200 Intervention (Camo) + + + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + VS-121 + + + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News" ULR + Noreen "Bad News"ULR + Noreen "Bad News" ULR + + + Noreen "Bad News" ULR (Black) + Noreen "Bad News" ULR (Černý) + Noreen "Bad News" ULR (Noir) + Noreen "Bad News" ULR (Negro) + Noreen "Bad News" ULR (Чёрный) + Noreen "Bad News" ULR (Schwarz) + Noreen "Bad News" ULR (czarny) + Noreen "Bad News" ULR (Nero) + Noreen "Bad News"ULR (Fekete) + Noreen "Bad News" ULR (Preto) + + + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (Kamufláž) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (Camuflaje) + Noreen "Bad News" ULR (Камо) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News" ULR (kamuflaż) + Noreen "Bad News" ULR (Camo) + Noreen "Bad News"ULR (Terepmintás) + Noreen "Bad News" ULR (Camuflagem) + + + Noreen "Bad News" ULR (Sand) + Noreen "Bad News" ULR (Pouštní) + Noreen "Bad News" ULR (Beige) + Noreen "Bad News" ULR (Arena) + Noreen "Bad News" ULR (Песочный) + Noreen "Bad News" ULR (Sand) + Noreen "Bad News" ULR (piaskowy) + Noreen "Bad News" ULR (Sabbia) + Noreen "Bad News"ULR (Homok) + Noreen "Bad News" ULR (Deserto) + + + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + SIG 556 + + + SIG 556 (Black) + SIG 556 (Černý) + SIG 556 (Noir) + SIG 556 (Negro) + SIG 556 (Чёрный) + SIG 556 (czarny) + SIG 556 (Schwarz) + SIG 556 (Nero) + SIG 556 (Fekete) + SIG 556 (Preto) + + + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Kaki) + SIG 556 (Caqui) + SIG 556 (Хаки) + SIG 556 (khaki) + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Khaki) + SIG 556 (Caqui) + + + SIG 556 (Sand) + SIG 556 (Pouštní) + SIG 556 (Beige) + SIG 556 (Arena) + SIG 556 (Песочный) + SIG 556 (piaskowy) + SIG 556 (Sand) + SIG 556 (Sabbia) + SIG 556 (Homok) + SIG 556 (Deserto) + + + SIG 556 (Camo) + SIG 556 (Kamufláž) + SIG 556 (Camo) + SIG 556 (Camuflaje) + SIG 556 (Камо) + SIG 556 (kamuflaż) + SIG 556 (Camo) + SIG 556 (Camo) + SIG 556 (Terepmintás) + SIG 556 (Camuflagem) + + + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Bosque) + SIG 556 (Лесной) + SIG 556 (leśny) + SIG 556 (Woodland) + SIG 556 (Woodland) + SIG 556 (Erdőmintás) + SIG 556 (Floresta) + + + SIG 556 (provisional) spotter + SIG 556 (Provizorní) spotter + SIG 556 (provisoire) Observateur + SIG 556 (provisional) observador + SIG 556 (provisional) корректировщик + SIG 556 (prowizoryczny) obserwator + SIG 556 (provisorisch) Beobachter + SIG 556 (provisional) spotter + SIG 556 (Ellátmányi) Megfigyelő + SIG 556 (provisional) observador + + + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + ASP-1 Kir + + + ASP-1 Kir (Black) + ASP-1 Kir (Čený) + ASP-1 Kir (Noir) + ASP-1 Kir (Negro) + ASP-1 Kir (Чёрный) + ASP-1 Kir (Schwarz) + ASP-1 Kir (czarny) + ASP-1 Kir (Nero) + ASP-1 Kir (Fekete) + ASP-1 Kir (Preto) + + + ASP-1 Kir (Tan) + ASP-1 Kir (Pouštní) + ASP-1 Kir (Tan) + ASP-1 Kir (Tan) + ASP-1 Kir (Бронзовый) + ASP-1 Kir (Hellbraun) + ASP-1 Kir (Tan) + ASP-1 Kir (Tan) + ASP-1 Kir (Cserszín) + ASP-1 Kir (Deserto) + + + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + Cyrus + + + Cyrus (Black) + Cyrus (Černý) + Cyrus (Noir) + Cyrus (Negro) + Cyrus (Чёрный) + Cyrus (Schwarz) + Cyrus (czarny) + Cyrus (Nero) + Cyrus (Fekete) + Cyrus (Preto) + + + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Гекс) + Cyrus (Hex) + Cyrus (hex) + Cyrus (Hex) + Cyrus (Hex) + Cyrus (Hex) + + + Cyrus (Tan) + Cyrus (Pouštní) + Cyrus (Tan) + Cyrus (Tan) + Cyrus (Бронза) + Cyrus (Hellbraun) + Cyrus (podpalany) + Cyrus (Tan) + Cyrus (Cserszín) + Cyrus (Deserto) + + + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + M14 + + + M14 (Camo) + M14 (Kamufláž) + M14 (Camo) + M14 (Camuflaje) + M14 (Камо) + M14 (kamuflaż) + M14 (Camo) + M14 (Camo) + M14 (Terepmintás) + M14 (Camuflagem) + + + M14 (Olive) + M14 (Olivový) + M14 (Olive) + M14 (Oliva) + M14 (Олива) + M14 (oliwkowy) + M14 (Olive) + M14 (Olive) + M14 (Olíva) + M14 (Oliva) + + + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + HK121 + + + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Гекс) + HK121 (Hex) + HK121 (hex) + HK121 (Hex) + HK121 (Hex) + HK121 (Hex) + + + HK121 (Tan) + HK121 (Pouštní) + HK121 (Tan) + HK121 (Tan) + HK121 (Бронза) + HK121 (Hellbraun) + HK121 (podpalany) + HK121 (Tan) + HK121 (Cserszín) + HK121 (Deserto) + + + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + LWMMG + + + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + LWMMG (MTP) + + + LWMMG (Black) + LWMMG (Černý) + LWMMG (Noir) + LWMMG (Negro) + LWMMG (Чёрный) + LWMMG (czarny) + LWMMG (Schwarz) + LWMMG (Nero) + LWMMG (Fekete) + LWMMG (Preto) + + + LWMMG (Sand) + LWMMG (Pouštní) + SPMG (Beige) + LWMMG (Arena) + LWMMG (Песочный) + LWMMG (piaskowy) + LWMMG (Sand) + LWMMG (Sabbia) + LWMMG (Homok) + LWMMG (Deserto) + + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 13415817e3..4ee3d680d7 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,734 +1,734 @@ - - - - - - Spare Track - Ersatzkette - Cadena de repuesto - Chenille de réserve - Zapasowa gąsienica - Náhradní pásy - Lagarta Reserva - Cingolo di scorta - Pót lánctalp - Запасная гусеница - - - Spare Wheel - Ersatzreifen - Rueda de repuesto - Roue de secours - Zapasowe koło - Náhradní Kolo - Roda Reserva - Ruota di scorta - Pótkerék - Запасное колесо - - - Change Wheel - Reifen wechseln - Cambiar rueda - Changer Roue - Wymień koło - Vyměňit kolo - Trocar Roda - Sostituisci la ruota - Kerék cseréje - Поменять колесо - - - Replacing Wheel ... - Ersetze Reifen ... - Wymienianie koła ... - Замена колеса... - - - Wheel replaced - Reifen ersetzt - Koło zostało wymienione - Колесо заменено - - - Remove Wheel - Reifen entfernen - Quitar rueda - Démonter Roue - Zdejmij koło - Odstranit Kolo - Remover Roda - Rimuovi la ruota - Kerék leszerelése - Снять колесо - - - Removing Wheel ... - Entferne Reifen ... - Zdejmowanie koła ... - Снятие колеса... - - - Wheel removed - Reifen entfernt - Koło zostało zdjęte - Колесо снято - - - Change Track - Wymień gąsienicę - Заменить гусеницу - - - Replacing Track ... - Wymienianie gąsienicy ... - Замена гусеницы... - - - Track replaced - Gąsienica została wymieniona - Гусеница заменена - - - Remove Track - Zdejmij gąsienicę - Снять гусеницу - - - Removing Track ... - Zdejmowanie gąsienicy ... - Снятие гусеницы... - - - Track removed - Gąsienica została zdjęta - Гусеница снята - - - Full Repair - Pełna naprawa - Полный ремонт - - - Repairing Vehicle ... - Naprawianie pojazdu ... - Ремонт транспорта... - - - Full Repair Locations - Lokaliz. pełnej naprawy - Места полного ремонта - - - At what locations can a vehicle be fully repaired? - W jakich miejscach pojazd może zostać w pełni naprawiony? - В каких местах транспорт может быть полностью отремеонтирован? - - - Allow Full Repair - Zezwól na pełną naprawę - Полный ремонт выполняют - - - Who can perform a full repair on a vehicle? - Kto może przeprowadzić pełną naprawę pojazdu? - Кто может выполнять полный ремонт? - - - Repair >> - Reparieren >> - Reparación >> - Réparer >> - Napraw >> - Opravit >> - Reparar >> - Ripara >> - Szerelés >> - Ремонт >> - - - Display text on repair - Wyświetl tekst przy naprawie - Отображать текст при ремонте - - - Display a notification whenever you repair a vehicle - Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. - Отображать оповещение каждый раз, когда вы ремонтируете транспорт - - - Repairing ... - Reparieren ... - Reparando ... - Réparation ... - Naprawianie... - Opravuji ... - Reparando ... - Sto riparando ... - javítása ... - Ремонтируем ... - - - Repairing %1 ... - Reparieren %1 ... - Reparando %1 ... - Réparation %1 ... - Naprawianie %1... - Opravuji %1 ... - Reparando %1 ... - Sto riparando %1 ... - %1 javítása ... - Ремонтируем %1 ... - - - Repaired %1 - %1 repariert - Reparado %1 - %1 réparé(e) - Naprawiono %1 - Opraveno - %1 - Reparado %1 - %1 Riparata/o - %1 megjavítva - %1 отремонтирован - - - Fully repaired part - Bauteil vollständig repariert - W pełni naprawiono część - Полностью отремонтированная часть - - - Partially repaired %1 - Bauteil teilweise repariert - Częściowo naprawiono: %1 - Частично отремонтировано: %1 - - - Fully repaired %1 - %1 vollständig repariert - W pełni naprawiono: %1 - Полностью отремонтировано: %1 - - - Partially repaired %1 - %1 teilweise repariert - Częściowo naprawiono: %1 - Частично отремонтировано: %1 - - - Body - Karosserie - Carrocería - Blindage - Karoseria - Karoserie - Carroceria - Carrozzeria - Test - Кузов - - - Hull - Wanne - Casco - Caisse - Kadłub - Trup - Chassi - Scafo - Test - Корпус - - - Engine - Motor - Motor - Moteur - Silnik - Motor - Motor - Motore - Motor - Двигатель - - - Left Horizontal Stabilizer - Левый горизонтальный стабилизатор - - - Right Horizontal Stabilizer - Правый горизонтальный стабилизатор - - - Vertical Stabilizer - Вертикальный стабилизатор - - - Fuel Tank - Tank - Depósito - Réservoir - Zbiornik paliwa - Palivová nádrž - Tanque de Combustível - Serbatoio - Üzemanyagtank - Топливный бак - - - Transmission - Трансмиссия - - - Gear - Коробка передач - - - Starter - Стартер - - - Tail - Хвост - - - Pilot Tube - Кокпит - - - Static Port - Статический иллюминатор - - - Ammo - Боеприпасы - - - Turret - Turm - Torreta - Tourelle - Wieżyczka - Věž - Torre - Torretta - Lövegtorony - Башню - - - Gun - Kanone - Cañón - Canon - Działo - Kanón - Canhão - Cannone - Ágyú - Пушку - - - Missiles - Ракеты - - - Left Track - Linke Kette - Cadena izquierda - Chenille gauche - Lewa gąsienica - Levý Pás - Lagarta Esquerda - Cingolo sinistro - Bal lánctalp - Левую гусеницу - - - Right Track - Rechte Kette - Cadena derecha - Chenille droite - Prawa gąsienica - Pravý Pás - Lagarta Direita - Cingolo destro - Jobb lánctalp - Правую гусеницу - - - Left Front Wheel - Linkes Vorderrad - Rueda frontal izquierda - Roue avant-gauche - Przednie lewe koło - Levé přední Kolo - Roda Dianteira Esquerda - Ruota frontale sinistra - Bal első kerék - Левое переднее колесо - - - Right Front Wheel - Rechtes Vorderrad - Rueda frontal derecha - Roue avant-droite - Przednie prawe koło - Pravé přední Kolo - Roda Dianteira Direita - Ruota frontale destra - Jobb első kerék - Правое переднее колесо - - - Second Left Front Wheel - Zweites linkes Vorderrad - Segunda rueda frontal izquierda - Deuxième roue avant-gauche - Drugie przednie lewe koło - Druhé Levé přední Kolo - Segunda Roda Dianteira Esquerda - Seconda ruota frontale sinistra - Második bal első kerék - Второе переднее левое колесо - - - Second Right Front Wheel - Zweites rechtes Vorderrad - Segunda rueda frontal derecha - Deuxième roue avant-droite - Drugie przednie prawe koło - Druhé Pravé přední Kolo - Segunda Roda Dianteira Direita - Seconda ruota frontale destra - Második jobb hátsó kerék - Второе правое переднее колесо - - - Left Middle Wheel - Linkes mittleres Rad - Rueda central izquierda - Roue centre-gauche - Środkowe lewe koło - Levé prostřední Kolo - Roda Intermediária Esquerda - Ruota centrale sinistra - Bal középső kerék - Левое среднее колесо - - - Right Middle Wheel - Rechtes mittleres Rad - Rueda central derecha - Roue centre-droite - Środkowe prawe koło - Pravé prostřední Kolo - Roda Intermediária Direita - Ruota centrale destra - Jobb középső kerék - Правое среднее колесо - - - Left Rear Wheel - Linkes Hinterrad - Rueda trasera izquierda - Roue arrière-gauche - Tylnie lewe koło - Levé zadní Kolo - Roda Traseira Esquerda - Ruota posteriore sinistra - Bal hátsó kerék - Левое заднее колесо - - - Right Rear Wheel - Rechtes Hinterrad - Rueda trasera derecha - Roue arrière-droite - Tylnie prawe koło - Pravé zadní Kolo - Roda Traseira Direita - Ruota posteriore destra - Jobb hátsó kerék - Правое заднее колесо - - - Avionics - Avionik - Aviónica - Avionique - Awionika - Elektronika - Aviônica - Avionica - Avionika - Авионику - - - Main Rotor - Hauptrotor - Rotor principal - Rotor principal - Główny rotor - Hlavní Rotor - Rotor Principal - Rotore principale - Főrotor - Несущий винт - - - Tail Rotor - Heckrotor - Rotor de cola - Rotor anticouple - Tylni rotor - Zadní Rotor - Rotor de Cauda - Rotore di coda - Farokrotor - Рулевой винт - - - Winch - Seilwinde - Wyciągarka - Лебедка - - - Glass (right) - Scheibe (rechts) - Ventana (derecha) - Vitre (droite) - Szyba (prawa) - Sklo (pravé) - Vidro (à direita) - Vetro destro - Jobb szélvédő - Стекло (справа) - - - Glass (left) - Scheibe (links) - Ventana (izquierda) - Vitre (gauche) - Szyba (lewa) - Sklo (pravé) - Vidro (à esquerda) - Vetro sinistro - Bal szélvédő - Стекло (слава) - - - Glass - Scheibe - Ventana - Vitre - Szyba - Sklo - Vidro - Vetro - Üveg - Стекло - - - Repair Settings - Ustawienia naprawy - Ремонт - - - Provides a repair system for all types of vehicles. - Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. - Предоставляет систему ремонта для всех типов транспортных средств. - - - Anyone - Ktokolwiek - Кто угодно - - - Engineer only - Tylko mechanicy - Только инженеры - - - Repair Specialist only - Tylko inżynierowie - Только ремонтные специалисты - - - Allow Wheel - Wymiana kół - Разрешить замену колес - - - Who can remove and replace wheels? - Kto może zdejmować i zmieniać koła? - Кто может снимать и заменять колеса? - - - Allow Repair - Możliwość naprawy - Разрешить ремонт - - - Who can perform repair actions? - Kto może wykonywać czynności związane z naprawą pojazdów? - Кто может выполнять ремонт? - - - Repair Threshold - Próg naprawy - Лимит ремкомплекта - - - What is the maximum damage that can be repaired with a toolkit? - Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? - Какой максимальный урон можно починить с помощью ремкомплекта? - - - Repair Threshold (Engineer) - Próg naprawy (mechanik) - Лимит инженера - - - What is the maximum damage that can be repaired by an engineer? - Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? - Какой максимальный урон может починить инженер? - - - Remove toolkit on use - Usuń narzędzia po użyciu - Удалять ремкомплект после использования - - - Should the toolkit be removed on usage? - Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? - Следует ли удалять ремкомплект после использования? - - - Anywhere - Wszędzie - Где угодно - - - Repair Vehicle only - Przy pojazdach naprawczych - Только у ремонтного транспорта - - - Repair Facility only - Przy budynkach naprawczych - Только у ремонтных сооружений - - - Repair Facility or Vehicle - Przy budynkach i pojazdach naprawczych - Только у ремонтного транспорта или ремонтных сооружений - - - Assign Engineer - Przydziel inżyniera - Назначить инженером - - - List - Lista - Список - - - List of unit names that will be classified as engineer, separated by commas. - Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. - Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. - - - Is Engineer - Poziom wyszkolenia - Это инженер - - - Select the engineering skill level of the unit - Wybierz biegłość w dziedzinie naprawy danej jednostki - Укажите уровень инженерного мастерства для юнита - - - None - Żadny - Нет - - - Engineer - Mechanik - Инженер - - - Specialist - Inżynier - Специалист - - - Assign one or multiple units as an engineer - Przydziel klasę inżyniera do jednej lub kilku jednostek - Назначить одного или нескольких юнитов инженерами - - - Assign Repair Vehicle - Przydziel pojazd naprawczy - Назначить ремонтный транспорт - - - List - Lista - Список - - - List of vehicles that will be classified as repair vehicle, separated by commas. - Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. - Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. - - - Is Repair Vehicle - Jest poj. naprawczym - Это ремонтный транспорт - - - Is the vehicle classified as a repair vehicle? - Czy pojazd jest zklasyfikowany jako pojazd naprawczy? - Классифицируется ли этот транспорт как ремонтный? - - - Assign one or multiple vehicles as a repair vehicle - Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. - Назначить одно или несколько транспортных средств ремонтными - - - Assign Repair Facility - Przydziel budynek naprawczy - Назначить ремонтное сооружение - - - List - Lista - Список - - - List of objects that will be classified as repair Facility, separated by commas. - Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. - Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. - - - Is Repair Facility - Jest bud. naprawczym - Это ремонтное сооружение - - - Is the object classified as a repair Facility? - Czy budynek jest zklasyfikowany jako budynek naprawczy? - Классифицируется ли этот объект как ремонтное сооружение? - - - Assign one or multiple objects as a repair Facility - Przydziel klasę budynku naprawczego do jednego lub kilku budynków. - Назначить один или несколько объектов ремонтными сооружениями - - + + + + + + Spare Track + Ersatzkette + Cadena de repuesto + Chenille de réserve + Zapasowa gąsienica + Náhradní pásy + Lagarta Reserva + Cingolo di scorta + Pót lánctalp + Запасная гусеница + + + Spare Wheel + Ersatzreifen + Rueda de repuesto + Roue de secours + Zapasowe koło + Náhradní Kolo + Roda Reserva + Ruota di scorta + Pótkerék + Запасное колесо + + + Change Wheel + Reifen wechseln + Cambiar rueda + Changer Roue + Wymień koło + Vyměňit kolo + Trocar Roda + Sostituisci la ruota + Kerék cseréje + Поменять колесо + + + Replacing Wheel ... + Ersetze Reifen ... + Wymienianie koła ... + Замена колеса... + + + Wheel replaced + Reifen ersetzt + Koło zostało wymienione + Колесо заменено + + + Remove Wheel + Reifen entfernen + Quitar rueda + Démonter Roue + Zdejmij koło + Odstranit Kolo + Remover Roda + Rimuovi la ruota + Kerék leszerelése + Снять колесо + + + Removing Wheel ... + Entferne Reifen ... + Zdejmowanie koła ... + Снятие колеса... + + + Wheel removed + Reifen entfernt + Koło zostało zdjęte + Колесо снято + + + Change Track + Wymień gąsienicę + Заменить гусеницу + + + Replacing Track ... + Wymienianie gąsienicy ... + Замена гусеницы... + + + Track replaced + Gąsienica została wymieniona + Гусеница заменена + + + Remove Track + Zdejmij gąsienicę + Снять гусеницу + + + Removing Track ... + Zdejmowanie gąsienicy ... + Снятие гусеницы... + + + Track removed + Gąsienica została zdjęta + Гусеница снята + + + Full Repair + Pełna naprawa + Полный ремонт + + + Repairing Vehicle ... + Naprawianie pojazdu ... + Ремонт транспорта... + + + Full Repair Locations + Lokaliz. pełnej naprawy + Места полного ремонта + + + At what locations can a vehicle be fully repaired? + W jakich miejscach pojazd może zostać w pełni naprawiony? + В каких местах транспорт может быть полностью отремеонтирован? + + + Allow Full Repair + Zezwól na pełną naprawę + Полный ремонт выполняют + + + Who can perform a full repair on a vehicle? + Kto może przeprowadzić pełną naprawę pojazdu? + Кто может выполнять полный ремонт? + + + Repair >> + Reparieren >> + Reparación >> + Réparer >> + Napraw >> + Opravit >> + Reparar >> + Ripara >> + Szerelés >> + Ремонт >> + + + Display text on repair + Wyświetl tekst przy naprawie + Отображать текст при ремонте + + + Display a notification whenever you repair a vehicle + Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. + Отображать оповещение каждый раз, когда вы ремонтируете транспорт + + + Repairing ... + Reparieren ... + Reparando ... + Réparation ... + Naprawianie... + Opravuji ... + Reparando ... + Sto riparando ... + javítása ... + Ремонтируем ... + + + Repairing %1 ... + Reparieren %1 ... + Reparando %1 ... + Réparation %1 ... + Naprawianie %1... + Opravuji %1 ... + Reparando %1 ... + Sto riparando %1 ... + %1 javítása ... + Ремонтируем %1 ... + + + Repaired %1 + %1 repariert + Reparado %1 + %1 réparé(e) + Naprawiono %1 + Opraveno - %1 + Reparado %1 + %1 Riparata/o + %1 megjavítva + %1 отремонтирован + + + Fully repaired part + Bauteil vollständig repariert + W pełni naprawiono część + Полностью отремонтированная часть + + + Partially repaired %1 + Bauteil teilweise repariert + Częściowo naprawiono: %1 + Частично отремонтировано: %1 + + + Fully repaired %1 + %1 vollständig repariert + W pełni naprawiono: %1 + Полностью отремонтировано: %1 + + + Partially repaired %1 + %1 teilweise repariert + Częściowo naprawiono: %1 + Частично отремонтировано: %1 + + + Body + Karosserie + Carrocería + Blindage + Karoseria + Karoserie + Carroceria + Carrozzeria + Test + Кузов + + + Hull + Wanne + Casco + Caisse + Kadłub + Trup + Chassi + Scafo + Test + Корпус + + + Engine + Motor + Motor + Moteur + Silnik + Motor + Motor + Motore + Motor + Двигатель + + + Left Horizontal Stabilizer + Левый горизонтальный стабилизатор + + + Right Horizontal Stabilizer + Правый горизонтальный стабилизатор + + + Vertical Stabilizer + Вертикальный стабилизатор + + + Fuel Tank + Tank + Depósito + Réservoir + Zbiornik paliwa + Palivová nádrž + Tanque de Combustível + Serbatoio + Üzemanyagtank + Топливный бак + + + Transmission + Трансмиссия + + + Gear + Коробка передач + + + Starter + Стартер + + + Tail + Хвост + + + Pilot Tube + Кокпит + + + Static Port + Статический иллюминатор + + + Ammo + Боеприпасы + + + Turret + Turm + Torreta + Tourelle + Wieżyczka + Věž + Torre + Torretta + Lövegtorony + Башню + + + Gun + Kanone + Cañón + Canon + Działo + Kanón + Canhão + Cannone + Ágyú + Пушку + + + Missiles + Ракеты + + + Left Track + Linke Kette + Cadena izquierda + Chenille gauche + Lewa gąsienica + Levý Pás + Lagarta Esquerda + Cingolo sinistro + Bal lánctalp + Левую гусеницу + + + Right Track + Rechte Kette + Cadena derecha + Chenille droite + Prawa gąsienica + Pravý Pás + Lagarta Direita + Cingolo destro + Jobb lánctalp + Правую гусеницу + + + Left Front Wheel + Linkes Vorderrad + Rueda frontal izquierda + Roue avant-gauche + Przednie lewe koło + Levé přední Kolo + Roda Dianteira Esquerda + Ruota frontale sinistra + Bal első kerék + Левое переднее колесо + + + Right Front Wheel + Rechtes Vorderrad + Rueda frontal derecha + Roue avant-droite + Przednie prawe koło + Pravé přední Kolo + Roda Dianteira Direita + Ruota frontale destra + Jobb első kerék + Правое переднее колесо + + + Second Left Front Wheel + Zweites linkes Vorderrad + Segunda rueda frontal izquierda + Deuxième roue avant-gauche + Drugie przednie lewe koło + Druhé Levé přední Kolo + Segunda Roda Dianteira Esquerda + Seconda ruota frontale sinistra + Második bal első kerék + Второе переднее левое колесо + + + Second Right Front Wheel + Zweites rechtes Vorderrad + Segunda rueda frontal derecha + Deuxième roue avant-droite + Drugie przednie prawe koło + Druhé Pravé přední Kolo + Segunda Roda Dianteira Direita + Seconda ruota frontale destra + Második jobb hátsó kerék + Второе правое переднее колесо + + + Left Middle Wheel + Linkes mittleres Rad + Rueda central izquierda + Roue centre-gauche + Środkowe lewe koło + Levé prostřední Kolo + Roda Intermediária Esquerda + Ruota centrale sinistra + Bal középső kerék + Левое среднее колесо + + + Right Middle Wheel + Rechtes mittleres Rad + Rueda central derecha + Roue centre-droite + Środkowe prawe koło + Pravé prostřední Kolo + Roda Intermediária Direita + Ruota centrale destra + Jobb középső kerék + Правое среднее колесо + + + Left Rear Wheel + Linkes Hinterrad + Rueda trasera izquierda + Roue arrière-gauche + Tylnie lewe koło + Levé zadní Kolo + Roda Traseira Esquerda + Ruota posteriore sinistra + Bal hátsó kerék + Левое заднее колесо + + + Right Rear Wheel + Rechtes Hinterrad + Rueda trasera derecha + Roue arrière-droite + Tylnie prawe koło + Pravé zadní Kolo + Roda Traseira Direita + Ruota posteriore destra + Jobb hátsó kerék + Правое заднее колесо + + + Avionics + Avionik + Aviónica + Avionique + Awionika + Elektronika + Aviônica + Avionica + Avionika + Авионику + + + Main Rotor + Hauptrotor + Rotor principal + Rotor principal + Główny rotor + Hlavní Rotor + Rotor Principal + Rotore principale + Főrotor + Несущий винт + + + Tail Rotor + Heckrotor + Rotor de cola + Rotor anticouple + Tylni rotor + Zadní Rotor + Rotor de Cauda + Rotore di coda + Farokrotor + Рулевой винт + + + Winch + Seilwinde + Wyciągarka + Лебедка + + + Glass (right) + Scheibe (rechts) + Ventana (derecha) + Vitre (droite) + Szyba (prawa) + Sklo (pravé) + Vidro (à direita) + Vetro destro + Jobb szélvédő + Стекло (справа) + + + Glass (left) + Scheibe (links) + Ventana (izquierda) + Vitre (gauche) + Szyba (lewa) + Sklo (pravé) + Vidro (à esquerda) + Vetro sinistro + Bal szélvédő + Стекло (слава) + + + Glass + Scheibe + Ventana + Vitre + Szyba + Sklo + Vidro + Vetro + Üveg + Стекло + + + Repair Settings + Ustawienia naprawy + Ремонт + + + Provides a repair system for all types of vehicles. + Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. + Предоставляет систему ремонта для всех типов транспортных средств. + + + Anyone + Ktokolwiek + Кто угодно + + + Engineer only + Tylko mechanicy + Только инженеры + + + Repair Specialist only + Tylko inżynierowie + Только ремонтные специалисты + + + Allow Wheel + Wymiana kół + Разрешить замену колес + + + Who can remove and replace wheels? + Kto może zdejmować i zmieniać koła? + Кто может снимать и заменять колеса? + + + Allow Repair + Możliwość naprawy + Разрешить ремонт + + + Who can perform repair actions? + Kto może wykonywać czynności związane z naprawą pojazdów? + Кто может выполнять ремонт? + + + Repair Threshold + Próg naprawy + Лимит ремкомплекта + + + What is the maximum damage that can be repaired with a toolkit? + Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? + Какой максимальный урон можно починить с помощью ремкомплекта? + + + Repair Threshold (Engineer) + Próg naprawy (mechanik) + Лимит инженера + + + What is the maximum damage that can be repaired by an engineer? + Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? + Какой максимальный урон может починить инженер? + + + Remove toolkit on use + Usuń narzędzia po użyciu + Удалять ремкомплект после использования + + + Should the toolkit be removed on usage? + Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? + Следует ли удалять ремкомплект после использования? + + + Anywhere + Wszędzie + Где угодно + + + Repair Vehicle only + Przy pojazdach naprawczych + Только у ремонтного транспорта + + + Repair Facility only + Przy budynkach naprawczych + Только у ремонтных сооружений + + + Repair Facility or Vehicle + Przy budynkach i pojazdach naprawczych + Только у ремонтного транспорта или ремонтных сооружений + + + Assign Engineer + Przydziel inżyniera + Назначить инженером + + + List + Lista + Список + + + List of unit names that will be classified as engineer, separated by commas. + Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. + Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. + + + Is Engineer + Poziom wyszkolenia + Это инженер + + + Select the engineering skill level of the unit + Wybierz biegłość w dziedzinie naprawy danej jednostki + Укажите уровень инженерного мастерства для юнита + + + None + Żadny + Нет + + + Engineer + Mechanik + Инженер + + + Specialist + Inżynier + Специалист + + + Assign one or multiple units as an engineer + Przydziel klasę inżyniera do jednej lub kilku jednostek + Назначить одного или нескольких юнитов инженерами + + + Assign Repair Vehicle + Przydziel pojazd naprawczy + Назначить ремонтный транспорт + + + List + Lista + Список + + + List of vehicles that will be classified as repair vehicle, separated by commas. + Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. + Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. + + + Is Repair Vehicle + Jest poj. naprawczym + Это ремонтный транспорт + + + Is the vehicle classified as a repair vehicle? + Czy pojazd jest zklasyfikowany jako pojazd naprawczy? + Классифицируется ли этот транспорт как ремонтный? + + + Assign one or multiple vehicles as a repair vehicle + Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. + Назначить одно или несколько транспортных средств ремонтными + + + Assign Repair Facility + Przydziel budynek naprawczy + Назначить ремонтное сооружение + + + List + Lista + Список + + + List of objects that will be classified as repair Facility, separated by commas. + Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. + Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. + + + Is Repair Facility + Jest bud. naprawczym + Это ремонтное сооружение + + + Is the object classified as a repair Facility? + Czy budynek jest zklasyfikowany jako budynek naprawczy? + Классифицируется ли этот объект как ремонтное сооружение? + + + Assign one or multiple objects as a repair Facility + Przydziel klasę budynku naprawczego do jednego lub kilku budynków. + Назначить один или несколько объектов ремонтными сооружениями + + \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 2326de0d76..d4063e0816 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -1,258 +1,258 @@ - - - - - Deploy in 5 seconds ... - Déploiement dans 5 secondes ... - Wird in 5 Sekunden errichtet ... - Despliegue en 5 segundos ... - Возрождение через 5 секунд ... - Rozmieszczenie za 5 sekund ... - Respawn za 5 sekund... - Kihelyezés 5 másodperc múlva ... - Dispiegamento in 5 secondi ... - Será posicionado em 5 segundos ... - - - Rallypoint deployed - Point de ralliement déployé - Sammelpunkt errichtet - Punto de reunión desplegado - Точка сбора установлена - Punkt zbiórki rozmieszczony - Rallypoint umístěn - Gyülekezőpont elhelyezve - Rallypoint dispiegato - Rallypoints posicionado - - - Teleport to Base - Teleportovat na Základnu - Zur Basis teleportieren - Treletransportar a Base - Teleport do bazy - Телепортироваться на базу - Téléportation à la base - Teletransportar para a Base - Bázisra teleportálás - Teleporta alla base - - - Teleport to Rallypoint - Teleport na Rallypoint - Teletransportar a Punto de reunión - Zum Sammelpunkt teleportieren - Teleport do punktu zbiórki - Телепортироваться на точку сбора - Téléporation au point de ralliement - Teletransportar para o ponto de encontro - Gyülekezőpontra teleportálás - Teleporta al rallypoint - - - Teleported to Base - Téléporté à la base - Zur Basis teleportiert - Teletransportado a base - Вы были телепортированы на базу - Przeteleportowano do bazy - Teleportován na základnu - Bázisra teleportálva - Teleportato alla base - Teletransportado para a Base - - - Teleported to Rallypoint - Téléporté au point de déploiement - Zum Sammelpunkt teleportiert - Teletransportado al punto de reunión - Вы были телепортированы на точку сбора - Przeteleportowano do punktu zbiórki - Teleportován na rallypoint - Gyülekezőpontra teleportálva - Teleportato al rallypoint - Teletransportado para o Rallypoints - - - Rallypoint West (Base) - Sammelpunkt West (Basis) - Punto de reunión Oeste (Base) - Точка сбора Синих (База) - Punkt zbiórki Zachodu (Baza) - Point de ralliement OUEST (Base) - Rallypoint West (Base) - Gyülekezőpont, Nyugat (Bázis) - Rallypoint Západ (Základna) - Ponto de encontro Oeste (Base) - - - Rallypoint East (Base) - Sammelpunkt Ost (Basis) - Punto de reunión Este (Base) - Точка сбора Красных (База) - Punkt zbiórki Wschodu (Baza) - Point de ralliement EST (Base) - Rallypoint East (Base) - Gyülekezőpont, Kelet (Bázis) - Ralllypoint Východ (Základna) - Ponto de encontro Lest (Base) - - - Rallypoint Independent (Base) - Sammelpunkt Widerstand (Basis) - Punto de reunión Independiente (Base) - Точка сбора Независимых (База) - Punkt zbiórki Ruchu oporu (Baza) - Point de ralliement Indépendant (Base) - Rallypoint Independent (Base) - Gyülekezőpont, Független (Bázis) - Rallypoint Nezávislý (Základna) - Ponto de encontro Independente (Base) - - - Rallypoint West - Sammelpunkt West - Punto de reunión Oeste - Точка сбора Синих - Punkt zbiórki Zachodu - Point de ralliement OUEST - Rallypoint West - Gyülekezőpont, Nyugat - Rallypoint Západ - Ponto de encontro Oeste - - - Rallypoint East - Sammelpunkt Ost - Punto de reunión Este - Точка сбора Красных - Punkt zbiórki Wschodu - Point de ralliement EST - Rallypoint East - Gyülekezőpont, Kelet - Rallypoint Východ - Ponto de encontro Leste - - - Rallypoint Independent - Sammelpunkt Widerstand - Punto de reunión Independiente - Точка сбора Независимых - Punkt zbiórki Ruchu oporu - Point de ralliement Indépendant - Rallypoint Independent - Gyülekezőpont, Független - Rallypoint Nezávislý - Ponto de encontro Independente - - - Respawn System - System odrodzenia - Sistema de reaparición - Respawn-System - Systém znovuzrození - Sistema de Renascimento - Respawn-rendszer - Возрождение - - - Save Gear? - Zapisać ekwipunek? - ¿Guardar equipo? - Ausrüstung speichern? - Uložit výbavu? - Salvar equipamento? - Felszerelés elmentése? - Сохранять снаряжение? - - - Respawn with the gear a soldier had just before his death? - Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? - Reaparece con el equipo que el soldado tenía justo antes de morir - Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? - Znovuubjevit s výbavou kterou měl voják před smrtí? - Renascer com o equipamento que um soldado tinha antes de sua morte? - Az egység halála előtti felszerelésével való respawnolása? - Возрождать солдата с тем же снаряжением, которое было на нем при смерти? - - - Remove bodies? - Usuwać ciała? - ¿Eliminar cuerpos? - Körper entfernen? - Odstranit těla? - Remover corpos? - Holttestek eltávolítása? - Удалять трупы? - - - Remove player bodies after disconnect? - Usuwaj ciała graczy po rozłączeniu z serwera? - Elimina los cuerpos de los jugadores cuando se desconecten - Entferne Spielerkörper nach dem Trennen einer Verbindung? - Odstranit hráčova těla po odpojení? - Remover corpos dos jogadores depois de desconectar? - Játékosi testek eltávolítása távozás után? - Удалять трупы игроков после дисконнекта? - - - Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). - Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. - Tento modul umožňuje nastavení znovuzrození (spawn). - Este módulo permite que você personalize as configurações do renascimento (Spawn). - Этот модуль позволяет настроить систему возрождения. - - - Friendly Fire Messages - Wiadomości Friendly Fire - Mensajes de fuego amigo - Freundbeschuss-Nachrichten - Upozornění na přátelskou střelbu - Mensagens de fogo amigo - Baráti tűz üzenetek - Сообщения о дружественном огне (Friendly Fire) - - - Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. - Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. - Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. - Отображает сообщение в чате, в случае, когда убивают союзных игроков. В докладе указывается, кто стрелял, в кого. Кто кого убил. - - - Rallypoint System - System punktu zbiórki - Sistema de punto de reunión - Rallypoint-System - Systém shromáždění - Sistema de ponto de encontro - Gyülekezőpont-rendszer - Система точек сбора - - - Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. - Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. - Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. - Этот модуль позволяет вам указать место сбора, куда вы можете быстро телепортироваться с "базы". Требуется наличие соответствующих объектов на карте - базы и флага. Они могут быть найдены в категории Пусто -> ACE Возрождения. - - - Move Rallypoint - Przenieś punkt zbiórki - Mover punto de reunión - Bewege Rallypoint - Přesun na shromaždiště - Mover para ponto de encontro - Gyülekezőpont mozgatása - Двигать точку сбора - - - ACE Respawn - ACE Odrodzenie - Reaparición ACE - ACE-Respawn - ACE Znovuzrození - ACE Respawn - ACE Respawn - ACE Возрождение - - + + + + + Deploy in 5 seconds ... + Déploiement dans 5 secondes ... + Wird in 5 Sekunden errichtet ... + Despliegue en 5 segundos ... + Возрождение через 5 секунд ... + Rozmieszczenie za 5 sekund ... + Respawn za 5 sekund... + Kihelyezés 5 másodperc múlva ... + Dispiegamento in 5 secondi ... + Será posicionado em 5 segundos ... + + + Rallypoint deployed + Point de ralliement déployé + Sammelpunkt errichtet + Punto de reunión desplegado + Точка сбора установлена + Punkt zbiórki rozmieszczony + Rallypoint umístěn + Gyülekezőpont elhelyezve + Rallypoint dispiegato + Rallypoints posicionado + + + Teleport to Base + Teleportovat na Základnu + Zur Basis teleportieren + Treletransportar a Base + Teleport do bazy + Телепортироваться на базу + Téléportation à la base + Teletransportar para a Base + Bázisra teleportálás + Teleporta alla base + + + Teleport to Rallypoint + Teleport na Rallypoint + Teletransportar a Punto de reunión + Zum Sammelpunkt teleportieren + Teleport do punktu zbiórki + Телепортироваться на точку сбора + Téléporation au point de ralliement + Teletransportar para o ponto de encontro + Gyülekezőpontra teleportálás + Teleporta al rallypoint + + + Teleported to Base + Téléporté à la base + Zur Basis teleportiert + Teletransportado a base + Вы были телепортированы на базу + Przeteleportowano do bazy + Teleportován na základnu + Bázisra teleportálva + Teleportato alla base + Teletransportado para a Base + + + Teleported to Rallypoint + Téléporté au point de déploiement + Zum Sammelpunkt teleportiert + Teletransportado al punto de reunión + Вы были телепортированы на точку сбора + Przeteleportowano do punktu zbiórki + Teleportován na rallypoint + Gyülekezőpontra teleportálva + Teleportato al rallypoint + Teletransportado para o Rallypoints + + + Rallypoint West (Base) + Sammelpunkt West (Basis) + Punto de reunión Oeste (Base) + Точка сбора Синих (База) + Punkt zbiórki Zachodu (Baza) + Point de ralliement OUEST (Base) + Rallypoint West (Base) + Gyülekezőpont, Nyugat (Bázis) + Rallypoint Západ (Základna) + Ponto de encontro Oeste (Base) + + + Rallypoint East (Base) + Sammelpunkt Ost (Basis) + Punto de reunión Este (Base) + Точка сбора Красных (База) + Punkt zbiórki Wschodu (Baza) + Point de ralliement EST (Base) + Rallypoint East (Base) + Gyülekezőpont, Kelet (Bázis) + Ralllypoint Východ (Základna) + Ponto de encontro Lest (Base) + + + Rallypoint Independent (Base) + Sammelpunkt Widerstand (Basis) + Punto de reunión Independiente (Base) + Точка сбора Независимых (База) + Punkt zbiórki Ruchu oporu (Baza) + Point de ralliement Indépendant (Base) + Rallypoint Independent (Base) + Gyülekezőpont, Független (Bázis) + Rallypoint Nezávislý (Základna) + Ponto de encontro Independente (Base) + + + Rallypoint West + Sammelpunkt West + Punto de reunión Oeste + Точка сбора Синих + Punkt zbiórki Zachodu + Point de ralliement OUEST + Rallypoint West + Gyülekezőpont, Nyugat + Rallypoint Západ + Ponto de encontro Oeste + + + Rallypoint East + Sammelpunkt Ost + Punto de reunión Este + Точка сбора Красных + Punkt zbiórki Wschodu + Point de ralliement EST + Rallypoint East + Gyülekezőpont, Kelet + Rallypoint Východ + Ponto de encontro Leste + + + Rallypoint Independent + Sammelpunkt Widerstand + Punto de reunión Independiente + Точка сбора Независимых + Punkt zbiórki Ruchu oporu + Point de ralliement Indépendant + Rallypoint Independent + Gyülekezőpont, Független + Rallypoint Nezávislý + Ponto de encontro Independente + + + Respawn System + System odrodzenia + Sistema de reaparición + Respawn-System + Systém znovuzrození + Sistema de Renascimento + Respawn-rendszer + Возрождение + + + Save Gear? + Zapisać ekwipunek? + ¿Guardar equipo? + Ausrüstung speichern? + Uložit výbavu? + Salvar equipamento? + Felszerelés elmentése? + Сохранять снаряжение? + + + Respawn with the gear a soldier had just before his death? + Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? + Reaparece con el equipo que el soldado tenía justo antes de morir + Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? + Znovuubjevit s výbavou kterou měl voják před smrtí? + Renascer com o equipamento que um soldado tinha antes de sua morte? + Az egység halála előtti felszerelésével való respawnolása? + Возрождать солдата с тем же снаряжением, которое было на нем при смерти? + + + Remove bodies? + Usuwać ciała? + ¿Eliminar cuerpos? + Körper entfernen? + Odstranit těla? + Remover corpos? + Holttestek eltávolítása? + Удалять трупы? + + + Remove player bodies after disconnect? + Usuwaj ciała graczy po rozłączeniu z serwera? + Elimina los cuerpos de los jugadores cuando se desconecten + Entferne Spielerkörper nach dem Trennen einer Verbindung? + Odstranit hráčova těla po odpojení? + Remover corpos dos jogadores depois de desconectar? + Játékosi testek eltávolítása távozás után? + Удалять трупы игроков после дисконнекта? + + + Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). + Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. + Tento modul umožňuje nastavení znovuzrození (spawn). + Este módulo permite que você personalize as configurações do renascimento (Spawn). + Этот модуль позволяет настроить систему возрождения. + + + Friendly Fire Messages + Wiadomości Friendly Fire + Mensajes de fuego amigo + Freundbeschuss-Nachrichten + Upozornění na přátelskou střelbu + Mensagens de fogo amigo + Baráti tűz üzenetek + Сообщения о дружественном огне (Friendly Fire) + + + Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. + Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. + Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. + Отображает сообщение в чате, в случае, когда убивают союзных игроков. В докладе указывается, кто стрелял, в кого. Кто кого убил. + + + Rallypoint System + System punktu zbiórki + Sistema de punto de reunión + Rallypoint-System + Systém shromáždění + Sistema de ponto de encontro + Gyülekezőpont-rendszer + Система точек сбора + + + Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. + Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. + Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. + Этот модуль позволяет вам указать место сбора, куда вы можете быстро телепортироваться с "базы". Требуется наличие соответствующих объектов на карте - базы и флага. Они могут быть найдены в категории Пусто -> ACE Возрождения. + + + Move Rallypoint + Przenieś punkt zbiórki + Mover punto de reunión + Bewege Rallypoint + Přesun na shromaždiště + Mover para ponto de encontro + Gyülekezőpont mozgatása + Двигать точку сбора + + + ACE Respawn + ACE Odrodzenie + Reaparición ACE + ACE-Respawn + ACE Znovuzrození + ACE Respawn + ACE Respawn + ACE Возрождение + + \ No newline at end of file diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index d0fe778da8..9cb2882320 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -1,50 +1,50 @@ - - - - - Sit Down - Usiądź - Sentar - Sednout si - Sentarse - Leülés - Сесть - - - Stand Up - Wstań - Levantar - Vstát - Levantarse - Felállás - Встать - - - Enable Sitting - Habilitar opção para sentar - Aktywuj siadanie - Povolit sezení - Acivar asiento - Ülés engedélyezése - Разрешить сидение - - - Sitting - Sentado - Siadanie - Sedící - Sentarse - Ülés - Сидение - - - This module allows you to disable the ability to sit on chairs and toilets. - Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. - Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. - Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. - Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos. - Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. - Этот модуль позволяет вам запретить возможность садиться на стулья и туалеты. - - + + + + + Sit Down + Usiądź + Sentar + Sednout si + Sentarse + Leülés + Сесть + + + Stand Up + Wstań + Levantar + Vstát + Levantarse + Felállás + Встать + + + Enable Sitting + Habilitar opção para sentar + Aktywuj siadanie + Povolit sezení + Acivar asiento + Ülés engedélyezése + Разрешить сидение + + + Sitting + Sentado + Siadanie + Sedící + Sentarse + Ülés + Сидение + + + This module allows you to disable the ability to sit on chairs and toilets. + Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. + Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. + Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. + Este módulo te permite desactivar la capacidad de sentarte en sillas y aseos. + Ez a modul lehetővé teszi a székekre és toalettekre való leülés letiltását. + Этот модуль позволяет вам запретить возможность садиться на стулья и туалеты. + + \ No newline at end of file diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index b690380e39..fe076ecc9a 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -1,96 +1,96 @@ - - - - - Slideshow - Pokaz slajdów - Vetítés - Apresentação de Slides - Слайд-шоу - - - This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. - Ten moduł pozwala skonfigurować pokaz slajdów na różnych obiektach. Jeden moduł na jedną liste slajdów. Tylko obiekty z hiddenSelection 0 są wspierane. - Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. - Este módulo permite que você monte apresentações de slides em diferentes objetos. Um módulo por lista de imagem. Somente objetos com hiddenSelection 0 são suportados. - Этот модуль позволяет вам устроить слайд-шоу на различных объектах. Один модуль на один список изображений. Поддерживаются только объекты с hiddenSelection 0. - - - Objects - Obiekty - Objektumok - Objetos - Объекты - - - Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. - Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł. - Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. - Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto. - Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми. Посмотрите описание, чтобы понять, какие объекты поддерживаются. - - - Controllers - Kontroler - Vezérlők - Controles - Контроллеры - - - Controller object names, separated by commas if multiple. - Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. - Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. - Nome dos objetos de controle, separado por vírgula se mais de um. - Имена объектов-контроллеров, разделенные запятыми. - - - Images - Obrazy - Képek - Imagens - Изображения - - - List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). - Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). - A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) - Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). - Список изображений, которые будут использованы для слайд-шоу, разделенные запятыми, с полными путями в правильном формате (например, images\image.paa). - - - Interaction Names - Nazwy interakcji - Interakciós nevek - Nomes de Interação - Интерактивные имена - - - List of names that will be used for interaction entries, separated by commas, in order of images. - Lista nazw, które zostaną użyte do nazwania wpisów interakcji, oddzielone przecinkiem, w kolejności obrazów. - Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. - Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. - Список имен, которые будут использованы при взаимодействии, разделенные запятыми, в порядке следования изображений. - - - Slide Duration - Czas trwania slajdów - Dia időtartam - Duração do Slide - Длительность слайда - - - Duration of each slide. Default: 0 (Automatic Transitions Disabled) - Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone) - A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) - Duração de cada slide. Padrão: 0 (Transição automática desabilitada) - Длительность каждого слайда. По-умолчанию: 0 (автоматический переход отключен) - - - Slides - Slajdy - Diák - Slides - Слайды - - + + + + + Slideshow + Pokaz slajdów + Vetítés + Apresentação de Slides + Слайд-шоу + + + This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. + Ten moduł pozwala skonfigurować pokaz slajdów na różnych obiektach. Jeden moduł na jedną liste slajdów. Tylko obiekty z hiddenSelection 0 są wspierane. + Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. + Este módulo permite que você monte apresentações de slides em diferentes objetos. Um módulo por lista de imagem. Somente objetos com hiddenSelection 0 são suportados. + Этот модуль позволяет вам устроить слайд-шоу на различных объектах. Один модуль на один список изображений. Поддерживаются только объекты с hiddenSelection 0. + + + Objects + Obiekty + Objektumok + Objetos + Объекты + + + Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. + Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł. + Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. + Nomes dos objetos (também podem ser objetos sincronizados) em que a apresentação de slides será mostrada, separado por vírgulas se for mais de um. Referência INFO para suporte do objeto. + Имена объектов (так же могут использоваться синхронизированные объекты), на которых будет отображаться слайд-шоу, разделенные запятыми. Посмотрите описание, чтобы понять, какие объекты поддерживаются. + + + Controllers + Kontroler + Vezérlők + Controles + Контроллеры + + + Controller object names, separated by commas if multiple. + Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. + Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. + Nome dos objetos de controle, separado por vírgula se mais de um. + Имена объектов-контроллеров, разделенные запятыми. + + + Images + Obrazy + Képek + Imagens + Изображения + + + List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). + Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). + A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) + Lista das imagens que serão utilizadas na apresentação de slides, separadas por vírgula, com o caminho completo corretamente formatado (ex: imagens\imagem.paa). + Список изображений, которые будут использованы для слайд-шоу, разделенные запятыми, с полными путями в правильном формате (например, images\image.paa). + + + Interaction Names + Nazwy interakcji + Interakciós nevek + Nomes de Interação + Интерактивные имена + + + List of names that will be used for interaction entries, separated by commas, in order of images. + Lista nazw, które zostaną użyte do nazwania wpisów interakcji, oddzielone przecinkiem, w kolejności obrazów. + Olyan nevek listája, melyek interakciós célra kellenek, vesszővel elválasztva, kép szerinti sorrendben. + Lista dos nomes que serão usados para entradas de interação, separados por vírgulas, na ordem das imagens. + Список имен, которые будут использованы при взаимодействии, разделенные запятыми, в порядке следования изображений. + + + Slide Duration + Czas trwania slajdów + Dia időtartam + Duração do Slide + Длительность слайда + + + Duration of each slide. Default: 0 (Automatic Transitions Disabled) + Czas trwania poszczególnych slajdów. Domyślnie: 0 (Automatyczne przejścia wyłączone) + A diák időtartama. Alapértelmezett: 0 (Automatikus váltás letiltva) + Duração de cada slide. Padrão: 0 (Transição automática desabilitada) + Длительность каждого слайда. По-умолчанию: 0 (автоматический переход отключен) + + + Slides + Slajdy + Diák + Slides + Слайды + + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index e4f2bb0b77..ca44a2ab27 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -1,337 +1,337 @@ - - - - - Spectator Settings - Ustawienia obserwatora - Настройки спектатора - - - Configure how the spectator system will operate by default. - Skonfiguruj domyślne ustawienia obserwatora. - Определяют, как система спектатора будет функционировать по-умолчанию. - - - Unit filter - Filtr jednostek - Фильтр юнитов - - - Method of filtering spectatable units. - Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. - Метод фильтрации наблюдаемых юнитов. - - - No units - Brak jednostek - Никто - - - Only players - Tylko gracze - Только игроки - - - Playable Units - Grywalne jednostki - Играбельные юниты - - - All units - Wszystkie jednostki - Все юниты - - - Side filter - Filtr stron - Фильтр стороны - - - Method of filtering spectatable sides. - Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. - Метод фильтрации наблюдаемых сторон. - - - Player side - Strona gracza - Сторона игрока - - - Friendly sides - Strony sojusznicze - Дружественные стороны - - - Hostile sides - Strony wrogie - Враждебные стороны - - - All sides - Wszystkie strony - Все стороны - - - Camera modes - Tryby kamery - Режимы камеры - - - Camera modes that can be used. - Tryby kamery, jakie mogą być używane. - Режимы камеры, которые могут быть использованы - - - All - Wszystkie - Все - - - Free only - Tylko wolna - Только свободная - - - Internal only - Tylko wewnętrzna - Только внутренняя - - - External only - Tylko zewnętrzna - Только внешняя - - - Internal and external - Wewnętrzna i zewnętrzna - Внутренняя и внешняя - - - Vision modes - Tryby wizji - Режимы видения - - - Vision modes that can be used. - Tryby wizji, jakie mogą być używane. - Режимы видения, которые могут быть использованы - - - Night vision - Noktowizja - Ночное видение - - - Thermal imaging - Termowizja - Тепловизионное - - - - Spectator Units - Jednostki obserwatora - Юниты - - - Spectator Controls - Sterowanie obserwatorem - Управление спектатором - - - Free - Wolna - Свободная - - - Internal - Wewnętrzna - Внутренняя - - - External - Zewnętrzna - Внешняя - - - Normal - Normalna - Нормальное - - - Night - Noc - Ночное - - - Thermal - Termo - Тепловизор - - - - Free Camera - Kamera swobodna - Свободная камера - - - Camera Forward - Kamera naprzód - Камера вперед - - - Camera Backward - Kamera w tył - Камера назад - - - Camera Left - Kamera w lewo - Камера влево - - - Camera Right - Kamera w prawo - Камера вправо - - - Camera Up - Kamera w górę - Камера вверх - - - Camera Down - Kamera w dół - Камера вниз - - - Pan Camera - Panoramowanie - Панорамирование - - - Dolly Camera - Płynna kamera - Рельсовая камера - - - Lock Camera to Target - Zablokuj kamerę na celu - Зафиксировать камеру на цели - - - Speed Boost - Przyśpieszenie kamery - Ускорение камеры - - - Focus on Unit - Skup na jednostce - Фокус на юните - - - Interface - Interfejs - Интерфейс - - - Toggle Interface - Przełącz interfejs - Переключить интерфейс - - - Toggle Unit Icons - Przełącz ikony jednostek - Вкл./выкл. иконки юнитов - - - Toggle Unit List - Przełącz listę jednostek - Вкл./выкл. список юнитов - - - Toggle Toolbar - Przełącz pasek narzędzi - Вкл./выкл. тулбар - - - Toggle Compass - Przełącz kompas - Вкл./выкл. компас - - - Toggle Map - Przełącz mapę - Вкл./выкл. карту - - - Toggle Help - Przełącz pomoc - Вкл./выкл. помощь - - - Camera Attributes - Atrybuty kamery - Атрибуты камеры - - - Next Camera - Następna kamera - Следующая камера - - - Previous Camera - Poprzednia kamera - Предыдущая камера - - - Next Unit - Następna jednostka - Следующий юнит - - - Previous Unit - Poprzednia jednostka - Предыдущий юнит - - - Next Vision Mode - Następny tryb wizji - Следующий режим видения - - - Previous Vision Mode - Poprzedni tryb wizji - Предыдущий режим видения - - - Adjust Zoom - Reguluj zoom - Настроить зум - - - Adjust Speed - Reguluj prędkość - Настроить скорость - - - Increment Zoom - Reguluj zoom (krok) - Увеличить зум - - - Increment Speed - Reguluj prędkość (krok) - Увеличить скорость - - - Reset Zoom - Resetuj zoom - Сбросить зум - - - Reset Speed - Resetuj prędkość - Сбросить скорость - - + + + + + Spectator Settings + Ustawienia obserwatora + Настройки спектатора + + + Configure how the spectator system will operate by default. + Skonfiguruj domyślne ustawienia obserwatora. + Определяют, как система спектатора будет функционировать по-умолчанию. + + + Unit filter + Filtr jednostek + Фильтр юнитов + + + Method of filtering spectatable units. + Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. + Метод фильтрации наблюдаемых юнитов. + + + No units + Brak jednostek + Никто + + + Only players + Tylko gracze + Только игроки + + + Playable Units + Grywalne jednostki + Играбельные юниты + + + All units + Wszystkie jednostki + Все юниты + + + Side filter + Filtr stron + Фильтр стороны + + + Method of filtering spectatable sides. + Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. + Метод фильтрации наблюдаемых сторон. + + + Player side + Strona gracza + Сторона игрока + + + Friendly sides + Strony sojusznicze + Дружественные стороны + + + Hostile sides + Strony wrogie + Враждебные стороны + + + All sides + Wszystkie strony + Все стороны + + + Camera modes + Tryby kamery + Режимы камеры + + + Camera modes that can be used. + Tryby kamery, jakie mogą być używane. + Режимы камеры, которые могут быть использованы + + + All + Wszystkie + Все + + + Free only + Tylko wolna + Только свободная + + + Internal only + Tylko wewnętrzna + Только внутренняя + + + External only + Tylko zewnętrzna + Только внешняя + + + Internal and external + Wewnętrzna i zewnętrzna + Внутренняя и внешняя + + + Vision modes + Tryby wizji + Режимы видения + + + Vision modes that can be used. + Tryby wizji, jakie mogą być używane. + Режимы видения, которые могут быть использованы + + + Night vision + Noktowizja + Ночное видение + + + Thermal imaging + Termowizja + Тепловизионное + + + + Spectator Units + Jednostki obserwatora + Юниты + + + Spectator Controls + Sterowanie obserwatorem + Управление спектатором + + + Free + Wolna + Свободная + + + Internal + Wewnętrzna + Внутренняя + + + External + Zewnętrzna + Внешняя + + + Normal + Normalna + Нормальное + + + Night + Noc + Ночное + + + Thermal + Termo + Тепловизор + + + + Free Camera + Kamera swobodna + Свободная камера + + + Camera Forward + Kamera naprzód + Камера вперед + + + Camera Backward + Kamera w tył + Камера назад + + + Camera Left + Kamera w lewo + Камера влево + + + Camera Right + Kamera w prawo + Камера вправо + + + Camera Up + Kamera w górę + Камера вверх + + + Camera Down + Kamera w dół + Камера вниз + + + Pan Camera + Panoramowanie + Панорамирование + + + Dolly Camera + Płynna kamera + Рельсовая камера + + + Lock Camera to Target + Zablokuj kamerę na celu + Зафиксировать камеру на цели + + + Speed Boost + Przyśpieszenie kamery + Ускорение камеры + + + Focus on Unit + Skup na jednostce + Фокус на юните + + + Interface + Interfejs + Интерфейс + + + Toggle Interface + Przełącz interfejs + Переключить интерфейс + + + Toggle Unit Icons + Przełącz ikony jednostek + Вкл./выкл. иконки юнитов + + + Toggle Unit List + Przełącz listę jednostek + Вкл./выкл. список юнитов + + + Toggle Toolbar + Przełącz pasek narzędzi + Вкл./выкл. тулбар + + + Toggle Compass + Przełącz kompas + Вкл./выкл. компас + + + Toggle Map + Przełącz mapę + Вкл./выкл. карту + + + Toggle Help + Przełącz pomoc + Вкл./выкл. помощь + + + Camera Attributes + Atrybuty kamery + Атрибуты камеры + + + Next Camera + Następna kamera + Следующая камера + + + Previous Camera + Poprzednia kamera + Предыдущая камера + + + Next Unit + Następna jednostka + Следующий юнит + + + Previous Unit + Poprzednia jednostka + Предыдущий юнит + + + Next Vision Mode + Następny tryb wizji + Следующий режим видения + + + Previous Vision Mode + Poprzedni tryb wizji + Предыдущий режим видения + + + Adjust Zoom + Reguluj zoom + Настроить зум + + + Adjust Speed + Reguluj prędkość + Настроить скорость + + + Increment Zoom + Reguluj zoom (krok) + Увеличить зум + + + Increment Speed + Reguluj prędkość (krok) + Увеличить скорость + + + Reset Zoom + Resetuj zoom + Сбросить зум + + + Reset Speed + Resetuj prędkość + Сбросить скорость + + \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index bf8804222e..61731242b3 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -1,165 +1,165 @@ - - - - - Switched unit - Einheit gewechselt - Юнит переключён - Prohozená jednotka - Przełącz jednostkę - Cambiado de unidad - Unité changée - Egység átváltva - Cambia unità - Trocado de unidade - - - This unit is too close to the enemy. - Diese Einheit ist zu nah am Feind. - Юнит слишком близок к противнику. - Tato jednotka je moc blízko k nepříteli. - Ta jednostka jest zbyt blisko przeciwnika. - Esta unidad está demasiado cerca del enemigo. - Cette unité est trop proche des ennemis - Ez az egység túl közel van az ellenséghez. - Questa unità è troppo vicina al nemico. - Essa unidade está muito perto do inimigo. - - - SwitchUnits System - System zmiany stron - Sistema de cambio de unidad - Einheiten-Switch-System? - Systém výměny stran - Sistema de troca de unidades - Egységváltó-rendszer - Переключение между юнитами - - - Switch to West? - Zmiana na Zachód? - ¿Cambiar a Oeste? - Nach BLUFOR wechseln? - Přesunout k BLUFOR? - Trocar para Oeste? - Átváltás BLUFOR-ra? - На синих? - - - Allow switching to west units? - Pozwolić zmieniać graczom stronę na Zachód? - ¿Permitir cambios a unidades del Oeste? - Erlaube das Wechseln zu BLUFOR-Einheiten? - Povolit přesun k BLUFOR? - Permitir troca de unidades para o Oeste? - Nyugat-fakciós egységekre való váltás engedélyezése? - Разрешить переключаться на синих юнитов? - - - Switch to East? - Zmiana na Wschód? - ¿Cambiar a Este? - Nach OPFOR wechseln? - Přesunout k OPFOR? - Trocar para Leste? - Átváltás OPFOR-ra? - На красных? - - - Allow switching to east units? - Pozwolić zmieniać graczom stronę na Wschód? - ¿Permitir cambios a unidades del Este? - Erlaube das Wechseln zu OPFOR-Einheiten? - Povolit přesun k OPFOR? - Permitir troca de unidades para o Leste? - Kelet-fakciós egységekre való váltás engedélyezése? - Разрешить переключаться на красных юнитов? - - - Switch to Independent? - Zmiana na Ruch Oporu? - ¿Cambiar a Independiente? - Nach INDFOR wechseln? - Přesunout k INDFOR? - Trocar para Indenpendente - Átváltás INDFOR-ra? - На независимых? - - - Allow switching to independent units? - Pozwolić zmieniać stronę na Ruch Oporu? - ¿Permitir cambios a unidades Independientes? - Erlaube das Wechseln zu INDFOR-Einheiten? - Povolit přesun k INDFOR? - Permitir troca de unidades para o Indenpendente? - Független egységekre való váltás engedélyezése? - Разрешить переключаться на независимых юнитов? - - - Switch to Civilian? - Zmiana na Cywili? - ¿Cambiar a Civil? - Nach CIVILIAN wechseln? - Přesunout k CIVILISTŮM? - Trocar para Civis? - Átváltás civilre? - На гражданских? - - - Allow switching to civilian units? - Pozwolić zmieniać stronę na Cywili? - ¿Permitir cambios a unidades Civiles - Erlaube das Wechseln zu CIVILIAN-Einheiten? - Povolit přesun k CIVILISTŮM? - Permitir troca de unidades para o Civil? - Civil egységekre való váltás engedélyezése? - Разрешить переключаться на гражданских юнитов? - - - Enable Safe Zone? - Aktywuj bezp. strefę? - ¿Habilitar zona segura? - Aktiviere Sicherheitszone? - Povolit bezpečné oblasti? - Habilitar zona segura? - Biztonságos zóna engedélyezése? - Безопасная зона - - - Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. - Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy. - Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. - Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. - Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. - Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. - Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. - Включить безопасную зону вокруг вражеских юнитов? Игроки не могут переключаться на юнитов, находящихся в безопасной зоне. - - - Safe Zone Radius - Promień bezp. strefy - Radio de la zona segura - Sicherheitszonenradius - Oblast bezpečné zóny - Raio da zona segura - Biztonságos zóna hatóköre - Радиус безопасной зоны - - - The safe zone around players from a different team. Default: 200 - Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 - La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200 - Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 - Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 - A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 - A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 200 - Радиус безопасной зоны вокруг ироков из противоположной команды. По-умолчанию: 200 - - - Moduł ten pozwala na zmianę strony w trakcie gry. - Tento modul umožňuje přepínání mazi dostupnými stranami. - Este módulo permite mudar o lado à disposição dos jogadores. - Этот модуль позволяет игрокам переключаться между доступными юнитами. - - + + + + + Switched unit + Einheit gewechselt + Юнит переключён + Prohozená jednotka + Przełącz jednostkę + Cambiado de unidad + Unité changée + Egység átváltva + Cambia unità + Trocado de unidade + + + This unit is too close to the enemy. + Diese Einheit ist zu nah am Feind. + Юнит слишком близок к противнику. + Tato jednotka je moc blízko k nepříteli. + Ta jednostka jest zbyt blisko przeciwnika. + Esta unidad está demasiado cerca del enemigo. + Cette unité est trop proche des ennemis + Ez az egység túl közel van az ellenséghez. + Questa unità è troppo vicina al nemico. + Essa unidade está muito perto do inimigo. + + + SwitchUnits System + System zmiany stron + Sistema de cambio de unidad + Einheiten-Switch-System? + Systém výměny stran + Sistema de troca de unidades + Egységváltó-rendszer + Переключение между юнитами + + + Switch to West? + Zmiana na Zachód? + ¿Cambiar a Oeste? + Nach BLUFOR wechseln? + Přesunout k BLUFOR? + Trocar para Oeste? + Átváltás BLUFOR-ra? + На синих? + + + Allow switching to west units? + Pozwolić zmieniać graczom stronę na Zachód? + ¿Permitir cambios a unidades del Oeste? + Erlaube das Wechseln zu BLUFOR-Einheiten? + Povolit přesun k BLUFOR? + Permitir troca de unidades para o Oeste? + Nyugat-fakciós egységekre való váltás engedélyezése? + Разрешить переключаться на синих юнитов? + + + Switch to East? + Zmiana na Wschód? + ¿Cambiar a Este? + Nach OPFOR wechseln? + Přesunout k OPFOR? + Trocar para Leste? + Átváltás OPFOR-ra? + На красных? + + + Allow switching to east units? + Pozwolić zmieniać graczom stronę na Wschód? + ¿Permitir cambios a unidades del Este? + Erlaube das Wechseln zu OPFOR-Einheiten? + Povolit přesun k OPFOR? + Permitir troca de unidades para o Leste? + Kelet-fakciós egységekre való váltás engedélyezése? + Разрешить переключаться на красных юнитов? + + + Switch to Independent? + Zmiana na Ruch Oporu? + ¿Cambiar a Independiente? + Nach INDFOR wechseln? + Přesunout k INDFOR? + Trocar para Indenpendente + Átváltás INDFOR-ra? + На независимых? + + + Allow switching to independent units? + Pozwolić zmieniać stronę na Ruch Oporu? + ¿Permitir cambios a unidades Independientes? + Erlaube das Wechseln zu INDFOR-Einheiten? + Povolit přesun k INDFOR? + Permitir troca de unidades para o Indenpendente? + Független egységekre való váltás engedélyezése? + Разрешить переключаться на независимых юнитов? + + + Switch to Civilian? + Zmiana na Cywili? + ¿Cambiar a Civil? + Nach CIVILIAN wechseln? + Přesunout k CIVILISTŮM? + Trocar para Civis? + Átváltás civilre? + На гражданских? + + + Allow switching to civilian units? + Pozwolić zmieniać stronę na Cywili? + ¿Permitir cambios a unidades Civiles + Erlaube das Wechseln zu CIVILIAN-Einheiten? + Povolit přesun k CIVILISTŮM? + Permitir troca de unidades para o Civil? + Civil egységekre való váltás engedélyezése? + Разрешить переключаться на гражданских юнитов? + + + Enable Safe Zone? + Aktywuj bezp. strefę? + ¿Habilitar zona segura? + Aktiviere Sicherheitszone? + Povolit bezpečné oblasti? + Habilitar zona segura? + Biztonságos zóna engedélyezése? + Безопасная зона + + + Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone. + Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy. + Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura. + Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. + Povolit bezpečnou zónu kolem nepřátelských jednotek? Hráči se nemohou změnit strany/jednotky uvnitř bezpečné zóny. + Habilitar uma zona segur ao redor das unidades inimigas? Jogadores não conseguirão trocar para unidades dentro dessa zona segura. + Engedélyezve legyen-e egy biztonságos zóna az ellenségek körül? A játékosok nem tudnak a biztonságos zónán belüli egységekre váltani. + Включить безопасную зону вокруг вражеских юнитов? Игроки не могут переключаться на юнитов, находящихся в безопасной зоне. + + + Safe Zone Radius + Promień bezp. strefy + Radio de la zona segura + Sicherheitszonenradius + Oblast bezpečné zóny + Raio da zona segura + Biztonságos zóna hatóköre + Радиус безопасной зоны + + + The safe zone around players from a different team. Default: 200 + Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 + La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200 + Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 + Bezpečná zóna kolem hráče z jiných týmu. Výchozí: 200 + A zona segura ao redor dos jogadores de diferentes equipes. Padrão: 200 + A biztonságos zóna más csapatból lévő játékosok körül. Alapértelmezett: 200 + Радиус безопасной зоны вокруг ироков из противоположной команды. По-умолчанию: 200 + + + Moduł ten pozwala na zmianę strony w trakcie gry. + Tento modul umožňuje přepínání mazi dostupnými stranami. + Este módulo permite mudar o lado à disposição dos jogadores. + Этот модуль позволяет игрокам переключаться между доступными юнитами. + + \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 63e2f963c2..d916f8acb9 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -1,75 +1,75 @@ - - - - - Telescopic Ladder - Teleskopleiter - Телескопическая лестница - Drabina teleskopowa - Escalera telescópica - Telescopic Ladder - Teleskopický žebřík - Telescopic Ladder - Teleszkopikus létra - Escada telescópica - - - Deploy ladder - Leiter aufbauen - Установить лестницу - Rozłóż drabinę - Despelgar escalera - Deploy ladder - Rozložit žebřík - Deploy ladder - Létra lerakása - Implantar escada - - - Drop ladder - Leiter ablegen - Положить лестницу - Zostaw drabinę - Soltar escalera - Drop ladder - Položit žebřík - Drop ladder - Létra eldobása - Derrubar escada - - - Adjust ladder - Leiter einstellen - Reguluj drabinę - Upravit žebřík - Ajustar escalera - Ajustar escada - Létra állítása - Выровнять лестницу - - - Position ladder - Leiter positionieren - Перенести лестницу - Postaw drabinę - Colocar escalera - Position ladder - Umístit žebřík - Position ladder - Létra elhelyezése - Posicionar escada - - - Pickup ladder - Leiter aufnehmen - Взять лестницу - Zabierz drabinę - Recoger escalera - Pickup ladder - Vzít žebřík - Pickup ladder - Létra felvétele - Pegar escada - - + + + + + Telescopic Ladder + Teleskopleiter + Телескопическая лестница + Drabina teleskopowa + Escalera telescópica + Telescopic Ladder + Teleskopický žebřík + Telescopic Ladder + Teleszkopikus létra + Escada telescópica + + + Deploy ladder + Leiter aufbauen + Установить лестницу + Rozłóż drabinę + Despelgar escalera + Deploy ladder + Rozložit žebřík + Deploy ladder + Létra lerakása + Implantar escada + + + Drop ladder + Leiter ablegen + Положить лестницу + Zostaw drabinę + Soltar escalera + Drop ladder + Položit žebřík + Drop ladder + Létra eldobása + Derrubar escada + + + Adjust ladder + Leiter einstellen + Reguluj drabinę + Upravit žebřík + Ajustar escalera + Ajustar escada + Létra állítása + Выровнять лестницу + + + Position ladder + Leiter positionieren + Перенести лестницу + Postaw drabinę + Colocar escalera + Position ladder + Umístit žebřík + Position ladder + Létra elhelyezése + Posicionar escada + + + Pickup ladder + Leiter aufnehmen + Взять лестницу + Zabierz drabinę + Recoger escalera + Pickup ladder + Vzít žebřík + Pickup ladder + Létra felvétele + Pegar escada + + \ No newline at end of file diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index 8273cda728..9c85f19a71 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -1,69 +1,69 @@ - - - - - SSWT Kit - Scharfschützenzweibein - Снайперский штатив - Trójnóg snajperski - SSWT Kit - SSWT Kit - SSWT souprava - SSWT Kit - SSWT Készlet - Kit SSWT - - - Place SSWT Kit - Scharfschützenzweibein aufstellen - Установить снайперский штатив - Postaw trójnóg snajperski - Place SSWT Kit - Place SSWT Kit - Rozlož souprava SSWT - Place SSWT Kit - SSWT készlet elhelyezése - Colocar kit SSWT - - - Pick up SSWT Kit - Podnieś trójnóg snajperski - Coger equipo SSWT - Zvednout SSWT soupravu - SSWT-Werkzeug aufheben - Pegar kit SSWT - SSWT készlet felvétele - Подобрать снайперский штатив - - - Adjust SSWT Kit - Reguluj trójnóg snajperski - Ajustar equipo SSWT - Regulovat SSWT soupravu - SSWT-Werkzeug anpassen - Ajustar kit SSWT - SSWT készlet állítása - Выровнять снайперский штатив - - - Done - Gotowe - Hecho - Hotovo - Fertig - Feito - Kész - Готово - - - + Modifier, adjust - + Modyfikator, regulacja - + Modificador, ajuste - + Modifikátor, regulace - + Modifikator, anpassen - + Modificador, ajuste - + Módosító, szabályzás - + Модификатор, подстройка - - + + + + + SSWT Kit + Scharfschützenzweibein + Снайперский штатив + Trójnóg snajperski + SSWT Kit + SSWT Kit + SSWT souprava + SSWT Kit + SSWT Készlet + Kit SSWT + + + Place SSWT Kit + Scharfschützenzweibein aufstellen + Установить снайперский штатив + Postaw trójnóg snajperski + Place SSWT Kit + Place SSWT Kit + Rozlož souprava SSWT + Place SSWT Kit + SSWT készlet elhelyezése + Colocar kit SSWT + + + Pick up SSWT Kit + Podnieś trójnóg snajperski + Coger equipo SSWT + Zvednout SSWT soupravu + SSWT-Werkzeug aufheben + Pegar kit SSWT + SSWT készlet felvétele + Подобрать снайперский штатив + + + Adjust SSWT Kit + Reguluj trójnóg snajperski + Ajustar equipo SSWT + Regulovat SSWT soupravu + SSWT-Werkzeug anpassen + Ajustar kit SSWT + SSWT készlet állítása + Выровнять снайперский штатив + + + Done + Gotowe + Hecho + Hotovo + Fertig + Feito + Kész + Готово + + + + Modifier, adjust + + Modyfikator, regulacja + + Modificador, ajuste + + Modifikátor, regulace + + Modifikator, anpassen + + Modificador, ajuste + + Módosító, szabályzás + + Модификатор, подстройка + + \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 644f2152d4..bf5dd3b6c3 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -1,267 +1,267 @@ - - - - - Unlock Vehicle - Fahrzeug aufschließen - Abrir vehículo - Déverrouiller le véhicule - Odblokuj pojazd - Odemknout vozidlo - Jármű nyitása - Открыть машину - Sblocca il veicolo - Destravar veículo - - - Lock Vehicle - Fahrzeug abschließen - Cerrar vehículo - Verrouiller le véhicule - Zablokuj pojazd - Zamknout vozidlo - Jármű zárása - Закрыть машину - Chiudi il veicolo a chiave - Travar Veículo - - - Lockpick Vehicle - Fahrzeug knacken - Forzar vehículo - Crocheter le véhicule - Otwórz zamek - Vypáčit vozidlo - Jármű feltörése - Взломать замок - Scassina veicolo - Usar mixa no Veículo - - - Picking Lock.... - Schloss knacken... - Forzando cerradura... - Crochetage... - Otwieranie zamka... - Páčim vozidlo... - Zár feltörése... - Взламываем замок... - Scassino il veicolo.... - Usando Mixa... - - - A custom key that will open a specific vehicle. - Ein Schlüssel der ein bestimmtes Fahrzeug aufschließt. - Una llave concreta abrirá un vehículo concreto. - Une clé propre à un seul véhicule. - Unikatowy klucz, który otworzy konkretny pojazd. - Vlastní klíč, který otevře konkrétní vozidlo. - Egy egyedi kulcs, ami egy meghatározott járművet nyit ki. - Ключ от конкретной машины. - Una chiave personalizzata che apre determinati veicoli. - Uma chave específica que abre um veículo específico. - - - A Master Key will open any lock, no matter what! - Ein Generalschlüssel der jedes Schloss öffnet... - Una llave maestra abrirá cualquier cierre, no importa cual! - Un passe-partout qui ouvrira n'importe quelle serrure. - Uniwersalny klucz, który otworzy każdy zamek. - Hlavní klíč otevře libovolný zámek, bez vyjímek! - Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül! - Универсальный ключ, открывающий любой замок. - Un passe-partout che apre qualsiasi serratura! - Uma chave mestre irá abrir qualquer fechadura, não importa qual! - - - A lockpick set that can pick the locks of most vehicles. - Ein Dietrich der die meisten Fahrzeugschlösser knacken kann... - Un set de ganzúas que puede abrir las cerraduras de la mayoría vehículos. - Un crochet qui ouvrira la plupart des véhicules. - Zestaw wytrychów, dzięki któremu można otworzyć zamki w większości pojazdów. - Sada paklíčů, která dokáže odemknout zámky u většiny vozidel. - Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni. - Набор отмычек, которым можно взломать почти любую машину. - Un grimardello per forzare la maggior parte dei veicoli - Um set de chave mixas que pode abrir a maioria dos veículos. - - - A key that should open most WEST vehicles. - Ein Schlüssel der die meisten westlichen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos occidentales. - Une clé qui ouvrira la plupart des véhicules OUEST. - Klucz, który powinien otworzyć większość pojazdów ZACHODU. - Klíč který by měl otevřít většinou Západních vozidel. - Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni. - Ключ для открытия большинства машин Красных. - Una chiave che apre la maggior parte dei veicoli occidentali - Uma chave que abre a maioria dos veículos ocidentais - - - A key that should open most EAST vehicle. - Ein Schlüssel der die meisten östlichen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos orientales. - Une clé qui ouvrira la plupart des véhicules EST. - Klucz, który powinien otworzyć większość pojazdów WSCHODU. - Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. - Klíč který by měl otevřít vetšinu Východních vozidel. - Ключ для открытия большинства машин Синих. - Una chaive che apre la maggior parte dei veicoli orientali - Uma chave que abre a maioria dos veículos orientais - - - A key that should open most INDEP vehicle. - Ein Schlüssel der die meisten Fahrzeuge der Aufständischen öffnen sollte... - Una llave que abrirá la mayoría de vehículos independientes. - Une clé qui ouvrira la plupart des véhicules INDEP. - Klucz, który powinien otworzyć większość pojazdów INDFOR. - Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. - Klíč který by měl otevřít většinu Nezávislých vozidel. - Ключ для открытия большинства машин Независимых. - Una chaive che apre la maggior parte dei veicoli degli indipendenti - Uma chave que abre a maioria dos veículos independentes - - - A key that should open most CIV vehicle. - Ein Schlüssel der die meisten zivilen Fahrzeuge öffnen sollte... - Una llave que abrirá la mayoría de vehículos civiles. - Une clé qui ouvrira la plupart des véhicules CIV. - Klucz, który powinien otworzyć większość pojazdów CYWILNYCH. - Klíč který by měl otevřít většinu Civilních vozidel. - Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. - Ключ для открытия большинства машин Гражданских. - Una chaive che apr ela maggior parte dei veicoli civili - Uma chave que abre a maioria dos veículos civis. - - - Vehicle Lock Setup - Ustawienie blokady pojazdów - Configuración del cierre del vehiculo - Fahrzeugsperreinstellungen - Nastavení zámku vozidla - Configuração de fechadura do veículo - Jármű-zár beállítás - Запирание транспорта - - - Lock Vehicle Inventory - Zablokuj ekwipunek pojazdu - Bloquear inventario del vehículo - Sperre Fahrzeuginventar - Inventář zamčeného vozidla - Bloquear inventário do veículo - Jármű rakodótér zárás - Закрывать инвентарь транспорта - - - Locks the inventory of locked vehicles - Blokuje dostęp do ekwipunku pojazdu - Bloquea el inventario de los vehículos cerrados - Sperrt das Inventar von gesperrten Fahrzeugen - Zamknout inventář u zamčených vozidel - Bloqueia o inventário de veículos fechados - Bezárja a zárt járművek rakterét is - Закрывать инвентарь транспорта, если транспорт закрыт - - - Vehicle Starting Lock State - Początkowy stan blok. poj. - Estado inicial del cierre en vehículos - Fahrzeuge spawnen gesperrt - Počáteční stav zámku vozidla - Estado inicial da fechadura dos veículos - Jármű kezdő zár-állapot - Начальное состояние замков - - - Set lock state for all vehicles (removes ambiguous lock states) - Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) - Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos) - Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) - Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) - Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) - Beállítja a zár-állapotot az összes járműhöz (eltávolítja az azonosíthatatlan zárállapotokat) - Устанавливает начальное состояние замков всех транспортных средств (устраняет неоднозначные состояния) - - - As Is - Jak jest - Está - Unverändert - Jak je - Como está - Úgy-ahogy - Как есть - - - Locked - Zablokowany - Cerrado - Gesperrt - Zamčeno - Fechado - Zárva - Закрыт - - - Unlocked - Odblokowany - Abierto - Offen - Odemčeno - Aberto - Nyitva - Открыт - - - Default Lockpick Strength - Czas włamywania - Durabilidad de la ganzua por defecto - Standard-Pick-Stärke - Výchozí síla páčidla - Durabilidade padrão da chave micha - Alapértelmezett zártörő-erősség - Сила отмычки по-умолчанию - - - Default Time to lockpick (in seconds). Default: 10 - Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 - Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10 - Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 - Čas k vypáčení zámku (v sekundách). Výchozí: 10 - Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 - Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 - Время для взлома замка отмычкой (в секундах). По-умолчанию: 10 - - - Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo - Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.<br />Źródło: vehiclelock.pbo - Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.<br />Fuente: vehiclelock.pbo - Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo - Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo - Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo - Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. <br />Forrás: vehiclelock.pbo - Настройки силы отмычек и начальное состояние замков транспорта. Устраняет неоднозначные состояния замков.<br />Источник: vehiclelock.pbo - - - Vehicle Key Assign - Przydział kluczyka do pojazdu - Asignacion de la llave del vehículo - Fahrzeugschlüsselzuweisung - Přidělení klíče k vozidlu - Atribuição de chave de veículo - Járműkulcs-osztás - Назначение ключей от транспорта - - - Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo - Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).<br />Źródło: vehiclelock.pbo - Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.<br />Fuente: vehiclelock.pbo - Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo - Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo - Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo - Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. <br />Forrás: vehiclelock.pbo - Синхронизируйте с транспортом и игроком. Это выдаст игроку ключи от всех синхронизированных транспортных средств. Работает только для объектов, присутствующих на старте миссии.<br />Источник: vehiclelock.pbo - - + + + + + Unlock Vehicle + Fahrzeug aufschließen + Abrir vehículo + Déverrouiller le véhicule + Odblokuj pojazd + Odemknout vozidlo + Jármű nyitása + Открыть машину + Sblocca il veicolo + Destravar veículo + + + Lock Vehicle + Fahrzeug abschließen + Cerrar vehículo + Verrouiller le véhicule + Zablokuj pojazd + Zamknout vozidlo + Jármű zárása + Закрыть машину + Chiudi il veicolo a chiave + Travar Veículo + + + Lockpick Vehicle + Fahrzeug knacken + Forzar vehículo + Crocheter le véhicule + Otwórz zamek + Vypáčit vozidlo + Jármű feltörése + Взломать замок + Scassina veicolo + Usar mixa no Veículo + + + Picking Lock.... + Schloss knacken... + Forzando cerradura... + Crochetage... + Otwieranie zamka... + Páčim vozidlo... + Zár feltörése... + Взламываем замок... + Scassino il veicolo.... + Usando Mixa... + + + A custom key that will open a specific vehicle. + Ein Schlüssel der ein bestimmtes Fahrzeug aufschließt. + Una llave concreta abrirá un vehículo concreto. + Une clé propre à un seul véhicule. + Unikatowy klucz, który otworzy konkretny pojazd. + Vlastní klíč, který otevře konkrétní vozidlo. + Egy egyedi kulcs, ami egy meghatározott járművet nyit ki. + Ключ от конкретной машины. + Una chiave personalizzata che apre determinati veicoli. + Uma chave específica que abre um veículo específico. + + + A Master Key will open any lock, no matter what! + Ein Generalschlüssel der jedes Schloss öffnet... + Una llave maestra abrirá cualquier cierre, no importa cual! + Un passe-partout qui ouvrira n'importe quelle serrure. + Uniwersalny klucz, który otworzy każdy zamek. + Hlavní klíč otevře libovolný zámek, bez vyjímek! + Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül! + Универсальный ключ, открывающий любой замок. + Un passe-partout che apre qualsiasi serratura! + Uma chave mestre irá abrir qualquer fechadura, não importa qual! + + + A lockpick set that can pick the locks of most vehicles. + Ein Dietrich der die meisten Fahrzeugschlösser knacken kann... + Un set de ganzúas que puede abrir las cerraduras de la mayoría vehículos. + Un crochet qui ouvrira la plupart des véhicules. + Zestaw wytrychów, dzięki któremu można otworzyć zamki w większości pojazdów. + Sada paklíčů, která dokáže odemknout zámky u většiny vozidel. + Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni. + Набор отмычек, которым можно взломать почти любую машину. + Un grimardello per forzare la maggior parte dei veicoli + Um set de chave mixas que pode abrir a maioria dos veículos. + + + A key that should open most WEST vehicles. + Ein Schlüssel der die meisten westlichen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos occidentales. + Une clé qui ouvrira la plupart des véhicules OUEST. + Klucz, który powinien otworzyć większość pojazdów ZACHODU. + Klíč který by měl otevřít většinou Západních vozidel. + Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni. + Ключ для открытия большинства машин Красных. + Una chiave che apre la maggior parte dei veicoli occidentali + Uma chave que abre a maioria dos veículos ocidentais + + + A key that should open most EAST vehicle. + Ein Schlüssel der die meisten östlichen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos orientales. + Une clé qui ouvrira la plupart des véhicules EST. + Klucz, który powinien otworzyć większość pojazdów WSCHODU. + Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni. + Klíč který by měl otevřít vetšinu Východních vozidel. + Ключ для открытия большинства машин Синих. + Una chaive che apre la maggior parte dei veicoli orientali + Uma chave que abre a maioria dos veículos orientais + + + A key that should open most INDEP vehicle. + Ein Schlüssel der die meisten Fahrzeuge der Aufständischen öffnen sollte... + Una llave que abrirá la mayoría de vehículos independientes. + Une clé qui ouvrira la plupart des véhicules INDEP. + Klucz, który powinien otworzyć większość pojazdów INDFOR. + Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni. + Klíč který by měl otevřít většinu Nezávislých vozidel. + Ключ для открытия большинства машин Независимых. + Una chaive che apre la maggior parte dei veicoli degli indipendenti + Uma chave que abre a maioria dos veículos independentes + + + A key that should open most CIV vehicle. + Ein Schlüssel der die meisten zivilen Fahrzeuge öffnen sollte... + Una llave que abrirá la mayoría de vehículos civiles. + Une clé qui ouvrira la plupart des véhicules CIV. + Klucz, który powinien otworzyć większość pojazdów CYWILNYCH. + Klíč který by měl otevřít většinu Civilních vozidel. + Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni. + Ключ для открытия большинства машин Гражданских. + Una chaive che apr ela maggior parte dei veicoli civili + Uma chave que abre a maioria dos veículos civis. + + + Vehicle Lock Setup + Ustawienie blokady pojazdów + Configuración del cierre del vehiculo + Fahrzeugsperreinstellungen + Nastavení zámku vozidla + Configuração de fechadura do veículo + Jármű-zár beállítás + Запирание транспорта + + + Lock Vehicle Inventory + Zablokuj ekwipunek pojazdu + Bloquear inventario del vehículo + Sperre Fahrzeuginventar + Inventář zamčeného vozidla + Bloquear inventário do veículo + Jármű rakodótér zárás + Закрывать инвентарь транспорта + + + Locks the inventory of locked vehicles + Blokuje dostęp do ekwipunku pojazdu + Bloquea el inventario de los vehículos cerrados + Sperrt das Inventar von gesperrten Fahrzeugen + Zamknout inventář u zamčených vozidel + Bloqueia o inventário de veículos fechados + Bezárja a zárt járművek rakterét is + Закрывать инвентарь транспорта, если транспорт закрыт + + + Vehicle Starting Lock State + Początkowy stan blok. poj. + Estado inicial del cierre en vehículos + Fahrzeuge spawnen gesperrt + Počáteční stav zámku vozidla + Estado inicial da fechadura dos veículos + Jármű kezdő zár-állapot + Начальное состояние замков + + + Set lock state for all vehicles (removes ambiguous lock states) + Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) + Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos) + Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) + Nastavit stav zámku u všech vozidel (odstraňuje nejednoznačné stavy zámků) + Definir estados de fechadura para todos os veículos (remove estados de fechadura ambíguos) + Beállítja a zár-állapotot az összes járműhöz (eltávolítja az azonosíthatatlan zárállapotokat) + Устанавливает начальное состояние замков всех транспортных средств (устраняет неоднозначные состояния) + + + As Is + Jak jest + Está + Unverändert + Jak je + Como está + Úgy-ahogy + Как есть + + + Locked + Zablokowany + Cerrado + Gesperrt + Zamčeno + Fechado + Zárva + Закрыт + + + Unlocked + Odblokowany + Abierto + Offen + Odemčeno + Aberto + Nyitva + Открыт + + + Default Lockpick Strength + Czas włamywania + Durabilidad de la ganzua por defecto + Standard-Pick-Stärke + Výchozí síla páčidla + Durabilidade padrão da chave micha + Alapértelmezett zártörő-erősség + Сила отмычки по-умолчанию + + + Default Time to lockpick (in seconds). Default: 10 + Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 + Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10 + Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10 + Čas k vypáčení zámku (v sekundách). Výchozí: 10 + Tempo padrão para forçar a fechadura (em segundos). Padrão: 10 + Alapértelmezett idő a zárfeltöréshez (másodpercben). Alapértelmezett: 10 + Время для взлома замка отмычкой (в секундах). По-умолчанию: 10 + + + Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.<br />Source: vehiclelock.pbo + Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.<br />Źródło: vehiclelock.pbo + Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.<br />Fuente: vehiclelock.pbo + Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo + Nastavení síly vypáčení a počáteční stav zámku vozidla. Odstraňuje nejednoznačné stavy zámků.<br />Zdroj: vehiclelock.pbo + Definições para a durabilidade da chave micha e estado inicial da fechadura do veículo. Remove estados de fechadura ambíguas <br /> Fonte: Vehiclelock.pbo + Beállítások a zártörő erősségére és alapértelmezett zár-állapotra a járműveken. Eltávolítja az azonosíthatatlan zár-állapotokat. <br />Forrás: vehiclelock.pbo + Настройки силы отмычек и начальное состояние замков транспорта. Устраняет неоднозначные состояния замков.<br />Источник: vehiclelock.pbo + + + Vehicle Key Assign + Przydział kluczyka do pojazdu + Asignacion de la llave del vehículo + Fahrzeugschlüsselzuweisung + Přidělení klíče k vozidlu + Atribuição de chave de veículo + Járműkulcs-osztás + Назначение ключей от транспорта + + + Sync with vehicles and players. Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.<br />Source: vehiclelock.pbo + Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).<br />Źródło: vehiclelock.pbo + Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.<br />Fuente: vehiclelock.pbo + Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.<br />Quelle: vehiclelock.pbo + Synchronizuj s vozidly a hráči. Hráč dostane klíč ke každému synchonizovanému vozidlu. Platné pouze pro objekty přítomné na začátku mise.<br />Zdroj: vehiclelock.pbo + Sincronizar com veículos e jogadores. Irá distribuir chaves personalizadas para os jogadores para cada veículo sincronizado. Só é válido para objetos presentes no início da missão <br /> Fonte: vehiclelock.pbo + Szinkronizál a járművekkel és játékosokkal. Egyedi kulcsokat oszt ki a játékosoknak minden szinkronizált járműhöz. Csak a küldetés indításakor jelenlévő járművekhez érvényes. <br />Forrás: vehiclelock.pbo + Синхронизируйте с транспортом и игроком. Это выдаст игроку ключи от всех синхронизированных транспортных средств. Работает только для объектов, присутствующих на старте миссии.<br />Источник: vehiclelock.pbo + + \ No newline at end of file diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 2dada70fec..8872cd603e 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,255 +1,255 @@ - - - - - View Distance Limiter - Ogranicznik zasięgu widzenia - Limitador de distancia de visión - Omezovač dohlednosti - Sichtweitenbegrenzung - Limitador de distância de visão - Látótáv-korlátozó - Ограничитель дальности видимости - - - Allows limiting maximum view distance that can be set by players. - Pozwala ustawić maksymalny limit zasięgu widzenia. - Permite limitar la distancia máxima de visión que se puede establecer por los jugadores. - Umožňuje určit maximální dohlednost, kterou si může hráč nastavit - Erlaubt das Einschränken der maximalen Sichtweite, welche von Spielern eingestellt werden kann. - Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. - Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. - Позволяет ограничить максимальную дальность видимости, которая может быть установлена игроками. - - - Enable ACE viewdistance - Wł. zasięg widzenia ACE - Habilitar distancia de visión ACE - Povolit ACE dohlednost - Aktiviere ACE-Sichtweite - Habilitar distância de visão ACE - ACE látótávolság engedélyezése - Ограничить дальность видимости - - - Enables ACE viewdistance - Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE - Habilita la distancia de visión ACE - Povolit ACE dohlednost - Aktiviert ACE-Sichtweite - Habilita a distância de visão ACE - Engedélyezi az ACE látótávolságot - Включает ограничитель дальности видимости ACE - - - View Distance Limit - Limit zas. widzenia - Limite de distancia de visión - Limit dohlednosti - Sichtweitengrenze - Limite da distância de visão - Látótáv-korlát - Дальность видимости - - - Sets the limit for how high clients can raise their view distance (up to 10000) - Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) - Establece el límite de cuan alta pueden aumentar los clientes la distancia de visión (hasta 10.000) - Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) - Setze die Grenze fest, wie weit Spieler ihre Sichtweite erhöhen können (bis 10000) - Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) - Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) - Устанавливает предел дальности, насколько клиенты могут увеличить свою дальность видимости (до 10000) - - - Limit for client's view distance set here and can overridden by module - Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł - Establecer aqui el límite para la distancia de visión de los clientes. Puede ser anulado por módulo - Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. - Stellt die Grenze für die Sichtweite des Spielers ein. Das kann von einem Modul überschrieben werden. - Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. - A kliens látótávolsága itt állítható be, és felülbírálható modulok által - Предел дальности видимости клиентов устанавливается здесь и может быть переопределен модулем - - - Client View Distance (On Foot) - Zasięg widzenia (piechota) - Distancia de visión del cliente (A pie) - Dohlednost (Pěšák) - Spielersichtweite (zu Fuß) - Distância de visão do cliente (A pé) - Kliens látótáv (gyalog) - Дальность видимости (Пешком) - - - Changes in game view distance when the player is on foot. - Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. - Cambia en juego la distancia de visión cuando el jugador va a pie. - Změna dohlednosti pro hráče pokud jde po svých. - Verändert die Sichtweite, wenn ein Spieler zu Fuß unterwegs ist. - Muda a distância de visão do jogador dentro do jogo quando ele está a pé. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos gyalogosan van. - Изменяет дальность видимости в игре, когда игрок перемещается пешком. - - - Client View Distance (Land Vehicle) - Zasięg widzenia (pojazdy naziemne) - Distancia de visión del cliente (Vehículo terrestre) - Dohlednost (Pozemní technika) - Spielersichtweite (Landfahrzeuge) - Distância de visão do cliente (Veículo terrestre) - Kliens látótáv (szárazföldi jármű) - Дальность видимости (В наземном трансп.) - - - Changes in game view distance when the player is in a land vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. - Cambia en juego la distancia de visión cuando el jugador va en un vehículo terrestre. - Změna dohlednosti pro hráče pokud je v pozemní technice. - Verändert die Sichtweite, wenn ein Spieler in einem Landfahrzeug ist. - Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. - Изменяет дальность видимости в игре, когда игрок перемещается в наземном транспорте. - - - Client View Distance (Air Vehicle) - Zasięg widzenia (pojazdy lotnicze) - Distancia de visión del cliente (Vehículo aéreo) - Dohlednost (Vzdušná technika) - Spielersichtweite (Luftfahrzeuge) - Distância de visão do cliente (Veículo aéreo) - Kliens látótáv (légi jármű) - Дальность видимости (В воздушном трансп.) - - - Changes in game view distance when the player is in an air vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. - Cambia en juego la distancia de visión cuando el jugador va en un vehículo aéreo. - Změna dohlednosti pro hráče pokud je ve vzdušné technice. - Verändert die Sichtweite wenn ein Spieler in einem Luftfahrzeug ist. - Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. - Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos légi járműben van. - Изменяет дальность видимости в игре, когда игрок перемещается в воздушном транспорте. - - - Dynamic Object View Distance - Dynamiczny zasięg rysowania obiektów - Distancia de visión dinámica de objetos - Dynamická dohlednost objektů - Dynamische Objektsichtweite - Distância de visão dinâmica dos objetos - Dinamikus objektum-látótáv - Динамич. дальность отрисовки объектов - - - Sets the object view distance as a coefficient of the view distance. - Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. - Establece la distancia de visión de objetos como un coeficiente de la distancia de visión. - Nastaví objekt dohlednosti jako koeficient dohlednosti. - Passt die Objektsichtweite dynamisch der Sichtweite an. - Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. - Beállítja az objektum-látótávot a megadott látótáv koefficienseként. - Устанавливает дальность отрисовки объектов как коэффициент от общей дальности видимости. - - - Off - Wyłącz - Apagada - Vypnout - Aus - Desligado - Kikapcsolva - Выкл. - - - Very Low - Bardzo niski - Muy baja - Velmi málo - Sehr niedrig - Muito baixo - Minimális - Очень низкая - - - Low - Niski - Baja - Málo - Niedrig - Baixo - Alacsony - Низкая - - - Medium - Średni - Media - Středně - Mittel - Médio - Közepes - Средняя - - - High - Wysoki - Alta - Hodně - Hoch - Alto - Magas - Высокая - - - Very High - Bardzo wysoki - Muy alta - Velmi hodně - Sehr hoch - Muito alto - Maximális - Очень высокая - - - View Distance: - Zasięg widzenia: - Distancia de visión: - Dohlednost: - Sichtweite: - Distância de visão: - Látótávolság: - Дальность видимости: - - - Object View Distance is - Zasięg widzenia obiektów wynosi - La distancia de visión de objetos es: - Dohlednost objektů je - Objektsichtweite ist - Distância de visão do objeto é - Az objektum-látótávolság: - Дальность видимости объектов: - - - That option is invalid! The limit is - Ta opcja jest nieprawidłowa! Limit wynosi - Esta opción no es valida! El limite es - Tato volba je neplatná! Limit je - Diese Option ist ungültig! Die Grenze ist - Essa opção é inválida. O limte é - Ez a beállítás érvénytelen! A maximum mennyiség - Настройка не верна! Текущий предел: - - - Video Settings - Ustawienia wideo - Ajustes de vídeo - Nastavení videa - Grafikeinstellungen - Ajustes de vídeo - Videobeállítások - Видео настройки - - + + + + + View Distance Limiter + Ogranicznik zasięgu widzenia + Limitador de distancia de visión + Omezovač dohlednosti + Sichtweitenbegrenzung + Limitador de distância de visão + Látótáv-korlátozó + Ограничитель дальности видимости + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + Permite limitar la distancia máxima de visión que se puede establecer por los jugadores. + Umožňuje určit maximální dohlednost, kterou si může hráč nastavit + Erlaubt das Einschränken der maximalen Sichtweite, welche von Spielern eingestellt werden kann. + Permite limitar a distância máxima de visão que pode ser definida pelos jogadores. + Lehetővé teszi a játékosok által a látótávolság maximumának korlátozását. + Позволяет ограничить максимальную дальность видимости, которая может быть установлена игроками. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + Habilitar distancia de visión ACE + Povolit ACE dohlednost + Aktiviere ACE-Sichtweite + Habilitar distância de visão ACE + ACE látótávolság engedélyezése + Ограничить дальность видимости + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + Habilita la distancia de visión ACE + Povolit ACE dohlednost + Aktiviert ACE-Sichtweite + Habilita a distância de visão ACE + Engedélyezi az ACE látótávolságot + Включает ограничитель дальности видимости ACE + + + View Distance Limit + Limit zas. widzenia + Limite de distancia de visión + Limit dohlednosti + Sichtweitengrenze + Limite da distância de visão + Látótáv-korlát + Дальность видимости + + + Sets the limit for how high clients can raise their view distance (up to 10000) + Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000) + Establece el límite de cuan alta pueden aumentar los clientes la distancia de visión (hasta 10.000) + Stanoví limit jak daleko si může client zvýšit dohlednost (do 10000) + Setze die Grenze fest, wie weit Spieler ihre Sichtweite erhöhen können (bis 10000) + Estabelecer um limite de quão alto os clientes podem aumentar sua distância de visão (até 10000) + Korlátozza, mekkora látótávolságot állíthatnak be a kliensek (maximum 10000-ig) + Устанавливает предел дальности, насколько клиенты могут увеличить свою дальность видимости (до 10000) + + + Limit for client's view distance set here and can overridden by module + Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł + Establecer aqui el límite para la distancia de visión de los clientes. Puede ser anulado por módulo + Limit dohlednoti pro klienty se nastavuje zde a může být potlačeno pomocí modulu. + Stellt die Grenze für die Sichtweite des Spielers ein. Das kann von einem Modul überschrieben werden. + Permite limitar a distância de visão máxima que pode ser definida por jogadores. Pode ser substituído por módulo. + A kliens látótávolsága itt állítható be, és felülbírálható modulok által + Предел дальности видимости клиентов устанавливается здесь и может быть переопределен модулем + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + Distancia de visión del cliente (A pie) + Dohlednost (Pěšák) + Spielersichtweite (zu Fuß) + Distância de visão do cliente (A pé) + Kliens látótáv (gyalog) + Дальность видимости (Пешком) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + Cambia en juego la distancia de visión cuando el jugador va a pie. + Změna dohlednosti pro hráče pokud jde po svých. + Verändert die Sichtweite, wenn ein Spieler zu Fuß unterwegs ist. + Muda a distância de visão do jogador dentro do jogo quando ele está a pé. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos gyalogosan van. + Изменяет дальность видимости в игре, когда игрок перемещается пешком. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + Distancia de visión del cliente (Vehículo terrestre) + Dohlednost (Pozemní technika) + Spielersichtweite (Landfahrzeuge) + Distância de visão do cliente (Veículo terrestre) + Kliens látótáv (szárazföldi jármű) + Дальность видимости (В наземном трансп.) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + Cambia en juego la distancia de visión cuando el jugador va en un vehículo terrestre. + Změna dohlednosti pro hráče pokud je v pozemní technice. + Verändert die Sichtweite, wenn ein Spieler in einem Landfahrzeug ist. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo terrestre. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos szárazföldi járműben van. + Изменяет дальность видимости в игре, когда игрок перемещается в наземном транспорте. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + Distancia de visión del cliente (Vehículo aéreo) + Dohlednost (Vzdušná technika) + Spielersichtweite (Luftfahrzeuge) + Distância de visão do cliente (Veículo aéreo) + Kliens látótáv (légi jármű) + Дальность видимости (В воздушном трансп.) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + Cambia en juego la distancia de visión cuando el jugador va en un vehículo aéreo. + Změna dohlednosti pro hráče pokud je ve vzdušné technice. + Verändert die Sichtweite wenn ein Spieler in einem Luftfahrzeug ist. + Muda a distância de visão do jogador dentro do jogo quando ele está dentro de um veículo aéreo. + Megváltoztatja a játékon belüli látótávolságot, amennyiben a játékos légi járműben van. + Изменяет дальность видимости в игре, когда игрок перемещается в воздушном транспорте. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + Distancia de visión dinámica de objetos + Dynamická dohlednost objektů + Dynamische Objektsichtweite + Distância de visão dinâmica dos objetos + Dinamikus objektum-látótáv + Динамич. дальность отрисовки объектов + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + Establece la distancia de visión de objetos como un coeficiente de la distancia de visión. + Nastaví objekt dohlednosti jako koeficient dohlednosti. + Passt die Objektsichtweite dynamisch der Sichtweite an. + Estabelece a distância de visão dos objetos com um coeficiente da distância de visão. + Beállítja az objektum-látótávot a megadott látótáv koefficienseként. + Устанавливает дальность отрисовки объектов как коэффициент от общей дальности видимости. + + + Off + Wyłącz + Apagada + Vypnout + Aus + Desligado + Kikapcsolva + Выкл. + + + Very Low + Bardzo niski + Muy baja + Velmi málo + Sehr niedrig + Muito baixo + Minimális + Очень низкая + + + Low + Niski + Baja + Málo + Niedrig + Baixo + Alacsony + Низкая + + + Medium + Średni + Media + Středně + Mittel + Médio + Közepes + Средняя + + + High + Wysoki + Alta + Hodně + Hoch + Alto + Magas + Высокая + + + Very High + Bardzo wysoki + Muy alta + Velmi hodně + Sehr hoch + Muito alto + Maximális + Очень высокая + + + View Distance: + Zasięg widzenia: + Distancia de visión: + Dohlednost: + Sichtweite: + Distância de visão: + Látótávolság: + Дальность видимости: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + La distancia de visión de objetos es: + Dohlednost objektů je + Objektsichtweite ist + Distância de visão do objeto é + Az objektum-látótávolság: + Дальность видимости объектов: + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + Esta opción no es valida! El limite es + Tato volba je neplatná! Limit je + Diese Option ist ungültig! Die Grenze ist + Essa opção é inválida. O limte é + Ez a beállítás érvénytelen! A maximum mennyiség + Настройка не верна! Текущий предел: + + + Video Settings + Ustawienia wideo + Ajustes de vídeo + Nastavení videa + Grafikeinstellungen + Ajustes de vídeo + Videobeállítások + Видео настройки + + \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 1c723b428f..e0733a73ff 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -1,157 +1,157 @@ - - - - - Show Wind Info - Pokaż inf. o wietrze - Показать информацию о ветре - Afficher information sur le vent - Mostrar información del viento - Mostra informazioni sul vento - Zeige Windinformationen - Széladatok mutatása - Zobrazit informace o větru - Mostrar informação do vento - - - Weather - Pogoda - Clima - Wetter - Počasí - Clima - Időjárás - Погода - - - Multiplayer synchronized ACE weather module - Synchronizowana pogoda ACE - Modulo climático del ACE sincronizado en multijugador - ACE-Wettermodul (synchron im Multiplayer) - Synchronizovat ACE počasí v multiplayeru - Módulo climático ACE para sincronismo multiplayer - Többjátékos szinkronizált ACE időjárás modul - ACE Модуль для синхронизации погоды в мультиплеере - - - Weather propagation - Zmiany pogody - Propagación del clima - Wetterübertragung - Změny počasí - Propagação do clima - Időjárás-változás - Единая погода для всех - - - Enables server side weather propagation - Aktywuje zmiany pogody po stronie serwera - Permite al servidor controlar la propagación del clima - Aktiviere serverseitige Wetterübertragung - Aktivuje změny počasí na straně serveru - Ativa propagação de clima via server - Engedélyezi a szerveroldali időjárás-változást - Включает управление погодой на серверной стороне - - - ACE Weather - Pogoda ACE - Clima ACE - ACE-Wetter - ACE počasí - Clima ACE - ACE Időjárás - Погода ACE - - - Overrides the default weather (editor, mission settings) with ACE weather (map based) - Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy) - Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa) - Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) - Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) - Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) - Felülbírálja az alapértelmezett időjárást (editor, küldetésbeállítások) az ACE időjárással (térkép-alapú) - Заменяет погоду по-умолчанию (из редактора, настроек миссии) погодой ACE (на основе карты) - - - Sync Rain - Synchronizuj deszcz - Sincronizar lluvia - Regen synchronisieren - Synchronizuj déšť - Sincronizar chuva - Eső szinkronizálása - Синхрониз. дождь - - - Synchronizes rain - Synchronizuje deszcz - Sincroniza la lluvia - Synchronisiert den Regen - Synchronizace deště - Sincroniza a chuva - Szinkronizálja az esőt - Синхронизирует дождь - - - Sync Wind - Synchronizuj wiatr - Sincronizar viento - Wind synchronisieren - Synchronizuj vítr - Sincronizar vento - Szél szinkronizálása - Синхрониз. ветер - - - Synchronizes wind - Synchronizuje wiatr - Sincroniza el viento - Synchronisiert den Wind - Synchronizace větru - Sincroniza o vento - Szinkronizálja a szelet - Синхронизирует ветер - - - Sync Misc - Synchronizuj różne - Sincronizar otros - Sonstiges synchronisieren - Synchronizuj různé - Sincronizar outros - Egyéb szinkronizálása - Синхрониз. прочее - - - Synchronizes lightnings, rainbow, fog, ... - Synchronizuje pioruny, tęcze, mgłę, ... - Sincroniza relampagos, arcoiris, niebla ... - Synchronisiert Blitze, Regenbögen, Nebel, ... - Synchronizace blesků, duhy, mlhy, ... - Sincroniza relâmpagos, arco-íris, neblina... - Szinkronizálja a villámokat, szivárványokat, ködöt, ... - Синхронизирует молнии, радугу, туман... - - - Update Interval - Interwał aktualizacji - Intervalo de actualización - Aktualisierungsintervall - Interval aktualizace - Intervalo de atualização - Frissítési intervallum - Интервал обновления - - - Defines the interval (seconds) between weather updates - Określa interwał (sekundy) pomiędzy aktualizacjami pogody - Defina el intervalo (en segundos) entre actualizacions de clima - Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen - Určit interval (v sekundách) mezi aktualizacemi počasí - Defina o intervalo (em segundos) entre as atualizações de clima - Megadja az intervallumot (másodpercben) az időjárás-frissítések között - Определяет интервал (в секундах) между обновлениями погоды - - + + + + + Show Wind Info + Pokaż inf. o wietrze + Показать информацию о ветре + Afficher information sur le vent + Mostrar información del viento + Mostra informazioni sul vento + Zeige Windinformationen + Széladatok mutatása + Zobrazit informace o větru + Mostrar informação do vento + + + Weather + Pogoda + Clima + Wetter + Počasí + Clima + Időjárás + Погода + + + Multiplayer synchronized ACE weather module + Synchronizowana pogoda ACE + Modulo climático del ACE sincronizado en multijugador + ACE-Wettermodul (synchron im Multiplayer) + Synchronizovat ACE počasí v multiplayeru + Módulo climático ACE para sincronismo multiplayer + Többjátékos szinkronizált ACE időjárás modul + ACE Модуль для синхронизации погоды в мультиплеере + + + Weather propagation + Zmiany pogody + Propagación del clima + Wetterübertragung + Změny počasí + Propagação do clima + Időjárás-változás + Единая погода для всех + + + Enables server side weather propagation + Aktywuje zmiany pogody po stronie serwera + Permite al servidor controlar la propagación del clima + Aktiviere serverseitige Wetterübertragung + Aktivuje změny počasí na straně serveru + Ativa propagação de clima via server + Engedélyezi a szerveroldali időjárás-változást + Включает управление погодой на серверной стороне + + + ACE Weather + Pogoda ACE + Clima ACE + ACE-Wetter + ACE počasí + Clima ACE + ACE Időjárás + Погода ACE + + + Overrides the default weather (editor, mission settings) with ACE weather (map based) + Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy) + Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa) + Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) + Přepíše výchozí počasí (editor, nastavení mise) s ACE počasím (podle mapy) + Sobreescreve o clima padrão (editor, ajustes de missão) pelo sistema de clima ACE (baseado por mapa) + Felülbírálja az alapértelmezett időjárást (editor, küldetésbeállítások) az ACE időjárással (térkép-alapú) + Заменяет погоду по-умолчанию (из редактора, настроек миссии) погодой ACE (на основе карты) + + + Sync Rain + Synchronizuj deszcz + Sincronizar lluvia + Regen synchronisieren + Synchronizuj déšť + Sincronizar chuva + Eső szinkronizálása + Синхрониз. дождь + + + Synchronizes rain + Synchronizuje deszcz + Sincroniza la lluvia + Synchronisiert den Regen + Synchronizace deště + Sincroniza a chuva + Szinkronizálja az esőt + Синхронизирует дождь + + + Sync Wind + Synchronizuj wiatr + Sincronizar viento + Wind synchronisieren + Synchronizuj vítr + Sincronizar vento + Szél szinkronizálása + Синхрониз. ветер + + + Synchronizes wind + Synchronizuje wiatr + Sincroniza el viento + Synchronisiert den Wind + Synchronizace větru + Sincroniza o vento + Szinkronizálja a szelet + Синхронизирует ветер + + + Sync Misc + Synchronizuj różne + Sincronizar otros + Sonstiges synchronisieren + Synchronizuj různé + Sincronizar outros + Egyéb szinkronizálása + Синхрониз. прочее + + + Synchronizes lightnings, rainbow, fog, ... + Synchronizuje pioruny, tęcze, mgłę, ... + Sincroniza relampagos, arcoiris, niebla ... + Synchronisiert Blitze, Regenbögen, Nebel, ... + Synchronizace blesků, duhy, mlhy, ... + Sincroniza relâmpagos, arco-íris, neblina... + Szinkronizálja a villámokat, szivárványokat, ködöt, ... + Синхронизирует молнии, радугу, туман... + + + Update Interval + Interwał aktualizacji + Intervalo de actualización + Aktualisierungsintervall + Interval aktualizace + Intervalo de atualização + Frissítési intervallum + Интервал обновления + + + Defines the interval (seconds) between weather updates + Określa interwał (sekundy) pomiędzy aktualizacjami pogody + Defina el intervalo (en segundos) entre actualizacions de clima + Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen + Určit interval (v sekundách) mezi aktualizacemi počasí + Defina o intervalo (em segundos) entre as atualizações de clima + Megadja az intervallumot (másodpercben) az időjárás-frissítések között + Определяет интервал (в секундах) между обновлениями погоды + + \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 8008201d80..c12a99a8a5 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -1,165 +1,165 @@ - - - - - Wind Information - Informacje o wietrze - Información del viento - Информация о ветре - Informace o větru - Vent - Windinformationen - Szélinformáció - Informazioni sul vento - Informação do vento - - - Direction: %1 - Kierunek: %1 - Dirección: %1 - Направление: %1° - Směr: %1 - Direction %1 - Windrichtung: %1 - Irány: %1 - Direzione: %1° - Direção: %1 - - - Speed: %1 m/s - Prędkość: %1 - Velocidad: %1 m/s - Скорость: %1 м/с - Rychlost: %1 m/s - Vitesse %1 m/s - Geschwindigkeit: %1 m/s - Sebesség: %1 m/s - Velocità: %1 m/s - Velocidade: %1 m/s - - - Weather Information - Informacje o pogodzie - Información Meteorológica - Информация о погоде - Informace o počasí - Météo - Wetterinformationen - Időjárás-Információ - Meteo - Informação Meteorológica - - - Humidity: %1% - Wilgotność: %1 - Humedad: %1% - Влажность: %1% - Vlhkost: %1% - Humidité: %1% - Luftfeuchtigkeit: %1 - Páratartalom: %1% - Umidità: %1% - Humidade: %1% - - - Wind Deflection - Wpływ wiatru - Desviación por viento - Účinky větru - Windablenkung - Desvio de vento - Szél-hárítás - Отклонение ветром - - - Wind Deflection - Wpływ wiatru - Desviación por viento - Windablenkung - Účinky větru - Desvio de vento - Szél-hárítás - Отклонение ветром - - - Enables wind deflection - Aktywuje wpływ wiatru na trajektorię lotu pocisków - Activa la desviación por viento - Aktiviert Windablenkung - Umožňit vliv větru - Ativa o desvio de vento - Engedélyezi a szél-hárítást - Включает отклонение ветром - - - Vehicle Enabled - Włączone dla pojazdów - Habilitada en vehículos - Fahrzeuge aktiviert - Vozidla povolena - Ativado em veículos - Jármű engedélyezve - Для техники - - - Enables wind deflection for static/vehicle gunners - Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - Habilita la desviación por viento para artilleros estaticos/de vehículos - Aktiviere Windablenkung für statische oder Fahrzeugschützen - Umožnit vliv větru pro střelce z vozidla/statiky - Ativa o desvio de vento para atiradores de estáticas e veículos - Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél - Включает отклонение ветром для стрелков статичных орудий и транспортных средств - - - Simulation Interval - Interwał symulacji - Intervalo de simulación - Simulationsintervall - Interval simulace - Intervalo de simulação - Szimulációs intervallum - Интервал симуляции - - - Defines the interval between every calculation step - Określa interwał pomiędzy każdym krokiem kalkulacji - Define el intervalo entre cada calculo - Definiert das Intervall zwischen jedem Berechnungsschritt - Určuje interval mezi každým výpočtem - Define o intervalo entre cada cálculo - Megszabja a számítási lépések közötti intervallumot - Определяет временной интервал между расчетами - - - Simulation Radius - Zasięg symulacji - Radio de simulación - Simulationsradius - Oblast simulace - Radio da Simulação - Szimulációs hatókör - Радиус симуляции - - - Defines the radius around the player (in meters) at which projectiles are wind deflected - Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr - Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento - Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden - Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem - Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento - Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékeket háríthatja a szél - Определяет радиус вокруг игрока (а метрах), в котором снаряды отклоняются ветром - - - Wind influence on projectiles trajectory - Wpływ wiatru na trajektorię lotu pocisków - Influencia del viento en la trayectoria de proyectiles - Windeinfluss auf die Geschossbahnen - Vítr ovlivňuje trajektorii projektilu - Influência do vento na trajetória dos projéteis - Szél hatása a lövedékek röppályájára - Влияние втера на траекторию снарядов - - + + + + + Wind Information + Informacje o wietrze + Información del viento + Информация о ветре + Informace o větru + Vent + Windinformationen + Szélinformáció + Informazioni sul vento + Informação do vento + + + Direction: %1 + Kierunek: %1 + Dirección: %1 + Направление: %1° + Směr: %1 + Direction %1 + Windrichtung: %1 + Irány: %1 + Direzione: %1° + Direção: %1 + + + Speed: %1 m/s + Prędkość: %1 + Velocidad: %1 m/s + Скорость: %1 м/с + Rychlost: %1 m/s + Vitesse %1 m/s + Geschwindigkeit: %1 m/s + Sebesség: %1 m/s + Velocità: %1 m/s + Velocidade: %1 m/s + + + Weather Information + Informacje o pogodzie + Información Meteorológica + Информация о погоде + Informace o počasí + Météo + Wetterinformationen + Időjárás-Információ + Meteo + Informação Meteorológica + + + Humidity: %1% + Wilgotność: %1 + Humedad: %1% + Влажность: %1% + Vlhkost: %1% + Humidité: %1% + Luftfeuchtigkeit: %1 + Páratartalom: %1% + Umidità: %1% + Humidade: %1% + + + Wind Deflection + Wpływ wiatru + Desviación por viento + Účinky větru + Windablenkung + Desvio de vento + Szél-hárítás + Отклонение ветром + + + Wind Deflection + Wpływ wiatru + Desviación por viento + Windablenkung + Účinky větru + Desvio de vento + Szél-hárítás + Отклонение ветром + + + Enables wind deflection + Aktywuje wpływ wiatru na trajektorię lotu pocisków + Activa la desviación por viento + Aktiviert Windablenkung + Umožňit vliv větru + Ativa o desvio de vento + Engedélyezi a szél-hárítást + Включает отклонение ветром + + + Vehicle Enabled + Włączone dla pojazdów + Habilitada en vehículos + Fahrzeuge aktiviert + Vozidla povolena + Ativado em veículos + Jármű engedélyezve + Для техники + + + Enables wind deflection for static/vehicle gunners + Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + Habilita la desviación por viento para artilleros estaticos/de vehículos + Aktiviere Windablenkung für statische oder Fahrzeugschützen + Umožnit vliv větru pro střelce z vozidla/statiky + Ativa o desvio de vento para atiradores de estáticas e veículos + Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél + Включает отклонение ветром для стрелков статичных орудий и транспортных средств + + + Simulation Interval + Interwał symulacji + Intervalo de simulación + Simulationsintervall + Interval simulace + Intervalo de simulação + Szimulációs intervallum + Интервал симуляции + + + Defines the interval between every calculation step + Określa interwał pomiędzy każdym krokiem kalkulacji + Define el intervalo entre cada calculo + Definiert das Intervall zwischen jedem Berechnungsschritt + Určuje interval mezi každým výpočtem + Define o intervalo entre cada cálculo + Megszabja a számítási lépések közötti intervallumot + Определяет временной интервал между расчетами + + + Simulation Radius + Zasięg symulacji + Radio de simulación + Simulationsradius + Oblast simulace + Radio da Simulação + Szimulációs hatókör + Радиус симуляции + + + Defines the radius around the player (in meters) at which projectiles are wind deflected + Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr + Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento + Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden + Definuje oblast kolem hráče (v metrech) v které je projektil ovlivněn větrem + Define o raio ao redor do jogador (em metros) em qual os projéteis são desviados pelo vento + Meghatározza a játékos körüli hatókört (méterben), ahol a lövedékeket háríthatja a szél + Определяет радиус вокруг игрока (а метрах), в котором снаряды отклоняются ветром + + + Wind influence on projectiles trajectory + Wpływ wiatru na trajektorię lotu pocisków + Influencia del viento en la trayectoria de proyectiles + Windeinfluss auf die Geschossbahnen + Vítr ovlivňuje trajektorii projektilu + Influência do vento na trajetória dos projéteis + Szél hatása a lövedékek röppályájára + Влияние втера на траекторию снарядов + + \ No newline at end of file diff --git a/addons/yardage450/stringtable.xml b/addons/yardage450/stringtable.xml index f133d2f860..5a57ff2193 100644 --- a/addons/yardage450/stringtable.xml +++ b/addons/yardage450/stringtable.xml @@ -1,35 +1,35 @@ - - - - - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - Yardage 450 - - - Laser Rangefinder - Laserentfernungsmesser - Dalmierz laserowy - Telémetro láser - Laserový dálkoměr - Medidor de Distância a laser - Lézeres távolságmérő - Лазерный дальномер - - - Yardage 450 - Power Button - Yardage 450 - Einschalt-Taste - Yardage 450 - Przycisk zasilania - Yardage 450 - Botón de encendido - Yardage 450 - Tlačítko napájení - Yardage 450 - Botão de energia - Yardage 450 - Főkapcsoló gomb - Yardage 450 - Кнопка питания - - + + + + + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + Yardage 450 + + + Laser Rangefinder + Laserentfernungsmesser + Dalmierz laserowy + Telémetro láser + Laserový dálkoměr + Medidor de Distância a laser + Lézeres távolságmérő + Лазерный дальномер + + + Yardage 450 - Power Button + Yardage 450 - Einschalt-Taste + Yardage 450 - Przycisk zasilania + Yardage 450 - Botón de encendido + Yardage 450 - Tlačítko napájení + Yardage 450 - Botão de energia + Yardage 450 - Főkapcsoló gomb + Yardage 450 - Кнопка питания + + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index f15d2452c7..26da92d3d9 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,266 +1,266 @@ - - - - - Zeus Settings - Ustawienia Zeusa - Ajustes Zeus - Nastavení Zeuse - Zeus-Einstellungen - Ajustes do Zeus - Zeus beállítások - Настройки Зевса - - - Provides control over various aspects of Zeus. - Pozwala kontrolować różne aspekty Zeusa. - Proporciona control sobre diversos aspectos de Zeus. - Poskytuje kontrolu na různými aspekty Zeuse. - Bietet die Steuerung verschiedener Zeus-Optionen an. - Proporciona controle sobre diversos aspectos do Zeus. - Különböző beállítási lehetőségeket biztosít a Zeus részeihez. - Обеспечивает контроль над различными аспектами работы Зевса - - - Ascension Messages - Wiad. o nowym Zeusie - Mensajes de ascensión - Zpráva o novém Zeusovi - Aufstiegsnachrichten - Mensagens de ascensão - Felemelkedési üzenetek - Сообщения о вознесении - - - Display global popup messages when a player is assigned as Zeus. - Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus - Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. - Zobrazit globální zprávu když je hráč přiřazen jako Zeus. - Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. - Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. - Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. - Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом - - - Zeus Eagle - Orzeł Zeusa - Águila Zeus - Orel Zeuse - Zeus-Adler - Águia do Zeus - Zeus sas - Орел Зевса - - - Spawn an eagle that follows the Zeus camera. - Spawnuj orła, który podąrza za kamerą Zeusa. - Generar un águila que sigue la cámara Zeus. - Vytvoří orla, který následuje kameru Zeuse. - Erstelle einen Adler, der der Zeus-Kamera folgt. - Cria uma águia que segue a câmera do Zeus - Lerak egy sast, ami követi a Zeus kamerát. - Спавнит орла, который следует за камерой Зевса. - - - Wind Sounds - Dźwięki wiatru - Sonidos de viento - Zvuky větru - Windgeräusche - Sons de vento - Szélhangok - Звук ветра - - - Play wind sounds when Zeus remote controls a unit. - Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. - Reproduce sonidos de viento cuando Zeus controle remotamente una unidad. - Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. - Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. - Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. - Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. - Проигрывает звук ветра каждый раз, когда Зевс вселяется в юнита. - - - Ordnance Warning - Ostrz. o ostrzale arty. - Advertencia de artefactos explosivos - Varování před dělostřelectvem - Artilleriewarnung - Aviso de explosivos - Tüzérségi figyelmeztetés - Предупреждение об арте - - - Play a radio warning when Zeus uses ordnance. - Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. - Reproduce un aviso de radio cuando Zeus utiliza artefactos explosivos. - Přehrát varování (rádio) když Zeus použije dělostřelectvo. - Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. - Reproduz uma aviso via rádio quando o Zeus usa um explosivo. - Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. - Проигрывает звук радио каждый раз, когда Зевс использует артиллерию. - - - Reveal Mines - Pokazuj miny - Revelar minas - Odhalit miny - Enthülle Minen - Revelar minas - Aknák feltárása - Показывать мины - - - Reveal mines to allies and place map markers. - Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. - Revelar minas a aliados y establecer marcadores de mapa. - Odhalí miny pro spojence a umístnit jejich značku na mapu. - Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. - Revelar minas para aliados e colocar marcadores no mapa. - Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. - Показывает мины союзникам и отмечает их маркерами на карте. - - - Reveal to Allies - Pokaż dla sojuszników - Revelar a aliados - Odhalit pro spojence - An Verbündete weitergeben - Revelar para aliados - Feltárás a szövetségeseknek - Показывать союзникам - - - Allies + Map Markers - Sojusznicy + markery na mapie - Aliados + Marcas de mapa - Spojenci + Značky na mapě - Verbündete + Kartenmarkierungen - Aliados + Marcadores no mapa - Szövetségesek + térkép jelölők - Союзники + Маркеры на карте - - - Toggle Captive - Przełącz więźnia - Alternar cautivo - Přepnout - Vězeň - Gefangennahme umschalten - Alternar prisioneiro - Elfogott állapot váltása - Пленный (вкл./выкл.) - - - Toggle Surrender - Przełącz kapitulację - Alternar rendición - Přepnout - Vzdávání - Aufgabe umschalten - Alternar rendição - Kapituláló állapot váltása - Сдавшийся (вкл./выкл.) - - - Toggle Unconscious - Przełącz nieprzytomność - Alternar inconsciencia - Přepnout - Bezvědomí - Bewusstlosigkeit umschalten - Alternar inconsciência - Eszméletlen állapot váltása - Без сознания (вкл./выкл.) - - - Assign Medic - Przydziel medyka - Назначить медиком - - - Assign Medical Vehicle - Przydziel pojazd medyczny - Назначить медицинским транспортом - - - Assign Medical Facility - Przydziel budynek medyczny - Назанчить медицинским сооружением - - - Unit must be alive - Utiliser uniquement sur une unité vivante - Nur bei lebenden Einheiten verwendbar - Utilizar solo en unidades vivas - Použitelné jen na živé jednotky - Używaj tylko na żywych jednostkach - Применимо только к живым юнитам - Csak élő egységeken használni - Si può fare solo su persone vive - Usar somente em unidades vivas - - - Unit must be infantry - Utiliser uniquement sur du personnel à pied - Nur bei abgesessener Infanterie verwendbar - Utilizar solo en infanteria desmontada - Použitelné jen na pěsích jednotkách - 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 - Usar somente em infantaria desmontada - - - Unit must be a structure - Jednostka musi być budynkiem - Юнит должен быть строением - - - Unit must be a vehicle - Jednostka musi być pojazdem - Юнит должен быть транспортом - - - Unit must not be captive - Jednostka nie może być więźniem - La unidad no debe estar cautiva - Jednotka nemí být vězeň - Einheit darf nicht gefangen sein - Unidade não pode ser prisioneira - Csak elfogatlan egységeken használni - Юнит не должен быть пленным - - - Place on a unit - Rien sous le curseur - Es wurde nichts ausgewählt - Nada bajo el ratón - Coloque em uma unidade - Umístni na jednotku - Nie ma nic pod kursorem - Ничего не выделено - Semmi sincs az egér alatt - Nessuna selezione - - - Requires an addon that is not present - Wymaga addonu, który nie jest obecny - Requiere un addon que no está presente - Vyžaduje addon, který není přítomen - Benötigt ein Addon, das nicht vorhanden ist - Requer um addon que não está presente - Egy jelenleg hiányzó bővítményt igényel - Требуется аддон, который отсутствует - - - Add Objects to Curator - Dodaj obiekt do kuratora - Добавить объекты куратору - - - Adds any spawned object to all curators in the mission - Dodaje każdy zespawnowany obiekt do wszystkich kuratorów podczas misji - Добавляет любой отспавненный объект всем кураторам в миссии - - + + + + + Zeus Settings + Ustawienia Zeusa + Ajustes Zeus + Nastavení Zeuse + Zeus-Einstellungen + Ajustes do Zeus + Zeus beállítások + Настройки Зевса + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + Proporciona control sobre diversos aspectos de Zeus. + Poskytuje kontrolu na různými aspekty Zeuse. + Bietet die Steuerung verschiedener Zeus-Optionen an. + Proporciona controle sobre diversos aspectos do Zeus. + Különböző beállítási lehetőségeket biztosít a Zeus részeihez. + Обеспечивает контроль над различными аспектами работы Зевса + + + Ascension Messages + Wiad. o nowym Zeusie + Mensajes de ascensión + Zpráva o novém Zeusovi + Aufstiegsnachrichten + Mensagens de ascensão + Felemelkedési üzenetek + Сообщения о вознесении + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + Mostrar mensajes emergentes globales cuando a un jugador se le asigna como Zeus. + Zobrazit globální zprávu když je hráč přiřazen jako Zeus. + Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. + Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. + Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. + Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом + + + Zeus Eagle + Orzeł Zeusa + Águila Zeus + Orel Zeuse + Zeus-Adler + Águia do Zeus + Zeus sas + Орел Зевса + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + Generar un águila que sigue la cámara Zeus. + Vytvoří orla, který následuje kameru Zeuse. + Erstelle einen Adler, der der Zeus-Kamera folgt. + Cria uma águia que segue a câmera do Zeus + Lerak egy sast, ami követi a Zeus kamerát. + Спавнит орла, который следует за камерой Зевса. + + + Wind Sounds + Dźwięki wiatru + Sonidos de viento + Zvuky větru + Windgeräusche + Sons de vento + Szélhangok + Звук ветра + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + Reproduce sonidos de viento cuando Zeus controle remotamente una unidad. + Přehrát varování (vítr) když Zeus převezmě kontrolu nad jednotkou. + Spiele Windgeräusche ab, wenn Zeus eine Einheit steuert. + Reproduz sons de vento quando uma unidade é remotamente controlada pelo Zeus. + Szélhangokat játszik le, ha a Zeus távvezérel egy egységet. + Проигрывает звук ветра каждый раз, когда Зевс вселяется в юнита. + + + Ordnance Warning + Ostrz. o ostrzale arty. + Advertencia de artefactos explosivos + Varování před dělostřelectvem + Artilleriewarnung + Aviso de explosivos + Tüzérségi figyelmeztetés + Предупреждение об арте + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + Reproduce un aviso de radio cuando Zeus utiliza artefactos explosivos. + Přehrát varování (rádio) když Zeus použije dělostřelectvo. + Spiele eine Radiowarnung ab, wenn Zeus Artillerie verwendet. + Reproduz uma aviso via rádio quando o Zeus usa um explosivo. + Rádiós figyelmeztetés kiadása, ha a Zeus tüzérséget használ. + Проигрывает звук радио каждый раз, когда Зевс использует артиллерию. + + + Reveal Mines + Pokazuj miny + Revelar minas + Odhalit miny + Enthülle Minen + Revelar minas + Aknák feltárása + Показывать мины + + + Reveal mines to allies and place map markers. + Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. + Revelar minas a aliados y establecer marcadores de mapa. + Odhalí miny pro spojence a umístnit jejich značku na mapu. + Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. + Revelar minas para aliados e colocar marcadores no mapa. + Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. + Показывает мины союзникам и отмечает их маркерами на карте. + + + Reveal to Allies + Pokaż dla sojuszników + Revelar a aliados + Odhalit pro spojence + An Verbündete weitergeben + Revelar para aliados + Feltárás a szövetségeseknek + Показывать союзникам + + + Allies + Map Markers + Sojusznicy + markery na mapie + Aliados + Marcas de mapa + Spojenci + Značky na mapě + Verbündete + Kartenmarkierungen + Aliados + Marcadores no mapa + Szövetségesek + térkép jelölők + Союзники + Маркеры на карте + + + Toggle Captive + Przełącz więźnia + Alternar cautivo + Přepnout - Vězeň + Gefangennahme umschalten + Alternar prisioneiro + Elfogott állapot váltása + Пленный (вкл./выкл.) + + + Toggle Surrender + Przełącz kapitulację + Alternar rendición + Přepnout - Vzdávání + Aufgabe umschalten + Alternar rendição + Kapituláló állapot váltása + Сдавшийся (вкл./выкл.) + + + Toggle Unconscious + Przełącz nieprzytomność + Alternar inconsciencia + Přepnout - Bezvědomí + Bewusstlosigkeit umschalten + Alternar inconsciência + Eszméletlen állapot váltása + Без сознания (вкл./выкл.) + + + Assign Medic + Przydziel medyka + Назначить медиком + + + Assign Medical Vehicle + Przydziel pojazd medyczny + Назначить медицинским транспортом + + + Assign Medical Facility + Przydziel budynek medyczny + Назанчить медицинским сооружением + + + Unit must be alive + Utiliser uniquement sur une unité vivante + Nur bei lebenden Einheiten verwendbar + Utilizar solo en unidades vivas + Použitelné jen na živé jednotky + Używaj tylko na żywych jednostkach + Применимо только к живым юнитам + Csak élő egységeken használni + Si può fare solo su persone vive + Usar somente em unidades vivas + + + Unit must be infantry + Utiliser uniquement sur du personnel à pied + Nur bei abgesessener Infanterie verwendbar + Utilizar solo en infanteria desmontada + Použitelné jen na pěsích jednotkách + 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 + Usar somente em infantaria desmontada + + + Unit must be a structure + Jednostka musi być budynkiem + Юнит должен быть строением + + + Unit must be a vehicle + Jednostka musi być pojazdem + Юнит должен быть транспортом + + + Unit must not be captive + Jednostka nie może być więźniem + La unidad no debe estar cautiva + Jednotka nemí být vězeň + Einheit darf nicht gefangen sein + Unidade não pode ser prisioneira + Csak elfogatlan egységeken használni + Юнит не должен быть пленным + + + Place on a unit + Rien sous le curseur + Es wurde nichts ausgewählt + Nada bajo el ratón + Coloque em uma unidade + Umístni na jednotku + Nie ma nic pod kursorem + Ничего не выделено + Semmi sincs az egér alatt + Nessuna selezione + + + Requires an addon that is not present + Wymaga addonu, który nie jest obecny + Requiere un addon que no está presente + Vyžaduje addon, který není přítomen + Benötigt ein Addon, das nicht vorhanden ist + Requer um addon que não está presente + Egy jelenleg hiányzó bővítményt igényel + Требуется аддон, который отсутствует + + + Add Objects to Curator + Dodaj obiekt do kuratora + Добавить объекты куратору + + + Adds any spawned object to all curators in the mission + Dodaje każdy zespawnowany obiekt do wszystkich kuratorów podczas misji + Добавляет любой отспавненный объект всем кураторам в миссии + + \ No newline at end of file From 15fe2c32b8a96a947950bb2683f569f835d572a4 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 3 Sep 2015 04:58:08 +0300 Subject: [PATCH 228/620] Russian Translations - Update --- addons/finger/stringtable.xml | 128 +++++++++++++++++----------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index a7966ec334..d8fb2994e3 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -1,65 +1,65 @@ - - - - - Show pointing indicator to self - Индикатор пальца для показывающего - Pokaż indykator wskazywania palcem dla siebie - Saját mutatási indikátor megjelenítése - - - Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator - Отображать индикатор указания пальцем для показывающего игрока. Эта настройка не влияет на то, будут ли другие игроки видеть индикатор - Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie. - Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. - - - Pointing indicator - Индикатор указания пальцем - Indykator palca - Ujj-indikátor - - - Color of the pointing indicator circle - Цвет индикатора указания пальцем - Kolor okręgu wyświetlanego przy wskazywaniu palcem - Mutatási indikátor körének színe - - - Action "point a finger at" - Действие "показать пальцем на" - Akcja "wskaż palcem" - Cselekvés "ujj rámutatása" - - - Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. - Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany. - Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. - Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать. - - - Pointing Settings - Ustawienia wskazywania palcem - Ujj beállításai - Настройки указания пальцем - - - Pointing Enabled - Aktywuj wskazywanie - Mutatás engedélyezése - Указание пальцем включено - - - Pointing Max Range - Maks. zasięg wskazywania - Ujj maximum hatótávja - Макс. дальность - - - Max range between players to show the pointing indicator [default: 4 meters] - Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] - A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] - Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра] - - + + + + + Show pointing indicator to self + Индикатор пальца для показывающего + Pokaż indykator wskazywania palcem dla siebie + Saját mutatási indikátor megjelenítése + + + Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator + Отображать индикатор указания пальцем для показывающего игрока. Эта настройка не влияет на то, будут ли другие игроки видеть индикатор + Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie. + Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. + + + Pointing indicator + Индикатор указания пальцем + Indykator palca + Ujj-indikátor + + + Color of the pointing indicator circle + Цвет индикатора указания пальцем + Kolor okręgu wyświetlanego przy wskazywaniu palcem + Mutatási indikátor körének színe + + + Action "point a finger at" + Действие "показать пальцем на" + Akcja "wskaż palcem" + Cselekvés "ujj rámutatása" + + + Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. + Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany. + Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. + Показывает пальцем и рисует виртуальный маркер в направлении взгляда ближайшим игрокам. Можно удерживать. + + + Pointing Settings + Ustawienia wskazywania palcem + Ujj beállításai + Настройки указания пальцем + + + Pointing Enabled + Aktywuj wskazywanie + Mutatás engedélyezése + Указание пальцем включено + + + Pointing Max Range + Maks. zasięg wskazywania + Ujj maximum hatótávja + Макс. дальность + + + Max range between players to show the pointing indicator [default: 4 meters] + Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] + A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] + Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра] + + \ No newline at end of file From cbccd898ea312b5fe2f748097b648fdb21d86349 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 2 Sep 2015 23:58:24 -0500 Subject: [PATCH 229/620] Run functions after setting init --- addons/common/XEH_postInit.sqf | 10 +++++++++- addons/common/XEH_preInit.sqf | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ba014ff182..9fbe84362a 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -150,6 +150,14 @@ call FUNC(checkFiles); //Event that settings are safe to use: ["SettingsInitialized", []] call FUNC(localEvent); + //Set init finished and run all delayed functions: + GVAR(settingsInitFinished) = true; + diag_log text format ["%1 delayed functions", (count GVAR(runAtSettingsInitialized))]; + { + _x params ["_args", "_code"]; + _args call _code; + } forEach GVAR(runAtSettingsInitialized); + }, 0, [false]] call CBA_fnc_addPerFrameHandler; @@ -326,7 +334,7 @@ GVAR(OldIsCamera) = false; if (didJip) then { // We are jipping! Get ready and wait, and throw the event [{ - if(!(isNull player)) then { + if((!(isNull player)) && GVAR(settingsInitFinished)) then { ["PlayerJip", [player] ] call FUNC(localEvent); [(_this select 1)] call cba_fnc_removePerFrameHandler; }; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 6fdf99113c..12fdc5629d 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -303,6 +303,9 @@ GVAR(nextFrameNo) = diag_frameno; GVAR(nextFrameBufferA) = []; GVAR(nextFrameBufferB) = []; +GVAR(settingsInitFinished) = false; +GVAR(runAtSettingsInitialized) = []; + // @TODO: Generic local-managed global-synced objects (createVehicleLocal) //Debug From 789de9d111e7ca1deb5b548364cc879bc9776524 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Sep 2015 00:11:49 -0500 Subject: [PATCH 230/620] runAfterSettingsInit helper func --- addons/common/XEH_postInit.sqf | 6 ++--- addons/common/XEH_preInit.sqf | 1 + .../functions/fnc_runAfterSettingsInit.sqf | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 addons/common/functions/fnc_runAfterSettingsInit.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 9fbe84362a..24a9e4ab6e 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -152,10 +152,10 @@ call FUNC(checkFiles); //Set init finished and run all delayed functions: GVAR(settingsInitFinished) = true; - diag_log text format ["%1 delayed functions", (count GVAR(runAtSettingsInitialized))]; + diag_log text format ["[ACE] %1 delayed functions running", (count GVAR(runAtSettingsInitialized))]; { - _x params ["_args", "_code"]; - _args call _code; + _x params ["_func", "_params"]; + _params call _func; } forEach GVAR(runAtSettingsInitialized); }, 0, [false]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 12fdc5629d..56e3062cd2 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -157,6 +157,7 @@ PREP(requestCallback); PREP(resetAllDefaults); PREP(restoreVariablesJIP); PREP(revertKeyCodeLocalized); +PREP(runAfterSettingsInit); PREP(sanitizeString); PREP(sendRequest); PREP(serverLog); diff --git a/addons/common/functions/fnc_runAfterSettingsInit.sqf b/addons/common/functions/fnc_runAfterSettingsInit.sqf new file mode 100644 index 0000000000..cf3faa1d7e --- /dev/null +++ b/addons/common/functions/fnc_runAfterSettingsInit.sqf @@ -0,0 +1,27 @@ +/* + * Author: PabstMirror + * Executes code after setting are initilized. + * + * Argument: + * 0: Code to execute + * 1: Parameters to run the code with + * + * Return value: + * None + * + * Example: + * [{if (GVAR(setting) then {x} else {y};}, []] call ace_common_fnc_runAfterSettingsInit + * + * Public: No + */ +#include "script_component.hpp" + +params ["_func", "_params"]; + +if (GVAR(settingsInitFinished)) then { + //Setting Already Finished, Direct Run the code + _params call _func; +} else { + //Waiting on settings, throw it on the delayed run array + GVAR(runAtSettingsInitialized) pushBack [_func, _params]; +}; From 024dc3effef60e91532ea832f7b35c16a17a9fe3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Sep 2015 00:16:48 -0500 Subject: [PATCH 231/620] Cleanup --- addons/common/XEH_postInit.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 24a9e4ab6e..4a194e0fe9 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -157,6 +157,7 @@ call FUNC(checkFiles); _x params ["_func", "_params"]; _params call _func; } forEach GVAR(runAtSettingsInitialized); + GVAR(runAtSettingsInitialized) = nil; //cleanup }, 0, [false]] call CBA_fnc_addPerFrameHandler; From a187be725540efdfbd03fd2fb7d76b5791442976 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 13:23:15 +0200 Subject: [PATCH 232/620] sort flashbang under explosive grenades --- addons/grenades/CfgAmmo.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/grenades/CfgAmmo.hpp b/addons/grenades/CfgAmmo.hpp index 120d3ab5ea..7a3dd0476a 100644 --- a/addons/grenades/CfgAmmo.hpp +++ b/addons/grenades/CfgAmmo.hpp @@ -85,6 +85,7 @@ class CfgAmmo { suppressionRadiusHit = 20; typicalSpeed = 22; cost = 40; + explosive = 1E-7; deflecting = 15; timeToLive = 6; fuseDistance = 2.3; From 76bb2bd2b8e2942847bfcffcee08964d03c7b213 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 13:37:36 +0200 Subject: [PATCH 233/620] replace function with FUNC macro --- addons/map/XEH_postInitClient.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index b85d91bf16..f832c89c7b 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -107,6 +107,5 @@ GVAR(hasWatch) = true; if (isNull (_this select 0)) exitWith { GVAR(hasWatch) = true; }; - GVAR(hasWatch) = "ItemWatch" in (_this select 1 select 17); -}] call ace_common_fnc_addEventhandler +}] call EFUNC(common,addEventHandler) From 6b7f84b297d9f6af0f1629b74ca5cc2c873efa50 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 13:39:17 +0200 Subject: [PATCH 234/620] add missing ; --- addons/map/XEH_postInitClient.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/map/XEH_postInitClient.sqf b/addons/map/XEH_postInitClient.sqf index f832c89c7b..02800c2540 100644 --- a/addons/map/XEH_postInitClient.sqf +++ b/addons/map/XEH_postInitClient.sqf @@ -108,4 +108,4 @@ GVAR(hasWatch) = true; GVAR(hasWatch) = true; }; GVAR(hasWatch) = "ItemWatch" in (_this select 1 select 17); -}] call EFUNC(common,addEventHandler) +}] call EFUNC(common,addEventHandler); From a84be46ed4c34e8010b33972672d7c1ca6b41296 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 15:49:49 +0200 Subject: [PATCH 235/620] fix errors from cleanup --- addons/medical/functions/fnc_canAccessMedicalEquipment.sqf | 2 +- addons/medical/functions/fnc_onMedicationUsage.sqf | 3 ++- addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf | 2 +- addons/medical/functions/fnc_treatmentTourniquetLocal.sqf | 4 ++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf b/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf index 0be01ac492..2aecfb9a12 100644 --- a/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf +++ b/addons/medical/functions/fnc_canAccessMedicalEquipment.sqf @@ -15,7 +15,7 @@ #include "script_component.hpp" private ["_accessLevel", "_return"]; -params ["_caller", "_targ"]; +params ["_caller", "_target"]; _accessLevel = _target getvariable [QGVAR(allowSharedEquipmentAccess), -1]; diff --git a/addons/medical/functions/fnc_onMedicationUsage.sqf b/addons/medical/functions/fnc_onMedicationUsage.sqf index d71896b6f0..db4ba737ea 100644 --- a/addons/medical/functions/fnc_onMedicationUsage.sqf +++ b/addons/medical/functions/fnc_onMedicationUsage.sqf @@ -78,7 +78,8 @@ _viscosityAdjustment = _viscosityChange / _timeInSystem; [{ params ["_args", "_idPFH"]; - _args params ["_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_usedMeds", "_viscosityAdjustment", "_painReduce"]; + _args params ["_target", "_timeInSystem", "_variable", "_amountDecreased","_decreaseAmount", "_viscosityAdjustment", "_painReduce"]; + private "_usedMeds"; _usedMeds = _target getvariable [_variable, 0]; _usedMeds = _usedMeds - _decreaseAmount; _target setvariable [_variable, _usedMeds]; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf index 64ce319341..a26876568d 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHeal.sqf @@ -10,7 +10,7 @@ #include "script_component.hpp" -params ["_target", "_caller", "_selectionName", "_className", "_items"]; +params ["_caller", "_target", "_selectionName", "_className", "_items"]; // TODO replace by event system [[_caller, _target], QUOTE(DFUNC(treatmentAdvanced_fullHealLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf index fb7394866e..d1ffd34e4b 100644 --- a/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquetLocal.sqf @@ -13,8 +13,8 @@ */ #include "script_component.hpp" -private ["_tourniquetItem", "_part", "_applyingTo"]; -params ["_target", "_tourniquets", "_selectionName"]; +private ["_tourniquets", "_part", "_applyingTo"]; +params ["_target", "_tourniquetItem", "_selectionName"]; [_target] call FUNC(addToInjuredCollection); From e753131f2d4c0a48792448ab2b281a99447828ac Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 16:17:48 +0200 Subject: [PATCH 236/620] arms and legs to vulnerable, better scaling for pilots and csat --- addons/medical/CfgVehicles.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 61168ca541..74f9d1a4e2 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -426,9 +426,9 @@ class CfgVehicles { }; }; - #define ARM_LEG_ARMOR_DEFAULT 1 - #define ARM_LEG_ARMOR_BETTER 8 - #define ARM_LEG_ARMOR_CSAT 6 + #define ARM_LEG_ARMOR_DEFAULT 2 + #define ARM_LEG_ARMOR_BETTER 4 + #define ARM_LEG_ARMOR_CSAT 3 class Land; class Man: Land { From 0bd92af072321d68fa512d82a7a6a1e559d75eb3 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 17:17:54 +0200 Subject: [PATCH 237/620] fix variables not inited, csat armor scaleing --- addons/medical/CfgVehicles.hpp | 2 +- addons/medical/functions/fnc_init.sqf | 96 +++++++++++++-------------- 2 files changed, 48 insertions(+), 50 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 74f9d1a4e2..7112c82fc5 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -428,7 +428,7 @@ class CfgVehicles { #define ARM_LEG_ARMOR_DEFAULT 2 #define ARM_LEG_ARMOR_BETTER 4 - #define ARM_LEG_ARMOR_CSAT 3 + #define ARM_LEG_ARMOR_CSAT 4 class Land; class Man: Land { diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf index 7d3ebd21d5..bd97203f33 100644 --- a/addons/medical/functions/fnc_init.sqf +++ b/addons/medical/functions/fnc_init.sqf @@ -21,66 +21,64 @@ _unit setVariable [QGVAR(bloodVolume), 100, true]; _unit setVariable ["ACE_isUnconscious", false, true]; // advanced -if (GVAR(level) > 1) then { - // tourniquets - _unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true]; +// tourniquets +_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true]; - // wounds and injuries - _unit setvariable [QGVAR(openWounds), [], true]; - _unit setvariable [QGVAR(bandagedWounds), [], true]; - _unit setVariable [QGVAR(internalWounds), [], true]; - _unit setvariable [QGVAR(lastUniqueWoundID), 1, true]; +// wounds and injuries +_unit setvariable [QGVAR(openWounds), [], true]; +_unit setvariable [QGVAR(bandagedWounds), [], true]; +_unit setVariable [QGVAR(internalWounds), [], true]; +_unit setvariable [QGVAR(lastUniqueWoundID), 1, true]; - // vitals - _unit setVariable [QGVAR(heartRate), 80]; - _unit setvariable [QGVAR(heartRateAdjustments), []]; - _unit setvariable [QGVAR(bloodPressure), [80, 120]]; - _unit setVariable [QGVAR(peripheralResistance), 100]; +// vitals +_unit setVariable [QGVAR(heartRate), 80]; +_unit setvariable [QGVAR(heartRateAdjustments), []]; +_unit setvariable [QGVAR(bloodPressure), [80, 120]]; +_unit setVariable [QGVAR(peripheralResistance), 100]; - // fractures - _unit setVariable [QGVAR(fractures), [], true]; +// fractures +_unit setVariable [QGVAR(fractures), [], true]; - // triage card and logs - _unit setvariable [QGVAR(triageLevel), 0, true]; - _unit setvariable [QGVAR(triageCard), [], true]; +// triage card and logs +_unit setvariable [QGVAR(triageLevel), 0, true]; +_unit setvariable [QGVAR(triageCard), [], true]; - // IVs - _unit setVariable [QGVAR(salineIVVolume), 0, true]; - _unit setVariable [QGVAR(plasmaIVVolume), 0, true]; - _unit setVariable [QGVAR(bloodIVVolume), 0, true]; +// IVs +_unit setVariable [QGVAR(salineIVVolume), 0, true]; +_unit setVariable [QGVAR(plasmaIVVolume), 0, true]; +_unit setVariable [QGVAR(bloodIVVolume), 0, true]; - // damage storage - _unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true]; +// damage storage +_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true]; - // airway - _unit setvariable [QGVAR(airwayStatus), 100]; - _unit setVariable [QGVAR(airwayOccluded), false]; - _unit setvariable [QGVAR(airwayCollapsed), false]; +// airway +_unit setvariable [QGVAR(airwayStatus), 100]; +_unit setVariable [QGVAR(airwayOccluded), false]; +_unit setvariable [QGVAR(airwayCollapsed), false]; - // generic medical admin - _unit setvariable [QGVAR(addedToUnitLoop), false, true]; - _unit setvariable [QGVAR(inCardiacArrest), false, true]; - _unit setvariable [QGVAR(hasLostBlood), 0, true]; - _unit setvariable [QGVAR(isBleeding), false, true]; - _unit setvariable [QGVAR(hasPain), false, true]; - _unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true]; - _unit setvariable [QGVAR(painSuppress), 0, true]; +// generic medical admin +_unit setvariable [QGVAR(addedToUnitLoop), false, true]; +_unit setvariable [QGVAR(inCardiacArrest), false, true]; +_unit setvariable [QGVAR(hasLostBlood), 0, true]; +_unit setvariable [QGVAR(isBleeding), false, true]; +_unit setvariable [QGVAR(hasPain), false, true]; +_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true]; +_unit setvariable [QGVAR(painSuppress), 0, true]; - private ["_allUsedMedication", "_logs"]; +private ["_allUsedMedication", "_logs"]; - // medication - _allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []]; - { - _unit setvariable [_x select 0, nil]; - } foreach _allUsedMedication; - _unit setVariable [QGVAR(allUsedMedication), [], true]; +// medication +_allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []]; +{ + _unit setvariable [_x select 0, nil]; +} foreach _allUsedMedication; +_unit setVariable [QGVAR(allUsedMedication), [], true]; - _logs = _unit getvariable [QGVAR(allLogs), []]; - { - _unit setvariable [_x, nil]; - } foreach _logs; - _unit setvariable [QGVAR(allLogs), [], true]; -}; +_logs = _unit getvariable [QGVAR(allLogs), []]; +{ + _unit setvariable [_x, nil]; +} foreach _logs; +_unit setvariable [QGVAR(allLogs), [], true]; // items [{ From 6d28214287c290875255d7ee56dda116d2aeccb1 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Thu, 3 Sep 2015 08:18:37 -0700 Subject: [PATCH 238/620] Add some debug values. --- addons/medical/functions/fnc_handleUnitVitals.sqf | 13 +++++++++++-- addons/medical/script_component.hpp | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index db312eea34..ca5775cbe8 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -15,7 +15,7 @@ private ["_heartRate","_bloodPressure","_bloodVolume","_painStatus", "_lastTimeValuesSynced", "_syncValues", "_airwayStatus", "_blood"]; params ["_unit", "_interval"]; - +TRACE_3("ACE_DEBUG",_unit,_interval,_unit); if (_interval == 0) exitWith {}; _lastTimeValuesSynced = _unit getvariable [QGVAR(lastMomentValuesSynced), 0]; @@ -29,23 +29,28 @@ _bloodVolume = _bloodVolume max 0; _unit setvariable [QGVAR(bloodVolume), _bloodVolume, _syncValues]; +TRACE_3("ACE_DEBUG",_bloodVolume,_syncValues,_unit); // Set variables for synchronizing information across the net if (_bloodVolume < 100) then { if ((_bloodVolume < 90 && (GVAR(level) == 2)) || _bloodVolume <= 45) then { + TRACE_4("ACE_DEBUG_ADVANCED",_bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); if (_unit getvariable [QGVAR(hasLostBlood), 0] != 2) then { _unit setvariable [QGVAR(hasLostBlood), 2, true]; }; } else { + TRACE_4("ACE_DEBUG", _bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); if (_unit getvariable [QGVAR(hasLostBlood), 0] != 1) then { _unit setvariable [QGVAR(hasLostBlood), 1, true]; }; } } else { + TRACE_4("ACE_DEBUG",_bloodVolume,QGVAR(hasLostBlood),_syncValues,_unit); if (_unit getvariable [QGVAR(hasLostBlood), 0] != 0) then { _unit setvariable [QGVAR(hasLostBlood), 0, true]; }; }; +TRACE_3("ACE_DEBUG",[_unit] call FUNC(getBloodLoss),_unit getVariable QGVAR(isBleeding),_unit); if (([_unit] call FUNC(getBloodLoss)) > 0) then { if !(_unit getvariable [QGVAR(isBleeding), false]) then { _unit setvariable [QGVAR(isBleeding), true, true]; @@ -57,6 +62,7 @@ if (([_unit] call FUNC(getBloodLoss)) > 0) then { }; _painStatus = _unit getvariable [QGVAR(pain), 0]; +TRACE_4("ACE_DEBUG",_painStatus,[_unit] call FUNC(hasPain),_unit getVariable QGVAR(painSuppress),_unit); if (_painStatus > (_unit getvariable [QGVAR(painSuppress), 0])) then { if !(_unit getvariable [QGVAR(hasPain), false]) then { _unit setvariable [QGVAR(hasPain), true, true]; @@ -68,6 +74,7 @@ if (_painStatus > (_unit getvariable [QGVAR(painSuppress), 0])) then { }; if (GVAR(level) == 1) then { + TRACE_5("ACE_DEBUG_BASIC",_painStatus,[_unit] call FUNC(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); // reduce pain if (_painStatus > 0) then { _unit setVariable [QGVAR(pain), (_painStatus - 0.001 * _interval) max 0, _syncValues]; @@ -90,6 +97,7 @@ if (GVAR(level) == 1) then { // handle advanced medical, with vitals if (GVAR(level) >= 2) then { + TRACE_6("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_bloodVolume, [_unit] call FUNC(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); if (_bloodVolume < 30) exitwith { [_unit] call FUNC(setDead); }; @@ -113,7 +121,7 @@ if (GVAR(level) >= 2) then { _painReduce = if (_painStatus > 5) then {0.002} else {0.001}; _unit setVariable [QGVAR(pain), (_painStatus - _painReduce * _interval) max 0, _syncValues]; }; - + TRACE_8("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_painReduce,_heartRate,_bloodVolume,_bloodPressure,_interval,_syncValues,_unit); // TODO Disabled until implemented fully // Handle airway /*if (GVAR(setting_allowAirwayInjuries)) then { @@ -172,6 +180,7 @@ if (GVAR(level) >= 2) then { // syncing any remaining values if (_syncValues) then { + TRACE_3("ACE_DEBUG_IVBAGS_SYNC",GVAR(IVBags),_syncValues,_unit); { private "_value"; _value = _unit getvariable _x; diff --git a/addons/medical/script_component.hpp b/addons/medical/script_component.hpp index 910728c12b..54aea5beb9 100644 --- a/addons/medical/script_component.hpp +++ b/addons/medical/script_component.hpp @@ -2,6 +2,7 @@ #include "\z\ace\addons\main\script_mod.hpp" #define DEBUG_ENABLED_MEDICAL true +#define DEBUG_SETTINGS_MEDICAL true #ifdef DEBUG_ENABLED_MEDICAL #define DEBUG_MODE_FULL From 9e1ae58f4f8351a8fd6f945dd7ff749adc7c4ba0 Mon Sep 17 00:00:00 2001 From: bux578 Date: Thu, 3 Sep 2015 18:17:53 +0200 Subject: [PATCH 239/620] fix restore gear --- addons/respawn/functions/fnc_restoreGear.sqf | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/respawn/functions/fnc_restoreGear.sqf b/addons/respawn/functions/fnc_restoreGear.sqf index 7e55c1d8e2..fd3f03d7aa 100644 --- a/addons/respawn/functions/fnc_restoreGear.sqf +++ b/addons/respawn/functions/fnc_restoreGear.sqf @@ -182,15 +182,18 @@ _activeWeapon = _activeWeaponAndMuzzle select 0; _activeMuzzle = _activeWeaponAndMuzzle select 1; _activeWeaponMode = _activeWeaponAndMuzzle select 2; -if (_activeMuzzle != "" and _activeMuzzle != _activeWeapon) then { +if (!(_activeMuzzle isEqualTo "") and + !(_activeMuzzle isEqualTo _activeWeapon) and + (_activeMuzzle in getArray (configfile >> "CfgWeapons" >> _activeWeapon >> "muzzles"))) then { + _unit selectWeapon _activeMuzzle; } else { - if (_activeWeapon != "") then { + if (!(_activeWeapon isEqualTo "")) then { _unit selectWeapon _activeWeapon; }; }; -if (currentWeapon _unit != "") then { +if (!(currentWeapon _unit isEqualTo "")) then { private ["_index"]; _index = 0; while { From b737f42777467a8fc8e1f5eadfd1de3924d6938a Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 3 Sep 2015 18:30:29 +0200 Subject: [PATCH 240/620] fix error when opening triage card --- addons/medical/functions/fnc_displayTriageCard.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_displayTriageCard.sqf b/addons/medical/functions/fnc_displayTriageCard.sqf index 051efbfc70..9849242de1 100644 --- a/addons/medical/functions/fnc_displayTriageCard.sqf +++ b/addons/medical/functions/fnc_displayTriageCard.sqf @@ -66,7 +66,7 @@ if (_show) then { _triageStatus = [_target] call FUNC(getTriageStatus); - _triageStatus params ["_text", "_color"]; + _triageStatus params ["_text", "", "_color"]; (_display displayCtrl 2000) ctrlSetText _text; (_display displayCtrl 2000) ctrlSetBackgroundColor _color; From 89b0c05929ff0387ae74e3b92dcbef421c095297 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Thu, 3 Sep 2015 13:17:59 -0700 Subject: [PATCH 241/620] Fixed a debug statement. --- addons/medical/functions/fnc_handleUnitVitals.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index ca5775cbe8..43a2b1903b 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -44,7 +44,7 @@ if (_bloodVolume < 100) then { }; } } else { - TRACE_4("ACE_DEBUG",_bloodVolume,QGVAR(hasLostBlood),_syncValues,_unit); + TRACE_4("ACE_DEBUG",_bloodVolume,_unit getVariable QGVAR(hasLostBlood),_syncValues,_unit); if (_unit getvariable [QGVAR(hasLostBlood), 0] != 0) then { _unit setvariable [QGVAR(hasLostBlood), 0, true]; }; From 813e54a66825edcbd637603fb939a9836ee5e4ba Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Fri, 4 Sep 2015 07:37:20 -0700 Subject: [PATCH 242/620] Fixing Debug for object variable hasPain --- addons/medical/functions/fnc_handleUnitVitals.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 43a2b1903b..5227bf20d1 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -62,7 +62,7 @@ if (([_unit] call FUNC(getBloodLoss)) > 0) then { }; _painStatus = _unit getvariable [QGVAR(pain), 0]; -TRACE_4("ACE_DEBUG",_painStatus,[_unit] call FUNC(hasPain),_unit getVariable QGVAR(painSuppress),_unit); +TRACE_4("ACE_DEBUG",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(painSuppress),_unit); if (_painStatus > (_unit getvariable [QGVAR(painSuppress), 0])) then { if !(_unit getvariable [QGVAR(hasPain), false]) then { _unit setvariable [QGVAR(hasPain), true, true]; @@ -74,7 +74,7 @@ if (_painStatus > (_unit getvariable [QGVAR(painSuppress), 0])) then { }; if (GVAR(level) == 1) then { - TRACE_5("ACE_DEBUG_BASIC",_painStatus,[_unit] call FUNC(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); + TRACE_5("ACE_DEBUG_BASIC",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); // reduce pain if (_painStatus > 0) then { _unit setVariable [QGVAR(pain), (_painStatus - 0.001 * _interval) max 0, _syncValues]; @@ -97,7 +97,7 @@ if (GVAR(level) == 1) then { // handle advanced medical, with vitals if (GVAR(level) >= 2) then { - TRACE_6("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_bloodVolume, [_unit] call FUNC(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); + TRACE_6("ACE_DEBUG_ADVANCED_VITALS",_painStatus,_bloodVolume, _unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); if (_bloodVolume < 30) exitwith { [_unit] call FUNC(setDead); }; From 2bc20501bc5ada7fca85c2979bef3f21682719e1 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Fri, 4 Sep 2015 07:46:35 -0700 Subject: [PATCH 243/620] Adding more debug --- addons/medical/XEH_postInit.sqf | 3 +++ addons/medical/functions/fnc_handleDamage.sqf | 13 ++++--------- addons/medical/functions/fnc_handleDamage_basic.sqf | 4 ++++ addons/medical/functions/fnc_unconsciousPFH.sqf | 7 +++++++ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index d55a66d2b1..e6e2ca5ceb 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -259,6 +259,7 @@ if (USE_WOUND_EVENT_SYNC) then { ["SettingsInitialized", { if (GVAR(level) == 2) exitwith { + TRACE_6("ACE_DEBUG: SettingsInitialized_EH_ADVANCED",(_this select 0), GVAR(level),(_this select 0) getvariable QGVAR(bloodVolume),(_this select 0) getvariable QGVAR(pain), (_this select 0) getvariable QGVAR(painSuppress), [_this select 0] call FUNC(getBloodLoss)); [ {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 65)}, {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.9}, @@ -270,6 +271,8 @@ if (USE_WOUND_EVENT_SYNC) then { ] call FUNC(addUnconsciousCondition); }; + TRACE_6("ACE_DEBUG: SettingsInitialized_EH_BASIC",(_this select 0), GVAR(level),(_this select 0) getvariable QGVAR(bloodVolume),(_this select 0) getvariable QGVAR(pain), (_this select 0) getvariable QGVAR(painSuppress), [_this select 0] call FUNC(getBloodLoss)); + [ {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 40)}, {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.6}, diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index 9b612757b4..7226926700 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -17,12 +17,11 @@ #include "script_component.hpp" params ["_unit", "_selection", "_damage", "_shooter", "_projectile"]; +TRACE_5("ACE_DEBUG: HandleDamage Called",_unit, _selection, _damage, _shooter, _projectile); // bug, apparently can fire for remote units in special cases if !(local _unit) exitWith { - #ifdef DEBUG_ENABLED_MEDICAL - ACE_LOGDEBUG_3("HandleDamage on remote unit! - %1 - %2 - %3", diag_frameno, _unit, isServer); - #endif + TRACE_2("ACE_DEBUG: HandleDamage on remote unit!",_unit, isServer); nil }; @@ -34,9 +33,7 @@ private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_ _this set [4, _projectile]; };*/ -#ifdef DEBUG_ENABLED_MEDICAL - ACE_LOGDEBUG_3("HandleDamage - %1 - %2 - %3", diag_frameno, _selection, _damage); -#endif +TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage, _unit); // If damage is in dummy hitpoints, "hands" and "legs", don't change anything if (_selection == "hands") exitWith {_unit getHit "hands"}; @@ -52,9 +49,7 @@ if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { } else { _unit getHit _selection }; - #ifdef DEBUG_ENABLED_MEDICAL - ACE_LOGDEBUG_3("HandleDamage damage disabled. - %1 - %2 - %3", diag_frameno, _unit, _selection); - #endif + TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit, _unit); }; //if (true) exitWith {nil};// diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index cf53ac100f..a37ccea2b3 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -14,11 +14,14 @@ private ["_damageBodyParts", "_cache_params", "_cache_damages"]; params ["_target"]; +TRACE_1("ACE_DEBUG: HandleDamage_BASIC Called",_target); _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; _cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; _cache_damages = _target getVariable QGVAR(cachedDamages); +TRACE_4("ACE_DEBUG: HandleDamage BASIC",_unit, _damageBodyParts,_cache_params,_cache_damages); + { _x params ["_unit","_selectionName","_amountOfDamage","_sourceOfDamage","_typeOfProjectile","_typeOfDamage"]; if !(isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) then { @@ -44,6 +47,7 @@ _cache_damages = _target getVariable QGVAR(cachedDamages); // We broadcast the value across the net here, in order to avoid broadcasting it multiple times earlier in the above code block _target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; +TRACE_2("ACE_DEBUG: HandleDamage BASIC Broadcast value here",_unit, _target getvariable QGVAR(bodyPartStatus)); EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); _target setHitPointDamage ["hitHead", _headDamage min 0.95]; diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf index f230b9dbf8..0e8c424ca3 100644 --- a/addons/medical/functions/fnc_unconsciousPFH.sqf +++ b/addons/medical/functions/fnc_unconsciousPFH.sqf @@ -23,6 +23,8 @@ private ["_unit", "_minWaitingTime", "_slotInfo", "_hasMovedOut", "_parachuteChe params ["_args", "_idPFH"]; _args params ["_unit", "_originalPos", "_startingTime", "_minWaitingTime", "_hasMovedOut", "_parachuteCheck"]; +TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _originalPos, _startingTime, _minWaitingTime, _hasMovedOut, _parachuteCheck); + if (!alive _unit) exitwith { if ("ACE_FakePrimaryWeapon" in (weapons _unit)) then { TRACE_1("Removing fake weapon [on death]",_unit); @@ -39,11 +41,14 @@ if (!alive _unit) exitwith { [_unit, "isUnconscious"] call EFUNC(common,unmuteUnit); ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent); + TRACE_3("ACE_DEBUG_Unconscious_Exit",_unit, (!alive _unit) , QGVAR(unconscious)); + [_idPFH] call CBA_fnc_removePerFrameHandler; }; // In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith { + TRACE_7("ACE_DEBUG_Unconscious_PFH",_unit, _args, [_unit] call FUNC(isBeingCarried), [_unit] call FUNC(isBeingDragged), _idPFH, _unit getvariable QGVAR(unconsciousArguments),animationState _unit); // TODO, handle this with carry instead, so we can remove the PFH here. // Wait until the unit isn't being carried anymore, so we won't end up with wierd animations if !(([_unit] call FUNC(isBeingCarried)) || ([_unit] call FUNC(isBeingDragged))) then { @@ -124,6 +129,7 @@ if (_parachuteCheck) then { }; if (!local _unit) exitwith { + TRACE_6("ACE_DEBUG_Unconscious_PFH",_unit, _args, _startingTime, _minWaitingTime, _idPFH, _unit getvariable QGVAR(unconsciousArguments)); _args set [3, _minWaitingTime - (ACE_time - _startingTime)]; _unit setvariable [QGVAR(unconsciousArguments), _args, true]; [_idPFH] call CBA_fnc_removePerFrameHandler; @@ -131,6 +137,7 @@ if (!local _unit) exitwith { // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs if ((ACE_time - _startingTime) >= _minWaitingTime) exitwith { + TRACE_2("ACE_DEBUG_Unconscious_Temp knock outs",_unit, [_unit] call FUNC(getUnconsciousCondition)); if (!([_unit] call FUNC(getUnconsciousCondition))) then { _unit setvariable ["ACE_isUnconscious", false, true]; }; From bf267246bf50697943af3b95d0b05d0e4ce14cf9 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Fri, 4 Sep 2015 07:48:16 -0700 Subject: [PATCH 244/620] Adding same ADV special case to BASIC handle damage. --- addons/medical/functions/fnc_handleDamage_basic.sqf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index a37ccea2b3..48786b4686 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -16,6 +16,12 @@ private ["_damageBodyParts", "_cache_params", "_cache_damages"]; params ["_target"]; TRACE_1("ACE_DEBUG: HandleDamage_BASIC Called",_target); +// bug, apparently can fire for remote units in special cases +if !(local _unit) exitWith { + TRACE_2("HandleDamage BASIC on remote unit!",_unit, isServer); + nil +}; + _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; _cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; _cache_damages = _target getVariable QGVAR(cachedDamages); From 7f58d5a94d5fa335be89017b34cbdb0c7d656872 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Fri, 4 Sep 2015 10:20:34 -0700 Subject: [PATCH 245/620] Revert "Adding same ADV special case to BASIC handle damage." -Not Needed This reverts commit bf267246bf50697943af3b95d0b05d0e4ce14cf9. --- addons/medical/functions/fnc_handleDamage_basic.sqf | 6 ------ 1 file changed, 6 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index 48786b4686..a37ccea2b3 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -16,12 +16,6 @@ private ["_damageBodyParts", "_cache_params", "_cache_damages"]; params ["_target"]; TRACE_1("ACE_DEBUG: HandleDamage_BASIC Called",_target); -// bug, apparently can fire for remote units in special cases -if !(local _unit) exitWith { - TRACE_2("HandleDamage BASIC on remote unit!",_unit, isServer); - nil -}; - _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; _cache_params = _target getVariable [QGVAR(cachedHandleDamageParams), []]; _cache_damages = _target getVariable QGVAR(cachedDamages); From 4c0c7bc290faaada790b11d6932222bc9f3958b9 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Fri, 4 Sep 2015 10:21:10 -0700 Subject: [PATCH 246/620] debug change --- addons/medical/functions/fnc_handleUnitVitals.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf index 5227bf20d1..fddf5489da 100644 --- a/addons/medical/functions/fnc_handleUnitVitals.sqf +++ b/addons/medical/functions/fnc_handleUnitVitals.sqf @@ -74,7 +74,7 @@ if (_painStatus > (_unit getvariable [QGVAR(painSuppress), 0])) then { }; if (GVAR(level) == 1) then { - TRACE_5("ACE_DEBUG_BASIC",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); + TRACE_5("ACE_DEBUG_BASIC_VITALS",_painStatus,_unit getVariable QGVAR(hasPain),_unit getVariable QGVAR(morphine),_syncValues,_unit); // reduce pain if (_painStatus > 0) then { _unit setVariable [QGVAR(pain), (_painStatus - 0.001 * _interval) max 0, _syncValues]; From 9f416b796ce00f52590596b43fde3dc097cb41ad Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 02:07:26 +0300 Subject: [PATCH 247/620] Fix due ti review --- addons/common/stringtable.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index a36ab7d3a9..8aa895a35d 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -691,32 +691,32 @@ ACE3 Equipment ACE3 Wyposażenie - ACE3: Снаряжение + ACE3 Снаряжение ACE3 Common ACE3 Ogólne - ACE3: Общие + ACE3 Общие ACE3 Weapons ACE3 Broń - ACE3: Оружие + ACE3 Оружие ACE3 Movement ACE3 Ruch - ACE3: Перемещение + ACE3 Перемещение ACE3 Scope Adjustment ACE3 Regulacja optyki - ACE3: Прицелы + ACE3 Прицелы ACE3 Vehicles ACE3 Pojazdy - ACE3: Транспорт + ACE3 Транспорт - \ No newline at end of file + From 421f7bc6f83281767aea7ba307831c4d8f8a4f5f Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 04:38:39 +0300 Subject: [PATCH 248/620] Fix due to review --- addons/frag/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index 1c76af3f94..51d0071030 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -79,7 +79,7 @@ Počet úlomků v daném snímku. Toto pomáhá rozšířit FPS dopad sledovaného úlomku napříč více snímky, omezuje jeho vliv ještě více. O número de cálculos por estilhaço rastreado para executar em qualquer quadro. Isso ajuda a distribuir o impacto no FPS do rastreamento de estilhaço em vários quadros, o que limita o seu impacto ainda mais. A lepattogzási útvonalak számításának darabjai képkockánként. Ez eloszlatja az FPS-megszakadást több képkockára, ezzel csökkentve a súlyosságát. - Число обсчитываемых осколков за один кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. + Число обрабатываемых осколков за кадр. Это позволяет распределить нагрузку по отслеживанию осколков между несколькими кадрами, чтобы предотвратить падение FPS. (SP Only) Frag/Spall Debug Tracing @@ -102,4 +102,4 @@ (Только для одиночной игры) Требует перезапуска миссии/редактора. Включает визуальные следы от осколков и обломков в режиме одиночной игры. - \ No newline at end of file + From f69b94af98a67dabe64e80c85a8cb0358fc5d60a Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 04:53:30 +0300 Subject: [PATCH 249/620] Fix due to review --- addons/mk6mortar/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 22e4ed5244..ff342c1847 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -124,7 +124,7 @@ Dieses Modul erlaubt das Einstellen des MK6-Mörsers. Tento modul umožňuje nastavení minometu MK6. Este módulo permite que você ajuste o morteiro MK6. - Модуль настройки миномета MK6 + Модуль настройки миномета MK6. - \ No newline at end of file + From 6f7437bb80c38e5e8c9265866f9bc4e0e44e138b Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 04:57:07 +0300 Subject: [PATCH 250/620] Fix due to review --- addons/optionsmenu/stringtable.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 41026c8912..148dc06147 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -275,7 +275,7 @@ Vpravo nahoře, dolů Superior direito, para baixo Jobb felül, lefele - Справа - сверху вниз + Справа — сверху вниз Top right, to the left @@ -285,7 +285,7 @@ Vpravo nahoře, do leva Superior direito, à esquerda Jobb felül, balra - Сверху - справа налево + Сверху — справа налево Top left, downwards @@ -305,7 +305,7 @@ Vlevo nahoře, do prava Superior esquerdo, para a direita Bal felül, jobbra - Сверху - слева направо + Сверху — слева направо Top @@ -390,4 +390,4 @@ Логистика - \ No newline at end of file + From 85b0127f563a9ce734897db95d41de17d1da49e3 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:00:18 +0300 Subject: [PATCH 251/620] Fix due to review --- addons/repair/stringtable.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 4ee3d680d7..de69421fae 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -42,7 +42,7 @@ Replacing Wheel ... Ersetze Reifen ... Wymienianie koła ... - Замена колеса... + Замена колеса ... Wheel replaced @@ -66,7 +66,7 @@ Removing Wheel ... Entferne Reifen ... Zdejmowanie koła ... - Снятие колеса... + Снятие колеса ... Wheel removed @@ -82,7 +82,7 @@ Replacing Track ... Wymienianie gąsienicy ... - Замена гусеницы... + Замена гусеницы ... Track replaced @@ -97,7 +97,7 @@ Removing Track ... Zdejmowanie gąsienicy ... - Снятие гусеницы... + Снятие гусеницы ... Track removed @@ -112,7 +112,7 @@ Repairing Vehicle ... Naprawianie pojazdu ... - Ремонт транспорта... + Ремонт транспорта ... Full Repair Locations @@ -731,4 +731,4 @@ Назначить один или несколько объектов ремонтными сооружениями - \ No newline at end of file + From 6c48a4a0defec34bfbebc18047f70377f7590401 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:07:18 +0300 Subject: [PATCH 252/620] Fix due to review --- addons/respawn/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index d4063e0816..0055860e28 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -210,7 +210,7 @@ Upozornění na přátelskou střelbu Mensagens de fogo amigo Baráti tűz üzenetek - Сообщения о дружественном огне (Friendly Fire) + Сообщения об огне по своим Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. @@ -255,4 +255,4 @@ ACE Возрождение - \ No newline at end of file + From 8ef007b7273afa1e7d1b3fc6f624bfaf983be2ad Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:08:16 +0300 Subject: [PATCH 253/620] Fix due to review --- addons/viewdistance/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 8872cd603e..56d52c4bd4 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -239,7 +239,7 @@ Diese Option ist ungültig! Die Grenze ist Essa opção é inválida. O limte é Ez a beállítás érvénytelen! A maximum mennyiség - Настройка не верна! Текущий предел: + Настройка не верна! Текущий предел Video Settings @@ -252,4 +252,4 @@ Видео настройки - \ No newline at end of file + From 1bad390dba9cf3732b785d4fb9cae64cda9e5064 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:09:47 +0300 Subject: [PATCH 254/620] Fix due to review --- addons/weather/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index e0733a73ff..44b0e66736 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -131,7 +131,7 @@ Synchronizace blesků, duhy, mlhy, ... Sincroniza relâmpagos, arco-íris, neblina... Szinkronizálja a villámokat, szivárványokat, ködöt, ... - Синхронизирует молнии, радугу, туман... + Синхронизирует молнии, радугу, туман, ... Update Interval @@ -154,4 +154,4 @@ Определяет интервал (в секундах) между обновлениями погоды - \ No newline at end of file + From ce49f752f125f867df6e615e287cf8b40b12635a Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:14:34 +0300 Subject: [PATCH 255/620] Fix due to review --- addons/winddeflection/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index c12a99a8a5..f5a824bba6 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -109,7 +109,7 @@ Umožnit vliv větru pro střelce z vozidla/statiky Ativa o desvio de vento para atiradores de estáticas e veículos Engedélyezi a szél-hárítást a statikus/jármű-lövészeknél - Включает отклонение ветром для стрелков статичных орудий и транспортных средств + Включает отклонение ветром для стрелков стационарных орудий и техники Simulation Interval @@ -162,4 +162,4 @@ Влияние втера на траекторию снарядов - \ No newline at end of file + From 298b475433d1c2d4cb0606d9a8a7ff3f081df460 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:15:29 +0300 Subject: [PATCH 256/620] Fix due to review --- addons/zeus/stringtable.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 26da92d3d9..0fc63c417c 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -19,7 +19,7 @@ Bietet die Steuerung verschiedener Zeus-Optionen an. Proporciona controle sobre diversos aspectos do Zeus. Különböző beállítási lehetőségeket biztosít a Zeus részeihez. - Обеспечивает контроль над различными аспектами работы Зевса + Обеспечивает контроль над различными аспектами работы Зевса. Ascension Messages @@ -39,7 +39,7 @@ Zeige globale Popup-Nachrichten wenn ein Spieler zu Zeus wird. Mostra uma mensagem popup quando um jogador é atribuido ao Zeus. Globális üzeneteket jelez ki, ha egy játékos Zeus-nak lesz beosztva. - Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом + Отображает глобальное всплывающее сообщение, когда один из игроков становится Зевсом. Zeus Eagle @@ -263,4 +263,4 @@ Добавляет любой отспавненный объект всем кураторам в миссии - \ No newline at end of file + From cc9a566c15a7bf0b59eefe45669e66a4c904cf22 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:23:27 +0300 Subject: [PATCH 257/620] Fix due to review --- addons/missionmodules/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index c1c847d051..13c97f7e59 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -168,7 +168,7 @@ Smyčka okkolního zvuku (synchronizováno v MP) Loop de sons ambientes (sincronizados através do MP) Ambiens hangok folyamatossága (MP alatt szinkronizálva) - Циклически воспроизодимые звуки окружения (синхронизируется по сети между игроками в мультиплеере) + Циклически воспроизводимые звуки окружения (синх. между игроками) - \ No newline at end of file + From 085b60bddd6bb2ed5fd465089a44f358f021c0c8 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 5 Sep 2015 05:45:25 +0300 Subject: [PATCH 258/620] Added some name to AUTHORS.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index 80046475ff..caa19109a7 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -52,6 +52,7 @@ Crusty Dharma Bellamkonda Dimaslg Drill +Dudakov eRazeri evromalarkey F3 Project From 3d342ece206108f3557aae0e51441002cf8620f0 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:04:11 +0200 Subject: [PATCH 259/620] Fixes #2156 Animation is still played even if you cancel any treatment --- addons/medical/functions/fnc_treatment_failure.sqf | 3 +-- addons/medical/functions/fnc_treatment_success.sqf | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf index b31a9fd0de..e943485e0e 100644 --- a/addons/medical/functions/fnc_treatment_failure.sqf +++ b/addons/medical/functions/fnc_treatment_failure.sqf @@ -35,8 +35,7 @@ if (vehicle _caller == _caller) then { case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; - [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); - [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); + [_caller, _lastAnim, 2] call EFUNC(common,doAnimation); }; _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index d32f63468e..bf183e24db 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -35,7 +35,7 @@ if (vehicle _caller == _caller) then { case "ainvppnemstpslaywpstdnon_medic": {_lastAnim = "AinvPpneMstpSlayWpstDnon"}; case "ainvpknlmstpslaywpstdnon_medic": {_lastAnim = "AmovPknlMstpSrasWpstDnon"}; }; - [_caller, _lastAnim, 1] call EFUNC(common,doAnimation); + [_caller, _lastAnim, 2] call EFUNC(common,doAnimation); }; _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil]; From a25f640614b552d5c84f527f002ffe01dcea4625 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:07:10 +0200 Subject: [PATCH 260/620] fixes #2114 No CPR available in basic medical when revive is enabled --- addons/medical/ACE_Medical_Treatments.hpp | 22 +++++++++++++++++++ .../fnc_treatmentAdvanced_CPRLocal.sqf | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 3dedd39b81..a97b149917 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -105,6 +105,28 @@ class ACE_Medical_Actions { itemConsumed = 0; litter[] = {}; }; + class CPR: Bandage { + displayName = CSTRING(Actions_CPR); + displayNameProgress = CSTRING(Actions_PerformingCPR); + category = "advanced"; + treatmentLocations[] = {"All"}; + allowedSelections[] = {"body"}; + requiredMedic = 0; + treatmentTime = 15; + items[] = {}; + condition = QUOTE(!([(_this select 1)] call ace_common_fnc_isAwake) && GVAR(enableRevive)); + callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR)); + callbackFailure = ""; + callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)"; + animationPatient = ""; + animationPatientUnconscious = "AinjPpneMstpSnonWrflDnon_rolltoback"; + animationCaller = "AinvPknlMstpSlayWnonDnon_medic"; + animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; + animationCallerSelf = ""; + animationCallerSelfProne = ""; + itemConsumed = 0; + litter[] = {}; + }; }; class Advanced { diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index cd943fc8d0..818640ca07 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -24,7 +24,7 @@ if (_target getvariable [QGVAR(inReviveState), false]) then { }; }; -if ((random 1) >= 0.6) then { +if (GVAR(level) > 1 && {(random 1) >= 0.6}) then { _target setvariable [QGVAR(inCardiacArrest), nil,true]; _target setvariable [QGVAR(heartRate), 40]; _target setvariable [QGVAR(bloodPressure), [50,70]]; From df3dbc9772af6980e6ac03e95a732e47c6e2788b Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:25:31 +0200 Subject: [PATCH 261/620] Removed deprecated fire handling --- addons/medical/functions/fnc_handleDamage_advanced.sqf | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf index f928732bba..214d291e86 100644 --- a/addons/medical/functions/fnc_handleDamage_advanced.sqf +++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf @@ -22,8 +22,6 @@ private ["_typeOfProjectile", "_part", "_damageBodyParts", "_hitPoints"]; params ["_unit", "_selectionName", "_amountOfDamage", "_sourceOfDamage", "_typeOfProjectile", "_newDamage"]; -// Most likely taking exessive fire damage. Lets exit. -if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _unit} && {(_selectionName == "head" || isBurning _unit)}) exitwith {}; _part = [_selectionName] call FUNC(selectionNameToNumber); if (_part < 0) exitwith {}; From cd9e5df7825161fe0cb97f1dd80d06d0e548d304 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:25:56 +0200 Subject: [PATCH 262/620] Clean up of handleDamage. Fixes some debug code --- addons/medical/functions/fnc_handleDamage.sqf | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index 7226926700..fe06a47e9a 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -28,10 +28,10 @@ if !(local _unit) exitWith { private ["_damageReturn", "_typeOfDamage", "_minLethalDamage", "_newDamage", "_typeIndex", "_preventDeath"]; // bug, assumed fixed, @todo excessive testing, if nothing happens remove -/*if (typeName _projectile == "OBJECT") then { +if (typeName _projectile == "OBJECT") then { _projectile = typeOf _projectile; _this set [4, _projectile]; -};*/ +}; TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage, _unit); @@ -44,16 +44,14 @@ if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@to // Exit if we disable damage temporarily if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { + TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit, _unit); if (_selection == "") then { damage _unit } else { _unit getHit _selection }; - TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit, _unit); }; -//if (true) exitWith {nil};// - // Get return damage _damageReturn = _damage; From 4514812523b21b212715c70969bd635f26a34f1d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:51:46 +0200 Subject: [PATCH 263/620] Basic bandaging now works with new damage system --- addons/medical/XEH_preInit.sqf | 1 + .../functions/fnc_treatmentBasic_bandage.sqf | 11 +---- .../fnc_treatmentBasic_bandageLocal.sqf | 44 +++++++++++++++++++ 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf index 838dce7404..2625bf4b8a 100644 --- a/addons/medical/XEH_preInit.sqf +++ b/addons/medical/XEH_preInit.sqf @@ -84,6 +84,7 @@ PREP(treatmentAdvanced_medication); PREP(treatmentAdvanced_medicationLocal); PREP(treatmentAdvanced_surgicalKit_onProgress); PREP(treatmentBasic_bandage); +PREP(treatmentBasic_bandageLocal); PREP(treatmentBasic_bloodbag); PREP(treatmentBasic_bloodbagLocal); PREP(treatmentBasic_epipen); diff --git a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf index c0ebc35472..04cace08af 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandage.sqf @@ -20,13 +20,4 @@ private ["_hitSelections", "_hitPoints", "_point", "_damage"]; params ["_caller", "_target", "_selection", "_className"]; -if (_selection == "all") then { - _target setDamage ((damage _target - BANDAGEHEAL) max 0); -} else { - _hitSelections = ["head", "body", "hand_l", "hand_r", "leg_l", "leg_r"]; - _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; - _point = _hitPoints select (_hitSelections find _selection); - - _damage = ((_target getHitPointDamage _point) - BANDAGEHEAL) max 0; - [_target, _point, _damage] call FUNC(setHitPointDamage); -}; +[[_target, _selection], QUOTE(DFUNC(treatmentBasic_bandageLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ diff --git a/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf new file mode 100644 index 0000000000..4f94622947 --- /dev/null +++ b/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf @@ -0,0 +1,44 @@ +/* + * Author: Glowbal + * Handles the bandage of a patient. + * + * Arguments: + * 0: The patient + * 1: Treatment classname + * + * + * Return Value: + * Succesful treatment started + * + * Public: No + */ + +#include "script_component.hpp" +#define BANDAGEHEAL 0.8 + +params ["_target", "_selectionName"]; + +_damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; + +// Ensure it is a valid bodypart +_part = [_selectionName] call FUNC(selectionNameToNumber); +if (_part < 0) exitwith {false}; + +if ((_damageBodyParts select _part) > 0) then { + _damageBodyParts set [_part, ((_damageBodyParts select _part) - BANDAGEHEAL) max 0]; + _target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; + TRACE_2("ACE_DEBUG: Treatment BASIC Bandage Broadcast value here",_unit, _target getvariable QGVAR(bodyPartStatus)); +}; +systemChat format["BANDAGE LOCAL RAN: %1", _this]; + +EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); +_target setHitPointDamage ["hitHead", _headDamage min 0.95]; +_target setHitPointDamage ["hitBody", _torsoDamage min 0.95]; +_target setHitPointDamage ["hitHands", (_handsDamageR + _handsDamageL) min 0.95]; +_target setHitPointDamage ["hitLegs", (_legsDamageR + _legsDamageL) min 0.95]; + +{ + _target setHitPointDamage [_x, (_damageBodyParts select _foreachIndex) min 0.95]; +}foreach GVAR(HITPOINTS); + +true; From 39ff82e76454eece7b57d351fb74073f95b7ca4d Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:52:12 +0200 Subject: [PATCH 264/620] fixes for CPR condition in basic medical and improvements to lethalDamage --- addons/medical/ACE_Medical_Treatments.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index a97b149917..9f796bcb06 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -114,7 +114,7 @@ class ACE_Medical_Actions { requiredMedic = 0; treatmentTime = 15; items[] = {}; - condition = QUOTE(!([(_this select 1)] call ace_common_fnc_isAwake) && GVAR(enableRevive)); + condition = QUOTE(!([(_this select 1)] call ace_common_fnc_isAwake) && GVAR(enableRevive)>0); callbackSuccess = QUOTE(DFUNC(treatmentAdvanced_CPR)); callbackFailure = ""; callbackProgress = "!([((_this select 0) select 1)] call ace_common_fnc_isAwake)"; @@ -627,6 +627,7 @@ class ACE_Medical_Advanced { class vehiclecrash { thresholds[] = {{0.25, 5}}; selectionSpecific = 0; + lethalDamage = 0.2; }; class backblast { thresholds[] = {{0, 2},{0.55, 5}, {1, 6}}; @@ -644,6 +645,7 @@ class ACE_Medical_Advanced { class falling { thresholds[] = {{0.1, 1}}; selectionSpecific = 1; + lethalDamage = 0.4; }; class ropeburn { thresholds[] = {{0.1, 1}}; From 130569c485491a56d28ce359cebde5bdef3b1597 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:57:17 +0200 Subject: [PATCH 265/620] Made basic medical bleeding information work with new damage system --- addons/medical/functions/fnc_modifyMedicalAction.sqf | 2 +- addons/medical_menu/functions/fnc_updateUIInfo.sqf | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/addons/medical/functions/fnc_modifyMedicalAction.sqf b/addons/medical/functions/fnc_modifyMedicalAction.sqf index 1ac709059f..8feaa7bfca 100644 --- a/addons/medical/functions/fnc_modifyMedicalAction.sqf +++ b/addons/medical/functions/fnc_modifyMedicalAction.sqf @@ -21,7 +21,7 @@ params ["_target", "_player", "_selectionN", "_actionData"]; if (GVAR(level) < 2) exitwith { private ["_pointDamage"]; - _pointDamage = _target getHitPointDamage (["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"] select _selectionN); + _pointDamage = (_target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]) select _selectionN; if (_pointDamage >= 0.8) exitWith { _actionData set [2, QUOTE(PATHTOF(UI\icons\medical_crossRed.paa))]; diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf index 7dee2d5123..3a41412cbb 100644 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -105,11 +105,12 @@ if (EGVAR(medical,level) >= 2) then { } forEach _bandagedwounds; } else { _damaged = [true, true, true, true, true, true]; - { - _selectionBloodLoss set [_forEachIndex, _target getHitPointDamage _x]; - if (_target getHitPointDamage _x > 0 && _forEachIndex == _selectionN) then { - _pointDamage = _target getHitPointDamage _x; + { + _selectionBloodLoss set [_forEachIndex, _x]; + + if (_x > 0 && _forEachIndex == _selectionN) then { + _pointDamage = _x; _severity = switch (true) do { case (_pointDamage > 0.5): {localize ELSTRING(medical,HeavilyWounded)}; case (_pointDamage > 0.1): {localize ELSTRING(medical,LightlyWounded)}; @@ -125,7 +126,7 @@ if (EGVAR(medical,level) >= 2) then { ] select _forEachIndex); _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; }; - } forEach ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"]; + } forEach (_target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]); }; [_selectionBloodLoss, _display] call FUNC(updateBodyImage); From 85dc59d66cc9a4852abf9ac7cb55e012f62861a4 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:57:41 +0200 Subject: [PATCH 266/620] Fixed: should only display "no injuries" when there are no injuries. Not the other way around --- addons/medical_menu/functions/fnc_updateInformationLists.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical_menu/functions/fnc_updateInformationLists.sqf b/addons/medical_menu/functions/fnc_updateInformationLists.sqf index 70903347b5..ecd700e43a 100644 --- a/addons/medical_menu/functions/fnc_updateInformationLists.sqf +++ b/addons/medical_menu/functions/fnc_updateInformationLists.sqf @@ -33,6 +33,6 @@ _amountOfGeneric = count _genericMessages; _lbCtrl lbSetColor [_forEachIndex + _amountOfGeneric, _color]; } forEach _allInjuryTexts; -if !(_allInjuryTexts isEqualTo []) then { +if (_allInjuryTexts isEqualTo []) then { _lbCtrl lbAdd localize ELSTRING(medical,NoInjuriesBodypart); }; From 883b9ab5457d9cdc750cf171a015a88b666fbddb Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 11:58:34 +0200 Subject: [PATCH 267/620] Removed blur screen for medical menu #2069 --- addons/medical_menu/ui/menu.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index ab078d4c72..4a07778bd1 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -3,8 +3,8 @@ class GVAR(medicalMenu) { idd = 314412; movingEnable = true; - onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [ARR_2(QUOTE(QGVAR(id)), true)] call EFUNC(common,blurScreen); [_this select 0] call FUNC(onMenuOpen);); - onUnload = QUOTE([ARR_2(QUOTE(QGVAR(id)), false)] call EFUNC(common,blurScreen); [GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler;); + onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [_this select 0] call FUNC(onMenuOpen);); + onUnload = QUOTE([GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler;); class controlsBackground { class HeaderBackground: ACE_gui_backgroundBase{ idc = -1; From e0db571e13eae6f669baa6c4b1fc27a296799b55 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:00:45 +0200 Subject: [PATCH 268/620] Minor adjustment to fatality change on torso damage --- addons/medical/functions/fnc_determineIfFatal.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_determineIfFatal.sqf b/addons/medical/functions/fnc_determineIfFatal.sqf index 939bf8c9b7..10a64d79a6 100644 --- a/addons/medical/functions/fnc_determineIfFatal.sqf +++ b/addons/medical/functions/fnc_determineIfFatal.sqf @@ -38,7 +38,7 @@ if (_part == 0) exitwith { // Check if damage to body part is higher as damage torso if (_part == 1) exitwith { - (_damageBodyPart >= (_damageThreshold select 1) && {(random(1) > 0.2)}); + (_damageBodyPart >= (_damageThreshold select 1) && {(random(1) > 0.35)}); }; // Check if damage to body part is higher as damage limbs (_damageBodyPart >= (_damageThreshold select 2) && {(random(1) > 0.95)}); From 4122b32dba03b8585bfb0f4b5e3f1a1769898714 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:02:09 +0200 Subject: [PATCH 269/620] Removed deprecated wound sync code --- addons/medical/functions/fnc_handleKilled.sqf | 7 ------- 1 file changed, 7 deletions(-) diff --git a/addons/medical/functions/fnc_handleKilled.sqf b/addons/medical/functions/fnc_handleKilled.sqf index d4fbfee30a..d6a4440d76 100644 --- a/addons/medical/functions/fnc_handleKilled.sqf +++ b/addons/medical/functions/fnc_handleKilled.sqf @@ -22,11 +22,4 @@ if (GVAR(level) >= 2) then { _unit setvariable [QGVAR(heartRate), 0]; _unit setvariable [QGVAR(bloodPressure), [0, 0]]; _unit setvariable [QGVAR(airwayStatus), 0]; - - if (USE_WOUND_EVENT_SYNC) then { - _openWounds = _unit getvariable [QGVAR(openWounds), []]; - { - ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); - }foreach _openWounds; - }; }; From 268220bbaeaa30c1c050fd052d4b42421b4579d8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:20:40 +0200 Subject: [PATCH 270/620] Possible fix for weird unconscious behavior in basic medical --- addons/medical/functions/fnc_addToInjuredCollection.sqf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf index 66433a5ed0..0ed9b9747f 100644 --- a/addons/medical/functions/fnc_addToInjuredCollection.sqf +++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf @@ -45,9 +45,12 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then { private "_pain"; _pain = _unit getvariable [QGVAR(pain), 0]; if (_pain > (_unit getvariable [QGVAR(painSuppress), 0])) then { - if (_pain > 0.7 && {random(1) > 0.6}) then { + // This introduces wierd unconscious behaviour for basic medical and possibly also advanced. + // TODO This is disabled as it's considered non critical code. + // We will need to decide if we want unconscious triggered on high pain levels or if we can get rid of this entirely. + /*if (_pain > 0.7 && {random(1) > 0.6}) then { [_unit] call FUNC(setUnconscious); - }; + };*/ [_unit, _pain] call FUNC(playInjuredSound); }; From 6b73eafcce52acd23659d570993ff3f0d30dbc6a Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:31:52 +0200 Subject: [PATCH 271/620] Allow users to disable medical 3d interaction. --- addons/medical/ACE_Settings.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp index 910f152292..b17610b0e3 100644 --- a/addons/medical/ACE_Settings.hpp +++ b/addons/medical/ACE_Settings.hpp @@ -220,7 +220,7 @@ class ACE_Settings { description = CSTRING(menuTypeDescription); typeName = "SCALAR"; value = 0; - values[] = {CSTRING(useSelection)/*, CSTRING(useRadial)*/}; - // isClientSettable = 1; + values[] = {CSTRING(useSelection), CSTRING(useRadial), "Disabled"}; + isClientSettable = 1; }; }; From 25a75b9f690e4855669e7adb0beee7a20ef2971f Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:35:48 +0200 Subject: [PATCH 272/620] fixed incorrect macro usage --- addons/medical_menu/functions/fnc_updateUIInfo.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical_menu/functions/fnc_updateUIInfo.sqf b/addons/medical_menu/functions/fnc_updateUIInfo.sqf index 3a41412cbb..b493b5026e 100644 --- a/addons/medical_menu/functions/fnc_updateUIInfo.sqf +++ b/addons/medical_menu/functions/fnc_updateUIInfo.sqf @@ -126,7 +126,7 @@ if (EGVAR(medical,level) >= 2) then { ] select _forEachIndex); _allInjuryTexts pushBack [format ["%1 %2", _severity, toLower _part], [1,1,1,1]]; }; - } forEach (_target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]); + } forEach (_target getvariable [QEGVAR(medical,bodyPartStatus), [0,0,0,0,0,0]]); }; [_selectionBloodLoss, _display] call FUNC(updateBodyImage); From 17648739ddcf77dc4e7eb3164fc0545b5ad3f40e Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:37:01 +0200 Subject: [PATCH 273/620] Removed more deprecated wound sync code --- .../functions/fnc_handleDamage_woundsOld.sqf | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf index 0c08d1e884..0a37952d12 100644 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -121,19 +121,7 @@ _woundsCreated = []; }; } foreach (_injuryTypeInfo select 0); // foreach damage thresholds -_unit setvariable [QGVAR(openWounds), _openWounds, !USE_WOUND_EVENT_SYNC]; - -// Only update if new wounds have been created -if (count _woundsCreated > 0) then { -// _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; -}; - -if (USE_WOUND_EVENT_SYNC) then { - // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries. - { - // ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent); - }foreach _woundsCreated; -}; +_unit setvariable [QGVAR(openWounds), _openWounds, true]; _painLevel = _unit getvariable [QGVAR(pain), 0]; _unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; From c673ea2cbbb10e495e7073f21fb93630eb250023 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:38:12 +0200 Subject: [PATCH 274/620] Restored uniqueIds --- addons/medical/functions/fnc_handleDamage_woundsOld.sqf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf index 0a37952d12..cbc28dcca9 100644 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -123,5 +123,10 @@ _woundsCreated = []; _unit setvariable [QGVAR(openWounds), _openWounds, true]; +// Only update if new wounds have been created +if (count _woundsCreated > 0) then { + _unit setvariable [QGVAR(lastUniqueWoundID), _woundID, true]; +}; + _painLevel = _unit getvariable [QGVAR(pain), 0]; _unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; From c70c9cdee6b8c53c5da7fafc350e86eac8e3d8b2 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sat, 5 Sep 2015 12:49:23 +0200 Subject: [PATCH 275/620] Add Screen Blur and Blackout for Medical Menu by Interact_menu setting --- addons/medical_menu/XEH_preInit.sqf | 1 + .../functions/fnc_onMenuClose.sqf | 21 +++++++++++++++++++ .../medical_menu/functions/fnc_onMenuOpen.sqf | 3 +++ addons/medical_menu/ui/menu.hpp | 4 ++-- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 addons/medical_menu/functions/fnc_onMenuClose.sqf diff --git a/addons/medical_menu/XEH_preInit.sqf b/addons/medical_menu/XEH_preInit.sqf index c231c7df6e..65ac88e245 100644 --- a/addons/medical_menu/XEH_preInit.sqf +++ b/addons/medical_menu/XEH_preInit.sqf @@ -3,6 +3,7 @@ ADDON = false; PREP(onMenuOpen); +PREP(onMenuClose); PREP(openMenu); PREP(canOpenMenu); diff --git a/addons/medical_menu/functions/fnc_onMenuClose.sqf b/addons/medical_menu/functions/fnc_onMenuClose.sqf new file mode 100644 index 0000000000..4300089a4a --- /dev/null +++ b/addons/medical_menu/functions/fnc_onMenuClose.sqf @@ -0,0 +1,21 @@ +/* + * Author: joko // Jonas + * Handle medical menu closed + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * call ace_medical_menu_onMenuClosed + * + * Public: No + */ +#include "script_component.hpp" + +if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), false] call EFUNC(common,blurScreen);}; +if (EGVAR(interact_menu,menuBackground)==2) then {(uiNamespace getVariable [QEGVAR(interact_menu,menuBackground), displayNull]) closeDisplay 0;}; + +[GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler; diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 164353fe73..9f0acfbeb6 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -22,6 +22,9 @@ params ["_display"]; if (isNil "_display") exitwith {}; +if (EGVAR(interact_menu,menuBackground)==1) then {[QGVAR(id), true] call EFUNC(common,blurScreen);}; +if (EGVAR(interact_menu,menuBackground)==2) then {0 cutRsc[QEGVAR(interact_menu,menuBackground), "PLAIN", 1, false];}; + if (isNil QGVAR(LatestDisplayOptionMenu)) then { GVAR(LatestDisplayOptionMenu) = "triage"; } else { diff --git a/addons/medical_menu/ui/menu.hpp b/addons/medical_menu/ui/menu.hpp index 4a07778bd1..342f0230a2 100644 --- a/addons/medical_menu/ui/menu.hpp +++ b/addons/medical_menu/ui/menu.hpp @@ -4,9 +4,9 @@ class GVAR(medicalMenu) { idd = 314412; movingEnable = true; onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(medicalMenu)), _this select 0)]; [_this select 0] call FUNC(onMenuOpen);); - onUnload = QUOTE([GVAR(MenuPFHID)] call CBA_fnc_removePerFrameHandler;); + onUnload = QUOTE([] call FUNC(onMenuClose)); class controlsBackground { - class HeaderBackground: ACE_gui_backgroundBase{ + class HeaderBackground: ACE_gui_backgroundBase { idc = -1; SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)"; From c828544d0208e330a92f00f061a39047979dc396 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:50:32 +0200 Subject: [PATCH 276/620] Added init stacking --- addons/medical/XEH_init.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/medical/XEH_init.sqf b/addons/medical/XEH_init.sqf index 0b86a927b2..acdd50ce82 100644 --- a/addons/medical/XEH_init.sqf +++ b/addons/medical/XEH_init.sqf @@ -5,5 +5,8 @@ params ["_unit"]; _unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]; if (local _unit) then { - [_unit] call FUNC(init); + if (!EGVAR(common,settingsInitFinished)) exitWith { + EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(init), [_unit]]; + }; + [_unit] call FUNC(init); }; From 9c0288cd3f40246bf7eb84026b626156ca1ad669 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:55:49 +0200 Subject: [PATCH 277/620] Removed debug message --- addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf index 4f94622947..37c9f3ef15 100644 --- a/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentBasic_bandageLocal.sqf @@ -29,7 +29,6 @@ if ((_damageBodyParts select _part) > 0) then { _target setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true]; TRACE_2("ACE_DEBUG: Treatment BASIC Bandage Broadcast value here",_unit, _target getvariable QGVAR(bodyPartStatus)); }; -systemChat format["BANDAGE LOCAL RAN: %1", _this]; EXPLODE_6_PVT(_damageBodyParts,_headDamage,_torsoDamage,_handsDamageR,_handsDamageL,_legsDamageR,_legsDamageL); _target setHitPointDamage ["hitHead", _headDamage min 0.95]; From 17ad7ecb8cc93dde5a003267ac1efb1190b5e872 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 12:59:09 +0200 Subject: [PATCH 278/620] replaced diag_logs by trace --- .../medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf index 0b19c05b03..abf09385b2 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf @@ -41,7 +41,7 @@ _mostEffectiveInjury = _openWounds select 0; _exit = false; { _x params ["", "_classID", "_partX"]; - diag_log format["OPENWOUND: %1", _x]; + TRACE_2("OPENWOUND: ", _target, _x); // Only parse injuries that are for the selected bodypart. if (_partX == _part) then { _woundEffectivenss = _effectiveness; @@ -57,7 +57,7 @@ _exit = false; }; }; - diag_log format["_specificClass: %1 vs classId %2", _specificClass, _classID]; + TRACE_2("Wound classes: ", _specificClass, _classID); if (_specificClass == _classID) exitwith { _effectivenessFound = _woundEffectivenss; _mostEffectiveSpot = _foreachIndex; From a4e406658f06edc2eda623cf8bae736982cb03c5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 13:02:19 +0200 Subject: [PATCH 279/620] Reduced initial knockdown time for basic medical --- addons/medical/functions/fnc_handleDamage_basic.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index a37ccea2b3..24ad2638a1 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -36,7 +36,7 @@ TRACE_4("ACE_DEBUG: HandleDamage BASIC",_unit, _damageBodyParts,_cache_params,_c if (alive _unit && {!(_unit getvariable ["ACE_isUnconscious", false])}) then { // If it reaches this, we can assume that the hit did not kill this unit, as this function is called 3 frames after the damage has been passed. if ([_unit, _part, if (_part > 1) then {_newDamage * 1.3} else {_newDamage * 2}] call FUNC(determineIfFatal)) then { - [_unit] call FUNC(setUnconscious); + [_unit, true, 0.5+random(3)] call FUNC(setUnconscious); }; }; _pain = _unit getVariable [QGVAR(pain), 0]; From f15a1c033d93061f4b8cc596046742867e9058dd Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 13:20:19 +0200 Subject: [PATCH 280/620] Added allowSelfTreatment attribute to treatment actions --- addons/medical/ACE_Medical_Treatments.hpp | 12 ++++++++++++ addons/medical/functions/fnc_canTreat.sqf | 3 +++ addons/medical/functions/fnc_treatment.sqf | 3 +++ 3 files changed, 18 insertions(+) diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 9f796bcb06..ea9e03974a 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -7,6 +7,7 @@ class ACE_Medical_Actions { category = "bandage"; treatmentLocations[] = {"All"}; allowedSelections[] = {"All"}; + allowSelfTreatment = 1; requiredMedic = 0; treatmentTime = 5; treatmentTimeSelfCoef = 1; @@ -32,6 +33,7 @@ class ACE_Medical_Actions { displayName = CSTRING(Inject_Morphine); displayNameProgress = CSTRING(Injecting_Morphine); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; + allowSelfTreatment = 1; category = "medication"; treatmentTime = 2; items[] = {"ACE_morphine"}; @@ -43,6 +45,7 @@ class ACE_Medical_Actions { displayName = CSTRING(Inject_Epinephrine); displayNameProgress = CSTRING(Injecting_Epinephrine); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; + allowSelfTreatment = 1; category = "medication"; requiredMedic = 1; treatmentTime = 3; @@ -55,6 +58,7 @@ class ACE_Medical_Actions { displayName = CSTRING(Transfuse_Blood); displayNameProgress = CSTRING(Transfusing_Blood); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; + allowSelfTreatment = 0; category = "advanced"; requiredMedic = 1; treatmentTime = 20; @@ -111,6 +115,7 @@ class ACE_Medical_Actions { category = "advanced"; treatmentLocations[] = {"All"}; allowedSelections[] = {"body"}; + allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {}; @@ -137,6 +142,7 @@ class ACE_Medical_Actions { // Which locations can this treatment action be used? Available: Field, MedicalFacility, MedicalVehicle, All. treatmentLocations[] = {"All"}; allowedSelections[] = {"All"}; + allowSelfTreatment = 1; // What is the level of medical skill required for this treatment action? 0 = all soldiers, 1 = medic, 2 = doctor requiredMedic = 0; // The time it takes for a treatment action to complete. Time is in seconds. @@ -210,6 +216,7 @@ class ACE_Medical_Actions { displayName = CSTRING(Actions_Blood4_1000); displayNameProgress = CSTRING(Transfusing_Blood); allowedSelections[] = {"hand_l", "hand_r", "leg_l", "leg_r"}; + allowSelfTreatment = 0; category = "advanced"; items[] = {"ACE_bloodIV"}; requiredMedic = 1; @@ -260,6 +267,7 @@ class ACE_Medical_Actions { category = "advanced"; items[] = {"ACE_surgicalKit"}; treatmentLocations[] = {QGVAR(useLocation_SurgicalKit)}; + allowSelfTreatment = 0; requiredMedic = QGVAR(medicSetting_SurgicalKit); patientStateCondition = QGVAR(useCondition_SurgicalKit); treatmentTime = "(count ((_this select 1) getVariable ['ACE_Medical_bandagedWounds', []]) * 5)"; @@ -275,6 +283,7 @@ class ACE_Medical_Actions { category = "advanced"; items[] = {"ACE_personalAidKit"}; treatmentLocations[] = {QGVAR(useLocation_PAK)}; + allowSelfTreatment = 0; requiredMedic = QGVAR(medicSetting_PAK); patientStateCondition = QGVAR(useCondition_PAK); treatmentTime = QUOTE((_this select 1) call FUNC(treatmentAdvanced_fullHealTreatmentTime)); @@ -319,6 +328,7 @@ class ACE_Medical_Actions { displayName = CSTRING(Check_Response); callbackSuccess = QUOTE(DFUNC(actionCheckResponse)); displayNameProgress = CSTRING(Check_Response_Content); + allowSelfTreatment = 0; }; class RemoveTourniquet: Tourniquet { displayName = CSTRING(Actions_RemoveTourniquet); @@ -335,6 +345,7 @@ class ACE_Medical_Actions { category = "advanced"; treatmentLocations[] = {"All"}; allowedSelections[] = {"body"}; + allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {}; @@ -356,6 +367,7 @@ class ACE_Medical_Actions { displayNameProgress = CSTRING(PlacingInBodyBag); category = "advanced"; treatmentLocations[] = {"All"}; + allowSelfTreatment = 0; requiredMedic = 0; treatmentTime = 15; items[] = {"ACE_bodyBag"}; diff --git a/addons/medical/functions/fnc_canTreat.sqf b/addons/medical/functions/fnc_canTreat.sqf index ff191ea7ca..ba6ced0486 100644 --- a/addons/medical/functions/fnc_canTreat.sqf +++ b/addons/medical/functions/fnc_canTreat.sqf @@ -26,6 +26,9 @@ _config = (ConfigFile >> "ACE_Medical_Actions" >> (["Basic", "Advanced"] select if !(isClass _config) exitwith {false}; +// Allow self treatment check +if (_caller == _target && {getNumber (_config >> "allowSelfTreatment") == 0}) exitwith {false}; + _medicRequired = if (isNumber (_config >> "requiredMedic")) then { getNumber (_config >> "requiredMedic"); } else { diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf index a39375a05e..5e97e31501 100644 --- a/addons/medical/functions/fnc_treatment.sqf +++ b/addons/medical/functions/fnc_treatment.sqf @@ -34,6 +34,9 @@ if (GVAR(level) >= 2) then { }; if !(isClass _config) exitwith {false}; +// Allow self treatment check +if (_caller == _target && {getNumber (_config >> "allowSelfTreatment") == 0}) exitwith {false}; + _medicRequired = if (isNumber (_config >> "requiredMedic")) then { getNumber (_config >> "requiredMedic"); } else { From dad96822bef05151366764fd6b23b85d341be8f2 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 13:27:02 +0200 Subject: [PATCH 281/620] Only add 1/4 of the new damage to pain instead of everything. --- addons/medical/functions/fnc_handleDamage_basic.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf index 24ad2638a1..43b0852e1b 100644 --- a/addons/medical/functions/fnc_handleDamage_basic.sqf +++ b/addons/medical/functions/fnc_handleDamage_basic.sqf @@ -40,7 +40,7 @@ TRACE_4("ACE_DEBUG: HandleDamage BASIC",_unit, _damageBodyParts,_cache_params,_c }; }; _pain = _unit getVariable [QGVAR(pain), 0]; - _pain = _pain + _newDamage * (1 - (_unit getVariable [QGVAR(morphine), 0])); + _pain = _pain + (_newDamage / 4) * (1 - (_unit getVariable [QGVAR(morphine), 0])); _unit setVariable [QGVAR(pain), _pain min 1, true]; }; }foreach _cache_params; From d9af19df28849e9372e1253175be6d2c5ee55876 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 14:08:46 +0200 Subject: [PATCH 282/620] properly fixes unconscious weird behavior. Because it never registered any unconscious conditions. --- addons/medical/XEH_postInit.sqf | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index e6e2ca5ceb..97f5e64c44 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -271,8 +271,6 @@ if (USE_WOUND_EVENT_SYNC) then { ] call FUNC(addUnconsciousCondition); }; - TRACE_6("ACE_DEBUG: SettingsInitialized_EH_BASIC",(_this select 0), GVAR(level),(_this select 0) getvariable QGVAR(bloodVolume),(_this select 0) getvariable QGVAR(pain), (_this select 0) getvariable QGVAR(painSuppress), [_this select 0] call FUNC(getBloodLoss)); - [ {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 40)}, {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.6}, @@ -280,7 +278,7 @@ if (USE_WOUND_EVENT_SYNC) then { {((_this select 0) getvariable [QGVAR(inReviveState), false])}, {((_this select 0) getvariable ["ACE_isDead", false])} ] call FUNC(addUnconsciousCondition); -}] call FUNC(addEventHandler); +}] call EFUNC(common,addEventHandler); // Prevent all types of interaction while unconscious // @todo: probably remove this when CBA keybind hold key works properly From e4c246984f559f2cfde3ed2ebb2e08822c440928 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 14:10:04 +0200 Subject: [PATCH 283/620] Removed another debug trace that should not be there --- addons/medical/XEH_postInit.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 97f5e64c44..7aae2bb231 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -259,7 +259,6 @@ if (USE_WOUND_EVENT_SYNC) then { ["SettingsInitialized", { if (GVAR(level) == 2) exitwith { - TRACE_6("ACE_DEBUG: SettingsInitialized_EH_ADVANCED",(_this select 0), GVAR(level),(_this select 0) getvariable QGVAR(bloodVolume),(_this select 0) getvariable QGVAR(pain), (_this select 0) getvariable QGVAR(painSuppress), [_this select 0] call FUNC(getBloodLoss)); [ {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 65)}, {(((_this select 0) getvariable [QGVAR(pain), 0]) - ((_this select 0) getvariable [QGVAR(painSuppress), 0])) > 0.9}, From 0a6b77b90232f3e35b85b61af76f45b13a5699ab Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sat, 5 Sep 2015 14:10:28 +0200 Subject: [PATCH 284/620] Removed more deprecated wound sync code --- addons/medical/XEH_postInit.sqf | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf index 7aae2bb231..e6f7837e24 100644 --- a/addons/medical/XEH_postInit.sqf +++ b/addons/medical/XEH_postInit.sqf @@ -242,20 +242,6 @@ GVAR(lastHeartBeatSound) = ACE_time; }, 0, []] call CBA_fnc_addPerFrameHandler; -if (USE_WOUND_EVENT_SYNC) then { - // broadcast injuries to JIP clients in a MP session - if (isMultiplayer && hasInterface) then { - ["playerChanged", { - EXPLODE_2_PVT(_this,_newPlayer,_oldPlayer); - if (alive _newPlayer) then { - // We are only pulling the wounds for the units in the player group. Anything else will come when the unit interacts with them. - { - [_x, _newPlayer] call FUNC(requestWoundSync); - }foreach units group _newPlayer; - }; - }] call EFUNC(common,addEventhandler); - }; -}; ["SettingsInitialized", { if (GVAR(level) == 2) exitwith { From 27a0e8f63950b9c7fc92e253be2533542bb4588c Mon Sep 17 00:00:00 2001 From: TheMagnetar Date: Sat, 5 Sep 2015 16:30:00 +0200 Subject: [PATCH 285/620] Repair: Fix possible out of bounds setting Setting "engineerSetting_fullRepair" had an out of bounds default value. --- addons/repair/ACE_Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index 9dbcd21731..fc3f063fb1 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -57,7 +57,7 @@ class ACE_Settings { displayName = CSTRING(engineerSetting_fullRepair_name); description = CSTRING(engineerSetting_fullRepair_description); typeName = "SCALAR"; - value = 3; + value = 2; values[] = {CSTRING(engineerSetting_anyone), CSTRING(engineerSetting_EngineerOnly), CSTRING(engineerSetting_RepairSpecialistOnly)}; category = ECSTRING(OptionsMenu,CategoryLogistics); }; From a8412361bdbde3a48bd929d0edae93d5f99a8855 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Sep 2015 19:33:25 +0200 Subject: [PATCH 286/620] Use setting init delay function for addSpareParts --- addons/repair/XEH_postInit.sqf | 17 ----------------- addons/repair/XEH_preInit.sqf | 2 -- addons/repair/functions/fnc_addSpareParts.sqf | 6 ++---- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/addons/repair/XEH_postInit.sqf b/addons/repair/XEH_postInit.sqf index 7095b0bfd0..44ca157b0c 100644 --- a/addons/repair/XEH_postInit.sqf +++ b/addons/repair/XEH_postInit.sqf @@ -5,20 +5,3 @@ // wheels ["setWheelHitPointDamage", {(_this select 0) setHitPointDamage [_this select 1, _this select 2]}] call EFUNC(common,addEventHandler); - -if (isServer) then { - ["SettingsInitialized", { - GVAR(settingInitted) = true; // Stop collecting in FUNC(addSpareParts) - - // Exit if adding spare parts disabled and clean collection - if (!GVAR(addSpareParts)) exitWith {GVAR(addSparePartsCollection) = nil}; - - // Add spare parts to vehicles in collection - { - [_x] call FUNC(addSpareParts); - } forEach GVAR(addSparePartsCollection); - - // Clean collection - GVAR(addSparePartsCollection) = nil; - }] call EFUNC(common,addEventHandler); -}; diff --git a/addons/repair/XEH_preInit.sqf b/addons/repair/XEH_preInit.sqf index c47b0b8011..f94c230f29 100644 --- a/addons/repair/XEH_preInit.sqf +++ b/addons/repair/XEH_preInit.sqf @@ -40,6 +40,4 @@ PREP(spawnObject); PREP(useItem); PREP(useItems); -GVAR(addSparePartsCollection) = []; - ADDON = true; diff --git a/addons/repair/functions/fnc_addSpareParts.sqf b/addons/repair/functions/fnc_addSpareParts.sqf index 6dfbb49bc0..4d3197c8e8 100644 --- a/addons/repair/functions/fnc_addSpareParts.sqf +++ b/addons/repair/functions/fnc_addSpareParts.sqf @@ -26,10 +26,8 @@ TRACE_2("params",_vehicle,_amount); if !(["ace_cargo"] call EFUNC(common,isModLoaded)) exitWith {}; // Collect until SettingsInitialized -if (isNil QGVAR(settingInitted)) exitWith { - if !(_vehicle in GVAR(addSparePartsCollection)) then { - GVAR(addSparePartsCollection) pushBack _vehicle; - }; +if (!EGVAR(common,settingsInitFinished)) exitWith { + EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(addSpareParts), _this]; }; // Exit if not forced and add spare parts is disabled (after settings initted to make sure it really is) From f22072a94da4270519be4bff55c13a655cd29f4f Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Sep 2015 19:57:35 +0200 Subject: [PATCH 287/620] Use pushBack instead of array compiling --- addons/common/functions/fnc_parseList.sqf | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf index 8cce3c1837..22595201fc 100644 --- a/addons/common/functions/fnc_parseList.sqf +++ b/addons/common/functions/fnc_parseList.sqf @@ -39,20 +39,15 @@ _list = _whitespaceList; // Check for object existence -_nilCheckedList = ""; +_nilCheckedList = []; if (_checkNil) then { { if !(isNil _x) then { - if (_nilCheckedList == "") then { - _nilCheckedList = _x; - } else { - _nilCheckedList = _nilCheckedList + "," + _x; - }; + _nilCheckedList pushBack _x; }; } count _list; - // Add Array characters and parse into array - _list = [] call compile format ["[%1]", _nilCheckedList]; + _list = _nilCheckedList; }; TRACE_4("Lists",_splittedList,_whitespaceList,_nilCheckedList,_list); From 7147891710e33e76909252991ca94d5cf0cdfe64 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Sat, 5 Sep 2015 15:12:31 -0300 Subject: [PATCH 288/620] Added latest ACE3 PT-BR translations --- addons/captives/stringtable.xml | 4 + addons/cargo/stringtable.xml | 9 +++ addons/common/stringtable.xml | 7 ++ addons/explosives/stringtable.xml | 1 + addons/finger/stringtable.xml | 14 +++- addons/flashlights/stringtable.xml | 6 ++ addons/hearing/stringtable.xml | 4 +- addons/interact_menu/stringtable.xml | 3 +- addons/main/stringtable.xml | 1 + addons/map/stringtable.xml | 11 ++- addons/medical/stringtable.xml | 3 +- addons/medical_menu/stringtable.xml | 60 ++++++++++++++- addons/optionsmenu/stringtable.xml | 6 +- addons/parachute/stringtable.xml | 4 +- addons/repair/stringtable.xml | 105 ++++++++++++++++++++++++--- addons/spectator/stringtable.xml | 68 ++++++++++++++++- addons/zeus/stringtable.xml | 7 ++ 17 files changed, 290 insertions(+), 23 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 41391fa96b..e1c719431a 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -232,18 +232,22 @@ Require surrendering Wymagaj kapitulacji + Requer rendição Require Players to surrender before they can be arrested Wymagaj od graczy kapitulacji zanim będzie można ich zaaresztować + Requer que jogadores se rendam antes de poderem ser presos Surrendering only Tylko kapitulacja + Somente rendição Surrendering or No weapon Kapitulacja lub brak broni + Rendição ou desarmado \ No newline at end of file diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index a39fb16f6f..864243168c 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -4,38 +4,47 @@ Load Załaduj + Carregar Unload Wyładuj + Descarregar Cargo Ładunek + Carga Cargo Menu Menu ładunku + Menu de carga Cargo space left: %1 Pozostałe miejsce: %1 + Espaço de carga restante: %1 Enable Cargo Aktywuj cargo + Ativar carga Enable the load in cargo module Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. + Ativar o módulo de carregamento de carga Cargo Settings Ustawienia cargo + Preferências de carregamento Configure the cargo module settings Skonfiguruj ustawienia modułu cargo. + Configura as preferências do módulo de carga \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index e542e28ae8..1dd78b4e86 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -661,6 +661,7 @@ Vehicles only Tylko pojazdy + Somente veículos Do Not Force @@ -673,26 +674,32 @@ ACE3 Equipment ACE3 Wyposażenie + Equipamentos ACE3 ACE3 Common ACE3 Ogólne + Comum ACE3 ACE3 Weapons ACE3 Broń + Armamento ACE3 ACE3 Movement ACE3 Ruch + Movimento ACE3 ACE3 Scope Adjustment ACE3 Regulacja optyki + Ajuste de luneta ACE3 ACE3 Vehicles ACE3 Pojazdy + Veículos ACE3 \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index b115ca0752..e3a2c8e6de 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -76,6 +76,7 @@ Blocked Obstruido + Bloqueado Cancel diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 11d326a6dc..c135e9c8d2 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -6,55 +6,65 @@ Отображать пальце-индикатор для показывающего игрока Pokaż indykator wskazywania palcem dla siebie Saját mutatási indikátor megjelenítése + Mostrar indicador para si mesmo Render the indicator for the pointing player. This option doesn't affect whether the other players would see the indicator Отображать индикатор для показывающего игрока. Эта настройка не влияет на то, будутт ли другие игроки видеть индикатор Wyświetl indykator kiedy wskazujesz coś palcem. Ta opcja nie wpływa na to, czy inni gracze zobaczą ten indykator czy też nie. Az indikátor megjelenítése a mutató játékosnak. Ez a beállítás nem változtat azon, hogy más játékosok látják-e az indikátort. + Renderizar o indicador para o jogador que está apontando. Esta opção não afeta se os outros jogadores verão ou não o indicador Pointing indicator Пальце-индикатор Indykator palca Ujj-indikátor + Indicador de apontamento Color of the pointing indicator circle Цвет индикатора пальце-указания Kolor okręgu wyświetlanego przy wskazywaniu palcem Mutatási indikátor körének színe + Cor do círculo de indicação Action "point a finger at" Действие "показать пальцем на" Akcja "wskaż palcem" Cselekvés "ujj rámutatása" + Ação "Apontar um dedo para" Points, and shows a virtual marker of where you are looking to nearby units. Can be held down. Wskazuje a także wyświetla wirtualny marker-okrąg w miejscu, w które patrzysz, dla wszystkich pobliskich jednostek. Może być przytrzymywany. Mutat, és elhelyez egy virtuális jelölőt a nézett területhez közeli egységekhez. Lenyomva tartható. + Aponta e mostra um marcador virtual para onde você está olhando para unidades próximas. Pode ser utilizado para baixo. Pointing Settings Ustawienia wskazywania palcem Ujj beállításai + Preferências de apontamento Pointing Enabled Aktywuj wskazywanie Mutatás engedélyezése + Apontamento ativado Pointing Max Range Maks. zasięg wskazywania Ujj maximum hatótávja + Distância máxima do apontamento Max range between players to show the pointing indicator [default: 4 meters] Określ dystans na jakim można wskazywać coś palcem innym graczom. [domyślnie: 4m] A maximális távolság, amelyben a közeli játékosoknak megjelenik az indikátor. [alapértelmezett: 4 méter] + Distância máxima entre jogadores para mostrar o apontamento [padrão: 4 metros] - + \ No newline at end of file diff --git a/addons/flashlights/stringtable.xml b/addons/flashlights/stringtable.xml index e871360bf3..1167445181 100644 --- a/addons/flashlights/stringtable.xml +++ b/addons/flashlights/stringtable.xml @@ -4,26 +4,32 @@ Fulton MX-991 Fulton MX-991 + Fulton MX-991 Flashlight with red filter. For use on map. Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Lanterna com filtro vermelho. Para uso no mapa. Maglite XL50 Maglite XL50 + Maglite XL50 White mini flashlight. For use on map. Mini latarka. Światło białe. Używana do podświetlania mapy. + Mini lanterna branca. Para uso no mapa. KSF-1 KSF-1 + KSF-1 Flashlight with red filter. For use on map. Latarka z czerwonym filtrem. Używana do podświetlania mapy. + Lanterna com filtro vermelho. Para uso no mapa. \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 2e58162b15..0c7cb05c21 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -145,9 +145,11 @@ Effect Zeus RC + Afeta Zeus CR Allow zeus remote controlled units to be able to take hearing damage. + Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. - + \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 990d7f90bf..ecd23fc7ee 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -280,6 +280,7 @@ Interaction Menu Menu interakcji + Menu de interação - + \ No newline at end of file diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 266e21bf40..b3c8643d68 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -4,6 +4,7 @@ ACE Logistics ACE Logistyka + Logísticas ACE \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index f996800346..60d6455a6d 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -21,12 +21,15 @@ Simulate map lighting based on ambient lighting and player's items? + Simular a luz do mapa baseado em luz ambiente e itens do jogador? Map flashlight glow? + Brilho de lanterna no mapa? Add external glow to players who use flashlight on map? + Adicionar brilho externo para jogadores que usam lanterna no mapa? Map shake? @@ -162,26 +165,32 @@ Flashlights Latarki + Lanternas NVG Noktowizja + Óculos de Visão Noturna On Włącz + Ligado Off Wyłącz + Desligado Increase Brightness Zwiększ czułość + Aumentar brilho Decrease Brightness Zmniejsz czułość + Diminuir brilho - + \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index f91b4ad789..502600bb03 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -3725,6 +3725,7 @@ Distance to %1 has become to far for treatment %1 odszedł zbyt daleko, nie można kontynuować leczenia + A distância de %1 está muito longe para tratamento - + \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 0a4f1a5388..47aaffa788 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,45 +1,55 @@ - + Medical Menu Menu medyczne + Menu médico Allow Medical Menu Akt. menu medyczne + Permitir menu médico Allow clients to use the medical menu Zezwalaj graczom korzystać z menu medycznego + Permite que clientes utilizem o menu médico Use Medical menu Użyj menu medycznego + Usar o menu médico If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. + Se permitido pelo servidor, ativa a opção de usar o menu médico por atalhos de teclas e menu de interação Re-open Medical menu Otwieraj ponownie menu medyczne + Reabrir menu médico Re-open the medical menu after succesful treatment Otwórz ponownie menu medyczne po udanym zakończeniu leczenia + Reabre o menu médico depois de um tratamento bem sucedido Open Medical Menu Otwórz menu medyczne + Abrir menu médico Medical Menu Settings Ustawienia menu medycznego + Preferências do menu médico Configure the usage of the Medical Menu Skonfiguruj opcje menu medycznego + Configura o uso do menu médico EXAMINE & TREATMENT @@ -47,6 +57,7 @@ EXAMINAR & TRATAMIENTO EXAMINER & TRAITEMENTS BADANIE & LECZENIE + EXAMINAR & TRATAMENTO STATUS @@ -54,6 +65,7 @@ ESTADO ÉTATS STATUS + ESTADO OVERVIEW @@ -61,6 +73,7 @@ DESCRIPCIÓN DESCRIPTION OPIS + VISÃO GERAL ACTIVITY LOG @@ -68,6 +81,7 @@ REGISTRO DE ACTIVIDAD REGISTRE DES SOINS LOGI AKTYWNOŚCI + REGISTRO DE ATIVIDADE QUICK VIEW @@ -75,6 +89,7 @@ VISTA RÁPIDA VUE RAPIDE SZYBKI PODGLĄD + VISÃO RÁPIDA View triage Card @@ -82,6 +97,7 @@ Ver Triage Voir Carte de Triage Pokaż kartę segregacyjną + Ver cartão de triagem Examine Patient @@ -89,6 +105,7 @@ Examinar Paciente Examiner Patient Zbadaj pacjenta + Examinar paciente Bandage / Fractures @@ -96,6 +113,7 @@ Vendajes/Fracturas Bandages / Fractures Bandaże / Złamania + Bandagens / Fraturas Medication @@ -103,6 +121,7 @@ Medicación Médications Leki + Medicação Airway Management @@ -110,6 +129,7 @@ Vías Aéreas Gestion Des Voie REspiratoire Drogi oddechowe + Vias aéreas Advanced Treatments @@ -117,6 +137,7 @@ Tratamientos Avanzados Traitement Avancé Zaawansowane zabiegi + Tratamentos avançados Drag/Carry @@ -124,6 +145,7 @@ Arrastrar/Cargar Glisser/Porter Ciągnij/Nieś + Arrastar/Carregar Toggle (Self) @@ -131,6 +153,7 @@ Activer (sois) Przełącz (na siebie) Alternar + Alternar (Si mesmo) Select triage status @@ -138,7 +161,7 @@ Seleccionar estado de Triage Selectioner l'état de Triage Wybierz priorytet - + Selecionar estado de triagem Select Head @@ -146,6 +169,7 @@ Seleccionar Cabeza Selectioner Tête Wybierz głowę + Selecionar Cabeça Select Torso @@ -153,6 +177,7 @@ Seleccionar Torso Selectioner Torse Wybierz tors + Selecionar Torso Select Left Arm @@ -160,6 +185,7 @@ Seleccionar Brazo Izquierdo Selectioner Bras Gauche Wybierz lewą rękę + Selecionar Braço Esquerdo Select Right Arm @@ -167,6 +193,7 @@ Seleccionar Brazo Derecho Selectioner Bras Droit Wybierz prawą rękę + Selecionar Braço Direito Select Left Leg @@ -174,6 +201,7 @@ Seleccionar Pierna Izquierda Selectioner Jambe Gauche Wybierz lewą nogę + Selecionar Perna Esquerda Select Right Leg @@ -181,6 +209,7 @@ Seleccionar Pierna Derecha Selectioner Jambe Droite Wybierz prawą nogę + Selecionar Perna Direita Head @@ -188,12 +217,14 @@ Cabeza Tête Głowa + Caebça Torso Торс Torse Tors + Torso Left Arm @@ -201,6 +232,7 @@ Brazo Izquierdo Bras Gauche Lewa ręka + Braço Esquerdo Right Arm @@ -208,6 +240,7 @@ Brazo Derecho Bras Droit Prawa ręka + Braço Direito Left Leg @@ -215,6 +248,7 @@ Pierna Izquierda Jambe Gauche Lewa noga + Perna Esquerda Right Leg @@ -222,6 +256,7 @@ Pierna Derecha Jambe Droite Prawa noga + Perna Direita Body Part: %1 @@ -229,6 +264,7 @@ Parte del cuerpo: %1 Partie du corps: %1 Część ciała: %1 + Parte do corpo: %1 Small @@ -236,6 +272,7 @@ Pequeña Petite małym + Pequeno Medium @@ -243,6 +280,7 @@ Mediana moyenne średnim + Médio Large @@ -250,6 +288,7 @@ Grande Grande dużym + Grande There are %2 %1 Open Wounds @@ -257,6 +296,7 @@ Hay %2 Heridas Abiertas %1 Il y a %2 %1 Blessure Ouverte Widzisz otwarte rany w ilości %2 o %1 rozmiarze + Existem %2 ferimentos abertos %1 There is 1 %1 Open Wound @@ -264,6 +304,7 @@ Hay 1 Herida Abierta %1 Il y a 1 blessure ouverte %1 Widzisz 1 otwartą ranę o %1 rozmiarze + Existe 1 %1 ferimento aberto There is a partial %1 Open wound @@ -271,6 +312,7 @@ Hay una herida parcial abierta %1 Il y a une Blessure Patiellement Ouverte %1 Widzisz częściowo otwartą ranę o %1 rozmiarze + Existe um ferimento parcial aberto %1 There are %2 %1 Bandaged Wounds @@ -278,6 +320,7 @@ Hay %2 Heridas %1 Vendadas Il y a %2 %1 Blessure Bandée Widzisz %2 zabandażowanych ran o %1 rozmiarze + Existem %2 ferimentos %1 tratados There is 1 %1 Bandaged Wound @@ -285,6 +328,7 @@ Hay 1 Herida Vendada %1 Il y a 1 %1 Blessure Bandée Widzisz 1 zabandażowaną ranę o %1 rozmiarze + Existe 1 ferimento %1 tratado There is a partial %1 Bandaged wound @@ -292,6 +336,7 @@ Hay una Herida parcial %1 Vendada Il y a %1 Blessure Partielment Bandée Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze + Existe um ferimento parcial tratado %1 Normal breathing @@ -299,6 +344,7 @@ Respiración normal Respiration Normale Normalny oddech + Respiração normal No breathing @@ -306,6 +352,7 @@ No respira Apnée Brak oddechu + Sem respiração Difficult breathing @@ -313,6 +360,7 @@ Dificultad para respirar Difficultée Respiratoire Trudności z oddychaniem + Dificuldade para respirar Almost no breathing @@ -320,6 +368,7 @@ Casi sin respirar Respiration Faible Prawie brak oddechu + Quase sem respiração Bleeding @@ -327,6 +376,7 @@ Sangrando Seignement Krwawienie zewnętrzne + Sangrando in Pain @@ -334,6 +384,7 @@ Con Dolor A De La Douleur W bólu + Com dor Lost a lot of Blood @@ -341,6 +392,7 @@ Mucha Sangre perdida A Perdu Bcp de Sang Stracił dużo krwi + Perdeu muito sangue Tourniquet [CAT] @@ -348,6 +400,7 @@ Torniquete [CAT] Garot [CAT] Opaska uciskowa [CAT] + Torniquete [CAT] Nasopharyngeal Tube [NPA] @@ -355,6 +408,7 @@ Torniquete [CAT] Canule Naseaupharyngée [NPA] Rurka nosowo-gardłowa [NPA] + Tubo nasofaríngeo [NPA] - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 07975fcb0a..498d31cff4 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -338,11 +338,13 @@ Headbug Fix Fix Headbug "Fejhiba" fix + Corrigir Headbug Resets your animation state. Resetuje aktualną animację. Visszaállítja az animációs állapotodat. + Redefine seu estado de animação. ACE News @@ -365,10 +367,12 @@ All Categories Wszystkie kategorie + Todas categorias Logistics Logistyka + Logística - + \ No newline at end of file diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml index c21c55ba9e..4e02f0ba62 100644 --- a/addons/parachute/stringtable.xml +++ b/addons/parachute/stringtable.xml @@ -54,12 +54,14 @@ Fallschirm abschneiden Odetnij spadochron Ejtőernyő elvágása + Cortar para-quedas Reserve Parachute Reserve Fallschirm Spadochron awaryjny Tartalék ejtőernyő + Para-quedas de reserva - + \ No newline at end of file diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 7fec5bbc6c..74b5b6de8f 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -9,7 +9,7 @@ Chenille de réserve Zapasowa gąsienica Náhradní pásy - Lagarta Reserva + Esteira reserva Cingolo di scorta Pót lánctalp Запасная гусеница @@ -21,7 +21,7 @@ Roue de secours Zapasowe koło Náhradní Kolo - Roda Reserva + Estepe Ruota di scorta Pótkerék Запасное колесо @@ -33,7 +33,7 @@ Changer Roue Wymień koło Vyměňit kolo - Trocar Roda + Trocar roda Sostituisci la ruota Kerék cseréje Поменять колесо @@ -42,11 +42,13 @@ Replacing Wheel ... Ersetze Reifen ... Wymienianie koła ... + Trocando roda... Wheel replaced Reifen ersetzt Koło zostało wymienione + Roda trocada Remove Wheel @@ -55,7 +57,7 @@ Démonter Roue Zdejmij koło Odstranit Kolo - Remover Roda + Remover roda Rimuovi la ruota Kerék leszerelése Снять колесо @@ -64,65 +66,81 @@ Removing Wheel ... Entferne Reifen ... Zdejmowanie koła ... + Removendo roda... Wheel removed Reifen entfernt Koło zostało zdjęte + Roda removida Change Track Wymień gąsienicę + Trocar esteira Replacing Track ... Wymienianie gąsienicy ... + Trocando esteira... Track replaced Gąsienica została wymieniona + Esteira trocada Remove Track Zdejmij gąsienicę + Remover esteira Removing Track ... Zdejmowanie gąsienicy ... + Removendo esteira... Track removed Gąsienica została zdjęta + Esteira trocada Full Repair Pełna naprawa + Reparo completo Repairing Vehicle ... Naprawianie pojazdu ... + Reparando veículo... Full Repair Locations Lokaliz. pełnej naprawy + Localizações de reparo completo At what locations can a vehicle be fully repaired? W jakich miejscach pojazd może zostać w pełni naprawiony? + Em quais locais um veículo pode ser reparado por completo? Allow Full Repair Zezwól na pełną naprawę + Permitir reparo completo Who can perform a full repair on a vehicle? Kto może przeprowadzić pełną naprawę pojazdu? + Quem pode reparar o veículo por completo? Add Spare Parts + Adicionar partes sobressalentes Add spare parts to vehicles (requires Cargo component)? + Adicionar partes sobressalentes aos veículos (requer o componente de carga)? Repair >> @@ -139,10 +157,12 @@ Display text on repair Wyświetl tekst przy naprawie + Mostrar texto quando reparar Display a notification whenever you repair a vehicle Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. + Mostra uma notificação quando você repara um veículo Repairing ... @@ -151,7 +171,7 @@ Réparation ... Naprawianie... Opravuji ... - Reparando ... + Reparando... Sto riparando ... javítása ... Ремонтируем ... @@ -163,7 +183,7 @@ Réparation %1 ... Naprawianie %1... Opravuji %1 ... - Reparando %1 ... + Reparando %1... Sto riparando %1 ... %1 javítása ... Ремонтируем %1 ... @@ -184,21 +204,25 @@ Fully repaired part Bauteil vollständig repariert W pełni naprawiono część + Parte totalmente reparada Partially repaired %1 Bauteil teilweise repariert Częściowo naprawiono: %1 + %1 parcialmente reparado Fully repaired %1 %1 vollständig repariert W pełni naprawiono: %1 + %1 totalmente reparado Partially repaired %1 %1 teilweise repariert Częściowo naprawiono: %1 + %1 parcialmente reparado Body @@ -238,12 +262,15 @@ Left Horizontal Stabilizer + Estabilizador Horizontal Esquerdo Right Horizontal Stabilizer + Estabilizador Horizontal Direito Vertical Stabilizer + Estabilizador Vertical Fuel Tank @@ -259,24 +286,31 @@ Transmission + Transmissão Gear + Engrenagem Starter + Arranque Tail + Cauda Pilot Tube + Tubo de Pitot Static Port + Porta Estática Ammo + Munição Turret @@ -304,6 +338,7 @@ Missiles + Mísseis Left Track @@ -312,7 +347,7 @@ Chenille gauche Lewa gąsienica Levý Pás - Lagarta Esquerda + Esteira Esquerda Cingolo sinistro Bal lánctalp Левую гусеницу @@ -324,7 +359,7 @@ Chenille droite Prawa gąsienica Pravý Pás - Lagarta Direita + Esteira Direita Cingolo destro Jobb lánctalp Правую гусеницу @@ -465,6 +500,7 @@ Winch Seilwinde Wyciągarka + Guincho Glass (right) @@ -505,187 +541,234 @@ Repair Settings Ustawienia naprawy + Preferências de reparo Provides a repair system for all types of vehicles. Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. + Provém um sistema de reparo para todos os veículos Anyone Ktokolwiek + Qualquer um Engineer only Tylko mechanicy + Somente engenheiro Repair Specialist only Tylko inżynierowie + Somente especialista em reparos Allow Wheel Wymiana kół + Permite rodas Who can remove and replace wheels? Kto może zdejmować i zmieniać koła? + Quem pode remover e trocar rodas? Allow Repair Możliwość naprawy + Permite reparo Who can perform repair actions? Kto może wykonywać czynności związane z naprawą pojazdów? + Quem pode executar ações de reparo? Repair Threshold Próg naprawy + Limite de reparo What is the maximum damage that can be repaired with a toolkit? Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? + Qual é o dano máximo que pode ser reparado com um kit de ferramentas? Repair Threshold (Engineer) Próg naprawy (mechanik) + Limite de reparo (Engenheiro) What is the maximum damage that can be repaired by an engineer? Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? + Qual é o dano máximo que pode ser reparado com um engenheiro? Remove toolkit on use Usuń narzędzia po użyciu + Remover kit de ferramentas Should the toolkit be removed on usage? Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? + O kit de ferramentas deve ser removido após uso? Anywhere Wszędzie + Qualquer lugar Repair Vehicle only Przy pojazdach naprawczych + Somente veículos de reparo Repair Facility only Przy budynkach naprawczych + Somente instalação de reparo Repair Facility or Vehicle Przy budynkach i pojazdach naprawczych + Instalação e veículo de reparo Assign Engineer Przydziel inżyniera + Definir engenheiro List Lista + Lista List of unit names that will be classified as engineer, separated by commas. Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. + Lista de nomes de unidades que serão classificadas como engenheiros, separadas por vírgulas. Is Engineer Poziom wyszkolenia + É engenheiro Select the engineering skill level of the unit Wybierz biegłość w dziedzinie naprawy danej jednostki + Selecione o nível de habilidade da unidade em engenhraria None Żadny + Nenhum Engineer Mechanik + Engenheiro Specialist Inżynier + Especialista Assign one or multiple units as an engineer Przydziel klasę inżyniera do jednej lub kilku jednostek + Defina um ou mais unidades como engenheiro Assign Repair Vehicle Przydziel pojazd naprawczy + Defina veículo de reparo List Lista + Lista List of vehicles that will be classified as repair vehicle, separated by commas. Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. + Lista de veículos que serão classificadas como veículo de reparo. Separado por vígulas. Is Repair Vehicle Jest poj. naprawczym + É veículo de reparo Is the vehicle classified as a repair vehicle? Czy pojazd jest zklasyfikowany jako pojazd naprawczy? + O veículo é classificado como reparo? Assign one or multiple vehicles as a repair vehicle Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. + Definir um ou mais veículos como reparo Assign Repair Facility Przydziel budynek naprawczy + Definir instalação de reparo List Lista + Lista List of objects that will be classified as repair Facility, separated by commas. Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. + Lista de objetos que serão classificados como instalações de reparo. separado por vírgulas. Is Repair Facility Jest bud. naprawczym + É uma instalação de reparo Is the object classified as a repair Facility? Czy budynek jest zklasyfikowany jako budynek naprawczy? + O objeto é classificado como instalação de reparo? Assign one or multiple objects as a repair Facility Przydziel klasę budynku naprawczego do jednego lub kilku budynków. + Definir um ou mais objetos como instalação de reparos - Add Spare Parts + Adicionar partes sobressalentes Add spare parts to one or multiple objects + Adicionar partes sobressalentes para um ou mais objetos List + Lista List of objects that will get spare parts added, separated by commas. + Lista de objetos que ganharão partes sobressalentes, dividos por vírgulas. Part + Parte Spare part. + Parte sobressalente Amount + Quantidade Number of selected spare parts. + Número de partes sobressalentes. - + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 5c24224b72..b4e41e2592 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -4,268 +4,334 @@ Spectator Settings Ustawienia obserwatora + Preferências de Espectador Configure how the spectator system will operate by default. Skonfiguruj domyślne ustawienia obserwatora. + Configura como o sistema de espectador operará por padrão. Unit filter Filtr jednostek + Filtro de unidades Method of filtering spectatable units. Wybierz jednostki, jakie będzie można obserwować po uruchomeniu obserwatora. + Método para filtrar unidades espectáveis No units Brak jednostek + Sem unidades Only players Tylko gracze + Somente jogadores Playable Units Grywalne jednostki + Unidades jogáveis All units Wszystkie jednostki + Todas unidades Side filter Filtr stron + Filtro de lados Method of filtering spectatable sides. Wybierz strony, jakie będzie można obserwować po uruchomeniu obserwatora. + Método para filtrar lados espectáveis. Player side Strona gracza + Lado do jogador Friendly sides Strony sojusznicze + Lados aliados Hostile sides Strony wrogie + Lados hostis All sides Wszystkie strony + Todos os lados Camera modes Tryby kamery + Modos de camera Camera modes that can be used. Tryby kamery, jakie mogą być używane. + Modos de camera que podem ser utilizados All Wszystkie + Todos Free only Tylko wolna + Somente livre Internal only Tylko wewnętrzna + Somente interna External only Tylko zewnętrzna + Somente externa Internal and external Wewnętrzna i zewnętrzna + Interna e externa Vision modes Tryby wizji + Modos de visão Vision modes that can be used. Tryby wizji, jakie mogą być używane. + Modos de visão que podem ser utilizados Night vision Noktowizja + Visão noturna Thermal imaging Termowizja + Visão térmica Spectator Units Jednostki obserwatora + Unidades espectadoras Spectator Controls Sterowanie obserwatorem + Controle do espectador Free Wolna + Livre Internal Wewnętrzna + Interna External Zewnętrzna + Externa Normal Normalna + Normal Night Noc + Visão Norturna Thermal Termo + Térmica Free Camera Kamera swobodna + Câmera livre Camera Forward Kamera naprzód + Câmera para frente Camera Backward Kamera w tył + Câmera para trás Camera Left Kamera w lewo + Câmera para esquerda Camera Right Kamera w prawo + Câmera para direita Camera Up Kamera w górę + Câmera para cima Camera Down Kamera w dół + Câmera para baixo Pan Camera Panoramowanie + Câmera panorâmica Dolly Camera Płynna kamera + Câmera dolly Lock Camera to Target Zablokuj kamerę na celu + Travar câmera em alvo Speed Boost Przyśpieszenie kamery + Aumento de velocidade Focus on Unit Skup na jednostce + Focar na unidade Interface Interfejs + Interface Toggle Interface Przełącz interfejs + Alternar interface Toggle Unit Icons Przełącz ikony jednostek + Alternar ícone de unidades Toggle Unit List Przełącz listę jednostek + Alternar lista de unidades Toggle Toolbar Przełącz pasek narzędzi + Alternar barra de ferramentas Toggle Compass Przełącz kompas + Alternar bússola Toggle Map Przełącz mapę + Alternar mapa Toggle Help Przełącz pomoc + Alternar ajuda Camera Attributes Atrybuty kamery + Atributos de câmera Next Camera Następna kamera + Próxima câmera Previous Camera Poprzednia kamera + Câmera anterior Next Unit Następna jednostka + Próxima unidade Previous Unit Poprzednia jednostka + Unidade anterior Next Vision Mode Następny tryb wizji + Próximo modo de visão Previous Vision Mode Poprzedni tryb wizji + Modo de visão anterior Adjust Zoom Reguluj zoom + Ajustar zoom Adjust Speed Reguluj prędkość + Ajuster velocidade Increment Zoom Reguluj zoom (krok) + Incrementar zoom Increment Speed Reguluj prędkość (krok) + Incrementar velocidade Reset Zoom Resetuj zoom + Redefinir zoom Reset Speed Resetuj prędkość + Redefinir velocidade - + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 97bf5f40c7..ea9182b559 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -157,14 +157,17 @@ Assign Medic Przydziel medyka + Definir médico Assign Medical Vehicle Przydziel pojazd medyczny + Definir veículo médico Assign Medical Facility Przydziel budynek medyczny + Definir instalação médica Unit must be alive @@ -193,10 +196,12 @@ Unit must be a structure Jednostka musi być budynkiem + Unidade deve ser uma estrutura Unit must be a vehicle Jednostka musi być pojazdem + Unidade deve ser um veículo Unit must not be captive @@ -231,10 +236,12 @@ Add Objects to Curator Dodaj obiekt do kuratora + Adicionar objetos para o Curator Adds any spawned object to all curators in the mission Dodaje każdy zespawnowany obiekt do wszystkich kuratorów podczas misji + Adicionar qualquer objeto criado para todos os curators na missão \ No newline at end of file From a2dd77ca702bce3542ffd2985b3e2d4defeb48c6 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Sep 2015 20:15:31 +0200 Subject: [PATCH 289/620] Use splitString instead of BIS_fnc_splitString --- addons/common/functions/fnc_parseList.sqf | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf index 22595201fc..dcdf255081 100644 --- a/addons/common/functions/fnc_parseList.sqf +++ b/addons/common/functions/fnc_parseList.sqf @@ -1,5 +1,5 @@ /* - * Author: Jonpas + * Author: Glowbal, Jonpas * Makes a list from a string using comma as a delimiter, optionally trim or remove whitespace and check each for object existence. * * Arguments: @@ -17,12 +17,13 @@ */ #include "script_component.hpp" -private ["_splittedList", "_whitespaceList", "_nilCheckedList"]; params ["_list", ["_removeWhitespace", false], ["_checkNil", false]]; +private ["_whitespaceList", "_nilCheckedList"]; // Split using comma delimiter -_splittedList = [_list, ","] call BIS_fnc_splitString; +_list = _list splitString ","; +TRACE_1("Splitted List",_list); // Remove or Trim Whitespace @@ -34,22 +35,25 @@ _whitespaceList = []; _whitespaceList pushBack ([_x] call CBA_fnc_trim); }; nil -} count _splittedList; +} count _list; + _list = _whitespaceList; +TRACE_1("Whitespace List",_list); // Check for object existence -_nilCheckedList = []; if (_checkNil) then { + _nilCheckedList = []; { if !(isNil _x) then { _nilCheckedList pushBack _x; }; + nil } count _list; _list = _nilCheckedList; }; -TRACE_4("Lists",_splittedList,_whitespaceList,_nilCheckedList,_list); +TRACE_1("Final List",_list); _list From 06baa5e4d362dc223cc18f30816b620ec7031a60 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Sep 2015 20:51:48 +0200 Subject: [PATCH 290/620] Fixed nilCheck, changed moduleAddSpareParts to use new parseList --- addons/common/functions/fnc_parseList.sqf | 2 +- .../functions/fnc_moduleAddSpareParts.sqf | 34 +++++-------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf index dcdf255081..ef7eaae92a 100644 --- a/addons/common/functions/fnc_parseList.sqf +++ b/addons/common/functions/fnc_parseList.sqf @@ -46,7 +46,7 @@ if (_checkNil) then { _nilCheckedList = []; { if !(isNil _x) then { - _nilCheckedList pushBack _x; + _nilCheckedList pushBack (missionNamespace getVariable _x); }; nil } count _list; diff --git a/addons/repair/functions/fnc_moduleAddSpareParts.sqf b/addons/repair/functions/fnc_moduleAddSpareParts.sqf index 46689951a7..cceb62e10c 100644 --- a/addons/repair/functions/fnc_moduleAddSpareParts.sqf +++ b/addons/repair/functions/fnc_moduleAddSpareParts.sqf @@ -11,51 +11,35 @@ * None * * Example: - * function = "ace_repair_fnc_moduleAssignRepairVehicle" + * function = "ace_repair_fnc_moduleAddSpareParts" * * Public: No */ -#define DEBUG_MODE_FULL #include "script_component.hpp" params ["_logic"]; if (!isNull _logic) then { - private ["_list", "_part", "_amount", "_nilCheckPassedList"]; - // Module settings + private ["_list", "_part", "_amount"]; _list = _logic getVariable ["List", ""]; _part = _logic getVariable ["Part", 0]; _amount = _logic getVariable ["Amount", 1]; // Parse list - _nilCheckPassedList = ""; - { - _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); - if !(isnil _x) then { - if (_nilCheckPassedList == "") then { - _nilCheckPassedList = _x; - } else { - _nilCheckPassedList = _nilCheckPassedList + "," + _x; - }; - }; - } forEach ([_list, ","] call BIS_fnc_splitString); - _list = "[" + _nilCheckPassedList + "]"; - _list = [] call compile _list; + _list = [_list, true, true] call EFUNC(common,parseList); // Add synchronized objects to list { _list pushBack _x; - } forEach (synchronizedObjects _logic); + nil + } count (synchronizedObjects _logic); if (_list isEqualTo []) exitWith {}; - TRACE_3("module info parsed",_list,_part,_amount); + TRACE_3("Module info parsed",_list,_part,_amount); + // Add spare parts { - if (!isNil "_x" && {typeName _x == typeName objNull}) then { - [_x, _amount, _part, true] call FUNC(addSpareParts); - }; - } forEach _list; + [_x, _amount, _part, true] call FUNC(addSpareParts); + } count _list; }; - -true From ce1c735d897e84265febcc728787ed3a64f3bb58 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sat, 5 Sep 2015 21:57:22 +0200 Subject: [PATCH 291/620] Removed Vignette, Cleaned up UI --- addons/ui/$PBOPREFIX$ | 2 +- addons/ui/README.md | 3 ++- addons/ui/RscChat.hpp | 15 +++++++++++++++ addons/ui/RscVignette.hpp | 4 ++++ addons/ui/config.cpp | 22 ++++------------------ addons/ui/functions/script_component.hpp | 1 - 6 files changed, 26 insertions(+), 21 deletions(-) create mode 100644 addons/ui/RscChat.hpp create mode 100644 addons/ui/RscVignette.hpp delete mode 100644 addons/ui/functions/script_component.hpp diff --git a/addons/ui/$PBOPREFIX$ b/addons/ui/$PBOPREFIX$ index 601bbd5f60..9b6ac48f4f 100644 --- a/addons/ui/$PBOPREFIX$ +++ b/addons/ui/$PBOPREFIX$ @@ -1 +1 @@ -z\ace\Addons\ui \ No newline at end of file +z\ace\addons\ui \ No newline at end of file diff --git a/addons/ui/README.md b/addons/ui/README.md index f11027038f..c6b2a5a45b 100644 --- a/addons/ui/README.md +++ b/addons/ui/README.md @@ -1,9 +1,10 @@ ace_ui ======= -Changes the chat contrast on the map to allow easier reading +Removes vignette and changes the chat contrast on the map to allow easier reading. ## Maintainers The people responsible for merging changes to this component or answering potential questions. +- [Jonpas] (https://github.com/jonpas) diff --git a/addons/ui/RscChat.hpp b/addons/ui/RscChat.hpp new file mode 100644 index 0000000000..6b091d73bc --- /dev/null +++ b/addons/ui/RscChat.hpp @@ -0,0 +1,15 @@ +class RscText; +class RscDisplayChat { + class controls { + delete Line; + delete Background; + class CA_Background: RscText { + colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker + }; + }; +}; + +class RscChatListDefault { + colorBackground[] = {0,0,0,0.5}; // Make the chat background darker + colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter +}; diff --git a/addons/ui/RscVignette.hpp b/addons/ui/RscVignette.hpp new file mode 100644 index 0000000000..1da39c2118 --- /dev/null +++ b/addons/ui/RscVignette.hpp @@ -0,0 +1,4 @@ +class RscPicture; +class RscVignette: RscPicture { + text = ""; // Remove Vignette Texture +}; diff --git a/addons/ui/config.cpp b/addons/ui/config.cpp index e7ea4b32eb..5433708455 100644 --- a/addons/ui/config.cpp +++ b/addons/ui/config.cpp @@ -6,25 +6,11 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"VKing"}; - authorUrl = "https://github.com/ACEMod/"; + author[] = {"VKing", "Jonpas"}; + authorUrl = "https://github.com/acemod/ACE3"; VERSION_CONFIG; }; }; -class RscText; - -class RscDisplayChat { - class controls { - delete Line; - delete Background; - class CA_Background: RscText { - colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker - }; - }; -}; - -class RscChatListDefault { - colorBackground[] = {0,0,0,0.5}; // Make the chat background darker - colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter -}; +#include "RscChat.hpp" +#include "RscVignette.hpp" diff --git a/addons/ui/functions/script_component.hpp b/addons/ui/functions/script_component.hpp deleted file mode 100644 index 656228f742..0000000000 --- a/addons/ui/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\ui\script_component.hpp" From 98202f4f381c27c81db278ef74b7dbd47fd297cd Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sat, 5 Sep 2015 15:31:14 -0700 Subject: [PATCH 292/620] Additional debug statements for caching and wounds. --- addons/medical/functions/fnc_adjustPainLevel.sqf | 2 +- addons/medical/functions/fnc_handleDamage_caching.sqf | 4 +++- addons/medical/functions/fnc_handleDamage_wounds.sqf | 2 ++ addons/medical/functions/fnc_handleDamage_woundsOld.sqf | 2 ++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_adjustPainLevel.sqf b/addons/medical/functions/fnc_adjustPainLevel.sqf index c4aab9e48d..df82e06823 100644 --- a/addons/medical/functions/fnc_adjustPainLevel.sqf +++ b/addons/medical/functions/fnc_adjustPainLevel.sqf @@ -19,9 +19,9 @@ private ["_pain"]; params ["_unit", "_addedPain"]; - //Only run on local units: if (!local _unit) exitWith {ERROR("unit is not local");}; +TRACE_3("ACE_DEBUG: adjustPainLevel Called",_unit, _pain, _addedPain); //Ignore if medical system disabled: if (GVAR(level) == 0) exitWith {}; diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf index 553c300631..41f93b954b 100644 --- a/addons/medical/functions/fnc_handleDamage_caching.sqf +++ b/addons/medical/functions/fnc_handleDamage_caching.sqf @@ -20,7 +20,7 @@ private ["_hitSelections", "_hitPoints", "_impactVelocity", "_newDamage", "_cache_hitpoints", "_cache_projectiles", "_cache_params", "_cache_damages"]; params ["_unit", "_selectionName", "_damage", "_source", "_projectile"]; - +TRACE_8("ACE_DEBUG: HandleDamage_Caching Called",_unit, _selectionName, _damage, _source, _projectile,GVAR(SELECTIONS),GVAR(HITPOINTS),damage _unit); _hitSelections = GVAR(SELECTIONS); _hitPoints = GVAR(HITPOINTS); @@ -150,4 +150,6 @@ if (_selectionName != "") then { _unit setVariable [QGVAR(cachedHandleDamageParams), _cache_params]; }; +TRACE_8("ACE_DEBUG: HandleDamage_Caching",_unit, _newDamage, _cache_params, _cache_damages, _unit getVariable QGVAR(cachedProjectiles), _unit getVariable QGVAR(cachedHitPoints), _unit getVariable QGVAR(cachedDamages), _unit getVariable QGVAR(cachedHandleDamageParams)); + _newDamage diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf index 4438e9bb90..ae032e6d64 100644 --- a/addons/medical/functions/fnc_handleDamage_wounds.sqf +++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf @@ -19,6 +19,7 @@ private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; +TRACE_6("ACE_DEBUG: HandleDamage Called",_unit, _selectionName, _damage, _shooter, _typeOfProjectile,_typeOfDamage); // Administration for open wounds and ids _openWounds = _unit getvariable[QGVAR(openWounds), []]; @@ -60,3 +61,4 @@ if (count _woundsCreated > 0) then { _painLevel = _unit getvariable [QGVAR(pain), 0]; _unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; +TRACE_6("ACE_DEBUG: HandleDamage_WoundsOLD",_unit, _painLevel, _painToAdd, _unit getvariable QGVAR(pain), _unit getvariable QGVAR(openWounds),_woundsCreated); diff --git a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf index cbc28dcca9..dc21012dd6 100644 --- a/addons/medical/functions/fnc_handleDamage_woundsOld.sqf +++ b/addons/medical/functions/fnc_handleDamage_woundsOld.sqf @@ -19,6 +19,7 @@ private ["_bodyPartn", "_injuryTypeInfo", "_allInjuriesForDamageType", "_allPossibleInjuries", "_highestPossibleDamage", "_highestPossibleSpot", "_minDamage", "_openWounds", "_woundID", "_toAddInjury", "_painToAdd", "_bloodLoss", "_bodyPartNToAdd", "_classType", "_damageLevels", "_foundIndex", "_i", "_injury", "_maxDamage", "_pain", "_painLevel", "_selections", "_toAddClassID", "_woundsCreated"]; params ["_unit", "_selectionName", "_damage", "_typeOfProjectile", "_typeOfDamage"]; +TRACE_6("ACE_DEBUG: HandleDamage_WoundsOLD Called",_unit, _selectionName, _damage, _shooter, _typeOfProjectile,_typeOfDamage); // Convert the selectionName to a number and ensure it is a valid selection. _bodyPartn = [_selectionName] call FUNC(selectionNameToNumber); @@ -130,3 +131,4 @@ if (count _woundsCreated > 0) then { _painLevel = _unit getvariable [QGVAR(pain), 0]; _unit setvariable [QGVAR(pain), _painLevel + _painToAdd]; +TRACE_6("ACE_DEBUG: HandleDamage_WoundsOLD",_unit, _painLevel, _painToAdd, _unit getvariable QGVAR(pain), _unit getvariable QGVAR(openWounds),_woundsCreated); From f45c0334fc1ae7ec931362246fb06e0985513fc9 Mon Sep 17 00:00:00 2001 From: jonpas Date: Sun, 6 Sep 2015 03:49:52 +0200 Subject: [PATCH 293/620] Added spaces --- addons/ui/RscChat.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/ui/RscChat.hpp b/addons/ui/RscChat.hpp index 6b091d73bc..46d8ff0acb 100644 --- a/addons/ui/RscChat.hpp +++ b/addons/ui/RscChat.hpp @@ -4,12 +4,12 @@ class RscDisplayChat { delete Line; delete Background; class CA_Background: RscText { - colorBackground[] = {0.5,0.5,0.5,0.33}; // Make the chat entry field slightly darker + colorBackground[] = {0.5, 0.5, 0.5, 0.33}; // Make the chat entry field slightly darker }; }; }; class RscChatListDefault { - colorBackground[] = {0,0,0,0.5}; // Make the chat background darker - colorMessageProtocol[] = {0.85,0.85,0.85,1}; // And the chat text brighter + colorBackground[] = {0, 0, 0, 0.5}; // Make the chat background darker + colorMessageProtocol[] = {0.85, 0.85, 0.85, 1}; // And the chat text brighter }; From 78084f271ae21e1f922e61a450f18632f1d66848 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sun, 6 Sep 2015 07:11:27 +0300 Subject: [PATCH 294/620] Changed "Effect Zeus RC" to "Affects Zeus RC" --- addons/hearing/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 0fd7b557e8..b2cd45f66e 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -148,7 +148,7 @@ Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. - Effect Zeus RC + Affects Zeus RC Влияет на юнита Зевса @@ -156,4 +156,4 @@ Позволить юнитам, контролируемым Зевсом, получать повреждение слуха. - \ No newline at end of file + From adb1a1121111583683bb177e4a83fc6d7b4b739c Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Sep 2015 11:49:08 +0200 Subject: [PATCH 295/620] increase leg and arm armor value, more TRACE debug --- addons/medical/CfgVehicles.hpp | 4 ++-- addons/medical/functions/fnc_handleDamage.sqf | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 7112c82fc5..4e73e77ee1 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -426,8 +426,8 @@ class CfgVehicles { }; }; - #define ARM_LEG_ARMOR_DEFAULT 2 - #define ARM_LEG_ARMOR_BETTER 4 + #define ARM_LEG_ARMOR_DEFAULT 3 + #define ARM_LEG_ARMOR_BETTER 5 #define ARM_LEG_ARMOR_CSAT 4 class Land; diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf index fe06a47e9a..1a58e2ed01 100644 --- a/addons/medical/functions/fnc_handleDamage.sqf +++ b/addons/medical/functions/fnc_handleDamage.sqf @@ -1,4 +1,4 @@ -/* + /* * Author: KoffeinFlummi, Glowbal, commy2 * Main HandleDamage EH function. * @@ -33,7 +33,7 @@ if (typeName _projectile == "OBJECT") then { _this set [4, _projectile]; }; -TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage, _unit); +TRACE_3("ACE_DEBUG: HandleDamage",_selection,_damage,_unit); // If damage is in dummy hitpoints, "hands" and "legs", don't change anything if (_selection == "hands") exitWith {_unit getHit "hands"}; @@ -44,7 +44,7 @@ if (_selection != "" && {!(_selection in GVAR(SELECTIONS))}) exitWith {0}; //@to // Exit if we disable damage temporarily if !(_unit getVariable [QGVAR(allowDamage), true]) exitWith { - TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit, _unit); + TRACE_3("ACE_DEBUG: HandleDamage damage disabled.",_selection,damage _unit,_unit); if (_selection == "") then { damage _unit } else { @@ -59,6 +59,8 @@ _newDamage = _this call FUNC(handleDamage_caching); // handleDamage_caching may have modified the projectile string _typeOfDamage = [_projectile] call FUNC(getTypeOfDamage); +TRACE_3("ACE_DEBUG: HandleDamage caching new damage",_selection,_newDamage,_unit); + _typeIndex = (GVAR(allAvailableDamageTypes) find _typeOfDamage); _minLethalDamage = if (_typeIndex >= 0) then { GVAR(minLethalDamages) select _typeIndex @@ -126,4 +128,6 @@ if (((_unit getVariable [QGVAR(enableRevive), GVAR(enableRevive)]) > 0) && {_dam 0.89; }; +TRACE_3("ACE_DEBUG: HandleDamage damage return",_selection,_damageReturn,_unit); + _damageReturn From 45eb8c4822baa54a3a27240b9db94d6a644e5038 Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Sun, 6 Sep 2015 19:34:46 +0200 Subject: [PATCH 296/620] Add Code for CBA update 2.1 --- .../functions/fnc_cacheOverPressureValues.sqf | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf index 09f40612ef..a9c65cc62a 100644 --- a/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf +++ b/addons/overpressure/functions/fnc_cacheOverPressureValues.sqf @@ -20,7 +20,7 @@ params ["_weapon", "_ammo", "_magazine"]; TRACE_3("Parameter",_weapon,_magazine,_ammo); -private ["_array", "_type", "_return", "_config"]; +private ["_array", "_type", "_return", "_config" /*, "_priority"*/]; // get Priority Array from Config _array = [ @@ -30,8 +30,17 @@ _array = [ ]; TRACE_1("Proiroity Array",_array); -// define Fist Values for Types -_type = 0; + +/* for CBA Upadte 2.1 +_priority = _array call CBA_fnc_findMax; +_type = if (isNil "_priority") then { + 0 +} else { + _priority select 1 +}; +*/ + +// obsolete as CBA Update 2.1 start _array params ["_max"]; // get Highest Entry out the the Priority Array @@ -41,6 +50,7 @@ _array params ["_max"]; _type = _forEachIndex; }; } forEach _array; +// obsolete end TRACE_2("Highest Value",_max,_type); // create the Config entry Point From ad8660c989136521340c82fdbaab068af1540d77 Mon Sep 17 00:00:00 2001 From: Felix Wiegand Date: Mon, 7 Sep 2015 00:44:15 +0200 Subject: [PATCH 297/620] Add slack badge to README --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 755eaceb30..5141e05796 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,9 @@ ACE3 License + + ACE3 License +

Requires the latest version of CBA A3. Visit us on Facebook | YouTube | Twitter | Reddit

From fe99cf83b3e65f7e23f2dc5871edf6a66baf9738 Mon Sep 17 00:00:00 2001 From: Felix Wiegand Date: Mon, 7 Sep 2015 00:50:22 +0200 Subject: [PATCH 298/620] Change alt text on slack badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5141e05796..5630ea8819 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ ACE3 License - ACE3 License + ACE3 Slack

Requires the latest version of CBA A3. Visit us on Facebook | YouTube | Twitter | Reddit

From 2fc35338d5e80a14eed077e360717a4669eabaa1 Mon Sep 17 00:00:00 2001 From: ViperMaul Date: Sun, 6 Sep 2015 21:37:20 -0700 Subject: [PATCH 299/620] Build number for Release Candidate --- addons/main/script_mod.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index e38e71ac4b..9f5de69921 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 2 -#define PATCHLVL 2 +#define PATCHLVL 3 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD From eee5664ec5078a69ff5be1e6ad915d520b3babf9 Mon Sep 17 00:00:00 2001 From: nsgundy Date: Mon, 7 Sep 2015 11:05:18 +0200 Subject: [PATCH 300/620] Move MicroDAGR 3D model from BFT branch to microdagr module --- addons/microdagr/CfgWeapons.hpp | 1 + addons/microdagr/data/MicroDAGR.p3d | Bin 0 -> 175454 bytes addons/microdagr/data/MicroDAGR.rvmat | 92 +++++++++++++++++++++++ addons/microdagr/data/MicroDAGR_co.paa | Bin 0 -> 229450 bytes addons/microdagr/data/MicroDAGR_nohq.paa | Bin 0 -> 403893 bytes addons/microdagr/data/MicroDAGR_smdi.paa | Bin 0 -> 152742 bytes 6 files changed, 93 insertions(+) create mode 100644 addons/microdagr/data/MicroDAGR.p3d create mode 100644 addons/microdagr/data/MicroDAGR.rvmat create mode 100644 addons/microdagr/data/MicroDAGR_co.paa create mode 100644 addons/microdagr/data/MicroDAGR_nohq.paa create mode 100644 addons/microdagr/data/MicroDAGR_smdi.paa diff --git a/addons/microdagr/CfgWeapons.hpp b/addons/microdagr/CfgWeapons.hpp index 9776f1c615..6fa84b6e7b 100644 --- a/addons/microdagr/CfgWeapons.hpp +++ b/addons/microdagr/CfgWeapons.hpp @@ -7,6 +7,7 @@ class CfgWeapons { scope = 2; displayName = CSTRING(itemName); descriptionShort = CSTRING(itemDescription); + model = QUOTE(PATHTOF(data\MicroDAGR.p3d)); picture = QUOTE(PATHTOF(images\microDAGR_item.paa)); class ItemInfo: InventoryItem_Base_F { mass = 2; diff --git a/addons/microdagr/data/MicroDAGR.p3d b/addons/microdagr/data/MicroDAGR.p3d new file mode 100644 index 0000000000000000000000000000000000000000..6a2a8987e21d10dadaa48b09e93339d679fda231 GIT binary patch literal 175454 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 fiU)Dxh`= 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ΜG4A==m6 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%0AeCH)g6IlZ^1^iU+ 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

;-wg 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 z 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⩔}an*ne0_tcAWs3 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