From 4bebedf73e179c8c5755b56b433ba378f916f392 Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 17 May 2015 00:53:55 +0200 Subject: [PATCH 01/63] Stringtable Zeus and View Distance * Stringtabled ACE Zeus module * Stringtabled ACE View Distance * Lowered default view distance to 1500 because default value (10000) makes enormous FPS drop at start for low end machines --- addons/viewdistance/ACE_Settings.hpp | 34 +++--- addons/viewdistance/CfgVehicles.hpp | 14 ++- .../functions/fnc_changeViewDistance.sqf | 6 +- addons/viewdistance/stringtable.xml | 103 ++++++++++++++++++ addons/zeus/ACE_Settings.hpp | 2 +- addons/zeus/CfgFactionClasses.hpp | 2 +- addons/zeus/CfgVehicles.hpp | 30 ++--- addons/zeus/stringtable.xml | 71 ++++++++++++ 8 files changed, 219 insertions(+), 43 deletions(-) create mode 100644 addons/viewdistance/stringtable.xml create mode 100644 addons/zeus/stringtable.xml diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index a3460cddf3..b56bcd2703 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -2,47 +2,45 @@ class ACE_Settings { class GVAR(enabled) { typeName = "BOOL"; value = 1; - displayName = "Enable ACE viewdistance"; - description = "Enables ACE viewdistance module."; + displayName = "$STR_ACE_ViewDistance_enabled_DisplayName"; + description = "$STR_ACE_ViewDistance_enabled_Description"; }; class GVAR(viewDistanceOnFoot) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). + value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (On Foot)"; - description = "Changes in game view distance when the player is on foot."; + displayName = "$STR_ACE_ViewDistance_onFoot_DisplayName"; + description = "$STR_ACE_ViewDistance_onFoot_Description"; }; class GVAR(viewDistanceLandVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value + value = 0; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (Land Vehicle)"; - description = "Changes in game view distance when the player is in a land vehicle."; + displayName = "$STR_ACE_ViewDistance_landVehicle_DisplayName"; + description = "$STR_ACE_ViewDistance_landVehicle_Description"; }; class GVAR(viewDistanceAirVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 11; // index, NOT value + value = 0; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf - displayName = "Client View Distance (Air Vehicle)"; - description = "Changes in game view distance when the player is in an air vehicle."; + displayName = "$STR_ACE_ViewDistance_airVehicle_DisplayName"; + description = "$STR_ACE_ViewDistance_airVehicle_Description"; }; class GVAR(limitViewDistance) { typeName = "SCALAR"; value = 10000; // Value, NOT index. 10000 is the maximum in A3 - displayName = "View Distance Limit"; - description = "Limit for client's view distance set here and can overridden by module"; + displayName = "$STR_ACE_ViewDistance_limit_DisplayName"; + description = "$STR_ACE_ViewDistance_limit_setting"; }; class GVAR(objectViewDistanceCoeff) { typeName = "SCALAR"; isClientSettable = 1; value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf - values[] = {"Off","Very Low","Low","Medium","High","Very High"}; - displayName = "Dynamic Object View Distance"; - description = "Sets the object view distance as a coefficient of the view distance."; + values[] = {"$STR_ACE_ViewDistance_object_off","$STR_ACE_ViewDistance_object_verylow","$STR_ACE_ViewDistance_object_low","$STR_ACE_ViewDistance_object_medium","$STR_ACE_ViewDistance_object_high","$STR_ACE_ViewDistance_object_veryhigh"}; + displayName = "$STR_ACE_ViewDistance_object_DisplayName"; + description = "$STR_ACE_ViewDistance_object_Description"; }; }; - -// To do: include string table style displayName & description. \ No newline at end of file diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 63a50cf099..cda9d4e332 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -4,23 +4,27 @@ class CfgVehicles { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; function = QUOTE(DFUNC(initModule)); - displayName = "View Distance Limiter"; + displayName = "$STR_ACE_ViewDistance_Module_DisplayName"; scope = 2; isGlobal = 1; //icon = ""; // needs an icon class Arguments { class moduleViewDistanceEnabled { - displayName = "Enable ACE viewdistance"; - description = "Enables ACE viewdistance"; + displayName = "$STR_ACE_ViewDistance_enabled_DisplayName"; + description = "$STR_ACE_ViewDistance_enabled_Description"; typeName = "BOOL"; defaultValue = 1; }; class moduleViewDistanceLimit { - displayName = "View Distance Limit"; - description = "Sets the limit for how high clients can raise their view distance (<= 10000)"; + displayName = "$STR_ACE_ViewDistance_limit_DisplayName"; + description = "$STR_ACE_ViewDistance_limit_Description"; typeName = "NUMBER"; defaultValue = 10000; }; + }; + class ModuleDescription { + description = "$STR_ACE_ViewDistance_Module_Description"; + sync[] = {}; }; }; }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index 7c70a612eb..7d5f8150dc 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -28,13 +28,13 @@ _view_distance_limit = GVAR(limitViewDistance); // Grab the limit if (_show_prompt) then { _text = if (_new_view_distance <= _view_distance_limit) then { - format ["View Distance: %1m",str(_new_view_distance)]; + format ["%1 %2m", (localize "STR_ACE_ViewDistance_infotext"), str(_new_view_distance)]; } else { - format ["That option is invalid! The limit is %1m",str(_view_distance_limit)]; + format ["%1 %2m", (localize "STR_ACE_ViewDistance_invalid"), str(_view_distance_limit)]; }; if (GVAR(objectViewDistanceCoeff) > 0) then { - _text = _text + format ["
Object View Distance is %1%2",str(_object_view_distance_coeff * 100),"%"]; + _text = _text + format ["
%1 %2%3", (localize "STR_ACE_ViewDistance_objectinfotext"), str(_object_view_distance_coeff * 100),"%"]; }; [parseText _text,2] call EFUNC(common,displayTextStructured); }; diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml new file mode 100644 index 0000000000..b43f24e4d5 --- /dev/null +++ b/addons/viewdistance/stringtable.xml @@ -0,0 +1,103 @@ + + + + + + View Distance Limiter + Ogranicznik zasięgu widzenia + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + + + View Distance Limit + Limit zas. widzenia + + + 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) + + + 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ł + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + + + Off + Wyłącz + + + Very Low + Bardzo niski + + + Low + Niski + + + Medium + Średni + + + High + Wysoki + + + Very High + Bardzo wysoki + + + View Distance: + Zasięg widzenia: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + + + + diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp index 536790ba26..2630c72dff 100644 --- a/addons/zeus/ACE_Settings.hpp +++ b/addons/zeus/ACE_Settings.hpp @@ -18,6 +18,6 @@ class ACE_Settings { class GVAR(revealMines) { typeName = "SCALAR"; value = 0; - values[] = {"Disabled", "Partially", "Fully"}; + values[] = {"$STR_ACE_Zeus_revealMines_disable", "$STR_ACE_Zeus_revealMines_partial", "$STR_ACE_Zeus_revealMines_full"}; }; }; diff --git a/addons/zeus/CfgFactionClasses.hpp b/addons/zeus/CfgFactionClasses.hpp index bf34546727..da8e845a43 100644 --- a/addons/zeus/CfgFactionClasses.hpp +++ b/addons/zeus/CfgFactionClasses.hpp @@ -1,6 +1,6 @@ class CfgFactionClasses { class NO_CATEGORY; class ADDON: NO_CATEGORY { - displayName = "ACE Zeus"; + displayName = "$STR_ACE_Zeus_category"; }; }; diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 7d145c8421..cb7346e18d 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class GVAR(moduleZeusSettings): ACE_Module { scope = 2; - displayName = "Zeus Settings [ACE]"; + displayName = "$STR_ACE_Zeus_Module_DisplayName"; //icon = QUOTE(PATHTOF(iconGoesHere)); category = "ACE_zeus"; function = QUOTE(DFUNC(moduleZeusSettings)); @@ -15,52 +15,52 @@ class CfgVehicles { author = "SilentSpike"; class Arguments { class zeusAscension { - displayName = "Ascension Messages"; - description = "Display global popup messages when a player is assigned as Zeus."; + displayName = "$STR_ACE_Zeus_ascension_DisplayName"; + description = "$STR_ACE_Zeus_ascension_Description"; typeName = "BOOL"; defaultValue = 0; }; class zeusBird { - displayName = "Zeus Eagle"; - description = "Spawn an eagle that follows the Zeus camera."; + displayName = "$STR_ACE_Zeus_bird_DisplayName"; + description = "$STR_ACE_Zeus_bird_Description"; typeName = "BOOL"; defaultValue = 0; }; class remoteWind { - displayName = "Wind Sounds"; - description = "Play wind sounds when Zeus remote controls a unit."; + displayName = "$STR_ACE_Zeus_remoteWind_DisplayName"; + description = "$STR_ACE_Zeus_remoteWind_Description"; typeName = "BOOL"; defaultValue = 0; }; class radioOrdnance { - displayName = "Ordnance Warning"; - description = "Play a radio warning when Zeus uses ordnance."; + displayName = "$STR_ACE_Zeus_radioOrdnance_DisplayName"; + description = "$STR_ACE_Zeus_radioOrdnance_Description"; typeName = "BOOL"; defaultValue = 0; }; class revealMines { - displayName = "Reveal Mines"; - description = "Reveal mines to allies and/or place map markers."; + displayName = "$STR_ACE_Zeus_revealMines_DisplayName"; + description = "$STR_ACE_Zeus_revealMines_Description"; typeName = "NUMBER"; class values { class disable { - name = "Disabled"; + name = "$STR_ACE_Zeus_revealMines_disable"; value = 0; default = 1; }; class partial { - name = "Reveal to Allies"; + name = "$STR_ACE_Zeus_revealMines_partial"; value = 1; }; class full { - name = "Allies + Map Markers"; + name = "$STR_ACE_Zeus_revealMines_full"; value = 2; }; }; }; }; class ModuleDescription { - description = "Provides control over various aspects of Zeus."; + description = "$STR_ACE_Zeus_Module_Description"; sync[] = {}; }; }; diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml new file mode 100644 index 0000000000..5fa8215294 --- /dev/null +++ b/addons/zeus/stringtable.xml @@ -0,0 +1,71 @@ + + + + + + Zeus Settings [ACE] + Ustawienia Zeusa [ACE] + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + + + Ascension Messages + Wiad. o nowym Zeusie + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + + + Zeus Eagle + Orzeł Zeusa + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + + + Wind Sounds + Dźwięki wiatru + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + + + Ordnance Warning + Ostrz. o ostrzale arty. + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + + + Reveal Mines + Pokazuj miny + + + Reveal mines to allies and/or place map markers. + Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. + + + Disabled + Wyłączone + + + Reveal to Allies + Pokaż dla sojuszników + + + Allies + Map Markers + Sojusznicy + markery na mapie + + + ACE Zeus + ACE Zeus + + + + From 0993c0f0b090d00dd7fe6a4234a5a997e67bc1f3 Mon Sep 17 00:00:00 2001 From: gienkov Date: Sun, 17 May 2015 23:28:00 +0200 Subject: [PATCH 02/63] Fix tabs and errors --- addons/viewdistance/ACE_Settings.hpp | 6 +- addons/viewdistance/stringtable.xml | 196 +++++++++++++-------------- addons/zeus/stringtable.xml | 130 +++++++++--------- 3 files changed, 164 insertions(+), 168 deletions(-) diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp index b56bcd2703..42e022bb25 100644 --- a/addons/viewdistance/ACE_Settings.hpp +++ b/addons/viewdistance/ACE_Settings.hpp @@ -8,7 +8,7 @@ class ACE_Settings { class GVAR(viewDistanceOnFoot) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). + value = 11; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever). values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_onFoot_DisplayName"; description = "$STR_ACE_ViewDistance_onFoot_Description"; @@ -16,7 +16,7 @@ class ACE_Settings { class GVAR(viewDistanceLandVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value + value = 11; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_landVehicle_DisplayName"; description = "$STR_ACE_ViewDistance_landVehicle_Description"; @@ -24,7 +24,7 @@ class ACE_Settings { class GVAR(viewDistanceAirVehicle) { typeName = "SCALAR"; isClientSettable = 1; - value = 0; // index, NOT value + value = 11; // index, NOT value values[] = {"1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf displayName = "$STR_ACE_ViewDistance_airVehicle_DisplayName"; description = "$STR_ACE_ViewDistance_airVehicle_Description"; diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index b43f24e4d5..bbcfb9e60b 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,103 +1,101 @@  - - - - View Distance Limiter - Ogranicznik zasięgu widzenia - - - Allows limiting maximum view distance that can be set by players. - Pozwala ustawić maksymalny limit zasięgu widzenia. - - - Enable ACE viewdistance - Wł. zasięg widzenia ACE - - - Enables ACE viewdistance - Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE - - - View Distance Limit - Limit zas. widzenia - - - 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) - - - 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ł - - - Client View Distance (On Foot) - Zasięg widzenia (piechota) - - - Changes in game view distance when the player is on foot. - Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. - - - Client View Distance (Land Vehicle) - Zasięg widzenia (pojazdy naziemne) - - - Changes in game view distance when the player is in a land vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. - - - Client View Distance (Air Vehicle) - Zasięg widzenia (pojazdy lotnicze) - - - Changes in game view distance when the player is in an air vehicle. - Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. - - - Dynamic Object View Distance - Dynamiczny zasięg rysowania obiektów - - - Sets the object view distance as a coefficient of the view distance. - Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. - - - Off - Wyłącz - - - Very Low - Bardzo niski - - - Low - Niski - - - Medium - Średni - - - High - Wysoki - - - Very High - Bardzo wysoki - - - View Distance: - Zasięg widzenia: - - - Object View Distance is - Zasięg widzenia obiektów wynosi - - - That option is invalid! The limit is - Ta opcja jest nieprawidłowa! Limit wynosi - - + + + View Distance Limiter + Ogranicznik zasięgu widzenia + + + Allows limiting maximum view distance that can be set by players. + Pozwala ustawić maksymalny limit zasięgu widzenia. + + + Enable ACE viewdistance + Wł. zasięg widzenia ACE + + + Enables ACE viewdistance + Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE + + + View Distance Limit + Limit zas. widzenia + + + 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) + + + 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ł + + + Client View Distance (On Foot) + Zasięg widzenia (piechota) + + + Changes in game view distance when the player is on foot. + Zmienia zasięg widzenia kiedy gracz porusza się na piechotę. + + + Client View Distance (Land Vehicle) + Zasięg widzenia (pojazdy naziemne) + + + Changes in game view distance when the player is in a land vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi. + + + Client View Distance (Air Vehicle) + Zasięg widzenia (pojazdy lotnicze) + + + Changes in game view distance when the player is in an air vehicle. + Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi. + + + Dynamic Object View Distance + Dynamiczny zasięg rysowania obiektów + + + Sets the object view distance as a coefficient of the view distance. + Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia. + + + Off + Wyłącz + + + Very Low + Bardzo niski + + + Low + Niski + + + Medium + Średni + + + High + Wysoki + + + Very High + Bardzo wysoki + + + View Distance: + Zasięg widzenia: + + + Object View Distance is + Zasięg widzenia obiektów wynosi + + + That option is invalid! The limit is + Ta opcja jest nieprawidłowa! Limit wynosi + diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 5fa8215294..e756d5d085 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -1,71 +1,69 @@  - - - Zeus Settings [ACE] - Ustawienia Zeusa [ACE] - - - Provides control over various aspects of Zeus. - Pozwala kontrolować różne aspekty Zeusa. - - - Ascension Messages - Wiad. o nowym Zeusie - - - Display global popup messages when a player is assigned as Zeus. - Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus - - - Zeus Eagle - Orzeł Zeusa - - - Spawn an eagle that follows the Zeus camera. - Spawnuj orła, który podąrza za kamerą Zeusa. - - - Wind Sounds - Dźwięki wiatru - - - Play wind sounds when Zeus remote controls a unit. - Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. - - - Ordnance Warning - Ostrz. o ostrzale arty. - - - Play a radio warning when Zeus uses ordnance. - Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. - - - Reveal Mines - Pokazuj miny - - - Reveal mines to allies and/or place map markers. - Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. - - - Disabled - Wyłączone - - - Reveal to Allies - Pokaż dla sojuszników - - - Allies + Map Markers - Sojusznicy + markery na mapie - - - ACE Zeus - ACE Zeus - - + + Zeus Settings [ACE] + Ustawienia Zeusa [ACE] + + + Provides control over various aspects of Zeus. + Pozwala kontrolować różne aspekty Zeusa. + + + Ascension Messages + Wiad. o nowym Zeusie + + + Display global popup messages when a player is assigned as Zeus. + Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus + + + Zeus Eagle + Orzeł Zeusa + + + Spawn an eagle that follows the Zeus camera. + Spawnuj orła, który podąrza za kamerą Zeusa. + + + Wind Sounds + Dźwięki wiatru + + + Play wind sounds when Zeus remote controls a unit. + Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę. + + + Ordnance Warning + Ostrz. o ostrzale arty. + + + Play a radio warning when Zeus uses ordnance. + Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii. + + + Reveal Mines + Pokazuj miny + + + Reveal mines to allies and/or place map markers. + Pokazuj znaczniki min dla sojuszników i/lub twórz markery na mapie w miejscu min. + + + Disabled + Wyłączone + + + Reveal to Allies + Pokaż dla sojuszników + + + Allies + Map Markers + Sojusznicy + markery na mapie + + + ACE Zeus + ACE Zeus + From 7eeddfbd6584a6135600ede616cdc5df41c6109a Mon Sep 17 00:00:00 2001 From: Macusercom Date: Tue, 26 May 2015 17:04:53 +0200 Subject: [PATCH 03/63] German translations Added a lot of German translations and fixed even more typos. --- addons/advanced_ballistics/stringtable.xml | 25 ++++- addons/ballistics/stringtable.xml | 3 +- addons/captives/stringtable.xml | 4 +- addons/common/stringtable.xml | 16 ++- addons/explosives/stringtable.xml | 9 +- addons/fcs/stringtable.xml | 4 +- addons/hearing/stringtable.xml | 3 + addons/interaction/stringtable.xml | 11 +- addons/inventory/stringtable.xml | 4 +- addons/magazinerepack/stringtable.xml | 6 +- addons/map/stringtable.xml | 13 +++ addons/medical/stringtable.xml | 114 ++++++++++++++++++--- addons/microdagr/stringtable.xml | 7 +- addons/missileguidance/stringtable.xml | 7 +- addons/mk6mortar/stringtable.xml | 9 +- addons/nametags/stringtable.xml | 23 ++++- addons/nightvision/stringtable.xml | 16 +-- addons/optionsmenu/stringtable.xml | 14 ++- addons/respawn/stringtable.xml | 13 ++- addons/switchunits/stringtable.xml | 15 ++- addons/vehiclelock/stringtable.xml | 15 ++- addons/weather/stringtable.xml | 14 +++ addons/winddeflection/stringtable.xml | 12 ++- 23 files changed, 301 insertions(+), 56 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index d39139ce36..1d37742800 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -28,92 +28,115 @@ Advanced Ballistics Zaawansowana balistyka + Erweiterte Ballistik Advanced Ballistics Zaawansowana balistyka + Erweiterte Ballistik Enables advanced ballistics Aktywuje zaawansowaną balistykę + Aktiviert die erweiterte Ballistik Enabled For Snipers + Für Sniper aktiviert Enables advanced ballistics for non local snipers (when using high power optics) + Aktiviert die erweiterte Ballistik für Nicht-lokale-Sniper (wenn Optiken mit hohem Zoom) Enabled For Group Members + Für Gruppenmitglieder aktiviert Enables advanced ballistics for non local group members + Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder Enabled For Everyone + Für jeden aktiviert Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer) + Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das zu aktivieren könnte die Leistung während großen Feuergefechten im Multiplayer reduzieren) Always Enabled For Group Members Zawsze akt. dla czł. grupy + Für Gruppenmitglieder immer aktiviert Always enables advanced ballistics when a group member fires Aktywuje zaawansowaną balistykę dla wszystkich członków grupy + Erweiterte Ballistik immer aktiviert lassen, wenn ein Gruppenmitglieder schießt Disabled In FullAuto Mode Wył. podczas ognia auto. + Im Aut Disables the advanced ballistics during full auto fire Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego + Deaktiviert die erweiterte Ballistik während Vollautomatik Enable Ammo Temperature Simulation Symulacja temp. amunicji + Munitionstemperatur-Simulation aktivieren Muzzle velocity varies with ammo temperature Prędkość wylotowa pocisku jest zależna od temperatury amunicji + Mün Enable Barrel Length Simulation Symulacja długości lufy + Lauflängen-Simulation aktivieren Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy + Länge des Laufs verändert Mündungsbeschleunigung Enable Bullet Trace Effect Efekt smugi pocisku + Leuchtspurgeschosse aktivieren 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ę) + Aktiviere Leuchtspurgeschosse für hohe Kaliber (nur sichtbar bei Verwendung von Visieren) Simulation Interval Interwał symulacji + Simulationsinterval Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji + Gibt das Interval zwischen jeder Berechnung an Simulation Radius Zasięg symulacji + Simulationsradius 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 + Gibt den Radius an (in Metern) bei dem die erweiterte Ballistik um den Spieler auf Geschosse angewendet wird 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. - + \ No newline at end of file diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml index 85ac44b4de..68b6146ca8 100644 --- a/addons/ballistics/stringtable.xml +++ b/addons/ballistics/stringtable.xml @@ -1595,6 +1595,7 @@ [ACE] Ammo Supply Crate [ACE] Skrzynka z amunicją + [ACE] Munitionskiste - + \ No newline at end of file diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 07cf780e19..9c164e28fe 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -196,10 +196,12 @@ Make Unit Surrender Poddaj się! + Einheit aufgeben lassen Sync a unit to make them surrender.<br />Source: ace_captives Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives + Einheit synchronisieren, um sie aufgeben zu lassen.<br />Quelle: ace_captives - + \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 1b960de982..6a1ff475a1 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -39,7 +39,7 @@ ACE Options - ACE Optionen + ACE-Optionen Opciones ACE Ustawienia ACE Nastavení ACE @@ -473,6 +473,7 @@ Check PBOs Sprawdzaj PBO + Überprüfe PBOs @@ -481,46 +482,57 @@ Action Akcja + Aktion What to do with people who do not have the right PBOs? Co zrobić z graczami, którzy nie mają właściwych PBO? + Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? Warn once Ostrzeż raz + Einmal verwarnen Warn (permanent) Ostrzeżenie (permanentne) + Immer verwarnen Kick Kick + Kicken Check all addons Sprawdź wsz. addony + Alle Addons überprüfen Check all addons instead of only those of ACE? Sprawdzaj wszystkie addony czy tylko te z ACE? + Alle Addons anstatt nur ACE überprüfen? Whitelist Biała lista + Whitelist What addons are allowed regardless? Jakie addony są dozwolone? + Welche Addons werden dennoch erlaubt? LSD Vehicles Pojazdy LSD + LSD-Fahrzeuge Adds LSD effect to synchronized vehicle Dodaje efekt LSD pod zsynchronizowany pojazd + Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu - + \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 5f5076175d..e88d7f0a4b 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -508,26 +508,31 @@ Explosive System System ładunków wybuchowych + Sprengstoffsystem Require specialists? Wymagaj specjalistów? + Benötigt Experten? Require explosive specialists to disable explosives? Default: No Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie + Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein Punish non-specialists? Karaj nie-specjalistów? + Bestrafe Nicht-Experten? 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 + Entschärfungszeit für Nicht-Experten erhöhen? Standard: Ja Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem. - + \ No newline at end of file diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml index d62a5d85ea..77d683fc98 100644 --- a/addons/fcs/stringtable.xml +++ b/addons/fcs/stringtable.xml @@ -3,7 +3,7 @@ Lase Target / Measure Distance - Ziel anlasern / Entfernung Messen + Ziel anlasern / Entfernung messen Télémétrer la cible Naświetl cel / Zmierz odległość Označit cíl / Změřit vzdálenost @@ -74,4 +74,4 @@ СУО обнулен. - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 9e960f6d63..e8bf6c4ab1 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -112,14 +112,17 @@ Hearing Słuch + Gehör Enable combat deafness? Wł. głuchotę bojową + Aktiviere Taubheit im Gefecht? Enable combat deafness? Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów + Aktiviere Taubheit im Gefecht? diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b2e75ccdff..aa39762f6c 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -111,7 +111,7 @@ Interaction Menu (Self) - Interaktionsmenü (Selbst) + Interaktionsmenü (selbst) Menú de interacción (Propio) Menu interakcji (własne) Menu interakce (vlastní) @@ -495,7 +495,7 @@ Get Down! - Auf Den Boden! + Auf den Boden! Al suelo! Padnij! K zemi! @@ -507,7 +507,7 @@ Team Management - Team Management + Teamverwaltung Gestión de equipo Gestion d'équipe Zarządzanie oddziałem @@ -796,14 +796,17 @@ Interaction System System interakcji + Interaktionssystem Enable Team Management Wł. zarządzanie drużyną + Aktiviere Teamverwaltung 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 + Sollen Spieler das Teamverwaltungsmenü verwenden dürfen? Standard: Ja diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 6ad5ec0408..8272594df5 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -15,7 +15,7 @@ Normally inventory display is scaled by UI size. This allows scaling the Inventory UI size up, but doesn't increase font size allowing more rows displayed. - Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden. + Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es, das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden. Normalmente la pantalla de inventario se escala por el tamaño de la interfaz de usuario. Esto permite ampliar el tamaño de la interfaz de usuario de inventario, pero no aumenta el tamaño de fuente, permitiendo mostrar más filas. Обычно, размер окна инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря, не увеличивая размеры шрифтов, так что отображется большее количество строк. Normálně se velikost invetáře škáluje s velikostí UI. Toto nastavení dovoluje škálování velikost inventáře ale nežvětšuje velikost fontu. To dovoluje zobrazení více řad v inventáři. @@ -26,4 +26,4 @@ Normalmente o tamanho da tela do inventário é ditada pelo tamanho da UI. Isso permite aumentar o tamanho da tela de inventário, mas não aumenta o tamanho da fonte, permitindo que mais linhas sejam visualizadas. - + \ No newline at end of file diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml index 8c1a0e01dc..c6879280da 100644 --- a/addons/magazinerepack/stringtable.xml +++ b/addons/magazinerepack/stringtable.xml @@ -76,7 +76,7 @@ Repacking Finished Réorganisation terminée - Wiederverpacken Fertig + Wiederverpacken fertig Reorganización finalizada Перепаковка завершена Páskování dokončeno @@ -88,7 +88,7 @@ Repacking Interrupted Réorganisation interrompue - Umpacken Unterbrochen + Umpacken unterbrochen Reorganización interrumpida Перепаковка прервана Páskování přerušeno @@ -110,4 +110,4 @@ %1 Total e %2 Parcial - + \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index c93ff4c286..d6546b2b4c 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -4,10 +4,12 @@ Map Mapa + Karte Map illumination? Oświetlenie mapy + Kartenbeleuchtung Calculate dynamic map illumination based on light conditions? @@ -16,26 +18,32 @@ Map shake? Drżenie mapy + Kamerawackeln Make map shake when walking? Ekran mapy drży podczas ruchu + Kamerawackeln beim Gehen? Limit map zoom? Ograniczony zoom + Kartenzoom einschränken Limit the amount of zoom available for the map? Ogranicza maksymalny stopień przybliżenia mapy + Zoomstufe der Karte einschränken? Show cursor coordinates? Koordynaty pod kursorem + Zeige Cursor-Koordinaten? Show the grid coordinates on the mouse pointer? Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy + Gitter-Koordinaten auf dem Mauszeiger anzeigen? @@ -44,22 +52,27 @@ Blue Force Tracking Blue Force Tracking + Blue Force Tracking Interval Interwał + Interval How often the markers should be refreshed (in seconds) Jak często markery powinny być odświeżane (w sekundach) + Wie oft sollen die Markierungen aktualisiert werden (in Sekunden) Hide AI groups? Ukryj grupy AI + KI-Gruppen verstecken? Hide markers for 'AI only' groups? Ukrywa markery dla grup złożonych tylko z AI + Verstecke Marker für "nur KI"-Gruppen? diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 9e818e8ca3..7384fea5ae 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -44,7 +44,7 @@ Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента. 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-Lags erzeugen, deswegen ist diese Einstellung nur clientseitig. + 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. @@ -111,7 +111,7 @@ Transfuse Saline - Salzlösungtransfusion + Salzlösungstransfusion Transfundir salino Transfúze fyziologický roztoku Przetocz sól fizjologiczną @@ -123,7 +123,7 @@ Apply Tourniquet - Tourniquet anwenden + Druckverband anwenden Aplicar torniquete Aplikovat škrtidlo Załóż stazę @@ -171,7 +171,7 @@ Bandage Left Arm - Arm links verbinden + Linken Arm verbinden Vendar el brazo izquierdo Bandażuj lewe ramię Obvázat levou ruku @@ -183,7 +183,7 @@ Bandage Right Arm - Arm rechts verbinden + Rechten Arm verbinden Vendar el brazo derecho Bandażuj prawe ramię Obvázat pravou ruku @@ -195,7 +195,7 @@ Bandage Left Leg - Bein links verbinden + Linkes Bein verbinden Vendar la pierna izquierda Bandażuj lewą nogę Obvázat levou nohu @@ -207,7 +207,7 @@ Bandage Right Leg - Bein rechts verbinden + Rechtes Bein verbinden Vendar la pierna derecha Bandażuj prawą nogę Obvázat pravou nohu @@ -267,7 +267,7 @@ Transfusing Saline ... - Sallösungtransfusion ... + Salzlösungtransfusion ... Transfusión de salino ... Probíha transfúze fyziologický roztoku ... Przetaczanie soli fizjologicznej ... @@ -747,7 +747,7 @@ Tourniquet [CAT] - Tourniquet [CAT] + Druckverband [CAT] Жгут Torniquete [CAT] Tourniquet [CAT] @@ -787,7 +787,7 @@ Utilizado para cubrir una herida Utilisé pour couvrir une blessure Używany w celu przykrycia i ochrony miejsca zranienia - Verwendet, um Wunden abzudecken + Verwendet um Wunden abzudecken Sebesülések befedésére alkalmas Usato per coprire una ferita Usado para cobrir um ferimento @@ -915,7 +915,7 @@ Morphine autoinjector - Morphium Autoinjektor + Morphium-Autoinjektor Морфин в пневмошприце Morfina auto-inyectable Auto-injecteur de Morphine @@ -955,7 +955,7 @@ Atropina auto-inyectable Auto-injecteur d'Atropine Autostrzykawka AtroPen - Atropin Autoinjektor + Atropin-Autoinjektor Autoinjektor atropin Atropin autoinjektor Autoiniettore di atropina @@ -967,7 +967,7 @@ Usado en escenarios NBQ Utilisé en cas d'attaque CBRN Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. - Verwendet bei ABC Kontamination + Verwendet bei ABC-Kontamination NBK helyzetek esetén használandó Usato in situazioni con gas nervino. Usado em casos de ataque QBRN @@ -979,7 +979,7 @@ 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. + 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. @@ -991,7 +991,7 @@ Epinefrina auto-inyectable Auto-injecteur d'épinéphrine Autostrzykawka EpiPen - Epiniphrin Autoinjektor + Epiniphrin-Autoinjektor Autoinjektor adrenalin Epinefrin autoinjektor Autoiniettore di epinefrina @@ -1016,7 +1016,7 @@ 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, dass die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht. + 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ě. @@ -2708,10 +2708,12 @@ Medical Settings [ACE] Ustawienia medyczne [ACE] + Medizinische Einstellungen [ACE] Medical Level Poziom medyczny + Medizinisches Level What is the medical simulation level? @@ -2720,14 +2722,17 @@ Basic Podstawowy + Standard Advanced Zaawansowany + Erweitert Medics setting Poziom medyków + Medizinische Einstellungen What is the level of detail prefered for medics? @@ -2736,10 +2741,12 @@ Disable medics Wyłącz medyków + Sanitäter deaktivieren Enable Litter Aktywuj odpadki + Abfall aktivieren Enable litter being created upon treatment @@ -2756,14 +2763,17 @@ Enable Screams Aktywuj wrzaski + Schreie aktivieren Enable screaming by injuried units Aktywuj wrzeszczenie z bólu przez ranne jednostki + Aktiviere Schreie bei verletzten Einheiten Player Damage Próg obrażeń graczy + Spielerschaden What is the damage a player can take before being killed? @@ -2772,6 +2782,7 @@ AI Damage Próg obrażeń AI + KI-Schaden What is the damage an AI can take before being killed? @@ -2780,118 +2791,147 @@ AI Unconsciousness Nieprzytomność AI + KI-Bewusstlosigkeit Allow AI to go unconscious Czy AI może być nieprzytomne od odniesionych obrażeń? + KI kann bewusstlos werden Disabled Wyłączone + Deaktiviert Enabled Włączone + Aktiviert Prevent instant death Wył. natychmiast. śmierć + Verhindere direkten Tod 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ń + Lässt eine Einheit bewusstlos werden anstatt zu sterben Bleeding coefficient Mnożnik krwawienia + Verblutungsmultiplikator Coefficient to modify the bleeding speed Mnożnik modyfikujący prędkość wykrwawiania się + Multiplikator um die Verblutungsgeschwindigkeit zu verändern Pain coefficient Mnożnik bólu + Schmerzmultiplikator Coefficient to modify the pain intensity Mnożnik modyfikujący intensywność bólu + Multiplikator um den Schmerzintensität zu verändern Sync status Synchronizuj status + Status synchronisieren Keep unit status synced. Recommended on. Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej. + Status der Einheit synchron halten. Sollte aktiviert bleiben. Provides a medical system for both players and AI. Moduł ten dostarcza system medyczny dla graczy oraz AI. + Aktiviert ein medizinisches System für Spieler und KI. Advanced Medical Settings [ACE] Zaawansowane ustawienia medyczne [ACE] + Erweiterte medizinische Einstellungen [ACE] Enabled for Aktywne dla + Aktiviert für Select what units the advanced medical system will be enabled for Wybierz dla kogo zaawansowany system medyczny będzie aktywny + Wähle aus welche Einheiten das erweiterte medizinische System haben Players only Tylko dla graczy + Nur Spieler Players and AI Gracze oraz AI + Spieler und KI Enable Advanced wounds Akt. zaawansowane rany + Aktiviere erweiterte Wunden Allow reopening of bandaged wounds? Pozwól na otwieranie się zabandażowanych ran? + Erlaube das Öffnen von bandagierten Wunden? Vehicle Crashes Obrażenia od kolizji + Fahrzeugunfälle Do units take damage from a vehicle crash? Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? + Bekommen Einheiten von Fahrzeugunfällen Schaden? Allow PAK Ust. apteczek osobistych + Erlaube Erstehilfekasten Who can use the PAK for full heal? Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia? + Wer kann den Erstehilfekasten für eine Endheilung verwenden? Anyone Wszyscy + Jeder Medics only Tylko medycy + Nur Sanitäter Doctors only Tylko doktorzy + Nur Ärzte Remove PAK on use Usuń apteczkę po użyciu + Entferne Erstehilfekasten bei Verwendung Should PAK be removed on usage? Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu? + Sollen Erstehilfekästen bei Verwendung entfernt werden? Locations PAK @@ -2900,42 +2940,52 @@ Where can the personal aid kit be used? Gdzie można korzystać z apteczek osobistych? + Wo kann der Erstehilfekasten verwendet werden? Anywhere Wszędzie + Überall Medical vehicles Pojazdy medyczne + Medizinische Fahrzeuge Medical facility Budynki medyczne + Medizinische Einrichtungen Vehicles & facility Pojazdy i budynki medyczne + Fahrzeuge & Einrichtungen Disabled Wyłączone + Deaktiviert Allow Surgical kit (Adv) Ust. zestawu chirurg. + Erlaube Operationskasten Who can use the surgical kit? Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran? + Wer kann den Operationskasten verwenden? Remove Surgical kit (Adv) Usuń zest. chir. po użyciu + Enrtferne Operationskasten (erweitert) Should Surgical kit be removed on usage? Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu? + Entferne Operationskästen bei Verwendung? Locations Surgical kit (Adv) @@ -2944,58 +2994,72 @@ Where can the Surgical kit be used? Gdzie można korzystać z zestawu chirurgicznego? + Wo kann der Operationskasten verwendet werden? Configure the treatment settings from ACE Medical Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE + Behandlungseinstellungen vom ACE-Medical konfigurieren Revive Settings [ACE] Ustawienia wskrzeszania [ACE] + Wiederbelebungseinstellungen [ACE] Enable Revive Aktywuj wskrzeszanie + Erlaube Wiederbelebung Enable a basic revive system Aktywuj podstawowy system wskrzeszania + Aktiviere Standard-Wiederbelebungssystem Max Revive time Maks. czas agonii + Maximale Wiederbelebungszeit Max amount of seconds a unit can spend in revive state Maksymalna długość agonii w sekundach (czas na wskrzeszenie) + Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann Max Revive lives Maks. ilość wskrzeszeń + Maximale Leben bei Wiederbelebung Max amount of lives a unit. 0 or -1 is disabled. Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. + Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. 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. + Aktiviert das Medicsystem für Spieler und KI. Set Medic Class [ACE] Ustaw klasę medyka [ACE] + Setze Sanitäterklassen [ACE] List Lista + Liste List of unit names that will be classified as medic, separated by commas. Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. + Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. Is Medic Klasa medyczna + Ist Sanitäter @@ -3004,66 +3068,82 @@ None Żadna + Keine Regular medic Zwykły medyk + Normaler Sanitäter Doctor (Only Advanced Medics) Doktor (tylko zaawansowani medycy) + Arzt (nur erweiterte Sanitäter) Assigns the ACE medic class to a unit Moduł ten przypisuje klasę medyka ACE do jednostek. + Weise die ACE-Sanitäterklasse einer Einheit zu Set Medical Vehicle [ACE] Ustaw pojazd medyczny [ACE] + Setze medizinisches Fahrzeug [ACE] List Lista + Liste 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. + Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. Is Medical Vehicle Jest pojazdem med. + Ist medizinisches Fahrzeug Whatever or not the objects in the list will be a medical vehicle. Czy pojazdy z tej listy są pojazdami medycznymi. + Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. 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. + Weist die ACE-Sanitäterklasse einer Einheit zu Set Medical Facility [ACE] Ustaw budynek medyczny [ACE] + Setze medizinische Einrichtung [ACE] Is Medical Facility Jest budynkiem med. + Ist eine medizinische Einrichtung Registers an object as a medical facility Przypisuje danemu obiektowi status budynku medycznego + Definiert ein Objekt als medizinische Einrichtung 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. + Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. [ACE] Medical Supply Crate (Basic) [ACE] Skrzynka z zapasami medycznymi (podstawowa) + [ACE] Medizinische Kiste (standard) [ACE] Medical Supply Crate (Advanced) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) + [ACE] Medizinische Kiste (erweitert) Yes @@ -3090,4 +3170,4 @@ No - + \ No newline at end of file diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml index b1bac6976b..9371840137 100644 --- a/addons/microdagr/stringtable.xml +++ b/addons/microdagr/stringtable.xml @@ -312,22 +312,27 @@ How much map data is filled on MicroDAGR's Jak duża część informacji mapy jest załadowana do MicroDAGR? + Wie viel Daten auf einem MicroDAGR zu sehen sind Full Satellite + Buildings Pełna satelitarna + budynki + Satellitenbild + Gebäude Topographical + Roads Topograficzna + drogi + Topografisch + Straßen None (Cannot use map view) Żadna (wyłącza ekran mapy) + Keine (kann keine Kartenansicht verwenden) 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 + 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 - + \ No newline at end of file diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 798b2aafcd..d1042ee87e 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -19,7 +19,7 @@ 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 gelenkten Raketen. + 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. @@ -100,14 +100,17 @@ Off Wyłącz + Aus Player Only Tylko gracz + Nur Spieler Player and AI Gracz oraz AI + Spieler und KI - + \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index 37c7d322ad..e83153c57a 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -52,34 +52,41 @@ MK6 Settings Moździerz MK6 - Ustawienia + MK6-Einstellungen Air Resistance Opór powietrza + Luftwiderstand 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 + Für Spielerschüsse, Luftwiderstand und Windeffekte Allow MK6 Computer Komputer MK6 + Erlaube MK6-Computer 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) + Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist) Allow MK6 Compass Kompas MK6 + Erlaube MK6-Kompass Show the MK6 Digital Compass Pokaż kompas MK6 + Zeige MK6-Digitaler-Kompass Moduł ten pozwala dostosować ustawienia moździerza MK6. - + \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index ef94140510..64dcd4c32b 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -112,50 +112,62 @@ Name Tags Ustawienia imion + Namensanzeigen Player Names View Dist. Zasięg imion graczy + Spielernamen-Distanz 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 + Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 Show name tags for AI? Imiona AI + Zeige Namensanzeigen für KI? 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 + Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen Do Not Force Nie wymuszaj + Nicht erzwingen Force Hide Wymuś ukrycie + Verstecken erzwingen Force show Wymuś wyświetlanie + Anzeigen erzwingen Show crew info? Pokaż załogę + Zeige Besatzungsinfo? 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 + Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. Show for Vehicles Pokaż dla pojazdów + Zeige bei Fahrzeugen 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 + Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein @@ -164,38 +176,45 @@ Disabled Wyłączone + Deaktiviert Enabled Włączone + Aktiviert Only Cursor Tylko pod kursorem + Nur bei Maus Only On Keypress Tylko po wciśnięciu klawisza + Nur bei Tastendruck Only Cursor and KeyPress Tylko pod kursorem i po wciśnięciu klawisza + Nur Maus und Tastendruck Use Nametag settings Użyj ustawień imion + Verwende Namenanzeigen Always Show All Zawsze pokazuj wszystkie + Immer alle zeigen - 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. + 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. 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. - + \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index 9fe8593e13..050945d5d8 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -5,7 +5,7 @@ NV Goggles (Gen1) Noktovizor (Gen1) JVN (Gen1) - NS-Brille (Gen1) + NS-Brille (1. Gen.) Occhiali notturni (Gen1) Gogle noktowizyjne (Gen1) Óculos de visão noturna (Gen1) @@ -17,7 +17,7 @@ NV Goggles (Gen2) Noktovizor (Gen2) JVN (Gen2) - NS-Brille (Gen2) + NS-Brille (2. Gen.) Occhiali notturni (Gen2) Gogle noktowizyjne (Gen2) Óculos de visão noturna (Gen2) @@ -29,7 +29,7 @@ NV Goggles (Gen3) Noktovizor (Gen3) JVN (Gen3) - NS-Brille (Gen3) + NS-Brille (3. Gen.) Occhiali notturni (Gen3) Gogle noktowizyjne (Gen3) Óculos de visão noturna (Gen3) @@ -41,7 +41,7 @@ NV Goggles (Gen3, Brown) Noktovizor (Gen3, hnědý) JVN (Gen3, marron) - NS-Brille (Gen3, Braun) + NS-Brille (3. Gen., braun) Occhiali notturni (Gen3, marroni) Gogle noktowizyjne (Gen3, brązowe) Óculos de visão noturna (Gen3, marrons) @@ -53,7 +53,7 @@ NV Goggles (Gen3, Green) Noktovizor (Gen3, zelený) JVN (Gen3, vertes) - NS-Brille (Gen3, Grün) + NS-Brille (3. Gen., grün) Occhiali notturni (Gen3, verdi) Gogle noktowizyjne (Gen3, zielone) Óculos de visão noturna (Gen3, verdes) @@ -65,7 +65,7 @@ NV Goggles (Gen3, Black) Noktovizor (Gen3, černý) JVN (Gen3, noires) - NS-Brille (Gen3, Schwarz) + NS-Brille (3. Gen., schwarz) Occhiali notturni (Gen3, neri) Gogle noktowizyjne (Gen3, czarne) Óculos de visão noturna (Gen3, pretos) @@ -77,7 +77,7 @@ NV Goggles (Gen4) Noktovizor (Gen4) JVN (Gen4) - NS-Brille (Gen4) + NS-Brille (4. Gen.) Occhiali notturni (Gen4) Gogle noktowizyjne (Gen4) Óculos de visão noturna (Gen4) @@ -134,4 +134,4 @@ Riduci la luminosità dell'NVG - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 22a1a88cfa..4eb18dc46a 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -3,7 +3,7 @@ ACE Options - ACE Optionen + ACE-Optionen Opciones ACE Ustawienia ACE ACE Nastavení @@ -244,14 +244,17 @@ Allow Config Export [ACE] Pozwól na eksport ustawień [ACE] + Erlaube Config-Export [ACE] Allow Zezwól + Erlaube Allow export of all settings to a server config formatted. Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera. + Erlaube alle Einstellungen in einer Server-Config zu exportieren. When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard. @@ -260,30 +263,37 @@ Hide Ukryj + Verstecken Top right, downwards Po prawej u góry, w dół + Open rechts, nach unten Top right, to the left Po prawej u góry, do lewej + Von rechts nach links Top left, downwards Po lewej u góry, w dół + Von links, nach unten Top left, to the right Po lewej u góry, do prawej + Oben links nach rechts Top Góra + Oben Bottom Dół + Unten - + \ No newline at end of file diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index d7d5b7ac98..28e9da73a1 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -148,22 +148,27 @@ Respawn System System odrodzenia + Respawn-System Save Gear? Zapisać ekwipunek? + Ausrüstung speichern? Respawn with the gear a soldier had just before his death? Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? + Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? Remove bodies? Usuwać ciała? + Körper entfernen? Remove player bodies after disconnect? Usuwaj ciała graczy po rozłączeniu z serwera? + Entferne Spielerkörper nach dem Trennen einer Verbindung? @@ -172,6 +177,7 @@ Friendly Fire Messages Wiadomości Friendly Fire + Freundbeschuss-Nachrichten @@ -180,18 +186,21 @@ Rallypoint System System punktu zbiórki + Rallypoint-System - 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. + 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. Move Rallypoint Przenieś punkt zbiórki + Bewege Rallypoint ACE Respawn ACE Odrodzenie + ACE-Respawn - + \ No newline at end of file diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml index cdde0f8ff1..a1018f7840 100644 --- a/addons/switchunits/stringtable.xml +++ b/addons/switchunits/stringtable.xml @@ -28,58 +28,71 @@ SwitchUnits System System zmiany stron + Einheiten-Switch-System? Switch to West? Zmiana na Zachód? + Nach BLUFOR wechseln? Allow switching to west units? Pozwolić zmieniać graczom stronę na Zachód? + Erlaube das Wechseln zu BLUFOR-Einheiten? Switch to East? Zmiana na Wschód? + Nach OPFOR wechseln? Allow switching to east units? Pozwolić zmieniać graczom stronę na Wschód? + Erlaube das Wechseln zu OPFOR-Einheiten? Switch to Independent? Zmiana na Ruch Oporu? + Nach INDFOR wechseln? Allow switching to independent units? Pozwolić zmieniać stronę na Ruch Oporu? + Erlaube das Wechseln zu INDFOR-Einheiten? Switch to Civilian? Zmiana na Cywili? + Nach CIVILIAN wechseln? Allow switching to civilian units? Pozwolić zmieniać stronę na Cywili? + Erlaube das Wechseln zu CIVILIAN-Einheiten? Enable Safe Zone? Aktywuj bezp. strefę? + Aktiviere Sicherheitszone? 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. + Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln. Safe Zone Radius Promień bezp. strefy + Sicherheitszonenradius The safe zone around players from a different team. Default: 200 Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200 + Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200 - + \ No newline at end of file diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml index 4738d045df..ddd3bc72d3 100644 --- a/addons/vehiclelock/stringtable.xml +++ b/addons/vehiclelock/stringtable.xml @@ -136,54 +136,67 @@ Vehicle Lock Setup Ustawienie blokady pojazdów + Fahrzeugsperreinstellungen Lock Vehicle Inventory Zablokuj ekwipunek pojazdu + Sperre Fahrzeuginventar Locks the inventory of locked vehicles Blokuje dostęp do ekwipunku pojazdu + Sperrt das Inventar von gesperrten Fahrzeugen Vehicle Starting Lock State Początkowy stan blok. poj. + Fahrzeuge spawnen gesperrt Set lock state for all vehicles (removes ambiguous lock states) Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady) + Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände) As Is Jak jest + Unverändert Locked Zablokowany + Gesperrt Unlocked Odblokowany + Offen Default Lockpick Strength Czas włamywania + Standard-Pick-Stärke Default Time to lockpick (in seconds). Default: 10 Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10 + Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 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 + Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.<br />Quelle: vehiclelock.pbo Vehicle Key Assign Przydział kluczyka do pojazdu + Fahrzeugschlüsselzuweisung 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 + 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 - + \ No newline at end of file diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 02c0964e03..12612aad43 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -16,58 +16,72 @@ Weather Pogoda + Wetter Multiplayer synchronized ACE weather module Synchronizowana pogoda ACE + Synchronisiere ACE-Wettermodul im Multiplayer Weather propagation Zmiany pogody + Wettervorhersage Enables server side weather propagation Aktywuje zmiany pogody po stronie serwera + Aktiviere serverseitige Wettervorhersage ACE Weather Pogoda ACE + ACE-Wetter 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) + Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert) Sync Rain Synchronizuj deszcz + Regen synchronisieren Synchronizes rain Synchronizuje deszcz + Synchronisiert den Regen Sync Wind Synchronizuj wiatr + Wind synchronisieren Synchronizes wind Synchronizuje wiatr + Synchronisiert den Wind Sync Misc Synchronizuj różne + Sonstiges synchronisieren Synchronizes lightnings, rainbow, fog, ... Synchronizuje pioruny, tęcze, mgłę, ... + Synchronisiert Blitze, Regenbögen, Nebel, ... Update Interval Interwał aktualizacji + Aktualisierungsintervall Defines the interval (seconds) between weather updates Określa interwał (sekundy) pomiędzy aktualizacjami pogody + Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen \ No newline at end of file diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 806bf4c449..5707797e76 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -65,43 +65,53 @@ Wind Deflection Wpływ wiatru + Windböen Wind Deflection Wpływ wiatru + Windböen Enables wind deflection Aktywuje wpływ wiatru na trajektorię lotu pocisków + Aktiviert Windböen Vehicle Enabled Włączone dla pojazdów + Fahrzeuge aktiviert Enables wind deflection for static/vehicle gunners Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach + Aktiviere Windböen für statische oder Fahrzeugschützen Simulation Interval Interwał symulacji + Simulationsintervall Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji + Definiert das Intervall zwischen jedem Berechnungsschritt Simulation Radius Zasięg symulacji + Simulationsradius 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 + Gibt den Radius um den Spieler (in Metern) an, bei der Projektile vom Wind beeinflusst werden Wind influence on projectiles trajectory Wpływ wiatru na trajektorię lotu pocisków + Wind hat Einfluss auf Projektilflugbahn - + \ No newline at end of file From adf29d75e3d536d21c3ab3f636a0149083d9130a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 26 May 2015 23:15:50 -0500 Subject: [PATCH 04/63] Explosives - Local Defuse Helpers --- addons/explosives/XEH_postInit.sqf | 55 +++++++++++++------ .../functions/fnc_placeExplosive.sqf | 10 +--- .../functions/fnc_place_Approve.sqf | 2 +- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 88a7bbba95..5bff254613 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -15,26 +15,45 @@ */ #include "script_component.hpp" -//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them -//Handles Editor Placed / Zeus / Scripted -if (isServer) then { - [{ - private ["_explosive", "_helpers", "_defuseHelper"]; - { - _explosive = _x; - _helpers = { - ((typeOf _x) == "ACE_DefuseObject") && {(_x getVariable [QGVAR(Explosive), objNull]) == _explosive} - } count (attachedObjects _explosive); +//Event system to add the defuse object to all explosive devices (defuse is local) +GVAR(explosivesHelped) = []; +GVAR(defuseOjbects) = []; - if (_helpers == 0) then { - TRACE_3("Explosive without helper",_explosive,(getPosAsl _explosive),(typeOf _explosive)); - _defuseHelper = createVehicle ["ACE_DefuseObject", (getPos _explosive), [], 0, "NONE"]; - _defuseHelper attachTo [_explosive, [0,0,0], ""]; - _defuseHelper setVariable [QGVAR(Explosive),_explosive,true]; +["explosive_placed", { + PARAMS_1(_explosive); + if (_explosive in GVAR(explosivesHelped)) exitWith {}; + private ["_defuseHelper"]; + _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _explosive); + _defuseHelper attachTo [_explosive, [0,0,0]]; + _defuseHelper setVariable [QGVAR(Explosive),_explosive]; + TRACE_3("Added local defuse to helper",_explosive,(typeOf _explosive),_defuseHelper); + GVAR(explosivesHelped) pushBack _explosive; + GVAR(defuseOjbects) pushBack _defuseHelper; +}] call EFUNC(common,addEventHandler); + +//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them +//Handles Editor Placed / Zeus / Scripted / JIP +[{ + private ["_modeAdd"]; + _modeAdd = (_this select 0) select 0; + if (_modeAdd) then { + TRACE_2("Adding Helpers",(count allMines),(count GVAR(explosivesHelped))); + { + TRACE_2("Explosive without helper",_explosive,(typeOf _explosive)); + ["explosive_placed", [_x]] call EFUNC(common,localEvent); + } forEach (allMines - GVAR(explosivesHelped)); + } else { + TRACE_2("Cleaning Helpers",(count allMines),(count GVAR(explosivesHelped))); + { + if (isNull _x) then { + deleteVehicle (GVAR(defuseObjects) select _forEachIndex); }; - } forEach allMines; - }, 5, []] call CBA_fnc_addPerFrameHandler; -}; + } forEach GVAR(explosivesHelped); + GVAR(explosivesHelped) = GVAR(explosivesHelped) - [objNull]; + GVAR(defuseOjbects) = GVAR(defuseOjbects) - [objNull]; + }; + (_this select 0) set [0, !_modeAdd]; +}, 5, [true]] call CBA_fnc_addPerFrameHandler; if !(hasInterface) exitWith {}; GVAR(PlacedCount) = 0; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index 2e6a0ad2c5..f4fcacb7b1 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -51,18 +51,12 @@ if (isText(_magazineTrigger >> "ammo")) then { _ammo = getText (_magazineTrigger >> "ammo"); }; _triggerSpecificVars pushBack _triggerConfig; -private ["_defuseHelper"]; -_defuseHelper = createVehicle ["ACE_DefuseObject", _pos, [], 0, "NONE"]; -_defuseHelper setPosATL _pos; _explosive = createVehicle [_ammo, _pos, [], 0, "NONE"]; -_defuseHelper attachTo [_explosive, [0,0,0], ""]; -_defuseHelper setVariable [QGVAR(Explosive),_explosive,true]; - -_expPos = getPosATL _explosive; -_defuseHelper setPosATL (((getPosATL _defuseHelper) vectorAdd (_pos vectorDiff _expPos))); _explosive setPosATL _pos; +["explosive_placed", [_explosive]] call EFUNC(common,globalEvent); + if (!isNull _attachedTo) then { TRACE_1("Attaching Live Explosive",_attachedTo); _explosive attachTo [_attachedTo]; diff --git a/addons/explosives/functions/fnc_place_Approve.sqf b/addons/explosives/functions/fnc_place_Approve.sqf index 323e8bd634..0604045f65 100644 --- a/addons/explosives/functions/fnc_place_Approve.sqf +++ b/addons/explosives/functions/fnc_place_Approve.sqf @@ -37,7 +37,7 @@ if (_dir > 180) then { } else { _dir = 180 + _dir; }; -_setup setVariable [QGVAR(Direction), _dir]; +_setup setVariable [QGVAR(Direction), _dir, true]; _player setVariable [QGVAR(PlantingExplosive), true]; [{_this setVariable [QGVAR(PlantingExplosive), false]}, _player, 1.5, 0.5] call EFUNC(common,waitAndExecute); _setup addEventHandler ["EpeContactStart", FUNC(onLanded)]; From 5cb095309435ed47bda9c4a3a047248614e3a31f Mon Sep 17 00:00:00 2001 From: Macusercom Date: Wed, 27 May 2015 19:11:32 +0200 Subject: [PATCH 05/63] Fixed German translations Fixed some typos and phrases --- addons/advanced_ballistics/stringtable.xml | 20 ++++++++++---------- addons/weather/stringtable.xml | 6 +++--- addons/winddeflection/stringtable.xml | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index 1d37742800..c1ccbe3d3e 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -46,7 +46,7 @@ Enables advanced ballistics for non local snipers (when using high power optics) - Aktiviert die erweiterte Ballistik für Nicht-lokale-Sniper (wenn Optiken mit hohem Zoom) + Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung) Enabled For Group Members @@ -72,17 +72,17 @@ Always enables advanced ballistics when a group member fires Aktywuje zaawansowaną balistykę dla wszystkich członków grupy - Erweiterte Ballistik immer aktiviert lassen, wenn ein Gruppenmitglieder schießt + Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt Disabled In FullAuto Mode Wył. podczas ognia auto. - Im Aut + Beim vollautomatischen Feuern deaktiviert Disables the advanced ballistics during full auto fire Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego - Deaktiviert die erweiterte Ballistik während Vollautomatik + Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern Enable Ammo Temperature Simulation @@ -92,7 +92,7 @@ Muzzle velocity varies with ammo temperature Prędkość wylotowa pocisku jest zależna od temperatury amunicji - Mün + Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit Enable Barrel Length Simulation @@ -102,17 +102,17 @@ Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy - Länge des Laufs verändert Mündungsbeschleunigung + Länge des Laufs verändert Mündungsgeschwindigkeit Enable Bullet Trace Effect Efekt smugi pocisku - Leuchtspurgeschosse aktivieren + Geschossspureffekt aktivieren 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ę) - Aktiviere Leuchtspurgeschosse für hohe Kaliber (nur sichtbar bei Verwendung von Visieren) + Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung) Simulation Interval @@ -122,7 +122,7 @@ Defines the interval between every calculation step Określa interwał pomiędzy każdym krokiem kalkulacji - Gibt das Interval zwischen jeder Berechnung an + Legt das Intervall zwischen den Berechnungsschritten fest Simulation Radius @@ -132,7 +132,7 @@ 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 - Gibt den Radius an (in Metern) bei dem die erweiterte Ballistik um den Spieler auf Geschosse angewendet wird + Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml index 12612aad43..5bc687af38 100644 --- a/addons/weather/stringtable.xml +++ b/addons/weather/stringtable.xml @@ -21,17 +21,17 @@ Multiplayer synchronized ACE weather module Synchronizowana pogoda ACE - Synchronisiere ACE-Wettermodul im Multiplayer + ACE-Wettermodul (synchron im Multiplayer) Weather propagation Zmiany pogody - Wettervorhersage + Wetterübertragung Enables server side weather propagation Aktywuje zmiany pogody po stronie serwera - Aktiviere serverseitige Wettervorhersage + Aktiviere serverseitige Wetterübertragung ACE Weather diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml index 5707797e76..177a3fa3bd 100644 --- a/addons/winddeflection/stringtable.xml +++ b/addons/winddeflection/stringtable.xml @@ -65,17 +65,17 @@ Wind Deflection Wpływ wiatru - Windböen + Windablenkung Wind Deflection Wpływ wiatru - Windböen + Windablenkung Enables wind deflection Aktywuje wpływ wiatru na trajektorię lotu pocisków - Aktiviert Windböen + Aktiviert Windablenkung Vehicle Enabled @@ -85,7 +85,7 @@ Enables wind deflection for static/vehicle gunners Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach - Aktiviere Windböen für statische oder Fahrzeugschützen + Aktiviere Windablenkung für statische oder Fahrzeugschützen Simulation Interval @@ -105,12 +105,12 @@ 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 - Gibt den Radius um den Spieler (in Metern) an, bei der Projektile vom Wind beeinflusst werden + Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden Wind influence on projectiles trajectory Wpływ wiatru na trajektorię lotu pocisków - Wind hat Einfluss auf Projektilflugbahn + Windeinfluss auf die Geschossbahnen From 5f2bee09e444d47879e3d4576e132241a0694a6e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 27 May 2015 14:09:06 -0500 Subject: [PATCH 06/63] Create Defuse Helpers on demand --- addons/explosives/XEH_postInit.sqf | 43 +------------- addons/explosives/XEH_preInit.sqf | 2 + .../functions/fnc_defuseExplosive.sqf | 6 -- .../functions/fnc_detonateExplosive.sqf | 6 -- .../explosives/functions/fnc_interactEH.sqf | 56 +++++++++++++++++++ .../functions/fnc_placeExplosive.sqf | 2 - 6 files changed, 61 insertions(+), 54 deletions(-) create mode 100644 addons/explosives/functions/fnc_interactEH.sqf diff --git a/addons/explosives/XEH_postInit.sqf b/addons/explosives/XEH_postInit.sqf index 5bff254613..01df02f87e 100644 --- a/addons/explosives/XEH_postInit.sqf +++ b/addons/explosives/XEH_postInit.sqf @@ -15,47 +15,10 @@ */ #include "script_component.hpp" -//Event system to add the defuse object to all explosive devices (defuse is local) -GVAR(explosivesHelped) = []; -GVAR(defuseOjbects) = []; - -["explosive_placed", { - PARAMS_1(_explosive); - if (_explosive in GVAR(explosivesHelped)) exitWith {}; - private ["_defuseHelper"]; - _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _explosive); - _defuseHelper attachTo [_explosive, [0,0,0]]; - _defuseHelper setVariable [QGVAR(Explosive),_explosive]; - TRACE_3("Added local defuse to helper",_explosive,(typeOf _explosive),_defuseHelper); - GVAR(explosivesHelped) pushBack _explosive; - GVAR(defuseOjbects) pushBack _defuseHelper; -}] call EFUNC(common,addEventHandler); - -//Start up a PFEH that scans all mines/explosives without defuseObjects attached and adds them -//Handles Editor Placed / Zeus / Scripted / JIP -[{ - private ["_modeAdd"]; - _modeAdd = (_this select 0) select 0; - if (_modeAdd) then { - TRACE_2("Adding Helpers",(count allMines),(count GVAR(explosivesHelped))); - { - TRACE_2("Explosive without helper",_explosive,(typeOf _explosive)); - ["explosive_placed", [_x]] call EFUNC(common,localEvent); - } forEach (allMines - GVAR(explosivesHelped)); - } else { - TRACE_2("Cleaning Helpers",(count allMines),(count GVAR(explosivesHelped))); - { - if (isNull _x) then { - deleteVehicle (GVAR(defuseObjects) select _forEachIndex); - }; - } forEach GVAR(explosivesHelped); - GVAR(explosivesHelped) = GVAR(explosivesHelped) - [objNull]; - GVAR(defuseOjbects) = GVAR(defuseOjbects) - [objNull]; - }; - (_this select 0) set [0, !_modeAdd]; -}, 5, [true]] call CBA_fnc_addPerFrameHandler; - if !(hasInterface) exitWith {}; + +["interactMenuOpened", {_this call FUNC(interactEH)}] call EFUNC(common,addEventHandler); + GVAR(PlacedCount) = 0; GVAR(Setup) = objNull; GVAR(pfeh_running) = false; diff --git a/addons/explosives/XEH_preInit.sqf b/addons/explosives/XEH_preInit.sqf index d010fd8d1e..863ab287a7 100644 --- a/addons/explosives/XEH_preInit.sqf +++ b/addons/explosives/XEH_preInit.sqf @@ -36,6 +36,8 @@ PREP(handleScrollWheel); PREP(hasExplosives); PREP(hasPlacedExplosives); +PREP(interactEH); + PREP(getDetonators); PREP(getPlacedExplosives); PREP(getSpeedDialExplosive); diff --git a/addons/explosives/functions/fnc_defuseExplosive.sqf b/addons/explosives/functions/fnc_defuseExplosive.sqf index 5abfabe60f..28a14b25a5 100644 --- a/addons/explosives/functions/fnc_defuseExplosive.sqf +++ b/addons/explosives/functions/fnc_defuseExplosive.sqf @@ -21,10 +21,4 @@ if (getNumber (ConfigFile >> "CfgAmmo" >> typeof _explosive >> "ACE_explodeOnDef [_unit, -1, [_explosive, 1], true] call FUNC(detonateExplosive); }; -{ - detach _x; - deleteVehicle _x; - false -} count (attachedObjects (_explosive)); - _unit action ["Deactivate", _unit, _explosive]; diff --git a/addons/explosives/functions/fnc_detonateExplosive.sqf b/addons/explosives/functions/fnc_detonateExplosive.sqf index 959ac0c347..bfdf4a4b92 100644 --- a/addons/explosives/functions/fnc_detonateExplosive.sqf +++ b/addons/explosives/functions/fnc_detonateExplosive.sqf @@ -26,12 +26,6 @@ _result = true; if (!_ignoreRange && {(_unit distance (_item select 0)) > _range}) exitWith {false}; -_helpers = attachedObjects (_item select 0); -{ - detach _x; - deleteVehicle _x; -} forEach _helpers; - if (getNumber (ConfigFile >> "CfgAmmo" >> typeof (_item select 0) >> "TriggerWhenDestroyed") == 0) then { private ["_exp", "_previousExp"]; _previousExp = _item select 0; diff --git a/addons/explosives/functions/fnc_interactEH.sqf b/addons/explosives/functions/fnc_interactEH.sqf new file mode 100644 index 0000000000..4e916edb82 --- /dev/null +++ b/addons/explosives/functions/fnc_interactEH.sqf @@ -0,0 +1,56 @@ +/* + * Author: PabstMirror + * When interact_menu starts rendering (from "interact_keyDown" event) + * Add defuse helpers to all nearby mines + * + * Arguments: + * Interact Menu Type (0 - world, 1 - self) + * + * Return Value: + * Nothing + * + * Example: + * [0] call ace_explosives_fnc_interactEH + * + * Public: Yes + */ +#include "script_component.hpp" + +PARAMS_1(_interactionType); + +//Ignore self-interaction menu +if (_interactionType != 0) exitWith {}; +//Ignore while mounted: +if ((vehicle ACE_player) != ACE_player) exitWith {}; +//Ignore if we don't have defuse kit +if (!("ACE_DefusalKit" in (items ACE_player))) exitWith {}; + +[{ + PARAMS_2(_args,_pfID); + EXPLODE_3_PVT(_args,_setPosition,_addedDefuseHelpers,_minesHelped); + + if (!EGVAR(interact_menu,keyDown)) then { + TRACE_1("Cleaning Defuse Helpers",(count _addedDefuseHelpers)); + {deleteVehicle _x;} forEach _addedDefuseHelpers; + [_pfID] call CBA_fnc_removePerFrameHandler; + } else { + private ["_defuseHelper"]; + // Prevent Rare Error when ending mission with interact key down: + if (isNull ace_player) exitWith {}; + + //If player moved >5 meters from last pos, then rescan + if (((getPosASL ace_player) distance _setPosition) > 5) then { + { + if (((_x distance ACE_player) < 15) && {!(_x in _minesHelped)}) then { + TRACE_2("Making Defuse Helper",(_x),(typeOf _x)); + _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _x); + _defuseHelper attachTo [_x, [0,0,0]]; + _defuseHelper setVariable [QGVAR(Explosive),_x]; + _addedDefuseHelpers pushBack _defuseHelper; + _minesHelped pushBack _x; + }; + } forEach allMines; + _args set [0, (getPosASL ace_player)]; + }; + }; +}, 0.5, [((getPosASL ace_player) vectorAdd [-100,0,0]), [], []]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/explosives/functions/fnc_placeExplosive.sqf b/addons/explosives/functions/fnc_placeExplosive.sqf index f4fcacb7b1..68580c2ba0 100644 --- a/addons/explosives/functions/fnc_placeExplosive.sqf +++ b/addons/explosives/functions/fnc_placeExplosive.sqf @@ -55,8 +55,6 @@ _triggerSpecificVars pushBack _triggerConfig; _explosive = createVehicle [_ammo, _pos, [], 0, "NONE"]; _explosive setPosATL _pos; -["explosive_placed", [_explosive]] call EFUNC(common,globalEvent); - if (!isNull _attachedTo) then { TRACE_1("Attaching Live Explosive",_attachedTo); _explosive attachTo [_attachedTo]; From 355f22351beae14263e500844020885e1dece0da Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 12:36:14 +0300 Subject: [PATCH 07/63] README_PL: Updated shields --- documentation/README_PL.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index d156185908..fe3939504f 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -4,29 +4,30 @@

- ACE version + v3.0.1 + ACE wersja - - ACE download + + 40.9 Mb + ACE pobierz - ACE issues + ACE zagadnienia - - BIF thread + + BIF wątek - ACE license + ACE licencja

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. 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)). @@ -81,4 +82,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. \ No newline at end of file +* [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. From 4a6a29b784e50dfdb9f0d5742701de0e757551c4 Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 13:43:19 +0300 Subject: [PATCH 08/63] Removed flat styling, it's already a default. --- documentation/README_PL.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index fe3939504f..6cd080f497 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -5,24 +5,24 @@

v3.0.1 - ACE wersja 40.9 Mb - ACE pobierz - ACE zagadnienia - BIF wątek - ACE licencja

From 30156599db87e9072ce4adcc7a8148ec9a8b8bfc Mon Sep 17 00:00:00 2001 From: Bracconiere Date: Thu, 28 May 2015 14:55:45 +0300 Subject: [PATCH 09/63] All's working for now. --- documentation/README_PL.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/documentation/README_PL.md b/documentation/README_PL.md index 6cd080f497..950816743d 100644 --- a/documentation/README_PL.md +++ b/documentation/README_PL.md @@ -4,12 +4,10 @@

- v3.0.1 ACE wersja - 40.9 Mb ACE pobierz From 489751f5aa138e4fb02c9d721a99ea11f0c1148f Mon Sep 17 00:00:00 2001 From: Macusercom Date: Thu, 28 May 2015 16:21:53 +0200 Subject: [PATCH 10/63] More German string fixed As recommended... --- addons/advanced_ballistics/stringtable.xml | 10 +++++----- addons/captives/stringtable.xml | 4 ++-- addons/explosives/stringtable.xml | 6 +++--- addons/interaction/stringtable.xml | 6 +++--- addons/map/stringtable.xml | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml index c1ccbe3d3e..c7fdde12f8 100644 --- a/addons/advanced_ballistics/stringtable.xml +++ b/addons/advanced_ballistics/stringtable.xml @@ -42,7 +42,7 @@ Enabled For Snipers - Für Sniper aktiviert + Für Scharfschützen aktiviert Enables advanced ballistics for non local snipers (when using high power optics) @@ -87,7 +87,7 @@ Enable Ammo Temperature Simulation Symulacja temp. amunicji - Munitionstemperatur-Simulation aktivieren + Simulation der Munitionstemperatur aktivieren Muzzle velocity varies with ammo temperature @@ -97,12 +97,12 @@ Enable Barrel Length Simulation Symulacja długości lufy - Lauflängen-Simulation aktivieren + Simulation der Lauflänge aktivieren Muzzle velocity varies with barrel length Prędkość wylotowa pocisku jest zależna od długości lufy - Länge des Laufs verändert Mündungsgeschwindigkeit + Lauflänge beeinflusst Mündungsgeschwindigkeit Enable Bullet Trace Effect @@ -117,7 +117,7 @@ Simulation Interval Interwał symulacji - Simulationsinterval + Simulationsintervall Defines the interval between every calculation step diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 9c164e28fe..2fd6b6ad3f 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -196,12 +196,12 @@ Make Unit Surrender Poddaj się! - Einheit aufgeben lassen + Einheit kapitulieren lassen Sync a unit to make them surrender.<br />Source: ace_captives Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives - Einheit synchronisieren, um sie aufgeben zu lassen.<br />Quelle: ace_captives + Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives \ No newline at end of file diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index e88d7f0a4b..9e2c540d6f 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -513,7 +513,7 @@ Require specialists? Wymagaj specjalistów? - Benötigt Experten? + Benötigt Sprengstoffexperten? Require explosive specialists to disable explosives? Default: No @@ -523,12 +523,12 @@ Punish non-specialists? Karaj nie-specjalistów? - Bestrafe Nicht-Experten? + Bestrafe Nicht-Sprengstoffexperten? 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 - Entschärfungszeit für Nicht-Experten erhöhen? Standard: Ja + Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index aa39762f6c..9c1fc6641f 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -507,7 +507,7 @@ Team Management - Teamverwaltung + Gruppenverwaltung Gestión de equipo Gestion d'équipe Zarządzanie oddziałem @@ -801,12 +801,12 @@ Enable Team Management Wł. zarządzanie drużyną - Aktiviere Teamverwaltung + Aktiviere Gruppenverwaltung 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 - Sollen Spieler das Teamverwaltungsmenü verwenden dürfen? Standard: Ja + Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index d6546b2b4c..1959297909 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -57,7 +57,7 @@ Interval Interwał - Interval + Intervall How often the markers should be refreshed (in seconds) From d457d9ffeac7dd1a8fc4a2c95013ef69e65b8c9b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 29 May 2015 15:37:53 -0500 Subject: [PATCH 11/63] NightVision adjustment - use CSE's gamma --- addons/nightvision/functions/fnc_changeNVGBrightness.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf index e1894aba00..29c6b976cf 100644 --- a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf +++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf @@ -22,12 +22,12 @@ PARAMS_2(_player,_changeInBrightness); _brightness = _player getVariable [QGVAR(NVGBrightness), 0]; -_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 1) max -1; +_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 0.5) max -0.5; _player setVariable [QGVAR(NVGBrightness), _brightness, false]; -GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; +GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, (_brightness + 1), 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]]; GVAR(ppEffectNVGBrightness) ppEffectCommit 0; -[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 100)]] call EFUNC(common,displayTextStructured); +[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 10)]] call EFUNC(common,displayTextStructured); playSound "ACE_Sound_Click"; From 333cb80171940d878143e1378a4b1d3dbc42aa5d Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 01:18:23 -0300 Subject: [PATCH 12/63] Delay initialization of ACE_Modules until settings are properly setup --- addons/common/XEH_postInit.sqf | 3 ++ addons/modules/XEH_postInit.sqf | 72 +++++++++++++++++---------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 07ffe970cb..98702cc554 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -264,6 +264,9 @@ GVAR(commonPostInited) = true; diag_log text format["[ACE] Settings received from server"]; + // Event so that ACE_Modules have their settings loaded: + ["InitSettingsFromModules", []] call FUNC(localEvent); + // Load user settings from profile if (hasInterface) then { call FUNC(loadSettingsFromProfile); diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index b6aecf5f90..2e115d020b 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -1,44 +1,46 @@ #include "script_component.hpp" -// TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. -// We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. -{ - [_x] call { - private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; - _logic = _this select 0; - _logicType = typeof _logic; - _logic hideobject true; +["InitSettingsFromModules", { + // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. + // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. + { + [_x] call { + private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; + _logic = _this select 0; + _logicType = typeof _logic; + _logic hideobject true; - if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; - _config = (configFile >> "CfgVehicles" >> _logicType); - if !(isClass _config) exitwith {}; + if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; + _config = (configFile >> "CfgVehicles" >> _logicType); + if !(isClass _config) exitwith {}; - // isGlobal = 1; - _isGlobal = getNumber (_config >> "isGlobal") > 0; - _isDisposable = getNumber (_config >> "isDisposable") > 0; - _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; - _function = getText (_config >> "function"); - if (isnil _function) then { - _function = compile _function; - } else { - _function = missionNamespace getvariable _function; - }; + // isGlobal = 1; + _isGlobal = getNumber (_config >> "isGlobal") > 0; + _isDisposable = getNumber (_config >> "isDisposable") > 0; + _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; + _function = getText (_config >> "function"); + if (isnil _function) then { + _function = compile _function; + } else { + _function = missionNamespace getvariable _function; + }; - if (_isGlobal) then { - [_logic, [], true] call _function; - } else { - if (isServer) then { + if (_isGlobal) then { [_logic, [], true] call _function; + } else { + if (isServer) then { + [_logic, [], true] call _function; + }; + }; + + if !(_isPersistent) then { + _logic setvariable [QGVAR(initalized), true]; + }; + + if (_isDisposable) then { + deleteVehicle _logic; }; }; - - if !(_isPersistent) then { - _logic setvariable [QGVAR(initalized), true]; - }; - - if (_isDisposable) then { - deleteVehicle _logic; - }; - }; -}foreach GVAR(moduleInitCollection); + }foreach GVAR(moduleInitCollection); +}] call FUNC(addEventhandler); From 9d29aa210725482ec1d136f4690b7294d1e275be Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Sat, 30 May 2015 01:37:41 -0300 Subject: [PATCH 13/63] - Change all modules on ACE using settings to type ACE_Module, so we can guarantee that they wait for settings before initing. - Make ace_common require ace_modules, so all ACE pbos are guaranteed to have it --- addons/common/CfgVehicles.hpp | 13 +++++-------- addons/common/config.cpp | 2 +- addons/explosives/CfgModule.hpp | 7 ++----- addons/hearing/CfgVehicles.hpp | 4 ++-- addons/interaction/CfgVehicles.hpp | 4 ++-- addons/map/CfgVehicles.hpp | 6 ++++-- addons/microdagr/CfgVehicles.hpp | 10 +++------- addons/mk6mortar/CfgVehicles.hpp | 9 +++------ addons/nametags/CfgVehicles.hpp | 9 +++------ addons/respawn/CfgVehicles.hpp | 17 +++++++---------- addons/switchunits/CfgVehicles.hpp | 4 ++-- addons/vehiclelock/CfgVehicles.hpp | 13 +++++-------- 12 files changed, 39 insertions(+), 59 deletions(-) diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 1adf622494..01e9bc7431 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -25,11 +25,8 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleCheckPBOs: Module_F { + class ACE_Module; + class ACE_ModuleCheckPBOs: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_CheckPBO_DisplayName"; @@ -72,12 +69,12 @@ class CfgVehicles { }; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Common_CheckPBO_Description"; }; }; - class ACE_ModuleLSDVehicles: Module_F { + class ACE_ModuleLSDVehicles: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Common_LSDVehicles_DisplayName"; @@ -87,7 +84,7 @@ class CfgVehicles { isGlobal = 1; class Arguments { }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Common_LSDVehicles_Description"; sync[] = {"AnyVehicle"}; }; diff --git a/addons/common/config.cpp b/addons/common/config.cpp index 3f1e5a6308..dd13d10ec0 100644 --- a/addons/common/config.cpp +++ b/addons/common/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_Box_Misc", "ACE_bananaItem"}; weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_main"}; + requiredAddons[] = {"ace_main","ace_modules"}; author[] = {"KoffeinFlummi"}; authorUrl = "https://github.com/KoffeinFlummi/"; VERSION_CONFIG; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index 52f70ea3af..a091d927ac 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -1,8 +1,5 @@ -class Logic; -class Module_F: Logic { - class ModuleDescription {}; -}; -class ACE_ModuleExplosive: Module_F { +class ACE_Module; +class ACE_ModuleExplosive: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Explosive_Module_DisplayName"; diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 16bb47014a..eaa765d814 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -94,8 +94,8 @@ class CfgVehicles { }; - class Module_F; - class ACE_ModuleHearing: Module_F { + class ACE_Module; + class ACE_ModuleHearing: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Hearing_Module_DisplayName"; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 804aba1100..0f07accdee 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleInteraction: Module_F { + class ACE_Module; + class ACE_ModuleInteraction: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_InteractionSystem_Module_DisplayName"; diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index a5194e015e..43db54628b 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -1,6 +1,7 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleMap: Module_F { + + class ACE_Module; + class ACE_ModuleMap: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Map_Module_DisplayName"; @@ -39,6 +40,7 @@ class CfgVehicles { }; }; + class Module_F; class ACE_ModuleBlueForceTracking: Module_F { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index 949860742d..bd3164ac72 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -36,12 +36,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ArgumentsBaseUnits {}; - class ModuleDescription {}; - }; - class GVAR(dagrModule): Module_F { + class ACE_Module; + class GVAR(dagrModule): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Dagr_Module_DisplayName"; @@ -62,7 +58,7 @@ class CfgVehicles { }; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Dagr_Module_Description"; }; }; diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index e4a9d0f2a5..5708f3c670 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -43,11 +43,8 @@ class CfgVehicles { }; }; - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class GVAR(module): Module_F { + class ACE_Module; + class GVAR(module): ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_mk6mortar_Module_DisplayName"; @@ -76,7 +73,7 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_mk6mortar_Module_Description"; }; }; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index fabd3b09cb..50439218aa 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleNameTags : Module_F { + class ACE_Module; + class ACE_ModuleNameTags: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_NameTags_Module_DisplayName"; @@ -65,7 +62,7 @@ class CfgVehicles { defaultValue = 0; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_NameTags_Module_Description"; }; }; diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp index e90f4ba08e..6fd60e6321 100644 --- a/addons/respawn/CfgVehicles.hpp +++ b/addons/respawn/CfgVehicles.hpp @@ -1,9 +1,6 @@ class CfgVehicles { - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_ModuleRespawn: Module_F { + class ACE_Module; + class ACE_ModuleRespawn: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Respawn_Module_DisplayName"; @@ -27,12 +24,12 @@ class CfgVehicles { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Respawn_Module_Description"; }; }; - class ACE_ModuleFriendlyFire: Module_F { + class ACE_ModuleFriendlyFire: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_FriendlyFire_Module_DisplayName"; @@ -42,12 +39,12 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_FriendlyFire_Module_Description"; }; }; - class ACE_ModuleRallypoint: Module_F { + class ACE_ModuleRallypoint: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_Rallypoint_Module_DisplayName"; @@ -57,7 +54,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa)); class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Rallypoint_Module_Description"; }; }; diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp index 0f76c78568..d2548448b1 100644 --- a/addons/switchunits/CfgVehicles.hpp +++ b/addons/switchunits/CfgVehicles.hpp @@ -1,6 +1,6 @@ class CfgVehicles { - class Module_F; - class ACE_ModuleSwitchUnits: Module_F { + class ACE_Module; + class ACE_ModuleSwitchUnits: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_SwitchUnits_Module_DisplayName"; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 60cb67d4c4..1230fd5221 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -62,11 +62,8 @@ class CfgVehicles { MACRO_LOCK_ACTIONS }; - class Logic; - class Module_F: Logic { - class ModuleDescription {}; - }; - class ACE_VehicleLock_ModuleSetup: Module_F { + class ACE_Module; + class ACE_VehicleLock_ModuleSetup: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_Module_DisplayName"; @@ -99,12 +96,12 @@ class CfgVehicles { defaultValue = "10"; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_VehicleLock_Module_Description"; }; }; - class ACE_VehicleLock_ModuleSyncedAssign: Module_F { + class ACE_VehicleLock_ModuleSyncedAssign: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName"; @@ -114,7 +111,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa)); functionPriority = 0; class Arguments {}; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; sync[] = {"AnyPlayer", "AnyVehicle"}; }; From 84d940e69d91627ca9c51ed36b7e94d328b038d2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 30 May 2015 00:31:07 -0500 Subject: [PATCH 14/63] Fix circular dependency - ModuleDescription --- addons/advanced_ballistics/config.cpp | 2 +- addons/common/CfgVehicles.hpp | 11 +++++++---- addons/explosives/CfgModule.hpp | 2 +- addons/medical/config.cpp | 2 +- addons/modules/config.cpp | 2 +- addons/vehiclelock/CfgVehicles.hpp | 8 ++++++-- addons/weather/config.cpp | 2 +- addons/zeus/config.cpp | 2 +- 8 files changed, 19 insertions(+), 12 deletions(-) diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp index 1a2187783b..3f974b18df 100644 --- a/addons/advanced_ballistics/config.cpp +++ b/addons/advanced_ballistics/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"}; + requiredAddons[] = {"ace_ballistics", "ace_weather"}; author[] = {"Ruthberg"}; authorUrl = "https://github.com/ulteq"; VERSION_CONFIG; diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 01e9bc7431..87d131934b 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -24,8 +24,11 @@ class CfgVehicles { // += needs a non inherited entry in that class, otherwise it simply overwrites //#include - - class ACE_Module; + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; class ACE_ModuleCheckPBOs: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; @@ -69,7 +72,7 @@ class CfgVehicles { }; }; }; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_CheckPBO_Description"; }; }; @@ -84,7 +87,7 @@ class CfgVehicles { isGlobal = 1; class Arguments { }; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_Common_LSDVehicles_Description"; sync[] = {"AnyVehicle"}; }; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index a091d927ac..2bb8e18f96 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -21,7 +21,7 @@ class ACE_ModuleExplosive: ACE_Module { defaultValue = 1; }; }; - class ModuleDescription: ModuleDescription { + class ModuleDescription { description = "$STR_ACE_Explosive_Module_Description"; }; }; \ No newline at end of file diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp index f86f5d166e..463ed95406 100644 --- a/addons/medical/config.cpp +++ b/addons/medical/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"}; weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"}; + requiredAddons[] = {"ace_interaction", "ace_apl"}; author[] = {"Glowbal", "KoffeinFlummi"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp index c5880e7bb1..ee96c5251f 100644 --- a/addons/modules/config.cpp +++ b/addons/modules/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; + requiredAddons[] = {}; author[] = {"Glowbal"}; authorUrl = ""; VERSION_CONFIG; diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 1230fd5221..6e07148262 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -62,7 +62,11 @@ class CfgVehicles { MACRO_LOCK_ACTIONS }; - class ACE_Module; + class Logic; + class Module_F: Logic { + class ModuleDescription; + }; + class ACE_Module: Module_F {}; class ACE_VehicleLock_ModuleSetup: ACE_Module { author = "$STR_ACE_Common_ACETeam"; category = "ACE"; @@ -111,7 +115,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa)); functionPriority = 0; class Arguments {}; - class ModuleDescription { + class ModuleDescription: ModuleDescription { description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description"; sync[] = {"AnyPlayer", "AnyVehicle"}; }; diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp index 18059fe9e8..50e2f8ace0 100644 --- a/addons/weather/config.cpp +++ b/addons/weather/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common", "ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"}; VERSION_CONFIG; }; diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp index 4bdc1cd5e1..5ea4212dbb 100644 --- a/addons/zeus/config.cpp +++ b/addons/zeus/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common","ace_modules"}; + requiredAddons[] = {"ace_common"}; author[] = {"SilentSpike"}; authorUrl = "https://github.com/SilentSpike"; VERSION_CONFIG; From 5746128a0fd304c9bb92892b3531286dfd8084e8 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 20:06:55 +0200 Subject: [PATCH 15/63] Further improved error handling when AB is enabled with incomplete configs: * Calculates correct solutions when parts of the ammo config are missing * Calculates correct solutions when parts of the weapon config are missing * Performance improvement when AB is enabled --- .../functions/fnc_calculateSolution.sqf | 20 ++++-- .../functions/fnc_updateRangeCard.sqf | 62 ++++++++++--------- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf index d8f0fe0cac..ea86d9986e 100644 --- a/addons/rangecard/functions/fnc_calculateSolution.sqf +++ b/addons/rangecard/functions/fnc_calculateSolution.sqf @@ -24,7 +24,9 @@ * 18: Stability factor * 19: Twist Direction * 20: Latitude - * 21: Range Card Slot + * 21: Direction of Fire + * 22: Range Card Slot + * 23: Use advanced ballistics config? * * Return Value: * 0: Elevation (MOA) @@ -44,7 +46,7 @@ */ #include "script_component.hpp" -private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"]; +private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"]; _scopeBaseAngle = _this select 0; _bulletMass = _this select 1; _boreHeight = _this select 2; @@ -69,6 +71,7 @@ _twistDirection = _this select 19; _latitude = _this select 20; _directionOfFire = _this select 21; _rangeCardSlot = _this select 22; +_useABConfig = _this select 23; if (_storeRangeCardData) then { GVAR(rangeCardDataMVs) set [_rangeCardSlot, format[" %1", round(_muzzleVelocity)]]; @@ -109,10 +112,17 @@ private ["_wind1", "_wind2", "_windDrift"]; _wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0]; _wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0]; _windDrift = 0; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection); }; +private ["_airFrictionCoef", "_airDensity"]; +_airFrictionCoef = 1; +if (!_useABConfig && (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) then { + _airDensity = [_temperature, _barometricPressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity); + _airFrictionCoef = _airDensity / 1.22498; +}; + private ["_speedTotal", "_stepsTotal", "_speedAverage"]; _speedTotal = 0; _stepsTotal = 0; @@ -139,7 +149,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { _trueVelocity = _bulletVelocity vectorDiff _wind1; _trueSpeed = vectorMagnitude _trueVelocity; - if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + if (_useABConfig) then { _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then { parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed])) } else { @@ -147,7 +157,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do { }; _bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag); } else { - _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction); + _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef); }; _bulletAccel = _bulletAccel vectorAdd _gravity; diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf index d58e7ff6bb..4c3a1626ee 100644 --- a/addons/rangecard/functions/fnc_updateRangeCard.sqf +++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf @@ -20,7 +20,8 @@ disableSerialization; #define __dsp (uiNamespace getVariable "RangleCard_Display") -private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef"]; +private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_bulletMass", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef", "_useABConfig"]; +_useABConfig = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]); PARAMS_3(_ammoClass,_magazineClass,_weaponClass); @@ -80,14 +81,6 @@ lnbClear 770200; lnbClear 770300; lnbClear 770400; -lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { - lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; - - lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; - lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; -}; - GVAR(rangeCardDataElevation) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataWindage) = [[], [], [], [], [], [], [], [], []]; GVAR(rangeCardDataLead) = [[], [], [], [], [], [], [], [], []]; @@ -105,7 +98,22 @@ _airFriction = _ammoConfig select 0; _barrelTwist = _weaponConfig select 0; _barrelLength = _weaponConfig select 2; _muzzleVelocity = 0; -if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + +_bc = 0; +if (count (_ammoConfig select 6) > 0) then { + _bc = (_ammoConfig select 6) select 0; +}; +_dragModel = _ammoConfig select 5; +_atmosphereModel = _ammoConfig select 8; +_bulletMass = 5; +_boreHeight = 3.81; +_zeroRange = 100; + +if (_bc == 0) then { + _useABConfig = false; +}; + +if (_barrelLength > 0 && _useABConfig) then { _muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift); } else { _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed"); @@ -119,7 +127,7 @@ if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistic _muzzleVelocity = _initSpeed; }; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]]; if (_barrelLength > 0 && _barrelTwist > 0) then { ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]]; @@ -128,14 +136,16 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t }; } else { ctrlSetText [770000, getText (configFile >> "CfgMagazines" >> _magazineClass >> "displayNameShort")]; - ctrlSetText [770002, ""]; + ctrlSetText [770002, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")]; }; -_bc = (_ammoConfig select 6) select 0; -_dragModel = _ammoConfig select 5; -_atmosphereModel = _ammoConfig select 8; -_boreHeight = 3.81; -_zeroRange = 100; +lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]]; +if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { + lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]]; + + lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]]; + lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]]; +}; _barometricPressure = 1013.25; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { @@ -147,27 +157,23 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]]; ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]]; } else { - ctrlSetText [770001, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")]; + ctrlSetText [770001, ""]; ctrlSetText [77004 , ""]; }; _cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]]; if (isNil {_cacheEntry}) then { + _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, 15, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0, 0, _useABConfig] call FUNC(calculateSolution); + _scopeBaseAngle = (_result select 0) / 60; if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { { _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift); _mv = _muzzleVelocity + _mvShift; - _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); - _scopeBaseAngle = (_result select 0) / 60; - - [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution); + [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex,_useABConfig] call FUNC(calculateSolution); } forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35]; - } else { - _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution); - _scopeBaseAngle = (_result select 0) / 60; - - [_scopeBaseAngle,27,_boreHeight,_airFriction,_muzzleVelocity,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3] call FUNC(calculateSolution); + } else { + [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_muzzleVelocity,15,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3,_useABConfig] call FUNC(calculateSolution); }; for "_i" from 0 to 9 do { @@ -234,7 +240,7 @@ for "_column" from 0 to 8 do { }; } forEach [0, 3, 8]; -if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then { +if (_useABConfig) then { ctrlSetText [770020, "For best results keep ammunition at ambient air temperature. Tables calculated for the above listed barrel"]; ctrlSetText [770021, "and load with optic mounted 1.5'' above line of bore."]; } else { From 6f1c6ae8c1df4c2a8829b5468200c84e05418de1 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 20:33:32 +0200 Subject: [PATCH 16/63] Added missing ammo class --- optionals/compat_cup/CfgAmmo.hpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 58f61aedce..5c391f4f18 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -94,6 +94,19 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; + class B_762x39mm_KLT: BulletBase + { + ACE_caliber=7.823; + ACE_bulletLength=28.956; + ACE_bulletMass=7.5816; + ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19}; + ACE_ballisticCoefficients[]={0.275}; + ACE_velocityBoundaries[]={}; + ACE_standardAtmosphere="ICAO"; + ACE_dragModel=1; + ACE_muzzleVelocities[]={650, 716, 750}; + ACE_barrelLengths[]={254.0, 414.02, 508.0}; + }; class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; From 872501dad2fd14e7511c7a1142809cd4f9ee1a9b Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:20:17 +0200 Subject: [PATCH 17/63] Removed newline brackets --- optionals/compat_cup/CfgAmmo.hpp | 99 +++++++++++--------------------- 1 file changed, 33 insertions(+), 66 deletions(-) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 5c391f4f18..7c37be48f8 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -3,8 +3,7 @@ class CfgAmmo class BulletBase; class B_762x51_Ball; class B_127x99_Ball; - class CUP_B_545x39_Ball: BulletBase - { + class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -16,8 +15,7 @@ class CfgAmmo ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball - { + class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -29,8 +27,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Red: BulletBase - { + class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -42,8 +39,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_White: BulletBase - { + class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -55,8 +51,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase - { + class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -68,8 +63,7 @@ class CfgAmmo ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x39_Ball: BulletBase - { + class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -81,8 +75,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x39_Ball_Tracer_Green: BulletBase - { + class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -94,8 +87,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class B_762x39mm_KLT: BulletBase - { + class B_762x39mm_KLT: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -107,8 +99,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_9x18_Ball: BulletBase - { + class CUP_B_9x18_Ball: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -120,8 +111,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Green: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Green: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -133,8 +123,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Red: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Red: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -146,8 +135,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase - { + class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -159,8 +147,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x18_Ball_White_Tracer: BulletBase - { + class CUP_B_9x18_Ball_White_Tracer: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -172,8 +159,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x19_Ball: BulletBase - { + class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=8.0352; @@ -185,8 +171,7 @@ class CfgAmmo ACE_muzzleVelocities[]={340, 370, 400}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class CUP_B_762x51_noTracer: B_762x51_Ball - { + class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -198,8 +183,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_303_Ball: BulletBase - { + class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; ACE_bulletLength=31.166; ACE_bulletMass=11.2752; @@ -211,8 +195,7 @@ class CfgAmmo ACE_muzzleVelocities[]={748, 761, 765}; ACE_barrelLengths[]={508.0, 609.6, 660.4}; }; - class CUP_B_127x107_Ball_Green_Tracer: BulletBase - { + class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -224,8 +207,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_127x108_Ball_Green_Tracer: BulletBase - { + class CUP_B_127x108_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -237,8 +219,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_762x54_Ball_White_Tracer: BulletBase - { + class CUP_B_762x54_Ball_White_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -250,8 +231,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Red_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Red_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -263,8 +243,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Green_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Green_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -276,8 +255,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase - { + class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -289,8 +267,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_9x39_SP5: BulletBase - { + class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; ACE_bulletLength=31.496; ACE_bulletMass=16.2; @@ -302,8 +279,7 @@ class CfgAmmo ACE_muzzleVelocities[]={280, 300, 320}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class CUP_B_762x51_Tracer_Green: BulletBase - { + class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -315,8 +291,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_Red: BulletBase - { + class CUP_B_762x51_Tracer_Red: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -328,8 +303,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_Yellow: BulletBase - { + class CUP_B_762x51_Tracer_Yellow: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -341,8 +315,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_762x51_Tracer_White: BulletBase - { + class CUP_B_762x51_Tracer_White: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -354,8 +327,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class B_127x107_Ball: BulletBase - { + class B_127x107_Ball: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -367,8 +339,7 @@ class CfgAmmo ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; }; - class CUP_B_9x18_SD: BulletBase - { + class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -380,8 +351,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 340}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_765x17_Ball: BulletBase - { + class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; ACE_bulletLength=15.494; ACE_bulletMass=4.212; @@ -393,8 +363,7 @@ class CfgAmmo ACE_muzzleVelocities[]={282, 300, 320}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class CUP_B_145x115_AP_Green_Tracer: BulletBase - { + class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; ACE_bulletLength=50.8; ACE_bulletMass=65.448; @@ -406,8 +375,7 @@ class CfgAmmo ACE_muzzleVelocities[]={1000}; ACE_barrelLengths[]={1346.2}; }; - class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball - { + class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -419,8 +387,7 @@ class CfgAmmo ACE_muzzleVelocities[]={853}; ACE_barrelLengths[]={736.6}; }; - class CUP_B_86x70_Ball_noTracer: BulletBase - { + class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; ACE_bulletLength=43.18; ACE_bulletMass=19.44; From 9936af3e4c3beaba2a5f4d037a78c0bcc6c08b0c Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:20:40 +0200 Subject: [PATCH 18/63] Added config entries for all cup weapon classes --- optionals/compat_cup/CfgWeapons.hpp | 335 ++++++++++++++++++++++++++++ optionals/compat_cup/config.cpp | 1 + 2 files changed, 336 insertions(+) create mode 100644 optionals/compat_cup/CfgWeapons.hpp diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp new file mode 100644 index 0000000000..a55e721e90 --- /dev/null +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -0,0 +1,335 @@ +class CfgWeapons +{ + class Pistol_Base_F; + class Rifle_Base_F; + class Rifle_Long_Base_F; + class CUP_hgun_Colt1911 : Pistol_Base_F { + ACE_barrelTwist=406.4; + ACE_barrelLength=127.0; + }; + class CUP_sgun_AA12 : Rifle_Base_F { + ACE_barrelTwist=0.0; + ACE_twistDirection=0; + ACE_barrelLength=457.2; + }; + class CUP_arifle_AK_Base : Rifle_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AK107_Base : CUP_arifle_AK_Base { + ACE_barrelTwist=199.898; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AKS_Base : CUP_arifle_AK_Base { + ACE_barrelTwist=199.898; + ACE_barrelLength=414.02; + }; + class CUP_arifle_AKS74U : CUP_arifle_AK_Base { + ACE_barrelTwist=160.02; + ACE_barrelLength=210.82; + }; + class CUP_arifle_AK74; + class CUP_arifle_RPK74 : CUP_arifle_AK74 { + ACE_barrelTwist=195.072; + ACE_barrelLength=589.28; + }; + class CUP_srifle_AS50 : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=736.6; + }; + class CUP_srifle_AWM_Base : Rifle_Long_Base_F { + ACE_barrelTwist=279.4; + ACE_barrelLength=685.8; + }; + class CUP_smg_bizon : Rifle_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=231.14; + }; + class CUP_hgun_Compact : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=94.996; + }; + class CUP_srifle_CZ750 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=660.4; + }; + class CUP_arifle_CZ805_Base : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_CZ805_A1 : CUP_arifle_CZ805_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_CZ805_A2 : CUP_arifle_CZ805_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=276.86; + }; + class CUP_srifle_DMR : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_hgun_Duty : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=94.996; + }; + class CUP_arifle_FNFAL : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=533.4; + }; + class CUP_arifle_G36_Base; + class CUP_arifle_G36A : CUP_arifle_G36_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=480; + }; + class CUP_arifle_G36K : CUP_arifle_G36A { + ACE_barrelTwist=177.8; + ACE_barrelLength=318; + }; + class CUP_arifle_G36C : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=228; + }; + class CUP_arifle_MG36 : CUP_arifle_G36C { + ACE_barrelTwist=177.8; + ACE_barrelLength=480; + }; + class CUP_hgun_Glock17 : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=114.046; + }; + class CUP_srifle_CZ550 : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=599.999; + }; + class CUP_srifle_ksvk : Rifle_Base_F { + ACE_barrelTwist=457.2; + ACE_barrelLength=999.998; + }; + class CUP_lmg_L7A2 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_arifle_L85A2_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=518.16; + }; + class CUP_arifle_L86A2_Base: Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=646; + }; + class CUP_lmg_L110A1 : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=347.98; + }; + class CUP_srifle_LeeEnfield : Rifle_Base_F { + ACE_barrelTwist=254.0; + ACE_barrelLength=640.08; + }; + class CUP_hgun_M9 : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=124.46; + }; + class CUP_srifle_M14 : Rifle_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_arifle_M16_Base : Rifle_Base_F { + ACE_barrelTwist=355.6; + ACE_barrelLength=508.0; + }; + class CUP_arifle_M16A4_Base; + class CUP_arifle_M4_Base : CUP_arifle_M16A4_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=368.3; + }; + class CUP_arifle_M4A1; + class CUP_srifle_Mk12SPR : CUP_arifle_M4A1 { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_srifle_M24_des : Rifle_Base_F { + ACE_barrelTwist=285.75; + ACE_barrelLength=609.6; + }; + class CUP_lmg_M60A4 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=431.8; + }; + class CUP_srifle_M107_Base : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=736.6; + }; + class CUP_srifle_M110 : Rifle_Base_F { + ACE_barrelTwist=279.4; + ACE_barrelLength=508.0; + }; + class CUP_lmg_M240 : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_lmg_M249_para : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=414.02; + }; + class CUP_lmg_M249 : Rifle_Long_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_sgun_M1014 : Rifle_Base_F { + ACE_twistDirection=0; + ACE_barrelTwist=0.0; + ACE_barrelLength=469.9; + }; + class CUP_hgun_Makarov : Pistol_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=93.472; + }; + class CUP_hgun_MicroUzi : Pistol_Base_F { + ACE_barrelTwist=248.92; + ACE_barrelLength=127.0; + }; + class CUP_lmg_Mk48_Base : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=501.65; + }; + class CUP_smg_MP5SD6 : Rifle_Base_F { + ACE_barrelTwist=254.0; + ACE_barrelLength=144.78; + }; + class CUP_smg_MP5A5 : CUP_smg_MP5SD6 { + ACE_barrelTwist=254.0; + ACE_barrelLength=226.06; + }; + class CUP_hgun_PB6P9 : Pistol_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=104.14; + }; + class CUP_hgun_Phantom : Pistol_Base_F { + ACE_barrelTwist=246.38; + ACE_barrelLength=119.38; + }; + class CUP_lmg_PKM : Rifle_Long_Base_F { + ACE_barrelTwist=240.03; + ACE_barrelLength=645.16; + }; + class CUP_lmg_Pecheneg : CUP_lmg_PKM { + ACE_barrelTwist=240.03; + ACE_barrelLength=657.86; + }; + class CUP_hgun_TaurusTracker455 : Pistol_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=101.6; + }; + class CUP_arifle_Sa58_base; + class CUP_arifle_Sa58P : CUP_arifle_Sa58_base { + ACE_barrelTwist=240.03; + ACE_barrelLength=391.16; + }; + class CUP_arifle_Sa58V : CUP_arifle_Sa58P { + ACE_barrelTwist=240.03; + ACE_barrelLength=391.16; + }; + class CUP_hgun_SA61 : Pistol_Base_F { + ACE_barrelTwist=406.4; + ACE_barrelLength=114.3; + }; + class CUP_sgun_Saiga12K: Rifle_Base_F { + ACE_barrelTwist=0.0; + ACE_twistDirection=0; + ACE_barrelLength=429.26; + }; + class CUP_arifle_SCAR_L_Base; + class CUP_arifle_Mk16_CQC : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=254.0; + }; + class CUP_arifle_Mk16_STD : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=355.6; + }; + class CUP_arifle_Mk16_SV : CUP_arifle_SCAR_L_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=457.2; + }; + class CUP_arifle_Mk17_Base; + class CUP_arifle_Mk17_CQC : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=330.2; + }; + class CUP_arifle_Mk17_STD : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=406.4; + }; + class CUP_arifle_Mk20 : CUP_arifle_Mk17_Base { + ACE_barrelTwist=304.8; + ACE_barrelLength=508.0; + }; + class CUP_srifle_SVD : Rifle_Base_F { + ACE_barrelTwist=238.76; + ACE_barrelLength=619.76; + }; + class CUP_lmg_UK59 : Rifle_Long_Base_F { + ACE_barrelTwist=381.0; + ACE_barrelLength=551.18; + }; + class MGun; + class CUP_DSHKM_W : MGun { + ACE_barrelTwist=381.0; + ACE_barrelLength=1069.34; + }; + class CUP_KPVT_W : MGun { + ACE_barrelTwist=454.914; + ACE_barrelLength=1346.2; + }; + class CUP_M242_W; + class CUP_KPVB_W : CUP_M242_W { + ACE_barrelTwist=454.914; + ACE_barrelLength=1346.2; + }; + class MGunCore; + class CUP_M134 : MGunCore { + ACE_barrelTwist=304.8; + ACE_barrelLength=558.8; + }; + class CUP_M240_veh_W : Rifle_Long_Base_F { + ACE_barrelTwist=304.8; + ACE_barrelLength=629.92; + }; + class CUP_PKT_W : MGun { + ACE_barrelTwist=240.03; + ACE_barrelLength=722.122; + }; + class CUP_srifle_VSSVintorez : Rifle_Base_F { + ACE_barrelTwist=210.82; + ACE_barrelLength=200.66; + }; + class CUP_arifle_XM8_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_XM8_Carbine : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_xm8_sharpshooter : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=508.0; + }; + class CUP_arifle_xm8_SAW : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=508.0; + }; + class CUP_arifle_XM8_Compact : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=228.6; + }; + class CUP_arifle_XM8_Railed_Base : Rifle_Base_F { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; + class CUP_arifle_XM8_Carbine_FG : CUP_arifle_XM8_Base { + ACE_barrelTwist=177.8; + ACE_barrelLength=317.5; + }; +}; \ No newline at end of file diff --git a/optionals/compat_cup/config.cpp b/optionals/compat_cup/config.cpp index e4f26f8051..66a0a9f967 100644 --- a/optionals/compat_cup/config.cpp +++ b/optionals/compat_cup/config.cpp @@ -12,3 +12,4 @@ class CfgPatches { }; #include "CfgAmmo.hpp" +#include "CfgWeapons.hpp" From e41c51966b17206ac691e22254b6293099b84aa4 Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:51:24 +0200 Subject: [PATCH 19/63] Added cup scopes config entries --- optionals/compat_cup/CfgWeapons.hpp | 164 ++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp index a55e721e90..4c62c0638a 100644 --- a/optionals/compat_cup/CfgWeapons.hpp +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -332,4 +332,168 @@ class CfgWeapons ACE_barrelTwist=177.8; ACE_barrelLength=317.5; }; + + class ItemCore; + class InventoryOpticsItem_Base_F; + + class CUP_optic_SB_3_12x50_PMII : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_Leupold_VX3 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class StepScope { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_AN_PVS_10 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class NVScope { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldM3LR : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4_10x40_LRT_Desert : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class LRR { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_LeupoldMk4_MRT_tan : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -4, 30 }; + ACE_ScopeAdjust_Horizontal[] = { -6, 6 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class MRT { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + class CUP_optic_SB_11_4x20_PM : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -0.1, 10.1 }; + ACE_ScopeAdjust_Horizontal[] = { -5.1, 5.1 }; + ACE_ScopeAdjust_VerticalIncrement = 0.1; + ACE_ScopeAdjust_HorizontalIncrement = 0.1; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class ShortDot { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + + /* + // This would require MOA turrets + class CUP_optic_AN_PVS_4 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { -12, 50 }; + ACE_ScopeAdjust_Horizontal[] = { -20, 20 }; + ACE_ScopeAdjust_VerticalIncrement = 0.25; + ACE_ScopeAdjust_HorizontalIncrement = 0.25; + ACE_ScopeAdjust_Unit = "MOA"; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class ANPVS4 { + discreteDistance[] = { 100 }; + discreteDistanceInitIndex = 0; + }; + }; + }; + }; + */ + + class CUP_optic_PSO_1 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { 0, 0 }; + ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_VerticalIncrement = 0.0; + ACE_ScopeAdjust_HorizontalIncrement = 0.5; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class PSO { + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; + }; + }; + }; + }; + class CUP_optic_PSO_3 : ItemCore { + ACE_ScopeAdjust_Vertical[] = { 0, 0 }; + ACE_ScopeAdjust_Horizontal[] = { -10, 10 }; + ACE_ScopeAdjust_VerticalIncrement = 0.0; + ACE_ScopeAdjust_HorizontalIncrement = 0.5; + class ItemInfo : InventoryOpticsItem_Base_F { + class OpticsModes { + class PSO { + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; + }; + }; + }; + }; }; \ No newline at end of file From 75518af90f021b1bdb0dd9c821103adc4450ac1f Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:52:57 +0200 Subject: [PATCH 20/63] Tabs -> Spaces --- optionals/compat_cup/CfgWeapons.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp index 4c62c0638a..ca8ca24827 100644 --- a/optionals/compat_cup/CfgWeapons.hpp +++ b/optionals/compat_cup/CfgWeapons.hpp @@ -476,8 +476,8 @@ class CfgWeapons class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class PSO { - discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; - discreteDistanceInitIndex=3; + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; }; }; }; @@ -490,8 +490,8 @@ class CfgWeapons class ItemInfo : InventoryOpticsItem_Base_F { class OpticsModes { class PSO { - discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; - discreteDistanceInitIndex=3; + discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; + discreteDistanceInitIndex=3; }; }; }; From cb12146f4159f856f29cd263618e01a6cdf0897a Mon Sep 17 00:00:00 2001 From: ulteq Date: Sat, 30 May 2015 21:53:28 +0200 Subject: [PATCH 21/63] Tabs -> Spaces --- optionals/compat_cup/CfgAmmo.hpp | 74 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp index 7c37be48f8..a3cafcfbb0 100644 --- a/optionals/compat_cup/CfgAmmo.hpp +++ b/optionals/compat_cup/CfgAmmo.hpp @@ -1,9 +1,9 @@ class CfgAmmo { - class BulletBase; - class B_762x51_Ball; - class B_127x99_Ball; - class CUP_B_545x39_Ball: BulletBase { + class BulletBase; + class B_762x51_Ball; + class B_127x99_Ball; + class CUP_B_545x39_Ball: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -14,8 +14,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { + }; + class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -26,8 +26,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Red: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_Red: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -38,8 +38,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_White: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_White: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -50,8 +50,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { + }; + class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -62,8 +62,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={785, 883, 925}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_762x39_Ball: BulletBase { + }; + class CUP_B_762x39_Ball: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -74,8 +74,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; - class CUP_B_762x39_Ball_Tracer_Green: BulletBase { + }; + class CUP_B_762x39_Ball_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -86,7 +86,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; + }; class B_762x39mm_KLT: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; @@ -159,7 +159,7 @@ class CfgAmmo ACE_muzzleVelocities[]={298, 330, 350}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; }; - class CUP_B_9x19_Ball: BulletBase { + class CUP_B_9x19_Ball: BulletBase { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=8.0352; @@ -170,8 +170,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={340, 370, 400}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class CUP_B_762x51_noTracer: B_762x51_Ball { + }; + class CUP_B_762x51_noTracer: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=9.4608; @@ -182,8 +182,8 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; - }; - class CUP_B_303_Ball: BulletBase { + }; + class CUP_B_303_Ball: BulletBase { ACE_caliber=7.899; ACE_bulletLength=31.166; ACE_bulletMass=11.2752; @@ -194,7 +194,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={748, 761, 765}; ACE_barrelLengths[]={508.0, 609.6, 660.4}; - }; + }; class CUP_B_127x107_Ball_Green_Tracer: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; @@ -267,7 +267,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class CUP_B_9x39_SP5: BulletBase { + class CUP_B_9x39_SP5: BulletBase { ACE_caliber=9.246; ACE_bulletLength=31.496; ACE_bulletMass=16.2; @@ -278,7 +278,7 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={280, 300, 320}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; - }; + }; class CUP_B_762x51_Tracer_Green: BulletBase { ACE_caliber=7.823; ACE_bulletLength=28.956; @@ -327,7 +327,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833, 845}; ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4}; }; - class B_127x107_Ball: BulletBase { + class B_127x107_Ball: BulletBase { ACE_caliber=12.979; ACE_bulletLength=64.008; ACE_bulletMass=48.276; @@ -338,8 +338,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={820}; ACE_barrelLengths[]={728.98}; - }; - class CUP_B_9x18_SD: BulletBase { + }; + class CUP_B_9x18_SD: BulletBase { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -350,8 +350,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={298, 330, 340}; ACE_barrelLengths[]={96.52, 127.0, 228.6}; - }; - class CUP_B_765x17_Ball: BulletBase { + }; + class CUP_B_765x17_Ball: BulletBase { ACE_caliber=7.938; ACE_bulletLength=15.494; ACE_bulletMass=4.212; @@ -362,8 +362,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={282, 300, 320}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; - }; - class CUP_B_145x115_AP_Green_Tracer: BulletBase { + }; + class CUP_B_145x115_AP_Green_Tracer: BulletBase { ACE_caliber=14.884; ACE_bulletLength=50.8; ACE_bulletMass=65.448; @@ -374,8 +374,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={1000}; ACE_barrelLengths[]={1346.2}; - }; - class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { + }; + class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball { ACE_caliber=12.954; ACE_bulletLength=58.674; ACE_bulletMass=41.9256; @@ -386,8 +386,8 @@ class CfgAmmo ACE_dragModel=1; ACE_muzzleVelocities[]={853}; ACE_barrelLengths[]={736.6}; - }; - class CUP_B_86x70_Ball_noTracer: BulletBase { + }; + class CUP_B_86x70_Ball_noTracer: BulletBase { ACE_caliber=8.585; ACE_bulletLength=43.18; ACE_bulletMass=19.44; @@ -398,5 +398,5 @@ class CfgAmmo ACE_dragModel=7; ACE_muzzleVelocities[]={820, 826, 830}; ACE_barrelLengths[]={609.6, 673.1, 711.2}; - }; + }; }; \ No newline at end of file From 038880cb017a82a85d495193d05f47b22e92e95d Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:33:51 +0200 Subject: [PATCH 22/63] Additional Translations for German + some corrections --- addons/common/stringtable.xml | 1 + addons/explosives/stringtable.xml | 1 + addons/frag/stringtable.xml | 14 ++++++++++++-- addons/hearing/stringtable.xml | 1 + addons/interaction/stringtable.xml | 1 + addons/map/stringtable.xml | 3 +++ addons/missionmodules/stringtable.xml | 19 ++++++++++++++++++- addons/mk6mortar/stringtable.xml | 1 + addons/nametags/stringtable.xml | 1 + addons/optionsmenu/stringtable.xml | 1 + addons/respawn/stringtable.xml | 1 + 11 files changed, 41 insertions(+), 3 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6a1ff475a1..375bee12a7 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -478,6 +478,7 @@ Sprawdzaj spójność addonów z serwerem + Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. Action diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index 9e2c540d6f..4b01e29d7b 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -533,6 +533,7 @@ 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. \ No newline at end of file diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml index a3a91b92d9..4ea2b2c0a9 100644 --- a/addons/frag/stringtable.xml +++ b/addons/frag/stringtable.xml @@ -3,33 +3,43 @@ Fragmentation Simulation + Splittersimulation Enable the ACE Fragmentation Simulation + Aktiviere die ACE-Splittersimulation Spalling Simulation + Explosionssimulation Enable the ACE Spalling Simulation + Aktiviere ACE-Explosionssimulation Maximum Projectiles Tracked + Maximalzahl der verfolgten Projektile - 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) + 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) + 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) Maximum Projectiles Per Frame + Maximale Anzahl an Projektilen pro Frame 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. + 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. (SP Only) Frag/Spall Debug Tracing + (nur SP) Splitter-/Explosions-Debugging (SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only. + (nur SP) Benötigt einen Neustart der Mission/des Editors. Aktiviert das sichtbare Verfolgen der Splitter- und Explosionsteile im SP. - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index e8bf6c4ab1..63c7ef7732 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -127,6 +127,7 @@ 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. \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index 9c1fc6641f..34f7404342 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -811,6 +811,7 @@ 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. \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 1959297909..84d0a869a5 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -14,6 +14,7 @@ Calculate dynamic map illumination based on light conditions? Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych + Berechne die Kartenauslichtung anhand des Umgebungslichts? Map shake? @@ -48,6 +49,7 @@ Moduł ten pozwala dostosować opcje widoku ekranu mapy. + Dieses Modul erweitert die Kartenfunktionen. Blue Force Tracking @@ -77,6 +79,7 @@ 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. \ No newline at end of file diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml index 1532827378..021daf2547 100644 --- a/addons/missionmodules/stringtable.xml +++ b/addons/missionmodules/stringtable.xml @@ -1,73 +1,90 @@ - + ACE Mission Modules ACE Moduły misji + ACE-Missionsmodule Ambiance Sounds [ACE] Dźwięki [ACE] + Umgebungsgeräusche [ACE] Sounds Dźwięki + Sounds Class names of the ambiance sounds to be played. Seperated by ',' Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ',' + Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch "," Minimal Distance Minimalny dystans + Mindestabstand 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 + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Maximum Distance Maksymalny dystans + Maximalabstand 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 + Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest Minimal Delay Minimalne opóźnienie + Minimale Verzögerung Minimal delay between sounds played Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Minimale Verzögerung zwischen abzuspielenden Sounds Maximum Delay Maksymalne opóźnienie + Maximale Verzögerung Maximum delay between sounds played Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami + Maximale Verzögerung zwischen abzuspielenden Sounds Follow Players Podążaj za graczami + Spielern folgen 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. + Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt. Volume Głośność + Lautstärke The volume of the sounds played Głośność odtwarzanych dźwięków + Lautstärke der abzuspielenden Sounds Ambiance sounds loop (synced across MP) Pętla odtwarzania dzwięków (synchronizowana na MP) + Umgebungsgeräusch-Schleife (im MP synchronisiert) \ No newline at end of file diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml index e83153c57a..92f5f1e6f5 100644 --- a/addons/mk6mortar/stringtable.xml +++ b/addons/mk6mortar/stringtable.xml @@ -87,6 +87,7 @@ Moduł ten pozwala dostosować ustawienia moździerza MK6. + Dieses Modul erlaubt das Einstellen des MK6-Mörsers. \ No newline at end of file diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 64dcd4c32b..3d23afa1b9 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -172,6 +172,7 @@ Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion. + Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern. Disabled diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 4eb18dc46a..838d84abf7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -259,6 +259,7 @@ 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. + 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. Hide diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 28e9da73a1..6296f80574 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -173,6 +173,7 @@ Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). + Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. Friendly Fire Messages From 5d1f2eafaace015045038f93a1ec5630c5a2bd27 Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:34:19 +0200 Subject: [PATCH 23/63] Fix German Translation --- addons/medical/stringtable.xml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 7384fea5ae..0926a89cf4 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -123,7 +123,7 @@ Apply Tourniquet - Druckverband anwenden + Tourniquet anwenden Aplicar torniquete Aplikovat škrtidlo Załóż stazę @@ -747,7 +747,7 @@ Tourniquet [CAT] - Druckverband [CAT] + Tourniquet [CAT] Жгут Torniquete [CAT] Tourniquet [CAT] @@ -2704,6 +2704,7 @@ ACE Medical ACE Opcje medyczne + ACE-Medicsystem Medical Settings [ACE] @@ -2718,6 +2719,7 @@ What is the medical simulation level? Jaki jest poziom symulacji medycznej? + Wie hoch soll das medizinische Simulationslevel sein? Basic @@ -2746,19 +2748,22 @@ Enable Litter Aktywuj odpadki - Abfall aktivieren + Abfälle aktivieren Enable litter being created upon treatment Twórz odpadki medyczne podczas leczenia + Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde Life time of litter objects Długość życia odpadków + Dauer des angezeigten Abfalls How long should litter objects stay? In seconds. -1 is forever. Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności. + Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer. Enable Screams @@ -2778,6 +2783,7 @@ 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? + Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird? AI Damage @@ -2787,6 +2793,7 @@ 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? + Wie viel Schaden kann eine KI erleiden, bis sie getötet wird? AI Unconsciousness @@ -2936,6 +2943,7 @@ Locations PAK Ogr. apteczek osobistych + Orte für Erstehilfekasten Where can the personal aid kit be used? @@ -2990,6 +2998,7 @@ Locations Surgical kit (Adv) Ogr. zestawu chirurg. + Orte für Operationskästen (erweitert) Where can the Surgical kit be used? @@ -3064,6 +3073,7 @@ + Dieses Modul legt fest welche Einheit ein Sanitäter ist. None From a44546af837c7ca63da5039f20ae58a8831f75de Mon Sep 17 00:00:00 2001 From: Macusercom Date: Sat, 30 May 2015 23:38:08 +0200 Subject: [PATCH 24/63] Added my name to AUTHORS.txt --- AUTHORS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS.txt b/AUTHORS.txt index e40b4c8ee6..1d902b8d56 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -62,6 +62,7 @@ Jonpas Kllrt Legolasindar "Viper" licht-im-Norden87 +Macusercom MarcBook meat Michail Nikolaev From 0b8896239c790701016bd3c66f6e22d9e3bc8bf8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 09:23:36 +0200 Subject: [PATCH 25/63] Progress bar stops on death - fix for #1449 --- addons/common/functions/fnc_progressBar.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index d6518a9f10..adc1b8d4c3 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -60,7 +60,7 @@ _perFrameFunction = { if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then { _errorCode = 1; } else { - if (ACE_player != _player) then { + if (ACE_player != _player || !alive _player) then { _errorCode = 2; } else { if (!([_args, _elapsedTime, _totalTime, _errorCode] call _condition)) then { From b8b980bd928e97eb94754f8077680675f19c7304 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 14:21:25 +0200 Subject: [PATCH 26/63] Changed speed of sound to double --- extensions/advanced_ballistics/AdvancedBallistics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index 573ff186a4..8d990ec0d2 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -577,7 +577,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) positionOffset[0] += sin(bulletDir + M_PI / 2) * spinDriftPartial; positionOffset[1] += cos(bulletDir + M_PI / 2) * spinDriftPartial; - float speedOfSound = 331.3 + (0.6 * temperature); + double speedOfSound = 331.3 + (0.6 * temperature); if (bulletSpeed < (speedOfSound + 5) && bulletSpeedAvg > speedOfSound && bulletSpeed > (speedOfSound - 5)) { std::uniform_real_distribution distribution(0.0, 1.0); double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef; From 43a2fed7c20f7961371a8b6ed2df729ed595d4d6 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 31 May 2015 14:22:00 +0200 Subject: [PATCH 27/63] New dll build for ab --- ace_advanced_ballistics.dll | Bin 623104 -> 207360 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 0a14d846b55c43bf8051149a15484c5834464b7a..9d3708959ce7a8f0fb478fdcfab01c4284395771 100644 GIT binary patch delta 77355 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�p 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