From d2538c6ff27ceb757fe0a1a93259fa5607e7006f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 22 Nov 2015 20:03:10 +0000 Subject: [PATCH 001/107] Add spectator text chat Turns out custom radio channels are kind of a pain to work with. However this should work fine assuming the radioChannelAdd commands will work on client machines. --- addons/spectator/XEH_postInit.sqf | 6 ++++++ .../functions/fnc_handleInterface.sqf | 5 ++++- .../spectator/functions/fnc_setSpectator.sqf | 19 ++++++++++++++++++- .../functions/fnc_transitionCamera.sqf | 6 ------ 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index a9737868a0..e5a037641e 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -9,5 +9,11 @@ GVAR(availableVisions) = [[-2,-1,0,1], [-2,-1], [-2,0,1], [-2]] select GVAR(restrictVisions); }] call EFUNC(common,addEventHandler); +// Create a radio channel for any spectators to text chat in +if (isServer) then { + GVAR(channel) = radioChannelCreate [[0.729,0.149,0.098,1],"Spectator","Spectator (%UNIT_NAME)",[]]; + publicVariable QGVAR(channel); +}; + // Should prevent unending spectator on mission end addMissionEventHandler ["Ended",{ [false] call FUNC(setSpectator) }]; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 8f29b20296..b4e76b5e82 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -172,9 +172,12 @@ switch (toLower _mode) do { [QGVAR(zeus)] call FUNC(interrupt); ["zeus"] call FUNC(handleInterface); }; - if ((isServer || {serverCommandAvailable "#kick"}) && {_dik in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) exitWith { + if (_dik in (actionKeys "Chat")) exitWith { false }; + if (_dik in (actionKeys "PrevChannel" + actionKeys "NextChannel")) exitWith { + !(isServer || serverCommandAvailable "#kick") + }; // Handle held keys (prevent repeat calling) if (GVAR(heldKeys) param [_dik,false]) exitwith {}; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 065ca0079b..30aa03764f 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -63,9 +63,17 @@ if (_set) then { GVAR(unitCamera) camCommit 0; [] call FUNC(transitionCamera); - // Close map and clear radio + // Cache current channel to switch back to on exit + GVAR(channelCache) = currentChannel; + + // Channel index starts count after the 5 default channels + GVAR(channel) radioChannelAdd [player]; + setCurrentChannel (5 + GVAR(channel)); + + // Close map and clear the chat openMap [false,false]; clearRadio; + enableRadio false; // Disable BI damage effects BIS_fnc_feedback_allowPP = false; @@ -111,7 +119,16 @@ if (_set) then { camDestroy GVAR(unitCamera); camDestroy GVAR(targetCamera); + // Remove from spectator chat + GVAR(channel) radioChannelRemove [player]; + + // Restore cached channel and delete cache + setCurrentChannel GVAR(channelCache); + GVAR(channelCache) = nil; + + // Clear any residual spectator chat clearRadio; + enableRadio true; // Return to player view player switchCamera "internal"; diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index 0f6eb3ffc7..0d51ebc427 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -61,7 +61,6 @@ if (_newMode == 0) then { // Free }; GVAR(camAgent) switchCamera "internal"; - clearRadio; } else { _camera = GVAR(unitCamera); @@ -87,11 +86,6 @@ if (_newMode == 0) then { // Free _camera cameraEffect ["internal", "back"]; }; - // Clear radio if group changed - if (group _newUnit != group GVAR(camUnit)) then { - clearRadio; - }; - GVAR(camUnit) = _newUnit; }; From c928a0d6cb0f48f0f05e6ffb578aa9cc2836437e Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 1 Dec 2015 22:50:28 -0600 Subject: [PATCH 002/107] Remove Sleep/WaitUntil from checkPBO Fix #2910 --- addons/common/functions/fnc_checkPBOs.sqf | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index 9cb5ed4d61..f28d281ebc 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -75,15 +75,21 @@ if (!isServer) then { _ctrlHint ctrlSetStructuredText _text; if (_mode == 0) then { - sleep 10; - _rscLayer cutFadeOut 0.2; + [{ + params ["_rscLayer"]; + TRACE_2("Hiding Error message after 10 seconds",time,_rscLayer); + _rscLayer cutFadeOut 0.2; + }, [_rscLayer], 10] call FUNC(waitAndExecute); }; }; if (_mode == 2) then { - waitUntil {alive player}; // To be able to show list if using checkAll - _text = composeText [parseText format ["%1", _text]]; - ["[ACE] ERROR", _text, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + [{alive player}, { // To be able to show list if using checkAll + params ["_text"]; + TRACE_2("Player is alive, showing msg and exiting",time,_text); + _text = composeText [parseText format ["%1", _text]]; + ["[ACE] ERROR", _text, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage); + }, [_text]] call FUNC(waitUntilAndExecute); }; }; From 91ace4fc9b479aded7c9baca48b44a220384a858 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 2 Dec 2015 23:58:41 -0600 Subject: [PATCH 003/107] Fix whitelist string -> array error in checkPbo Fix #2913 Use splitString instead of call compile to convert string into an array --- addons/common/XEH_postInit.sqf | 2 +- addons/common/functions/fnc_checkPBOs.sqf | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 0ca9f51329..ce75ad5187 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -167,7 +167,7 @@ call FUNC(checkFiles); [ GVAR(checkPBOsAction), GVAR(checkPBOsCheckAll), - call compile GVAR(checkPBOsWhitelist) + GVAR(checkPBOsWhitelist) ] call FUNC(checkPBOs) }] call FUNC(addEventHandler); diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index f28d281ebc..a196e8d4ca 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -9,7 +9,7 @@ * 1 = Warn permanently * 2 = Kick * 1: Check all PBOs? (default: false) - * 2: Whitelist (default: "[]") + * 2: Whitelist (default: "") * * Return Value: * None @@ -18,9 +18,13 @@ */ #include "script_component.hpp" -params ["_mode", ["_checkAll", false], ["_whitelist", "[]"]]; +params ["_mode", ["_checkAll", false], ["_whitelist", "", [""]]]; +TRACE_3("params",_mode,_checkAll,_whitelist); -_whitelist = [_whitelist, {toLower _this}] call FUNC(map); +//lowercase and convert whiteList String into array of strings: +_whitelist = toLower _whitelist; +_whitelist = _whitelist splitString "[,""']"; +TRACE_1("Array",_whitelist); ACE_Version_CheckAll = _checkAll; ACE_Version_Whitelist = _whitelist; From 875b3980ac173dd730477dde9e3eb2785da3c0cb Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 3 Dec 2015 15:23:38 -0600 Subject: [PATCH 004/107] Don't update openWounds if not bandaged Fix #2921 --- addons/medical/functions/fnc_handleBandageOpening.sqf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf index dc2183b16d..7f998111db 100644 --- a/addons/medical/functions/fnc_handleBandageOpening.sqf +++ b/addons/medical/functions/fnc_handleBandageOpening.sqf @@ -87,14 +87,13 @@ if (random(1) <= _reopeningChance) then { [{ private ["_bandage", "_openWounds", "_selectedInjury","_bandagedWounds","_exist"]; params ["_target", "_impact", "_part", "_injuryIndex", "_injury"]; + TRACE_5("params",_target,_impact,_part,_injuryIndex,_injury); //if (alive _target) then { _openWounds = _target getvariable [QGVAR(openWounds), []]; if ((count _openWounds)-1 < _injuryIndex) exitwith {}; _selectedInjury = _openWounds select _injuryIndex; if (_selectedInjury select 1 == _injury select 1 && (_selectedInjury select 2) == (_injury select 2)) then { // matching the IDs - _selectedInjury set [3, (_selectedInjury select 3) + _impact]; - _openWounds set [_injuryIndex, _selectedInjury]; _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []]; _exist = false; @@ -110,6 +109,8 @@ if (random(1) <= _reopeningChance) then { if (_exist) then { TRACE_2("Reopening Wound",_bandagedWounds,_openWounds); + _selectedInjury set [3, (_selectedInjury select 3) + _impact]; + _openWounds set [_injuryIndex, _selectedInjury]; _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true]; _target setvariable [QGVAR(openWounds), _openWounds, true]; }; From 5d43fa93c6a3bacefe2b0a247b1e37f04d8bcca5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 4 Dec 2015 19:37:37 +0100 Subject: [PATCH 005/107] fix FUNC(binocularMagazine), fix #2916, fix #2917, fix #2918, fix #2922, fix #2928, fix #2933 --- .../functions/fnc_binocularMagazine.sqf | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/addons/common/functions/fnc_binocularMagazine.sqf b/addons/common/functions/fnc_binocularMagazine.sqf index f097b90841..b5f4f0558e 100644 --- a/addons/common/functions/fnc_binocularMagazine.sqf +++ b/addons/common/functions/fnc_binocularMagazine.sqf @@ -9,32 +9,24 @@ * Magazine of the units binocular * * Example: - * [player] call ace_common_fnc_binocularMagazine + * player call ace_common_fnc_binocularMagazine * * Public: Yes - * - * Note: Doesn't work on dead units */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private ["_binocular", "_muzzle", "_mode", "_magazine"]; +private _binocular = binocular _unit; -_binocular = binocular _unit; +scopeName "main"; -if (_binocular == "") exitWith {""}; +{ + if ((_x select 0) isEqualTo _binocular) then { + // note: if there is no magazine, _x(4,0) will be nil, which skips the breakOut. + (_x select 4 select 0) breakOut "main"; + }; + false +} count weaponsitems _unit; -_muzzle = currentMuzzle _unit; -_mode = currentWeaponMode _unit; - -_unit selectWeapon _binocular; - -// didn't select the binocular (unit probably dead or not local). function won't work. quit with empty string -if (currentWeapon _unit != _binocular) exitWith {""}; - -_magazine = currentMagazine _unit; - -[_unit, _muzzle, _mode] call FUNC(selectWeaponMode); - -_magazine +"" From 43a168f0b962b21ca086c9a70776216a17cb8005 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 4 Dec 2015 15:16:17 -0600 Subject: [PATCH 006/107] Flashbangs - Make event radius match effect radius --- addons/grenades/functions/fnc_flashbangThrownFuze.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index 21d132464a..ae50e96e39 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -20,8 +20,7 @@ params ["_projectile"]; if (alive _projectile) then { playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - private "_affected"; - _affected = _projectile nearEntities ["CAManBase", 50]; + private _affected = _projectile nearEntities ["CAManBase", 20]; ["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent); }; From f5aae814657baa9384fb0ce33e80986b8f67a90d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 4 Dec 2015 20:08:30 -0600 Subject: [PATCH 007/107] MicroDagr - Add #undef to config for pboProject #2936 --- addons/microdagr/gui.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/addons/microdagr/gui.hpp b/addons/microdagr/gui.hpp index 2eeb99563c..115318bd02 100644 --- a/addons/microdagr/gui.hpp +++ b/addons/microdagr/gui.hpp @@ -64,6 +64,11 @@ class GVAR(TheDialog) { #define PROFILE_W (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1]) #define PROFILE_H ((16/9) * (profilenamespace getvariable ['IGUI_GRID_GPS_W', 1])) +//Need undef's for pboProject +#undef X_PART +#undef Y_PART +#undef W_PART +#undef H_PART #define X_PART(num) QUOTE((num) / 25 * PROFILE_W + PROFILE_X) #define Y_PART(num) QUOTE((num) / 25 * PROFILE_H + PROFILE_Y) #define W_PART(num) QUOTE((num) / 25 * PROFILE_W) From 291f4df0722a73d8836d03f6bff4748128a409ea Mon Sep 17 00:00:00 2001 From: licht-im-Norden87 Date: Thu, 1 Oct 2015 01:30:38 +0200 Subject: [PATCH 008/107] Update German Stringtables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update stringtable.xml Update stringtable.xml Update stringtable.xml kommas........................................................................................................................................................... Rallypoint Update stringtable.xml slideshow, not finished yet Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml What does Curator mean in this context? l. 294, l 302 cargo Update stringtable.xml Update stringtable.xml I left a few things out. I'd like if someone gives me advice Z.698 Pionier oder Instandsetzer o.Ä. Was genau ist die deutsche Bezeichung der Klasse in ACE bzw Arma? Z.707 Ich habe mich einfach mal auf Mechatroniker festgelegt, da Reperaturspezialist sich doch ein wenig ungelenk anhört... Update stringtable.xml Habe engineer als Pionier übersetzt (halte es selbst für etwas unpassend) Der specialist ist bei mir zum Mechatroniker geworden. Update stringtable.xml Update stringtable.xml Update stringtable.xml Fix Mistakes from merge Fix Empty Entries Fix Mistake Fix --- addons/cargo/stringtable.xml | 9 +++ addons/common/stringtable.xml | 13 ++++- addons/hearing/stringtable.xml | 4 +- addons/main/stringtable.xml | 1 + addons/medical/stringtable.xml | 90 +++++++++++++++++------------ addons/medical_menu/stringtable.xml | 53 +++++++++++++++++ addons/nametags/stringtable.xml | 28 ++++----- addons/repair/stringtable.xml | 80 ++++++++++++++++++++++++- addons/respawn/stringtable.xml | 18 +++--- addons/sitting/stringtable.xml | 5 ++ addons/slideshow/stringtable.xml | 8 +++ addons/zeus/stringtable.xml | 9 ++- 12 files changed, 250 insertions(+), 68 deletions(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 2e3ffd648b..686c445243 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -3,6 +3,7 @@ Load + Beladen Załaduj Carregar Загрузить @@ -11,6 +12,7 @@ Unload + Entladen Wyładuj Descarregar Выгрузить @@ -19,6 +21,7 @@ Cargo + Fracht Ładunek Carga Грузовой отсек @@ -27,6 +30,7 @@ Cargo Menu + Frachtmenü Menu ładunku Menu de carga Грузовой отсек @@ -35,6 +39,7 @@ Cargo space left: %1 + Frachtplätze frei: %1 Pozostałe miejsce: %1 Espaço de carga restante: %1 Осталось мест: %1 @@ -43,6 +48,7 @@ Enable Cargo + Aktiviere Fracht Aktywuj cargo Ativar carga Включить модуль перевозки грузов @@ -51,6 +57,7 @@ Enable the load in cargo module + Aktiviere das Fracht-Modul Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. Ativar o módulo de carregamento de carga Включает модуль погрузки и перевозки грузов @@ -58,6 +65,7 @@ Cargo Settings + Frachteinstellungen Ustawienia cargo Preferências de carregamento Перевозка грузов @@ -66,6 +74,7 @@ Configure the cargo module settings + Konfiguriere das Frachtmodul Skonfiguruj ustawienia modułu cargo. Configura as preferências do módulo de carga Конфигурирует настройки модуля перевозки грузов diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 8973d1d3e6..78a6e37760 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -485,7 +485,7 @@ Check addon integrity with server and do selected action if an addon is missing. Sprawdzaj spójność addonów z serwerem i wykonuj stosowną akcję jeżeli zostanie wykryty brak addonu. Este módulo verifica la integridad de los addons con los que iniciamos el simulador - Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat. + Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien mitgeladen hat. Zjistit addon který je v souladu se serverem Este módulo verifica a integridade dos addons quando iniciamos a simulação Выполняет проверку версий аддонов ACE у подключаемых игроков @@ -506,7 +506,7 @@ What to do with people who do not have the right PBOs? Co zrobić z graczami, którzy nie mają właściwych PBO? ¿Qué hacer con la gente que no tiene correctamente los PBOs? - Was soll mit Leuten passieren, die nicht die richtigen PBOs haben? + Was soll mit Leuten geschehen, die nicht die richtigen PBOs geladen haben? Co udělat s lidmi, co nemají správné addony? O que fazer com pessoas que não tem os PBOs corretos? Que faire avec les personnes n'ayant pas les bon PBOs @@ -528,7 +528,7 @@ Warn (permanent) Ostrzeżenie (permanentne) Avisar (permanente) - Immer verwarnen + Verwarnen (permanent)/German> Upozornit (permanentně) Avisar (permanente) Avertir (permanent) @@ -693,6 +693,7 @@ Vehicles only + Nur Fahrzeuge Tylko pojazdy Somente veículos Только в транспорте @@ -701,6 +702,7 @@ Do Not Force + Nicht erzwingen Nie wymuszaj No forzar Nicht erzwingen @@ -718,6 +720,7 @@ ACE3 Common + ACE3 Allgemein ACE3 Ogólne Comum ACE3 ACE3 Общие @@ -725,6 +728,7 @@ ACE3 Weapons + ACE3 Waffen ACE3 Broń Armamento ACE3 ACE3 Оружие @@ -733,6 +737,7 @@ ACE3 Movement + ACE3 Bewegung ACE3 Ruch Movimento ACE3 ACE3 Перемещение @@ -740,6 +745,7 @@ ACE3 Scope Adjustment + ACE3 Visiereinstellunge ACE3 Regulacja optyki Ajuste de luneta ACE3 ACE3 Прицелы @@ -748,6 +754,7 @@ ACE3 Vehicles + ACE3 Fahrzeuge ACE3 Pojazdy Veículos ACE3 ACE3 Транспорт diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 783326152c..f9a4503248 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -51,7 +51,7 @@ Earplugs in - Ohrenstöpsel drinnen + Ohrenstöpsel drin Tapones puestos Stopery włożone Špunty v uších @@ -153,6 +153,7 @@ Effect Zeus RC + Beeinflusst Zeus-Einheiten Wpływ na Zeus RC Влияет на юнита Зевса Afeta Zeus CR @@ -160,6 +161,7 @@ Allow zeus remote controlled units to be able to take hearing damage. + Erlaubt von Zeus gesteuerte Einheiten einen Hörschaden davonzutragen. Aktywuj efekty utraty słuchu dla jednostek kontrolowanych zdalnie przez Zeusa. Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index 511da9875a..fa2ed79831 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -3,6 +3,7 @@ ACE Logistics + ACE Logistik. ACE Logistyka Logísticas ACE ACE: логистика diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 5c3d03a85d..fce6016bbb 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-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig. + Die Einstellung für das Abfall-Detaillevel stellt die Menge des lokal angezeigten medizinischen Abfalls ein. Zuviele Abfälle können FPS-Einbrüche erzeugen, weswegen diese Einstellung nur clientseitig ist. 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. @@ -699,7 +699,7 @@ Almost no breathing - Fast keine Atmung + Beinahe keine Atmung Дыхание очень слабое Casi sin respiración Respiration faible @@ -895,7 +895,7 @@ Reduce la velocidad de pérdida de sangre Ralentit le saignement Zmniejsza ubytek krwi z kończyn w przypadku krwawienia. Nie może być noszony zbyt długo ze względu na narastający ból z kończyny. - Verringert den Blutverlust während einer Blutung + Verringert den Blutverlust Lelassítja a vérvesztést vérzés esetén Rallenta la perdita di sangue in caso di sanguinamento Reduz a velocidade da perda de sangue @@ -907,7 +907,7 @@ Dispositivo utilizado para eliminar el pulso distal y de ese modo controlar la pérdida de sangre Un dispositif permettant de compresser les artères et veines afin de réduire la perte de sang. Opaska uciskowa CAT służy do tamowanie krwotoków w sytuacji zranienia kończyn z masywnym krwawieniem tętniczym lub żylnym. - Ein Gerät, das Druck auf Venen und Arterien ausübt und so den Blutfluss verringert. + Ein Hilfsmittel, das Druck auf Venen und Arterien ausübt und so den Blutfluss verringert. Egy szűkítőeszköz, mely a vénás és artériás nyomás keringés helyi összenyomására szolgál, ezzel lelassítva vagy megállítva az adott területen a vérkeringést. Ez csökkenti a vérvesztés mértékét. Un laccio emostatico usato per comprimere le vene e arterie per bloccare o rallentare la circolazione del sangue e quindi rallentare dissanguamenti. A aparelho que comprime as artérias e veias para diminuir a perda de sangue. @@ -1483,7 +1483,7 @@ Артериальное давление не определяется No puedes encontrar presión arterial Nie udało Ci się sprawdzić ciśnienia krwi - Blutdruck konnte nicht gefunden werden + Du konntest keinen Blutdruck feststellen Nem sikerült a vérnyomás megmérése Manca strumento per misurare pressione sanguigna Você falhou em aferir a Pressão Arterial @@ -1982,7 +1982,7 @@ Load Patient Into - Patient Einladen + Patient einladen Cargar al paciente en Załaduj pacjenta Naložit pacianta do @@ -1994,7 +1994,7 @@ Unload Patient - Patient Ausladen + Patient ausladen Descargar al paciente Wyładuj pacjenta Vyložit pacienta @@ -2008,7 +2008,7 @@ Unload patient Descargar al paciente Выгрузить пациента - Patient Ausladen + Patient ausladen Wyładuj pacjenta Débarquer le patient Sebesült kihúzása @@ -2020,7 +2020,7 @@ Load patient Cargar al paciente en Погрузить пациента - Patient Einladen + Patient einladen Załaduj pacjenta Embarquer le patient Sebesült berakása @@ -2044,7 +2044,7 @@ Placing body in bodybag Colocando cuerpo en bolsa para cadáveres Упаковка тела ... - Verstaue Körper in Leichensack + Körper wird in Leichensack gesteckt Pakowanie ciała do worka na zwłoki ... Placement du corps dans la housse Test hullazsákba helyezése ... @@ -2102,6 +2102,7 @@ %1 performed CPR + %1 hat eine HLW durchgeführt %1 wykonał cykl RKO %1 провел сердечно-легочную реанимацию %1 realicó RCP @@ -2109,6 +2110,7 @@ %1 used Personal Aid Kit + %1 hat das eigene Erste-Hilfe-Set verwendet. %1 użył apteczki %1 utilizou KPS %1 использовал аптечку @@ -2279,7 +2281,7 @@ Style of menu (Medical) Styl menu medycznego Style de menu (Médical) - Menü-Stil (Medical) + Menüstil (Medizin) Вид меню (медицина) Tipo de menú (Medico) Styl menu (Zdravotní) @@ -2291,7 +2293,7 @@ Select the type of menu you prefer; default 3d selections or radial. Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale - Wähle den Menü-Stil: Standard 3D-Selektion oder kreisförmig. + Wähle den Menü-Stil: Standard 3D-Auswahl oder kreisförmig. Выберите тип меню: стандартный вариант (3D) или радиальный Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. @@ -2303,7 +2305,7 @@ Selections (3d) Pozycje (3D) sélections (3D) - 3D-Selektion + 3D-Auswahl Стандартный (3D) Selecciones (3d) Seleção (3d) @@ -2759,7 +2761,7 @@ Настройки медицины [ACE] Ustawienia medyczne Ajustes médicos [ACE] - Medizinische Einstellungen [ACE] + Sanitätseinstellungen [ACE] Lékařské nastavení [ACE] Ajustes médicos [ACE] Option médicale [ACE] @@ -2770,7 +2772,7 @@ Сложность медицины Poziom medyczny Nivel médico - Medizinisches Level + Stufe des Sanitätssystem Úroveň medického Nível médico Niveau de simulation médicale @@ -2814,7 +2816,7 @@ Настройки медиков Poziom medyków Configuración médica - Medizinische Einstellungen + Sanitätseinstellungen Úroveň zdravotníků Configuração médica Paramètre des infirmiers @@ -2822,6 +2824,7 @@ What is the level of detail prefered for medics? + Wie hoch soll das Simulationslevel für Sanitäter sein? Каков уровень подробностей для медиков? Jaki jest poziom detali medycznych wyświetlanych dla medyków? ¿Cuál es el nivel de detalle preferido para los médicos? @@ -2975,6 +2978,7 @@ Remote Controlled AI + Ferngesteuerte KI-Einheiten IA controlada remotamente IA controlada remotamente Zdalnie sterowane AI @@ -2985,6 +2989,7 @@ Treat remote controlled units as AI not players? + Behandle ferngesteuerte Einheiten als KI und nicht als Spieler? ¿Tratar unidades remotamente controladas como IA? Tratar unidades remotamente controladas como IA? Traktuj jednostki zdalnie sterowane (przez Zeusa) jako AI, nie jako graczy? @@ -3086,7 +3091,7 @@ Включает медицинскую систему как для игроков, так и для ботов. Moduł ten dostarcza system medyczny dla graczy oraz AI. Proporciona un sistema médico para jugadores e IA. - Aktiviert ein medizinisches System für Spieler und KI. + Aktiviert ein Sanitätssystem für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. Proporciona o sistema médico para os jogadores e a IA. Fourni un système médical pour les joueurs tout comme pour les IA. @@ -3097,7 +3102,7 @@ Настройки усложненной медицины [ACE] Zaawansowane ustawienia medyczne Ajustes médicos avanzados [ACE] - Erweiterte medizinische Einstellungen [ACE] + Erweiterte Sanitätseinstellungen [ACE] Pokročilé zdravotnické nastavení [ACE] Ajustes médicos avançados [ACE] Paramètres des soins avancés @@ -3119,7 +3124,7 @@ Выберите, на кого будет распространяться усложненная система медицины Wybierz dla kogo zaawansowany system medyczny będzie aktywny Seleccione para qué unidades será habilitado el sistema médico avanzado - Wähle aus welche Einheiten das erweiterte medizinische System haben + Wähle aus, welche Einheiten unter das erweiterte Sanitätssystem fallen Vyberte, pro jaké jednotky bude pokročilý zdravotní systém povolen Selecione quais unidades o sistema médico avançado será habilitado Sélectionne pour quelle unité le système de soin avancé est activé @@ -3185,7 +3190,7 @@ Должны ли юниты получать повреждения от аварий на транспорте? Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? ¿Las unidades reciben daño de un accidente de tráfico? - Bekommen Einheiten von Fahrzeugunfällen Schaden? + Verursacht ein Fahrzeugunfall Schaden (an den Insassen) Dostane jednotka poškození při autonehodě? As unidades recebem dano de uma batida de veículo? Les unités subissent des dégats lors d'accident @@ -3292,6 +3297,7 @@ Condition PAK + Voraussetzungen für das Erste-Hilfe-Set Podmínka osobní lékárničky Condición EPA Condition d'utilisation du KPS @@ -3302,6 +3308,7 @@ When can the PAK be used? + Wann kann das Erste-Hilfe-Set verwendet werden? Kde může být použita osobní lékárnička? ¿Cuando se puede utilizar el Equipo de primeros auxilios? Quand peut être utilisé le Kit de Premier Secours @@ -3326,7 +3333,7 @@ В медицинском транспорте Pojazdy medyczne Vehiculos médicos - Medizinische Fahrzeuge + Sanitätsfahrzeuge Zdravotnická vozidla Veículos médcos Dans les véhicules médicals @@ -3381,7 +3388,7 @@ Удалять хирургический набор (усл.) Usuń zest. chir. po użyciu Eliminar equipo quirúrgico (Avanzado) - Enrtferne Operationskasten (erweitert) + Entferne Operationskasten (erweitert) Odebrat chirurgickou soupravu (Pokr.) Remover kit cirúrgico (avançado) Supprimer les kit de chirurgie (Avancé) @@ -3422,6 +3429,7 @@ Condition Surgical Kit (Adv) + Voraussetzungen für den Operationskasten (erweitert) Podmínka chirurgické soupravy (Pokr.) Condición de equipo quirúrgico (Av) Conditions d'utilisation du kit de chirurgie @@ -3432,6 +3440,7 @@ When can the Surgical Kit be used? + Wann kann der Operationskasten verwendet werden? Kde může být použita chirurgická souprava? ¿Cuando se puede utilizar el equipo quirúrgico? Quand peut être utilisé les kit de chirurgie @@ -3442,6 +3451,7 @@ Heal hitpoints + Heile Trefferpunkte Lecz hitpointy Curar puntos de vida Исцелять части тела @@ -3449,6 +3459,7 @@ Heal fully bandaged hitpoints + Heile verbundene Trefferpunkte Po bandażowaniu ulecz hitpointy, usuwając z nich ślady krwi i przywracając im pełną sprawność. Curar miembros totalmente vendados Исцелять полностью перебинтованные части тела @@ -3467,7 +3478,7 @@ Pain is only temporarily suppressed, not removed - Schmerzen werden nur vorübergehend unterdrückt, nicht entfernt + Schmerzen werden nur vorübergehend unterdrückt, nicht deren Ursache geheilt. Ból jest tylko tymczasowo zwalczany, nie jest usuwany trwale Bolest je potlačena, ale jen dočastně El dolor se suprime solo temporalmente, no se elimina. @@ -3481,7 +3492,7 @@ Настройка лечения в медицинской системе ACE Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE Configure las opciones de tratamiento del ACE Médico - Behandlungseinstellungen vom ACE-Medical konfigurieren + Behandlungseinstellungen vom ACE-Medizin konfigurieren Konfigurace nastavení léčby ze zdravotnické systému ACE Configure as opções de tratamento do ACE Médico Configure les paramètres de traitement du système de soin ACE @@ -3547,7 +3558,7 @@ Макс. кол-во жизней Maks. ilość wskrzeszeń Vidas máximas de resucitado - Maximale Leben bei Wiederbelebung + Maximale Anzahl der Wiederbelebungen Maximální počet oživení Vidas máximas do reavivado Nombre maximum de revive @@ -3558,7 +3569,7 @@ Максимальное количество жизней у бойца. Чтобы отключить, укажите 0 или -1. Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć. Cantidad máxima de vidas por unidad. 0 o -1 es desactivado. - Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert. + Anzahl der Leben einer Einheit. 0 oder -1 bedeutet deaktiviert. Maximální počet životu pro jednotku. 0 nebo -1 je zakázáno. Quantidade máxima de vidas por unidade. 0 ou -1 é desativado. Nombre de vie maximale d'une unité. 0 ou -1 désactive @@ -3569,7 +3580,7 @@ Включает медицинскую систему как для игроков, так и для ботов. Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO. Proporciona un sistema médico para jugadores e IA. - Aktiviert das Medicsystem für Spieler und KI. + Aktiviert das Sanitätssystem für Spieler und KI. Poskytuje zdravotní systém pro hráče a AI. Proporciona um sistema médico para jogadores e IA. Fourni un sytème médical pour les joueurs et les IAs @@ -3602,7 +3613,7 @@ Список имен юнитов, которые будут считаться медиками (через запятую). Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami. Lista de los nombres de las unidades que se clasifican como médico, separados por comas. - Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt. + Aufzählung von Einheiten, die als Sanitäter gelten. Werden durch Kommata getrennt. Seznam osob které budou klasifikovány jako zdravotník, oddělené čárkami. Lista dos nomes das unidades que se classificam como médicos, separados por vírgulas. Liste d'unité qui seront listées comme infirmier, séparation par virgule @@ -3622,7 +3633,7 @@ This module allows you to assign the medic class to selected units. Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. - Dieses Modul legt fest welche Einheit ein Sanitäter ist. + Dieses Modul legt fest, welche Einheiten Sanitäter sind. Tento modul určuje, která jednotka je zdravotník. Este módulo determina qual unidade é um paramédico. Ce module permet d'assigner la classe médicale à une unité sélectionnée @@ -3657,7 +3668,7 @@ Врач (только усложн.) Doktor (tylko zaawansowani medycy) Doctor (Solo medicina avanzada) - Arzt (nur erweiterte Sanitäter) + Arzt (Nur erweitertes Sanitätssystem) Doktor (Pouze pokročilý zdravotníci) Doutor (Somente médicos avançados) Médecin (traitements avancés uniquement) @@ -3668,7 +3679,7 @@ Задает юниту класс медика Moduł ten przypisuje klasę medyka ACE do jednostek. Asigna la clase médico ACE a una unidad - Weise die ACE-Sanitäterklasse einer Einheit zu + Weise die ACE-Sanitäterklasse einer Einheit zu. Přiřadí ACE třídu zdravotníka do jednotky Atribui a classe médica do ACE a uma unidade Assigner la classe médicale à une unité @@ -3679,7 +3690,7 @@ Сделать мед. транспортом [ACE] Ustaw pojazd medyczny Establecer vehículos médicos [ACE] - Setze medizinisches Fahrzeug [ACE] + Setze Sanitätsfahrzeug [ACE] Určit zdravotnické vozidlo [ACE] Definir veículo médico [ACE] Définir comme véhicule médical [ACE] @@ -3701,7 +3712,7 @@ Список транспортных средств, которые будут считаться медицинским транспортом (через запятую). Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami. Lista de los vehículos que se clasifican como vehículo médicos, separados por comas. - Liste von Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt. + Aufzählung von Fahrzeugen, die als Sanitätsfahrzeug gelten. Werden durch Kommata getrennt. Seznam vozidel které budou klasifikovány jako zdravotnická vozidla, oddělené čárkami. Lista de veículos que serão classificados como veículos médicos, separados por vírgulas. Liste de véhicule classé comme véhicule médical, séparation par virgule. @@ -3723,7 +3734,7 @@ Будут ли объекты в списке считаться медицинским транспортом. Czy pojazdy z tej listy są pojazdami medycznymi? Cualquiera de la lista o fuera de ella será un vehículo médico. - Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist. + Legt fest, ob das Objekt in der Liste ein Sanitätsfahrzeug ist. Ať už jsou nebo nejsou objekty v seznamu budou zdravotnická vozidla. Se serão ou não os objetos dessa lista veículos médicos. Quoi qu'il arrive les objets de la liste seront des véhicules médical @@ -3778,7 +3789,7 @@ Определяет объект в качестве госпиталя. Позволяет оказывать более сложную помощь. Может применяться к зданиям и технике. Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach. Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos. - Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden. + Definiert ein Objekt als medizinische Einrichtung. Hier werden weitere, tiefgreifende Behandlungen ermöglicht. Kann Fahrzeugen oder Gebäuden zugewiesen werden. Definuje objekt jako zdravotnické zařízení. To umožňuje více pokročilé léčení. Může být použito na budovy nebo na vozidla. Define um objeto como instalação médica. Isso permite tratamentos mais avançados. Pode ser utilizado em edifícios e veículos. Définir un objet comme équipement médical. Cela permet les traitements avancés. Peut être utilisé sur les batiments et les véhicules @@ -3789,7 +3800,7 @@ [ACE] Ящик с медикаментами (базовая медицина) [ACE] Skrzynka z zapasami medycznymi (podstawowa) [ACE] Caja de suministros médicos (Básica) - [ACE] Medizinische Kiste (standard) + [ACE] Sanitätskiste (standard) [ACE] Zdravotnické zásoby (základní) [ACE] Caixa com suprimentos médicos [ACE] Caisse médicale (basique) @@ -3800,7 +3811,7 @@ [ACE] Ящик с медикаментами (усложн. медицина) [ACE] Skrzynka z zapasami medycznymi (zaawansowana) [ACE] Caja de suministros médicos (Avanzada) - [ACE] Medizinische Kiste (erweitert) + [ACE] Sanitätskiste (erweitert) [ACE] Zdravotnické zásoby (pokročilé) [ACE] Caixa com suprimentos médicos (Avançados) [ACE] Caisse médicale (avancée) @@ -3808,6 +3819,7 @@ Anytime + Jederzeit Kdykoli Siempre Tout le temps @@ -3818,6 +3830,7 @@ Stable + Stabil Stabilní Estable Stable @@ -3840,6 +3853,7 @@ Distance to %1 has become to far for treatment + Die Entfernung zu %1 ist zu groß für eine Behandlung %1 odszedł zbyt daleko, nie można kontynuować leczenia Расстояние до %1 стало слишком большим для лечения A distância de %1 está muito longe para tratamento @@ -3847,6 +3861,7 @@ This person (%1) is awake and cannot be loaded + Diese Person ist wach und kann nicht verladen werden Ta osoba (%1) jest przytomna i nie może zostać załadowana Esta persona (%1) está despierto y no puede ser cargado Боец (%1) в сознании и не может быть погружен @@ -3854,6 +3869,7 @@ There is no tourniquet on this body part! + An diesem Körperteil befindet sich kein Tourniquet Na tej części ciała nie ma stazy! No hay torniquete en esta parte del cuerpo! Нет жгута на этой части тела! diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 9e3bbc4c2b..3763577f5a 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -3,6 +3,7 @@ Medical Menu + Sanitätsmenü Menu medyczne Menu médico Медицинское меню @@ -10,6 +11,7 @@ Allow Medical Menu + Erlaube Sanitätsmenü Akt. menu medyczne Permitir menu médico Разрешить мед. меню @@ -17,6 +19,7 @@ Allow clients to use the medical menu + Erlaube Clients das Sanitätsmenü zu verwenden Zezwalaj graczom korzystać z menu medycznego Permite que clientes utilizem o menu médico Разрешает клиентам использовать медицинское меню @@ -24,6 +27,7 @@ Use Medical menu + Verwende Sanitätsmenü Użyj menu medycznego Usar o menu médico Использовать медицинское меню @@ -31,6 +35,7 @@ If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu + Wenn vom Server erlaubt, aktiviert diese Einstellung das Sanitätsmenü, welches durch Tastenkombination oder Interaktionsmenü aufgerufen werden kann. Jeżeli zezwolone przez serwer, aktywuj menu medyczne poprzez skrót klawiszowy i menu interakcji. Se permitido pelo servidor, ativa a opção de usar o menu médico por atalhos de teclas e menu de interação Если разрешено сервером, включает опцию использования медицинского меню с помощью горячих главиш или меню взаимодействия @@ -38,6 +43,7 @@ Re-open Medical menu + Sanitätsmenü offen lassen Otwieraj ponownie menu medyczne Reabrir menu médico Переоткрывать мед. меню @@ -45,6 +51,7 @@ Re-open the medical menu after succesful treatment + Öffnet das Sanitätsmenü nach einer erfolgreichen Behandlung erneut Otwórz ponownie menu medyczne po udanym zakończeniu leczenia Reabre o menu médico depois de um tratamento bem sucedido Переоткрывать медицинское меню после удачного лечения @@ -52,6 +59,7 @@ Open Medical Menu + Öffne Sanitätsmenü Otwórz menu medyczne Abrir menu médico Открыть медицинское меню @@ -59,6 +67,7 @@ Medical Menu Settings + Sanitätsmenü Einstellungen Ustawienia menu medycznego Preferências do menu médico Настройки медицинского меню @@ -66,6 +75,7 @@ Configure the usage of the Medical Menu + Stelle die Verwendung des Sanitätsmenüs ein Skonfiguruj opcje menu medycznego Configura o uso do menu médico Настройки использования медицинского меню @@ -73,6 +83,7 @@ EXAMINE & TREATMENT + Untersuchung & Behandlung ОСМОТР И ЛЕЧЕНИЕ EXAMINAR & TRATAMIENTO EXAMINER & TRAITEMENTS @@ -82,6 +93,7 @@ STATUS + BERICHT СОСТОЯНИЕ ESTADO ÉTATS @@ -91,6 +103,7 @@ OVERVIEW + ÜBERSICHT ОБЩАЯ ИНФОРМАЦИЯ DESCRIPCIÓN DESCRIPTION @@ -100,6 +113,7 @@ ACTIVITY LOG + AKTIVITÄTSVERLAUF ПРОВЕДЕННЫЕ МАНИПУЛЯЦИИ REGISTRO DE ACTIVIDAD REGISTRE DES SOINS @@ -109,6 +123,7 @@ QUICK VIEW + SCHNELLANSICHT БЫСТРЫЙ ОСМОТР VISTA RÁPIDA VUE RAPIDE @@ -118,6 +133,7 @@ View triage Card + Zeige Triagekarte Смотреть первичную карточку Ver Triage Voir Carte de Triage @@ -126,6 +142,7 @@ Examine Patient + Untersuche Patient Осмотреть пациента Examinar Paciente Examiner Patient @@ -134,6 +151,7 @@ Bandage / Fractures + Bandagen / Brüche Раны / переломы Vendajes/Fracturas Bandages / Fractures @@ -142,6 +160,7 @@ Medication + Medikamentation Медикаменты Medicación Médications @@ -158,6 +177,7 @@ Advanced Treatments + Erweiterte Behandlungen Специальная медпомощь Tratamientos Avanzados Traitement Avancé @@ -166,6 +186,7 @@ Drag/Carry + Ziehen/Tragen Тащить/нести Arrastrar/Cargar Glisser/Porter @@ -175,6 +196,7 @@ Toggle (Self) + Umschalter (Selbst) Лечить себя/другого раненого Activer (sois) Przełącz (na siebie) @@ -183,6 +205,7 @@ Select triage status + Setze Status auf der Triagekarte Сортировка Seleccionar estado de Triage Selectioner l'état de Triage @@ -191,6 +214,7 @@ Select Head + Wähle Kopf Выбрать голову Seleccionar Cabeza Selectioner Tête @@ -200,6 +224,7 @@ Select Torso + Wähle Torso Выбрать торс Seleccionar Torso Selectioner Torse @@ -209,6 +234,7 @@ Select Left Arm + Wähle linken Arm Выбрать левую руку Seleccionar Brazo Izquierdo Selectioner Bras Gauche @@ -218,6 +244,7 @@ Select Right Arm + Wähle rechten Arm Выбрать правую руку Seleccionar Brazo Derecho Selectioner Bras Droit @@ -227,6 +254,7 @@ Select Left Leg + Wähle linkes Bein Выбрать левую ногу Seleccionar Pierna Izquierda Selectioner Jambe Gauche @@ -236,6 +264,7 @@ Select Right Leg + Wähle rechtes Bein Выбрать правую ногу Seleccionar Pierna Derecha Selectioner Jambe Droite @@ -245,6 +274,7 @@ Head + Kopf Голова Cabeza Tête @@ -254,6 +284,7 @@ Torso + Torso Торс Torse Tors @@ -263,6 +294,7 @@ Left Arm + Linker Arm Левая рука Brazo Izquierdo Bras Gauche @@ -272,6 +304,7 @@ Right Arm + Rechter Arm Правая рука Brazo Derecho Bras Droit @@ -281,6 +314,7 @@ Left Leg + Linkes Bein Левая нога Pierna Izquierda Jambe Gauche @@ -290,6 +324,7 @@ Right Leg + Rechtes Bein Правая нога Pierna Derecha Jambe Droite @@ -299,6 +334,7 @@ Body Part: %1 + Körperteil: %1 Часть тела: %1 Parte del cuerpo: %1 Partie du corps: %1 @@ -307,6 +343,7 @@ Small + Klein малого размера Pequeña Petite @@ -315,6 +352,7 @@ Medium + Mittel среднего размера Mediana moyenne @@ -323,6 +361,7 @@ Large + Groß большого размера Grande Grande @@ -331,6 +370,7 @@ There are %2 %1 Open Wounds + Er hat %2 %1 offene Wunden %2 открытые раны %1 Hay %2 Heridas Abiertas %1 Il y a %2 %1 Blessure Ouverte @@ -339,6 +379,7 @@ There is 1 %1 Open Wound + Er hat 1 %1 offene Wunde Открытая рана %1 Hay 1 Herida Abierta %1 Il y a 1 blessure ouverte %1 @@ -347,6 +388,7 @@ There is a partial %1 Open wound + Er hat eine zum Teil offene Wunde (%1) Частично открытая рана %1 Hay una herida parcial abierta %1 Il y a une Blessure Patiellement Ouverte %1 @@ -355,6 +397,7 @@ There are %2 %1 Bandaged Wounds + Er hat %2 %1, verbundene Wunden %2 перевязанные раны %1 Hay %2 Heridas %1 Vendadas Il y a %2 %1 Blessure Bandée @@ -363,6 +406,7 @@ There is 1 %1 Bandaged Wound + Er hat 1 %1, verbundene Wunde 1 перевязанная рана %1 Hay 1 Herida Vendada %1 Il y a 1 %1 Blessure Bandée @@ -379,6 +423,7 @@ Normal breathing + Normale Atmung Дыхание в норме Respiración normal Respiration Normale @@ -387,6 +432,7 @@ No breathing + Keine Atmung Дыхания нет No respira Apnée @@ -396,6 +442,7 @@ Difficult breathing + Schwere Atmung Дыхание затруднено Dificultad para respirar Difficultée Respiratoire @@ -405,6 +452,7 @@ Almost no breathing + Beinahe keine Atmung Дыхания почти нет Casi sin respirar Respiration Faible @@ -414,6 +462,7 @@ Bleeding + Blutung Кровотечение Sangrando Seignement @@ -423,6 +472,7 @@ in Pain + hat Schmerzen Испытывает боль Con Dolor A De La Douleur @@ -432,6 +482,7 @@ Lost a lot of Blood + hat sehr viel Blut verloren Большая кровопотеря Mucha Sangre perdida A Perdu Bcp de Sang @@ -441,6 +492,7 @@ Tourniquet [CAT] + Tourniquet [CAT] Жгут Torniquete [CAT] Garot [CAT] @@ -449,6 +501,7 @@ Nasopharyngeal Tube [NPA] + Nasen-Rachen-Rohr Назотрахеальная трубка Torniquete [CAT] Canule Naseaupharyngée [NPA] diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index 61a2b3f5a2..9016988452 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -51,7 +51,7 @@ Show player ranks (requires player names) - Spielerränge anzeigen (benötig Spielernamen) + Spielerränge anzeigen (benötigt Spielernamen) Pokaż rangi graczy (wymagana opcja Pokaż imiona graczy) Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores) Grade des joueurs (si noms affichés) @@ -87,7 +87,7 @@ Show SoundWaves (requires player names) - Schallwellen anzeigen (benötigt Spielernamen) + Sprechsymbol anzeigen (benötigt Spielernamen) Mostrar onda sonora (requiere Mostrar nombres de jugadores) Индикатор разговора (при вкл. именах) Zobrazit SoundWaves (vyžaduje jména hráčů) @@ -113,7 +113,7 @@ Name Tags Ustawienia imion Etiquetas de nombre - Namensanzeigen + Zeige Spielernamen Jmenovky Etiquetas de nome NameTags @@ -124,7 +124,7 @@ Player Names View Dist. Zasięg imion graczy Distancia de vision para nombres de jugadores - Spielernamen-Distanz + Sichtweite der Spielernamen Vzdálenost zobrazení jména hráčů Distância de visão dos nomes dos jogadores Distance de vue des noms de joueurs @@ -135,7 +135,7 @@ Distance in meters at which player names are shown. Default: 5 Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5 Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5 - Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5 + Entfernung in Metern, bei der Spielernamen angezeigt werden. Standard: 5 Vzdálenost v metrech pro zobrazení jména. Výchozí: 5 Distância em metros que os nomes dos jogadores são mostrados. Padrão: 5 Distance en mètres au delà de laquelle les noms de joueurs ne sont plus affichés. Défaut: 5 @@ -146,7 +146,7 @@ Show name tags for AI? Imiona AI ¿Mostrar nombres para la IA? - Zeige Namensanzeigen für KI? + Zeige KI-Namen? Zobrazit jmenovky pro AI? Mostrar nomes para IA? Afficher les noms pour les IA? @@ -157,7 +157,7 @@ Show the name and rank tags for friendly AI units? Default: Do not force Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar - Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen + Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erzwingen Zobrazit jména a hodnosti pro spřátelené AI jednotky? Výchozí: Nevynucovat Mostra o nome e patente para unidades IA aliadas? Padrão: Não forçar Affiche le nom et le rang pour les IA alliées? Défaut : ne pas forcer @@ -179,7 +179,7 @@ Force Show Wymuś wyświetlanie Mostrar forzado - Anzeigen erzwingen + Anzeige erzwingen Vynuceno zobrazit Mostrar forçado Forcer l'affichage @@ -190,7 +190,7 @@ Show crew info? Pokaż załogę ¿Mostrar información de la tripulación? - Zeige Besatzungsinfo? + Zeige Besatzungsstatus? Zobrazit informace o posádce? Mostrar informação de tripulação? Afficher les informations de l'équipage? @@ -201,7 +201,7 @@ Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar - Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen. + Zeige Status der Fahrzeugbesatzung oder erlaube Spielern ihn auszuwählen. Standard: nicht erzwingen. Zobrazit informace o posádce, nebo nechat aby si hráč vybral sám. Výchozí: Nevynucovat Mostrar informações de tripulação ou por padrão permitir a escolha dos jogadores. Padrão: Não forçar. Afficher les informations sur l'équipage d'un véhicule. Défaut: ne pas forcer @@ -223,7 +223,7 @@ Show cursor NameTag for vehicle commander (only if client has name tags enabled) Default: No Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No - Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein + Zeige Maus-Spielernamen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет @@ -310,7 +310,7 @@ Use Nametag settings Użyj ustawień imion Usar ajustes de etiquetas de nombre - Verwende Namenanzeigen + Verwende Spielernamen Použít nastavení jmenovky Usar ajustes de etiquetas de nome Utiliser les paramètre des NamesTags @@ -344,7 +344,7 @@ Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2. Efecto de ondas sonoras encima de las cabezas de los jugadores que hablan después de mantener la tecla PTT. Esta opción funciona con TFAR y ACRE2. Efekt zvukových vln nad hlavami hráčů když mluví skrz PTT klávesu. Tato volba funguje s TFAR a ACRE2. - Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit TFAR und ACRE2. + Es wird ein Schallwellensymbol über den Köpfen von sprechenden Spielern angezeigt, die ihre Push-to-Talk-Taste drücken. Diese Option funktioniert mit "TFAR" und "ACRE2". Efeito de ondas sonoras acima das cabeças dos jogadores que falam depois mantendo pressionada a tecla PTT. Esta opção funciona com TFAR e ACRE2. Icone au dessus de la tête du joueur qui parle après avoir utilisé la touche de PTT. Option compatible avec ACRE2 et TFAR Hanghullám-effekt a beszélő játékosok feje felett a PTT-gomb lenyomásakor. Ez a beállítás TFAR és ACRE2 alatt működik. @@ -355,7 +355,7 @@ Rozmiar imion Tamaño de las Etiquetas de nombre Velikost jmenovky - Namensschildgröße + Größe der Spielernamen Tamanho das etiquetas de nome Taille des noms Névcímkék mérete diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index ddbccb7777..63042a2755 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -86,6 +86,7 @@ Change Track + Kette wechseln Wymień gąsienicę Trocar esteira Заменить гусеницу @@ -94,6 +95,7 @@ Replacing Track ... + Tausche Kette aus... Wymienianie gąsienicy ... Trocando esteira... Замена гусеницы ... @@ -102,6 +104,7 @@ Track replaced + Kette ausgetauscht Gąsienica została wymieniona Esteira trocada Гусеница заменена @@ -110,6 +113,7 @@ Remove Track + Entferne Kette Zdejmij gąsienicę Remover esteira Снять гусеницу @@ -118,6 +122,7 @@ Removing Track ... + Entferne Kette.... Zdejmowanie gąsienicy ... Removendo esteira... Снятие гусеницы ... @@ -126,6 +131,7 @@ Track removed + Kette enfernt Gąsienica została zdjęta Esteira trocada Гусеница снята @@ -134,6 +140,7 @@ Full Repair + Vollständige Reperatur Pełna naprawa Reparo completo Полный ремонт @@ -142,6 +149,7 @@ Repairing Vehicle ... + Entferne Fahrzeug ... Naprawianie pojazdu ... Reparando veículo... Ремонт транспорта ... @@ -150,6 +158,7 @@ Full Repair Locations + Möglichkeit zur vollständigen Reperatur Lokaliz. pełnej naprawy Localizações de reparo completo Места полного ремонта @@ -158,6 +167,7 @@ At what locations can a vehicle be fully repaired? + Welche Fahrzeugteile können vollständig in Stand gesetzt werden? W jakich miejscach pojazd może zostać w pełni naprawiony? Em quais locais um veículo pode ser reparado por completo? В каких местах транспорт может быть полностью отремеонтирован? @@ -165,6 +175,7 @@ Allow Full Repair + Erlaube vollständige Reperatur Zezwól na pełną naprawę Permitir reparo completo Полный ремонт выполняют @@ -173,6 +184,7 @@ Who can perform a full repair on a vehicle? + Wer ist zur vollständigen Reperatur im Stande? Kto może przeprowadzić pełną naprawę pojazdu? Кто может выполнять полный ремонт? Quem pode reparar o veículo por completo? @@ -180,6 +192,7 @@ Add Spare Parts + Füge Ersatzteile hinzu Dodaj części zam. Adicionar partes sobressalentes Añadir repuestos @@ -187,6 +200,7 @@ Add spare parts to vehicles (requires Cargo component)? + Füge Ersatzteile der Fahrzeugfracht (wenn vorhanden) zu? Czy dodać do pojazdów części zamienne? Wymaga włączonego cargo. Adicionar partes sobressalentes aos veículos (requer o componente de carga)? ¿Añadir repuestos para vehículos (requiere componente de carga)? @@ -206,6 +220,7 @@ Display text on repair + Zeige Text bei Reperatur an Wyświetl tekst przy naprawie Mostrar texto quando reparar Отображать текст при ремонте @@ -214,6 +229,7 @@ Display a notification whenever you repair a vehicle + Zeige eine Nachricht, wannimmer du ein Fahrzeug reparierst. Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. Mostra uma notificação quando você repara um veículo Отображать оповещение каждый раз, когда вы ремонтируете транспорт @@ -233,7 +249,7 @@ Repairing %1 ... - Reparieren %1 ... + Repariere %1 ... Reparando %1 ... Réparation %1 ... Naprawianie %1... @@ -266,7 +282,7 @@ Partially repaired %1 - Bauteil teilweise repariert + Bauteil zum Teil repariert Częściowo naprawiono: %1 %1 parcialmente reparado Частично отремонтировано: %1 @@ -291,7 +307,7 @@ Body - Karosserie + Fahrgestell Carrocería Blindage Karoseria @@ -361,6 +377,7 @@ Transmission + Getriebe Převodovka Skrzynia biegów Трансмиссия @@ -369,6 +386,7 @@ Gear + Gang Podwozie Коробка передач Engrenagem @@ -376,6 +394,7 @@ Starter + Anlasser Zapłon Startér Стартер @@ -384,6 +403,7 @@ Tail + Ogon Ocas Хвост @@ -392,6 +412,7 @@ Pitot Tube + Pitotrohr Rurka Pitota Pilotova Trubice Кокпит @@ -400,6 +421,7 @@ Static Port + Port statyczny Статический иллюминатор Porta Estática @@ -408,6 +430,7 @@ Ammo Munice + Munition Amunicja Боеприпасы Munição @@ -439,6 +462,7 @@ Missiles + Rakete Mísseis Ракеты Rakety @@ -647,6 +671,7 @@ Repair Settings + Reperatureinstellungen Ustawienia naprawy Preferências de reparo Ремонт @@ -654,6 +679,7 @@ Provides a repair system for all types of vehicles. + Stellt ein Reperatursystem für alle Arten von Fahrzeugen zur Verfügung. Dostarcza rozbudowany system naprawy dla wszystkich typów pojazdów. Provém um sistema de reparo para todos os veículos Предоставляет систему ремонта для всех типов транспортных средств. @@ -661,6 +687,7 @@ Anyone + Jeder Ktokolwiek Qualquer um Кто угодно @@ -669,6 +696,7 @@ Engineer only + Pionier Tylko mechanicy Somente engenheiro Только инженеры @@ -677,6 +705,7 @@ Repair Specialist only + Nur Mechatroniker Tylko inżynierowie Somente especialista em reparos Только ремонтные специалисты @@ -685,6 +714,7 @@ Allow Wheel + Erlaube Radwechsel Wymiana kół Permite rodas Разрешить замену колес @@ -693,6 +723,7 @@ Who can remove and replace wheels? + Wer kann Radwechsel durchführern? Kto może zdejmować i zmieniać koła? Quem pode remover e trocar rodas? Кто может снимать и заменять колеса? @@ -701,6 +732,7 @@ Allow Repair + Erlaube Reperatur Możliwość naprawy Permite reparo Разрешить ремонт @@ -709,6 +741,7 @@ Who can perform repair actions? + Wer kann eine Reperatur durchführen? Kto może wykonywać czynności związane z naprawą pojazdów? Quem pode executar ações de reparo? Кто может выполнять ремонт? @@ -717,6 +750,7 @@ Repair Threshold + Repariere Schweller Próg naprawy Limite de reparo Лимит ремкомплекта @@ -724,6 +758,7 @@ What is the maximum damage that can be repaired with a toolkit? + Wie hoch ist der Schaden, der von einem Reperatursatz behoben werden kann? Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przy pomocy narzędzi? Qual é o dano máximo que pode ser reparado com um kit de ferramentas? Какой максимальный урон можно починить с помощью ремкомплекта? @@ -731,6 +766,7 @@ Repair Threshold (Engineer) + Repariere Schweller (Pionier) Próg naprawy (mechanik) Limite de reparo (Engenheiro) Лимит инженера @@ -738,6 +774,7 @@ What is the maximum damage that can be repaired by an engineer? + Wie hoch ist der Schaden, der von einem Pionier behoben werden kann? Jaki jest maksymalny poziom uszkodzeń jaki może zostać naprawiony przez mechanika? Qual é o dano máximo que pode ser reparado com um engenheiro? Какой максимальный урон может починить инженер? @@ -745,6 +782,7 @@ Remove toolkit on use + Entferne Reperatursatz bei Verwendung Usuń narzędzia po użyciu Remover kit de ferramentas Удалять ремкомплект после использования @@ -752,6 +790,7 @@ Should the toolkit be removed on usage? + Soll der Reperatursatz bei Verwendung entfernt werden? Czy zestaw naprawczy powinien zostać usunięty po jego użyciu? O kit de ferramentas deve ser removido após uso? Следует ли удалять ремкомплект после использования? @@ -759,6 +798,7 @@ Anywhere + Irgentwo Wszędzie Qualquer lugar Где угодно @@ -767,6 +807,7 @@ Repair Vehicle only + Repariere nur Fahrzeug Przy pojazdach naprawczych Somente veículos de reparo Только у ремонтного транспорта @@ -774,6 +815,7 @@ Repair Facility only + Repariere nur Einrichtung Przy budynkach naprawczych Somente instalação de reparo Только у ремонтных сооружений @@ -781,6 +823,7 @@ Repair Facility or Vehicle + Repariere Einrichtung oder Fahrzeug Przy budynkach i pojazdach naprawczych Instalação e veículo de reparo Только у ремонтного транспорта или ремонтных сооружений @@ -788,6 +831,7 @@ Assign Engineer + Weise Pionier zu Przydziel inżyniera Definir engenheiro Назначить инженером @@ -796,6 +840,7 @@ List + Liste Lista Lista Список @@ -804,6 +849,7 @@ List of unit names that will be classified as engineer, separated by commas. + Eine Aufzählung von Einheiten, die als Pionier gelten, getrennt durch Kommata. Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. Lista de nomes de unidades que serão classificadas como engenheiros, separadas por vírgulas. Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. @@ -811,6 +857,7 @@ Is Engineer + Ist Pionier Poziom wyszkolenia É engenheiro Это инженер @@ -818,6 +865,7 @@ Select the engineering skill level of the unit + Wählt die Eignungsstufe zur Ausübung des Pioniers für diese Einheit Wybierz biegłość w dziedzinie naprawy danej jednostki Selecione o nível de habilidade da unidade em engenhraria Укажите уровень инженерного мастерства для юнита @@ -825,6 +873,7 @@ None + Keine Żadny Nenhum Нет @@ -833,6 +882,7 @@ Engineer + Pionier Mechanik Engenheiro Инженер @@ -841,6 +891,7 @@ Specialist + Mechatroniker Inżynier Especialista Специалист @@ -849,6 +900,7 @@ Assign one or multiple units as an engineer + Weist einen oder mehrere Einheiten der Pionierklasse zu. Przydziel klasę inżyniera do jednej lub kilku jednostek Defina um ou mais unidades como engenheiro Назначить одного или нескольких юнитов инженерами @@ -856,6 +908,7 @@ Assign Repair Vehicle + Weise Reperaturfahrzeug zu Przydziel pojazd naprawczy Defina veículo de reparo Назначить ремонтный транспорт @@ -863,6 +916,7 @@ List + Liste Lista Lista Список @@ -871,6 +925,7 @@ List of vehicles that will be classified as repair vehicle, separated by commas. + Eine Aufzählung von Fahrzeugen, die als Reperaturfahrzeug gelten, getrennt durch Kommata Lista nazw pojazdów, które są sklasyfikowane jako pojazdy naprawcze, oddzielone przecinkami. Lista de veículos que serão classificadas como veículo de reparo. Separado por vígulas. Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. @@ -878,6 +933,7 @@ Is Repair Vehicle + Ist Reparaturfahrzeug Jest poj. naprawczym É veículo de reparo Это ремонтный транспорт @@ -885,6 +941,7 @@ Is the vehicle classified as a repair vehicle? + Gilt dieses Fahrzeug als Reperaturfahrzeug? Czy pojazd jest zklasyfikowany jako pojazd naprawczy? O veículo é classificado como reparo? Классифицируется ли этот транспорт как ремонтный? @@ -892,6 +949,7 @@ Assign one or multiple vehicles as a repair vehicle + Weist ein oder mehr Fahrzeuge als Reperaturfahrzeug zu Przydziel klasę pojazdu naprawczego do jednego lub kilku pojazdów. Definir um ou mais veículos como reparo Назначить одно или несколько транспортных средств ремонтными @@ -899,6 +957,7 @@ Assign Repair Facility + Weise Reperatureinrichtung zu Przydziel budynek naprawczy Definir instalação de reparo Назначить ремонтное сооружение @@ -906,6 +965,7 @@ List + Liste Lista Lista Список @@ -914,6 +974,7 @@ List of objects that will be classified as repair Facility, separated by commas. + Eine Aufzählung von Objekten, die als Reperatureinrichtung gelten, getrennt durch Kommata Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. Lista de objetos que serão classificados como instalações de reparo. separado por vírgulas. Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. @@ -921,6 +982,7 @@ Is Repair Facility + Ist Reperatureinrichtung Jest bud. naprawczym É uma instalação de reparo Это ремонтное сооружение @@ -928,6 +990,7 @@ Is the object classified as a repair Facility? + Ist das Objekt als Reperatureinrichtung zugewiesen? Czy budynek jest zklasyfikowany jako budynek naprawczy? O objeto é classificado como instalação de reparo? Классифицируется ли этот объект как ремонтное сооружение? @@ -935,6 +998,7 @@ Assign one or multiple objects as a repair Facility + Weist eines oder mehrere Objekte als Reperatureinrichtung zu Przydziel klasę budynku naprawczego do jednego lub kilku budynków. Назначить один или несколько объектов ремонтными сооружениями Definir um ou mais objetos como instalação de reparos @@ -942,6 +1006,7 @@ Add Spare Parts + Füge Ersatzteile hinzu Dodaj części zam. Adicionar partes sobressalentes Añadir repuestos @@ -949,6 +1014,7 @@ Add spare parts to one or multiple objects + Füge Ersatzteile zu einem odere mehreren Objekten hinzu Dodaj części zamienne do jednego lub wielu obiektów. Adicionar partes sobressalentes para um ou mais objetos Añadir repuestos a uno o varios objetos @@ -956,6 +1022,7 @@ List + Liste Lista Lista Lista @@ -963,6 +1030,7 @@ List of objects that will get spare parts added, separated by commas. + Eine Aufzählung von Objekten, welche Ersatzteile beherbergen, getrennt durch Kommata Lista obiektów, które otrzymają części zamienne, oddzielone przecinkiem. Lista de objetos que ganharão partes sobressalentes, dividos por vírgulas. Lista de los objetos que tendrán repuestos añadidos, separados por comas. @@ -970,6 +1038,7 @@ Part + Teil Część Parte Pieza @@ -977,6 +1046,7 @@ Spare part. + Ersatzteile Część zamienna. Parte sobressalente Pieza de recambio. @@ -984,6 +1054,7 @@ Amount + Menge Ilość Quantidade Cantidad @@ -991,6 +1062,7 @@ Number of selected spare parts. + Anzahl der ausgewählten Ersatzteile Ilość wybranych części zamiennych. Número de partes sobressalentes. Número de piezas de repuesto seleccionados. @@ -998,6 +1070,7 @@ Wheel repair requirements + Erfordernisse zur Reifenreperatur Wym. naprawy kół Requisitos de reparación de ruedas Для ремонта колес требуется @@ -1005,6 +1078,7 @@ Items required to remove/replace wheels + Gegenstänge, die zum Entfernen/Austauschen eines Reifens benötigt werden Przedmioty potrzebne do wymiany kół Elementos necesarios para quitar/cambiar ruedas Предметы, которые требуются для снятия/замены колес diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index e44150ff10..5000d8f42a 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -149,7 +149,7 @@ Respawn System System odrodzenia Sistema de reaparición - Respawn-System + Wiedereinstiegs-System Systém znovuzrození Sistema de Renascimento Système de Respawn @@ -171,7 +171,7 @@ Respawn with the gear a soldier had just before his death? Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią? Reaparece con el equipo que el soldado tenía justo antes de morir - Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen? + Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, wiedereinsteigen? Znovuubjevit s výbavou kterou měl voják před smrtí? Renascer com o equipamento que um soldado tinha antes de sua morte? Conserve l'équipement au Respawn @@ -182,7 +182,7 @@ Remove bodies? Usuwać ciała? ¿Eliminar cuerpos? - Körper entfernen? + Sollen Leichen automatisch verschwinden? Odstranit těla? Remover corpos? Enlever les coprs? @@ -203,7 +203,7 @@ This module enables you to configure ACE functionality specific to respawns. Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu). - Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen. + Dieses Modul erlaubt es, die Wiedereinstiegs-Einstellungen anzupassen. Tento modul umožňuje nastavení znovuzrození (spawn). Este módulo permite que você personalize as configurações do renascimento (Spawn). Этот модуль позволяет настроить систему возрождения. @@ -213,7 +213,7 @@ Friendly Fire Messages Wiadomości Friendly Fire Mensajes de fuego amigo - Freundbeschuss-Nachrichten + Nachricht bei Freundbeschuss Upozornění na přátelskou střelbu Mensagens de fogo amigo Message de tirs fraticides @@ -222,6 +222,7 @@ Using this module in your mission will make it so any friendly fire kills will be displayed in form of a message in chat. + Dieses Modul zeigt jeden Gefallenen durch Eigenbeschuss, in Form einer Textnachricht, im Chat an. Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. @@ -232,7 +233,7 @@ Rallypoint System System punktu zbiórki Sistema de punto de reunión - Rallypoint-System + Sammelpunktssystem Systém shromáždění Sistema de ponto de encontro Système de point de ralliement @@ -241,6 +242,7 @@ This module allows you to use rally points in missions, to which you can quickly teleport from base flag. Requires placing special objects on map - base and flag. Both available in category Empty -> ACE Respawn. + Dieses Modul erlaubt die Verwendung eines Sammelpunktes, über welchen man sich schnell von der Basis zur Fahne teleportieren kann. Benötigt das Aufstellen von speziellen Objekten: Basis und Flagge. Beides ist unter "Leer" - > ACE Wiedereinstieg zu finden Moduł ten pozwala zastosować na misji "punkt zbiórki", do którego można szybko przeteleportować się z "bazy". Wymaga postawienia odpowiednich obiektów na mapie - bazy oraz flagi. Obydwa dostępne są w kategorii Puste -> ACE Odrodzenie. Tento modul umožňuje určit místo shromaždiště, kam se mohou jednokty rychle teleportovat ze "základny". Toto vyžaduje vhodné objekty v mapě - základna a vlajka. Oba dva můžete najít v kategorii Prázdné -> ACE Oživení. Este módulo permite que você aplique em uma missão "pontos de encontro", que pode rapidamente se teletransportar para a "base". Ele requer colocar objetos apropriados no mapa - base e bandeiras. Ambos estão disponíveis na categoria em branco -> ACE Revival. @@ -250,7 +252,7 @@ Move Rallypoint Przenieś punkt zbiórki Mover punto de reunión - Bewege Rallypoint + Bewege Sammelpunkt Přesun na shromaždiště Mover para ponto de encontro Bouger le point de ralliement @@ -261,7 +263,7 @@ ACE Respawn ACE Odrodzenie Reaparición ACE - ACE-Respawn + ACE-Wiedereinstieg ACE Znovuzrození ACE Respawn ACE Respawn diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index b8716f49e5..270358181d 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -3,6 +3,7 @@ Sit Down + Hinsetzen Usiądź Sentar Sednout si @@ -13,6 +14,7 @@ Stand Up + Aufstehen Wstań Levantar Vstát @@ -23,6 +25,7 @@ Enable Sitting + Sitzen ermöglichen Habilitar opção para sentar Aktywuj siadanie Povolit sezení @@ -33,6 +36,7 @@ Sitting + Hinsetzen Sentado Siadanie Sezení @@ -43,6 +47,7 @@ This module allows you to disable the ability to sit on chairs and toilets. + Dieses Modul eröffnet die Möglichkeit sich auf Stühlen oder Toiletten hinzusetzen. Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 2cf707f024..00a6852966 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -3,6 +3,7 @@ Slideshow + Diavorführung Diaporama Pokaz slajdów Vetítés @@ -13,6 +14,7 @@ This module allows you to set up slide-shows on different objects. One module per image list. Only objects with hiddenSelection 0 are supported. + Dieses Modul erlaubt eine Diavorführung auf unterschiedlichen Objekten. Ein Modul, eine Bilderliste. Nur Objekte mit "hiddenSelection 0" werden unterstützt. Ce module permet d'afficher des diaporamas sur différents objets. Un module par liste d'image. Seul les objets avec le paramètre "HiddenSelection 0" sont supportés Ten moduł pozwala skonfigurować pokaz slajdów na różnych obiektach. Jeden moduł na jedną liste slajdów. Tylko obiekty z hiddenSelection 0 są wspierane. Ez a modul lehetővé teszi a különböző objektumokon való vetítést. Egy modul/képlista. Csak "hiddenSelection 0"-t tartalmazó objektumok felelnek meg. @@ -22,6 +24,7 @@ Objects + Objekte Objets Obiekty Objektumok @@ -32,6 +35,7 @@ Object names (can also be synchronized objects) slide-show will be displayed on, separated by commas if multiple. Reference INFO for object support. + Objektnamen (können auch synchronisierte Objekte sein) auf denen die Diavorführung abgepielt wird. Werden ggf. durch Kommata getrennt. Weiteres in der INFO für unterstützte Objekte. Nom d'objets (peuvent aussi être des objets synchronisés) sur lesquels les diaporamas vont être affichées, séparation par virgule si plusieurs. Nazwy obiektów (mogą to też być zsynchronizowane obiekty) na których pokaz slajdów zostanie pokazany, oddzielony przecinkiem jeżeli jest ich więcej niż 1. Sprawdź opis modułu aby dowiedzieć się jakie obiekty są wspierane przez moduł. Objektum nevek (szinkronizált is lehet) amik a vetítésen megjelennek, több darab esetén vesszővel elválasztva. Objektumtámogatásért az INFO-t tekintsd meg. @@ -41,6 +45,7 @@ Controllers + Steuereinheit Controleurs Kontroler Vezérlők @@ -50,6 +55,7 @@ Controller object names, separated by commas if multiple. + Objekte die als Steuereinheit fungieren. Werden ggf. durch Kommata getrennt. Noms de controleur d'objets, séparation par virgule si plusieurs Nazwa obiektu - kontrolera, oddzielona przecinkami jeżeli jest ich więcej niż 1. Vezérlő objektum nevek, vesszővel elválasztva több darab esetén. @@ -59,6 +65,7 @@ Images + Bilder Images Obrazy Képek @@ -69,6 +76,7 @@ List of images that will be used for the slide-show, separated by commas, with full path correctly formatted (eg. images\image.paa). + Eine Liste von Bildern, die bei der Vorführung verwendet werden. (Durch Kommata getrennt, mit vollem Pfad angegeben (z.B Bilder\bild.paa)). Liste d'images qui seront utilisées dans des diaporama, séparation par virgule, avec le chemin d'accès complet et formaté correctement (ie. images\image.paa) Lista obrazów, które zostaną użyte do pokazu slajdów, oddzielone przecinkiem, z poprawnym pełnym formatem ścieżki do obrazka (np. slajdy\obrazek.paa). A képek listája amit a vetítés használni fog, vesszővel elválasztva, megfelelően formázott teljes útvonallal (pl. képek\kép.paa) diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index da8e2ac3d2..ddf1285a19 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -127,7 +127,7 @@ Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min. Revelar minas a aliados y establecer marcadores de mapa. Odhalí miny pro spojence a umístnit jejich značku na mapu. - Enthülle Minen gegenüber Verbündeten und platziere Kartenmarkierungen. + Melde Minen gegenüber Verbündeten und platziere entsprechende Kartenmarkierungen. Revelar minas para aliados e colocar marcadores no mapa. Révéler les mines et placer un marqueur sur la carte Feltárja az aknákat a szövetségeseknek, és jelölőket helyez el a térképen. @@ -190,6 +190,7 @@ Assign Medic + Sanitäter zuweisen. Przydziel medyka Definir médico Назначить медиком @@ -198,6 +199,7 @@ Assign Medical Vehicle + Sanitätesfahrzeug zuweisen. Przydziel pojazd medyczny Definir veículo médico Назначить медицинским транспортом @@ -206,6 +208,7 @@ Assign Medical Facility + Medizinische Einrichtung zuweisen. Przydziel budynek medyczny Definir instalação médica Назанчить медицинским сооружением @@ -239,7 +242,7 @@ Unit must be alive Utiliser uniquement sur une unité vivante - Nur bei lebenden Einheiten verwendbar + Einheit muss lebendig sein. Utilizar solo en unidades vivas Použitelné jen na živé jednotky Używaj tylko na żywych jednostkach @@ -262,6 +265,7 @@ Unit must be a structure + Das Ziel muss ein Bauwerk sein. Jednostka musi być budynkiem Unidade deve ser uma estrutura Юнит должен быть строением @@ -269,6 +273,7 @@ Unit must be a vehicle + Das Ziel muss ein Fahrzeug sein. Jednostka musi być pojazdem Unidade deve ser um veículo Юнит должен быть транспортом From cf41ac5fba64b3ae18617d9228e83a4451717ee3 Mon Sep 17 00:00:00 2001 From: ProfessorCZ Date: Tue, 10 Nov 2015 19:10:36 +0100 Subject: [PATCH 009/107] Czech Translations - Update --- addons/captives/stringtable.xml | 6 ++ addons/cargo/stringtable.xml | 7 +- addons/common/stringtable.xml | 6 +- addons/dagr/stringtable.xml | 4 + addons/dragging/stringtable.xml | 1 + addons/finger/stringtable.xml | 6 +- addons/grenades/stringtable.xml | 20 ++--- addons/hearing/stringtable.xml | 2 + addons/huntir/stringtable.xml | 6 +- addons/map_gestures/stringtable.xml | 4 + addons/medical/stringtable.xml | 8 +- addons/medical_menu/stringtable.xml | 34 ++++++++- addons/optionsmenu/stringtable.xml | 1 + addons/realisticnames/stringtable.xml | 102 +++++++++++++------------- addons/repair/stringtable.xml | 78 ++++++++++++++++---- addons/slideshow/stringtable.xml | 4 +- addons/spectator/stringtable.xml | 42 ++++++----- addons/tacticalladder/stringtable.xml | 1 + addons/weaponselect/stringtable.xml | 14 ++-- addons/zeus/stringtable.xml | 10 +++ 20 files changed, 244 insertions(+), 112 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index 2d202ed852..17b44bc8fe 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -184,12 +184,14 @@ Skuj jednostkę Fazer unidade algemada Связать юнита + Spoutat jednotku Sync a unit to make them handcuffed.<br />Source: ace_captives Zsynchronizuj z jednostką, aby została skuta.<br />Źródło: ace_captives Sincronizar uma unidade para deixá-la algemada.<br/>Source: ace_captives Синхронизируйте с юнитами, чтобы сделать их связанными.<br />Источник: ace_captives + Synchronizovat s jednotkou, která má být v poutech.<br />Zdroj: ace_captives Captives Settings @@ -264,6 +266,7 @@ Requer rendição Требовать пленения Requiere rendición + Vzdávání vyžadováno Require Players to surrender before they can be arrested @@ -272,6 +275,7 @@ Requer que jogadores se rendam antes de poderem ser presos Требуется, чтобы игрок сдался в плен прежде, чем его можно будет связать Requiere que los Jugadores se rindan antes de arrestarlos + Vyžaduje, aby se hráč nejdříve vzdal, poté může být spoután Surrendering only @@ -280,6 +284,7 @@ Somente rendição Только сдавшийся в плен Solo rendición + Pouze vzdávání Surrendering or No weapon @@ -288,6 +293,7 @@ Rendição ou desarmado Сдавшийся или безоружный Rendición o desarme + Vzdávání nebo beze zbraně diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 2e3ffd648b..4119a2e562 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -70,6 +70,7 @@ Configura as preferências do módulo de carga Конфигурирует настройки модуля перевозки грузов Configure los ajustes del módulo de carga + Konfigurace nákladního modulu %1<br/>loaded into<br/>%2 @@ -89,7 +90,7 @@ Descargado/a<br/>%1 de<br/>%2 Déchargé<br/>%1 de<br/>%2 %1<br/>rozładowano z<br/>%2 - Nezatížený<br/>%1 do<br/>%2 + %1<br/>vyloženo z<br/>%2 %1<br/>descarregado de<br/>%2 Hai scaricato<br/>%1 da<br/>%2 1%<br/>kirakodva ebből:<br/>%2 @@ -99,21 +100,25 @@ Loading Cargo Carregando carga Ładowanie cargo + Nakládám Unloading Cargo Descarregando carga Rozładowywanie cargo + Vykládám %1<br/>could not be loaded %1<br/>não pode ser carregado %1<br/>nie mógł zostać załadowany + %1<br/>nemůže být naloženo %1<br/>could not be unloaded %1<br/>não pode ser descarregado %1<br/>nie mógł zostać rozładowany + %1<br/>nemůže být vyloženo \ No newline at end of file diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 8973d1d3e6..a8c1869784 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -42,7 +42,7 @@ ACE-Optionen Opciones ACE Ustawienia ACE - Nastavení ACE + ACE Nastavení Options ACE ACE Настройки Opções do ACE @@ -722,6 +722,7 @@ Comum ACE3 ACE3 Общие ACE3 Común + ACE3 Obecné ACE3 Weapons @@ -737,6 +738,7 @@ Movimento ACE3 ACE3 Перемещение ACE3 Movimiento + ACE3 Pohyb ACE3 Scope Adjustment @@ -755,4 +757,4 @@ ACE3 Vehículos - + \ No newline at end of file diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index a164ac51f3..dea42275f2 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -7,6 +7,7 @@ DAGR DAGR DAGR + DAGR Configure DAGR @@ -14,6 +15,7 @@ Configurar DAGR Настроить DAGR Configurar DAGR + Konfigurovat DAGR Toggle DAGR @@ -21,6 +23,7 @@ Mostrar DAGR Вкл./выкл. DAGR Mostrar DAGR + Přepnout DAGR Defense Advanced GPS Receiver @@ -28,6 +31,7 @@ Defense Advanced GPS Receiver Военный многофункциональный GPS-приёмник Defense Advanced GPS Receiver + Defense Advanced GPS Receiver \ No newline at end of file diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index be80801e57..0e105f60ce 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -55,6 +55,7 @@ Wyżej/Niżej Levantar/Abaixar Поднять/Опустить + Zvýšit/Snížit \ No newline at end of file diff --git a/addons/finger/stringtable.xml b/addons/finger/stringtable.xml index 88030cc7d9..1a11bf246a 100644 --- a/addons/finger/stringtable.xml +++ b/addons/finger/stringtable.xml @@ -63,6 +63,7 @@ Preferências de apontamento Настройки указания пальцем Ajustes de señalado + Nastavení ukázování směru Pointing Enabled @@ -72,6 +73,7 @@ Apontamento ativado Указание пальцем включено Señalado habilitado + Ukazování povoleno Pointing Max Range @@ -81,6 +83,7 @@ Distância máxima do apontamento Макс. дальность Distancia máxima de señalado + Maximální dosah pro ukazování směru Max range between players to show the pointing indicator [default: 4 meters] @@ -90,6 +93,7 @@ Distância máxima entre jogadores para mostrar o apontamento [padrão: 4 metros] Максимальная дальность между игроками для отображения индикатора указания пальцем [по-умолчанию: 4 метра] Distancia máxima entre los jugadores para mostrar el indicador que señala [por defecto: 4 metros] + Maximální vzdálenost mezi hráči pro ukázání směru [výchozí: 4 metry] - + \ No newline at end of file diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml index 31282500e8..44d9e7ad47 100644 --- a/addons/grenades/stringtable.xml +++ b/addons/grenades/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -100,7 +100,7 @@ M127A1 Hand Held Signal (White) M127A1 Leuchtmittel (Weiß) - Světlice M127A1 (Bílá) + Ruční signální světlice M127A1 (Bílá) M127A1 Kézi Jelzőrakéta (Fehér) M127A1 Bengala (Bianco) Flara ręczna sygnałowa M127A1 (biała) @@ -112,7 +112,7 @@ M127A1 Hand Held Signal (Red) M127A1 Leuchtmittel (Rot) - Světlice M127A1 (Červená) + Ruční signální světlice M127A1 (Červená) M127A1 Kézi Jelzőrakéta (Piros) M127A1 Bengala (Rosso) Flara ręczna sygnałowa M127A1 (czerwona) @@ -124,7 +124,7 @@ M127A1 Hand Held Signal (Green) M127A1 Leuchtmittel (Grün) - Světlice M127A1 (Zelená) + Ruční signální světlice M127A1 (Zelená) M127A1 Kézi Jelzőrakéta (Zöld) M127A1 Bengala (Verde) Flara ręczna sygnałowa M127A1 (zielona) @@ -136,7 +136,7 @@ M127A1 Hand Held Signal (Yellow) M127A1 Leuchtmittel (Gelb) - Světlice M127A1 (Žlutá) + Ruční signální světlice M127A1 (Žlutá) M127A1 Kézi Jelzőrakéta (Sárga) M127A1 Bengala (Giallo) Flara ręczna sygnałowa M127A1 (żółta) @@ -148,7 +148,7 @@ White Hand Flare Weiße Leuchtkugel, wird wie eine Granate geworfen. - Světlice (Bílá) + Ruční světlice (Bílá) Kézi jelzőrakéta, Fehér színű Bengala (Bianco) Flara ręczna (biała) @@ -160,7 +160,7 @@ Red Hand Flare Rote Leuchtkugel, wird wie eine Granate geworfen. - Světlice (Červená) + Ruční světlice (Červená) Kézi jelzőrakéta, Piros színű Bengala (Rosso) Flara ręczna (czerwona) @@ -172,7 +172,7 @@ Green Hand Flare Grüne Leuchtkugel, wird wie eine Granate geworfen. - Světlice (Zelená) + Ruční světlice (Zelená) Kézi jelzőrakéta, Zöld színű Bengala (Verde) Flara ręczna (zielona) @@ -184,7 +184,7 @@ Yellow Hand Flare Gelbe Leuchtkugel, wird wie eine Granate geworfen. - Světlice (Žlutá) + Ruční světlice (Žlutá) Kézi jelzőrakéta, Sárga színű Bengala (Giallo) Flara ręczna (żółta) @@ -242,4 +242,4 @@ M127A1 (Amarilla) - + \ No newline at end of file diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 783326152c..03888c3d6e 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -157,6 +157,7 @@ Влияет на юнита Зевса Afeta Zeus CR Efecto Zeus RC + Ovlivnit Zeus RC Allow zeus remote controlled units to be able to take hearing damage. @@ -164,6 +165,7 @@ Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. Permitir a las unidades por control remoto de zeus que puedan tener daños auditivos. + Aktivovat efekt ztráty sluchu pro vzdáleně ovládané jednotky. Add earplugs to units diff --git a/addons/huntir/stringtable.xml b/addons/huntir/stringtable.xml index 3af7f8157b..5cb9729dd7 100644 --- a/addons/huntir/stringtable.xml +++ b/addons/huntir/stringtable.xml @@ -1,11 +1,11 @@ - + HuntIR Transport Box HuntIR Transportkiste Caja de transporte de HuntIR - Trasnportní bedna HuntIR + Transportní bedna HuntIR Ящик с HuntIR HuntIR Transport Box Skrzynia HuntIR @@ -194,4 +194,4 @@ Esc - Sai do Ajuda - + \ No newline at end of file diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 2b17fd863e..b53508e538 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -12,6 +12,7 @@ Ativado Aktywne Включено + Povoleno Map Gesture Max Range @@ -66,6 +67,7 @@ Cor Kolor Цвет + Barva Color value for group members of groups synced with this module. @@ -84,12 +86,14 @@ Intervalo de atualizações Interwał aktualizacji Интервал обновления + Interval aktualizace Time between data updates. Tempo entre atualização de dados Odstęp pomiędzy aktualizacjami danych Время между обновлениями данных. + Čas mezi aktualizacemi dat. Group color configurations diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 5c3d03a85d..6c214cf466 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2106,12 +2106,13 @@ %1 провел сердечно-легочную реанимацию %1 realicó RCP %1 realizou RCP + %1 provádí CPR %1 used Personal Aid Kit %1 użył apteczki %1 utilizou KPS - %1 использовал аптечку + %1 používá PAK Heavily wounded @@ -2964,7 +2965,7 @@ Allow AI to go unconscious - Позволить ботам терять сознание (вместо мгновенной смерти) + Позволить ботам терять сознание Czy AI może być nieprzytomne od odniesionych obrażeń? Permita a la IA caer inconsciente KI kann bewusstlos werden @@ -3844,6 +3845,7 @@ Расстояние до %1 стало слишком большим для лечения A distância de %1 está muito longe para tratamento La distancia hasta %1 se ha agrandado demasiado para el tratamiento + %1 je příliš daleko, léčba není možná This person (%1) is awake and cannot be loaded @@ -3851,6 +3853,7 @@ Esta persona (%1) está despierto y no puede ser cargado Боец (%1) в сознании и не может быть погружен Esta pessoa (%1) está acordada e não pode ser carregada + Tato osoba (%1) je vzhůru a nemůže být naložena There is no tourniquet on this body part! @@ -3858,6 +3861,7 @@ No hay torniquete en esta parte del cuerpo! Нет жгута на этой части тела! Não existe nenhum torniquete nesta parte do corpo! + Žádné škrtidlo na této části těla! \ No newline at end of file diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 9e3bbc4c2b..1cdca61d2a 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -7,6 +7,7 @@ Menu médico Медицинское меню Menú médico + Zdravotnikcá nabídka Allow Medical Menu @@ -14,6 +15,7 @@ Permitir menu médico Разрешить мед. меню Permitir menú médico + Povolit zdravotnickou nabídku Allow clients to use the medical menu @@ -21,6 +23,7 @@ Permite que clientes utilizem o menu médico Разрешает клиентам использовать медицинское меню Permitir a los clientes utilizar el menú médico + Povolit klientům používat zdravotnickou nabídku Use Medical menu @@ -28,6 +31,7 @@ Usar o menu médico Использовать медицинское меню Utiliza el menú médico + Použít zdravotnickou nabídku If allowed by server, enable the option to use the Medical Menu through keybinding and interaction menu @@ -42,6 +46,7 @@ Reabrir menu médico Переоткрывать мед. меню Reabrir menú médico + Znovu otevřít zdravotnickou nabídku Re-open the medical menu after succesful treatment @@ -49,6 +54,7 @@ Reabre o menu médico depois de um tratamento bem sucedido Переоткрывать медицинское меню после удачного лечения Reabre el menú médico despues de un tratamiento con éxito + Znovu otevřít zdravotnickou nabídku po úspěšné léčbě Open Medical Menu @@ -56,6 +62,7 @@ Abrir menu médico Открыть медицинское меню Abrir menú médico + Otevřít zdravotnickou nabídku Medical Menu Settings @@ -63,6 +70,7 @@ Preferências do menu médico Настройки медицинского меню Ajustes del mení médico + Nastavení zdravotnické nabídky Configure the usage of the Medical Menu @@ -70,6 +78,7 @@ Configura o uso do menu médico Настройки использования медицинского меню Configurar el uso del menú médico + Konfigurace využití zdravotnické nabídky EXAMINE & TREATMENT @@ -123,6 +132,7 @@ Voir Carte de Triage Pokaż kartę segregacyjną Ver cartão de triagem + Zkontrolovat štítek Examine Patient @@ -131,6 +141,7 @@ Examiner Patient Zbadaj pacjenta Examinar paciente + Zkontrolovat pacienta Bandage / Fractures @@ -139,6 +150,7 @@ Bandages / Fractures Bandaże / Złamania Bandagens / Fraturas + Bandáž / Zlomeniny Medication @@ -147,6 +159,7 @@ Médications Leki Medicação + Léky Airway Management @@ -155,6 +168,7 @@ Gestion Des Voie REspiratoire Drogi oddechowe Vias aéreas + Dýchací systém Advanced Treatments @@ -163,6 +177,7 @@ Traitement Avancé Zaawansowane zabiegi Tratamentos avançados + Pokročilé ošetření Drag/Carry @@ -180,6 +195,7 @@ Przełącz (na siebie) Alternar Alternar (Si mesmo) + Přepnout (na sebe) Select triage status @@ -188,6 +204,7 @@ Selectioner l'état de Triage Wybierz priorytet Selecionar estado de triagem + Vybrat prioritu Select Head @@ -304,6 +321,7 @@ Partie du corps: %1 Część ciała: %1 Parte do corpo: %1 + Část těla: %1 Small @@ -312,6 +330,7 @@ Petite małym Pequeno + Malý Medium @@ -320,6 +339,7 @@ moyenne średnim Médio + Střední Large @@ -328,6 +348,7 @@ Grande dużym Grande + Velký There are %2 %1 Open Wounds @@ -336,6 +357,7 @@ Il y a %2 %1 Blessure Ouverte Widzisz otwarte rany w ilości %2 o %1 rozmiarze Existem %2 ferimentos abertos %1 + Jsou zde %2 %1 otevřené rány There is 1 %1 Open Wound @@ -344,6 +366,7 @@ Il y a 1 blessure ouverte %1 Widzisz 1 otwartą ranę o %1 rozmiarze Existe 1 %1 ferimento aberto + Je zde 1 %1 otevřená rána There is a partial %1 Open wound @@ -352,6 +375,7 @@ Il y a une Blessure Patiellement Ouverte %1 Widzisz częściowo otwartą ranę o %1 rozmiarze Existe um ferimento parcial aberto %1 + Je zde částečně %1 otevřená rána There are %2 %1 Bandaged Wounds @@ -360,6 +384,7 @@ Il y a %2 %1 Blessure Bandée Widzisz %2 zabandażowanych ran o %1 rozmiarze Existem %2 ferimentos %1 tratados + Jsou zde %2 %1 ovázané rány There is 1 %1 Bandaged Wound @@ -368,6 +393,7 @@ Il y a 1 %1 Blessure Bandée Widzisz 1 zabandażowaną ranę o %1 rozmiarze Existe 1 ferimento %1 tratado + Je zde 1 %1 ovázaná rána There is a partial %1 Bandaged wound @@ -376,6 +402,7 @@ Il y a %1 Blessure Partielment Bandée Widzisz 1 częściowo zabandażowaną ranę o %1 rozmiarze Existe um ferimento parcial tratado %1 + Je zde částěčně %1 ovázaná rána Normal breathing @@ -384,6 +411,7 @@ Respiration Normale Normalny oddech Respiração normal + Normální dýchání No breathing @@ -428,7 +456,7 @@ A De La Douleur W bólu Com dor - v Bolestech + v bolestech Lost a lot of Blood @@ -446,6 +474,7 @@ Garot [CAT] Opaska uciskowa [CAT] Torniquete [CAT] + Škrtidlo [CAT] Nasopharyngeal Tube [NPA] @@ -454,6 +483,7 @@ Canule Naseaupharyngée [NPA] Rurka nosowo-gardłowa [NPA] Tubo nasofaríngeo [NPA] + Nasofaryngeální trubice [NPA] - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index cd4cc429b0..129f995cd7 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -398,6 +398,7 @@ Affiche les nouveautés sur l'écran principal Hírek mutatása a főmenüben Показывать новости в Главном Меню + Zobrazit zprávy v hlavním menu All Categories diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml index fbf1e37226..4865186563 100644 --- a/addons/realisticnames/stringtable.xml +++ b/addons/realisticnames/stringtable.xml @@ -138,7 +138,7 @@ M-ATV (SMG) M-ATV (HMG) M-ATV (CKM) - M-ATV (TK) + M-ATV (HMG) M-ATV (HMG) M-ATV (Пулемёт) M-ATV (HMG) @@ -150,7 +150,7 @@ M-ATV (GMW) M-ATV (GMG) M-ATV (GMG) - M-ATV (Granátomet) + M-ATV (GMG) M-ATV (GMG) M-ATV (Гранатомёт) M-ATV (GMG) @@ -258,7 +258,7 @@ HEMTT Transport HEMTT de transporte HEMTT Transportowy - HEMTT Valník + HEMTT (valník) HEMTT Transport HEMTT Транспортный HEMTT Transporte @@ -270,7 +270,7 @@ HEMTT Transport (bedeckt) HEMTT de transporte (cubierto) HEMTT Transportowy (zakryty) - HEMTT Valník (krytý) + HEMTT (valník-krytý) HEMTT Transport (bâché) HEMTT Транспортный (крытый) HEMTT Transporte (coberto) @@ -294,7 +294,7 @@ HEMTT Container HEMTT con contenedor HEMTT Kontener - HEMTT Skříňový + HEMTT (skříňový) HEMTT Conteneur HEMTT Контейнер HEMTT Contêiner @@ -306,7 +306,7 @@ HEMTT Sanitäter HEMTT médico HEMTT Medyczny - HEMTT Zdravotnický + HEMTT (zdravotnický) HEMTT Médical HEMTT Медицинский HEMTT Médico @@ -318,7 +318,7 @@ HEMTT Munition HEMTT de munición HEMTT Amunicyjny - HEMTT Muniční + HEMTT (muniční) HEMTT Munitions HEMTT Боеприпасы HEMTT Munições @@ -330,7 +330,7 @@ HEMTT Treibstoff HEMTT de combustible HEMTT Cysterna - HEMTT Cisterna + HEMTT (cisterna) HEMTT Citerne HEMTT Заправщик HEMTT Combustível @@ -342,7 +342,7 @@ HEMTT Instandsetzung HEMTT de reparación HEMTT Naprawczy - HEMTT Opravárenský + HEMTT (opravárenský) HEMTT Réparation HEMTT Ремонтный HEMTT Reparador @@ -366,7 +366,7 @@ Fennek (SMG) Fennek (HMG) Fennek (CKM) - Fennek (TK) + Fennek (HMG) Fennek (HMG) Феннек (Пулемёт) Fennek (HMG) @@ -378,7 +378,7 @@ Fennek (GMW) Fennek (GMG) Fennek (GMG) - Fennek (granátomet) + Fennek (GMG) Fennek (GMG) Феннек (Гранатомёт) Fennek (GMG) @@ -426,7 +426,7 @@ KamAZ Transport KamAZ de transporte KamAZ transportowy - KamAZ Valník + KamAZ-5350 (valník) KamAZ Transport КамАЗ Транспортный KamAZ Transporte @@ -438,7 +438,7 @@ KamAZ Transport (bedeckt) KamAZ de transporte (cubierto) KamAZ Transportowy (zakryty) - KamAZ Valník (krytý) + KamAZ-5350 (valník-krytý) KamAZ Transport (bâché) КамАЗ Транспортный (крытый) KamAZ Transporte (coberto) @@ -450,7 +450,7 @@ KamAZ Munition KamAZ de munición KamAZ Amunicyjny - KamAZ Muniční + KamAZ-5350 (muniční) KamAZ Munitions КамАЗ Боеприпасы KamAZ Munições @@ -462,7 +462,7 @@ KamAZ Treibstoff KamAZ de combustible KamAZ cysterna - KamAZ Cisterna + KamAZ-5350 (cisterna) KamAZ Citerne КамАЗ Заправщик KamAZ Combustível @@ -474,7 +474,7 @@ KamAZ Instandsetzung KamAZ de reparación KamAZ Naprawczy - KamAZ Opravárenský + KamAZ-5350 (opravárenský) KamAZ Réparation КамАЗ Ремонтный KamAZ Reparador @@ -486,7 +486,7 @@ KamAZ Sanitäter KamAZ médico KamAZ Medyczny - KAMAZ Zdravotnický + KamAZ-5350 (zdravotnický) KamAZ Médical КамАЗ Медицинский KamAZ Médico @@ -510,7 +510,7 @@ Punisher (SMG) Punisher (HMG) Punisher (CKM) - Punisher (TK) + Punisher (HMG) Punisher (HMG) Kаратель (Пулемёт) Punisher (HMG) @@ -522,7 +522,7 @@ Punisher (GMW) Punisher (GMG) Punisher (GMG) - Punisher (granátomet) + Punisher (GMG) Punisher (GMG) Kаратель (Гранатомёт) Punisher (GMG) @@ -594,7 +594,7 @@ Typhoon Transport Typhoon de transporte Typhoon Transportowy - Typhoon valník + KamAZ-63968 Typhoon (valník) Typhoon Transport Тайфун Транспортный Typhoon Transporte @@ -606,7 +606,7 @@ Typhoon Transport (bedeckt) Typhoon de transporte (cubierto) Typhoon Transportowy (przykryty) - Typhoon valník (krytý) + KamAZ-63968 Typhoon (valník-krytý) Typhoon Transport (bâché) Тайфун Транспортный (крытый) Typhoon Transporte (coberto) @@ -618,7 +618,7 @@ Typhoon Gerät Typhoon con dispositivo Typhoon Urządzenie - Typhoon zařízení + KamAZ-63968 Typhoon (zařízení) Typhoon Dispositif Тайфун Устройство Typhoon Dispositivo @@ -630,7 +630,7 @@ Typhoon Munition Typhoon de munición Typhoon Amunicyjny - Typhoon muniční + KamAZ-63968 Typhoon (muniční) Typhoon Munitions Тайфун Боеприпасы Typhoon Munições @@ -642,7 +642,7 @@ Typhoon Treibstoff Typhoon de combustible Typhoon Cysterna - Typhoon cisterna + KamAZ-63968 Typhoon (cisterna) Typhoon Citerne Тайфун Заправщик Typhoon Combustível @@ -654,7 +654,7 @@ Typhoon Instandsetzung Typhoon de reparación Typhoon Naprawczy - Typhoon opravárenský + KamAZ-63968 Typhoon (opravárenský) Typhoon Réparation Тайфун Ремонтный Typhoon Reparador @@ -666,7 +666,7 @@ Typhoon Sanitäter Typhoon médico Typhoon Medyczny - Typhoon zdravotnický + KamAZ-63968 Typhoon (zdravotnický) Typhoon Médical Тайфун Медицинский Typhoon Médico @@ -881,7 +881,7 @@ M18A1 Claymore M18A1 Claymore Mina kierunkowa M18A1 Claymore - Mina Claymore M18A1 + M18A1 Claymore M18A1 Claymore M18A1 Клеймор M18A1 Claymore @@ -1013,7 +1013,7 @@ M15 Panzerabwehrmine Mina antitanque M15 Mina przeciwpancerna M15 - Protitanková mina M15 + M15 Protitanková mina M15 Mine antichar M15 противотанковая мина M15 Mina anticarro @@ -1025,7 +1025,7 @@ VS-50 Antipersonenmine Mina antipersona VS-50 Mina przeciwpiechotna VS-50 - Protipěchotní mina VS-50 + VS-50 Protipěchotní mina VS-50 Mine AP VS-50 Противопехотная мина VS-50 Mina antipessoal @@ -1037,7 +1037,7 @@ M26 Antipersonensprungmine Mina antipersona M26 Mina przeciwpiechotna M26 - Šrapnelová mina M26 + M26 Protipěchotní mina M26 Mine AP bondissante M26 Противопехотная мина M26 Mina saltadora antipessoal @@ -1049,7 +1049,7 @@ PMR-3 Antipersonenstolperdrahtmine Mina antipersona de alambre PMR-3 Mina przeciwpiechotna PMR-3 - Nástražná mina PMR-3 + PMR-3 Protipěchotní mina (drát) PMR-3 Mine AP à traction PMR-3 Противопехотная мина PMR-3 Mina antipessoal (armadilha) @@ -1192,7 +1192,7 @@ MX (Black) MX (Schwarz) MX (Czarny) - MX (Černý) + MX (Černá) MX (Noir) MX (Fekete) MX (Negro) @@ -1216,7 +1216,7 @@ MXC (Black) MXC (Schwarz) MXC (Czarny) - MXC (Černý) + MXC (Černá) MXC (Noir) MXC (Fekete) MXC (Negro) @@ -1240,7 +1240,7 @@ MX 3GL (Black) MX 3GL (Schwarz) MX 3GL (Czarny) - MX 3GL (Černý) + MX 3GL (Černá) MX 3GL (Noir) MX 3GL (Fekete) MX 3GL (Negro) @@ -1264,7 +1264,7 @@ MX LSW (Black) MX LSW (Schwarz) MX LSW (Czarny) - MX LSW (Černý) + MX LSW (Černá) MX LSW (Noir) MX LSW (Fekete) MX LSW (Negro) @@ -1288,7 +1288,7 @@ MXM (Black) MXM (Schwarz) MXM (Czarny) - MXM (Černý) + MXM (Černá) MXM (Noir) MXM (Fekete) MXM (Negro) @@ -1360,7 +1360,7 @@ F2000 Tactical (Camo) F2000 Tactical (Tarnmuster) F2000 Tactical (kamuflaż) - F2000 Tactical (Černý) + F2000 Tactical (Kamufláž) F2000 Tactical (Camo) F2000 Tactical (Terepmintás) F2000 Tactical (Camuflaje) @@ -1598,7 +1598,7 @@ Noreen "Bad News" ULR (Black) - Noreen "Bad News" ULR (Černý) + Noreen "Bad News" ULR (Černá) Noreen "Bad News" ULR (Noir) Noreen "Bad News" ULR (Negro) Noreen "Bad News" ULR (Чёрный) @@ -1622,7 +1622,7 @@ Noreen "Bad News" ULR (Sand) - Noreen "Bad News" ULR (Pouštní) + Noreen "Bad News" ULR (Písková) Noreen "Bad News" ULR (Beige) Noreen "Bad News" ULR (Arena) Noreen "Bad News" ULR (Песочный) @@ -1646,7 +1646,7 @@ SIG 556 (Black) - SIG 556 (Černý) + SIG 556 (Černá) SIG 556 (Noir) SIG 556 (Negro) SIG 556 (Чёрный) @@ -1670,7 +1670,7 @@ SIG 556 (Sand) - SIG 556 (Pouštní) + SIG 556 (Písková) SIG 556 (Beige) SIG 556 (Arena) SIG 556 (Песочный) @@ -1694,7 +1694,7 @@ SIG 556 (Woodland) - SIG 556 (Woodland) + SIG 556 (Lesní) SIG 556 (Woodland) SIG 556 (Bosque) SIG 556 (Лесной) @@ -1706,7 +1706,7 @@ SIG 556 (provisional) spotter - SIG 556 (Provizorní) spotter + SIG 556 (provizorní) spotter SIG 556 (provisoire) Observateur SIG 556 (provisional) observador SIG 556 (provisional) корректировщик @@ -1730,7 +1730,7 @@ ASP-1 Kir (Black) - ASP-1 Kir (Čený) + ASP-1 Kir (Čená) ASP-1 Kir (Noir) ASP-1 Kir (Negro) ASP-1 Kir (Чёрный) @@ -1742,7 +1742,7 @@ ASP-1 Kir (Tan) - ASP-1 Kir (Pouštní) + ASP-1 Kir (Tan) ASP-1 Kir (Tan) ASP-1 Kir (Tan) ASP-1 Kir (Бронзовый) @@ -1766,7 +1766,7 @@ Cyrus (Black) - Cyrus (Černý) + Cyrus (Černá) Cyrus (Noir) Cyrus (Negro) Cyrus (Чёрный) @@ -1790,7 +1790,7 @@ Cyrus (Tan) - Cyrus (Pouštní) + Cyrus (Tan) Cyrus (Tan) Cyrus (Tan) Cyrus (Бронза) @@ -1826,7 +1826,7 @@ M14 (Olive) - M14 (Olivový) + M14 (Olivová) M14 (Olive) M14 (Oliva) M14 (Олива) @@ -1862,7 +1862,7 @@ HK121 (Tan) - HK121 (Pouštní) + HK121 (Tan) HK121 (Tan) HK121 (Tan) HK121 (Бронза) @@ -1898,7 +1898,7 @@ LWMMG (Black) - LWMMG (Černý) + LWMMG (Černá) LWMMG (Noir) LWMMG (Negro) LWMMG (Чёрный) @@ -1910,7 +1910,7 @@ LWMMG (Sand) - LWMMG (Pouštní) + LWMMG (Písková) SPMG (Beige) LWMMG (Arena) LWMMG (Песочный) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index ddbccb7777..a1c94d6c6d 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -8,7 +8,7 @@ Chenille de réserve Zapasowa gąsienica Esteira reserva - Náhradní Pásy + Náhradní pásy Cingolo di scorta Pót lánctalp Запасная гусеница @@ -19,7 +19,7 @@ Rueda de repuesto Roue de secours Zapasowe koło - Náhradní Kolo + Náhradní kolo Estepe Ruota di scorta Pótkerék @@ -35,6 +35,7 @@ Sostituisci la ruota Kerék cseréje Поменять колесо + Vyměnit kolo Replacing Wheel ... @@ -42,7 +43,7 @@ Wymienianie koła ... Trocando roda... Замена колеса ... - Měním Kolo ... + Měním kolo ... Cambiando rueda ... @@ -60,7 +61,7 @@ Quitar rueda Démonter Roue Zdejmij koło - Odstranit Kolo + Odstranit kolo Remover roda Rimuovi la ruota Kerék leszerelése @@ -72,7 +73,7 @@ Zdejmowanie koła ... Removendo roda... Снятие колеса ... - Odstraňuji Kolo ... + Odstraňuji kolo ... Quitando rueda ... @@ -89,7 +90,7 @@ Wymień gąsienicę Trocar esteira Заменить гусеницу - Vyměnit Pás + Vyměnit pás Cambiar oruga @@ -97,7 +98,7 @@ Wymienianie gąsienicy ... Trocando esteira... Замена гусеницы ... - Měním Pás ... + Měním pás ... Cambiando oruga ... @@ -113,7 +114,7 @@ Zdejmij gąsienicę Remover esteira Снять гусеницу - Odstranit Pás + Odstranit pás Quitar oruga @@ -121,7 +122,7 @@ Zdejmowanie gąsienicy ... Removendo esteira... Снятие гусеницы ... - Odstraňuji Pás ... + Odstraňuji pás ... Quitando oruga ... @@ -137,7 +138,7 @@ Pełna naprawa Reparo completo Полный ремонт - Kompletní Oprava + Kompletní oprava Reparación completa @@ -145,7 +146,7 @@ Naprawianie pojazdu ... Reparando veículo... Ремонт транспорта ... - Opravuji Vozidlo ... + Opravuji vozidlo ... Reparando vehículo ... @@ -153,7 +154,7 @@ Lokaliz. pełnej naprawy Localizações de reparo completo Места полного ремонта - Lokace pro Kompletní Opravu + Oblast pro kompletní opravu Lugares de reparación completa @@ -162,13 +163,14 @@ Em quais locais um veículo pode ser reparado por completo? В каких местах транспорт может быть полностью отремеонтирован? ¿En qué lugares puede un vehículo ser reparado totalmente? + V které oblasti může být vozidlo plně opraveno? Allow Full Repair Zezwól na pełną naprawę Permitir reparo completo Полный ремонт выполняют - Povolit Kompletní Opravu + Povolit kompletní opravu Permitir reparación completa @@ -177,6 +179,7 @@ Кто может выполнять полный ремонт? Quem pode reparar o veículo por completo? ¿Quién puede realizar una reparación completa de un vehículo? + Kdo může provést úplné opravy na vozidle? Add Spare Parts @@ -184,6 +187,7 @@ Adicionar partes sobressalentes Añadir repuestos Добавлять запчасти + Přidat náhradní díly Add spare parts to vehicles (requires Cargo component)? @@ -191,6 +195,7 @@ Adicionar partes sobressalentes aos veículos (requer o componente de carga)? ¿Añadir repuestos para vehículos (requiere componente de carga)? Добавлять запасные части в технику (требуется модуль Грузоперевозок)? + Přidat náhradní díly do vozidla (vyžaduje úložný prostor)? Repair >> @@ -218,6 +223,7 @@ Mostra uma notificação quando você repara um veículo Отображать оповещение каждый раз, когда вы ремонтируете транспорт Mostrar una notificación cada vez que se reparare un vehículo + Zobrazit oznámení kdykoliv opravíš vozidlo Repairing ... @@ -249,7 +255,7 @@ Reparado %1 %1 réparé(e) Naprawiono %1 - Opraveno - %1 + %1 - opraveno Reparado %1 %1 Riparata/o %1 megjavítva @@ -271,6 +277,7 @@ %1 parcialmente reparado Частично отремонтировано: %1 Parcialmente reparada %1 + %1 - částečně opraveno Fully repaired %1 @@ -278,7 +285,7 @@ W pełni naprawiono: %1 %1 totalmente reparado Полностью отремонтировано: %1 - Kompletně opraveno %1 + %1 - kompletně opraveno Totalmente reparada %1 @@ -288,6 +295,7 @@ %1 parcialmente reparado Частично отремонтировано: %1 Parcialmente reparada %1 + %1 - částečně opraveno Body @@ -331,6 +339,7 @@ Левый горизонтальный стабилизатор Estabilizador Horizontal Esquerdo Estabilizador horizontal izquierdo + Levý horizontální stabilizátor Right Horizontal Stabilizer @@ -338,6 +347,7 @@ Правый горизонтальный стабилизатор Estabilizador Horizontal Direito Estabilizador horizontal derecho + Pravý horizontální stabilizátor Vertical Stabilizer @@ -373,6 +383,7 @@ Коробка передач Engrenagem Rueda + Podvozek Starter @@ -404,6 +415,7 @@ Статический иллюминатор Porta Estática Puerto estático + Statický port Ammo @@ -608,6 +620,7 @@ Guincho Лебедка Cabrestante + Naviják Glass (right) @@ -651,6 +664,7 @@ Preferências de reparo Ремонт Ajustes de reparación + Nastavení oprav Provides a repair system for all types of vehicles. @@ -658,6 +672,7 @@ Provém um sistema de reparo para todos os veículos Предоставляет систему ремонта для всех типов транспортных средств. Proporciona un sistema de reparación para todo tipo de vehículos. + Poskytuje rozsáhlý systém oprav pro všechny typy vozidel. Anyone @@ -721,6 +736,7 @@ Limite de reparo Лимит ремкомплекта Umbral de reparación + Práh oprav What is the maximum damage that can be repaired with a toolkit? @@ -728,6 +744,7 @@ Qual é o dano máximo que pode ser reparado com um kit de ferramentas? Какой максимальный урон можно починить с помощью ремкомплекта? ¿Cuál es el daño máximo que puede ser reparado con una caja de herramientas? + Jaké maximální poškození může být opraveno pomocí opravárenské sady? Repair Threshold (Engineer) @@ -735,6 +752,7 @@ Limite de reparo (Engenheiro) Лимит инженера Umbral de Reparación (Ingeniero) + Práh oprav (Inženýr) What is the maximum damage that can be repaired by an engineer? @@ -742,6 +760,7 @@ Qual é o dano máximo que pode ser reparado com um engenheiro? Какой максимальный урон может починить инженер? ¿Cuál es el daño máximo que puede ser reparado por un ingeniero? + Jaké maximální poškození může být opraveno pomoci inženýra? Remove toolkit on use @@ -749,6 +768,7 @@ Remover kit de ferramentas Удалять ремкомплект после использования Eliminar conjunto de herramientas al usarlo + Odstranit sadu nástrojů po použití Should the toolkit be removed on usage? @@ -756,6 +776,7 @@ O kit de ferramentas deve ser removido após uso? Следует ли удалять ремкомплект после использования? ¿Deben retirarse las herramientas al usarlas? + Má být odstraněna sada nástroju po použití? Anywhere @@ -771,6 +792,7 @@ Somente veículos de reparo Только у ремонтного транспорта Reparar solo en vehículo + Pouze opravárenské vozidlo Repair Facility only @@ -778,6 +800,7 @@ Somente instalação de reparo Только у ремонтных сооружений Reparar solo en instalación + Pouze opravárenské zařízení Repair Facility or Vehicle @@ -785,6 +808,7 @@ Instalação e veículo de reparo Только у ремонтного транспорта или ремонтных сооружений Reparar en instalación o vehículo + Opravárenské zařízení nebo vozidlo Assign Engineer @@ -808,6 +832,7 @@ Lista de nomes de unidades que serão classificadas como engenheiros, separadas por vírgulas. Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. Lista de los nombres de las unidades que serán clasificados como ingeniero, separados por comas. + Seznam jmen jednotek, které budou klasifikovány jako inženýr, oddělit čárkami. Is Engineer @@ -815,6 +840,7 @@ É engenheiro Это инженер Es un ingeniero + Inženýr Select the engineering skill level of the unit @@ -822,6 +848,7 @@ Selecione o nível de habilidade da unidade em engenhraria Укажите уровень инженерного мастерства для юнита Selecciona el nivel de conocimientos de ingeniería de la unidad + Vyberte úroveň dovednosti inženýra pro jednotku None @@ -853,6 +880,7 @@ Defina um ou mais unidades como engenheiro Назначить одного или нескольких юнитов инженерами Asignar una o varias unidades como ingeniero + Přiřaďte jednu nebo více osob jako inženýra Assign Repair Vehicle @@ -860,6 +888,7 @@ Defina veículo de reparo Назначить ремонтный транспорт Asignar vehículo de reparación + Přiřaďte opraváresnké vozidlo List @@ -875,6 +904,7 @@ Lista de veículos que serão classificadas como veículo de reparo. Separado por vígulas. Список транспортных средств, которые будут классифицированы как ремонтные, разделенный запятыми. Lista de los vehículos que se clasifican como vehículo de reparación, separados por comas. + Seznam vozidel, která budou klasifikována jako opravárenská, oddělit čárkami. Is Repair Vehicle @@ -882,6 +912,7 @@ É veículo de reparo Это ремонтный транспорт Es un vehículo de reparación + Opravárenské vozidlo Is the vehicle classified as a repair vehicle? @@ -889,6 +920,7 @@ O veículo é classificado como reparo? Классифицируется ли этот транспорт как ремонтный? ¿Está el vehículo clasificado como un vehículo de reparación? + Je vozidlo klasifikováno jako opravárenské? Assign one or multiple vehicles as a repair vehicle @@ -896,6 +928,7 @@ Definir um ou mais veículos como reparo Назначить одно или несколько транспортных средств ремонтными Asignar uno o varios vehículos como vehículo de reparación + Přiřaďte jedno nebo více vozidel jako opravárenské vozidlo Assign Repair Facility @@ -903,6 +936,7 @@ Definir instalação de reparo Назначить ремонтное сооружение Asignar instalación de reparación + Přiřaďte opravárenské zařízení List @@ -918,6 +952,7 @@ Lista de objetos que serão classificados como instalações de reparo. separado por vírgulas. Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. Lista de los objetos que se clasifican como instalaciones para la reparación, separados por comas. + Seznam objektů, které budou klasifikovány jako opravárenské zařízení, oddělit čárkami. Is Repair Facility @@ -925,6 +960,7 @@ É uma instalação de reparo Это ремонтное сооружение Es una instalación de reparación + Opravárenské zařízení Is the object classified as a repair Facility? @@ -932,6 +968,7 @@ O objeto é classificado como instalação de reparo? Классифицируется ли этот объект как ремонтное сооружение? ¿Está el objeto clasificado como una instalación de reparación? + Je objekt klasifikován jako opravárenské zařízení? Assign one or multiple objects as a repair Facility @@ -939,6 +976,7 @@ Назначить один или несколько объектов ремонтными сооружениями Definir um ou mais objetos como instalação de reparos Asignar uno o varios objetos como una instalación de reparación + Přiřaďte jeden nebo více objektů jako opravárenské zařízení Add Spare Parts @@ -946,6 +984,7 @@ Adicionar partes sobressalentes Añadir repuestos Добавить запчасти + Přidat náhradní díly Add spare parts to one or multiple objects @@ -953,6 +992,7 @@ Adicionar partes sobressalentes para um ou mais objetos Añadir repuestos a uno o varios objetos Добавить запасные части в одно или несколько транспортных средств + Přidat náhradní díly do jednoho nebo více objektů List @@ -960,6 +1000,7 @@ Lista Lista Список + Seznam List of objects that will get spare parts added, separated by commas. @@ -967,6 +1008,7 @@ Lista de objetos que ganharão partes sobressalentes, dividos por vírgulas. Lista de los objetos que tendrán repuestos añadidos, separados por comas. Список транспортных средств, в которые будут добавляться запчасти, разделенный запятыми. + Seznam objektů, které dostanou náhradní díly, oddělit čárkami. Part @@ -974,6 +1016,7 @@ Parte Pieza Запчасть + Díl Spare part. @@ -981,6 +1024,7 @@ Parte sobressalente Pieza de recambio. Запасная часть. + Náhradní díl. Amount @@ -988,6 +1032,7 @@ Quantidade Cantidad Количество + Množství Number of selected spare parts. @@ -995,6 +1040,7 @@ Número de partes sobressalentes. Número de piezas de repuesto seleccionados. Число выбранных запасных частей. + Počet vybraných náhradních dílů. Wheel repair requirements @@ -1002,6 +1048,7 @@ Requisitos de reparación de ruedas Для ремонта колес требуется Requerimentos para reparo de rodas + Vyžaduje opravu kol Items required to remove/replace wheels @@ -1009,6 +1056,7 @@ Elementos necesarios para quitar/cambiar ruedas Предметы, которые требуются для снятия/замены колес Itens requeridos para remover/trocar rodas + Položka vyžaduje odstraněná/vyměněná kola \ No newline at end of file diff --git a/addons/slideshow/stringtable.xml b/addons/slideshow/stringtable.xml index 2cf707f024..ef3059dad2 100644 --- a/addons/slideshow/stringtable.xml +++ b/addons/slideshow/stringtable.xml @@ -103,6 +103,7 @@ Duração do Slide Длительность слайда Duración de diapositiva + Doba trvání snímku Duration of each slide. Default: 0 (Automatic Transitions Disabled) @@ -121,6 +122,7 @@ Slides Слайды Diapositivas + Snímky - + \ No newline at end of file diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index d8c7cd1310..bca0e36c59 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -6,7 +6,7 @@ Ustawienia obserwatora Preferências de Espectador Настройки спектатора - Nastavení Pozorovatele + Nastavení pozorovatele Ajustes de espectador @@ -15,6 +15,7 @@ Configura como o sistema de espectador operará por padrão. Определяют, как система спектатора будет функционировать по-умолчанию. Configurar cómo el sistema de espectador funcionará por defecto. + Konfigurovat výchozí nastavení pozorovatele Unit filter @@ -30,6 +31,7 @@ Método para filtrar unidades espectáveis Метод фильтрации наблюдаемых юнитов. Método de filtrado de unidades de espectador + Metoda filtrování pozorovaných jednotek. No units @@ -52,7 +54,7 @@ Grywalne jednostki Unidades jogáveis Играбельные юниты - Hratelné Jednotky + Hratelné jednotky Unidades jugables @@ -77,6 +79,7 @@ Método para filtrar lados espectáveis. Метод фильтрации наблюдаемых сторон. Método de filtrado de bandos de espectador + Metoda filtrování pozorovaných stran. Player side @@ -124,6 +127,7 @@ Modos de camera que podem ser utilizados Режимы камеры, которые могут быть использованы Modos de la cámara que se pueden utilizar. + Módy kamery které mohou být použity. All @@ -202,6 +206,7 @@ Unidades espectadoras Юниты Unidades espectador + Jednotky pozorovatele Spectator Controls @@ -209,6 +214,7 @@ Controle do espectador Управление спектатором Controles de espectador + Ovládací prvky pozorovatele Free @@ -334,7 +340,7 @@ Zablokuj kamerę na celu Travar câmera em alvo Зафиксировать камеру на цели - Zamknout Kameru na Cíl + Zamknout kameru na Cíl Fijar cámara al objetivo @@ -343,6 +349,7 @@ Aumento de velocidade Ускорение камеры Aumento de velocidad + Zrychlení kamery Interface @@ -357,7 +364,7 @@ Przełącz interfejs Alternar interface Переключить интерфейс - Přepnout Rozhraní + Přepnout rozhraní Conmutar @@ -365,7 +372,7 @@ Przełącz ikony jednostek Alternar ícone de unidades Вкл./выкл. иконки юнитов - Přepnout Ikony Jednotek + Přepnout ikony jednotek Conmutar iconos de unidad @@ -373,7 +380,7 @@ Przełącz listę jednostek Alternar lista de unidades Вкл./выкл. список юнитов - Přepnout Seznam Jednotek + Přepnout seznam jednotek Conmutar lista de unidades @@ -382,13 +389,14 @@ Alternar barra de ferramentas Вкл./выкл. тулбар Conmutar barra de herramientas + Přepnout panel nátrojů Toggle Compass Przełącz kompas Alternar bússola Вкл./выкл. компас - Přepnout Kompas + Přepnout kompas Conmutar brújula @@ -396,7 +404,7 @@ Przełącz mapę Alternar mapa Вкл./выкл. карту - Přepnout Mapu + Přepnout mapu Conmutar map @@ -404,7 +412,7 @@ Przełącz pomoc Alternar ajuda Вкл./выкл. помощь - Přepnout Nápovědu + Přepnout nápovědu Conmutar ayuda @@ -419,7 +427,7 @@ Następna kamera Próxima câmera Следующая камера - Následující Kamera + Následující kamera Siguiente cámara @@ -427,7 +435,7 @@ Poprzednia kamera Câmera anterior Предыдущая камера - Předchozí Kamera + Předchozí kamera Anterior cámara @@ -435,7 +443,7 @@ Następna jednostka Próxima unidade Следующий юнит - Následující Jednotka + Následující jednotka Siguiente unidad @@ -443,7 +451,7 @@ Poprzednia jednostka Unidade anterior Предыдущий юнит - Předchozí Jednotka + Předchozí jednotka Anterior unidad @@ -465,7 +473,7 @@ Reguluj zoom Ajustar zoom Настроить зум - Regulovat Přiblížení + Regulovat přiblížení Ajustar aumento @@ -473,7 +481,7 @@ Reguluj prędkość Ajuster velocidade Настроить скорость - Regulovat Rychlost + Regulovat rychlost Ajustar velocidad @@ -495,7 +503,7 @@ Resetuj zoom Redefinir zoom Сбросить зум - Obnovit Přiblížení + Obnovit přiblížení Reiniciar aumento @@ -503,7 +511,7 @@ Resetuj prędkość Redefinir velocidade Сбросить скорость - Obnovit Rychlost + Obnovit rychlost Reiniciar velocidad diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 3d377ed420..602be09855 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -43,6 +43,7 @@ Rozłóż, +Ctrl nachyl Extender, +Ctrl tilt Разложить, +Ctrl наклонить + Prodloužit, +Ctrl naklonit Position ladder diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml index ea76984097..c9a8e43f60 100644 --- a/addons/weaponselect/stringtable.xml +++ b/addons/weaponselect/stringtable.xml @@ -30,7 +30,7 @@ Pistole auswählen Seleccionar pistola Wybierz pistolet - Zvolit příruční zbraň + Zvolit Pistoly Выбрать пистолет Sélectionner Pistolet Pisztoly Kiválasztása @@ -42,7 +42,7 @@ Gewehr auswählen Seleccionar fusil Wybierz karabin - Zvolit hlavní zbraň + Zvolit Pušku Выбрать винтовку Sélectionner Fusil Puska Kiválasztása @@ -188,7 +188,7 @@ Wybierz granat odłamkowy Sélectionner grenade à fragmentation Repeszgránát Kiválasztása - Zvolit Výbušný Granát + Zvolit výbušný granát Selecionar Granada de Fragmentação Seleziona Granata a Frammentazione Выбрать осколочную гранату @@ -200,7 +200,7 @@ Wybierz granat nieodłamkowy Sélectionner grenade non-léthale Nem-robbanó Gránát Kiválasztása - Zvolit Ne-Výbušný Granát + Zvolit ne-výbušný granát Selecionar Granada Seleziona granate non a frammentazione Выбрать гранату @@ -212,7 +212,7 @@ Rzuć wybrany granat Lancer la grenade sélectionnée Kiválasztott Gránát Eldobása - Hodit Zvolený Granát + Hodit zvolený granát Lançar Granada Selecionada Lancia la Granata Selezionata Бросить выбранную гранату @@ -236,7 +236,7 @@ Brak granatów odłamkowych Plus de grenades à fragmentation Nincs több repeszgránát - Už nejsou granáty + Žádné výbušné granáty Não há granadas de fragmentação restantes Nessuna granata a frammentazione rimanente Осколочных гранат нет @@ -278,4 +278,4 @@ Lançador de fumaça - + \ No newline at end of file diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index da8e2ac3d2..f72225d970 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -217,24 +217,28 @@ Adicionar roda sobressalente Dodaj koło zapasowe Добавить запасное колесо + Přidat rezervní kolo Adds a Spare Wheel to the vehicle Adiciona uma roda sobressalente ao veículo Dodaje koło zapasowe do pojazdu Добавляет запасное колесо в транспорт + Přidá rezervní kolo do vozidla Add Spare Track Adicionar esteira sobressalente Dodaj zapasową gąsienicę Дабавить запасную гусеницу + Přidat náhradní pás Adds a Spare Track to the vehicle Adiciona uma esteira sobressalente ao veículo Dodaje zapasową gąsienicę do pojazdu Добавляет запасную гусеницу в транспорт + Přidá náhradní pás do vozidla Unit must be alive @@ -266,6 +270,7 @@ Unidade deve ser uma estrutura Юнит должен быть строением La unidad debe ser una estructura + Jednotka musí být budova Unit must be a vehicle @@ -273,18 +278,21 @@ Unidade deve ser um veículo Юнит должен быть транспортом La unidad debe ser un vehículo + Jednotka musí být vozidlo Unit must be a vehicle with cargo space Unidade deve ser um veículo com espaço em carga Jednostka musi być pojazdem z wolną przestrzenią cargo Юнит должен быть транспортом с грузовым отсеком + Jednotka musí být vozidlo s úložným prostorem Unit must have cargo space left Unidade deve conter espaço sobressalente Jednostka musi mieć wolną przestrzeń cargo Юнит должен иметь свободное место в грузовом отсеке + Jednotka musí mít místo v úložném prostoru Unit must not be captive @@ -326,6 +334,7 @@ Adicionar objetos para o Curator Добавить объекты куратору Agregar objetos al director + Přidat objekty kurátorovi Adds any spawned object to all curators in the mission @@ -333,6 +342,7 @@ Adicionar qualquer objeto criado para todos os curators na missão Добавляет любой отспавненный объект всем кураторам в миссии Añadir cualquier objeto creado a todos los directores en la misión + Přidá jakékoliv spawnuté objekty všem kurátorům v misi From b13656e54bd955fd5350ebdede63b662550faa93 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 5 Dec 2015 12:19:34 -0600 Subject: [PATCH 010/107] addDamageToUnit - Disable debug / testing code --- addons/medical/functions/fnc_addDamageToUnit.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_addDamageToUnit.sqf b/addons/medical/functions/fnc_addDamageToUnit.sqf index 78d81821e4..a11cc4689f 100644 --- a/addons/medical/functions/fnc_addDamageToUnit.sqf +++ b/addons/medical/functions/fnc_addDamageToUnit.sqf @@ -18,8 +18,8 @@ * * Public: Yes */ -#define DEBUG_MODE_FULL -#define DEBUG_TESTRESULTS +// #define DEBUG_MODE_FULL +// #define DEBUG_TESTRESULTS #include "script_component.hpp" params [["_unit", objNull, [objNull]], ["_damageToAdd", -1, [0]], ["_selection", "", [""]], ["_typeOfDamage", "", [""]]]; From f6e7cad67895b191ad13a9058eff943322175460 Mon Sep 17 00:00:00 2001 From: gienkov Date: Sat, 5 Dec 2015 22:08:39 +0100 Subject: [PATCH 011/107] remove Original entries --- addons/rearm/stringtable.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index 1dd33d19d7..da36dc4410 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -86,7 +86,6 @@ Przezbrojono %1 pocisków %2 na %3 - Smoke Screen Smoke Screen Kouřová clona Écran de fumée @@ -98,7 +97,6 @@ Pantalla de humo - Flares Flares Světlice Fusées From 9fa62c6d2a85de4a1c832f646aed0b8ea0ea0d6d Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 6 Dec 2015 11:18:07 +0100 Subject: [PATCH 012/107] clean up vehicles config --- addons/vehicles/CfgWeapons.hpp | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/addons/vehicles/CfgWeapons.hpp b/addons/vehicles/CfgWeapons.hpp index 5cb30518d9..6c0953eb76 100644 --- a/addons/vehicles/CfgWeapons.hpp +++ b/addons/vehicles/CfgWeapons.hpp @@ -28,15 +28,6 @@ class CfgWeapons { class LMG_Minigun: LMG_RCWS { magazines[] = {"1000Rnd_65x39_Belt","1000Rnd_65x39_Belt_Green","1000Rnd_65x39_Belt_Tracer_Green","1000Rnd_65x39_Belt_Tracer_Red","1000Rnd_65x39_Belt_Tracer_Yellow","1000Rnd_65x39_Belt_Yellow","2000Rnd_65x39_Belt","2000Rnd_65x39_Belt_Green","2000Rnd_65x39_Belt_Tracer_Green","2000Rnd_65x39_Belt_Tracer_Green_Splash","2000Rnd_65x39_Belt_Tracer_Red","2000Rnd_65x39_Belt_Tracer_Yellow","2000Rnd_65x39_Belt_Tracer_Yellow_Splash","2000Rnd_65x39_Belt_Yellow","2000Rnd_762x51_Belt_T_Green","2000Rnd_762x51_Belt_T_Red","2000Rnd_762x51_Belt_T_Yellow","200Rnd_65x39_Belt","200Rnd_65x39_Belt_Tracer_Green","200Rnd_65x39_Belt_Tracer_Red","200Rnd_65x39_Belt_Tracer_Yellow","5000Rnd_762x51_Belt","5000Rnd_762x51_Yellow_Belt"}; - - class manual: MGun { - reloadTime = 0.015; - dispersion = 0.006; - }; - class close: manual {}; - class short: close {}; - class medium: close {}; - class far: close {}; }; class HMG_127: LMG_RCWS { @@ -49,18 +40,10 @@ class CfgWeapons { class manual: manual { reloadTime = 0.23; }; - class close: manual { - reloadTime = 0.23; - }; - class short: close { - reloadTime = 0.23; - }; - class medium: close { - reloadTime = 0.23; - }; - class far: close { - reloadTime = 0.23; - }; + class close: manual {}; + class short: close {}; + class medium: close {}; + class far: close {}; }; class autocannon_Base_F; From 358228f5bbeca4034f77582e87873a25fe62d8fd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 6 Dec 2015 15:03:15 -0600 Subject: [PATCH 013/107] Cleanup De Stringtables --- addons/cargo/stringtable.xml | 2 +- addons/common/stringtable.xml | 6 +++--- addons/hearing/stringtable.xml | 2 +- addons/main/stringtable.xml | 2 +- addons/medical/stringtable.xml | 14 +++++++------- addons/medical_menu/stringtable.xml | 2 +- addons/repair/stringtable.xml | 30 ++++++++++++++--------------- addons/respawn/stringtable.xml | 2 +- addons/sitting/stringtable.xml | 4 ++-- 9 files changed, 32 insertions(+), 32 deletions(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 686c445243..b935241ac1 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -57,7 +57,7 @@ Enable the load in cargo module - Aktiviere das Fracht-Modul + Aktiviere das Frachtmodul Aktywuj możliwość załadunku skrzyń i przedmiotów do pojazdów. Ativar o módulo de carregamento de carga Включает модуль погрузки и перевозки грузов diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 78a6e37760..7f9fc1ecb5 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -485,7 +485,7 @@ Check addon integrity with server and do selected action if an addon is missing. Sprawdzaj spójność addonów z serwerem i wykonuj stosowną akcję jeżeli zostanie wykryty brak addonu. Este módulo verifica la integridad de los addons con los que iniciamos el simulador - Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien mitgeladen hat. + Dieses Modul überprüft, ob jeder Spieler die richtigen PBO-Dateien mitgeladen hat. Zjistit addon který je v souladu se serverem Este módulo verifica a integridade dos addons quando iniciamos a simulação Выполняет проверку версий аддонов ACE у подключаемых игроков @@ -506,7 +506,7 @@ What to do with people who do not have the right PBOs? Co zrobić z graczami, którzy nie mają właściwych PBO? ¿Qué hacer con la gente que no tiene correctamente los PBOs? - Was soll mit Leuten geschehen, die nicht die richtigen PBOs geladen haben? + Was soll mit Leuten geschehen, die nicht die richtigen PBO-Dateien geladen haben? Co udělat s lidmi, co nemají správné addony? O que fazer com pessoas que não tem os PBOs corretos? Que faire avec les personnes n'ayant pas les bon PBOs @@ -745,7 +745,7 @@ ACE3 Scope Adjustment - ACE3 Visiereinstellunge + ACE3 Visiereinstellung ACE3 Regulacja optyki Ajuste de luneta ACE3 ACE3 Прицелы diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index f9a4503248..c32927f716 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -161,7 +161,7 @@ Allow zeus remote controlled units to be able to take hearing damage. - Erlaubt von Zeus gesteuerte Einheiten einen Hörschaden davonzutragen. + Erlaubt, durch von Zeus gesteuerten Einheiten, einen Hörschaden davonzutragen. Aktywuj efekty utraty słuchu dla jednostek kontrolowanych zdalnie przez Zeusa. Контролирует оглушение в бою и звон в ушах. При активации играки могут быть оглушены близкими выстрелами и взрывами при отсутствии защиты для ушей. Permite que unidades remotamente controladas pelo Zeus sejam atingidas por danos auditivos. diff --git a/addons/main/stringtable.xml b/addons/main/stringtable.xml index fa2ed79831..02021520b4 100644 --- a/addons/main/stringtable.xml +++ b/addons/main/stringtable.xml @@ -3,7 +3,7 @@ ACE Logistics - ACE Logistik. + ACE Logistik ACE Logistyka Logísticas ACE ACE: логистика diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index fce6016bbb..bffed48bbe 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 des lokal angezeigten medizinischen Abfalls ein. Zuviele Abfälle können FPS-Einbrüche erzeugen, weswegen diese Einstellung nur clientseitig ist. + Die Einstellung für das Abfall-Detaillevel stellt die Menge des lokal angezeigten medizinischen Abfalls ein. Zuviel Abfall kann FPS-Einbrüche erzeugen, weswegen diese Einstellung nur clientseitig ist. 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. @@ -2044,7 +2044,7 @@ Placing body in bodybag Colocando cuerpo en bolsa para cadáveres Упаковка тела ... - Körper wird in Leichensack gesteckt + Körper wird in Leichensack gepackt Pakowanie ciała do worka na zwłoki ... Placement du corps dans la housse Test hullazsákba helyezése ... @@ -2110,7 +2110,7 @@ %1 used Personal Aid Kit - %1 hat das eigene Erste-Hilfe-Set verwendet. + %1 hat das eigene Erste-Hilfe-Set verwendet %1 użył apteczki %1 utilizou KPS %1 использовал аптечку @@ -2293,7 +2293,7 @@ Select the type of menu you prefer; default 3d selections or radial. Wybierz rodzaj menu, który preferujesz: domyślne pozycje 3D lub radialne Selctionne le type de menu préféré; par défaut la sélection 3D ou radiale - Wähle den Menü-Stil: Standard 3D-Auswahl oder kreisförmig. + Wähle den Menüstil: Standard 3D-Auswahl oder kreisförmig. Выберите тип меню: стандартный вариант (3D) или радиальный Selecciona el tipo de menú que prefieres: selecciones 3d por defecto o radial. Selecione o tipo de menu que você prefere; padrão seleções 3d ou radial. @@ -3190,7 +3190,7 @@ Должны ли юниты получать повреждения от аварий на транспорте? Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów? ¿Las unidades reciben daño de un accidente de tráfico? - Verursacht ein Fahrzeugunfall Schaden (an den Insassen) + Verursacht ein Fahrzeugunfall Verletzungen Dostane jednotka poškození při autonehodě? As unidades recebem dano de uma batida de veículo? Les unités subissent des dégats lors d'accident @@ -3633,7 +3633,7 @@ This module allows you to assign the medic class to selected units. Moduł ten pozwala przypisać klasę medyczną wybranym jednostkom. - Dieses Modul legt fest, welche Einheiten Sanitäter sind. + Dieses Modul legt fest, welche Einheiten Sanitäter sind. Tento modul určuje, která jednotka je zdravotník. Este módulo determina qual unidade é um paramédico. Ce module permet d'assigner la classe médicale à une unité sélectionnée @@ -3861,7 +3861,7 @@ This person (%1) is awake and cannot be loaded - Diese Person ist wach und kann nicht verladen werden + Diese Person (%1) ist wach und kann nicht verladen werden Ta osoba (%1) jest przytomna i nie może zostać załadowana Esta persona (%1) está despierto y no puede ser cargado Боец (%1) в сознании и не может быть погружен diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 3763577f5a..24f4b9da32 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -93,7 +93,7 @@ STATUS - BERICHT + STATUS СОСТОЯНИЕ ESTADO ÉTATS diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 63042a2755..e405814b6f 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -95,7 +95,7 @@ Replacing Track ... - Tausche Kette aus... + Tausche Kette aus ... Wymienianie gąsienicy ... Trocando esteira... Замена гусеницы ... @@ -122,7 +122,7 @@ Removing Track ... - Entferne Kette.... + Entferne Kette ... Zdejmowanie gąsienicy ... Removendo esteira... Снятие гусеницы ... @@ -229,7 +229,7 @@ Display a notification whenever you repair a vehicle - Zeige eine Nachricht, wannimmer du ein Fahrzeug reparierst. + Zeige eine Nachricht, wannimmer du ein Fahrzeug reparierst Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. Mostra uma notificação quando você repara um veículo Отображать оповещение каждый раз, когда вы ремонтируете транспорт @@ -403,7 +403,7 @@ Tail - + Leitwerk Ogon Ocas Хвост @@ -421,7 +421,7 @@ Static Port - + Statik Port Port statyczny Статический иллюминатор Porta Estática @@ -696,7 +696,7 @@ Engineer only - Pionier + Pionier Tylko mechanicy Somente engenheiro Только инженеры @@ -705,7 +705,7 @@ Repair Specialist only - Nur Mechatroniker + Nur Reparaturspezialist Tylko inżynierowie Somente especialista em reparos Только ремонтные специалисты @@ -798,7 +798,7 @@ Anywhere - Irgentwo + Irgendwo Wszędzie Qualquer lugar Где угодно @@ -807,7 +807,7 @@ Repair Vehicle only - Repariere nur Fahrzeug + Nur Reperaturfahrzeug Przy pojazdach naprawczych Somente veículos de reparo Только у ремонтного транспорта @@ -815,7 +815,7 @@ Repair Facility only - Repariere nur Einrichtung + Nur Reperatureinrichtung Przy budynkach naprawczych Somente instalação de reparo Только у ремонтных сооружений @@ -823,7 +823,7 @@ Repair Facility or Vehicle - Repariere Einrichtung oder Fahrzeug + Reperatureinrichtung oder Reperaturfahrzeug Przy budynkach i pojazdach naprawczych Instalação e veículo de reparo Только у ремонтного транспорта или ремонтных сооружений @@ -849,7 +849,7 @@ List of unit names that will be classified as engineer, separated by commas. - Eine Aufzählung von Einheiten, die als Pionier gelten, getrennt durch Kommata. + Eine Aufzählung von Einheiten, die als Pionier gelten, und durch Kommata getrennt sind. Lista nazw jednostek, które są sklasyfikowane jako inżynierowie, oddzielone przecinkami. Lista de nomes de unidades que serão classificadas como engenheiros, separadas por vírgulas. Список имен юнитов, которые будут классифицированы как инженеры, разделенный запятыми. @@ -891,7 +891,7 @@ Specialist - Mechatroniker + Reparaturspezialist Inżynier Especialista Специалист @@ -974,7 +974,7 @@ List of objects that will be classified as repair Facility, separated by commas. - Eine Aufzählung von Objekten, die als Reperatureinrichtung gelten, getrennt durch Kommata + Eine Aufzählung von Objekten, die als Reperatureinrichtung gelten, und durch Kommata getrennt sind. Lista nazw budynków, które są sklasyfikowane jako budynki naprawcze, oddzielone przecinkami. Lista de objetos que serão classificados como instalações de reparo. separado por vírgulas. Список объектов, которые будут классифицированы как ремонтные, разделенный запятыми. @@ -1030,7 +1030,7 @@ List of objects that will get spare parts added, separated by commas. - Eine Aufzählung von Objekten, welche Ersatzteile beherbergen, getrennt durch Kommata + Eine Aufzählung von Objekten, welche Ersatzteile beherbergen, und durch Kommata getrennt sind. Lista obiektów, które otrzymają części zamienne, oddzielone przecinkiem. Lista de objetos que ganharão partes sobressalentes, dividos por vírgulas. Lista de los objetos que tendrán repuestos añadidos, separados por comas. diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml index 5000d8f42a..42bd14945f 100644 --- a/addons/respawn/stringtable.xml +++ b/addons/respawn/stringtable.xml @@ -222,7 +222,7 @@ Using this module in your mission will make it so any friendly fire kills will be displayed in form of a message in chat. - Dieses Modul zeigt jeden Gefallenen durch Eigenbeschuss, in Form einer Textnachricht, im Chat an. + Dieses Modul zeigt jeden Gefallenen durch Freundbeschuss, in Form einer Textnachricht, im Chat an. Użycie tego modułu na misji spowoduje wyświetlenie wiadomości na czacie w przypadku, kiedy zostanie popełniony friendly fire - wyświetlona zostanie wtedy wiadomość kto kogo zabił. Zobrazí zprávu v chatu v případě, když budete střílet na vlastní jednotky. Ve zprávě se zobrazí kdo na koho střílel, popř. kdo koho zabil. Usando este módulo em uma missão para exibir mensagens chat, no caso de quando você faz um fogo amigo - então a mensagem será exibida mostrando quem matou quem. diff --git a/addons/sitting/stringtable.xml b/addons/sitting/stringtable.xml index 270358181d..3dd6c3ef46 100644 --- a/addons/sitting/stringtable.xml +++ b/addons/sitting/stringtable.xml @@ -46,8 +46,8 @@ Сидение - This module allows you to disable the ability to sit on chairs and toilets. - Dieses Modul eröffnet die Möglichkeit sich auf Stühlen oder Toiletten hinzusetzen. + This module allows you to disable the ability to sit on chairs. + Dieses Modul eröffnet die Möglichkeit, sich auf Stühlen hinzusetzen. Este módulo permite que você desabilite a capacidade de sentar-se em cadeiras e banheiros. Moduł ten pozwala na włączenie lub wyłączenie możliwości siadania na krzesłach i toaletach. Tento modul dovoluje zakázat možnost sedět na židlých a toaletách. From af31d4356703c38ce4e5db2bde0338f32272dde8 Mon Sep 17 00:00:00 2001 From: bux578 Date: Mon, 7 Dec 2015 10:20:35 +0100 Subject: [PATCH 014/107] fix german typos --- addons/medical_menu/stringtable.xml | 11 ++++++----- addons/repair/stringtable.xml | 8 ++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index 24f4b9da32..c870d7e5b5 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -370,7 +370,7 @@ There are %2 %1 Open Wounds - Er hat %2 %1 offene Wunden + Er hat %2 offene Wunden (%1) %2 открытые раны %1 Hay %2 Heridas Abiertas %1 Il y a %2 %1 Blessure Ouverte @@ -379,7 +379,7 @@ There is 1 %1 Open Wound - Er hat 1 %1 offene Wunde + Er hat 1 offene Wunde (%1) Открытая рана %1 Hay 1 Herida Abierta %1 Il y a 1 blessure ouverte %1 @@ -397,7 +397,7 @@ There are %2 %1 Bandaged Wounds - Er hat %2 %1, verbundene Wunden + Er hat %2 verbundene Wunden (%1) %2 перевязанные раны %1 Hay %2 Heridas %1 Vendadas Il y a %2 %1 Blessure Bandée @@ -406,7 +406,7 @@ There is 1 %1 Bandaged Wound - Er hat 1 %1, verbundene Wunde + Er hat 1 verbundene Wunde (%1) 1 перевязанная рана %1 Hay 1 Herida Vendada %1 Il y a 1 %1 Blessure Bandée @@ -415,6 +415,7 @@ There is a partial %1 Bandaged wound + Er hat eine zum Teil verbundene Wunde (%1) Частично перевязанная рана %1 Hay una Herida parcial %1 Vendada Il y a %1 Blessure Partielment Bandée diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index e405814b6f..9e3b1e9ed1 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -167,7 +167,7 @@ At what locations can a vehicle be fully repaired? - Welche Fahrzeugteile können vollständig in Stand gesetzt werden? + Welche Fahrzeugteile können vollständig in Stand gesetzt werden? W jakich miejscach pojazd może zostać w pełni naprawiony? Em quais locais um veículo pode ser reparado por completo? В каких местах транспорт может быть полностью отремеонтирован? @@ -229,7 +229,7 @@ Display a notification whenever you repair a vehicle - Zeige eine Nachricht, wannimmer du ein Fahrzeug reparierst + Zeige eine Nachricht, wann immer du ein Fahrzeug reparierst Pokaż informację, kiedy wykonujesz czynności związane z naprawą pojazdu. Mostra uma notificação quando você repara um veículo Отображать оповещение каждый раз, когда вы ремонтируете транспорт @@ -1085,4 +1085,4 @@ Itens requeridos para remover/trocar rodas - \ No newline at end of file + From 821ccf5726befcf767263404da6feb853d6d5ffd Mon Sep 17 00:00:00 2001 From: bux578 Date: Mon, 7 Dec 2015 10:21:48 +0100 Subject: [PATCH 015/107] fix medical menu stringtable name --- addons/medical_menu/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/medical_menu/stringtable.xml b/addons/medical_menu/stringtable.xml index c870d7e5b5..8976665c0c 100644 --- a/addons/medical_menu/stringtable.xml +++ b/addons/medical_menu/stringtable.xml @@ -1,6 +1,6 @@ - - + + Medical Menu Sanitätsmenü From 05c56f73b55a23d44b050c0667cdd7e0eadd7134 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Mon, 7 Dec 2015 18:33:20 +0100 Subject: [PATCH 016/107] Change disable NVG with sights by default As discussed on Slack, we are changing the default behaviour infavor of excepted gameplay. --- addons/nightvision/ACE_Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/nightvision/ACE_Settings.hpp b/addons/nightvision/ACE_Settings.hpp index d6d52bab10..32dbab7fff 100644 --- a/addons/nightvision/ACE_Settings.hpp +++ b/addons/nightvision/ACE_Settings.hpp @@ -3,6 +3,6 @@ class ACE_Settings { displayName = CSTRING(DisableNVGsWithSights_DisplayName); description = CSTRING(DisableNVGsWithSights_description); typeName = "BOOL"; - value = 1; + value = 0; }; }; From cd68f9b32048f31b80aacebd60aa0c41bee3e5d4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 7 Dec 2015 13:54:41 -0600 Subject: [PATCH 017/107] Fix refuel unconc error - Man unloading for air --- addons/common/functions/fnc_unloadPersonLocal.sqf | 3 ++- addons/refuel/XEH_postInit.sqf | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index 67d104a9e4..88b5ffd40a 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -15,6 +15,7 @@ #define GROUP_SWITCH_ID QUOTE(FUNC(loadPerson)) params ["_unit", "_vehicle"]; +TRACE_2("params",_unit,_vehicle); private ["_validVehiclestate", "_emptyPos", "_loaded"]; @@ -30,7 +31,7 @@ if (_vehicle isKindOf "Ship") then { _emptyPos = (ASLToAGL getPosASL _vehicle) findEmptyPosition [0, 13, typeof _unit]; // TODO: if spot is underwater pick another spot. } else { if (_vehicle isKindOf "Air") then { - if (speed _vehicle > 1 || {isTouchingGround _vehicle}) then { + if (speed _vehicle > 1 || {!isTouchingGround _vehicle}) then { _validVehiclestate = false; }; diff --git a/addons/refuel/XEH_postInit.sqf b/addons/refuel/XEH_postInit.sqf index 682ebaf094..d823fcf039 100644 --- a/addons/refuel/XEH_postInit.sqf +++ b/addons/refuel/XEH_postInit.sqf @@ -1,3 +1,3 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleOnUnconscious)}] call EFUNC(common,addEventHandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventHandler); From 38bf869f07388203f028853fe516b3b68fd6c636 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 7 Dec 2015 14:07:03 -0600 Subject: [PATCH 018/107] Also Fix Rearm --- addons/rearm/XEH_postInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/rearm/XEH_postInit.sqf b/addons/rearm/XEH_postInit.sqf index 25a5d68523..607b768b15 100644 --- a/addons/rearm/XEH_postInit.sqf +++ b/addons/rearm/XEH_postInit.sqf @@ -1,4 +1,4 @@ #include "script_component.hpp" -["medical_onUnconscious", {_this call FUNC(handleOnUnconscious)}] call EFUNC(common,addEventHandler); +["medical_onUnconscious", {_this call FUNC(handleUnconscious)}] call EFUNC(common,addEventHandler); ["playerVehicleChanged", {params ["_unit"]; [_unit] call FUNC(dropAmmo)}] call EFUNC(common,addEventHandler); From 0599b35fc616d93835089012b672a230701569eb Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 8 Dec 2015 14:47:48 +0100 Subject: [PATCH 019/107] Bump version to 3.4.1 --- README.md | 4 ++-- addons/main/script_mod.hpp | 2 +- mod.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b179eaeea4..ade3c7a85d 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@

- ACE3 Version + ACE3 Version - + ACE3 Download diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 6a927ec534..91041e1f4c 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 4 -#define PATCHLVL 0 +#define PATCHLVL 1 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/mod.cpp b/mod.cpp index 4eff8e6d1e..f20926ece5 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.4.0"; +name = "Advanced Combat Environment 3.4.1"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.4.0"; +description = "ACE3 - Version 3.4.1"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From e964b2c13533a5bc6522698fb6f9f5879f52e92d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Dec 2015 20:31:40 -0600 Subject: [PATCH 020/107] Fix PostRepairDamage and toolkit consumtion setting Fix #2982 --- addons/repair/ACE_Repair.hpp | 6 +++++- addons/repair/ACE_Settings.hpp | 2 +- addons/repair/functions/fnc_getPostRepairDamage.sqf | 13 +++++++++---- addons/repair/functions/fnc_isEngineer.sqf | 2 +- addons/repair/functions/fnc_repair.sqf | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/addons/repair/ACE_Repair.hpp b/addons/repair/ACE_Repair.hpp index 251302a93a..9aa8fe7b22 100644 --- a/addons/repair/ACE_Repair.hpp +++ b/addons/repair/ACE_Repair.hpp @@ -34,10 +34,11 @@ class ACE_Repair { displayName = CSTRING(Repairing); // let's make empty string an auto generated string displayNameProgress = CSTRING(RepairingHitPoint); condition = QUOTE(call FUNC(canMiscRepair)); - requiredEngineer = 0; + requiredEngineer = QGVAR(engineerSetting_Repair); repairingTime = 15; callbackSuccess = QUOTE(call FUNC(doRepair)); items[] = {"ToolKit"}; + itemConsumed = QGVAR(consumeItem_ToolKit); claimObjects[] = {}; }; class RepairTrack: MiscRepair { @@ -47,6 +48,7 @@ class ACE_Repair { callbackSuccess = QUOTE(call FUNC(doRepairTrack)); requiredEngineer = QGVAR(engineerSetting_Wheel); claimObjects[] = {{"ACE_Track"}}; + itemConsumed = 0; }; class RemoveTrack: MiscRepair { displayName = CSTRING(RemoveTrack); @@ -54,6 +56,7 @@ class ACE_Repair { condition = QUOTE(call FUNC(canRemove)); callbackSuccess = QUOTE(call FUNC(doRemoveTrack)); requiredEngineer = QGVAR(engineerSetting_Wheel); + itemConsumed = 0; }; class ReplaceTrack: RemoveTrack { displayName = CSTRING(ReplaceTrack); @@ -71,6 +74,7 @@ class ACE_Repair { repairingTime = 30; condition = "damage _target > 0"; callbackSuccess = QUOTE(call FUNC(doFullRepair)); + itemConsumed = 0; }; }; }; diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp index 22e68ce3e9..c3c8daad16 100644 --- a/addons/repair/ACE_Settings.hpp +++ b/addons/repair/ACE_Settings.hpp @@ -41,7 +41,7 @@ class ACE_Settings { displayName = CSTRING(consumeItem_ToolKit_name); description = CSTRING(consumeItem_ToolKit_description); typeName = "SCALAR"; - value = 1; + value = 0; values[] = {ECSTRING(common,No), ECSTRING(common,Yes)}; category = ECSTRING(OptionsMenu,CategoryLogistics); }; diff --git a/addons/repair/functions/fnc_getPostRepairDamage.sqf b/addons/repair/functions/fnc_getPostRepairDamage.sqf index 36e4bf39ae..9388f4474d 100644 --- a/addons/repair/functions/fnc_getPostRepairDamage.sqf +++ b/addons/repair/functions/fnc_getPostRepairDamage.sqf @@ -17,10 +17,15 @@ params ["_unit"]; TRACE_1("params",_unit); -// TODO when near repair station, full repair? +//If in facility or near vehicle then complete repair of hitpoint: if (([_unit] call FUNC(isInRepairFacility) || {[_unit] call FUNC(isNearRepairVehicle)})) exitWith {0}; -if ([_unit, GVAR(engineerSetting_Repair) + 1] call FUNC(isEngineer)) exitWith {GVAR(repairDamageThreshold_Engineer)}; -if ([_unit, GVAR(engineerSetting_Repair)] call FUNC(isEngineer)) exitWith {GVAR(repairDamageThreshold)}; -0.3; +private _class = _unit getVariable ["ACE_IsEngineer", getNumber (configFile >> "CfgVehicles" >> typeOf _unit >> "engineer")]; +//If specialist or more qualified than min, then use engineer threshold: +if ((_class isEqualTo 2) || {[_unit, GVAR(engineerSetting_Repair) + 1] call FUNC(isEngineer)}) exitWith { + (GVAR(repairDamageThreshold_Engineer) min GVAR(repairDamageThreshold)) +}; + +//Return default threshold: +GVAR(repairDamageThreshold) diff --git a/addons/repair/functions/fnc_isEngineer.sqf b/addons/repair/functions/fnc_isEngineer.sqf index 485a300260..d07c12af64 100644 --- a/addons/repair/functions/fnc_isEngineer.sqf +++ b/addons/repair/functions/fnc_isEngineer.sqf @@ -26,4 +26,4 @@ _class = _unit getVariable ["ACE_IsEngineer", getNumber (configFile >> "CfgVehic // We cannot move this function to common because we require the GVAR(engineerSetting_Repair), which only makes sense to include in the repair module. if (_class isEqualType false) then {_class = [0, 1] select _class}; -_class >= (_engineerN min GVAR(engineerSetting_Repair)); +_class >= _engineerN; diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf index 04dfe523fa..40e5b3bfaa 100644 --- a/addons/repair/functions/fnc_repair.sqf +++ b/addons/repair/functions/fnc_repair.sqf @@ -128,7 +128,7 @@ _consumeItems = if (isNumber (_config >> "itemConsumed")) then { _usersOfItems = []; if (_consumeItems > 0) then { - _usersOfItems = ([_caller, _target, _items] call FUNC(useItems)) select 1; + _usersOfItems = ([_caller, _items] call FUNC(useItems)) select 1; }; // Parse the config for the progress callback From 0eed4799afcf1b0e877f9c2b6691a7d6c4aae579 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Dec 2015 21:31:03 -0600 Subject: [PATCH 021/107] MicroDagr - Prevent Home Key being blocked Fix #2974 --- addons/microdagr/functions/fnc_updateDisplay.sqf | 6 ++++++ addons/microdagr/gui_controls.hpp | 2 +- addons/microdagr/script_component.hpp | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf index 826ea55e6c..4b609085a8 100644 --- a/addons/microdagr/functions/fnc_updateDisplay.sqf +++ b/addons/microdagr/functions/fnc_updateDisplay.sqf @@ -171,6 +171,9 @@ case (APP_MODE_WAYPOINTS): { _currentIndex = (_currentIndex max 0) min (count _waypoints); _wpListBox lbSetCurSel _currentIndex; + + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked + ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; case (APP_MODE_SETUP): { @@ -190,5 +193,8 @@ case (APP_MODE_SETUP): { } else { _settingListBox lbSetTextRight [1, (localize LSTRING(settingOff))]; }; + + //Reset focus to a dummy ctrl (top button), otherwise HOME/POS1 key goes to top of listBox and has keybind blocked + ctrlSetFocus (_display displayCtrl IDC_TOPMENUBUTTON); }; }; diff --git a/addons/microdagr/gui_controls.hpp b/addons/microdagr/gui_controls.hpp index 270a3325bd..a8fbb8f83f 100644 --- a/addons/microdagr/gui_controls.hpp +++ b/addons/microdagr/gui_controls.hpp @@ -140,7 +140,7 @@ class controlsBackground { class controls { class TopMenuClick: GVAR(RscActiveTextPicture) { - idc = -1; + idc = IDC_TOPMENUBUTTON; text = "#(argb,8,8,3)color(0,0,0,0)"; x = X_PART(0); y = Y_PART(0); diff --git a/addons/microdagr/script_component.hpp b/addons/microdagr/script_component.hpp index 72c5c125bc..0710649aaa 100644 --- a/addons/microdagr/script_component.hpp +++ b/addons/microdagr/script_component.hpp @@ -54,6 +54,7 @@ #define IDC_MODEDISPLAY_TARGETRANGENUM 144023 #define IDC_MODEDISPLAY_TARGETELEVATIONNUM 144024 #define IDC_MODEDISPLAY_TARGETNAME 144025 +#define IDC_TOPMENUBUTTON 144030 #define IDC_MODECOMPASS 144100 #define IDC_MODECOMPASS_HEADING 144110 From 3d560108a31a2cdfe6107def5d68a45300c78526 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 8 Dec 2015 23:08:09 -0600 Subject: [PATCH 022/107] Setting For Gestures - Fix BI* gestures --- addons/gestures/ACE_Settings.hpp | 11 +++++++++++ addons/gestures/CfgVehicles.hpp | 2 +- addons/gestures/config.cpp | 1 + addons/gestures/functions/fnc_playSignal.sqf | 7 ++++++- addons/gestures/key.sqf | 10 +++++++--- addons/gestures/stringtable.xml | 12 ++++++++++++ 6 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 addons/gestures/ACE_Settings.hpp diff --git a/addons/gestures/ACE_Settings.hpp b/addons/gestures/ACE_Settings.hpp new file mode 100644 index 0000000000..a9e77807c0 --- /dev/null +++ b/addons/gestures/ACE_Settings.hpp @@ -0,0 +1,11 @@ +class ACE_Settings { + class GVAR(showOnInteractionMenu) { + value = 2; + typeName = "SCALAR"; + isClientSettable = 1; + category = ECSTRING(interact_menu,Category_InteractionMenu); + displayName = CSTRING(showOnInteractionMenu_displayName); + description = CSTRING(showOnInteractionMenu_description); + values[] = {"$STR_A3_OPTIONS_DISABLED", CSTRING(justKeybinds), CSTRING(keysAndInteractionMenu)}; + }; +}; diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 019cffdb45..ffc20c0588 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -5,7 +5,7 @@ class CfgVehicles { class ACE_SelfActions { class ADDON { displayName = CSTRING(Gestures); - condition = QUOTE(canStand _target && GVAR(ReloadMutex)); + condition = QUOTE((canStand _target) && GVAR(ReloadMutex) && {GVAR(showOnInteractionMenu) == 2}); statement = ""; showDisabled = 1; priority = 3.5; diff --git a/addons/gestures/config.cpp b/addons/gestures/config.cpp index 6a3fa402d0..39cb8f0951 100644 --- a/addons/gestures/config.cpp +++ b/addons/gestures/config.cpp @@ -12,6 +12,7 @@ class CfgPatches { }; }; +#include "ACE_Settings.hpp" #include "CfgMovesBasic.hpp" #include "CfgEventHandlers.hpp" #include "CfgVehicles.hpp" diff --git a/addons/gestures/functions/fnc_playSignal.sqf b/addons/gestures/functions/fnc_playSignal.sqf index b8a218f565..feb79f5370 100644 --- a/addons/gestures/functions/fnc_playSignal.sqf +++ b/addons/gestures/functions/fnc_playSignal.sqf @@ -18,10 +18,14 @@ TRACE_1("params",_this); if (!GVAR(ReloadMutex)) exitWith {false}; +if (GVAR(showOnInteractionMenu) == 0) exitWith {false}; +if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false}; -private _gesture = if (_this select [0,2] == "BI") then { +private _gesture = if ((_this select [0,2]) == "BI") then { + //If it starts with BI, just strip off the leading BI and use it directly _this select [2] } else { + //Adjust gesture based on stance: if (((animationState ACE_player) select [0, 12]) in ["amovpercmstp", "amovpercmwlk", "amovpercmtac"] && weaponLowered ACE_player) then { format ["%1StandLowered", _this] } else { @@ -29,5 +33,6 @@ private _gesture = if (_this select [0,2] == "BI") then { }; }; +TRACE_1("playing gesture",_gesture); ACE_player playAction _gesture; true diff --git a/addons/gestures/key.sqf b/addons/gestures/key.sqf index 125463d4d1..54d6d50c0c 100644 --- a/addons/gestures/key.sqf +++ b/addons/gestures/key.sqf @@ -3,11 +3,15 @@ { _x params ["_currentName","_key"]; - if (_currentName select [0,1] == "BI") then { - _currentName = _currentName select [2]; + private _signalName = format [QGVAR(%1), _currentName]; + if (_currentName select [0,2] == "BI") then { + //Don't add "ace_gestures_" prefix to BI gestures + _signalName = _currentName; }; - private _code = (compile format [QUOTE(QUOTE(QGVAR(%1)) call FUNC(playSignal);), _currentName]); + private _code = (compile format [QUOTE('%1' call FUNC(playSignal);), _signalName]); + + TRACE_4("Adding KeyBind",_currentName,_signalName,_code,_key); [ "ACE3 Gestures", diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index cc9b776cd1..e9d3cd060d 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -194,5 +194,17 @@ Atacar Attaccare + + Show Gestures On Interaction Menu + + + Show the gestures on the self interaction menu, or just keybinds, or disable completely + + + Just Keybinds + + + KeyBinds + Interaction Menu + \ No newline at end of file From 3ae7cd15bde1f64cb054c8e46f1e9122c62af78f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 9 Dec 2015 12:27:47 -0600 Subject: [PATCH 023/107] cleanup stringtable phrasing --- addons/gestures/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index e9d3cd060d..05bb087c88 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -198,13 +198,13 @@ Show Gestures On Interaction Menu - Show the gestures on the self interaction menu, or just keybinds, or disable completely + Show gestures on the self interaction menu, or just use keybinds, or disable completely Just Keybinds - KeyBinds + Interaction Menu + Keybinds + Interaction Menu \ No newline at end of file From 6f0568c370eca37354dea2f1e642f56aac41467c Mon Sep 17 00:00:00 2001 From: havena Date: Wed, 9 Dec 2015 20:18:15 +0100 Subject: [PATCH 024/107] fix Unexpected stringtable format Unexpected stringtable format inside --- addons/common/stringtable.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 63a70f60ce..6d935f27a5 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -528,7 +528,7 @@ Warn (permanent) Ostrzeżenie (permanentne) Avisar (permanente) - Verwarnen (permanent)/German> + Verwarnen (permanent) Upozornit (permanentně) Avisar (permanente) Avertir (permanent) @@ -764,4 +764,4 @@ ACE3 Vehículos - \ No newline at end of file + From a08cf691493072abf84f9fb450cad7eac34e576f Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 9 Dec 2015 22:56:14 +0100 Subject: [PATCH 025/107] tweak size of laserpointer, fix #2975 --- addons/laserpointer/functions/fnc_drawLaserpoint.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf index 29befe96cd..3ea9ed158b 100644 --- a/addons/laserpointer/functions/fnc_drawLaserpoint.sqf +++ b/addons/laserpointer/functions/fnc_drawLaserpoint.sqf @@ -81,7 +81,7 @@ _camPos = AGLToASL _camPos; if (terrainIntersectASL [_camPos, _pL2]) exitWith {}; if (lineIntersects [_camPos, _pL2]) exitWith {}; -private _size = 2 * (_range - (positionCameraToWorld [0,0,0] vectorDistance _pL)) / _range; +private _size = 2 * sqrt (1 / _distance) * (call EFUNC(common,getZoom)); drawIcon3D [ format ["\a3\weapons_f\acc\data\collimdot_%1_ca.paa", ["red", "green"] select _isGreen], From 7748131e73f5b3c8b5a1b8786e12d007339b36a8 Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 10 Dec 2015 15:32:31 +0100 Subject: [PATCH 026/107] code cleanup markers --- addons/markers/CfgEventHandlers.hpp | 1 + addons/markers/InsertMarker.hpp | 32 +-- addons/markers/XEH_postInit.sqf | 7 +- addons/markers/XEH_preInit.sqf | 37 +-- .../functions/fnc_getEnabledChannels.sqf | 54 +++++ .../functions/fnc_initInsertMarker.sqf | 217 ++++++++++-------- addons/markers/functions/fnc_mapDrawEH.sqf | 40 ++-- .../functions/fnc_onLBSelChangedChannel.sqf | 21 ++ .../functions/fnc_onLBSelChangedColor.sqf | 8 +- .../functions/fnc_onLBSelChangedShape.sqf | 8 +- .../functions/fnc_onSliderPosChangedAngle.sqf | 5 +- addons/markers/functions/fnc_placeMarker.sqf | 13 +- addons/markers/functions/fnc_setMarkerJIP.sqf | 27 ++- .../functions/fnc_setMarkerNetwork.sqf | 29 ++- addons/markers/script_component.hpp | 11 +- 15 files changed, 303 insertions(+), 207 deletions(-) create mode 100644 addons/markers/functions/fnc_getEnabledChannels.sqf create mode 100644 addons/markers/functions/fnc_onLBSelChangedChannel.sqf diff --git a/addons/markers/CfgEventHandlers.hpp b/addons/markers/CfgEventHandlers.hpp index e75956f440..0cd959a047 100644 --- a/addons/markers/CfgEventHandlers.hpp +++ b/addons/markers/CfgEventHandlers.hpp @@ -1,3 +1,4 @@ + class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); diff --git a/addons/markers/InsertMarker.hpp b/addons/markers/InsertMarker.hpp index 82712fa8f1..5d7cc987e2 100644 --- a/addons/markers/InsertMarker.hpp +++ b/addons/markers/InsertMarker.hpp @@ -1,3 +1,4 @@ + class RscPicture; class RscText; class RscStructuredText; @@ -12,21 +13,9 @@ class RscXSliderH; class RscDisplayInsertMarker { onLoad = QUOTE(_this call DFUNC(initInsertMarker);); onUnload = QUOTE(_this call DFUNC(placeMarker);); - // idd = 54; movingEnable = 1; - class controlsBackground { - // class RscText_1000: RscText {idc = 1000;}; - }; - class controls { - // class ButtonMenuOK: RscButtonMenuOK {idc = 1;}; - // class ButtonMenuCancel: RscButtonMenuCancel {idc = 2;}; - // class Title: RscText {idc = 1001;}; - // class Description: RscStructuredText {idc = 1100;}; - // class DescriptionChannel: RscStructuredText {idc = 1101;}; - // class MarkerPicture: RscPicture {idc = 102;}; - // class MarkerText: RscEdit {idc = 101;}; - // class MarkerChannel: RscCombo {idc = 103;}; + class controls { class MarkerShape: RscCombo { idc = 1210; }; @@ -39,22 +28,5 @@ class RscDisplayInsertMarker { class MarkerAngleText: RscText { idc = 1221; }; - - /*class SizeX: RscEdit { - idc = 1200; - text = "10"; - x = "14 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - }; - class SizeY: RscEdit { - idc = 1201; - text = "10"; - x = "19 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX)"; - y = "12.5 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))"; - w = "5 * ( ((safezoneW / safezoneH) min 1.2) / 40)"; - h = "1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)"; - };*/ }; }; diff --git a/addons/markers/XEH_postInit.sqf b/addons/markers/XEH_postInit.sqf index ecb4d579fe..f7bf35093c 100644 --- a/addons/markers/XEH_postInit.sqf +++ b/addons/markers/XEH_postInit.sqf @@ -9,14 +9,13 @@ // request marker data for JIP if (isMultiplayer && {!isServer} && {hasInterface}) then { - private "_logic"; - _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; + private _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; + [QGVAR(sendMarkersJIP), [_logic]] call EFUNC(common,serverEvent); }; - GVAR(mapDisplaysWithDrawEHs) = []; GVAR(currentMarkerPosition) = []; GVAR(currentMarkerAngle) = 0; GVAR(currentMarkerColorConfigName) = ""; -GVAR(currentMarkerConfigName) = ""; \ No newline at end of file +GVAR(currentMarkerConfigName) = ""; diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf index 264658aa81..477632d225 100644 --- a/addons/markers/XEH_preInit.sqf +++ b/addons/markers/XEH_preInit.sqf @@ -2,8 +2,10 @@ ADDON = false; +PREP(getEnabledChannels); PREP(initInsertMarker); PREP(mapDrawEH); +PREP(onLBSelChangedChannel); PREP(onLBSelChangedColor); PREP(onLBSelChangedShape); PREP(onSliderPosChangedAngle); @@ -12,19 +14,19 @@ PREP(sendMarkersJIP); PREP(setMarkerJIP); PREP(setMarkerNetwork); -private ["_config", "_marker", "_a", "_scope", "_icon", "_rgba", "_name"]; - // init marker types if (isNil QGVAR(MarkersCache)) then { - _config = configfile >> "CfgMarkers"; GVAR(MarkersCache) = []; + private _config = configfile >> "CfgMarkers"; + for "_a" from 0 to (count _config - 1) do { - _marker = _config select _a; - _scope = getNumber (_marker >> "scope"); - if (_scope == 2) then { - _name = getText (_marker >> "name"); - _icon = getText (_marker >> "icon"); + private _marker = _config select _a; + + if (getNumber (_marker >> "scope") == 2) then { + private _name = getText (_marker >> "name"); + private _icon = getText (_marker >> "icon"); + GVAR(MarkersCache) pushBack [_name, _a, _icon]; }; }; @@ -32,22 +34,25 @@ if (isNil QGVAR(MarkersCache)) then { // init marker colors if (isNil QGVAR(MarkerColorsCache)) then { - _config = configfile >> "CfgMarkerColors"; GVAR(MarkerColorsCache) = []; + private _config = configfile >> "CfgMarkerColors"; + for "_a" from 0 to (count _config - 1) do { - _marker = _config select _a; - _scope = getNumber (_marker >> "scope"); - if (_scope == 2) then { - _name = getText (_marker >> "name"); - _rgba = getArray (_marker >> "color"); + private _marker = _config select _a; + + if (getNumber (_marker >> "scope") == 2) then { + private _name = getText (_marker >> "name"); + private _rgba = getArray (_marker >> "color"); + { - if (!( _x isEqualType 0)) then { + if !( _x isEqualType 0) then { _rgba set [_forEachIndex, call compile _x]; }; } forEach _rgba; + _rgba params ["_red", "_green", "_blue", "_alpha"]; - _icon = format ["#(argb,8,8,3)color(%1,%2,%3,%4)", _red, _green, _blue, _alpha]; + private _icon = format ["#(argb,8,8,3)color(%1,%2,%3,%4)", _red, _green, _blue, _alpha]; GVAR(MarkerColorsCache) pushBack [_name, _a, _icon]; }; diff --git a/addons/markers/functions/fnc_getEnabledChannels.sqf b/addons/markers/functions/fnc_getEnabledChannels.sqf new file mode 100644 index 0000000000..9a64ff06d4 --- /dev/null +++ b/addons/markers/functions/fnc_getEnabledChannels.sqf @@ -0,0 +1,54 @@ +/* + * Author: commy2 + * Return enabled channels. + * + * Arguments: + * 0: false - use channel id, true - use localized channel names (default: false) + * + * Return Value: + * Enabled Channels + * + * Public: No + */ +#include "script_component.hpp" + +params [["_localize", false, [false]]]; + +private _currentChannel = currentChannel; +private _enabledChannels = []; + +if (_localize) then { + if (setCurrentChannel 0) then { + _enabledChannels pushBack localize "str_channel_global"; + }; + + if (setCurrentChannel 1) then { + _enabledChannels pushBack localize "str_channel_side"; + }; + + if (setCurrentChannel 2) then { + _enabledChannels pushBack localize "str_channel_command"; + }; + + if (setCurrentChannel 3) then { + _enabledChannels pushBack localize "str_channel_group"; + }; + + if (setCurrentChannel 4) then { + _enabledChannels pushBack localize "str_channel_vehicle"; + }; + + if (setCurrentChannel 5) then { + _enabledChannels pushBack localize "str_channel_direct"; + }; +} else { + for "_i" from 0 to 5 do { + if (setCurrentChannel _i) then { + _enabledChannels pushBack _i; + }; + }; +}; + +setCurrentChannel _currentChannel; + +_enabledChannels diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf index 07e2bc46c4..08c078c4f5 100644 --- a/addons/markers/functions/fnc_initInsertMarker.sqf +++ b/addons/markers/functions/fnc_initInsertMarker.sqf @@ -16,53 +16,61 @@ */ #include "script_component.hpp" -#define BORDER 0.005 +#define BORDER 0.005 [{ - private ["_text", "_picture", "_channel", "_buttonOK", "_buttonCancel", "_description", "_title", "_descriptionChannel", "_sizeX", "_sizeY", "_aceShapeLB", "_aceColorLB", "_aceAngleSlider", "_aceAngleSliderText", "_mapIDD", "_pos", "_offsetButtons", "_buttonOk", "_curSelShape", "_curSelColor", "_curSelAngle"]; - disableserialization; params ["_display"]; TRACE_1("params",_display); //Can't place markers when can't interact - if (!([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith))) exitWith { + if !([ACE_player, objNull, ["notOnMap", "isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith { _display closeDisplay 2; //emulate "Cancel" button }; //BIS Controls: - _text = _display displayctrl 101; - _picture = _display displayctrl 102; - _channel = _display displayctrl 103; - _buttonOK = _display displayctrl 1; - _buttonCancel = _display displayctrl 2; - _description = _display displayctrl 1100; - _title = _display displayctrl 1001; - _descriptionChannel = _display displayctrl 1101; + private _text = _display displayctrl 101; + private _picture = _display displayctrl 102; + private _channel = _display displayctrl 103; + private _buttonOK = _display displayctrl 1; + private _buttonCancel = _display displayctrl 2; + private _description = _display displayctrl 1100; + private _title = _display displayctrl 1001; + private _descriptionChannel = _display displayctrl 1101; //ACE Controls: // _sizeX = _display displayctrl 1200; // _sizeY = _display displayctrl 1201; - _aceShapeLB = _display displayctrl 1210; - _aceColorLB = _display displayctrl 1211; - _aceAngleSlider = _display displayctrl 1220; - _aceAngleSliderText = _display displayctrl 1221; + private _aceShapeLB = _display displayctrl 1210; + private _aceColorLB = _display displayctrl 1211; + private _aceAngleSlider = _display displayctrl 1220; + private _aceAngleSliderText = _display displayctrl 1221; + //////////////////// + // Install MapDrawEH on current map + private _mapIDD = -1; - //Install MapDrawEH on current map - _mapIDD = -1; { - if (!isNull (findDisplay _x)) exitWith {_mapIDD = _x}; - } forEach [12, 37, 52, 53, 160]; - if (_mapIDD == -1) exitWith {ERROR("No Map?");}; - if (!(_mapIDD in GVAR(mapDisplaysWithDrawEHs))) then { - GVAR(mapDisplaysWithDrawEHs) pushBack _mapIDD; - ((finddisplay _mapIDD) displayctrl 51) ctrlAddEventHandler ["Draw", {_this call FUNC(mapDrawEH)}]; + if (!isNull (findDisplay _x)) exitWith { + _mapIDD = _x; + }; + false + } count [12, 37, 52, 53, 160]; + + if (_mapIDD == -1) exitWith { + ERROR("No Map?"); }; - //Calculate center position of the marker placement ctrl - _pos = ctrlPosition _picture; + if !(_mapIDD in GVAR(mapDisplaysWithDrawEHs)) then { + GVAR(mapDisplaysWithDrawEHs) pushBack _mapIDD; + ((finddisplay _mapIDD) displayctrl 51) ctrlAddEventHandler ["Draw", {_this call FUNC(mapDrawEH)}]; // @todo check if persistent + }; + + //////////////////// + // Calculate center position of the marker placement ctrl + private _pos = ctrlPosition _picture; _pos = [(_pos select 0) + (_pos select 2) / 2, (_pos select 1) + (_pos select 3) / 2]; + GVAR(currentMarkerPosition) = ((findDisplay _mapIDD) displayCtrl 51) ctrlMapScreenToWorld _pos; //Hide the bis picture: @@ -77,98 +85,116 @@ //--- Background _pos = ctrlposition _text; - _pos params ["_posX", "_posY", "_posW", "_posH"]; + _pos params ["_posX", "_posY", "_posW", "_posH"]; _posX = _posX + 0.01; _posY = _posY min ((safeZoneH + safeZoneY) - (8 * _posH + 8 * BORDER)); //prevent buttons being placed below bottom edge of screen - _pos set [0,_posX]; - _pos set [1,_posY]; - _text ctrlsetposition _pos; - _text ctrlcommit 0; + _pos set [0, _posX]; + _pos set [1, _posY]; + _text ctrlSetPosition _pos; + _text ctrlCommit 0; //--- Title - _pos set [1,_posY - 2*_posH - BORDER]; - _pos set [3,_posH]; - _title ctrlsetposition _pos; - _title ctrlcommit 0; + _pos set [1, _posY - 2 * _posH - BORDER]; + _pos set [3, _posH]; + _title ctrlSetPosition _pos; + _title ctrlCommit 0; //--- Description - _pos set [1,_posY - 1*_posH]; - _pos set [3,6*_posH + 6 * BORDER]; - _description ctrlenable false; - _description ctrlsetposition _pos; - _description ctrlsetstructuredtext parsetext format ["%1", (localize "str_lib_label_description")]; - _description ctrlcommit 0; + _pos set [1, _posY - 1 * _posH]; + _pos set [3,6 * _posH + 6 * BORDER]; + _description ctrlEnable false; + _description ctrlSetPosition _pos; + _description ctrlSetStructuredText parseText format ["%1", localize "str_lib_label_description"]; + _description ctrlCommit 0; //--- Shape - _pos set [1,_posY + 1 * _posH + 2 * BORDER]; - _pos set [2,_posW]; - _pos set [3,_posH]; - _aceShapeLB ctrlsetposition _pos; - _aceShapeLB ctrlcommit 0; + _pos set [1, _posY + 1 * _posH + 2 * BORDER]; + _pos set [2, _posW]; + _pos set [3, _posH]; + _aceShapeLB ctrlSetPosition _pos; + _aceShapeLB ctrlCommit 0; //--- Color - _pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _pos set [2,_posW]; - _aceColorLB ctrlsetposition _pos; - _aceColorLB ctrlcommit 0; + _pos set [1, _posY + 2 * _posH + 3 * BORDER]; + _pos set [2, _posW]; + _aceColorLB ctrlSetPosition _pos; + _aceColorLB ctrlCommit 0; //--- Angle - _pos set [1,_posY + 3 * _posH + 4 * BORDER]; - _pos set [2,_posW]; - _aceAngleSlider ctrlsetposition _pos; - _aceAngleSlider ctrlcommit 0; + _pos set [1, _posY + 3 * _posH + 4 * BORDER]; + _pos set [2, _posW]; + _aceAngleSlider ctrlSetPosition _pos; + _aceAngleSlider ctrlCommit 0; //--- Angle Text - _pos set [1,_posY + 4 * _posH + 5 * BORDER]; - _pos set [2,_posW]; - _aceAngleSliderText ctrlsetposition _pos; - _aceAngleSliderText ctrlcommit 0; + _pos set [1, _posY + 4 * _posH + 5 * BORDER]; + _pos set [2, _posW]; + _aceAngleSliderText ctrlSetPosition _pos; + _aceAngleSliderText ctrlCommit 0; + + private _offsetButtons = 0; - _offsetButtons = 0; if (isMultiplayer) then { _pos set [1,_posY + 5 * _posH + 7 * BORDER]; _pos set [3,_posH]; - _descriptionChannel ctrlsetstructuredtext parsetext format ["%1", (localize "str_a3_cfgvehicles_modulerespawnposition_f_arguments_marker_0") + ":"]; - _descriptionChannel ctrlsetposition _pos; - _descriptionChannel ctrlcommit 0; + _descriptionChannel ctrlSetStructuredText parseText format ["%1:", localize "str_a3_cfgvehicles_modulerespawnposition_f_arguments_marker_0"]; + _descriptionChannel ctrlSetPosition _pos; + _descriptionChannel ctrlCommit 0; _pos set [1,_posY + 6 * _posH + 7 * BORDER]; _pos set [3,_posH]; - _channel ctrlsetposition _pos; - _channel ctrlcommit 0; + _channel ctrlSetPosition _pos; + _channel ctrlCommit 0; + + // channels are added by engine and not script. we have to manually delete them. requires channel names to be unique? + private _enabledChannels = true call FUNC(getEnabledChannels); + private _i = 0; + + while {_i < lbSize _channel} do { + private _channelName = _channel lbText _i; + + // _enabledChannels can not include custom channels names. Therefore also check if it's a custom one. Blame BI if the unit should not access the channel. + if (_channelName in _enabledChannels || {!(_channelName in CHANNEL_NAMES)}) then { + _i = _i + 1; + } else { + _channel lbDelete _i; + }; + }; + + private _currentChannelName = CHANNEL_NAMES param [currentChannel, localize "str_channel_group"]; + + // select current channel in list box, must be done after lbDelete + for "_j" from 0 to (lbSize _channel - 1) do { + if (_channel lbText _j == _currentChannelName) then { + _channel lbSetCurSel _j; + }; + }; + + _channel ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedChannel)}]; + _offsetButtons = 7 * _posH + 8 * BORDER; } else { - _descriptionChannel ctrlshow false; - _channel ctrlshow false; + _descriptionChannel ctrlShow false; + _channel ctrlShow false; _offsetButtons = 5 * _posH + 7 * BORDER; }; //--- ButtonOK - _pos set [1,_posY + _offsetButtons]; - _pos set [2,_posW / 2 - BORDER]; - _pos set [3,_posH]; - _buttonOk ctrlsetposition _pos; - _buttonOk ctrlcommit 0; + _pos set [1, _posY + _offsetButtons]; + _pos set [2, _posW / 2 - BORDER]; + _pos set [3, _posH]; + _buttonOk ctrlSetPosition _pos; + _buttonOk ctrlCommit 0; //--- ButtonCancel - _pos set [0,_posX + _posW / 2]; - _pos set [1,_posY + _offsetButtons]; - _pos set [2,_posW / 2]; - _pos set [3,_posH]; - _buttonCancel ctrlsetposition _pos; - _buttonCancel ctrlcommit 0; - - //--- PositionX - /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _sizeX ctrlsetposition _pos; - _sizeX ctrlcommit 0;*/ - - //--- PositionY - /*_pos set [1,_posY + 2 * _posH + 3 * BORDER]; - _sizeY ctrlsetposition _pos; - _sizeY ctrlcommit 0;*/ - + _pos set [0, _posX + _posW / 2]; + _pos set [1, _posY + _offsetButtons]; + _pos set [2, _posW / 2]; + _pos set [3, _posH]; + _buttonCancel ctrlSetPosition _pos; + _buttonCancel ctrlCommit 0; + //////////////////// // init marker shape lb lbClear _aceShapeLB; { @@ -177,14 +203,15 @@ _aceShapeLB lbSetValue [_forEachIndex, _set]; _aceShapeLB lbSetPicture [_forEachIndex, _pic]; } forEach GVAR(MarkersCache); - _curSelShape = GETGVAR(curSelMarkerShape,0); + + private _curSelShape = GETGVAR(curSelMarkerShape,0); _aceShapeLB lbSetCurSel _curSelShape; //Update now and add eventHandler: [_aceShapeLB, _curSelShape] call FUNC(onLBSelChangedShape); _aceShapeLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedShape)}]; - + //////////////////// // init marker color lb lbClear _aceColorLB; { @@ -193,20 +220,22 @@ _aceColorLB lbSetValue [_forEachIndex, _set]; _aceColorLB lbSetPicture [_forEachIndex, _pic]; } forEach GVAR(MarkerColorsCache); - _curSelColor = GETGVAR(curSelMarkerColor,0); + + private _curSelColor = GETGVAR(curSelMarkerColor,0); _aceColorLB lbSetCurSel _curSelColor; //Update now and add eventHandler: [_aceColorLB, _curSelColor] call FUNC(onLBSelChangedColor); _aceColorLB ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChangedColor)}]; - + //////////////////// // init marker angle slider _aceAngleSlider sliderSetRange [-180, 180]; - _curSelAngle = GETGVAR(currentMarkerAngle,0); + + private _curSelAngle = GETGVAR(currentMarkerAngle,0); _aceAngleSlider sliderSetPosition _curSelAngle; + //Update now and add eventHandler: [_aceAngleSlider, _curSelAngle] call FUNC(onSliderPosChangedAngle); _aceAngleSlider ctrlAddEventHandler ["SliderPosChanged", {_this call FUNC(onSliderPosChangedAngle)}]; - }, _this] call EFUNC(common,execNextFrame); diff --git a/addons/markers/functions/fnc_mapDrawEH.sqf b/addons/markers/functions/fnc_mapDrawEH.sqf index 05ab4f1ed4..7197c90cc7 100644 --- a/addons/markers/functions/fnc_mapDrawEH.sqf +++ b/addons/markers/functions/fnc_mapDrawEH.sqf @@ -15,32 +15,42 @@ */ #include "script_component.hpp" -private ["_sizeX", "_sizeY", "_textureConfig", "_texture", "_markerSize", "_markerShadow", "_colorConfig", "_drawColor"]; - params ["_theMap"]; // TRACE_1("params",_theMap); //Only show if marker place is open: -if (isNull (findDisplay 54)) exitWith {}; +if (isNull findDisplay 54) exitWith {}; //Error checking: -if ((GVAR(currentMarkerConfigName) == "") || {GVAR(currentMarkerColorConfigName) == ""} || {GVAR(currentMarkerPosition) isEqualTo []}) exitWith {ERROR("Bad Data");}; +if (GVAR(currentMarkerConfigName) == "" || {GVAR(currentMarkerColorConfigName) == ""} || {GVAR(currentMarkerPosition) isEqualTo []}) exitWith { + ERROR("Bad Data"); +}; -_sizeX = 1; -_sizeY = 1; +private _sizeX = 1; +private _sizeY = 1; -_textureConfig = configFile >> "CfgMarkers" >> GVAR(currentMarkerConfigName); -_texture = getText (_textureConfig >> "icon"); -_markerSize = getNumber (_textureConfig >> "size"); -_markerShadow = getNumber (_textureConfig >> "shadow"); -_colorConfig = (configFile >> "CfgMarkerColors" >> GVAR(currentMarkerColorConfigName)); -_drawColor = getArray (_colorConfig >> "color"); +private _textureConfig = configFile >> "CfgMarkers" >> GVAR(currentMarkerConfigName); +private _texture = getText (_textureConfig >> "icon"); +private _markerSize = getNumber (_textureConfig >> "size"); +private _markerShadow = getNumber (_textureConfig >> "shadow"); +private _colorConfig = (configFile >> "CfgMarkerColors" >> GVAR(currentMarkerColorConfigName)); +private _drawColor = getArray (_colorConfig >> "color"); //Convert possible code into numbers { if (_x isEqualType "") then { - _drawColor set [_forEachIndex, (call compile _x)]; + _drawColor set [_forEachIndex, call compile _x]; }; } forEach _drawColor; -_drawColor set [3, ((_drawColor select 3) * 0.875)]; //Arma adds a slight transparency -_theMap drawIcon [_texture, _drawColor, GVAR(currentMarkerPosition), (_sizeX * _markerSize), (_sizeY * _markerSize), GVAR(currentMarkerAngle), "", _markerShadow]; +_drawColor set [3, (_drawColor select 3) * 0.875]; //Arma adds a slight transparency + +_theMap drawIcon [ + _texture, + _drawColor, + GVAR(currentMarkerPosition), + _sizeX * _markerSize, + _sizeY * _markerSize, + GVAR(currentMarkerAngle), + "", + _markerShadow +]; diff --git a/addons/markers/functions/fnc_onLBSelChangedChannel.sqf b/addons/markers/functions/fnc_onLBSelChangedChannel.sqf new file mode 100644 index 0000000000..f63c4e5cf4 --- /dev/null +++ b/addons/markers/functions/fnc_onLBSelChangedChannel.sqf @@ -0,0 +1,21 @@ +/* + * Author: commy2 + * When the channel list box is changed. + * + * Arguments: + * 0: Channel ListBox (idc 103) + * 1: Selected Index + * + * Return Value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +params ["_ctrl", "_index"]; +TRACE_2("params",_ctrl,_index); + +private _channelName = _ctrl lbText _index; + +setCurrentChannel (CHANNEL_NAMES find _channelName); diff --git a/addons/markers/functions/fnc_onLBSelChangedColor.sqf b/addons/markers/functions/fnc_onLBSelChangedColor.sqf index 0b9c5af209..ca63a3d0a7 100644 --- a/addons/markers/functions/fnc_onLBSelChangedColor.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedColor.sqf @@ -16,15 +16,13 @@ */ #include "script_component.hpp" -private ["_data", "_config"]; - params ["_ctrl", "_index"]; TRACE_2("params",_ctrl,_index); -_data = _ctrl lbValue _index; +private _data = _ctrl lbValue _index; GVAR(curSelMarkerColor) = _index; -_config = (configfile >> "CfgMarkerColors") select _data; +private _config = (configfile >> "CfgMarkerColors") select _data; -GVAR(currentMarkerColorConfigName) = (configName _config); +GVAR(currentMarkerColorConfigName) = configName _config; diff --git a/addons/markers/functions/fnc_onLBSelChangedShape.sqf b/addons/markers/functions/fnc_onLBSelChangedShape.sqf index c8587e6205..07530c113a 100644 --- a/addons/markers/functions/fnc_onLBSelChangedShape.sqf +++ b/addons/markers/functions/fnc_onLBSelChangedShape.sqf @@ -16,15 +16,13 @@ */ #include "script_component.hpp" -private ["_data", "_config"]; - params ["_ctrl", "_index"]; TRACE_2("params",_ctrl,_index); -_data = _ctrl lbValue _index; +private _data = _ctrl lbValue _index; GVAR(curSelMarkerShape) = _index; -_config = (configfile >> "CfgMarkers") select _data; +private _config = (configfile >> "CfgMarkers") select _data; -GVAR(currentMarkerConfigName) = (configName _config); +GVAR(currentMarkerConfigName) = configName _config; diff --git a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf index 16c6acfad9..030e2314ab 100644 --- a/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf +++ b/addons/markers/functions/fnc_onSliderPosChangedAngle.sqf @@ -16,12 +16,11 @@ */ #include "script_component.hpp" -private ["_direction"]; - params ["_ctrl", "_data"]; TRACE_2("params",_ctrl,_data); -_direction = round _data; +private _direction = round _data; + if (_direction < 0) then { _direction = _direction + 360; }; diff --git a/addons/markers/functions/fnc_placeMarker.sqf b/addons/markers/functions/fnc_placeMarker.sqf index 36b61151ee..5b0783b454 100644 --- a/addons/markers/functions/fnc_placeMarker.sqf +++ b/addons/markers/functions/fnc_placeMarker.sqf @@ -21,16 +21,15 @@ params ["_display", "_closeNum"]; TRACE_2("params",_display,_closeNum); if (_closeNum == 1) then { - // set and send marker data the next frame. the actual marker isn't created yet [{ [QGVAR(setMarkerNetwork), [ - allMapMarkers select (count allMapMarkers - 1), [ - GETGVAR(currentMarkerConfigName,""), - GETGVAR(currentMarkerColorConfigName,""), - GETGVAR(currentMarkerPosition,[]), - GETGVAR(currentMarkerAngle,0) - ] + allMapMarkers select (count allMapMarkers - 1), [ + GETGVAR(currentMarkerConfigName,""), + GETGVAR(currentMarkerColorConfigName,""), + GETGVAR(currentMarkerPosition,[]), + GETGVAR(currentMarkerAngle,0) + ] ]] call EFUNC(common,globalEvent); }, []] call EFUNC(common,execNextFrame); diff --git a/addons/markers/functions/fnc_setMarkerJIP.sqf b/addons/markers/functions/fnc_setMarkerJIP.sqf index 4e6b47b46b..bd8832fb36 100644 --- a/addons/markers/functions/fnc_setMarkerJIP.sqf +++ b/addons/markers/functions/fnc_setMarkerJIP.sqf @@ -21,31 +21,34 @@ params ["_allMapMarkers", "_allMapMarkersProperties", "_logic"]; TRACE_3("params",_allMapMarkers,_allMapMarkersProperties,_logic); { - private ["_index", "_data", "_config"]; - - _index = _allMapMarkers find _x; + private _index = _allMapMarkers find _x; if (_index != -1) then { - _data = _allMapMarkersProperties select _index; - _data params ["_name", "_color", "_pos", "_dir"]; + private _data = _allMapMarkersProperties select _index; + _data params ["_markerClassname", "_colorClassname", "_pos", "_dir"]; + + private _config = (configfile >> "CfgMarkers") >> _markerClassname; - _config = (configfile >> "CfgMarkers") >> _name; if (!isClass _config) then { WARNING("CfgMarker not found, changed to milDot"); - _config == (configFile >> "CfgMarkers" >> "MilDot"); + _config = configFile >> "CfgMarkers" >> "MilDot"; }; - _x setMarkerTypeLocal (configName _config); - _config = (configfile >> "CfgMarkerColors") >> _color; + _x setMarkerTypeLocal configName _config; + + _config = configfile >> "CfgMarkerColors" >> _colorClassname; + if (!isClass _config) then { WARNING("CfgMarkerColors not found, changed to Default"); - _config == (configFile >> "CfgMarkerColors" >> "Default"); + _config = configFile >> "CfgMarkerColors" >> "Default"; }; - _x setMarkerColorLocal (configName _config); + + _x setMarkerColorLocal configName _config; _x setMarkerPosLocal _pos; _x setMarkerDirLocal _dir; }; -} forEach allMapMarkers; + false +} count allMapMarkers; deleteVehicle _logic; diff --git a/addons/markers/functions/fnc_setMarkerNetwork.sqf b/addons/markers/functions/fnc_setMarkerNetwork.sqf index c56a1fb93c..9d6d2d8ecf 100644 --- a/addons/markers/functions/fnc_setMarkerNetwork.sqf +++ b/addons/markers/functions/fnc_setMarkerNetwork.sqf @@ -17,38 +17,37 @@ */ #include "script_component.hpp" -private ["_config"]; - params ["_marker", "_data"]; -_data params ["_markerClassname", "_colorClassname", "_markerPos", "_markerDir"]; TRACE_2("params",_marker,_data); +_data params ["_markerClassname", "_colorClassname", "_pos", "_dir"]; +private _config = configfile >> "CfgMarkers" >> _markerClassname; -_config = (configfile >> "CfgMarkers") >> _markerClassname; if (!isClass _config) then { WARNING("CfgMarker not found, changed to milDot"); - _config == (configFile >> "CfgMarkers" >> "MilDot"); + _config = configFile >> "CfgMarkers" >> "MilDot"; }; -_marker setMarkerTypeLocal (configName _config); -_config = (configfile >> "CfgMarkerColors") >> _colorClassname; +_marker setMarkerTypeLocal configName _config; + +_config = configfile >> "CfgMarkerColors" >> _colorClassname; + if (!isClass _config) then { WARNING("CfgMarkerColors not found, changed to Default"); - _config == (configFile >> "CfgMarkerColors" >> "Default"); + _config = configFile >> "CfgMarkerColors" >> "Default"; }; + _marker setMarkerColorLocal configName _config; -_marker setMarkerPosLocal _markerPos; -_marker setMarkerDirLocal _markerDir; +_marker setMarkerPosLocal _pos; +_marker setMarkerDirLocal _dir; // save properties on server machine for JIP, marker editing ready if (isMultiplayer && {isServer}) then { - private ["_allMapMarkers", "_allMapMarkersProperties", "_index"]; + private _allMapMarkers = GETGVAR(allMapMarkers,[]); + private _allMapMarkersProperties = GETGVAR(allMapMarkersProperties,[]); - _allMapMarkers = GETGVAR(allMapMarkers,[]); - _allMapMarkersProperties = GETGVAR(allMapMarkersProperties,[]); - - _index = _allMapMarkers find _marker; + private _index = _allMapMarkers find _marker; if (_index == -1) then { _allMapMarkers pushBack _marker; diff --git a/addons/markers/script_component.hpp b/addons/markers/script_component.hpp index 2b1cb586a7..80ffa23b5b 100644 --- a/addons/markers/script_component.hpp +++ b/addons/markers/script_component.hpp @@ -9,4 +9,13 @@ #define DEBUG_SETTINGS DEBUG_ENABLED_MARKERS #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" + +#define CHANNEL_NAMES [ \ + localize "str_channel_global", \ + localize "str_channel_side", \ + localize "str_channel_command", \ + localize "str_channel_group", \ + localize "str_channel_vehicle", \ + localize "str_channel_direct" \ +] From 077b9827e894c510b25886d98e0f3b265e65654a Mon Sep 17 00:00:00 2001 From: commy2 Date: Thu, 10 Dec 2015 16:00:14 +0100 Subject: [PATCH 027/107] code cleanup fcs --- addons/fcs/CfgEventHandlers.hpp | 3 +- addons/fcs/CfgVehicles.hpp | 26 ++- .../{XEH_clientInit.sqf => XEH_postInit.sqf} | 2 +- addons/fcs/XEH_preInit.sqf | 1 + addons/fcs/functions/fnc_adjustRange.sqf | 22 +- addons/fcs/functions/fnc_canResetFCS.sqf | 12 +- addons/fcs/functions/fnc_canUseFCS.sqf | 14 +- .../fcs/functions/fnc_canUseRangefinder.sqf | 14 +- addons/fcs/functions/fnc_firedEH.sqf | 37 ++-- addons/fcs/functions/fnc_getAngle.sqf | 99 +++++---- addons/fcs/functions/fnc_getRange.sqf | 19 +- .../fnc_handleAirBurstAmmunitionPFH.sqf | 27 ++- addons/fcs/functions/fnc_keyDown.sqf | 25 +-- addons/fcs/functions/fnc_keyUp.sqf | 189 +++++++----------- addons/fcs/functions/fnc_onForceUpdate.sqf | 12 +- addons/fcs/functions/fnc_reset.sqf | 12 +- addons/fcs/functions/fnc_updateRangeHUD.sqf | 18 ++ addons/fcs/functions/fnc_vehicleInit.sqf | 14 +- addons/fcs/initKeybinds.sqf | 6 +- 19 files changed, 263 insertions(+), 289 deletions(-) rename addons/fcs/{XEH_clientInit.sqf => XEH_postInit.sqf} (83%) create mode 100644 addons/fcs/functions/fnc_updateRangeHUD.sqf diff --git a/addons/fcs/CfgEventHandlers.hpp b/addons/fcs/CfgEventHandlers.hpp index a03ca847ea..ab41fa904b 100644 --- a/addons/fcs/CfgEventHandlers.hpp +++ b/addons/fcs/CfgEventHandlers.hpp @@ -1,3 +1,4 @@ + class Extended_PreInit_EventHandlers { class ADDON { init = QUOTE(call COMPILE_FILE(XEH_preInit)); @@ -6,7 +7,7 @@ class Extended_PreInit_EventHandlers { class Extended_PostInit_EventHandlers { class ADDON { - clientInit = QUOTE(call COMPILE_FILE(XEH_clientInit)); + init = QUOTE(call COMPILE_FILE(XEH_postInit)); }; }; diff --git a/addons/fcs/CfgVehicles.hpp b/addons/fcs/CfgVehicles.hpp index 53b279ef88..f1b896c612 100644 --- a/addons/fcs/CfgVehicles.hpp +++ b/addons/fcs/CfgVehicles.hpp @@ -26,7 +26,7 @@ class CfgVehicles { class ACE_SelfActions { class ResetFCS { displayName = CSTRING(ResetFCS); - condition = QUOTE(call FUNC(canResetFCS)); + condition = QUOTE(_player call FUNC(canResetFCS)); statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); showDisabled = 0; priority = 1; @@ -39,7 +39,7 @@ class CfgVehicles { class ACE_SelfActions { class ResetFCS { displayName = CSTRING(ResetFCS); - condition = QUOTE(call FUNC(canResetFCS)); + condition = QUOTE(_player call FUNC(canResetFCS)); statement = QUOTE([ARR_2(vehicle _player,[_player] call DEFUNC(common,getTurretIndex))] call DFUNC(reset);); showDisabled = 0; priority = 1; @@ -321,9 +321,13 @@ class CfgVehicles { discreteDistance[] = {}; discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; }; }; }; @@ -346,9 +350,13 @@ class CfgVehicles { discreteDistance[] = {}; discreteDistanceInitIndex = 0; - /*class Turrets: Turrets { - class CommanderOptics: CommanderOptics {}; - };*/ + class Turrets: Turrets { + class CommanderOptics: CommanderOptics { + GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; + }; + }; }; }; }; @@ -362,6 +370,8 @@ class CfgVehicles { class Turrets: Turrets { class CommanderOptics: CommanderOptics { GVAR(Enabled) = 1; + discreteDistance[] = {}; + discreteDistanceInitIndex = 0; }; }; }; diff --git a/addons/fcs/XEH_clientInit.sqf b/addons/fcs/XEH_postInit.sqf similarity index 83% rename from addons/fcs/XEH_clientInit.sqf rename to addons/fcs/XEH_postInit.sqf index 3338e739e1..8a8b379318 100644 --- a/addons/fcs/XEH_clientInit.sqf +++ b/addons/fcs/XEH_postInit.sqf @@ -16,4 +16,4 @@ if (!hasInterface) exitWith {}; }] call EFUNC(common,addEventHandler); // Register event for global updates -[QGVAR(forceUpdate), FUNC(onForceUpdate)] call EFUNC(common,addEventHandler); +[QGVAR(forceUpdate), {ACE_player call FUNC(onForceUpdate)}] call EFUNC(common,addEventHandler); diff --git a/addons/fcs/XEH_preInit.sqf b/addons/fcs/XEH_preInit.sqf index 8fdc43df11..2bcda4f464 100644 --- a/addons/fcs/XEH_preInit.sqf +++ b/addons/fcs/XEH_preInit.sqf @@ -14,6 +14,7 @@ PREP(onForceUpdate); PREP(keyDown); PREP(keyUp); PREP(reset); +PREP(updateRangeHUD); PREP(vehicleInit); ADDON = true; diff --git a/addons/fcs/functions/fnc_adjustRange.sqf b/addons/fcs/functions/fnc_adjustRange.sqf index 4b7f4b6b88..f6f543d35a 100644 --- a/addons/fcs/functions/fnc_adjustRange.sqf +++ b/addons/fcs/functions/fnc_adjustRange.sqf @@ -1,29 +1,27 @@ /* * Author: KoffeinFlummi - * * Adjusts the currently zeroed distance. * * Arguments: - * 0: The vehicle in question - * 1: The amount to add to the distance (can be negative) + * 0: The vehicle in question + * 1: The Turrets that the Vehicle has + * 2: The amount to add to the distance (can be negative) * * Return Value: * None + * + * Public: No */ - #include "script_component.hpp" -private ["_vehicle", "_turret", "_delta", "_turretConfig", "_min", "_max", "_distance"]; +params ["_vehicle", "_turret", "_delta"]; -_vehicle = _this select 0; -_turret = _this select 1; -_delta = _this select 2; +private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); -_turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); +private _min = getNumber (_turretConfig >> QGVAR(MinDistance)); +private _max = getNumber (_turretConfig >> QGVAR(MaxDistance)); -_min = getNumber (_turretConfig >> QGVAR(MinDistance)); -_max = getNumber (_turretConfig >> QGVAR(MaxDistance)); -_distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], _min]; +private _distance = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], _min]; _distance = _distance + _delta; _distance = _distance min _max; diff --git a/addons/fcs/functions/fnc_canResetFCS.sqf b/addons/fcs/functions/fnc_canResetFCS.sqf index 488f1eebf4..b57435f388 100644 --- a/addons/fcs/functions/fnc_canResetFCS.sqf +++ b/addons/fcs/functions/fnc_canResetFCS.sqf @@ -1,15 +1,17 @@ /* * Author: KoffeinFlummi - * * Called from config. Can player reset FCS? * * Argument: * Nothing * - * Return value: - * Boolean (Bool) + * Return Value: + * Boolean + * + * Public: No */ - #include "script_component.hpp" -count ((vehicle ACE_player) getVariable [format ["%1_%2", QGVAR(Magazines), [ACE_player] call EFUNC(common,getTurretIndex)], []]) > 1 +params ["_unit"]; + +count ((vehicle _unit) getVariable [format ["%1_%2", QGVAR(Magazines), [_unit] call EFUNC(common,getTurretIndex)], []]) > 1 // return diff --git a/addons/fcs/functions/fnc_canUseFCS.sqf b/addons/fcs/functions/fnc_canUseFCS.sqf index cb4a1b608d..91b49554c2 100644 --- a/addons/fcs/functions/fnc_canUseFCS.sqf +++ b/addons/fcs/functions/fnc_canUseFCS.sqf @@ -1,16 +1,16 @@ /* * Author: commy2 - * * Called from config. Returns true if the player is a gunner and the players current vehicle has a FCS. * - * Argument: - * Nothing + * Arguments: + * None * - * Return value: - * Boolean (Bool) + * Return Value: + * Boolean + * + * Public: No */ - #include "script_component.hpp" getNumber ([configFile >> "CfgVehicles" >> typeOf vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call EFUNC(common,getTurretConfigPath) >> QGVAR(Enabled)) == 1 -&& {cameraView == "GUNNER"} +&& {cameraView == "GUNNER"} // return diff --git a/addons/fcs/functions/fnc_canUseRangefinder.sqf b/addons/fcs/functions/fnc_canUseRangefinder.sqf index f6bb3b2e52..7403c74ac1 100644 --- a/addons/fcs/functions/fnc_canUseRangefinder.sqf +++ b/addons/fcs/functions/fnc_canUseRangefinder.sqf @@ -1,16 +1,16 @@ /* * Author: commy2 - * * Returns true if the laser distance measurement can be read from the engine. * - * Argument: - * Nothing + * Arguments: + * None * - * Return value: - * Boolean (Bool) + * Return Value: + * Boolean + * + * Public: No */ - #include "script_component.hpp" !isNull ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) -&& {cameraView == "GUNNER"} +&& {cameraView == "GUNNER"} // return diff --git a/addons/fcs/functions/fnc_firedEH.sqf b/addons/fcs/functions/fnc_firedEH.sqf index 31fe38335d..237aed8ac1 100644 --- a/addons/fcs/functions/fnc_firedEH.sqf +++ b/addons/fcs/functions/fnc_firedEH.sqf @@ -1,6 +1,5 @@ /* * Author: KoffeinFlummi - * * Adjusts the direction of a shell. * * Arguments: @@ -8,58 +7,48 @@ * * Return Value: * None + * + * Public: No */ - #include "script_component.hpp" -private ["_vehicle", "_weapon", "_ammo", "_magazine", "_projectile", "_sumVelocity"]; +params ["_vehicle", "_weapon", "", "", "_ammo", "_magazine", "_projectile"]; -_vehicle = _this select 0; -_weapon = _this select 1; -_ammo = _this select 4; -_magazine = _this select 5; -_projectile = _this select 6; - -private ["_gunner", "_turret"]; - -_gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); -_turret = [_gunner] call EFUNC(common,getTurretIndex); +private _gunner = [_vehicle, _weapon] call EFUNC(common,getGunner); +private _turret = _gunner call EFUNC(common,getTurretIndex); // Exit if the unit isn't a player if !([_gunner] call EFUNC(common,isPlayer)) exitWith {}; -private ["_FCSMagazines", "_FCSElevation", "_offset"]; - -_FCSMagazines = _vehicle getVariable [(format ["%1_%2", QGVAR(Magazines), _turret]), []]; -_FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; +private _FCSMagazines = _vehicle getVariable [format ["%1_%2", QGVAR(Magazines), _turret], []]; +private _FCSElevation = _vehicle getVariable format ["%1_%2", QGVAR(Elevation), _turret]; if !(_magazine in _FCSMagazines) exitWith {}; // GET ELEVATION OFFSET OF CURRENT MAGAZINE -_offset = 0; +private _offset = 0; + { if (_x == _magazine) exitWith { _offset = _FCSElevation select _forEachIndex; }; } forEach _FCSMagazines; - [_projectile, (_vehicle getVariable format ["%1_%2", QGVAR(Azimuth), _turret]), _offset, 0] call EFUNC(common,changeProjectileDirection); // Remove the platform velocity -if( (vectorMagnitude velocity _vehicle) > 2) then { - _sumVelocity = (velocity _projectile) vectorDiff (velocity _vehicle); +if (vectorMagnitude velocity _vehicle > 2) then { + private _sumVelocity = (velocity _projectile) vectorDiff (velocity _vehicle); + _projectile setVelocity _sumVelocity; }; // Air burst missile - // handle locally only if (!local _gunner) exitWith {}; if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(Airburst)) == 1) then { - private "_zeroing"; - _zeroing = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], currentZeroing _vehicle]; + private _zeroing = _vehicle getVariable [format ["%1_%2", QGVAR(Distance), _turret], currentZeroing _vehicle]; if (_zeroing < 50) exitWith {}; if (_zeroing > 1500) exitWith {}; diff --git a/addons/fcs/functions/fnc_getAngle.sqf b/addons/fcs/functions/fnc_getAngle.sqf index 91150c110d..d2c51a9542 100644 --- a/addons/fcs/functions/fnc_getAngle.sqf +++ b/addons/fcs/functions/fnc_getAngle.sqf @@ -1,91 +1,82 @@ /* * Author: KoffeinFlummi - * * Calculates the angle offset necessary to hit the current target. * * Arguments: - * 0: distance to target in meters - * 1: current angle of the turret - * 2: maximum elevation of the turret - * 3: initSpeed of the projectile - * 4: airFriction of the projectile - * 5: maximum timeToLive of the projectile - * 6: simulationStep of the projectile + * 0: distance to target in meters + * 1: current angle of the turret + * 2: maximum elevation of the turret + * 3: initSpeed of the projectile + * 4: airFriction of the projectile + * 5: maximum timeToLive of the projectile + * 6: simulationStep of the projectile * * Return Value: - * offset from the current angle necessary to hit the target + * offset from the current angle necessary to hit the target + * + * Public: No */ - #include "script_component.hpp" + #define PRECISION 0.1 -private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle1", "_angle2", "_it2", "_f1", "_f2", "_temp", "_it1", "_angle"]; - -_distance = _this select 0; -_angleTarget = _this select 1; -_maxElev = _this select 2; -_initSpeed = _this select 3; -_airFriction = _this select 4; -_timeToLive = _this select 5; -_simulationStep = _this select 6; +params ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep"]; if (_simulationStep == 0) exitWith {_angleTarget}; -FUNC(traceBullet) = { - private ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle", "_posTargetX", "_posTargetY", "_posX", "_posY", "_velocityX", "_velocityY", "_velocityMagnitude", "_i"]; - - _distance = _this select 0; - _angleTarget = _this select 1; - _maxElev = _this select 2; - _initSpeed = _this select 3; - _airFriction = _this select 4; - _timeToLive = _this select 5; - _simulationStep = _this select 6; - _angle = _this select 7; +private _fnc_traceBullet = { + params ["_distance", "_angleTarget", "_maxElev", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_angle"]; _angle = _angle - _angleTarget; _angleTarget = 0; - _posTargetX = (cos _angleTarget) * _distance; - _posTargetY = (sin _angleTarget) * _distance; + private _posTargetX = (cos _angleTarget) * _distance; + private _posTargetY = (sin _angleTarget) * _distance; - _posX = 0; - _posY = 0; + private _posX = 0; + private _posY = 0; - _velocityX = (cos _angle) * _initSpeed; - _velocityY = (sin _angle) * _initSpeed; + private _velocityX = (cos _angle) * _initSpeed; + private _velocityY = (sin _angle) * _initSpeed; // trace the path of the bullet for "_i" from 1 to ((floor (_timeToLive / _simulationStep)) + 1) do { - _velocityMagnitude = sqrt (_velocityX^2 + _velocityY^2); + private _velocityMagnitude = sqrt (_velocityX^2 + _velocityY^2); + _velocityX = _velocityX + _simulationStep * (_velocityX * _velocityMagnitude * _airFriction); _velocityY = _velocityY + _simulationStep * (_velocityY * _velocityMagnitude * _airFriction - 9.81); + _posX = _posX + _velocityX * _simulationStep; _posY = _posY + _velocityY * _simulationStep; + if (_posX >= _posTargetX) exitWith {}; // bullet passed the target }; - _posY - _posTargetY }; -if ((_this + [_maxElev]) call FUNC(traceBullet) < 0) exitWith {_maxElev - _angleTarget}; +private _data = [_distance, _angleTarget, _maxElev, _initSpeed, _airFriction, _timeToLive, _simulationStep, _maxElev]; + +if (_data call _fnc_traceBullet < 0) exitWith {_maxElev - _angleTarget}; // Newton Method / Secand Method -_angle1 = _angleTarget; -_angle2 = _maxElev; -_it2 = 0; -_f1 = (_this + [_angle1]) call FUNC(traceBullet); +private _angle1 = _angleTarget; +private _angle2 = _maxElev; +private _it2 = 0; + +_data set [7, _maxElev]; +private _f1 = _data call _fnc_traceBullet; + +if (abs _f1 <= PRECISION) exitWith {0}; + +while {abs _f1 > PRECISION} do { + _data set [7, _angle2]; + private _f2 = _data call _fnc_traceBullet; -if ((abs _f1) <= PRECISION) exitWith {0}; -while {(abs _f1) > PRECISION} do { - _f2 = (_this + [_angle2]) call FUNC(traceBullet); - _temp = _angle2-_f2*(_angle2-_angle1)/(_f2-_f1); _angle1 = _angle2; - _angle2 = _temp; - _f1 = _f2; - _it2 = _it2+1; -}; -//player globalChat format ["it1: %1 | _angle1: %2 | it2: %3 | _angle2: %4",_it1, _angle-_angleTarget, _it2, _angle2-_angleTarget]; + _angle2 = _angle2 - _f2 * (_angle2 - _angle1) / (_f2 - _f1); -_angle=_angle2; -_angle - _angleTarget + _f1 = _f2; + _it2 = _it2 + 1; +}; + +_angle2 - _angleTarget diff --git a/addons/fcs/functions/fnc_getRange.sqf b/addons/fcs/functions/fnc_getRange.sqf index 3618fa446e..51cdf564df 100644 --- a/addons/fcs/functions/fnc_getRange.sqf +++ b/addons/fcs/functions/fnc_getRange.sqf @@ -1,23 +1,18 @@ /* * Author: commy2 - * - * Read laser distance measurement from engine and update compatible info elements. + * Read laser distance measurement from engine. * * Argument: - * Nothing + * None * * Return value: - * Measured distance (Number) + * Measured distance + * + * Public: No */ - #include "script_component.hpp" -private ["_dlgRangefinder", "_range"]; - disableSerialization; -_dlgRangefinder = uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]; +private _dlgRangefinder = uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]; -_range = ctrlText (_dlgRangefinder displayCtrl 151); -(_dlgRangefinder displayCtrl 1713151) ctrlSetText _range; - -parseNumber _range +parseNumber ctrlText (_dlgRangefinder displayCtrl 151); diff --git a/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf index 899cf0da76..aa166ece12 100644 --- a/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf +++ b/addons/fcs/functions/fnc_handleAirBurstAmmunitionPFH.sqf @@ -1,21 +1,32 @@ -// by commy2 +/* + * Author: commy2 + * Handle Air burst ammunition. Called from per frame handler. + * + * Arguments: + * - + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" -private ["_vehicle", "_projectile", "_zeroing", "_position", "_subMunition"]; - -_vehicle = _this select 0 select 0; -_projectile = _this select 0 select 1; -_zeroing = _this select 0 select 2; +(_this select 0) params ["_vehicle", "_projectile", "_zeroing"]; +// remove pfh if the projectile died before arriving if (isNull _projectile || {!alive _projectile}) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; +// wait if not there if (_projectile distance _vehicle < _zeroing) exitWith {}; -_position = getPosATL _projectile; +// explode +private _position = getPosATL _projectile; + +private _subMunition = createVehicle ["ACE_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; -_subMunition = createVehicle ["ACE_B_35mm_ABM_Helper", _position, [], 0, "FLY"]; _subMunition setPosATL _position; _subMunition setVelocity [0, 0, -10]; diff --git a/addons/fcs/functions/fnc_keyDown.sqf b/addons/fcs/functions/fnc_keyDown.sqf index cea7196570..a34233bc91 100644 --- a/addons/fcs/functions/fnc_keyDown.sqf +++ b/addons/fcs/functions/fnc_keyDown.sqf @@ -1,23 +1,22 @@ /* * Author: KoffeinFlummi - * * Starts watching the target for sideways correction. * * Arguments: - * 0: Vehicle + * 0: Vehicle + * 1: Turret * * Return Value: - * none + * None + * + * Public: No */ - #include "script_component.hpp" -private ["_vehicle", "_turret", "_distance", "_weaponDirection"]; +params ["_vehicle", "_turret"]; -_vehicle = _this select 0; -_turret = _this select 1; - -_distance = call FUNC(getRange); +private _distance = call FUNC(getRange); +call (updateRangeHUD); if !(!GVAR(enabled) && FUNC(canUseFCS)) exitWith {}; @@ -28,7 +27,7 @@ if (_distance == 0) then { _distance = [5, 5000, 0] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision }; -_weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets +private _weaponDirection = _vehicle weaponDirection (_vehicle currentWeaponTurret _turret); // @todo doesn't work for sub turrets if (_turret isEqualTo ([_vehicle] call EFUNC(common,getTurretCommander))) then { _weaponDirection = eyeDirection _vehicle; @@ -38,8 +37,4 @@ if (_weaponDirection isEqualTo [0,0,0]) then { // dummy value for non main turr _weaponDirection = [1,0,0]; }; -GVAR(Position) = [ - (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), - (getPos _vehicle select 1) + _distance * (_weaponDirection select 1), - (getPos _vehicle select 2) + _distance * (_weaponDirection select 2) -]; +GVAR(Position) = (getPosASL _vehicle) vectorAdd (_weaponDirection vectorMultiply _distance); diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 37390c0b47..ebbd6e3a06 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -1,40 +1,38 @@ /* * Author: KoffeinFlummi - * * Calculates the offsets for all weapons needed to hit the current target. * * Arguments: - * 0: The vehicle + * 0: Vehicle + * 1: Turret * * Return Value: - * none + * None + * + * Public: No */ - #include "script_component.hpp" -private ["_vehicle", "_turret", "_turretConfig", "_distance", "_weapons", "_magazines", "_showHint", "_playSound", "_i"]; +params ["_vehicle", "_turret", "_distance", ["_showHint", false], ["_playSound", true]]; -_vehicle = _this select 0; -_turret = _this select 1; +private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); -_turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _turret] call EFUNC(common,getTurretConfigPath); +call (updateRangeHUD); -_distance = call FUNC(getRange); +if (isNil "_distance") then { + _distance = call FUNC(getRange); -_weapons = _vehicle weaponsTurret _turret; -_magazines = _vehicle magazinesTurret _turret; - -if (_distance == 0) then { - _distance = [ - getNumber (_turretConfig >> QGVAR(DistanceInterval)), - getNumber (_turretConfig >> QGVAR(MaxDistance)), - getNumber (_turretConfig >> QGVAR(MinDistance)) - ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision + if (_distance == 0) then { + _distance = [ + getNumber (_turretConfig >> QGVAR(DistanceInterval)), + getNumber (_turretConfig >> QGVAR(MaxDistance)), + getNumber (_turretConfig >> QGVAR(MinDistance)) + ] call EFUNC(common,getTargetDistance); // maximum distance: 5000m, 5m precision + }; }; -private ["_weapon", "_weaponDirection", "_angleTarget"]; -_weapon = _vehicle currentWeaponTurret _turret; -_weaponDirection = _vehicle weaponDirection _weapon; // @todo doesn't work for sub turrets +private _weapon = _vehicle currentWeaponTurret _turret; +private _weaponDirection = _vehicle weaponDirection _weapon; // @todo doesn't work for sub turrets if (_turret isEqualTo ([_vehicle] call EFUNC(common,getTurretCommander))) then { _weaponDirection = eyeDirection _vehicle; @@ -44,176 +42,139 @@ if (_weaponDirection isEqualTo [0,0,0]) then { // dummy value for non main turr _weaponDirection = [1,0,0]; }; -_angleTarget = asin (_weaponDirection select 2); - -if (count _this > 2) then { - if((_this select 2) > -1) then { - _distance = _this select 2; - }; -}; - -if (!(isNil QGVAR(backgroundCalculation)) and {!(scriptDone GVAR(backgroundCalculation))}) then { - terminate GVAR(backgroundCalculation); -}; - -private ["_movingAzimuth", "_posTarget", "_velocityTarget"]; +private _angleTarget = asin (_weaponDirection select 2); // MOVING TARGETS -_movingAzimuth = 0; -if (ACE_time - GVAR(time) > 1 and GVAR(time) != -1 and count _this < 3) then { - // calculate speed of target - _posTarget = [ - (getPos _vehicle select 0) + _distance * (_weaponDirection select 0), - (getPos _vehicle select 1) + _distance * (_weaponDirection select 1), - (getPos _vehicle select 2) + _distance * (_weaponDirection select 2) - ]; - _velocityTarget = [ - ((_posTarget select 0) - (GVAR(position) select 0)) / (ACE_time - GVAR(time)), - ((_posTarget select 1) - (GVAR(position) select 1)) / (ACE_time - GVAR(time)), - ((_posTarget select 2) - (GVAR(position) select 2)) / (ACE_time - GVAR(time)) - ]; +private _movingAzimuth = 0; - private ["_magazineType", "_ammoType", "_initSpeed", "_airFriction", "_timeToLive", "_simulationStep", "_initSpeedCoef", "_velocityMagnitude"]; +if (ACE_time - GVAR(time) > 1 && GVAR(time) != -1 && isNil {_this select 2}) then { + // calculate speed of target + private _posTarget = (getPosASL _vehicle) vectorAdd (_weaponDirection vectorMultiply _distance); + private _velocityTarget = (_posTarget vectorDiff GVAR(position)) vectorMultiply (1 / (ACE_time - GVAR(time))); // estimate time to target - _magazineType = _vehicle currentMagazineTurret _turret; - _ammoType = getText (configFile >> "CfgMagazines" >> _magazineType >> "ammo"); - _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineType >> "initSpeed"); - _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); - _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "timeToLive"); - _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "simulationStep"); + private _magazine = _vehicle currentMagazineTurret _turret; + private _ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo"); + private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); + private _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammo >> "airFriction"); + private _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive"); + private _simulationStep = getNumber (configFile >> "CfgAmmo" >> _ammo >> "simulationStep"); + private _initSpeedCoef = getNumber (configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); - _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); if (_initSpeedCoef < 0) then { - _initSpeed = _initSpeed * -_initSpeedCoef; + _initSpeed = _initSpeed * - _initSpeedCoef; }; + if (_initSpeedCoef > 0) then { _initSpeed = _initSpeedCoef; }; if (_simulationStep != 0) then { - private ["_posX", "_velocityX", "_velocityY", "_timeToTarget"]; + private _posX = 0; + private _velocityX = _initSpeed; + private _velocityY = 0; + private _timeToTarget = 0; - _posX = 0; - _velocityX = _initSpeed; - _velocityY = 0; - _timeToTarget = 0; - - for "_i" from 1 to ((floor (_timeToLive / _simulationStep)) + 1) do { + for "_i" from 1 to (floor (_timeToLive / _simulationStep) + 1) do { _posX = _posX + _velocityX * _simulationStep; + if (_posX >= _distance) exitWith { // bullet passed the target _timeToTarget = _i * _simulationStep; }; - _velocityMagnitude = sqrt (_velocityX^2 + _velocityY^2); + + private _velocityMagnitude = sqrt (_velocityX ^ 2 + _velocityY ^ 2); + _velocityX = _velocityX + _velocityX * _velocityMagnitude * _airFriction * _simulationStep; _velocityY = _velocityY + _velocityY * _velocityMagnitude * _airFriction * _simulationStep - 9.81 * _simulationStep; }; - private ["_posArrival", "_dirArrival"]; - // calculate offsets - _posArrival = [ - (_posTarget select 0) + (_velocityTarget select 0) * _timeToTarget, - (_posTarget select 1) + (_velocityTarget select 1) * _timeToTarget, - (_posTarget select 2) + (_velocityTarget select 2) * _timeToTarget - ]; - - _dirArrival = [ - ((_posArrival select 0) - (getPos _vehicle select 0)) / (_posArrival distance (getPos _vehicle)), - ((_posArrival select 1) - (getPos _vehicle select 1)) / (_posArrival distance (getPos _vehicle)), - ((_posArrival select 2) - (getPos _vehicle select 2)) / (_posArrival distance (getPos _vehicle)) - ]; + private _posArrival = _posTarget vectorAdd (_velocityTarget vectorMultiply _timeToTarget); + private _dirArrival = (_posArrival vectorDiff getPosASL _vehicle) vectorMultiply (1 / (_posArrival vectorDistance getPosASL _vehicle)); _movingAzimuth = ((_dirArrival select 0) atan2 (_dirArrival select 1)) - ((_weaponDirection select 0) atan2 (_weaponDirection select 1)); _angleTarget = asin (_dirArrival select 2); - _distance = floor (_posArrival distance (getPos _vehicle)); + _distance = floor (_posArrival distance (getPosASL _vehicle)); }; }; + GVAR(enabled) = false; GVAR(time) = -1; -private ["_viewDiff", "_FCSAzimuth", "_FCSMagazines", "_FCSElevation"]; - // CALCULATE AZIMUTH CORRECTION -_viewDiff = _vehicle getVariable format ["%1_%2", QGVAR(ViewDiff), _turret]; -_FCSAzimuth = _movingAzimuth; +private _viewDiff = _vehicle getVariable format ["%1_%2", QGVAR(ViewDiff), _turret]; +private _FCSAzimuth = _movingAzimuth; if (_viewDiff != 0) then { _FCSAzimuth = (atan (_distance / _viewDiff) - (abs _viewDiff / _viewDiff) * 90) + _movingAzimuth; }; // CALCULATE OFFSET -_FCSMagazines = []; -_FCSElevation = []; +private _FCSMagazines = []; +private _FCSElevation = []; { - private ["_magazine", "_ammoType"]; - _magazine = _x; - _ammoType = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo"); + private _magazine = _x; + private _ammo = getText (configFile >> "CfgMagazines" >> _magazine >> "ammo"); - if !(getText (configFile >> "CfgAmmo" >> _ammoType >> "simulation") == "shotMissile") then { - private ["_maxElev", "_initSpeed", "_airFriction", "_offset"]; - - _maxElev = getNumber (_turretConfig >> "maxElev"); - _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); - _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammoType >> "airFriction"); + if !(getText (configFile >> "CfgAmmo" >> _ammo >> "simulation") == "shotMissile") then { + private _maxElev = getNumber (_turretConfig >> "maxElev"); + private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazine >> "initSpeed"); + private _airFriction = getNumber (configFile >> "CfgAmmo" >> _ammo >> "airFriction"); { private ["_weapon", "_muzzles", "_weaponMagazines", "_muzzleMagazines"]; _weapon = _x; _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles"); _weaponMagazines = getArray (configFile >> "CfgWeapons" >> _weapon >> "magazines"); + { if (_x != "this") then { _muzzleMagazines = getArray (configFile >> "CfgWeapons" >> _weapon >> _x >> "magazines"); _weaponMagazines append _muzzleMagazines; }; - } forEach _muzzles; + false + } count _muzzles; + if (_magazine in _weaponMagazines) exitWith { _initSpeedCoef = getNumber(configFile >> "CfgWeapons" >> _weapon >> "initSpeed"); + if (_initSpeedCoef < 0) then { _initSpeed = _initSpeed * -_initSpeedCoef; }; + if (_initSpeedCoef > 0) then { _initSpeed = _initSpeedCoef; }; }; - } forEach _weapons; + false + } count (_vehicle weaponsTurret _turret); - _offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance]; + private _offset = "ace_fcs" callExtension format ["%1,%2,%3,%4", _initSpeed, _airFriction, _angleTarget, _distance]; _offset = parseNumber _offset; - _FCSMagazines = _FCSMagazines + [_magazine]; - _FCSElevation = _FCSElevation + [_offset]; + _FCSMagazines pushBack _magazine; + _FCSElevation pushBack _offset; }; -} forEach _magazines; + false +} count (_vehicle magazinesTurret _turret); -[_vehicle, format ["%1_%2", QGVAR(Distance), _turret], _distance] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Distance), _turret], _distance] call EFUNC(common,setVariablePublic); [_vehicle, format ["%1_%2", QGVAR(Magazines), _turret], _FCSMagazines] call EFUNC(common,setVariablePublic); [_vehicle, format ["%1_%2", QGVAR(Elevation), _turret], _FCSElevation] call EFUNC(common,setVariablePublic); -[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth] call EFUNC(common,setVariablePublic); +[_vehicle, format ["%1_%2", QGVAR(Azimuth), _turret], _FCSAzimuth] call EFUNC(common,setVariablePublic); -_showHint = false; -if( (count _this) > 3) then { - _showHint = _this select 3; -}; - -_playSound = true; -if( (count _this) > 3) then { - _playSound = _this select 4; -}; - -if(_playSound) then { +if (_playSound) then { playSound "ACE_Sound_Click"; }; -if(_showHint) then { +if (_showHint) then { [format ["%1: %2", localize LSTRING(ZeroedTo), _distance]] call EFUNC(common,displayTextStructured); }; //Update the hud's distance display to the new value or "----" if out of range //(10m fudge because of EFUNC(common,getTargetDistance)) -if ((_distance + 10) >= (getNumber (_turretConfig >> QGVAR(MaxDistance)))) then { +if (_distance + 10 >= getNumber (_turretConfig >> QGVAR(MaxDistance))) then { ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) ctrlSetText "----"; } else { ((uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]) displayCtrl 1713151) ctrlSetText ([_distance, 4, 0] call CBA_fnc_formatNumber); diff --git a/addons/fcs/functions/fnc_onForceUpdate.sqf b/addons/fcs/functions/fnc_onForceUpdate.sqf index 6f477fd3f6..005a0d7801 100644 --- a/addons/fcs/functions/fnc_onForceUpdate.sqf +++ b/addons/fcs/functions/fnc_onForceUpdate.sqf @@ -1,7 +1,13 @@ #include "script_component.hpp" -if !([ACE_player, vehicle ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false}; +params ["_unit"]; + +private _vehicle = vehicle _unit; + +if !([_unit, _vehicle, []] call EFUNC(common,canInteractWith)) exitWith {false}; if !((!GVAR(enabled) && FUNC(canUseFCS)) || FUNC(canUseRangefinder)) exitWith {false}; -[vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), -1, false] call FUNC(keyDown); -[vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex), -1, false, false] call FUNC(keyUp); \ No newline at end of file +private _turret = _unit call EFUNC(common,getTurretIndex); + +[_vehicle, _turret, -1, false] call FUNC(keyDown); +[_vehicle, _turret, -1, false, false] call FUNC(keyUp); diff --git a/addons/fcs/functions/fnc_reset.sqf b/addons/fcs/functions/fnc_reset.sqf index 48e3803c83..dcb1718b3f 100644 --- a/addons/fcs/functions/fnc_reset.sqf +++ b/addons/fcs/functions/fnc_reset.sqf @@ -1,21 +1,19 @@ /* * Author: KoffeinFlummi - * * Resets the FCS to default. * * Arguments: - * 0: Vehicle + * 0: Vehicle + * 1: Turret * * Return Value: * none + * + * Public: No */ - #include "script_component.hpp" -private ["_vehicle", "_turret"]; - -_vehicle = _this select 0; -_turret = _this select 1; +params ["_vehicle", "_turret"]; [_vehicle, format ["%1_%2", QGVAR(Distance), _turret], 0] call EFUNC(common,setVariablePublic); [_vehicle, format ["%1_%2", QGVAR(Magazines), _turret], []] call EFUNC(common,setVariablePublic); diff --git a/addons/fcs/functions/fnc_updateRangeHUD.sqf b/addons/fcs/functions/fnc_updateRangeHUD.sqf new file mode 100644 index 0000000000..374254c620 --- /dev/null +++ b/addons/fcs/functions/fnc_updateRangeHUD.sqf @@ -0,0 +1,18 @@ +/* + * Author: commy2 + * Update compatible info elements. + * + * Argument: + * None + * + * Return value: + * None + * + * Public: No + */ +#include "script_component.hpp" + +disableSerialization; +private _dlgRangefinder = uiNamespace getVariable ["ACE_dlgRangefinder", displayNull]; + +(_dlgRangefinder displayCtrl 1713151) ctrlSetText ctrlText (_dlgRangefinder displayCtrl 151); diff --git a/addons/fcs/functions/fnc_vehicleInit.sqf b/addons/fcs/functions/fnc_vehicleInit.sqf index 8ac23073f6..901e0477ab 100644 --- a/addons/fcs/functions/fnc_vehicleInit.sqf +++ b/addons/fcs/functions/fnc_vehicleInit.sqf @@ -1,6 +1,5 @@ /* * Author: KoffeinFlummi, commy2 - * * Checks if a vehicle is equipped with an FCS and if so, adds the fired event handler. Execute on server. * * Arguments: @@ -8,17 +7,15 @@ * * Return Value: * none + * + * Public: No */ - #include "script_component.hpp" -private "_vehicle"; - -_vehicle = _this select 0; +params ["_vehicle"]; { - private "_turretConfig"; - _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); + private _turretConfig = [configFile >> "CfgVehicles" >> typeOf _vehicle, _x] call EFUNC(common,getTurretConfigPath); if (getNumber (_turretConfig >> QGVAR(Enabled)) == 1) then { _vehicle setVariable [format ["%1_%2", QGVAR(Distance), _x], 0, true]; @@ -42,4 +39,5 @@ _vehicle = _this select 0; _vehicle setVariable [format ["%1_%2", QGVAR(ViewDiff), _x], 0, true]; }; }; -} forEach allTurrets _vehicle; + false +} count allTurrets _vehicle; diff --git a/addons/fcs/initKeybinds.sqf b/addons/fcs/initKeybinds.sqf index 3b22cb2262..a302776741 100644 --- a/addons/fcs/initKeybinds.sqf +++ b/addons/fcs/initKeybinds.sqf @@ -28,7 +28,7 @@ [vehicle ACE_player, [ACE_player] call EFUNC(common,getTurretIndex)] call FUNC(keyUp); false }, -[15, [false, false, false]], false] call cba_fnc_addKeybind; //Tab Key +[15, [false, false, false]], false] call CBA_fnc_addKeybind; //Tab Key ["ACE3 Vehicles", QGVAR(adjustRangeUp), localize LSTRING(AdjustRangeUp), { @@ -42,7 +42,7 @@ true }, {false}, -[201, [false, false, false]], false] call cba_fnc_addKeybind; //PageUp Key +[201, [false, false, false]], false] call CBA_fnc_addKeybind; //PageUp Key ["ACE3 Vehicles", QGVAR(adjustRangDown), localize LSTRING(AdjustRangeDown), { @@ -56,4 +56,4 @@ true }, {false}, -[209, [false, false, false]], false] call cba_fnc_addKeybind; //PageDown Key +[209, [false, false, false]], false] call CBA_fnc_addKeybind; //PageDown Key From aec2c3fef2c2e20c57e2f43b06d4d5d7c0b61873 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Thu, 10 Dec 2015 18:24:28 +0300 Subject: [PATCH 028/107] HotFix: removed duplicated key. Removed duplicated German key for STR_ACE_Common_DoNotForce. It caused Tabler.exe couldn't read stringtable files. --- addons/common/stringtable.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6d935f27a5..111300e87c 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -705,7 +705,6 @@ Nicht erzwingen Nie wymuszaj No forzar - Nicht erzwingen Nevynucovat Não forçar Не обязывать From fd06472f4daeaed981a13fe3869d2171e715cfb5 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 10 Dec 2015 20:32:16 +0300 Subject: [PATCH 029/107] Russian Translations - Update --- AUTHORS.txt | 2 +- addons/cargo/stringtable.xml | 4 ++++ addons/gestures/stringtable.xml | 9 +++++++- addons/hearing/stringtable.xml | 2 ++ addons/interact_menu/stringtable.xml | 2 ++ addons/interaction/stringtable.xml | 5 +++++ addons/medical/stringtable.xml | 1 + addons/nightvision/stringtable.xml | 6 +++++- addons/rearm/stringtable.xml | 29 ++++++++++++++++++++++++++ addons/refuel/stringtable.xml | 31 ++++++++++++++++++++++++++++ addons/viewdistance/stringtable.xml | 5 +++-- 11 files changed, 91 insertions(+), 5 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 8cdf9a99a9..5eee93a7f6 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -54,7 +54,7 @@ Crusty Dharma Bellamkonda Dimaslg Drill -Dudakov +Dudakov aka [OMCB]Kaban Dslyecxi eRazeri evromalarkey diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index cdd718006c..65c0ceb433 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -110,24 +110,28 @@ Carregando carga Ładowanie cargo Nakládám + Погрузка Unloading Cargo Descarregando carga Rozładowywanie cargo Vykládám + Выгрузка %1<br/>could not be loaded %1<br/>não pode ser carregado %1<br/>nie mógł zostać załadowany %1<br/>nemůže být naloženo + %1<br/>не может быть погружен %1<br/>could not be unloaded %1<br/>não pode ser descarregado %1<br/>nie mógł zostać rozładowany %1<br/>nemůže být vyloženo + %1<br/>не может быть выгружен \ No newline at end of file diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index cc9b776cd1..1891b6e763 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -92,7 +92,7 @@ Wskazać Ukázat Pointer - Точка + Показать направление Mutat Apontar Puntare a @@ -115,6 +115,7 @@ Stop Stop Stop + Стоп @@ -135,6 +136,7 @@ Regroupement Sammeln Zbiórka + Собраться @@ -142,12 +144,14 @@ En avant Vorwärts Bewegen Naprzód + Вперед Engage Engager Atak + Открыть огонь @@ -155,6 +159,7 @@ Pointer Zeigen Wskaż + Показать направление @@ -162,6 +167,7 @@ Tenir Anhalten Wstrzymać + Ждать @@ -169,6 +175,7 @@ Attention Achtung Uwaga + Внимание Hi diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 14517b54ce..a060a2bfac 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -172,10 +172,12 @@ Add earplugs to units Dodaj stopery dla jednostek + Добавлять юнитам беруши Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts. Dodaje `ACE_EarPlugs` - stopery - do wszystkich jednostek, które posiadają głośną broń. Można wyłaczyć w przypadku korzystania z niestandardowych loadoutów. + Добавляет предмет `ACE_EarPlugs` всем юнитам, которые имеют громкое оружие. Можно отключить при ручной настройке снаряжения. \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 424426f653..6de2ed05ed 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -302,10 +302,12 @@ Interaction Animation Speed Szybkość animacji interakcji + Скорость анимации меню взаимодействия Makes menu animations faster and decreases the time needed to hover to show sub actions Przyśpiesza animacje menu interakcji oraz czas wymagany do pokazania podmenu + Ускоряет анимацию меню и уменьшает задержку при наведении мыши для раскрытия подменю \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b84a987a9c..dc5f511c95 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -695,26 +695,31 @@ Pass magazine Magazin geben Podaj magazynek + Передать магазин Primary magazine Gewehrmagazin Magazynek karabinowy + Основной магазин Pistol magazine Pistolenmagazin Magazynek pistoletowy + Магазин к пистолету %1 passed you a %2 magazine. %1 hat dir ein %2 Magazin gegeben. %1 podał Ci magazynek %2. + %1 передал вам магазин %2. Show "pass magazine" interaction Zeige "Magazine geben" Interaktion Pokaż interakcję "podaj magazynek" + Показывать действие "передать магазин" \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 533bd12a2d..a3ae483065 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2115,6 +2115,7 @@ %1 użył apteczki %1 utilizou KPS %1 používá PAK + %1 использовал аптечку Heavily wounded diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index b6e35147f9..a25c8e0cee 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -136,18 +136,22 @@ Nightvision Nachtsicht + Ночное виденье Settings for night vision. Einstellungen für Nachtsichtgeräte. + Настройки ночного виденья Disable NVGs in scope Deakt. NVGs mit Visier + Убирать ПНВ при прицеливании Blocks the usage of night vision goggles whilst aiming down the sight. Blockiert das Benutzen von Nachtsichtbrillen beim Benutzen des Visiers. + Блокирует использование головного ПНВ при прицеливании через прицел. - + \ No newline at end of file diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index da36dc4410..ebcf6dd2a9 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -5,85 +5,102 @@ Rearm Settings Aufmunitioniereinstellungen Ustawienia przezbrajania + Настройки перевооружения This module allows you to tweak rearm system settings. Ten moduł pozwala dostosować ustawienia przezbrajania. + Этот модуль позволяет изменить настройки системы перевооружения. Rearm Amount Aufmunitioniermenge Szybkość przezbrajania + Количество вооружения How fast should a vehicle be rearmed? Wie schnell soll ein Fahrzeug aufmunitioniert werden? Jak szybko pojazd zostanie przezbrojony? + Как быстро техника должна перевооружаться? Entire Vehicle Gesamtes Fahrzeug Cały pojazd + Полностью техника Entire Magazine Gesamtes Magazin Cały magazynek + Полный магазин Amount based on caliber Kaliberbasierte Anzahl Ilość zależna od kalibru + Количество зависит от калибра Rearm Aufmunitionieren Przezbrój + Перевооружить Rearming %1 with %2 ... Munitioniere %1 auf mit %2 ... Przezbrajanie %1 przy pomocy %2 ... + Перевооружается %1 снарядами %2 ... Rearming %1 ... Munitioniere %1 auf ... Przezbrajanie %1 ... + Перевооружается %1 ... Taking %1 for %2 ... Nehme %1 für %2 ... Pobieranie %1 dla %2 ... + Забираем %1 для %2 ... Take ammo Munition nehmen Pobierz amunicję + Взять боекомплект Pick up ammo Munition aufnehmen Podnieś amunicję + Поднять боекомплект Store ammo Munition verstauen Przechowaj amunicję + Сохранить боекомплект Storing %1 in %2 ... Verstaue %1 in %2 ... Przechowywanie %1 w %2 ... + Сохраняется %1 в %2 ... Picking up ammo ... Nehme Munition ... Podnoszenie amunicji ... + Поднятие боекомплекта ... Rearmed %1 rounds of %2 on %3 %1 Schuss %2 an %3 aufmunitioniert Przezbrojono %1 pocisków %2 na %3 + Перевооружено %1 снарядов %2 на %3 Smoke Screen @@ -111,61 +128,73 @@ 30mm HEI 30mm HEI 30mm HEI + 30мм ОФЗ 30mm HEI-T 30mm HEI-T 30mm HEI-T + 30мм ОФЗТ AIM-9 Sidewinder AIM-9 Sidewinder AIM-9 Sidewinder + AIM-9 Sidewinder Wympel R-73 Wympel R-73 Wympel R-73 + Р-73 (Вымпел) AGM-65 Maverick AGM-65 Maverick AGM-65 Maverick + AGM-65 Maverick Kh-25MTP Kh-25MTP Ch-25MTP + Х-25МТП Hydra 70 HE Hydra 70 HE Hydra 70 HE + Hydra 70 HE S-8 HE S-8 HE S-8 HE + С-8 ОФ Hydra 70 AP Hydra 70 AP Hydra 70 AP + Hydra 70 AP S-8 AP S-8 AP S-8 AP + С-8КОМ GBU-12 GBU-12 GBU-12 + GBU-12 FAB-250M-54 FAB-250M-54 FAB-250M-54 + ФАБ-250М-54 \ No newline at end of file diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index 908fad6d91..fe10e76afb 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -5,156 +5,187 @@ Refuel Settings Betankungseinst. Ustawienia tankowania + Настройки дозаправки Flow Rate Fließrate Szybkość przepływu + Скорость заправки How fast should a vehicle be refueled? Wie schnell soll ein Fahrzeug aufgetankt sein? Jak szybko pojazd powinien zostać zatankowany? + Как быстро техника должна быть заправлена? Refuel Betankung Zatankuj + Дозаправка Take fuel nozzle Zapfpistole nehmen Weź nalewak + Взять топливный шланг Taking fuel nozzle ... Nehme Zapfpistole ... Pobieranie nalewaka ... + Берем топливный шланг ... Connect fuel nozzle Zapfpistole anschließen Podłącz nalewak + Присоединить топливный шланг Connecting fuel nozzle ... Zapfpistole anschließen ... Podłączanie nalewaka ... + Присоединяем топливный шланг ... Disconnect fuel nozzle Zapfpistole entfernen Odepnij nalewak + Отсоединить топливный шланг Connect Anschließen Podłącz + Присоединить Check remaining fuel Verbleibenden Kraftstoff überprüfen Sprawdź ilość paliwa + Проверить остаток топлива Checking remaining fuel ... Überprüfe verbleibenden Kraftstoff ... Sprawdzanie ilości paliwa ... + Проверяем остаток топлива ... There are %1 liters left. Es sind noch %1 Liter übrig. Zostało %1 litrów. + Осталось %1 л. There is no fuel left. Es ist kein Kraftstoff übrig. W zbiorniku nie ma paliwa. + Топлива нет. Cancel Abbrechen Anuluj + Отменить Failed Gescheitert Porażka + Не удалось Stop fueling Betankung stoppen Zatrzymaj tankowanie + Остановить заправку Stopping fueling ... Stoppe Betankung ... Zatrzymywanie tankowania ... + Останавливаем заправку ... Start fueling Betankung beginnen Rozpocznij tankowanie + Начать заправку Starting fueling ... Beginne Betankung ... Rozpoczynanie tankowania ... + Начинаем заправку ... %1 Liters fueled %1 Liters getankt Zatankowano %1 litrów + %1 литров заправлено The fuel source is empty. Die Treibstoffquelle ist leer. Źródło paliwa jest puste. + Источник топлива пустой. Maximum fuel hose length reached. Maximale Schlauchlänge erreicht. Osiągnięto maksymalną długość przewodu paliwowego. + Достигнута максимальная длина шланга. Fueling completed Betankung abgeschlossen Tankowanie ukończone + Заправка завершена Fueling stopped Betankung angehalten Tankowanie zatrzymane + Заправка остановлена Fueling started Betankung begonnen Tankowanie rozpoczęte + Заправка начата Return fuel nozzle Zapfpistole zurückstecken Zwróć nalewak + Вернуть топливный шланг Returning fuel nozzle ... Stecke Zapfpistole zurück ... Zwracanie nalewaka ... + Возвращаем топливный шланг ... Check fuel counter Tankuhr ansehen Sprawdź wskaźnik paliwa + Проверить счетчик топлива Checking fuel counter ... Betrachte Tankuhr ... Sprawdzanie wskaźnika paliwa ... + Проверяем счетчик топлива ... %1 liters have been fueled. %1 Liter wurden getankt. %1 litrów zostało zatankowane. + Было заправлено %1 л. \ No newline at end of file diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 9d92c58332..d4bba3b23f 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -234,6 +234,7 @@ FoV Based + Зависит от зума View Distance: @@ -280,4 +281,4 @@ Видео настройки - + \ No newline at end of file From 8e6a057f52d5923184ce409c6f6db2fcd6300826 Mon Sep 17 00:00:00 2001 From: bux Date: Thu, 10 Dec 2015 18:48:00 +0100 Subject: [PATCH 030/107] fix common stringtable --- addons/common/stringtable.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 63a70f60ce..111300e87c 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -528,7 +528,7 @@ Warn (permanent) Ostrzeżenie (permanentne) Avisar (permanente) - Verwarnen (permanent)/German> + Verwarnen (permanent) Upozornit (permanentně) Avisar (permanente) Avertir (permanent) @@ -705,7 +705,6 @@ Nicht erzwingen Nie wymuszaj No forzar - Nicht erzwingen Nevynucovat Não forçar Не обязывать @@ -764,4 +763,4 @@ ACE3 Vehículos - \ No newline at end of file + From 68388bc97631b78c54af39def3773bd0c920e4ed Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 11 Dec 2015 01:02:15 +0100 Subject: [PATCH 031/107] add more filters to ammo boxes --- addons/filters/$PBOPREFIX$ | 1 + addons/filters/CfgEventHandlers.hpp | 12 ++++ addons/filters/XEH_postInit.sqf | 32 ++++++++++ addons/filters/XEH_preInit.sqf | 50 +++++++++++++++ addons/filters/config.cpp | 15 +++++ .../filters/functions/fnc_addCustomFilter.sqf | 6 ++ .../functions/fnc_currentItemListBox.sqf | 17 ++++++ .../functions/fnc_forceItemListUpdate.sqf | 29 +++++++++ .../functions/fnc_inventoryDisplayLoaded.sqf | 61 +++++++++++++++++++ .../filters/functions/fnc_onLBSelChanged.sqf | 14 +++++ addons/filters/functions/script_component.hpp | 1 + addons/filters/script_component.hpp | 12 ++++ addons/filters/stringtable.xml | 29 +++++++++ 13 files changed, 279 insertions(+) create mode 100644 addons/filters/$PBOPREFIX$ create mode 100644 addons/filters/CfgEventHandlers.hpp create mode 100644 addons/filters/XEH_postInit.sqf create mode 100644 addons/filters/XEH_preInit.sqf create mode 100644 addons/filters/config.cpp create mode 100644 addons/filters/functions/fnc_addCustomFilter.sqf create mode 100644 addons/filters/functions/fnc_currentItemListBox.sqf create mode 100644 addons/filters/functions/fnc_forceItemListUpdate.sqf create mode 100644 addons/filters/functions/fnc_inventoryDisplayLoaded.sqf create mode 100644 addons/filters/functions/fnc_onLBSelChanged.sqf create mode 100644 addons/filters/functions/script_component.hpp create mode 100644 addons/filters/script_component.hpp create mode 100644 addons/filters/stringtable.xml diff --git a/addons/filters/$PBOPREFIX$ b/addons/filters/$PBOPREFIX$ new file mode 100644 index 0000000000..06f96465a9 --- /dev/null +++ b/addons/filters/$PBOPREFIX$ @@ -0,0 +1 @@ +z\ace\addons\filters \ No newline at end of file diff --git a/addons/filters/CfgEventHandlers.hpp b/addons/filters/CfgEventHandlers.hpp new file mode 100644 index 0000000000..0cd959a047 --- /dev/null +++ b/addons/filters/CfgEventHandlers.hpp @@ -0,0 +1,12 @@ + +class Extended_PreInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_preInit)); + }; +}; + +class Extended_PostInit_EventHandlers { + class ADDON { + init = QUOTE(call COMPILE_FILE(XEH_postInit)); + }; +}; diff --git a/addons/filters/XEH_postInit.sqf b/addons/filters/XEH_postInit.sqf new file mode 100644 index 0000000000..5769f1fe13 --- /dev/null +++ b/addons/filters/XEH_postInit.sqf @@ -0,0 +1,32 @@ +#include "script_component.hpp" + +if (!hasInterface) exitWith {}; + +disableSerialization; + +GVAR(customFilters) = []; +GVAR(selectedFilterIndex) = -1; + +["inventoryDisplayLoaded", {_this call FUNC(inventoryDisplayLoaded)}] call EFUNC(common,addEventHandler); + +// add custom filters +DFUNC(filterBackpacks) = { + params ["_config"]; + getNumber (_config >> "isBackpack") == 1 +}; + +[localize LSTRING(Backpacks), QFUNC(filterBackpacks)] call FUNC(addCustomFilter); + +DFUNC(filterUniforms) = { + params ["_config"]; + getNumber (_config >> "ItemInfo" >> "type") == 801 +}; + +[localize LSTRING(Uniforms), QFUNC(filterUniforms)] call FUNC(addCustomFilter); + +DFUNC(filterVests) = { + params ["_config"]; + getNumber (_config >> "ItemInfo" >> "type") == 701 +}; + +[localize LSTRING(Vests), QFUNC(filterVests)] call FUNC(addCustomFilter); diff --git a/addons/filters/XEH_preInit.sqf b/addons/filters/XEH_preInit.sqf new file mode 100644 index 0000000000..df7b74d8e2 --- /dev/null +++ b/addons/filters/XEH_preInit.sqf @@ -0,0 +1,50 @@ +#include "script_component.hpp" + +ADDON = false; + +PREP(addCustomFilter); +PREP(currentItemListBox); +PREP(forceItemListUpdate); +PREP(inventoryDisplayLoaded); +PREP(onLBSelChanged); + +// cache config +if !(uiNamespace getVariable [QGVAR(configCached), false]) then { + // weapons, magazines, items + { + if (getNumber (_x >> "scope") > 0) then { + private _displayName = getText (_x >> "displayName"); + private _picture = getText (_x >> "picture"); + + if (_picture select [0,1] == "\") then { + _picture = _picture select [1]; + }; + + uiNamespace setVariable [format [QGVAR(ItemKey:%1), _displayName, _picture], _x]; + }; + false + } count ( + ("true" configClasses (configFile >> "CfgWeapons")) + + ("true" configClasses (configFile >> "CfgMagazines")) + + ("true" configClasses (configFile >> "CfgGlasses")) + ); + + // backpacks + { + if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then { + private _displayName = getText (_x >> "displayName"); + private _picture = getText (_x >> "picture"); + + if (_picture select [0,1] == "\") then { + _picture = _picture select [1]; + }; + + uiNamespace setVariable [format [QGVAR(ItemKey:%1), _displayName, _picture], _x]; + }; + false + } count ("true" configClasses (configFile >> "CfgVehicles")); + + uiNamespace setVariable [QGVAR(configCached), true]; +}; + +ADDON = true; diff --git a/addons/filters/config.cpp b/addons/filters/config.cpp new file mode 100644 index 0000000000..a7b7bae6df --- /dev/null +++ b/addons/filters/config.cpp @@ -0,0 +1,15 @@ +#include "script_component.hpp" + +class CfgPatches { + class ADDON { + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"ace_common"}; + author[] = {""}; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +#include "CfgEventHandlers.hpp" diff --git a/addons/filters/functions/fnc_addCustomFilter.sqf b/addons/filters/functions/fnc_addCustomFilter.sqf new file mode 100644 index 0000000000..6c9c9b876e --- /dev/null +++ b/addons/filters/functions/fnc_addCustomFilter.sqf @@ -0,0 +1,6 @@ +// by commy2 +#include "script_component.hpp" + +params [["_filterName", "ERROR: No Name", [""]], ["_fncName", "", [""]]]; + +GVAR(customFilters) pushBack [_filterName, _fncName]; diff --git a/addons/filters/functions/fnc_currentItemListBox.sqf b/addons/filters/functions/fnc_currentItemListBox.sqf new file mode 100644 index 0000000000..e284cd9a5f --- /dev/null +++ b/addons/filters/functions/fnc_currentItemListBox.sqf @@ -0,0 +1,17 @@ +// by commy2 +#include "script_component.hpp" + +params ["_display"]; + +scopeName "main"; + +{ + private _control = _display displayCtrl _x; + + if (ctrlShown _control) then { + _control breakOut "main" + }; + false +} count [632, 640, 633, 638, 619]; + +-1 diff --git a/addons/filters/functions/fnc_forceItemListUpdate.sqf b/addons/filters/functions/fnc_forceItemListUpdate.sqf new file mode 100644 index 0000000000..77d9bd3449 --- /dev/null +++ b/addons/filters/functions/fnc_forceItemListUpdate.sqf @@ -0,0 +1,29 @@ +// by commy2 +#include "script_component.hpp" + +disableSerialization; +params ["_display"]; + +private _index = GVAR(selectedFilterIndex); +private _itemList = _display call FUNC(currentItemListBox); +private _filterFunction = missionNamespace getVariable ((_display displayCtrl 6554) lbData _index); + +if (_filterFunction isEqualType {}) then { + private _i = 0; + + while {_i < lbSize _itemList} do { + private _config = uiNamespace getVariable [ + format [QGVAR(ItemKey:%1), _itemList lbText _i, _itemList lbPicture _i], + configNull + ]; + + if (!isNull _config && {!(_config call _filterFunction)}) then { + _itemList lbDelete _i; + + // in case the filter function returns nil. Otherwise could lock up the game. + _i = _i - 1; + }; + + _i = _i + 1; + }; +}; diff --git a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf new file mode 100644 index 0000000000..8c4433197b --- /dev/null +++ b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf @@ -0,0 +1,61 @@ +// by commy2 +#include "script_component.hpp" + +disableSerialization; +params ["_display"]; + +private _filter = _display displayCtrl 6554; + +// engine defined behaviour is the following: +// lb value, data and text don't matter, only the index. +// the first three indecies are hard coded: 0 - weapons , 1 - magazines, 2 - items +// all of them show backpacks, because BI +// all other indecies show everything, so all we have to do is delete stuff we dont like +_filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; + +// have to add these a frame later, because this event happens before the engine adds the default filters +[{ + disableSerialization; + params ["_filter"]; + + // remove "All", so we can push it to the back later. + // to keep localization we can keep the lbText (displayed name). + private _index = lbSize _filter - 1; + private _nameAll = _filter lbText _index; + _filter lbDelete _index; + + // add our custom filters + { + _x params ["_name", "_fncName"]; + + _index = _filter lbAdd _name; + _filter lbSetData [_index, _fncName]; + + false + } count GVAR(customFilters); + + // readd "All" filter to last position and select it + _index = _filter lbAdd _nameAll; + _filter lbSetCurSel _index; +}, [_filter]] call EFUNC(common,execNextFrame); + +// monitor changes that can happen and force our upate +private _dummyControl = _display ctrlCreate ["RscMapControl", -1]; + +_dummyControl ctrlSetPosition [0,0,0,0]; +_dummyControl ctrlCommit 0; + +_dummyControl ctrlAddEventHandler ["Draw", { + disableSerialization; + params ["_dummyControl"]; + + private _display = ctrlParent _dummyControl; + + private _itemList = _display call FUNC(currentItemListBox); + + // monitoring is done by setting a lb value. These are unused here and are reset every time the list box updates. 127 is just a random constant number. + if (_itemList lbValue 0 != 127) then { + _display call FUNC(forceItemListUpdate); + _itemList lbSetValue [0, 127]; + }; +}]; diff --git a/addons/filters/functions/fnc_onLBSelChanged.sqf b/addons/filters/functions/fnc_onLBSelChanged.sqf new file mode 100644 index 0000000000..a5e020f78c --- /dev/null +++ b/addons/filters/functions/fnc_onLBSelChanged.sqf @@ -0,0 +1,14 @@ +// by commy2 +#include "script_component.hpp" + +disableSerialization; +params ["_filter", "_index"]; + +GVAR(selectedFilterIndex) = _index; + +[{ + disableSerialization; + params ["_display"]; + + [_display] call FUNC(forceItemListUpdate); +}, [ctrlParent _filter]] call EFUNC(common,execNextFrame); diff --git a/addons/filters/functions/script_component.hpp b/addons/filters/functions/script_component.hpp new file mode 100644 index 0000000000..500275e357 --- /dev/null +++ b/addons/filters/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\filters\script_component.hpp" \ No newline at end of file diff --git a/addons/filters/script_component.hpp b/addons/filters/script_component.hpp new file mode 100644 index 0000000000..27873602d3 --- /dev/null +++ b/addons/filters/script_component.hpp @@ -0,0 +1,12 @@ +#define COMPONENT filters +#include "\z\ace\addons\main\script_mod.hpp" + +#ifdef DEBUG_ENABLED_FILTERS + #define DEBUG_MODE_FULL +#endif + +#ifdef DEBUG_ENABLED_FILTERS + #define DEBUG_SETTINGS DEBUG_ENABLED_FILTERS +#endif + +#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file diff --git a/addons/filters/stringtable.xml b/addons/filters/stringtable.xml new file mode 100644 index 0000000000..75b7101da3 --- /dev/null +++ b/addons/filters/stringtable.xml @@ -0,0 +1,29 @@ + + + + + Backpacks + Rucksäcke + + + Headgear + Helme + + + Glasses + Brillen + + + Uniforms + Uniformen + + + Vests + Westen + + + Grenades + Granaten + + + From ee0812ad15486f1e2e0feecf003aba9915081bc3 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 10 Dec 2015 20:57:23 -0600 Subject: [PATCH 032/107] RHS Compat - Combine all ERA Hitpoints Put all ERA hitpoints (up to 46 of them) onto a single point and put that point on the main interaction point --- addons/repair/stringtable.xml | 3 +++ optionals/compat_rhs_afrf3/CfgVehicles.hpp | 19 +++++++++++++++++- optionals/compat_rhs_usf3/CfgVehicles.hpp | 23 ++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml index 2c0c4300c5..64fecd5de8 100644 --- a/addons/repair/stringtable.xml +++ b/addons/repair/stringtable.xml @@ -682,6 +682,9 @@ Üveg Стекло + + ERA + Repair Settings Reperatureinstellungen diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp index 963913d74d..8bed04004c 100644 --- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -125,7 +125,20 @@ class cfgVehicles { }; }; }; - class rhs_t72bd_tv: rhs_a3t72tank_base {}; + class rhs_t72bb_tv: rhs_a3t72tank_base { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint"}}}; + }; + class rhs_t72bc_tv: rhs_a3t72tank_base { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint"}}}; + }; + class rhs_t72bd_tv: rhs_a3t72tank_base { + class rhs_t72bd_tv: rhs_a3t72tank_base { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint"}}}; + }; + }; class rhs_t90_tv: rhs_t72bd_tv { class Turrets: Turrets { class MainTurret: MainTurret { @@ -183,6 +196,10 @@ class cfgVehicles { class rhs_t80b : rhs_tank_base { EGVAR(refuel,fuelCapacity) = 1100; }; + class rhs_t80bv: rhs_t80b { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint"}}}; + }; class Truck_F; class RHS_Ural_BaseTurret : Truck_F { diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 3c56b91aa9..6f31ce399c 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -30,6 +30,19 @@ class cfgVehicles { }; }; }; + class rhsusf_m1a1aim_tuski_wd: rhsusf_m1a1tank_base { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint"}}}; + }; + class rhsusf_m1a2tank_base; + class rhsusf_m1a2sep1tuskid_usarmy: rhsusf_m1a2tank_base { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint"}}}; + }; + class rhsusf_m1a2sep1tuskiiwd_usarmy: rhsusf_m1a2sep1tuskid_usarmy { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint", "era_20_hitpoint", "era_21_hitpoint", "era_22_hitpoint", "era_23_hitpoint", "era_24_hitpoint", "era_25_hitpoint", "era_26_hitpoint", "era_27_hitpoint", "era_28_hitpoint", "era_29_hitpoint", "era_30_hitpoint", "era_31_hitpoint", "era_32_hitpoint", "era_33_hitpoint", "era_34_hitpoint", "era_35_hitpoint", "era_36_hitpoint", "era_37_hitpoint", "era_38_hitpoint", "era_39_hitpoint", "era_40_hitpoint", "era_41_hitpoint", "era_42_hitpoint", "era_43_hitpoint", "era_44_hitpoint", "era_45_hitpoint", "era_46_hitpoint"}}}; + }; class Heli_light_03_base_F; class RHS_UH1_Base : Heli_light_03_base_F { @@ -83,6 +96,16 @@ class cfgVehicles { class RHS_M2A2_Base : APC_Tracked_03_base_F { EGVAR(refuel,fuelCapacity) = 746; }; + class RHS_M2A2: RHS_M2A2_Base {}; + class RHS_M2A2_BUSKI: RHS_M2A2 { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint"}}}; + }; + class RHS_M2A3: RHS_M2A2 {}; + class RHS_M2A3_BUSKI: RHS_M2A3 { + ace_repair_hitpointPositions[] = {{"era_1_hitpoint", {0,0,0}}}; + ace_repair_hitpointGroups[] = {{"era_1_hitpoint", {"era_2_hitpoint", "era_3_hitpoint", "era_4_hitpoint", "era_5_hitpoint", "era_6_hitpoint", "era_7_hitpoint", "era_8_hitpoint", "era_9_hitpoint", "era_10_hitpoint", "era_11_hitpoint", "era_12_hitpoint", "era_13_hitpoint", "era_14_hitpoint", "era_15_hitpoint", "era_16_hitpoint", "era_17_hitpoint", "era_18_hitpoint", "era_19_hitpoint"}}}; + }; class Plane_CAS_01_base_F; class RHS_A10 : Plane_CAS_01_base_F { From e9be05209a9f81baa1a38e64ff89080e59f93ea4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 10 Dec 2015 22:58:44 -0600 Subject: [PATCH 033/107] Fix litter for adv - Add bloody p3d for Pack/qClot Fix #2950 Get correct bloodLossOnSelection for both basic and advanced Adds bloody versions of packing bandage and quickClot --- addons/medical/ACE_Medical_Treatments.hpp | 26 +++++++++++++----- addons/medical/CfgVehicles.hpp | 6 ++++ .../data/littergeneric_QuikclotBloody.p3d | Bin 0 -> 33228 bytes .../littergeneric_packingbandageBloody.p3d | Bin 0 -> 36146 bytes addons/medical/functions/fnc_createLitter.sqf | 9 ++++-- .../functions/fnc_treatment_success.sqf | 23 ++++++++++++---- 6 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 addons/medical/data/littergeneric_QuikclotBloody.p3d create mode 100644 addons/medical/data/littergeneric_packingbandageBloody.p3d diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 91f7c3aaf1..8e9815ac1f 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -27,7 +27,10 @@ class ACE_Medical_Actions { animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; - litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} }; + litter[] = { + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} + }; }; class Morphine: Bandage { displayName = CSTRING(Inject_Morphine); @@ -163,12 +166,18 @@ class ACE_Medical_Actions { animationCallerProne = "AinvPpneMstpSlayW[wpn]Dnon_medicOther"; animationCallerSelf = "AinvPknlMstpSlayW[wpn]Dnon_medic"; animationCallerSelfProne = "AinvPpneMstpSlayW[wpn]Dnon_medic"; - litter[] = { {"All", "_previousDamage > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} }; + litter[] = { + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} + }; }; class PackingBandage: fieldDressing { displayName = CSTRING(Actions_PackingBandage); items[] = {"ACE_packingBandage"}; - litter[] = { {"All", "", {"ACE_MedicalLitter_packingBandage"}}}; + litter[] = { + {"All", "_bloodLossOnSelection > 0", {"ACE_MedicalLitter_packingBandageBloody"}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_packingBandage"}} + }; }; class ElasticBandage: fieldDressing { displayName = CSTRING(Actions_ElasticBandage); @@ -177,7 +186,10 @@ class ACE_Medical_Actions { class QuikClot: fieldDressing { displayName = CSTRING(Actions_QuikClot); items[] = {"ACE_quikclot"}; - litter[] = { {"All", "", {"ACE_MedicalLitter_QuickClot"}}}; + litter[] = { + {"All", "_bloodLossOnSelection > 0", {"ACE_MedicalLitter_QuickClotBloody"}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_QuickClot"}} + }; }; class Tourniquet: fieldDressing { displayName = CSTRING(Apply_Tourniquet); @@ -296,9 +308,9 @@ class ACE_Medical_Actions { animationCallerSelf = ""; animationCallerSelfProne = ""; litter[] = { {"All", "", {"ACE_MedicalLitter_gloves"}}, - {"All", "_previousDamage > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}} }, - {"All", "_previousDamage > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, - {"All", "_previousDamage <= 0", {"ACE_MedicalLitter_clean"}} + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitterBase", "ACE_MedicalLitter_bandage1", "ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class CheckPulse: fieldDressing { diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index ba7d413364..a2d3c451d6 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -651,6 +651,9 @@ class CfgVehicles { class ACE_MedicalLitter_packingBandage: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_packingBandage.p3d)); }; + class ACE_MedicalLitter_packingBandageBloody: ACE_MedicalLitterBase { + model = QUOTE(PATHTOF(data\littergeneric_packingbandageBloody.p3d)); + }; class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_gloves.p3d)); }; @@ -666,6 +669,9 @@ class CfgVehicles { class ACE_MedicalLitter_QuickClot: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_Quikclot.p3d)); }; + class ACE_MedicalLitter_QuickClotBloody: ACE_MedicalLitterBase { + model = QUOTE(PATHTOF(data\littergeneric_QuikclotBloody.p3d)); + }; class Item_Base_F; class ACE_fieldDressingItem: Item_Base_F { scope = 2; diff --git a/addons/medical/data/littergeneric_QuikclotBloody.p3d b/addons/medical/data/littergeneric_QuikclotBloody.p3d new file mode 100644 index 0000000000000000000000000000000000000000..6a684719f0e46560598105a30b34269a0af6af0a GIT binary patch literal 33228 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 literal 0 HcmV?d00001 diff --git a/addons/medical/data/littergeneric_packingbandageBloody.p3d b/addons/medical/data/littergeneric_packingbandageBloody.p3d new file mode 100644 index 0000000000000000000000000000000000000000..f79e83b51215af518002828017c002575f8eea01 GIT binary patch literal 36146 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 * 4: ? * 5: Users of Items - * 6: Previous Damage + * 6: Blood Loss on selection (previously called _previousDamage) * * Return Value: * None @@ -22,7 +22,10 @@ #define MIN_ENTRIES_LITTER_CONFIG 3 private ["_config", "_litter", "_createLitter", "_position", "_createdLitter"]; -params ["_caller", "_target", "_selectionName", "_className", "", "_usersOfItems", "_previousDamage"]; +params ["_caller", "_target", "_selectionName", "_className", "", "_usersOfItems", "_bloodLossOnSelection"]; + +//Ensures comptibilty with other possible medical treatment configs +private _previousDamage = _bloodLossOnSelection; if !(GVAR(allowLitterCreation)) exitwith {}; if (vehicle _caller != _caller || vehicle _target != _target) exitwith {}; @@ -72,7 +75,7 @@ _createdLitter = []; _litterCondition = missionNamespace getvariable _litterCondition; if (!(_litterCondition isEqualType {})) then {_litterCondition = {false}}; }; - if !([_caller, _target, _selectionName, _className, _usersOfItems, _previousDamage] call _litterCondition) exitwith {}; + if !([_caller, _target, _selectionName, _className, _usersOfItems, _bloodLossOnSelection] call _litterCondition) exitwith {}; if (_litterOptions isEqualType []) then { // Loop through through the litter options and place the litter diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf index 559a83885f..cb95b0e6c9 100644 --- a/addons/medical/functions/fnc_treatment_success.sqf +++ b/addons/medical/functions/fnc_treatment_success.sqf @@ -65,15 +65,28 @@ if (isNil _callback) then { _callback = missionNamespace getvariable _callback; }; -//Get current damage before treatment (for litter) -_previousDamage = if (_selectionName in GVAR(SELECTIONS)) then { - _target getHitPointDamage ([_target, _selectionName, true] call FUNC(translateSelections)); +//Get current blood loose on limb (for "bloody" litter) +private _bloodLossOnSelection = 0; +private _partNumber = ([_selectionName] call FUNC(selectionNameToNumber)) max 0; +if ((GVAR(level) >= 2) && {([_target] call FUNC(hasMedicalEnabled))}) then { + //Advanced Medical - Add all bleeding from wounds on selection + private _openWounds = _target getvariable [QGVAR(openWounds), []]; + { + _x params ["", "", "_selectionX", "_amountOf", "_bleedingRatio"]; + if (_selectionX == _partNumber) then { + _bloodLossOnSelection = _bloodLossOnSelection + (_amountOf * _bleedingRatio); + }; + } forEach _openWounds; + TRACE_1("advanced",_bloodLossOnSelection); } else { - damage _target; + //Basic Medical (just use blodyPartStatus): + private _damageBodyParts = _target getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]]; + _bloodLossOnSelection = _damageBodyParts select _partNumber + TRACE_1("basic",_bloodLossOnSelection); }; _args call _callback; -_args pushBack _previousDamage; +_args pushBack _bloodLossOnSelection; _args call FUNC(createLitter); //If we're not already tracking vitals, start: From c7b637509280f831d270535174c0a4378379a2a4 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 10 Dec 2015 23:29:05 -0600 Subject: [PATCH 034/107] Sanitize less/greater-than symbol to square Fix #2912 The raw `<` showed up in nametags and anything besides strucText `[ / ]` is fairly close and will work in either text mode. --- addons/common/functions/fnc_sanitizeString.sqf | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/addons/common/functions/fnc_sanitizeString.sqf b/addons/common/functions/fnc_sanitizeString.sqf index fff3288db6..749b36ded7 100644 --- a/addons/common/functions/fnc_sanitizeString.sqf +++ b/addons/common/functions/fnc_sanitizeString.sqf @@ -7,7 +7,10 @@ * 1: Remove html tags (default: false) * * Return Value: - * Sanitized string + * Sanitized string + * + * Example: + * ["CoolGuy", true] call ace_common_fnc_sanitizeString; * * Public: Yes */ @@ -20,16 +23,16 @@ _array = []; { switch _x do { - case 60 : { + case 60 : { // less than symbol: `<` if (_removeTags) then { - _array append toArray "<"; + _array append toArray "["; } else { _array pushBack _x; }; }; - case 62 : { + case 62 : { // greater than symbol: `>` if (_removeTags) then { - _array append toArray ">"; + _array append toArray "]"; } else { _array pushBack _x; }; From 2b63b2efa86aabd2a050306c7201f5eb1f0dee21 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 11 Dec 2015 13:14:58 +0100 Subject: [PATCH 035/107] add more filters to ammo boxes --- addons/filters/XEH_postInit.sqf | 54 ++++++++++++------- addons/filters/XEH_preInit.sqf | 46 +++++++++------- .../filters/functions/fnc_addCustomFilter.sqf | 15 +++++- .../functions/fnc_currentItemListBox.sqf | 19 +++++-- .../filters/functions/fnc_filterBackpacks.sqf | 17 ++++++ .../filters/functions/fnc_filterGrenades.sqf | 17 ++++++ .../filters/functions/fnc_filterHeadgear.sqf | 17 ++++++ .../filters/functions/fnc_filterMedical.sqf | 17 ++++++ .../filters/functions/fnc_filterUniforms.sqf | 17 ++++++ addons/filters/functions/fnc_filterVests.sqf | 17 ++++++ .../functions/fnc_forceItemListUpdate.sqf | 17 ++++-- .../functions/fnc_inventoryDisplayLoaded.sqf | 23 +++++--- .../filters/functions/fnc_onLBSelChanged.sqf | 15 +++++- addons/filters/script_component.hpp | 11 +++- addons/filters/stringtable.xml | 6 ++- addons/main/script_macros.hpp | 39 +++++++++++--- 16 files changed, 285 insertions(+), 62 deletions(-) create mode 100644 addons/filters/functions/fnc_filterBackpacks.sqf create mode 100644 addons/filters/functions/fnc_filterGrenades.sqf create mode 100644 addons/filters/functions/fnc_filterHeadgear.sqf create mode 100644 addons/filters/functions/fnc_filterMedical.sqf create mode 100644 addons/filters/functions/fnc_filterUniforms.sqf create mode 100644 addons/filters/functions/fnc_filterVests.sqf diff --git a/addons/filters/XEH_postInit.sqf b/addons/filters/XEH_postInit.sqf index 5769f1fe13..d0e3fb042a 100644 --- a/addons/filters/XEH_postInit.sqf +++ b/addons/filters/XEH_postInit.sqf @@ -2,31 +2,49 @@ if (!hasInterface) exitWith {}; -disableSerialization; - GVAR(customFilters) = []; GVAR(selectedFilterIndex) = -1; ["inventoryDisplayLoaded", {_this call FUNC(inventoryDisplayLoaded)}] call EFUNC(common,addEventHandler); // add custom filters -DFUNC(filterBackpacks) = { - params ["_config"]; - getNumber (_config >> "isBackpack") == 1 -}; + +// generate list of grenades +GVAR(Grenades_ItemList) = []; + +{ + GVAR(Grenades_ItemList) append getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"); + false +} count getArray (configFile >> "CfgWeapons" >> "Throw" >> "muzzles"); + +// make list case insensitive +GVAR(Grenades_ItemList) = [GVAR(Grenades_ItemList), {toLower _this}] call EFUNC(common,map); + +// filter duplicates +GVAR(Grenades_ItemList) = GVAR(Grenades_ItemList) arrayIntersect GVAR(Grenades_ItemList); + +[localize LSTRING(Grenades), QFUNC(filterGrenades)] call FUNC(addCustomFilter); [localize LSTRING(Backpacks), QFUNC(filterBackpacks)] call FUNC(addCustomFilter); - -DFUNC(filterUniforms) = { - params ["_config"]; - getNumber (_config >> "ItemInfo" >> "type") == 801 -}; - [localize LSTRING(Uniforms), QFUNC(filterUniforms)] call FUNC(addCustomFilter); - -DFUNC(filterVests) = { - params ["_config"]; - getNumber (_config >> "ItemInfo" >> "type") == 701 -}; - [localize LSTRING(Vests), QFUNC(filterVests)] call FUNC(addCustomFilter); +[localize LSTRING(Headgear), QFUNC(filterHeadgear)] call FUNC(addCustomFilter); + +// generate list of medical items +GVAR(Medical_ItemList) = []; + +{ + GVAR(Medical_ItemList) append getArray (_x >> "items"); + false +} count ( + ("true" configClasses (configFile >> QEGVAR(Medical,Actions) >> "Basic")) + + ("true" configClasses (configFile >> QEGVAR(Medical,Actions) >> "Advanced")) +); + +// make list case insensitive +GVAR(Medical_ItemList) = [GVAR(Medical_ItemList), {if (_this isEqualType "") then {toLower _this}}] call EFUNC(common,map); + +// filter duplicates +GVAR(Medical_ItemList) = GVAR(Medical_ItemList) arrayIntersect GVAR(Medical_ItemList); + +[localize LSTRING(Medical), QFUNC(filterMedical)] call FUNC(addCustomFilter); diff --git a/addons/filters/XEH_preInit.sqf b/addons/filters/XEH_preInit.sqf index df7b74d8e2..2b0fa93678 100644 --- a/addons/filters/XEH_preInit.sqf +++ b/addons/filters/XEH_preInit.sqf @@ -9,19 +9,27 @@ PREP(inventoryDisplayLoaded); PREP(onLBSelChanged); // cache config +// items in the inventory display can only be distinguished by their lb names and pictures +// this can cause collisions (mainly weapons with attachments), +// but if the item has the same name and picture it at least shouldn't change the filter anyway +// luckily we don't need private items, so dummy and parent classes are out of the picture + if !(uiNamespace getVariable [QGVAR(configCached), false]) then { + private _fnc_addToCache = { + private _displayName = getText (_x >> "displayName"); + private _picture = getText (_x >> "picture"); + + // list box seems to delete the leading backslash + if (_picture select [0,1] == "\") then { + _picture = _picture select [1]; + }; + + uiNamespace setVariable [format [QGVAR(ItemKey:%1:%2), _displayName, _picture], _x]; + }; + // weapons, magazines, items { - if (getNumber (_x >> "scope") > 0) then { - private _displayName = getText (_x >> "displayName"); - private _picture = getText (_x >> "picture"); - - if (_picture select [0,1] == "\") then { - _picture = _picture select [1]; - }; - - uiNamespace setVariable [format [QGVAR(ItemKey:%1), _displayName, _picture], _x]; - }; + if (getNumber (_x >> "scope") > 0) then _fnc_addToCache; false } count ( ("true" configClasses (configFile >> "CfgWeapons")) + @@ -31,20 +39,18 @@ if !(uiNamespace getVariable [QGVAR(configCached), false]) then { // backpacks { - if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then { - private _displayName = getText (_x >> "displayName"); - private _picture = getText (_x >> "picture"); - - if (_picture select [0,1] == "\") then { - _picture = _picture select [1]; - }; - - uiNamespace setVariable [format [QGVAR(ItemKey:%1), _displayName, _picture], _x]; - }; + if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then _fnc_addToCache; false } count ("true" configClasses (configFile >> "CfgVehicles")); uiNamespace setVariable [QGVAR(configCached), true]; }; +PREP(filterHeadgear); +PREP(filterUniforms); +PREP(filterVests); +PREP(filterBackpacks); +PREP(filterGrenades); +PREP(filterMedical); + ADDON = true; diff --git a/addons/filters/functions/fnc_addCustomFilter.sqf b/addons/filters/functions/fnc_addCustomFilter.sqf index 6c9c9b876e..44e43bdbf0 100644 --- a/addons/filters/functions/fnc_addCustomFilter.sqf +++ b/addons/filters/functions/fnc_addCustomFilter.sqf @@ -1,4 +1,17 @@ -// by commy2 +/* + * Author: commy2 + * Adds a custom filter list to the inventory display. + * Functions are here as strings, because list boxes can only store numbers and strings. + * + * Arguments: + * 0: Localized filter display name + * 1: Filter function name + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" params [["_filterName", "ERROR: No Name", [""]], ["_fncName", "", [""]]]; diff --git a/addons/filters/functions/fnc_currentItemListBox.sqf b/addons/filters/functions/fnc_currentItemListBox.sqf index e284cd9a5f..1f1b528e93 100644 --- a/addons/filters/functions/fnc_currentItemListBox.sqf +++ b/addons/filters/functions/fnc_currentItemListBox.sqf @@ -1,4 +1,17 @@ -// by commy2 +/* + * Author: commy2 + * Returns the current item list box of given inventory display. + * These can be Ground, Soldier, Uniform, Backpack or Vest. + * Can also be Weapon since 1.52, but that apparently uses one of the above. + * + * Arguments: + * 0: Inventory display + * + * Return Value: + * Currently selected item list box + * + * Public: No + */ #include "script_component.hpp" params ["_display"]; @@ -9,9 +22,9 @@ scopeName "main"; private _control = _display displayCtrl _x; if (ctrlShown _control) then { - _control breakOut "main" + _control breakOut "main"; }; false -} count [632, 640, 633, 638, 619]; +} count [IDC_ITEMLIST_GROUND, IDC_ITEMLIST_SOLDIER, IDC_ITEMLIST_UNIFORM, IDC_ITEMLIST_VEST, IDC_ITEMLIST_BACKPACK]; -1 diff --git a/addons/filters/functions/fnc_filterBackpacks.sqf b/addons/filters/functions/fnc_filterBackpacks.sqf new file mode 100644 index 0000000000..9b629de66f --- /dev/null +++ b/addons/filters/functions/fnc_filterBackpacks.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Backpacks filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +getNumber (_config >> "isBackpack") == 1 diff --git a/addons/filters/functions/fnc_filterGrenades.sqf b/addons/filters/functions/fnc_filterGrenades.sqf new file mode 100644 index 0000000000..0acfbcaa2c --- /dev/null +++ b/addons/filters/functions/fnc_filterGrenades.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Grenades filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +toLower configName _config in GVAR(Grenades_ItemList) diff --git a/addons/filters/functions/fnc_filterHeadgear.sqf b/addons/filters/functions/fnc_filterHeadgear.sqf new file mode 100644 index 0000000000..056406a3d1 --- /dev/null +++ b/addons/filters/functions/fnc_filterHeadgear.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Headgear filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +getNumber (_config >> "ItemInfo" >> "type") in [TYPE_HEADGEAR, TYPE_HMD] || {isClass (configFile >> "CfgGlasses" >> configName _config)} diff --git a/addons/filters/functions/fnc_filterMedical.sqf b/addons/filters/functions/fnc_filterMedical.sqf new file mode 100644 index 0000000000..397be50f06 --- /dev/null +++ b/addons/filters/functions/fnc_filterMedical.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Medical filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +toLower configName _config in GVAR(Medical_ItemList) diff --git a/addons/filters/functions/fnc_filterUniforms.sqf b/addons/filters/functions/fnc_filterUniforms.sqf new file mode 100644 index 0000000000..4c135dfa88 --- /dev/null +++ b/addons/filters/functions/fnc_filterUniforms.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Uniforms filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +getNumber (_config >> "ItemInfo" >> "type") == TYPE_UNIFORM diff --git a/addons/filters/functions/fnc_filterVests.sqf b/addons/filters/functions/fnc_filterVests.sqf new file mode 100644 index 0000000000..646e23d04d --- /dev/null +++ b/addons/filters/functions/fnc_filterVests.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Filter condition for the Vests filter list + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +getNumber (_config >> "ItemInfo" >> "type") == TYPE_VEST diff --git a/addons/filters/functions/fnc_forceItemListUpdate.sqf b/addons/filters/functions/fnc_forceItemListUpdate.sqf index 77d9bd3449..89142b99ff 100644 --- a/addons/filters/functions/fnc_forceItemListUpdate.sqf +++ b/addons/filters/functions/fnc_forceItemListUpdate.sqf @@ -1,4 +1,15 @@ -// by commy2 +/* + * Author: commy2 + * Updates item list and removes every entry that does not fit in the currently selected filter list. + * + * Arguments: + * 0: Inventory display + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" disableSerialization; @@ -6,14 +17,14 @@ params ["_display"]; private _index = GVAR(selectedFilterIndex); private _itemList = _display call FUNC(currentItemListBox); -private _filterFunction = missionNamespace getVariable ((_display displayCtrl 6554) lbData _index); +private _filterFunction = missionNamespace getVariable ((_display displayCtrl IDC_FILTERLISTS) lbData _index); if (_filterFunction isEqualType {}) then { private _i = 0; while {_i < lbSize _itemList} do { private _config = uiNamespace getVariable [ - format [QGVAR(ItemKey:%1), _itemList lbText _i, _itemList lbPicture _i], + format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i], configNull ]; diff --git a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf index 8c4433197b..3cb15853d3 100644 --- a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf +++ b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf @@ -1,10 +1,21 @@ -// by commy2 +/* + * Author: commy2 + * Executed every time an inventory display is opened. + * + * Arguments: + * 0: Inventory display + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" disableSerialization; params ["_display"]; -private _filter = _display displayCtrl 6554; +private _filter = _display displayCtrl IDC_FILTERLISTS; // engine defined behaviour is the following: // lb value, data and text don't matter, only the index. @@ -39,7 +50,7 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; _filter lbSetCurSel _index; }, [_filter]] call EFUNC(common,execNextFrame); -// monitor changes that can happen and force our upate +// monitor changes that can happen and force our update private _dummyControl = _display ctrlCreate ["RscMapControl", -1]; _dummyControl ctrlSetPosition [0,0,0,0]; @@ -53,9 +64,9 @@ _dummyControl ctrlAddEventHandler ["Draw", { private _itemList = _display call FUNC(currentItemListBox); - // monitoring is done by setting a lb value. These are unused here and are reset every time the list box updates. 127 is just a random constant number. - if (_itemList lbValue 0 != 127) then { + // monitoring is done by setting a lb value. These are unused here and are reset every time the list box updates. + if (_itemList lbValue 0 != DUMMY_VALUE) then { _display call FUNC(forceItemListUpdate); - _itemList lbSetValue [0, 127]; + _itemList lbSetValue [0, DUMMY_VALUE]; }; }]; diff --git a/addons/filters/functions/fnc_onLBSelChanged.sqf b/addons/filters/functions/fnc_onLBSelChanged.sqf index a5e020f78c..61e4b12b10 100644 --- a/addons/filters/functions/fnc_onLBSelChanged.sqf +++ b/addons/filters/functions/fnc_onLBSelChanged.sqf @@ -1,4 +1,17 @@ -// by commy2 +/* + * Author: commy2 + * Executed when the filter list box is changed. + * Sets new filter list index. + * + * Arguments: + * 0: Filter list box + * 1: Filter list index + * + * Return Value: + * None + * + * Public: No + */ #include "script_component.hpp" disableSerialization; diff --git a/addons/filters/script_component.hpp b/addons/filters/script_component.hpp index 27873602d3..e96072de4b 100644 --- a/addons/filters/script_component.hpp +++ b/addons/filters/script_component.hpp @@ -9,4 +9,13 @@ #define DEBUG_SETTINGS DEBUG_ENABLED_FILTERS #endif -#include "\z\ace\addons\main\script_macros.hpp" \ No newline at end of file +#include "\z\ace\addons\main\script_macros.hpp" + +#define IDC_FILTERLISTS 6554 +#define IDC_ITEMLIST_GROUND 632 +#define IDC_ITEMLIST_SOLDIER 640 +#define IDC_ITEMLIST_UNIFORM 633 +#define IDC_ITEMLIST_VEST 638 +#define IDC_ITEMLIST_BACKPACK 619 + +#define DUMMY_VALUE 127 diff --git a/addons/filters/stringtable.xml b/addons/filters/stringtable.xml index 75b7101da3..a7f9e30ec6 100644 --- a/addons/filters/stringtable.xml +++ b/addons/filters/stringtable.xml @@ -7,7 +7,7 @@ Headgear - Helme + Kopfbedeckungen Glasses @@ -25,5 +25,9 @@ Grenades Granaten + + Medical + Sanimaterial + diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a65d126110..0864fcdfbe 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -38,25 +38,48 @@ #define MACRO_ADDWEAPON(WEAPON,COUNT) class _xx_##WEAPON { \ - weapon = #WEAPON; \ - count = COUNT; \ + weapon = #WEAPON; \ + count = COUNT; \ } #define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \ - name = #ITEM; \ - count = COUNT; \ + name = #ITEM; \ + count = COUNT; \ } #define MACRO_ADDMAGAZINE(MAGAZINE,COUNT) class _xx_##MAGAZINE { \ - magazine = #MAGAZINE; \ - count = COUNT; \ + magazine = #MAGAZINE; \ + count = COUNT; \ } #define MACRO_ADDBACKPACK(BACKPACK,COUNT) class _xx_##BACKPACK { \ - backpack = #BACKPACK; \ - count = COUNT; \ + backpack = #BACKPACK; \ + count = COUNT; \ } +// item types +#define TYPE_DEFAULT 0 +#define TYPE_MUZZLE 101 +#define TYPE_OPTICS 201 +#define TYPE_FLASHLIGHT 301 +#define TYPE_BIPOD 302 +#define TYPE_FIRST_AID_KIT 401 +#define TYPE_FINS 501 // not implemented +#define TYPE_BREATHING_BOMB 601 // not implemented +#define TYPE_NVG 602 +#define TYPE_GOGGLE 603 +#define TYPE_SCUBA 604 // not implemented +#define TYPE_HEADGEAR 605 +#define TYPE_FACTOR 607 +#define TYPE_RADIO 611 +#define TYPE_HMD 616 +#define TYPE_BINOCULAR 617 +#define TYPE_MEDIKIT 619 +#define TYPE_TOOLKIT 620 +#define TYPE_UAV_TERMINAL 621 +#define TYPE_VEST 701 +#define TYPE_UNIFORM 801 +#define TYPE_BACKPACK 901 #ifdef DISABLE_COMPILE_CACHE #define PREP(fncName) DFUNC(fncName) = compile preprocessFileLineNumbers QUOTE(PATHTOF(functions\DOUBLES(fnc,fncName).sqf)) From 5d9a05716591bdf061238b976fee8c34cdbefc47 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 11 Dec 2015 14:18:11 +0100 Subject: [PATCH 036/107] add more filters to ammo boxes --- addons/filters/XEH_preInit.sqf | 22 +++++++++++++------ addons/filters/functions/fnc_filterItems.sqf | 17 ++++++++++++++ .../filters/functions/fnc_filterMagazines.sqf | 15 +++++++++++++ .../filters/functions/fnc_filterWeapons.sqf | 15 +++++++++++++ .../functions/fnc_forceItemListUpdate.sqf | 2 +- .../functions/fnc_inventoryDisplayLoaded.sqf | 5 +++++ 6 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 addons/filters/functions/fnc_filterItems.sqf create mode 100644 addons/filters/functions/fnc_filterMagazines.sqf create mode 100644 addons/filters/functions/fnc_filterWeapons.sqf diff --git a/addons/filters/XEH_preInit.sqf b/addons/filters/XEH_preInit.sqf index 2b0fa93678..d574cacf3b 100644 --- a/addons/filters/XEH_preInit.sqf +++ b/addons/filters/XEH_preInit.sqf @@ -16,36 +16,44 @@ PREP(onLBSelChanged); if !(uiNamespace getVariable [QGVAR(configCached), false]) then { private _fnc_addToCache = { - private _displayName = getText (_x >> "displayName"); - private _picture = getText (_x >> "picture"); + private _displayName = getText (_this >> "displayName"); + private _picture = getText (_this >> "picture"); // list box seems to delete the leading backslash if (_picture select [0,1] == "\") then { _picture = _picture select [1]; }; - uiNamespace setVariable [format [QGVAR(ItemKey:%1:%2), _displayName, _picture], _x]; + uiNamespace setVariable [format [QGVAR(ItemKey:%1:%2), _displayName, _picture], _this]; }; - // weapons, magazines, items + // weapons and items { - if (getNumber (_x >> "scope") > 0) then _fnc_addToCache; + if (getNumber (_x >> "scope") > 0) then {_x call _fnc_addToCache}; false } count ( ("true" configClasses (configFile >> "CfgWeapons")) + - ("true" configClasses (configFile >> "CfgMagazines")) + ("true" configClasses (configFile >> "CfgGlasses")) ); + // magazines + { + if (getNumber (_x >> "scope") == 2) then {_x call _fnc_addToCache}; + false + } count ("true" configClasses (configFile >> "CfgMagazines")); + // backpacks { - if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then _fnc_addToCache; + if (getNumber (_x >> "scope") > 0 && {getNumber (_x >> "isBackpack") == 1}) then {_x call _fnc_addToCache}; false } count ("true" configClasses (configFile >> "CfgVehicles")); uiNamespace setVariable [QGVAR(configCached), true]; }; +PREP(filterWeapons); +PREP(filterMagazines); +PREP(filterItems); PREP(filterHeadgear); PREP(filterUniforms); PREP(filterVests); diff --git a/addons/filters/functions/fnc_filterItems.sqf b/addons/filters/functions/fnc_filterItems.sqf new file mode 100644 index 0000000000..b2990d977e --- /dev/null +++ b/addons/filters/functions/fnc_filterItems.sqf @@ -0,0 +1,17 @@ +/* + * Author: commy2 + * Remove uniforms, vests and backpacks from Items filter. + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +params ["_config"]; + +!(_this call FUNC(filterUniforms)) && {!(_this call FUNC(filterVests))} && {!(_this call FUNC(filterBackpacks))} diff --git a/addons/filters/functions/fnc_filterMagazines.sqf b/addons/filters/functions/fnc_filterMagazines.sqf new file mode 100644 index 0000000000..dfd357f61d --- /dev/null +++ b/addons/filters/functions/fnc_filterMagazines.sqf @@ -0,0 +1,15 @@ +/* + * Author: commy2 + * Remove backpacks and grenades from Magazines filter. + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +!(_this call FUNC(filterBackpacks)) && {!(_this call FUNC(filterGrenades))} diff --git a/addons/filters/functions/fnc_filterWeapons.sqf b/addons/filters/functions/fnc_filterWeapons.sqf new file mode 100644 index 0000000000..94a92814ae --- /dev/null +++ b/addons/filters/functions/fnc_filterWeapons.sqf @@ -0,0 +1,15 @@ +/* + * Author: commy2 + * Remove backpacks from Weapons filter. + * + * Arguments: + * 0: Item config entry + * + * Return Value: + * Item should appear in this list? + * + * Public: No + */ +#include "script_component.hpp" + +!(_this call FUNC(filterBackpacks)) diff --git a/addons/filters/functions/fnc_forceItemListUpdate.sqf b/addons/filters/functions/fnc_forceItemListUpdate.sqf index 89142b99ff..9aae70c042 100644 --- a/addons/filters/functions/fnc_forceItemListUpdate.sqf +++ b/addons/filters/functions/fnc_forceItemListUpdate.sqf @@ -27,7 +27,7 @@ if (_filterFunction isEqualType {}) then { format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i], configNull ]; - +diag_log text format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i]; if (!isNull _config && {!(_config call _filterFunction)}) then { _itemList lbDelete _i; diff --git a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf index 3cb15853d3..6e48c1ec2a 100644 --- a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf +++ b/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf @@ -35,6 +35,11 @@ _filter ctrlAddEventHandler ["LBSelChanged", {_this call FUNC(onLBSelChanged)}]; private _nameAll = _filter lbText _index; _filter lbDelete _index; + // add additional filter functions to the default filters. These remove backpacks etc. + _filter lbSetData [0, QFUNC(filterWeapons)]; + _filter lbSetData [1, QFUNC(filterMagazines)]; + _filter lbSetData [2, QFUNC(filterItems)]; + // add our custom filters { _x params ["_name", "_fncName"]; From ee7f8f82f59f81dec64d3d211b31353ef511b92d Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 11 Dec 2015 14:24:54 +0100 Subject: [PATCH 037/107] remove debug --- addons/filters/functions/fnc_forceItemListUpdate.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/filters/functions/fnc_forceItemListUpdate.sqf b/addons/filters/functions/fnc_forceItemListUpdate.sqf index 9aae70c042..89142b99ff 100644 --- a/addons/filters/functions/fnc_forceItemListUpdate.sqf +++ b/addons/filters/functions/fnc_forceItemListUpdate.sqf @@ -27,7 +27,7 @@ if (_filterFunction isEqualType {}) then { format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i], configNull ]; -diag_log text format [QGVAR(ItemKey:%1:%2), _itemList lbText _i, _itemList lbPicture _i]; + if (!isNull _config && {!(_config call _filterFunction)}) then { _itemList lbDelete _i; From ff95aab100fb31800dd436f617496df604393727 Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 11 Dec 2015 15:05:43 +0100 Subject: [PATCH 038/107] remove helmets from items filter --- addons/filters/functions/fnc_filterItems.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/filters/functions/fnc_filterItems.sqf b/addons/filters/functions/fnc_filterItems.sqf index b2990d977e..b9bf9baeea 100644 --- a/addons/filters/functions/fnc_filterItems.sqf +++ b/addons/filters/functions/fnc_filterItems.sqf @@ -14,4 +14,4 @@ params ["_config"]; -!(_this call FUNC(filterUniforms)) && {!(_this call FUNC(filterVests))} && {!(_this call FUNC(filterBackpacks))} +!(getNumber (_config >> "ItemInfo" >> "type") in [TYPE_UNIFORM, TYPE_VESTS, TYPE_HEADGEAR]) && {!(_this call FUNC(filterBackpacks))} From db50b5313d6fdd9a32305a2c3ed8b151bc36b629 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 11 Dec 2015 12:01:50 -0600 Subject: [PATCH 039/107] getName can return raw or sanatized html tags --- addons/common/functions/fnc_getName.sqf | 13 ++++++++----- addons/common/functions/fnc_receiveRequest.sqf | 4 ++-- addons/common/functions/fnc_sanitizeString.sqf | 4 ++-- addons/common/functions/fnc_setName.sqf | 12 +++++++++--- addons/disarming/functions/fnc_openDisarmDialog.sqf | 2 +- addons/finger/functions/fnc_incomingFinger.sqf | 2 +- .../functions/fnc_actionCheckBloodPressureLocal.sqf | 4 ++-- .../medical/functions/fnc_actionCheckResponse.sqf | 4 ++-- .../functions/fnc_treatmentAdvanced_CPRLocal.sqf | 4 ++-- .../functions/fnc_treatmentAdvanced_bandage.sqf | 4 ++-- .../fnc_treatmentAdvanced_fullHealLocal.sqf | 4 ++-- .../functions/fnc_treatmentAdvanced_medication.sqf | 4 ++-- addons/medical/functions/fnc_treatmentIV.sqf | 4 ++-- .../medical/functions/fnc_treatmentTourniquet.sqf | 4 ++-- addons/movement/XEH_postInit.sqf | 2 +- addons/nametags/functions/fnc_drawNameTagIcon.sqf | 2 +- .../functions/fnc_showFriendlyFireMessage.sqf | 2 +- 17 files changed, 42 insertions(+), 33 deletions(-) diff --git a/addons/common/functions/fnc_getName.sqf b/addons/common/functions/fnc_getName.sqf index a7facd2c6d..8857fb306b 100644 --- a/addons/common/functions/fnc_getName.sqf +++ b/addons/common/functions/fnc_getName.sqf @@ -5,24 +5,27 @@ * Arguments: * 0: Object * 1: Use effective commander name when used on vehicles (default: false) + * 1: Get Raw Name (Don't sanatize HTML tags ``) (default: false) * * Return Value: * Object Name * + * Example: + * [player, false, true] call ace_common_fnc_getName; + * * Public: Yes */ #include "script_component.hpp" -params ["_unit", ["_showEffective", false]]; +params ["_unit", ["_showEffective", false], ["_useRaw", false]]; -private "_name"; -_name = ""; +private _name = ""; if (_unit isKindOf "CAManBase") then { - _name = _unit getVariable ["ACE_Name", localize QUOTE(DOUBLES(STR,GVAR(Unknown)))]; + _name = _unit getVariable [(["ACE_Name", "ACE_NameRaw"] select _useRaw), localize QUOTE(DOUBLES(STR,GVAR(Unknown)))]; } else { if (_showEffective) then { - _name = [effectiveCommander _unit] call FUNC(getName); + _name = [effectiveCommander _unit, false, _useRaw] call FUNC(getName); } else { _name = getText (configFile >> "CfgVehicles" >> typeOf _unit >> "displayName"); }; diff --git a/addons/common/functions/fnc_receiveRequest.sqf b/addons/common/functions/fnc_receiveRequest.sqf index 1377f4ec35..0f0ede52b8 100644 --- a/addons/common/functions/fnc_receiveRequest.sqf +++ b/addons/common/functions/fnc_receiveRequest.sqf @@ -19,9 +19,9 @@ _requestID = ("ace_recieveRequest_f_id_"+_requestID); _target setVariable [_requestID, _this]; if (isLocalized _requestMessage) then { - _requestMessage = format [localize _requestMessage, [_caller] call FUNC(getName)]; + _requestMessage = format [localize _requestMessage, [_caller, false, true] call FUNC(getName)]; } else { - _requestMessage = format [_requestMessage, [_caller] call FUNC(getName)]; + _requestMessage = format [_requestMessage, [_caller, false, true] call FUNC(getName)]; }; hint format ["%1", _requestMessage]; // @todo ? diff --git a/addons/common/functions/fnc_sanitizeString.sqf b/addons/common/functions/fnc_sanitizeString.sqf index 749b36ded7..2450ba5be5 100644 --- a/addons/common/functions/fnc_sanitizeString.sqf +++ b/addons/common/functions/fnc_sanitizeString.sqf @@ -25,14 +25,14 @@ _array = []; switch _x do { case 60 : { // less than symbol: `<` if (_removeTags) then { - _array append toArray "["; + _array append toArray "<"; } else { _array pushBack _x; }; }; case 62 : { // greater than symbol: `>` if (_removeTags) then { - _array append toArray "]"; + _array append toArray ">"; } else { _array pushBack _x; }; diff --git a/addons/common/functions/fnc_setName.sqf b/addons/common/functions/fnc_setName.sqf index 117445b561..b9ecbdc3a6 100644 --- a/addons/common/functions/fnc_setName.sqf +++ b/addons/common/functions/fnc_setName.sqf @@ -17,9 +17,15 @@ params ["_unit"]; if (isNull _unit || {!alive _unit}) exitWith {}; if (_unit isKindOf "CAManBase") then { - _name = [name _unit, true] call FUNC(sanitizeString); - + private _sanitizedName = [name _unit, true] call FUNC(sanitizeString); + private _rawName = [name _unit, false] call FUNC(sanitizeString); + + //Debug Testing Code (with html tags): + // private _sanitizedName = ["Name", true] call FUNC(sanitizeString); + // private _rawName = ["Name", false] call FUNC(sanitizeString); + //if (_name != _unit getVariable ["ACE_Name", ""]) then { - _unit setVariable ["ACE_Name", _name, true]; + _unit setVariable ["ACE_Name", _sanitizedName, true]; + _unit setVariable ["ACE_NameRaw", _rawName, true]; //}; }; diff --git a/addons/disarming/functions/fnc_openDisarmDialog.sqf b/addons/disarming/functions/fnc_openDisarmDialog.sqf index c2a3a6396e..213aa85c61 100644 --- a/addons/disarming/functions/fnc_openDisarmDialog.sqf +++ b/addons/disarming/functions/fnc_openDisarmDialog.sqf @@ -72,7 +72,7 @@ GVAR(disarmTarget) = _target; _icon = format [DEFUALTPATH, toLower (rank _target)]; if (_icon isEqualTo DEFUALTPATH) then {_icon = ""}; _rankPicture ctrlSetText _icon; - _playerName ctrlSetText ([GVAR(disarmTarget)] call EFUNC(common,getName)); + _playerName ctrlSetText ([GVAR(disarmTarget), false, true] call EFUNC(common,getName)); //Clear both inventory lists: lbClear _groundContainer; diff --git a/addons/finger/functions/fnc_incomingFinger.sqf b/addons/finger/functions/fnc_incomingFinger.sqf index 5a1e23a278..02c870a519 100644 --- a/addons/finger/functions/fnc_incomingFinger.sqf +++ b/addons/finger/functions/fnc_incomingFinger.sqf @@ -27,7 +27,7 @@ _fingerPos = if (_sourceUnit == ACE_player) then { _fingerPosPrecise vectorAdd [random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2*FP_RANDOMIZATION_Y) - FP_RANDOMIZATION_Y] }; -_data = [ACE_diagTime, _fingerPos, ([_sourceUnit] call EFUNC(common,getName))]; +_data = [ACE_diagTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName))]; HASH_SET(GVAR(fingersHash), _sourceUnit, _data); if (GVAR(pfeh_id) == -1) then { diff --git a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf index 24b5bf4c6e..0fd9394f92 100644 --- a/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf +++ b/addons/medical/functions/fnc_actionCheckBloodPressureLocal.sqf @@ -60,6 +60,6 @@ if (_selectionName in ["hand_l","hand_r"] && {[_unit, _selectionName] call FUNC( ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName), round(_bloodPressureHigh),round(_bloodPressureLow)], 1.75, _caller]] call EFUNC(common,targetEvent); if (_logOutPut != "") then { - [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); - [_target,"quick_view", LSTRING(Check_Bloodpressure_Log), [[_caller] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); + [_target,"activity", LSTRING(Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); + [_target,"quick_view", LSTRING(Check_Bloodpressure_Log), [[_caller, false, true] call EFUNC(common,getName), _logOutPut]] call FUNC(addToLog); }; diff --git a/addons/medical/functions/fnc_actionCheckResponse.sqf b/addons/medical/functions/fnc_actionCheckResponse.sqf index 6910545a9d..d69fa90c86 100644 --- a/addons/medical/functions/fnc_actionCheckResponse.sqf +++ b/addons/medical/functions/fnc_actionCheckResponse.sqf @@ -21,5 +21,5 @@ _output = [LSTRING(Check_Response_Unresponsive), LSTRING(Check_Response_Responsi ["displayTextStructured", [_caller], [[_output, [_target] call EFUNC(common,getName)], 2, _caller]] call EFUNC(common,targetEvent); -[_target,"activity",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target,"quick_view",_output, [[_target] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target,"activity",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target,"quick_view",_output, [[_target, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf index 9024489a3b..b787376166 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_CPRLocal.sqf @@ -30,7 +30,7 @@ if (GVAR(level) > 1 && {(random 1) >= 0.6}) then { _target setvariable [QGVAR(bloodPressure), [50,70]]; }; -[_target, "activity", LSTRING(Activity_CPR), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", LSTRING(Activity_CPR), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message +[_target, "activity", LSTRING(Activity_CPR), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_CPR), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message true; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index cf18475866..2bb237cc34 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -19,8 +19,8 @@ #include "script_component.hpp" params ["_caller", "_target", "_selectionName", "_className", "_items", "", ["_specificSpot", -1]]; -[_target, "activity", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", LSTRING(Activity_bandagedPatient), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message +[_target, "activity", LSTRING(Activity_bandagedPatient), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_bandagedPatient), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message if !([_target] call FUNC(hasMedicalEnabled)) exitwith { _this call FUNC(treatmentBasic_bandage); diff --git a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf index ed5eb0858d..853f071195 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_fullHealLocal.sqf @@ -68,6 +68,6 @@ if (alive _target) exitwith { // Resetting damage _target setDamage 0; - [_target, "activity", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); - [_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message + [_target, "activity", LSTRING(Activity_fullHeal), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); + [_target, "activity_view", LSTRING(Activity_fullHeal), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message }; diff --git a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf index b5b0af1401..5cd64a75b6 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_medication.sqf @@ -24,8 +24,8 @@ params ["_caller", "_target", "_selectionName", "_className", "_items"]; { if (_x != "") then { [_target, _x] call FUNC(addToTriageCard); - [_target, "activity", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); - [_target, "activity_view", LSTRING(Activity_usedItem), [[_caller] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); + [_target, "activity", LSTRING(Activity_usedItem), [[_caller, false, true] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); + [_target, "activity_view", LSTRING(Activity_usedItem), [[_caller, false, true] call EFUNC(common,getName), getText (configFile >> "CfgWeapons" >> _x >> "displayName")]] call FUNC(addToLog); }; } foreach _items; diff --git a/addons/medical/functions/fnc_treatmentIV.sqf b/addons/medical/functions/fnc_treatmentIV.sqf index 2a7bbc6adf..e0225d243d 100644 --- a/addons/medical/functions/fnc_treatmentIV.sqf +++ b/addons/medical/functions/fnc_treatmentIV.sqf @@ -24,7 +24,7 @@ if (count _items == 0) exitwith {false}; _removeItem = _items select 0; [[_target, _className], QUOTE(DFUNC(treatmentIVLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message +[_target, "activity", LSTRING(Activity_gaveIV), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_gaveIV), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message true diff --git a/addons/medical/functions/fnc_treatmentTourniquet.sqf b/addons/medical/functions/fnc_treatmentTourniquet.sqf index 5d3ba6e1d4..3a4dd5b50a 100644 --- a/addons/medical/functions/fnc_treatmentTourniquet.sqf +++ b/addons/medical/functions/fnc_treatmentTourniquet.sqf @@ -43,8 +43,8 @@ _removeItem = _items select 0; [[_target, _removeItem, _selectionName], QUOTE(DFUNC(treatmentTourniquetLocal)), _target] call EFUNC(common,execRemoteFnc); /* TODO Replace by event system */ [_target, _removeItem] call FUNC(addToTriageCard); -[_target, "activity", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); -[_target, "activity_view", LSTRING(Activity_appliedTourniquet), [[_caller] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message +[_target, "activity", LSTRING(Activity_appliedTourniquet), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); +[_target, "activity_view", LSTRING(Activity_appliedTourniquet), [[_caller, false, true] call EFUNC(common,getName)]] call FUNC(addToLog); // TODO expand message true diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index ebe97e879d..80953b9969 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -14,7 +14,7 @@ if (!hasInterface) exitWith {}; [_this select 1] call CBA_fnc_removePerFrameHandler; }; - _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player] call EFUNC(common,getName), localize LSTRING(Weight), [ACE_player] call FUNC(getWeight)]; + _dialog displayCtrl 111 ctrlSetText format ["%1 - %2 %3", [ACE_player, false, true] call EFUNC(common,getName), localize LSTRING(Weight), [ACE_player] call FUNC(getWeight)]; }, 0, _this select 0] call CBA_fnc_addPerFrameHandler; diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf index 8294a8db06..ac28a427d5 100644 --- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf +++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf @@ -44,7 +44,7 @@ if (_alpha < 0) exitWith {}; //Don't waste time if not visable //Set Text: _name = if (_iconType in [ICON_NAME, ICON_NAME_RANK, ICON_NAME_SPEAK]) then { - [_target, true] call EFUNC(common,getName) + [_target, true, true] call EFUNC(common,getName) } else { "" }; diff --git a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf index 1c5a7b7cc2..1079ef6e6d 100644 --- a/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf +++ b/addons/respawn/functions/fnc_showFriendlyFireMessage.sqf @@ -19,7 +19,7 @@ params ["_unit", "_killer"]; if (_unit != _killer && {side group _unit in [side group ACE_player, civilian]} && {side group _killer == side group ACE_player}) then { - systemChat format ["%1 was killed by %2", [_unit] call EFUNC(common,getName), [_killer] call EFUNC(common,getName)]; + systemChat format ["%1 was killed by %2", [_unit, false, true] call EFUNC(common,getName), [_killer, false, true] call EFUNC(common,getName)]; // Raise ACE globalEvent ["killedByFriendly", [_unit, _killer]] call EFUNC(common,globalEvent); From 24d77d1b7c45b9831f24df5e9c196bda226197cf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 11 Dec 2015 12:17:05 -0600 Subject: [PATCH 040/107] Fix Typo --- addons/common/functions/fnc_getName.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_getName.sqf b/addons/common/functions/fnc_getName.sqf index 8857fb306b..4c49e8dc11 100644 --- a/addons/common/functions/fnc_getName.sqf +++ b/addons/common/functions/fnc_getName.sqf @@ -5,7 +5,7 @@ * Arguments: * 0: Object * 1: Use effective commander name when used on vehicles (default: false) - * 1: Get Raw Name (Don't sanatize HTML tags ``) (default: false) + * 2: Get Raw Name (Don't sanatize HTML tags ``) (default: false) * * Return Value: * Object Name From a501c7e1c31bb0b167d5c5ad6f4e26ff3fc29fa5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 11 Dec 2015 19:47:40 -0600 Subject: [PATCH 041/107] Remove new models and just combine existing litter --- addons/medical/ACE_Medical_Treatments.hpp | 10 ++++++---- addons/medical/CfgVehicles.hpp | 6 ------ .../data/littergeneric_QuikclotBloody.p3d | Bin 33228 -> 0 bytes .../data/littergeneric_packingbandageBloody.p3d | Bin 36146 -> 0 bytes 4 files changed, 6 insertions(+), 10 deletions(-) delete mode 100644 addons/medical/data/littergeneric_QuikclotBloody.p3d delete mode 100644 addons/medical/data/littergeneric_packingbandageBloody.p3d diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp index 8e9815ac1f..51fb4ca701 100644 --- a/addons/medical/ACE_Medical_Treatments.hpp +++ b/addons/medical/ACE_Medical_Treatments.hpp @@ -175,8 +175,9 @@ class ACE_Medical_Actions { displayName = CSTRING(Actions_PackingBandage); items[] = {"ACE_packingBandage"}; litter[] = { - {"All", "_bloodLossOnSelection > 0", {"ACE_MedicalLitter_packingBandageBloody"}}, - {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_packingBandage"}} + {"All", "", {"ACE_MedicalLitter_packingBandage"}}, + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class ElasticBandage: fieldDressing { @@ -187,8 +188,9 @@ class ACE_Medical_Actions { displayName = CSTRING(Actions_QuikClot); items[] = {"ACE_quikclot"}; litter[] = { - {"All", "_bloodLossOnSelection > 0", {"ACE_MedicalLitter_QuickClotBloody"}}, - {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_QuickClot"}} + {"All", "", {"ACE_MedicalLitter_QuickClot"}}, + {"All", "_bloodLossOnSelection > 0", {{"ACE_MedicalLitter_bandage2", "ACE_MedicalLitter_bandage3"}}}, + {"All", "_bloodLossOnSelection <= 0", {"ACE_MedicalLitter_clean"}} }; }; class Tourniquet: fieldDressing { diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index a2d3c451d6..ba7d413364 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -651,9 +651,6 @@ class CfgVehicles { class ACE_MedicalLitter_packingBandage: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_packingBandage.p3d)); }; - class ACE_MedicalLitter_packingBandageBloody: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_packingbandageBloody.p3d)); - }; class ACE_MedicalLitter_gloves: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_gloves.p3d)); }; @@ -669,9 +666,6 @@ class CfgVehicles { class ACE_MedicalLitter_QuickClot: ACE_MedicalLitterBase { model = QUOTE(PATHTOF(data\littergeneric_Quikclot.p3d)); }; - class ACE_MedicalLitter_QuickClotBloody: ACE_MedicalLitterBase { - model = QUOTE(PATHTOF(data\littergeneric_QuikclotBloody.p3d)); - }; class Item_Base_F; class ACE_fieldDressingItem: Item_Base_F { scope = 2; diff --git a/addons/medical/data/littergeneric_QuikclotBloody.p3d b/addons/medical/data/littergeneric_QuikclotBloody.p3d deleted file mode 100644 index 6a684719f0e46560598105a30b34269a0af6af0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33228 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 diff --git a/addons/medical/data/littergeneric_packingbandageBloody.p3d b/addons/medical/data/littergeneric_packingbandageBloody.p3d deleted file mode 100644 index f79e83b51215af518002828017c002575f8eea01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36146 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 Date: Sat, 12 Dec 2015 16:48:54 +0100 Subject: [PATCH 042/107] replace private with private keyword in first half of common --- .../functions/fnc_applyForceWalkStatus.sqf | 3 +- .../functions/fnc_assignObjectsInList.sqf | 1 + .../common/functions/fnc_assignedItemFix.sqf | 12 ++-- .../common/functions/fnc_binarizeNumber.sqf | 8 +-- addons/common/functions/fnc_cachedCall.sqf | 11 ++-- .../common/functions/fnc_canGetInPosition.sqf | 50 ++++++-------- .../common/functions/fnc_canInteractWith.sqf | 11 ++-- addons/common/functions/fnc_canUseWeapon.sqf | 5 +- .../fnc_changeProjectileDirection.sqf | 14 ++-- addons/common/functions/fnc_checkFiles.sqf | 20 ++---- addons/common/functions/fnc_checkPBOs.sqf | 12 ++-- addons/common/functions/fnc_claim.sqf | 3 +- .../fnc_createOrthonormalReference.sqf | 10 +-- .../common/functions/fnc_currentChannel.sqf | 3 +- addons/common/functions/fnc_debug.sqf | 13 ++-- .../functions/fnc_deviceKeyFindValidIndex.sqf | 6 +- addons/common/functions/fnc_disableAI.sqf | 2 +- .../common/functions/fnc_disableUserInput.sqf | 14 ++-- addons/common/functions/fnc_displayIcon.sqf | 20 ++---- addons/common/functions/fnc_displayText.sqf | 8 +-- .../functions/fnc_displayTextStructured.sqf | 24 ++++--- addons/common/functions/fnc_dropBackpack.sqf | 6 +- .../functions/fnc_dumpPerformanceCounters.sqf | 23 +++---- addons/common/functions/fnc_errorMessage.sqf | 51 ++++++-------- .../functions/fnc_execPersistentFnc.sqf | 7 +- addons/common/functions/fnc_exportConfig.sqf | 16 ++--- addons/common/functions/fnc_filter.sqf | 5 +- .../common/functions/fnc_fixCrateContent.sqf | 6 +- addons/common/functions/fnc_fixFloating.sqf | 6 +- addons/common/functions/fnc_fixPosition.sqf | 3 +- .../fnc_getAllDefinedSetVariables.sqf | 6 +- .../functions/fnc_getCaptivityStatus.sqf | 9 +-- addons/common/functions/fnc_getChildren.sqf | 3 +- .../functions/fnc_getConfigCommander.sqf | 6 +- .../common/functions/fnc_getConfigGunner.sqf | 6 +- addons/common/functions/fnc_getDeathAnim.sqf | 14 ++-- .../common/functions/fnc_getDefaultAnim.sqf | 6 +- .../functions/fnc_getDefinedVariable.sqf | 6 +- .../fnc_getDefinedVariableDefault.sqf | 3 +- .../functions/fnc_getDisplayConfigName.sqf | 6 +- .../common/functions/fnc_getDoorTurrets.sqf | 8 +-- .../fnc_getFirstObjectIntersection.sqf | 16 ++--- .../fnc_getFirstTerrainIntersection.sqf | 16 ++--- .../functions/fnc_getForceWalkStatus.sqf | 12 ++-- addons/common/functions/fnc_getGunner.sqf | 5 +- addons/common/functions/fnc_getHitPoints.sqf | 3 +- .../fnc_getHitPointsWithSelections.sqf | 3 +- addons/common/functions/fnc_getInPosition.sqf | 27 +++----- addons/common/functions/fnc_getItemType.sqf | 12 ++-- .../functions/fnc_getLightProperties.sqf | 14 ++-- .../fnc_getLightPropertiesWeapon.sqf | 16 ++--- addons/common/functions/fnc_getMGRSdata.sqf | 40 ++++++----- .../common/functions/fnc_getMapGridData.sqf | 30 ++++----- .../functions/fnc_getMapGridFromPos.sqf | 10 ++- .../functions/fnc_getMapPosFromGrid.sqf | 14 ++-- addons/common/functions/fnc_getMarkerType.sqf | 8 +-- addons/common/functions/fnc_getName.sqf | 3 +- .../functions/fnc_getNumberMagazinesIn.sqf | 3 +- .../fnc_getReflectorsWithSelections.sqf | 17 ++--- .../fnc_getSelectionsWithoutHitPoints.sqf | 6 +- .../common/functions/fnc_getSettingData.sqf | 9 +-- .../functions/fnc_getStringFromMissionSQM.sqf | 16 ++--- .../fnc_getTargetAzimuthAndInclination.sqf | 10 ++- .../functions/fnc_getTargetDistance.sqf | 12 ++-- .../common/functions/fnc_getTargetObject.sqf | 8 +-- .../functions/fnc_getTurnedOnLights.sqf | 10 ++- .../functions/fnc_getTurretCommander.sqf | 10 ++- .../functions/fnc_getTurretConfigPath.sqf | 8 +-- .../common/functions/fnc_getTurretCopilot.sqf | 10 ++- .../functions/fnc_getTurretDirection.sqf | 23 +++---- .../common/functions/fnc_getTurretGunner.sqf | 10 ++- .../common/functions/fnc_getTurretIndex.sqf | 2 +- addons/common/functions/fnc_getTurrets.sqf | 24 +++---- addons/common/functions/fnc_getTurretsFFV.sqf | 10 ++- .../common/functions/fnc_getTurretsOther.sqf | 19 +++--- .../functions/fnc_getUavControlPosition.sqf | 10 ++- .../common/functions/fnc_getVehicleCargo.sqf | 10 ++- .../functions/fnc_getVehicleCodriver.sqf | 10 ++- .../common/functions/fnc_getVehicleCrew.sqf | 3 +- .../functions/fnc_getVehicleUAVCrew.sqf | 2 +- .../fnc_getWeaponAzimuthAndInclination.sqf | 8 +-- .../common/functions/fnc_getWeaponModes.sqf | 8 +-- .../common/functions/fnc_getWeaponMuzzles.sqf | 13 ++-- .../common/functions/fnc_getWeaponState.sqf | 15 ++--- addons/common/functions/fnc_getWeaponType.sqf | 6 +- .../common/functions/fnc_hadamardProduct.sqf | 3 +- addons/common/functions/fnc_hasHatch.sqf | 2 +- addons/common/functions/fnc_hasItem.sqf | 4 +- addons/common/functions/fnc_hasMagazine.sqf | 4 +- addons/common/functions/fnc_hashGet.sqf | 6 +- addons/common/functions/fnc_hashHasKey.sqf | 5 +- .../functions/fnc_hashListCreateHash.sqf | 4 +- .../common/functions/fnc_hashListSelect.sqf | 10 ++- addons/common/functions/fnc_hashListSet.sqf | 4 +- addons/common/functions/fnc_hashRem.sqf | 6 +- addons/common/functions/fnc_hashSet.sqf | 3 +- addons/common/functions/fnc_headBugFix.sqf | 12 ++-- addons/common/functions/fnc_hideUnit.sqf | 3 +- addons/common/functions/fnc_inheritsFrom.sqf | 3 +- addons/common/functions/fnc_insertionSort.sqf | 4 +- .../functions/fnc_interpolateFromArray.sqf | 6 +- addons/common/functions/fnc_isInBuilding.sqf | 8 +-- addons/common/functions/fnc_isModLoaded.sqf | 2 +- addons/common/functions/fnc_isUnderwater.sqf | 8 +-- .../fnc_lightIntensityFromObject.sqf | 66 +++++++------------ addons/common/functions/fnc_loadPerson.sqf | 12 ++-- .../common/functions/fnc_loadPersonLocal.sqf | 7 +- .../functions/fnc_loadSettingsFromProfile.sqf | 3 +- .../fnc_loadSettingsLocalizedText.sqf | 9 +-- .../functions/fnc_loadSettingsOnServer.sqf | 11 ++-- addons/common/functions/fnc_localEvent.sqf | 6 +- addons/common/functions/fnc_map.sqf | 2 +- addons/common/functions/fnc_muteUnit.sqf | 6 +- .../common/functions/fnc_numberToDigits.sqf | 6 +- .../functions/fnc_numberToDigitsString.sqf | 3 +- .../common/functions/fnc_numberToString.sqf | 3 +- .../common/functions/fnc_onAnswerRequest.sqf | 13 ++-- 117 files changed, 470 insertions(+), 741 deletions(-) diff --git a/addons/common/functions/fnc_applyForceWalkStatus.sqf b/addons/common/functions/fnc_applyForceWalkStatus.sqf index d3b58a25a4..656e4a6d25 100644 --- a/addons/common/functions/fnc_applyForceWalkStatus.sqf +++ b/addons/common/functions/fnc_applyForceWalkStatus.sqf @@ -17,7 +17,6 @@ params ["_unit"]; -private "_forceWalkNumber"; -_forceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0]; +private _forceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0]; _unit forceWalk (_forceWalkNumber > 0); diff --git a/addons/common/functions/fnc_assignObjectsInList.sqf b/addons/common/functions/fnc_assignObjectsInList.sqf index edfeb1b709..5724521a7b 100644 --- a/addons/common/functions/fnc_assignObjectsInList.sqf +++ b/addons/common/functions/fnc_assignObjectsInList.sqf @@ -41,4 +41,5 @@ if (_list isEqualType "") then { }; }; }; + false } count _list; diff --git a/addons/common/functions/fnc_assignedItemFix.sqf b/addons/common/functions/fnc_assignedItemFix.sqf index 9f804eaa4d..d93409ce7c 100644 --- a/addons/common/functions/fnc_assignedItemFix.sqf +++ b/addons/common/functions/fnc_assignedItemFix.sqf @@ -12,13 +12,11 @@ */ #include "script_component.hpp" -private "_config"; - -ACE_isMapEnabled = call {_config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; // default value is 1, so do isNumber check first -ACE_isCompassEnabled = call {_config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}}; -ACE_isWatchEnabled = call {_config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}}; -ACE_isRadioEnabled = call {_config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}}; -ACE_isGPSEnabled = call {_config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}}; +ACE_isMapEnabled = call {private _config = missionConfigFile >> "showMap"; !isNumber _config || {getNumber _config == 1}}; // default value is 1, so do isNumber check first +ACE_isCompassEnabled = call {private _config = missionConfigFile >> "showCompass"; !isNumber _config || {getNumber _config == 1}}; +ACE_isWatchEnabled = call {private _config = missionConfigFile >> "showWatch"; !isNumber _config || {getNumber _config == 1}}; +ACE_isRadioEnabled = call {private _config = missionConfigFile >> "showRadio"; !isNumber _config || {getNumber _config == 1}}; +ACE_isGPSEnabled = call {private _config = missionConfigFile >> "showGPS"; !isNumber _config || {getNumber _config == 1}}; GVAR(AssignedItems) = []; GVAR(AssignedItemsInfo) = []; diff --git a/addons/common/functions/fnc_binarizeNumber.sqf b/addons/common/functions/fnc_binarizeNumber.sqf index aff2f9dc17..0077403dac 100644 --- a/addons/common/functions/fnc_binarizeNumber.sqf +++ b/addons/common/functions/fnc_binarizeNumber.sqf @@ -17,16 +17,14 @@ params ["_number", ["_minLength", 8]]; _number = round _number; -private ["_array", "_index", "_rest"]; - -_array = []; -_array resize _minLength; +private _array = []; +private _array resize _minLength; for "_index" from 0 to (_minLength - 1) do { _array set [_index, false]; }; -_index = 0; +private _index = 0; while {_number > 0} do { _rest = _number mod 2; diff --git a/addons/common/functions/fnc_cachedCall.sqf b/addons/common/functions/fnc_cachedCall.sqf index 59350d0483..2c7cdd4b27 100644 --- a/addons/common/functions/fnc_cachedCall.sqf +++ b/addons/common/functions/fnc_cachedCall.sqf @@ -24,10 +24,8 @@ if ((_namespace getVariable [_uid, [-99999]]) select 0 < ACE_diagTime) then { // Does the cache needs to be cleared on an event? if (!isNil "_event") then { - private ["_varName", "_cacheList"]; - - _varName = format [QGVAR(clearCache_%1), _event]; - _cacheList = missionNamespace getVariable _varName; + private _varName = format [QGVAR(clearCache_%1), _event]; + private _cacheList = missionNamespace getVariable _varName; // If there was no EH to clear these caches, add one if (isNil "_cacheList") then { @@ -35,14 +33,13 @@ if ((_namespace getVariable [_uid, [-99999]]) select 0 < ACE_diagTime) then { missionNamespace setVariable [_varName, _cacheList]; [_event, { - private ["_varName", "_cacheList"]; // _eventName is defined on the function that calls the event #ifdef DEBUG_MODE_FULL ACE_LOGINFO_1("Clear cached variables on event: %1",_eventName); #endif // Get the list of caches to clear - _varName = format [QGVAR(clearCache_%1), _eventName]; - _cacheList = missionNamespace getVariable [_varName, []]; + private _varName = format [QGVAR(clearCache_%1), _eventName]; + private _cacheList = missionNamespace getVariable [_varName, []]; // Erase all the cached results { _x call FUNC(eraseCache); diff --git a/addons/common/functions/fnc_canGetInPosition.sqf b/addons/common/functions/fnc_canGetInPosition.sqf index 45a2642655..c470337d6a 100644 --- a/addons/common/functions/fnc_canGetInPosition.sqf +++ b/addons/common/functions/fnc_canGetInPosition.sqf @@ -27,19 +27,19 @@ _position = toLower _position; // general if (!alive _vehicle || {locked _vehicle > 1}) exitWith {false}; -private ["_config", "_turret", "_radius", "_selectionPosition", "_selectionPosition2", "_enemiesInVehicle", "_return"]; +private ["_selectionPosition", "_selectionPosition2"]; -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; -_turret = []; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _turret = []; -_radius = 0; +private _radius = 0; -_enemiesInVehicle = false; //Possible Side Restriction +private _enemiesInVehicle = false; //Possible Side Restriction { if (side _unit getFriend side _x < 0.6) exitWith {_enemiesInVehicle = true}; } forEach crew _vehicle; -_return = false; +private _return = false; switch (_position) do { case "driver" : { _radius = getNumber (_config >> "getInRadius"); @@ -60,11 +60,10 @@ switch (_position) do { }; case "gunner" : { - private "_turretConfig"; _turret = [_vehicle] call FUNC(getTurretGunner); if (_turret isEqualTo []) exitWith {false}; - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -73,11 +72,10 @@ switch (_position) do { }; case "commander" : { - private "_turretConfig"; _turret = [_vehicle] call FUNC(getTurretCommander); if (_turret isEqualTo []) exitWith {false}; - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -86,11 +84,10 @@ switch (_position) do { }; case "copilot" : { - private "_turretConfig"; _turret = [_vehicle] call FUNC(getTurretCopilot); if (_turret isEqualTo []) exitWith {false}; - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -99,13 +96,12 @@ switch (_position) do { }; case "turret" : { - private ["_turrets", "_turretConfig"]; - _turrets = [_vehicle] call FUNC(getTurretsOther); + private _turrets = [_vehicle] call FUNC(getTurretsOther); if (_index != -1 && {_turret = _turrets select _index; CANGETINTURRETINDEX }) then { - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -115,7 +111,7 @@ switch (_position) do { for "_index" from 0 to (count _turrets - 1) do { _turret = _turrets select _index; if (CANGETINTURRETINDEX) exitWith { - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -127,13 +123,12 @@ switch (_position) do { }; case "ffv" : { - private ["_turrets", "_turretConfig"]; - _turrets = [_vehicle] call FUNC(getTurretsFFV); + private _turrets = [_vehicle] call FUNC(getTurretsFFV); if (_index != -1 && {_turret = _turrets select _index; CANGETINTURRETINDEX }) then { - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -143,7 +138,7 @@ switch (_position) do { for "_index" from 0 to (count _turrets - 1) do { _turret = _turrets select _index; if (CANGETINTURRETINDEX) exitWith { - _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); + private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); _radius = getNumber (_config >> "getInRadius"); _selectionPosition = _vehicle selectionPosition (getText (_turretConfig >> "memoryPointsGetInGunner")); @@ -155,8 +150,7 @@ switch (_position) do { }; case "codriver" : { - private "_positions"; - _positions = [typeOf _vehicle] call FUNC(getVehicleCodriver); + private _positions = [typeOf _vehicle] call FUNC(getVehicleCodriver); { if (alive _x) then {_positions deleteAt (_positions find (_vehicle getCargoIndex _x))}; @@ -189,8 +183,7 @@ switch (_position) do { }; case "cargo" : { - private "_positions"; - _positions = [typeOf _vehicle] call FUNC(getVehicleCargo); + private _positions = [typeOf _vehicle] call FUNC(getVehicleCargo); { if (alive _x) then {_positions deleteAt (_positions find (_vehicle getCargoIndex _x))}; @@ -226,14 +219,11 @@ switch (_position) do { default {}; }; -private "_fnc_isInRange"; -_fnc_isInRange = { +private _fnc_isInRange = { if (_radius == 0) exitWith {true}; - private ["_unitPosition", "_distance"]; - _unitPosition = getPos _unit; - - _distance = _unitPosition distance (_vehicle modelToWorldVisual _selectionPosition); + private _unitPosition = getPos _unit; + private _distance = _unitPosition distance (_vehicle modelToWorldVisual _selectionPosition); if (!isNil "_selectionPosition2") then { _distance = _distance min (_unitPosition distance (_vehicle modelToWorldVisual _selectionPosition2)); diff --git a/addons/common/functions/fnc_canInteractWith.sqf b/addons/common/functions/fnc_canInteractWith.sqf index 31ebf6b89f..4b4382a14e 100644 --- a/addons/common/functions/fnc_canInteractWith.sqf +++ b/addons/common/functions/fnc_canInteractWith.sqf @@ -18,20 +18,17 @@ params ["_unit", "_target", ["_exceptions", []]]; _exceptions = [_exceptions, {toLower _this}] call FUNC(map); -private "_owner"; -_owner = _target getVariable [QGVAR(owner), objNull]; +private _owner = _target getVariable [QGVAR(owner), objNull]; // exit if the target is not free to interact if (!isNull _owner && {_unit != _owner}) exitWith {false}; // check general conditions -private ["_conditions", "_canInteract"]; - -_conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; - +private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; _conditions params ["_conditionNames", "_conditionFuncs"]; -_canInteract = true; +private _canInteract = true; + { if (!(_x in _exceptions) && {!([_unit, _target] call (_conditionFuncs select _forEachIndex))}) exitWith { _canInteract = false; diff --git a/addons/common/functions/fnc_canUseWeapon.sqf b/addons/common/functions/fnc_canUseWeapon.sqf index 31aaba17a2..a92d0a2b97 100644 --- a/addons/common/functions/fnc_canUseWeapon.sqf +++ b/addons/common/functions/fnc_canUseWeapon.sqf @@ -13,12 +13,11 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; if (_unit == vehicle _unit) exitWith {true}; -private "_config"; -_config = configFile >> "CfgMovesMaleSdr" >> "States" >> animationState _unit; +private _config = configFile >> "CfgMovesMaleSdr" >> "States" >> animationState _unit; isClass _config && {getNumber (_config >> "canPullTrigger") == 1} diff --git a/addons/common/functions/fnc_changeProjectileDirection.sqf b/addons/common/functions/fnc_changeProjectileDirection.sqf index 79b8c8aeea..89a8988306 100644 --- a/addons/common/functions/fnc_changeProjectileDirection.sqf +++ b/addons/common/functions/fnc_changeProjectileDirection.sqf @@ -17,14 +17,12 @@ params ["_projectile", "_adjustDir", "_adjustUp", ["_adjustSpeed",0]]; -private ["_vdir", "_dir", "_up", "_vlat", "_vup", "_vel"]; - // get old direction vector -_vdir = vectorNormalized velocity _projectile; +private _vdir = vectorNormalized velocity _projectile; // get azimuth and inclination and apply corrections -_dir = (_vdir select 0) atan2 (_vdir select 1) + _adjustDir; -_up = asin (_vdir select 2) + _adjustUp; +private _dir = (_vdir select 0) atan2 (_vdir select 1) + _adjustDir; +private _up = asin (_vdir select 2) + _adjustUp; // get new direction vector (this is a unit vector) _vdir = [ @@ -34,11 +32,11 @@ _vdir = [ ]; // get best up vector -_vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]); -_vup = _vlat vectorCrossProduct _vdir; +private _vlat = vectorNormalized (_vdir vectorCrossProduct [0,0,1]); +private _vup = _vlat vectorCrossProduct _vdir; // get new speed vector. Keep total speed, but change to new direction. Yay for vector commands. -_vel = _vdir vectorMultiply (_adjustSpeed + vectorMagnitude velocity _projectile); +private _vel = _vdir vectorMultiply (_adjustSpeed + vectorMagnitude velocity _projectile); // set projectile direction dir and up. Projectiles are long objects, especially with tracers, so it would look dumb otherwise. _projectile setVectorDirAndUp [_vdir, _vup]; diff --git a/addons/common/functions/fnc_checkFiles.sqf b/addons/common/functions/fnc_checkFiles.sqf index 2c8976f042..cdf5cb3d93 100644 --- a/addons/common/functions/fnc_checkFiles.sqf +++ b/addons/common/functions/fnc_checkFiles.sqf @@ -15,21 +15,18 @@ /////////////// // check addons /////////////// -private "_version"; -_version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); +private _version = getText (configFile >> "CfgPatches" >> "ace_main" >> "versionStr"); ACE_LOGINFO_1("ACE is version %1.",_version); -private "_addons"; -//_addons = activatedAddons; // broken with High-Command module, see #2134 -_addons = "true" configClasses (configFile >> "CfgPatches");// +//private _addons = activatedAddons; // broken with High-Command module, see #2134 +private _addons = "true" configClasses (configFile >> "CfgPatches");// _addons = [_addons, {toLower configName _this}] call FUNC(map);// _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); { if (getText (configFile >> "CfgPatches" >> _x >> "versionStr") != _version) then { - private "_errorMsg"; - _errorMsg = format ["File %1.pbo is outdated.", _x]; + private _errorMsg = format ["File %1.pbo is outdated.", _x]; ACE_LOGERROR(_errorMsg); @@ -44,12 +41,10 @@ _addons = [_addons, {_this find "ace_" == 0}] call FUNC(filter); // check dlls /////////////// { - private "_versionEx"; - _versionEx = _x callExtension "version"; + private _versionEx = _x callExtension "version"; if (_versionEx == "") then { - private "_errorMsg"; - _errorMsg = format ["Extension %1.dll not installed.", _x]; + private _errorMsg = format ["Extension %1.dll not installed.", _x]; ACE_LOGERROR(_errorMsg); @@ -84,8 +79,7 @@ if (isMultiplayer) then { (_this select 0) params ["_version", "_addons"]; if (_version != GVAR(ServerVersion)) then { - private "_errorMsg"; - _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; + private _errorMsg = format ["Client/Server Version Mismatch. Server: %1, Client: %2.", GVAR(ServerVersion), _version]; ACE_LOGERROR(_errorMsg); diff --git a/addons/common/functions/fnc_checkPBOs.sqf b/addons/common/functions/fnc_checkPBOs.sqf index a196e8d4ca..f447d126af 100644 --- a/addons/common/functions/fnc_checkPBOs.sqf +++ b/addons/common/functions/fnc_checkPBOs.sqf @@ -41,10 +41,8 @@ if (!isServer) then { // Display error message. if (_missingAddon || {_missingAddonServer} || {_oldVersionClient} || {_oldVersionServer}) then { - private ["_text", "_error"]; - - _text = "[ACE] Version mismatch:

"; - _error = format ["ACE version mismatch: %1: ", profileName]; + private _text = "[ACE] Version mismatch:

"; + private _error = format ["ACE version mismatch: %1: ", profileName]; if (_missingAddon) then { _text = _text + "Detected missing addon on client
"; @@ -69,13 +67,11 @@ if (!isServer) then { if (_mode < 2) then { _text = composeText [lineBreak, parseText format ["%1", _text]]; - private ["_rscLayer", "_ctrlHint"]; - - _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; + private _rscLayer = "ACE_RscErrorHint" call BIS_fnc_rscLayer; _rscLayer cutRsc ["ACE_RscErrorHint", "PLAIN", 0, true]; disableSerialization; - _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; + private _ctrlHint = uiNamespace getVariable "ACE_ctrlErrorHint"; _ctrlHint ctrlSetStructuredText _text; if (_mode == 0) then { diff --git a/addons/common/functions/fnc_claim.sqf b/addons/common/functions/fnc_claim.sqf index ac89a80172..cc514a2a6f 100644 --- a/addons/common/functions/fnc_claim.sqf +++ b/addons/common/functions/fnc_claim.sqf @@ -16,8 +16,7 @@ params ["_unit", "_target", ["_lockTarget", false]]; -private "_owner"; -_owner = _target getVariable [QGVAR(owner), objNull]; +private _owner = _target getVariable [QGVAR(owner), objNull]; if (!isNull _owner && {!isNull _unit} && {_unit != _owner}) then { ACE_LOGERROR("Claiming already owned object."); diff --git a/addons/common/functions/fnc_createOrthonormalReference.sqf b/addons/common/functions/fnc_createOrthonormalReference.sqf index 4a8db8bba1..e45bf269aa 100644 --- a/addons/common/functions/fnc_createOrthonormalReference.sqf +++ b/addons/common/functions/fnc_createOrthonormalReference.sqf @@ -14,10 +14,10 @@ */ #include "script_component.hpp" -private ["_v1", "_v2", "_v3"]; +[_this] params [["_vector", [0,0,1], [[]], 3]]; -_v1 = vectorNormalized _this; -_v2 = vectorNormalized (_v1 vectorCrossProduct [0,0,1]); -_v3 = _v2 vectorCrossProduct _v1; +private _v1 = vectorNormalized _this; +private _v2 = vectorNormalized (_v1 vectorCrossProduct [0,0,1]); +private _v3 = _v2 vectorCrossProduct _v1; -[_v1,_v2,_v3] +[_v1, _v2, _v3] diff --git a/addons/common/functions/fnc_currentChannel.sqf b/addons/common/functions/fnc_currentChannel.sqf index 82dd66b485..a78e2b0204 100644 --- a/addons/common/functions/fnc_currentChannel.sqf +++ b/addons/common/functions/fnc_currentChannel.sqf @@ -15,8 +15,7 @@ #define CHANNELS ["global", "side", "command", "group", "vehicle", "direct"] #define CHANNELS_LOCALIZED [localize "str_channel_global", localize "str_channel_side", localize "str_channel_command", localize "str_channel_group", localize "str_channel_vehicle", localize "str_channel_direct"] -private "_currentChannel"; -_currentChannel = currentChannel; +private _currentChannel = currentChannel; if (_currentChannel < count CHANNELS) then { _currentChannel = CHANNELS select _currentChannel; diff --git a/addons/common/functions/fnc_debug.sqf b/addons/common/functions/fnc_debug.sqf index 6dd1f04163..862f7fe764 100644 --- a/addons/common/functions/fnc_debug.sqf +++ b/addons/common/functions/fnc_debug.sqf @@ -18,20 +18,15 @@ params ["_msg", ["_level", 2, [0]]]; -private ["_defaultLoglevel", "_defaultLogDisplayLevel"]; - -_defaultLoglevel = [GVAR(LOGLEVEL), DEFAULT_LOGGING_LEVEL] select isNil QGVAR(LOGLEVEL); +private _defaultLoglevel = [GVAR(LOGLEVEL), DEFAULT_LOGGING_LEVEL] select isNil QGVAR(LOGLEVEL); if (_defaultLoglevel < 0) exitWith {false}; -_defaultLogDisplayLevel = [GVAR(LOGDISPLAY_LEVEL), DEFAULT_TEXT_DISPLAY] select isNil QGVAR(LOGDISPLAY_LEVEL); +private _defaultLogDisplayLevel = [GVAR(LOGDISPLAY_LEVEL), DEFAULT_TEXT_DISPLAY] select isNil QGVAR(LOGDISPLAY_LEVEL); if (_level <= _defaultLoglevel) then { - private ["_prefix", "_message"]; - - _prefix = ["Unknown", "Error", "Warn", "Debug", "Info"] select ([0, 1, 2, 3] find _level + 1); - - _message = format ["[ACE %1] %2", _prefix, _msg]; + private _prefix = ["Unknown", "Error", "Warn", "Debug", "Info"] select ([0, 1, 2, 3] find _level + 1); + private _message = format ["[ACE %1] %2", _prefix, _msg]; if (_level <= _defaultLogDisplayLevel) then { systemChat _message; diff --git a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf index 16a80d6e3f..02135e59db 100644 --- a/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf +++ b/addons/common/functions/fnc_deviceKeyFindValidIndex.sqf @@ -18,9 +18,7 @@ params [["_searchOffsetOrName", 0]]; -private ["_validIndex", "_realIndex"]; - -_validIndex = -1; +private _validIndex = -1; if (_searchOffsetOrName isEqualType "") then { { @@ -33,7 +31,7 @@ if (_searchOffsetOrName isEqualType "") then { _baseIndex = [GVAR(deviceKeyCurrentIndex) + _searchOffsetOrName, 0] select (GVAR(deviceKeyCurrentIndex) == -1); for "_offset" from _baseIndex to (count GVAR(deviceKeyHandlingArray) - 1 + _baseIndex) do { - _realIndex = _offset % (count GVAR(deviceKeyHandlingArray)); + private _realIndex = _offset % (count GVAR(deviceKeyHandlingArray)); if ([] call ((GVAR(deviceKeyHandlingArray) select _realIndex) select 2)) exitWith { _validIndex = _realIndex; diff --git a/addons/common/functions/fnc_disableAI.sqf b/addons/common/functions/fnc_disableAI.sqf index 1a66628ffb..75c59d1a9a 100644 --- a/addons/common/functions/fnc_disableAI.sqf +++ b/addons/common/functions/fnc_disableAI.sqf @@ -16,7 +16,7 @@ */ #include "script_component.hpp" -params ["_unit", "_disable"]; +params [["_unit", objNull, [objNull]], ["_disable", true, [false]]]; if (!local _unit) exitWith {}; diff --git a/addons/common/functions/fnc_disableUserInput.sqf b/addons/common/functions/fnc_disableUserInput.sqf index 8b00cedeac..8e28edc5f0 100644 --- a/addons/common/functions/fnc_disableUserInput.sqf +++ b/addons/common/functions/fnc_disableUserInput.sqf @@ -31,8 +31,7 @@ if (_state) then { closeDialog 0; createDialog QGVAR(DisableMouse_Dialog); - private "_dlg"; - _dlg = uiNamespace getVariable QGVAR(dlgDisableMouse); + private _dlg = uiNamespace getVariable QGVAR(dlgDisableMouse); _dlg displayAddEventHandler ["KeyDown", { params ["", "_key"]; @@ -42,15 +41,13 @@ if (_state) then { disableSerialization; - private ["_dlg", "_ctrl"]; - - _dlg = findDisplay 49; + private _dlg = findDisplay 49; for "_index" from 100 to 2000 do { (_dlg displayCtrl _index) ctrlEnable false; }; - _ctrl = _dlg displayctrl 103; + private _ctrl = _dlg displayctrl 103; _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)]; _ctrl ctrlEnable true; _ctrl ctrlSetText "ABORT"; @@ -58,7 +55,7 @@ if (_state) then { _ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer); _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)]; - _ctrl ctrlEnable (call {private "_config"; _config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}}); + _ctrl ctrlEnable (call {private _config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}}); _ctrl ctrlSetText "RESPAWN"; _ctrl ctrlSetTooltip "Respawn."; }; @@ -66,8 +63,7 @@ if (_state) then { if (_key in actionKeys "TeamSwitch" && {teamSwitchEnabled}) then { (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; - private "_acc"; - _acc = accTime; + private _acc = accTime; teamSwitch; setAccTime _acc; }; diff --git a/addons/common/functions/fnc_displayIcon.sqf b/addons/common/functions/fnc_displayIcon.sqf index 23c5631fa6..c51b3bd454 100644 --- a/addons/common/functions/fnc_displayIcon.sqf +++ b/addons/common/functions/fnc_displayIcon.sqf @@ -45,14 +45,11 @@ disableSerialization; params ["_iconId", "_show", "_icon", "_color", ["_timeAlive", DEFAULT_TIME]]; -private ["_list", "_refresh"]; +private _list = missionNamespace getVariable [QGVAR(displayIconList), []]; -_list = missionNamespace getVariable [QGVAR(displayIconList), []]; - -_refresh = { +private _refresh = { // Refreshing of all icons.. - private "_allControls"; - _allControls = missionNamespace getVariable [QGVAR(displayIconListControls), []]; + private _allControls = missionNamespace getVariable [QGVAR(displayIconListControls), []]; { ctrlDelete _x; @@ -61,18 +58,16 @@ _refresh = { _allControls = []; - private ["_setting", "_ctrl", "_position"]; - - _setting = missionNamespace getVariable [QGVAR(settingFeedbackIcons), 0]; + private _setting = missionNamespace getVariable [QGVAR(settingFeedbackIcons), 0]; if (_setting > 0) then { { _x params ["", "_xicon", "_xcolor"]; // +19000 because we want to make certain we are using free IDCs.. - _ctrl = (findDisplay 46) ctrlCreate ["RscPicture", _forEachIndex + 19000]; + private _ctrl = (findDisplay 46) ctrlCreate ["RscPicture", _forEachIndex + 19000]; - _position = switch (_setting) do { + private _position = switch (_setting) do { case TOP_RIGHT_DOWN: {[X_POS_ICONS, Y_POS_ICONS + (_forEachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; case TOP_RIGHT_LEFT: {[X_POS_ICONS_SECOND - ((_forEachIndex+3) * DIFFERENCE_ICONS), Y_POS_ICONS_SECOND - (ICON_WIDTH / 2), ICON_WIDTH, ICON_WIDTH]}; case TOP_LEFT_DOWN: {[LEFT_SIDE + (0.5 * ICON_WIDTH), Y_POS_ICONS + (_forEachIndex * DIFFERENCE_ICONS), ICON_WIDTH, ICON_WIDTH]}; @@ -115,8 +110,7 @@ if (_show) then { } else { if ({_x select 0 == _iconId} count _list == 1) then { - private "_newList"; - _newList = []; + private _newList = []; { if (_x select 0 != _iconId) then { diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf index fce8fdd832..830cc67e3d 100644 --- a/addons/common/functions/fnc_displayText.sqf +++ b/addons/common/functions/fnc_displayText.sqf @@ -23,12 +23,10 @@ if (isNil QGVAR(lastHint)) then { if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text}; -private ["_lastHintTime", "_lastHintPriority", "_time"]; +private _lastHintTime = GVAR(lastHint) select 0; +private _lastHintPriority = GVAR(lastHint) select 1; -_lastHintTime = GVAR(lastHint) select 0; -_lastHintPriority = GVAR(lastHint) select 1; - -_time = ACE_time; +private _time = ACE_time; if (_time > _lastHintTime + _delay || {_priority >= _lastHintPriority}) then { hintSilent _text; diff --git a/addons/common/functions/fnc_displayTextStructured.sqf b/addons/common/functions/fnc_displayTextStructured.sqf index ce088163a6..9fff7bb056 100644 --- a/addons/common/functions/fnc_displayTextStructured.sqf +++ b/addons/common/functions/fnc_displayTextStructured.sqf @@ -35,36 +35,34 @@ if (typeName _text != "TEXT") then { _text = composeText [lineBreak, parseText format ["%1", _text]]; }; -private ["_isShown", "_ctrlHint", "_xPos", "_yPos", "_wPos", "_hPos", "_position"]; - -_isShown = ctrlShown (uiNamespace getVariable ["ACE_ctrlHint", controlNull]); +private _isShown = ctrlShown (uiNamespace getVariable ["ACE_ctrlHint", controlNull]); ("ACE_RscHint" call BIS_fnc_rscLayer) cutRsc ["ACE_RscHint", "PLAIN", 0, true]; disableSerialization; -_ctrlHint = uiNamespace getVariable "ACE_ctrlHint"; +private _ctrlHint = uiNamespace getVariable "ACE_ctrlHint"; _ctrlHint ctrlSetBackgroundColor GVAR(displayTextColor); _ctrlHint ctrlSetTextColor GVAR(displayTextFontColor); /* // This does not function at the moment. Has been disabled until it fixed. -_xPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_X", ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40))]; -_yPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_Y", safeZoneY + 0.175 * safezoneH]; -_wPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_W", (10 *(((safezoneW / safezoneH) min 1.2) / 40))]; -_hPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_H", (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))]; +private _xPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_X", ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40))]; +private _yPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_Y", safeZoneY + 0.175 * safezoneH]; +private _wPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_W", (10 *(((safezoneW / safezoneH) min 1.2) / 40))]; +private _hPos = profilenamespace getVariable ["IGUI_GRID_ACE_displayText_H", (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25))]; */ -_xPos = ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)); -_yPos = safeZoneY + 0.175 * safezoneH; -_wPos = (10 *(((safezoneW / safezoneH) min 1.2) / 40)); -_hPos = (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); +private _xPos = ((safezoneX + safezoneW) - (10 *(((safezoneW / safezoneH) min 1.2) / 40)) - 2.9 *(((safezoneW / safezoneH) min 1.2) / 40)); +private _yPos = safeZoneY + 0.175 * safezoneH; +private _wPos = (10 *(((safezoneW / safezoneH) min 1.2) / 40)); +private _hPos = (2 *((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)); // Zeus Interface Open and Display would be under the "CREATE" list if (!isNull curatorCamera) then { _xPos = _xPos min ((safezoneX + safezoneW - 12.5 * (((safezoneW / safezoneH) min 1.2) / 40)) - _wPos); }; -_position = [_xPos, _yPos, _wPos, _size * _hPos]; +private _position = [_xPos, _yPos, _wPos, _size * _hPos]; _ctrlHint ctrlSetPosition _position; _ctrlHint ctrlCommit 0; diff --git a/addons/common/functions/fnc_dropBackpack.sqf b/addons/common/functions/fnc_dropBackpack.sqf index 26c902a057..7b7ee5765e 100644 --- a/addons/common/functions/fnc_dropBackpack.sqf +++ b/addons/common/functions/fnc_dropBackpack.sqf @@ -12,11 +12,9 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private ["_backpackObject", "_holder"]; - -_backpackObject = backpackContainer _unit; +private _backpackObject = backpackContainer _unit; _unit addBackpack "ACE_FakeBackpack"; removeBackpack _unit; diff --git a/addons/common/functions/fnc_dumpPerformanceCounters.sqf b/addons/common/functions/fnc_dumpPerformanceCounters.sqf index e076831c6f..bdc4588b05 100644 --- a/addons/common/functions/fnc_dumpPerformanceCounters.sqf +++ b/addons/common/functions/fnc_dumpPerformanceCounters.sqf @@ -19,8 +19,7 @@ if (!isNil "ACE_PFH_COUNTER") then { { _x params ["_pfh", "_parameters"]; - private "_isActive"; - _isActive = ["ACTIVE", "REMOVED"] select isNil {CBA_common_PFHhandles select (_pfh select 0)}; + private _isActive = ["ACTIVE", "REMOVED"] select isNil {CBA_common_PFHhandles select (_pfh select 0)}; diag_log text format ["Registered PFH: id=%1 [%2, delay %3], %4:%5", _pfh select 0, _isActive, _parameters select 1, _pfh select 1, _pfh select 2]; false @@ -31,20 +30,18 @@ diag_log text format ["ACE COUNTER RESULTS"]; diag_log text format ["-------------------------------------------"]; { - private ["_counterEntry", "_iter", "_total", "_count", "_averageResult", "_delta"]; - - _counterEntry = _x; - _iter = 0; - _total = 0; - _count = 0; - _averageResult = 0; + private _counterEntry = _x; + private _iter = 0; + private _total = 0; + private _count = 0; + private _averageResult = 0; if (count _counterEntry > 3) then { // calc { if (_iter > 2) then { _count = _count + 1; - _delta = (_x select 1) - (_x select 0); + private _delta = (_x select 1) - (_x select 0); _total = _total + _delta; }; @@ -69,8 +66,7 @@ diag_log text format ["-------------------------------------------"]; diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"]; diag_log text format["-------------------------------------------"]; { - private["_delay"]; - _delay = _x select 2; + private _delay = _x select 2; //if(_delay > 0) then { _delay = _delay / 1000; }; diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)]; @@ -80,8 +76,7 @@ diag_log text format["-------------------------------------------"]; diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"]; diag_log text format["-------------------------------------------"]; { - private["_delta"]; - _delta = _x select 1; + private _delta = _x select 1; //if(_delta > 0) then { _delta = _delta / 1000; }; diag_log text format[" DELTA: %1s", _delta]; } forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER; diff --git a/addons/common/functions/fnc_errorMessage.sqf b/addons/common/functions/fnc_errorMessage.sqf index aa2b872d47..88e0a3b90f 100644 --- a/addons/common/functions/fnc_errorMessage.sqf +++ b/addons/common/functions/fnc_errorMessage.sqf @@ -37,35 +37,29 @@ if (_textMessage isEqualType "") then { (ARR_SELECT(_this,4,call BIS_fnc_displayMission)) createDisplay "RscDisplayCommonMessagePause"; -private ["_display", "_ctrlRscMessageBox", "_ctrlBcgCommonTop", "_ctrlBcgCommon", "_ctrlText", "_ctrlBackgroundButtonOK", "_ctrlBackgroundButtonMiddle", "_ctrlBackgroundButtonCancel", "_ctrlButtonOK", "_ctrlButtonCancel"]; - -_display = uiNamespace getVariable "RscDisplayCommonMessage_display"; -_ctrlRscMessageBox = _display displayCtrl 2351; -_ctrlBcgCommonTop = _display displayCtrl 235100; -_ctrlBcgCommon = _display displayCtrl 235101; -_ctrlText = _display displayCtrl 235102; -_ctrlBackgroundButtonOK = _display displayCtrl 235103; -_ctrlBackgroundButtonMiddle = _display displayCtrl 235104; -_ctrlBackgroundButtonCancel = _display displayCtrl 235105; -_ctrlButtonOK = _display displayCtrl 235106; -_ctrlButtonCancel = _display displayCtrl 235107; +private _display = uiNamespace getVariable "RscDisplayCommonMessage_display"; +private _ctrlRscMessageBox = _display displayCtrl 2351; +private _ctrlBcgCommonTop = _display displayCtrl 235100; +private _ctrlBcgCommon = _display displayCtrl 235101; +private _ctrlText = _display displayCtrl 235102; +private _ctrlBackgroundButtonOK = _display displayCtrl 235103; +private _ctrlBackgroundButtonMiddle = _display displayCtrl 235104; +private _ctrlBackgroundButtonCancel = _display displayCtrl 235105; +private _ctrlButtonOK = _display displayCtrl 235106; +private _ctrlButtonCancel = _display displayCtrl 235107; _ctrlBcgCommonTop ctrlSetText _textHeader; -private ["_ctrlButtonOKPos", "_ctrlBcgCommonPos", "_bottomSpaceY", "_ctrlTextPos", "_marginX", "_marginY"]; +private _ctrlButtonOKPos = ctrlPosition _ctrlButtonOK; +private _ctrlBcgCommonPos = ctrlPosition _ctrlBcgCommon; +private _bottomSpaceY = (_ctrlButtonOKPos select 1) - ((_ctrlBcgCommonPos select 1) + (_ctrlBcgCommonPos select 3)); -_ctrlButtonOKPos = ctrlPosition _ctrlButtonOK; -_ctrlBcgCommonPos = ctrlPosition _ctrlBcgCommon; -_bottomSpaceY = (_ctrlButtonOKPos select 1) - ((_ctrlBcgCommonPos select 1) + (_ctrlBcgCommonPos select 3)); - -_ctrlTextPos = ctrlPosition _ctrlText; -_marginX = (_ctrlTextPos select 0) - (_ctrlBcgCommonPos select 0); -_marginY = (_ctrlTextPos select 1) - (_ctrlBcgCommonPos select 1); - -private ["_ctrlTextPosH", "_bottomPosY"]; +private _ctrlTextPos = ctrlPosition _ctrlText; +private _marginX = (_ctrlTextPos select 0) - (_ctrlBcgCommonPos select 0); +private _marginY = (_ctrlTextPos select 1) - (_ctrlBcgCommonPos select 1); _ctrlText ctrlSetStructuredText _textMessage; -_ctrlTextPosH = ctrlTextHeight _ctrlText; +private _ctrlTextPosH = ctrlTextHeight _ctrlText; _ctrlBcgCommon ctrlSetPosition [ _ctrlBcgCommonPos select 0, @@ -83,11 +77,10 @@ _ctrlText ctrlSetPosition [ ]; _ctrlText ctrlCommit 0; -_bottomPosY = (_ctrlBcgCommonPos select 1) + _ctrlTextPosH + (_marginY * 2) + _bottomSpaceY; +private _bottomPosY = (_ctrlBcgCommonPos select 1) + _ctrlTextPosH + (_marginY * 2) + _bottomSpaceY; { - private "_xPos"; - _xPos = ctrlPosition _x; + private _xPos = ctrlPosition _x; _xPos set [1, _bottomPosY]; _x ctrlSetPosition _xPos; @@ -100,10 +93,8 @@ _bottomPosY = (_ctrlBcgCommonPos select 1) + _ctrlTextPosH + (_marginY * 2) + _b _ctrlButtonCancel ]; -private ["_ctrlRscMessageBoxPos", "_ctrlRscMessageBoxPosH"]; - -_ctrlRscMessageBoxPos = ctrlPosition _ctrlRscMessageBox; -_ctrlRscMessageBoxPosH = _bottomPosY + (_ctrlButtonOKPos select 3); +private _ctrlRscMessageBoxPos = ctrlPosition _ctrlRscMessageBox; +private _ctrlRscMessageBoxPosH = _bottomPosY + (_ctrlButtonOKPos select 3); _ctrlRscMessageBox ctrlSetPosition [ 0.5 - (_ctrlBcgCommonPos select 2) / 2, diff --git a/addons/common/functions/fnc_execPersistentFnc.sqf b/addons/common/functions/fnc_execPersistentFnc.sqf index 0b7bccb69a..06e1397f01 100644 --- a/addons/common/functions/fnc_execPersistentFnc.sqf +++ b/addons/common/functions/fnc_execPersistentFnc.sqf @@ -28,12 +28,11 @@ _function = call compile _function; [[_arguments, _unit], _this select 1, 2] call FUNC(execRemoteFnc); // save persistent function for JIP -private ["_persistentFunctions", "_index"]; - -_persistentFunctions = _unit getVariable ["ACE_PersistentFunctions", []]; +private _persistentFunctions = _unit getVariable ["ACE_PersistentFunctions", []]; // find index to overwrite function with the same name, add to end otherwise -_index = count _persistentFunctions; +private _index = count _persistentFunctions; + { if (_x select 2 == _name) exitWith { _index = _forEachIndex; diff --git a/addons/common/functions/fnc_exportConfig.sqf b/addons/common/functions/fnc_exportConfig.sqf index 2a4890c49c..c175254e5a 100644 --- a/addons/common/functions/fnc_exportConfig.sqf +++ b/addons/common/functions/fnc_exportConfig.sqf @@ -15,26 +15,22 @@ */ #include "script_component.hpp" -private "_fnc_logEntries"; -_fnc_logEntries = { +private _fnc_logEntries = { params ["_c", "_d"]; - private ["_p", "_t", "_e", "_a", "_i"]; + private _p = inheritsFrom _c; - _p = inheritsFrom _c; - - _t = format [["class %1: %2 {", "class %1 {"] select (configName _p == ""), configName _c, configName _p]; + private _t = format [["class %1: %2 {", "class %1 {"] select (configName _p == ""), configName _c, configName _p]; for "_a" from 1 to _d do { _t = " " + _t; }; diag_log text _t; - _e = []; + private _e = []; for "_i" from 0 to (count _c - 1) do { - private ["_e1, _e2"]; - _e1 = _c select _i; + private _e1 = _c select _i; - _e2 = switch (true) do { + private _e2 = switch (true) do { case (isNumber _e1): {getNumber _e1}; case (isText _e1): {getText _e1}; case (isArray _e1): {getArray _e1}; diff --git a/addons/common/functions/fnc_filter.sqf b/addons/common/functions/fnc_filter.sqf index 0b30e59cf9..36ff328ef0 100644 --- a/addons/common/functions/fnc_filter.sqf +++ b/addons/common/functions/fnc_filter.sqf @@ -16,10 +16,9 @@ */ #include "script_component.hpp" -params ["_array", "_code"]; +params [["_array", [], [[]]], ["_code", {}, [{}]]]; -private "_result"; -_result = []; +private _result = []; { if (_x call _code) then { diff --git a/addons/common/functions/fnc_fixCrateContent.sqf b/addons/common/functions/fnc_fixCrateContent.sqf index a067c29c63..06d73c39b1 100644 --- a/addons/common/functions/fnc_fixCrateContent.sqf +++ b/addons/common/functions/fnc_fixCrateContent.sqf @@ -14,11 +14,9 @@ params ["_crate"]; -private ["_weapons", "_items"]; - // get all weapons inside the crate -_weapons = weaponCargo _crate; -_items = []; +private _weapons = weaponCargo _crate; +private _items = []; // if the "weapon" is supposed to be an item, move those from the weapon array to the item array { diff --git a/addons/common/functions/fnc_fixFloating.sqf b/addons/common/functions/fnc_fixFloating.sqf index 24084d2c11..3d352e4d45 100644 --- a/addons/common/functions/fnc_fixFloating.sqf +++ b/addons/common/functions/fnc_fixFloating.sqf @@ -12,15 +12,13 @@ */ #include "script_component.hpp" -private "_object"; -_object = _this; +params ["_object"]; // setHitPointDamage requires local object if (!local _object) exitWith {}; // save and restore hitpoints, see below why -private "_hitPointDamages"; -_hitPointDamages = getAllHitPointsDamage _object; +private _hitPointDamages = getAllHitPointsDamage _object; // get correct format for objects without hitpoints if (_hitPointDamages isEqualTo []) then { diff --git a/addons/common/functions/fnc_fixPosition.sqf b/addons/common/functions/fnc_fixPosition.sqf index 54d0cdfbf6..e2e2d71059 100644 --- a/addons/common/functions/fnc_fixPosition.sqf +++ b/addons/common/functions/fnc_fixPosition.sqf @@ -16,8 +16,7 @@ // setVectorUp requires local object if (!local _this) exitWith {}; -private "_position"; -_position = getPos _this; +private _position = getPos _this; // don't place the object below the ground if (_position select 2 < -0.1) then { diff --git a/addons/common/functions/fnc_getAllDefinedSetVariables.sqf b/addons/common/functions/fnc_getAllDefinedSetVariables.sqf index 7205a943d9..a5d973767f 100644 --- a/addons/common/functions/fnc_getAllDefinedSetVariables.sqf +++ b/addons/common/functions/fnc_getAllDefinedSetVariables.sqf @@ -22,12 +22,10 @@ params ["_object", ["_category", ""]]; if (isNil QGVAR(OBJECT_VARIABLES_STORAGE)) exitWith {[]}; -private ["_return", "_val"]; - -_return = []; +private _return = []; { - _val = _object getVariable (_x select 0); + private _val = _object getVariable (_x select 0); if (!isNil "_val") then { if (_category == "" || _category == _x select 3) then { diff --git a/addons/common/functions/fnc_getCaptivityStatus.sqf b/addons/common/functions/fnc_getCaptivityStatus.sqf index 36bf0ff183..e2663a892e 100644 --- a/addons/common/functions/fnc_getCaptivityStatus.sqf +++ b/addons/common/functions/fnc_getCaptivityStatus.sqf @@ -14,13 +14,10 @@ params ["_unit"]; -private ["_captivityReasons", "_unitCaptivityStatus", "_unitCaptivityReasons"]; +private _captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []]; +private _unitCaptivityStatus = [captiveNum _unit, count _captivityReasons] call FUNC(binarizeNumber); -_captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []]; - -_unitCaptivityStatus = [captiveNum _unit, count _captivityReasons] call FUNC(binarizeNumber); - -_unitCaptivityReasons = []; +private _unitCaptivityReasons = []; { if (_unitCaptivityStatus select _forEachIndex) then { diff --git a/addons/common/functions/fnc_getChildren.sqf b/addons/common/functions/fnc_getChildren.sqf index d5212dd9a5..19fdf287fe 100644 --- a/addons/common/functions/fnc_getChildren.sqf +++ b/addons/common/functions/fnc_getChildren.sqf @@ -14,7 +14,6 @@ params ["_name", "_cfgClass"]; -private "_classes"; -_classes = format ["configName inheritsFrom _x == '%1'", _name] configClasses (configFile >> _cfgClass); +private _classes = format ["configName inheritsFrom _x == '%1'", _name] configClasses (configFile >> _cfgClass); [_classes, {configName _this}] call FUNC(map) // return diff --git a/addons/common/functions/fnc_getConfigCommander.sqf b/addons/common/functions/fnc_getConfigCommander.sqf index bfa5fbc379..dbc7985931 100644 --- a/addons/common/functions/fnc_getConfigCommander.sqf +++ b/addons/common/functions/fnc_getConfigCommander.sqf @@ -14,9 +14,7 @@ params ["_vehicle"]; -private ["_config", "_turret"]; - -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; -_turret = [_vehicle] call FUNC(getTurretCommander); +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _turret = [_vehicle] call FUNC(getTurretCommander); [_config, _turret] call FUNC(getTurretConfigPath) // return diff --git a/addons/common/functions/fnc_getConfigGunner.sqf b/addons/common/functions/fnc_getConfigGunner.sqf index bc3131d798..6781902217 100644 --- a/addons/common/functions/fnc_getConfigGunner.sqf +++ b/addons/common/functions/fnc_getConfigGunner.sqf @@ -14,9 +14,7 @@ params ["_vehicle"]; -private ["_config", "_turret"]; - -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; -_turret = [_vehicle] call FUNC(getTurretGunner); +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _turret = [_vehicle] call FUNC(getTurretGunner); [_config, _turret] call FUNC(getTurretConfigPath) // return diff --git a/addons/common/functions/fnc_getDeathAnim.sqf b/addons/common/functions/fnc_getDeathAnim.sqf index 590418bf25..60aaf3bc0c 100644 --- a/addons/common/functions/fnc_getDeathAnim.sqf +++ b/addons/common/functions/fnc_getDeathAnim.sqf @@ -17,25 +17,23 @@ params ["_unit"]; -private ["_returnAnimation", "_animationState", "_unitAnimationCfg", "_unitActionsCfg", "_interpolateArray", "_indexAnimation"]; +private _returnAnimation = ""; -_returnAnimation = ""; - -_animationState = animationState _unit; -_unitAnimationCfg = configFile >> "CfgMovesMaleSdr" >> "States" >> _animationState; +private _animationState = animationState _unit; +private _unitAnimationCfg = configFile >> "CfgMovesMaleSdr" >> "States" >> _animationState; //If we're already in a terminal animation just return current if (getNumber (_unitAnimationCfg >> "terminal") == 1) exitWith {_animationState}; -_unitActionsCfg = configFile >> "CfgMovesBasic" >> "Actions" >> getText (_unitAnimationCfg >> "actions"); +private _unitActionsCfg = configFile >> "CfgMovesBasic" >> "Actions" >> getText (_unitAnimationCfg >> "actions"); TRACE_2("Animation/Action", configName _unitAnimationCfg, configName _unitActionsCfg); if (vehicle _unit != _unit) then { - _interpolateArray = getArray (_unitAnimationCfg >> "interpolateTo"); + private _interpolateArray = getArray (_unitAnimationCfg >> "interpolateTo"); for "_index" from 0 to (count _interpolateArray - 1) step 2 do { - _indexAnimation = _interpolateArray select _index; + private _indexAnimation = _interpolateArray select _index; //No guarentee that first animation will be right so scan for the first "terminal" animation //E.G.: interpolateTo[] = {"passenger_apc_generic04still",1,"KIA_passenger_apc_generic04",1}; diff --git a/addons/common/functions/fnc_getDefaultAnim.sqf b/addons/common/functions/fnc_getDefaultAnim.sqf index 372a2424eb..c2c0e1e7c4 100644 --- a/addons/common/functions/fnc_getDefaultAnim.sqf +++ b/addons/common/functions/fnc_getDefaultAnim.sqf @@ -17,12 +17,10 @@ params ["_unit"]; -private ["_anim", "_stance"]; - -_anim = toLower animationState _unit; +private _anim = toLower animationState _unit; // stance is broken for some animations. -_stance = stance _unit; +private _stance = stance _unit; if (_anim find "ppne" == 4) then { _stance = "PRONE"; diff --git a/addons/common/functions/fnc_getDefinedVariable.sqf b/addons/common/functions/fnc_getDefinedVariable.sqf index ea22163622..fa730e4700 100644 --- a/addons/common/functions/fnc_getDefinedVariable.sqf +++ b/addons/common/functions/fnc_getDefinedVariable.sqf @@ -15,15 +15,13 @@ params ["_unit", "_variable", "_defaultValue"]; -private "_value"; -_value = _unit getVariable _variable; +private _value = _unit getVariable _variable; if (isNil "_value") then { if (!isNil "_defaultValue") then { _value = _defaultValue; } else { - private "_definedVariable"; - _definedVariable = [_variable] call FUNC(getDefinedVariableInfo); + private _definedVariable = [_variable] call FUNC(getDefinedVariableInfo); if (count _definedVariable > 1) then { _value = _definedVariable select 1; diff --git a/addons/common/functions/fnc_getDefinedVariableDefault.sqf b/addons/common/functions/fnc_getDefinedVariableDefault.sqf index ba9ff20e23..a5027ed37b 100644 --- a/addons/common/functions/fnc_getDefinedVariableDefault.sqf +++ b/addons/common/functions/fnc_getDefinedVariableDefault.sqf @@ -14,8 +14,7 @@ params ["_varName"]; -private "_variableDefinition"; -_variableDefinition = [_varName] call FUNC(getDefinedVariableInfo); +private _variableDefinition = [_varName] call FUNC(getDefinedVariableInfo); if !(_variableDefinition isEqualTo []) exitWith { _variableDefinition select 1; diff --git a/addons/common/functions/fnc_getDisplayConfigName.sqf b/addons/common/functions/fnc_getDisplayConfigName.sqf index 7a0d9ffa95..1660bbf804 100644 --- a/addons/common/functions/fnc_getDisplayConfigName.sqf +++ b/addons/common/functions/fnc_getDisplayConfigName.sqf @@ -16,12 +16,10 @@ params ["_idd"]; -private ["_configNames", "_config"]; - -_configNames = []; +private _configNames = []; for "_index" from 0 to (count configFile - 1) do { - _config = configFile select _index; + private _config = configFile select _index; if (isClass _config && {isNumber (_config >> "idd")} && {getNumber (_config >> "idd") == _idd}) then { _configNames pushBack configName _config; diff --git a/addons/common/functions/fnc_getDoorTurrets.sqf b/addons/common/functions/fnc_getDoorTurrets.sqf index cab259a214..533e2a7489 100644 --- a/addons/common/functions/fnc_getDoorTurrets.sqf +++ b/addons/common/functions/fnc_getDoorTurrets.sqf @@ -14,14 +14,12 @@ params ["_vehicle"]; -private ["_turrets", "_doorTurrets", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_doorTurrets = []; +private _doorTurrets = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); diff --git a/addons/common/functions/fnc_getFirstObjectIntersection.sqf b/addons/common/functions/fnc_getFirstObjectIntersection.sqf index 1111094ed0..c4cc46ab9b 100644 --- a/addons/common/functions/fnc_getFirstObjectIntersection.sqf +++ b/addons/common/functions/fnc_getFirstObjectIntersection.sqf @@ -17,20 +17,16 @@ params ["_source", "_destination", "_accuracy"]; -private ["_result", "_distance"]; +private _result = [false, [0, 0, 0]]; -_result = [false, [0, 0, 0]]; - -_distance = _source vectorDistance _destination; +private _distance = _source vectorDistance _destination; if !(lineIntersectsWith [_source, _destination] isEqualTo []) then { - private ["_lower", "_upper", "_mid", "_dir"]; + private _lower = 0; + private _upper = 1; + private _mid = 0.5; - _lower = 0; - _upper = 1; - _mid = 0.5; - - _dir = _source vectorFromTo _destination; + private _dir = _source vectorFromTo _destination; while {(_upper - _lower) * _distance > _accuracy} do { _mid = _lower + (_upper - _lower) / 2; diff --git a/addons/common/functions/fnc_getFirstTerrainIntersection.sqf b/addons/common/functions/fnc_getFirstTerrainIntersection.sqf index a5065413d9..27a6f3c613 100644 --- a/addons/common/functions/fnc_getFirstTerrainIntersection.sqf +++ b/addons/common/functions/fnc_getFirstTerrainIntersection.sqf @@ -17,20 +17,16 @@ params ["_source", "_destination", "_accuracy"]; -private ["_result", "_distance"]; +private _result = [false, [0, 0, 0]]; -_result = [false, [0, 0, 0]]; - -_distance = _source vectorDistance _destination; +private _distance = _source vectorDistance _destination; if (terrainIntersectASL [_source, _destination]) then { - private ["_lower", "_upper", "_mid", "_dir"]; + private _lower = 0; + private _upper = 1; + private _mid = 0.5; - _lower = 0; - _upper = 1; - _mid = 0.5; - - _dir = _source vectorFromTo _destination; + private _dir = _source vectorFromTo _destination; while {(_upper - _lower) * _distance > _accuracy} do { _mid = _lower + (_upper - _lower) / 2; diff --git a/addons/common/functions/fnc_getForceWalkStatus.sqf b/addons/common/functions/fnc_getForceWalkStatus.sqf index acdc2f1a05..16eca5ccc7 100644 --- a/addons/common/functions/fnc_getForceWalkStatus.sqf +++ b/addons/common/functions/fnc_getForceWalkStatus.sqf @@ -17,15 +17,11 @@ params ["_unit"]; -private ["_forceWalkReasons", "_unitForceWalkNumber", "_unitForceWalkStatus", "_unitForceWalkReasons"]; +private _forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []]; +private _unitForceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0]; +private _unitForceWalkStatus = [_unitForceWalkNumber, count _forceWalkReasons] call FUNC(binarizeNumber); -_forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []]; - -_unitForceWalkNumber = _unit getVariable ["ACE_forceWalkStatusNumber", 0]; - -_unitForceWalkStatus = [_unitForceWalkNumber, count _forceWalkReasons] call FUNC(binarizeNumber); - -_unitForceWalkReasons = []; +private _unitForceWalkReasons = []; { if (_unitForceWalkStatus select _forEachIndex) then { diff --git a/addons/common/functions/fnc_getGunner.sqf b/addons/common/functions/fnc_getGunner.sqf index dac42ce535..fb8c19ce45 100644 --- a/addons/common/functions/fnc_getGunner.sqf +++ b/addons/common/functions/fnc_getGunner.sqf @@ -13,14 +13,13 @@ */ #include "script_component.hpp" -params ["_vehicle", "_weapon"]; +params [["_vehicle", objNull, [objNull]], ["_weapon", "", [""]]]; // on foot if (gunner _vehicle == _vehicle && {_weapon in weapons _vehicle || {toLower _weapon in ["throw", "put"]}}) exitWith {gunner _vehicle}; // inside vehicle -private "_gunner"; -_gunner = objNull; +private _gunner = objNull; { if (_weapon in (_vehicle weaponsTurret _x)) exitWith { diff --git a/addons/common/functions/fnc_getHitPoints.sqf b/addons/common/functions/fnc_getHitPoints.sqf index 84099b659a..9fb69dd50c 100644 --- a/addons/common/functions/fnc_getHitPoints.sqf +++ b/addons/common/functions/fnc_getHitPoints.sqf @@ -18,8 +18,7 @@ ACE_DEPRECATED("ace_common_fnc_getHitPoints","3.5.0","getAllHitPointsDamage"); params ["_vehicle"]; -private "_hitPointsWithSelections"; -_hitPointsWithSelections = getAllHitPointsDamage _vehicle; +private _hitPointsWithSelections = getAllHitPointsDamage _vehicle; // get correct format on vehicles without any hitpoints if (_hitPointsWithSelections isEqualTo []) then { diff --git a/addons/common/functions/fnc_getHitPointsWithSelections.sqf b/addons/common/functions/fnc_getHitPointsWithSelections.sqf index aef415a54f..d1c81ad3a6 100644 --- a/addons/common/functions/fnc_getHitPointsWithSelections.sqf +++ b/addons/common/functions/fnc_getHitPointsWithSelections.sqf @@ -19,8 +19,7 @@ ACE_DEPRECATED("ace_common_fnc_getHitPointsWithSelections","3.5.0","getAllHitPoi params ["_vehicle"]; -private "_hitPointsWithSelections"; -_hitPointsWithSelections = getAllHitPointsDamage _vehicle; +private _hitPointsWithSelections = getAllHitPointsDamage _vehicle; // get correct format on vehicles without any hitpoints if (_hitPointsWithSelections isEqualTo []) then { diff --git a/addons/common/functions/fnc_getInPosition.sqf b/addons/common/functions/fnc_getInPosition.sqf index dc3ad38cde..9ab15bacd5 100644 --- a/addons/common/functions/fnc_getInPosition.sqf +++ b/addons/common/functions/fnc_getInPosition.sqf @@ -25,15 +25,13 @@ _position = toLower _position; // general if (!alive _vehicle || {locked _vehicle > 1}) exitWith {false}; -private ["_config", "_turret", "_isInside", "_script", "_enemiesInVehicle"]; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _turret = []; -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; -_turret = []; +private _isInside = vehicle _unit == _vehicle; -_isInside = vehicle _unit == _vehicle; - -_script = {}; -_enemiesInVehicle = false; //Possible Side Restriction +private _script = {}; +private _enemiesInVehicle = false; //Possible Side Restriction { if (side _unit getFriend side _x < 0.6) exitWith {_enemiesInVehicle = true}; @@ -96,8 +94,7 @@ switch (_position) do { }; case "turret" : { - private "_turrets"; - _turrets = [_vehicle] call FUNC(getTurretsOther); + private _turrets = [_vehicle] call FUNC(getTurretsOther); if (_index != -1 && {_turret = _turrets select _index; CANGETINTURRETINDEX}) then { _script = [ @@ -122,8 +119,7 @@ switch (_position) do { }; case "ffv" : { - private "_turrets"; - _turrets = [_vehicle] call FUNC(getTurretsFFV); + private _turrets = [_vehicle] call FUNC(getTurretsFFV); if (_index != -1 && {_turret = _turrets select _index; CANGETINTURRETINDEX}) then { _script = [ @@ -148,8 +144,7 @@ switch (_position) do { }; case "codriver" : { - private "_positions"; - _positions = [typeOf _vehicle] call FUNC(getVehicleCodriver); + private _positions = [typeOf _vehicle] call FUNC(getVehicleCodriver); { if (alive _x) then {_positions deleteAt (_positions find (_vehicle getCargoIndex _x))}; @@ -207,11 +202,9 @@ switch (_position) do { }; // this will execute all config based event handlers. Not script based ones unfortunately, but atleast we don't use any. -private "_fnc_getInEH"; -_fnc_getInEH = { - private "_config"; +private _fnc_getInEH = { // config based getIn EHs are assigned to the soldier, not the vehicle. Why Bis? Why? - _config = configFile >> "CfgVehicles" >> typeOf _unit >> "EventHandlers"; + private _config = configFile >> "CfgVehicles" >> typeOf _unit >> "EventHandlers"; if (isClass _config) then { //getIn is local effects with global arguments. It doesn't trigger if the unit was already inside and only switched seats diff --git a/addons/common/functions/fnc_getItemType.sqf b/addons/common/functions/fnc_getItemType.sqf index ec20b46f74..d3eb511949 100644 --- a/addons/common/functions/fnc_getItemType.sqf +++ b/addons/common/functions/fnc_getItemType.sqf @@ -15,23 +15,21 @@ params ["_item"]; -private ["_cfgType", "_config", "_type", "_simulation", "_default"]; - -_cfgType = [_item] call FUNC(getConfigType); +private _cfgType = [_item] call FUNC(getConfigType); if (_cfgType == "") exitWith {["", ""]}; if (_cfgType == "CfgGlasses") exitWith {["item", "glasses"]}; -_config = configFile >> _cfgType >> _item; -_type = getNumber (_config >> "type"); -_simulation = getText (_config >> "simulation"); +private _config = configFile >> _cfgType >> _item; +private _type = getNumber (_config >> "type"); +private _simulation = getText (_config >> "simulation"); if (isNumber (_config >> "ItemInfo" >> "type")) then { _type = getNumber (_config >> "ItemInfo" >> "type"); }; -_default = ["item", "magazine"] select (_cfgType == "CfgMagazines"); +private _default = ["item", "magazine"] select (_cfgType == "CfgMagazines"); switch (true) do { case (_type == 0): {[_default, "unknown"]}; diff --git a/addons/common/functions/fnc_getLightProperties.sqf b/addons/common/functions/fnc_getLightProperties.sqf index bbaf955a8b..a376dff841 100644 --- a/addons/common/functions/fnc_getLightProperties.sqf +++ b/addons/common/functions/fnc_getLightProperties.sqf @@ -19,14 +19,12 @@ params ["_vehicle", "_light"]; -private ["_config", "_intensity", "_position", "_direction", "_innerAngle", "_outerAngle"]; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> _light; -_config = configFile >> "CfgVehicles" >> typeOf _vehicle >> "Reflectors" >> _light; - -_intensity = getNumber (_config >> "intensity"); -_position = getText (_config >> "position"); -_direction = getText (_config >> "direction"); -_innerAngle = getNumber (_config >> "innerAngle"); -_outerAngle = getNumber (_config >> "outerAngle"); +private _intensity = getNumber (_config >> "intensity"); +private _position = getText (_config >> "position"); +private _direction = getText (_config >> "direction"); +private _innerAngle = getNumber (_config >> "innerAngle"); +private _outerAngle = getNumber (_config >> "outerAngle"); [_intensity, _position, _direction, _innerAngle, _outerAngle] diff --git a/addons/common/functions/fnc_getLightPropertiesWeapon.sqf b/addons/common/functions/fnc_getLightPropertiesWeapon.sqf index 01567fee58..44c866e67f 100644 --- a/addons/common/functions/fnc_getLightPropertiesWeapon.sqf +++ b/addons/common/functions/fnc_getLightPropertiesWeapon.sqf @@ -18,16 +18,12 @@ params ["_weapon"]; -// @todo: Can weapons themselves still have flashlights (no attachment)? +private _config = configFile >> "CfgWeapons" >> _weapon >> "ItemInfo" >> "FlashLight"; -private ["_config", "_intensity", "_position", "_direction", "_innerAngle", "_outerAngle"]; - -_config = configFile >> "CfgWeapons" >> _weapon >> "ItemInfo" >> "FlashLight"; - -_intensity = getNumber (_config >> "intensity"); -_position = getText (_config >> "position"); -_direction = getText (_config >> "direction"); -_innerAngle = getNumber (_config >> "innerAngle"); -_outerAngle = getNumber (_config >> "outerAngle"); +private _intensity = getNumber (_config >> "intensity"); +private _position = getText (_config >> "position"); +private _direction = getText (_config >> "direction"); +private _innerAngle = getNumber (_config >> "innerAngle"); +private _outerAngle = getNumber (_config >> "outerAngle"); [_intensity, _position, _direction, _innerAngle, _outerAngle] diff --git a/addons/common/functions/fnc_getMGRSdata.sqf b/addons/common/functions/fnc_getMGRSdata.sqf index b4f10db8a4..ee6d1e11dc 100644 --- a/addons/common/functions/fnc_getMGRSdata.sqf +++ b/addons/common/functions/fnc_getMGRSdata.sqf @@ -18,11 +18,9 @@ params [["_map", worldName]]; -private ["_long", "_lat", "_altitude", "_UTM", "_easting", "_northing", "_zone", "_band", "_GZD"]; - -_long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude"); -_lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); -_altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); +private _long = getNumber (configFile >> "CfgWorlds" >> _map >> "longitude"); +private _lat = getNumber (configFile >> "CfgWorlds" >> _map >> "latitude"); +private _altitude = getNumber (configFile >> "CfgWorlds" >> _map >> "elevationOffset"); if (_map in ["Chernarus", "Bootcamp_ACR", "Woodland_ACR", "utes"]) then { _lat = 50; _altitude = 0; }; if (_map in ["Altis", "Stratis"]) then { _lat = 40; _altitude = 0; }; @@ -46,14 +44,14 @@ if (_map in ["lingor"]) then { _lat = -4; _altitude = 0; }; if (_map in ["Panthera3"]) then { _lat = 46; _altitude = 0; }; if (_map in ["Kunduz"]) then { _lat = 37; _altitude = 400; }; -_UTM = [_long,_lat] call BIS_fnc_posDegToUTM; -_easting = _UTM select 0; -_northing = _UTM select 1; -//_zone = _UTM select 2; +private _UTM = [_long,_lat] call BIS_fnc_posDegToUTM; +private _easting = _UTM select 0; +private _northing = _UTM select 1; +//private _zone = _UTM select 2; TRACE_4("",_UTM,_easting,_northing,_zone); /* -_band = switch (true) do { +private _band = switch (true) do { case (_lat<-72): {"C"}; case (_lat<-64): {"D"}; case (_lat<-56): {"E"}; @@ -77,8 +75,8 @@ _band = switch (true) do { }; */ -_zone = 1 + (floor ((_long + 180) / 6)); -_band = "Z"; +private _zone = 1 + (floor ((_long + 180) / 6)); +private _band = "Z"; if (_lat <= -80) then { _band = "A"; @@ -90,17 +88,17 @@ if (_lat <= -80) then { if (_map == "VR") then {_zone = 0; _band = "RV";}; -_GZD = format ["%1%2",_zone,_band]; +private _GZD = format ["%1%2",_zone,_band]; TRACE_3("",_zone,_band,_GZD); -private ["_set1", "_set2", "_set3", "_set4", "_set5", "_set6", "_metaE", "_metaN", "_letterE", "_letterN", "_grid100km"]; +private ["_metaE", "_metaN", "_letterE", "_letterN"]; -_set1 = [1,7,13,19,25,31,37,43,49,55]; -_set2 = [2,8,14,20,26,32,38,44,50,56]; -_set3 = [3,9,15,21,27,33,39,45,51,57]; -_set4 = [4,10,16,22,28,34,40,46,52,58]; -_set5 = [5,11,17,23,29,35,41,47,53,59]; -_set6 = [6,12,18,24,30,36,42,48,54,60]; +private _set1 = [1,7,13,19,25,31,37,43,49,55]; +private _set2 = [2,8,14,20,26,32,38,44,50,56]; +private _set3 = [3,9,15,21,27,33,39,45,51,57]; +private _set4 = [4,10,16,22,28,34,40,46,52,58]; +private _set5 = [5,11,17,23,29,35,41,47,53,59]; +private _set6 = [6,12,18,24,30,36,42,48,54,60]; switch (true) do { case (_zone in _set1): {_metaE = 1; _metaN = 1;}; @@ -154,7 +152,7 @@ switch (true) do { }; TRACE_1("",_letterN); -_grid100km = _letterE + _letterN; +private _grid100km = _letterE + _letterN; TRACE_1("",_grid100km); if (_map == worldName) then { diff --git a/addons/common/functions/fnc_getMapGridData.sqf b/addons/common/functions/fnc_getMapGridData.sqf index c74f378d75..be87a8585b 100644 --- a/addons/common/functions/fnc_getMapGridData.sqf +++ b/addons/common/functions/fnc_getMapGridData.sqf @@ -19,20 +19,18 @@ GVAR(mapGridData) = []; -private ["_cfgGrid", "_offsetX", "_offsetY", "_zoomMax", "_formatX", "_formatY", "_stepX", "_stepY", "_zoom", "_letterGrid", "_heightOffset", "_startGrid", "_originGrid", "_realOffsetY"]; - //--- Extract grid values from world config (Borrowed from BIS_fnc_gridToPos) -_cfgGrid = configFile >> "CfgWorlds" >> worldName >> "Grid"; -_offsetX = getNumber (_cfgGrid >> "offsetX"); -_offsetY = getNumber (_cfgGrid >> "offsetY"); -_zoomMax = 1e99; -_formatX = ""; -_formatY = ""; -_stepX = 1e10; -_stepY = 1e10; +private _cfgGrid = configFile >> "CfgWorlds" >> worldName >> "Grid"; +private _offsetX = getNumber (_cfgGrid >> "offsetX"); +private _offsetY = getNumber (_cfgGrid >> "offsetY"); +private _zoomMax = 1e99; +private _formatX = ""; +private _formatY = ""; +private _stepX = 1e10; +private _stepY = 1e10; { - _zoom = getnumber (_x >> "zoomMax"); + private _zoom = getnumber (_x >> "zoomMax"); if (_zoom < _zoomMax) then { _zoomMax = _zoom; _formatX = getText (_x >> "formatX"); @@ -43,7 +41,7 @@ _stepY = 1e10; false } count configProperties [_cfgGrid, "isClass _x", false]; -_letterGrid = false; +private _letterGrid = false; if (toLower _formatX find "a" != -1) then {_letterGrid = true}; if (toLower _formatY find "a" != -1) then {_letterGrid = true}; @@ -53,9 +51,9 @@ if (_letterGrid) exitWith { }; //Start at [0, 500] and move north until we get a change in grid -_heightOffset = 500; -_startGrid = mapGridPosition [0, _heightOffset]; -_originGrid = _startGrid; +private _heightOffset = 500; +private _startGrid = mapGridPosition [0, _heightOffset]; +private _originGrid = _startGrid; while {_startGrid == _originGrid} do { _heightOffset = _heightOffset + 1; @@ -63,7 +61,7 @@ while {_startGrid == _originGrid} do { }; //Calculate the real y offset -_realOffsetY = (parseNumber (_originGrid select [count _formatX, count _formatY])) * _stepY + _heightOffset - 1; +private _realOffsetY = (parseNumber (_originGrid select [count _formatX, count _formatY])) * _stepY + _heightOffset - 1; //Calculate MGRS 10digit step - they should both be 1 meter: _stepXat5 = _stepX * 10 ^ ((count _formatX) - 5); diff --git a/addons/common/functions/fnc_getMapGridFromPos.sqf b/addons/common/functions/fnc_getMapGridFromPos.sqf index 1f946a6e80..8604d68fa6 100644 --- a/addons/common/functions/fnc_getMapGridFromPos.sqf +++ b/addons/common/functions/fnc_getMapGridFromPos.sqf @@ -19,24 +19,22 @@ params ["_pos", ["_returnSingleString", false]]; -private ["_nativeGrid", "_count", "_easting", "_northing"]; - //Fallback, when map data is weird (letters) if (GVAR(mapGridData) isEqualTo []) exitWith { - _nativeGrid = mapGridPosition _pos; + private _nativeGrid = mapGridPosition _pos; if (_returnSingleString) then { _nativeGrid } else { - _count = floor ((count _nativeGrid) / 2); + private _count = floor ((count _nativeGrid) / 2); [_nativeGrid select [0, _count], _nativeGrid select [_count, _count]] }; }; GVAR(mapGridData) params ["_offsetX", "_realOffsetY", "_stepXat5", "_stepYat5"]; -_easting = floor (((_pos select 0) - _offsetX) / _stepXat5); -_northing = floor (((_pos select 1) - _realOffsetY) / _stepYat5); +private _easting = floor (((_pos select 0) - _offsetX) / _stepXat5); +private _northing = floor (((_pos select 1) - _realOffsetY) / _stepYat5); //Attempt to handle negative east/north (e.g.: moving west of map bounds) if (_easting > 0) then { diff --git a/addons/common/functions/fnc_getMapPosFromGrid.sqf b/addons/common/functions/fnc_getMapPosFromGrid.sqf index 5ba67a40bf..a148679fa9 100644 --- a/addons/common/functions/fnc_getMapPosFromGrid.sqf +++ b/addons/common/functions/fnc_getMapPosFromGrid.sqf @@ -25,17 +25,15 @@ if (count GVAR(mapGridData) == 0) exitWith { GVAR(mapGridData) params ["_offsetX", "_realOffsetY", "_stepXat5", "_stepYat5"]; -private ["_countInput", "_countInputHalf", "_xPart", "_yPart", "_xPos", "_yPos"]; - -_countInput = count _inputString; -_countInputHalf = floor (_countInput / 2); +private _countInput = count _inputString; +private _countInputHalf = floor (_countInput / 2); //Split string, ignoring middle -_xPart = _inputString select [0, _countInputHalf]; -_yPart = _inputString select [ceil (_countInput / 2), _countInputHalf]; +private _xPart = _inputString select [0, _countInputHalf]; +private _yPart = _inputString select [ceil (_countInput / 2), _countInputHalf]; -_xPos = ((parseNumber _xPart) * _stepXat5 * 10 ^ (5 - _countInputHalf)) + _offsetX; -_yPos = ((parseNumber _yPart) * _stepYat5 * 10 ^ (5 - _countInputHalf)) + _realOffsetY; +private _xPos = ((parseNumber _xPart) * _stepXat5 * 10 ^ (5 - _countInputHalf)) + _offsetX; +private _yPos = ((parseNumber _yPart) * _stepYat5 * 10 ^ (5 - _countInputHalf)) + _realOffsetY; if (_getCenterOfGrid) then { _xPos = _xPos + 0.5 * _stepXat5 * 10 ^ (5 - _countInputHalf); diff --git a/addons/common/functions/fnc_getMarkerType.sqf b/addons/common/functions/fnc_getMarkerType.sqf index 7c99302d8f..0da7f1a46e 100644 --- a/addons/common/functions/fnc_getMarkerType.sqf +++ b/addons/common/functions/fnc_getMarkerType.sqf @@ -14,11 +14,9 @@ params ["_group"]; -private ["_leader", "_vehicle", "_side"]; - -_leader = leader _group; -_vehicle = vehicle _leader; -_side = side _leader; +private _leader = leader _group; +private _vehicle = vehicle _leader; +private _side = side _leader; if (_vehicle == _leader) exitWith { if ( diff --git a/addons/common/functions/fnc_getName.sqf b/addons/common/functions/fnc_getName.sqf index a7facd2c6d..d2cd1ecc20 100644 --- a/addons/common/functions/fnc_getName.sqf +++ b/addons/common/functions/fnc_getName.sqf @@ -15,8 +15,7 @@ params ["_unit", ["_showEffective", false]]; -private "_name"; -_name = ""; +private _name = ""; if (_unit isKindOf "CAManBase") then { _name = _unit getVariable ["ACE_Name", localize QUOTE(DOUBLES(STR,GVAR(Unknown)))]; diff --git a/addons/common/functions/fnc_getNumberMagazinesIn.sqf b/addons/common/functions/fnc_getNumberMagazinesIn.sqf index df1f7ed64b..87f92979eb 100644 --- a/addons/common/functions/fnc_getNumberMagazinesIn.sqf +++ b/addons/common/functions/fnc_getNumberMagazinesIn.sqf @@ -15,8 +15,7 @@ params ["_unit", "_magazine"]; -private "_return"; -_return = 0; +private _return = 0; if (_unit isKindOf "CAManBase") then { _return = {_x == _magazine} count magazines _unit; diff --git a/addons/common/functions/fnc_getReflectorsWithSelections.sqf b/addons/common/functions/fnc_getReflectorsWithSelections.sqf index ef2b908bde..248050486c 100644 --- a/addons/common/functions/fnc_getReflectorsWithSelections.sqf +++ b/addons/common/functions/fnc_getReflectorsWithSelections.sqf @@ -18,23 +18,18 @@ params ["_vehicle"]; -private ["_config", "_hitpoints", "_selections"]; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; -_config = configFile >> "CfgVehicles" >> typeOf _vehicle; - -_hitpoints = []; -_selections = []; +private _hitpoints = []; +private _selections = []; // iterate through all parents while {isClass _config} do { - private "_class"; - _class = _config >> "Reflectors"; + private _class = _config >> "Reflectors"; for "_i" from 0 to (count _class - 1) do { - private ["_entry", "_selection"]; - - _entry = _class select _i; - _selection = getText (_entry >> "hitpoint"); + private _entry = _class select _i; + private _selection = getText (_entry >> "hitpoint"); if (!(_selection in _selections) && {!isNil {_vehicle getHit _selection}}) then { _hitpoints pushBack configName _entry; diff --git a/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf b/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf index 277155108a..b46ec308ec 100644 --- a/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf +++ b/addons/common/functions/fnc_getSelectionsWithoutHitPoints.sqf @@ -13,11 +13,9 @@ params ["_vehicle"]; -private ["_hitPointsFull", "_allSelectionsWithoutHitpoints"]; +private _hitPointsFull = getAllHitPointsDamage _vehicle; -_hitPointsFull = getAllHitPointsDamage _vehicle; - -_allSelectionsWithoutHitpoints = []; +private _allSelectionsWithoutHitpoints = []; { if (_x == "") then { diff --git a/addons/common/functions/fnc_getSettingData.sqf b/addons/common/functions/fnc_getSettingData.sqf index de9ef40447..ae9dd5351e 100644 --- a/addons/common/functions/fnc_getSettingData.sqf +++ b/addons/common/functions/fnc_getSettingData.sqf @@ -23,12 +23,13 @@ params ["_name"]; -private "_value"; -_value = []; +scopeName "main"; { - if (_x select 0 == _name) exitWith {_value = _x}; + if (_x select 0 == _name) then { + _x breakOut "main"; + }; false } count GVAR(settings); -_value +[] diff --git a/addons/common/functions/fnc_getStringFromMissionSQM.sqf b/addons/common/functions/fnc_getStringFromMissionSQM.sqf index 6b6a34cfb7..0893b7bb0d 100644 --- a/addons/common/functions/fnc_getStringFromMissionSQM.sqf +++ b/addons/common/functions/fnc_getStringFromMissionSQM.sqf @@ -14,13 +14,11 @@ */ #include "script_component.hpp" -private ["_path", "_mission", "_class", "_index", "_array", "_entry"]; - -_path = _this; +[_this] params ["_path", [], [[]]]; if (missionName == "") exitWith {""}; -_mission = toArray toLower loadFile "mission.sqm"; +private _mission = toArray toLower loadFile "mission.sqm"; _mission resize 65536; { @@ -34,11 +32,9 @@ _mission = toString (_mission - [-1]); {_path set [_forEachIndex, toLower _x]} forEach _path; for "_a" from 0 to (count _path - 2) do { - _class = format ["class%1{", _path select _a]; - - _index = _mission find _class; - - _array = toArray _mission; + private _class = format ["class%1{", _path select _a]; + private _index = _mission find _class; + private _array = toArray _mission; for "_b" from 0 to (_index + count toArray _class - 1) do { _array set [_b, -1]; @@ -49,7 +45,7 @@ for "_a" from 0 to (count _path - 2) do { _mission = toString _array; }; -_entry = format ["%1=", _path select (count _path - 1)]; +private _entry = format ["%1=", _path select (count _path - 1)]; _index = _mission find _entry; if (_index == -1) exitWith {""}; diff --git a/addons/common/functions/fnc_getTargetAzimuthAndInclination.sqf b/addons/common/functions/fnc_getTargetAzimuthAndInclination.sqf index da23e600aa..0d2343bec9 100644 --- a/addons/common/functions/fnc_getTargetAzimuthAndInclination.sqf +++ b/addons/common/functions/fnc_getTargetAzimuthAndInclination.sqf @@ -13,13 +13,11 @@ */ #include "script_component.hpp" -private ["_position", "_direction", "_azimuth", "_inclination"]; +private _position = ATLToASL positionCameraToWorld [0, 0, 0]; +private _direction = ATLToASL positionCameraToWorld [0, 0, 1]; -_position = ATLToASL positionCameraToWorld [0, 0, 0]; -_direction = ATLToASL positionCameraToWorld [0, 0, 1]; - -_azimuth = ((_direction select 0) - (_position select 0)) atan2 ((_direction select 1) - (_position select 1)); -_inclination = asin ((_direction select 2) - (_position select 2)); +private _azimuth = ((_direction select 0) - (_position select 0)) atan2 ((_direction select 1) - (_position select 1)); +private _inclination = asin ((_direction select 2) - (_position select 2)); if (_azimuth < 0) then {_azimuth = _azimuth + 360}; diff --git a/addons/common/functions/fnc_getTargetDistance.sqf b/addons/common/functions/fnc_getTargetDistance.sqf index fe75268cea..4bd050a2c5 100644 --- a/addons/common/functions/fnc_getTargetDistance.sqf +++ b/addons/common/functions/fnc_getTargetDistance.sqf @@ -16,16 +16,14 @@ params ["_interval", "_maxDistance", "_minDistance"]; -private ["_position", "_laser", "_line", "_distance", "_iteration"]; - -_position = ATLToASL positionCameraToWorld [0, 0, 0]; +private _position = ATLToASL positionCameraToWorld [0, 0, 0]; _position set [2, (_position select 2) - (getTerrainHeightASL _position min 0)]; -_laser = + _position; -_line = [_position, _laser]; +private _laser = + _position; +private _line = [_position, _laser]; -_distance = _maxDistance; -_iteration = _distance; +private _distance = _maxDistance; +private _iteration = _distance; while { _iteration > _interval / 2 diff --git a/addons/common/functions/fnc_getTargetObject.sqf b/addons/common/functions/fnc_getTargetObject.sqf index adaaa3e344..ed757dedf4 100644 --- a/addons/common/functions/fnc_getTargetObject.sqf +++ b/addons/common/functions/fnc_getTargetObject.sqf @@ -14,15 +14,13 @@ params ["_maxDistance"]; -private ["_position", "_laser", "_intersects"]; - -_position = ATLToASL positionCameraToWorld [0, 0, 0]; +private _position = ATLToASL positionCameraToWorld [0, 0, 0]; _position set [2, (_position select 2) - (getTerrainHeightASL _position min 0)]; -_laser = ATLToASL positionCameraToWorld [0, 0, _maxDistance]; +private _laser = ATLToASL positionCameraToWorld [0, 0, _maxDistance]; _laser set [2, (_laser select 2) - (getTerrainHeightASL _laser min 0)]; -_intersects = lineIntersectsObjs [_position, _laser, objNull, objNull, true, 2]; +private _intersects = lineIntersectsObjs [_position, _laser, objNull, objNull, true, 2]; if (_intersects isEqualTo []) exitWith {objNull}; diff --git a/addons/common/functions/fnc_getTurnedOnLights.sqf b/addons/common/functions/fnc_getTurnedOnLights.sqf index 0d71a3362e..a0fa4d914d 100644 --- a/addons/common/functions/fnc_getTurnedOnLights.sqf +++ b/addons/common/functions/fnc_getTurnedOnLights.sqf @@ -16,15 +16,13 @@ params ["_vehicle"]; if (!isLightOn _vehicle) exitWith {[]}; -private ["_reflectorsWithSelections", "_lights", "_hitpoints", "_turnedOnLights"]; - -_reflectorsWithSelections = [[_vehicle], FUNC(getReflectorsWithSelections), uiNamespace, format [QEGVAR(cache,%1_%2), QUOTE(DFUNC(getReflectorsWithSelections)), typeOf _vehicle], 1E11] call FUNC(cachedCall); +private _reflectorsWithSelections = [[_vehicle], FUNC(getReflectorsWithSelections), uiNamespace, format [QEGVAR(cache,%1_%2), QUOTE(DFUNC(getReflectorsWithSelections)), typeOf _vehicle], 1E11] call FUNC(cachedCall); //_reflectorsWithSelections = [_vehicle] call FUNC(getReflectorsWithSelections); -_lights = _reflectorsWithSelections select 0; -_hitpoints = _reflectorsWithSelections select 1; +private _lights = _reflectorsWithSelections select 0; +private _hitpoints = _reflectorsWithSelections select 1; -_turnedOnLights = []; +private _turnedOnLights = []; { if (_vehicle getHit _x <= 0.9) then { diff --git a/addons/common/functions/fnc_getTurretCommander.sqf b/addons/common/functions/fnc_getTurretCommander.sqf index e045c2d46f..e73795e148 100644 --- a/addons/common/functions/fnc_getTurretCommander.sqf +++ b/addons/common/functions/fnc_getTurretCommander.sqf @@ -12,16 +12,14 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_turrets", "_turret", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_turret = []; +private _turret = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); diff --git a/addons/common/functions/fnc_getTurretConfigPath.sqf b/addons/common/functions/fnc_getTurretConfigPath.sqf index 07d7ac4e0c..95d0773fd3 100644 --- a/addons/common/functions/fnc_getTurretConfigPath.sqf +++ b/addons/common/functions/fnc_getTurretConfigPath.sqf @@ -15,14 +15,12 @@ params ["_config", "_turretIndex"]; -private ["_offset", "_config2", "_foundClasses"]; - for "_index" from 0 to (count _turretIndex - 1) do { _config = _config >> "Turrets"; - _offset = 0; - _config2 = _config select 0; - _foundClasses = 0; + private _offset = 0; + private _config2 = _config select 0; + private _foundClasses = 0; for "_a" from 0 to (count _config - 1) do { if (isClass _config2) then { diff --git a/addons/common/functions/fnc_getTurretCopilot.sqf b/addons/common/functions/fnc_getTurretCopilot.sqf index 94a30b7697..6161f5c4cc 100644 --- a/addons/common/functions/fnc_getTurretCopilot.sqf +++ b/addons/common/functions/fnc_getTurretCopilot.sqf @@ -12,16 +12,14 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_turrets", "_turret", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_turret = []; +private _turret = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); diff --git a/addons/common/functions/fnc_getTurretDirection.sqf b/addons/common/functions/fnc_getTurretDirection.sqf index ced29a9a85..92c84cdca9 100644 --- a/addons/common/functions/fnc_getTurretDirection.sqf +++ b/addons/common/functions/fnc_getTurretDirection.sqf @@ -16,30 +16,25 @@ params ["_vehicle", "_position"]; -private ["_turret", "_pov", "_gunBeg", "_gunEnd", "_povPos", "_povDir"]; +private _turret = [_vehicle, _position] call CBA_fnc_getTurret; -_turret = [_vehicle, _position] call CBA_fnc_getTurret; - -_pov = getText (_turret >> "memoryPointGunnerOptics"); -_gunBeg = getText (_turret >> "gunBeg"); -_gunEnd = getText (_turret >> "gunEnd"); +private _pov = getText (_turret >> "memoryPointGunnerOptics"); +private _gunBeg = getText (_turret >> "gunBeg"); +private _gunEnd = getText (_turret >> "gunEnd"); TRACE_3("", _pov, _gunBeg, _gunEnd); // Pull the PIP pov or barrel direction, depending on how the model is set up -_povPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _pov)); //@todo AGLToASL ? -_povDir = [0,0,0]; +private _povPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _pov)); //@todo AGLToASL ? +private _povDir = [0,0,0]; if (_pov == "pip0_pos") then { - private "_pipDir"; - _pipDir = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition "pip0_dir")); + private _pipDir = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition "pip0_dir")); _povDir = _pipDir vectorDiff _povPos; } else { - private ["_gunBeginPos", "_gunEndPos"]; - - _gunBeginPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _gunBeg)); - _gunEndPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _gunEnd)); + private _gunBeginPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _gunBeg)); + private _gunEndPos = ATLtoASL (_vehicle modelToWorldVisual (_vehicle selectionPosition _gunEnd)); _povDir = _gunBeginPos vectorDiff _gunEndPos; }; diff --git a/addons/common/functions/fnc_getTurretGunner.sqf b/addons/common/functions/fnc_getTurretGunner.sqf index 9a71d292bd..6f59798cc6 100644 --- a/addons/common/functions/fnc_getTurretGunner.sqf +++ b/addons/common/functions/fnc_getTurretGunner.sqf @@ -12,16 +12,14 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_turrets", "_turret", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_turret = []; +private _turret = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); diff --git a/addons/common/functions/fnc_getTurretIndex.sqf b/addons/common/functions/fnc_getTurretIndex.sqf index 20ee178bf1..df2d540873 100644 --- a/addons/common/functions/fnc_getTurretIndex.sqf +++ b/addons/common/functions/fnc_getTurretIndex.sqf @@ -15,7 +15,7 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; private _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {[]}; diff --git a/addons/common/functions/fnc_getTurrets.sqf b/addons/common/functions/fnc_getTurrets.sqf index 9a1a48e2bd..229f3ab1f7 100644 --- a/addons/common/functions/fnc_getTurrets.sqf +++ b/addons/common/functions/fnc_getTurrets.sqf @@ -16,33 +16,25 @@ params ["_type"]; -private ["_varName", "_turrets"]; - -_varName = format [QGVAR(CachedTurrets_%1), _type]; -_turrets = + (uiNamespace getVariable _varName); +private _varName = format [QGVAR(CachedTurrets_%1), _type]; +private _turrets = + (uiNamespace getVariable _varName); if (!isNil "_turrets") exitWith {_turrets}; -private ["_config", "_fnc_addTurret"]; - -_config = configFile >> "CfgVehicles" >> _type; +private _config = configFile >> "CfgVehicles" >> _type; _turrets = []; -_fnc_addTurret = { +private _fnc_addTurret = { params ["_config", "_path"]; _config = _config >> "Turrets"; - private ["_count", "_offset", "_path2", "_config2"]; + private _offset = 0; - _count = count _config; - - _offset = 0; - - for "_index" from 0 to (_count - 1) do { - _path2 = _path + [_index - _offset]; - _config2 = _config select _index; + for "_index" from 0 to (count _config - 1) do { + private _path2 = _path + [_index - _offset]; + private _config2 = _config select _index; if (isClass _config2) then { _turrets pushBack _path2; diff --git a/addons/common/functions/fnc_getTurretsFFV.sqf b/addons/common/functions/fnc_getTurretsFFV.sqf index ff7726d1be..8c471824cf 100644 --- a/addons/common/functions/fnc_getTurretsFFV.sqf +++ b/addons/common/functions/fnc_getTurretsFFV.sqf @@ -12,16 +12,14 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_turrets", "_turret", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_turret = []; +private _turret = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); diff --git a/addons/common/functions/fnc_getTurretsOther.sqf b/addons/common/functions/fnc_getTurretsOther.sqf index 93ab3f2321..408a5529d5 100644 --- a/addons/common/functions/fnc_getTurretsOther.sqf +++ b/addons/common/functions/fnc_getTurretsOther.sqf @@ -12,23 +12,22 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_turrets", "_turret", "_config"]; +private _turrets = allTurrets [_vehicle, true]; -_turrets = allTurrets [_vehicle, true]; - -_turret = []; +private _turret = []; { - _config = configFile >> "CfgVehicles" >> typeOf _vehicle; + private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; _config = [_config, _x] call FUNC(getTurretConfigPath); - if ( getNumber (_config >> "isCopilot") != 1 - && {getNumber (_config >> "primaryGunner") != 1} - && {getNumber (_config >> "primaryObserver") != 1} - && {getNumber (_config >> "isPersonTurret") != 1} + if ( + getNumber (_config >> "isCopilot") != 1 + && {getNumber (_config >> "primaryGunner") != 1} + && {getNumber (_config >> "primaryObserver") != 1} + && {getNumber (_config >> "isPersonTurret") != 1} ) then { _turret pushBack _x; }; diff --git a/addons/common/functions/fnc_getUavControlPosition.sqf b/addons/common/functions/fnc_getUavControlPosition.sqf index a9b5340eb2..c98004c7e7 100644 --- a/addons/common/functions/fnc_getUavControlPosition.sqf +++ b/addons/common/functions/fnc_getUavControlPosition.sqf @@ -18,16 +18,14 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private ["_uav", "_positionArray", "_playerIndex"]; - -_uav = getConnectedUAV _unit; +private _uav = getConnectedUAV _unit; if (isNull _uav) exitWith {""}; -_positionArray = UAVControl _uav; -_playerIndex = _positionArray find _unit; +private _positionArray = UAVControl _uav; +private _playerIndex = _positionArray find _unit; if (_playerIndex == -1) exitWith {""}; diff --git a/addons/common/functions/fnc_getVehicleCargo.sqf b/addons/common/functions/fnc_getVehicleCargo.sqf index 5be213aa68..68599c919b 100644 --- a/addons/common/functions/fnc_getVehicleCargo.sqf +++ b/addons/common/functions/fnc_getVehicleCargo.sqf @@ -12,14 +12,12 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_config", "_cargo", "_codrivers"]; +private _config = configFile >> "CfgVehicles" >> _vehicle; -_config = configFile >> "CfgVehicles" >> _vehicle; - -_cargo = []; -_codrivers = getArray (_config >> "cargoIsCoDriver"); +private _cargo = []; +private _codrivers = getArray (_config >> "cargoIsCoDriver"); for "_index" from 0 to (getNumber (_config >> "transportSoldier") - 1) do { if !(_index in _codrivers && {_vehicle isKindOf "Car"} && {!(_vehicle isKindOf "Wheeled_APC_F")}) then { diff --git a/addons/common/functions/fnc_getVehicleCodriver.sqf b/addons/common/functions/fnc_getVehicleCodriver.sqf index e23cfcd0d4..a1cc5814e1 100644 --- a/addons/common/functions/fnc_getVehicleCodriver.sqf +++ b/addons/common/functions/fnc_getVehicleCodriver.sqf @@ -12,14 +12,12 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; -private ["_config", "_cargo", "_codrivers"]; +private _config = configFile >> "CfgVehicles" >> _vehicle; -_config = configFile >> "CfgVehicles" >> _vehicle; - -_cargo = []; -_codrivers = getArray (_config >> "cargoIsCoDriver"); +private _cargo = []; +private _codrivers = getArray (_config >> "cargoIsCoDriver"); for "_index" from 0 to (getNumber (_config >> "transportSoldier") - 1) do { if (_index in _codrivers && {_vehicle isKindOf "Car"} && {!(_vehicle isKindOf "Wheeled_APC_F")}) then { diff --git a/addons/common/functions/fnc_getVehicleCrew.sqf b/addons/common/functions/fnc_getVehicleCrew.sqf index 58d0067b85..adb0e9701a 100644 --- a/addons/common/functions/fnc_getVehicleCrew.sqf +++ b/addons/common/functions/fnc_getVehicleCrew.sqf @@ -15,8 +15,7 @@ params ["_vehicle", ["_types", ["driver", "commander", "gunner", "turret", "cargo", "ffv"]]]; -private "_crew"; -_crew = []; +private _crew = []; // iterate through all crew members { diff --git a/addons/common/functions/fnc_getVehicleUAVCrew.sqf b/addons/common/functions/fnc_getVehicleUAVCrew.sqf index 8d9156810a..fcb48ee216 100644 --- a/addons/common/functions/fnc_getVehicleUAVCrew.sqf +++ b/addons/common/functions/fnc_getVehicleUAVCrew.sqf @@ -12,6 +12,6 @@ */ #include "script_component.hpp" -params ["_vehicle"]; +params [["_vehicle", objNull, [objNull]]]; [crew _vehicle, {getText (configFile >> "CfgVehicles" >> typeOf _this >> "simulation") == "UAVPilot"}] call FUNC(filter) // return diff --git a/addons/common/functions/fnc_getWeaponAzimuthAndInclination.sqf b/addons/common/functions/fnc_getWeaponAzimuthAndInclination.sqf index 09968d8e39..f7c7909e01 100644 --- a/addons/common/functions/fnc_getWeaponAzimuthAndInclination.sqf +++ b/addons/common/functions/fnc_getWeaponAzimuthAndInclination.sqf @@ -15,12 +15,10 @@ params ["_weapon"]; -private ["_direction", "_azimuth", "_inclination"]; +private _direction = ACE_player weaponDirection _weapon; -_direction = ACE_player weaponDirection _weapon; - -_azimuth = (_direction select 0) atan2 (_direction select 1); -_inclination = asin (_direction select 2); +private _azimuth = (_direction select 0) atan2 (_direction select 1); +private _inclination = asin (_direction select 2); if (_azimuth < 0) then {_azimuth = _azimuth + 360}; diff --git a/addons/common/functions/fnc_getWeaponModes.sqf b/addons/common/functions/fnc_getWeaponModes.sqf index a2bb9c3205..48755d3a9b 100644 --- a/addons/common/functions/fnc_getWeaponModes.sqf +++ b/addons/common/functions/fnc_getWeaponModes.sqf @@ -12,13 +12,11 @@ */ #include "script_component.hpp" -params ["_weapon"]; +params [["_weapon", "", [""]]]; -private ["_config", "_modes"]; +private _config = configFile >> "CfgWeapons" >> _weapon; -_config = configFile >> "CfgWeapons" >> _weapon; - -_modes = []; +private _modes = []; { if (getNumber (_config >> _x >> "showToPlayer") == 1) then { diff --git a/addons/common/functions/fnc_getWeaponMuzzles.sqf b/addons/common/functions/fnc_getWeaponMuzzles.sqf index cdfd58f238..d75a01f2e3 100644 --- a/addons/common/functions/fnc_getWeaponMuzzles.sqf +++ b/addons/common/functions/fnc_getWeaponMuzzles.sqf @@ -12,13 +12,14 @@ */ #include "script_component.hpp" -params ["_weapon"]; +params [["_weapon", "", [""]]]; -private "_muzzles"; -_muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles"); +private _muzzles = getArray (configFile >> "CfgWeapons" >> _weapon >> "muzzles"); -if ("this" in _muzzles) then { - _muzzles set [_muzzles find "this", _weapon]; -}; +{ + if (_x == "this") then { + _muzzles set [_forEachIndex, _weapon]; + }; +} forEach _muzzles; _muzzles diff --git a/addons/common/functions/fnc_getWeaponState.sqf b/addons/common/functions/fnc_getWeaponState.sqf index 8ee1610f4e..cbf1ad4ee1 100644 --- a/addons/common/functions/fnc_getWeaponState.sqf +++ b/addons/common/functions/fnc_getWeaponState.sqf @@ -18,17 +18,13 @@ params ["_unit", "_weapon"]; -private ["_muzzles", "_weaponInfo"]; +private _muzzles = [_weapon] call FUNC(getWeaponMuzzles); -_muzzles = [_weapon] call FUNC(getWeaponMuzzles); - -_weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0); +private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0); // get loaded magazines and ammo -private ["_magazines", "_ammo"]; - -_magazines = []; -_ammo = []; +private _magazines = []; +private _ammo = []; { _magazines pushBack ""; @@ -38,8 +34,7 @@ _ammo = []; { if (_x select 2) then { - private "_index"; - _index = _muzzles find (_x select 4); + private _index = _muzzles find (_x select 4); if (_index != -1) then { _magazines set [_index, _x select 0]; diff --git a/addons/common/functions/fnc_getWeaponType.sqf b/addons/common/functions/fnc_getWeaponType.sqf index f8ee7f9fe4..5666ea5bc0 100644 --- a/addons/common/functions/fnc_getWeaponType.sqf +++ b/addons/common/functions/fnc_getWeaponType.sqf @@ -18,11 +18,9 @@ params ["_weapon"]; -private ["_type", "_index"]; +private _type = [getNumber (configFile >> "CfgWeapons" >> _weapon >> "type")] call FUNC(binarizeNumber); -_type = [getNumber (configFile >> "CfgWeapons" >> _weapon >> "type")] call FUNC(binarizeNumber); - -_index = 0; +private _index = 0; while {!(_type select _index) && {_index < 16}} do { _index = _index + 1; diff --git a/addons/common/functions/fnc_hadamardProduct.sqf b/addons/common/functions/fnc_hadamardProduct.sqf index b4ed7f9be1..cdaf707395 100644 --- a/addons/common/functions/fnc_hadamardProduct.sqf +++ b/addons/common/functions/fnc_hadamardProduct.sqf @@ -16,8 +16,7 @@ params ["_vector1", "_vector2"]; -private "_newVector"; -_newVector = []; +private _newVector = []; for "_i" from 0 to ((count _vector1 min count _vector2) - 1) do { _newVector pushBack ((_vector1 select _i) * (_vector2 select _i)); diff --git a/addons/common/functions/fnc_hasHatch.sqf b/addons/common/functions/fnc_hasHatch.sqf index a67ad0b0d3..e39c52f897 100644 --- a/addons/common/functions/fnc_hasHatch.sqf +++ b/addons/common/functions/fnc_hasHatch.sqf @@ -12,7 +12,7 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; private _vehicle = vehicle _unit; diff --git a/addons/common/functions/fnc_hasItem.sqf b/addons/common/functions/fnc_hasItem.sqf index 526f5a46f2..8ca785d78e 100644 --- a/addons/common/functions/fnc_hasItem.sqf +++ b/addons/common/functions/fnc_hasItem.sqf @@ -10,9 +10,11 @@ * has Item * * Public: yes + * + * Note: Case sensitive */ #include "script_component.hpp" -params ["_unit", "_item"]; +params [["_unit", objNull, [objNull]], ["_item", "", [""]]]; _item in items _unit // return diff --git a/addons/common/functions/fnc_hasMagazine.sqf b/addons/common/functions/fnc_hasMagazine.sqf index 27150ea5d5..eaa9bc0556 100644 --- a/addons/common/functions/fnc_hasMagazine.sqf +++ b/addons/common/functions/fnc_hasMagazine.sqf @@ -10,9 +10,11 @@ * has Magazine * * Public: yes + * + * Note: Case sensitive */ #include "script_component.hpp" -params ["_unit", "_magazine"]; +params [["_unit", objNull, [objNull]], ["_magazine", "", [""]]]; _magazine in magazines _unit // return diff --git a/addons/common/functions/fnc_hashGet.sqf b/addons/common/functions/fnc_hashGet.sqf index df5d294beb..d0a5cdf22e 100644 --- a/addons/common/functions/fnc_hashGet.sqf +++ b/addons/common/functions/fnc_hashGet.sqf @@ -13,15 +13,13 @@ */ #include "script_component.hpp" -private ["_val", "_index"]; - params ["_hash", "_key"]; ERRORDATA(2); -_val = nil; +private _val = nil; try { if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; + private _index = (_hash select 0) find _key; if(_index != -1) then { _val = (_hash select 1) select _index; if(IS_STRING(_val) && {_val == "ACREHASHREMOVEDONOTUSETHISVAL"}) then { diff --git a/addons/common/functions/fnc_hashHasKey.sqf b/addons/common/functions/fnc_hashHasKey.sqf index 5c6293fc85..b2978f9cc4 100644 --- a/addons/common/functions/fnc_hashHasKey.sqf +++ b/addons/common/functions/fnc_hashHasKey.sqf @@ -12,16 +12,15 @@ */ #include "script_component.hpp" -private ["_val", "_index"]; // diag_log text format["%1 HASH HAS KEY: %2", ACE_diagTime, _this]; params ["_hash", "_key"]; ERRORDATA(2); -_val = false; +private _val = false; try { if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; + private _index = (_hash select 0) find _key; if(_index != -1) then { _val = true; }; diff --git a/addons/common/functions/fnc_hashListCreateHash.sqf b/addons/common/functions/fnc_hashListCreateHash.sqf index d6a94445eb..d5cc323c8d 100644 --- a/addons/common/functions/fnc_hashListCreateHash.sqf +++ b/addons/common/functions/fnc_hashListCreateHash.sqf @@ -12,12 +12,10 @@ */ #include "script_component.hpp" -private ["_hashKeys"]; - params ["_hashList"]; ERRORDATA(1); -_hashKeys = []; +private _hashKeys = []; try { if(VALIDHASH(_hashList)) then { _hashKeys = (_hashList select 0); diff --git a/addons/common/functions/fnc_hashListSelect.sqf b/addons/common/functions/fnc_hashListSelect.sqf index df072d55bd..65dc8591dd 100644 --- a/addons/common/functions/fnc_hashListSelect.sqf +++ b/addons/common/functions/fnc_hashListSelect.sqf @@ -12,18 +12,16 @@ */ #include "script_component.hpp" -private ["_hash", "_keys", "_hashes", "_values"]; - params ["_hashList", "_index"]; ERRORDATA(2); -_hash = nil; +private _hash = nil; try { if(VALIDHASH(_hashList)) then { - _keys = _hashList select 0; - _hashes = _hashList select 1; + private _keys = _hashList select 0; + private _hashes = _hashList select 1; if(_index < (count _hashes)) then { - _values = _hashes select _index; + private _values = _hashes select _index; _hash = [_keys, _values, 1]; } else { diff --git a/addons/common/functions/fnc_hashListSet.sqf b/addons/common/functions/fnc_hashListSet.sqf index 5fea048327..6ba0bcdf27 100644 --- a/addons/common/functions/fnc_hashListSet.sqf +++ b/addons/common/functions/fnc_hashListSet.sqf @@ -12,15 +12,13 @@ */ #include "script_component.hpp" -private ["_vals"]; - params ["_hashList", "_index", "_value"]; ERRORDATA(3); try { if(VALIDHASH(_hashList)) then { if(VALIDHASH(_value)) then { - _vals = _value select 1; + private _vals = _value select 1; (_hashList select 1) set[_index, _vals]; } else { diff --git a/addons/common/functions/fnc_hashRem.sqf b/addons/common/functions/fnc_hashRem.sqf index 4346a509cf..bd0c8f2a2d 100644 --- a/addons/common/functions/fnc_hashRem.sqf +++ b/addons/common/functions/fnc_hashRem.sqf @@ -12,15 +12,13 @@ */ #include "script_component.hpp" -private ["_val", "_index"]; - params ["_hash", "_key"]; ERRORDATA(2); -_val = nil; +private _val = nil; try { if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; + private _index = (_hash select 0) find _key; if(_index != -1) then { (_hash select 1) set[_index, "ACREHASHREMOVEDONOTUSETHISVAL"]; // is this hash is not part of a hash list? diff --git a/addons/common/functions/fnc_hashSet.sqf b/addons/common/functions/fnc_hashSet.sqf index af7a361dd6..10e2881c10 100644 --- a/addons/common/functions/fnc_hashSet.sqf +++ b/addons/common/functions/fnc_hashSet.sqf @@ -12,7 +12,6 @@ */ #include "script_component.hpp" -private ["_index"]; // diag_log text format["%1 HASH SET: %2", ACE_diagTime, _this]; params ["_hash", "_key", "_val"]; @@ -20,7 +19,7 @@ params ["_hash", "_key", "_val"]; ERRORDATA(3); try { if(VALIDHASH(_hash)) then { - _index = (_hash select 0) find _key; + private _index = (_hash select 0) find _key; if(_index == -1) then { _index = (_hash select 0) find "ACREHASHREMOVEDONOTUSETHISVAL"; if(_index == -1) then { diff --git a/addons/common/functions/fnc_headBugFix.sqf b/addons/common/functions/fnc_headBugFix.sqf index 78b1a602df..dffb28ff4b 100644 --- a/addons/common/functions/fnc_headBugFix.sqf +++ b/addons/common/functions/fnc_headBugFix.sqf @@ -14,24 +14,22 @@ */ #include "script_component.hpp" -private ["_unit", "_anim", "_pos", "_dir", "_dummy"]; - -_unit = ACE_player; -_anim = animationState _unit; +private _unit = ACE_player; +private _anim = animationState _unit; ["HeadbugFixUsed", [profileName, _anim]] call FUNC(serverEvent); ["HeadbugFixUsed", [profileName, _anim]] call FUNC(localEvent); if (_unit != vehicle _unit || {!([_unit, objNull, ["isNotSitting"]] call FUNC(canInteractWith))}) exitWith {false}; -_pos = getPosATL _unit; -_dir = getDir _unit; +private _pos = getPosATL _unit; +private _dir = getDir _unit; titleCut ["", "BLACK"]; [_unit, "headBugFix"] call FUNC(hideUnit); // create invisible headbug fix vehicle -_dummy = createVehicle ["ACE_Headbug_Fix", _pos, [], 0, "NONE"]; +private _dummy = createVehicle ["ACE_Headbug_Fix", _pos, [], 0, "NONE"]; _dummy setDir _dir; _unit moveInAny _dummy; sleep 0.1; // @todo diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index 7fdd901848..4bbc357885 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -20,8 +20,7 @@ params ["_unit", "_reason"]; if (isNull _unit) exitWith {}; -private "_setHiddenReasons"; -_setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []]; +private _setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []]; if !(_reason in _setHiddenReasons) then { _setHiddenReasons pushBack _reason; diff --git a/addons/common/functions/fnc_inheritsFrom.sqf b/addons/common/functions/fnc_inheritsFrom.sqf index 7f881ff746..4ec39d8cc3 100644 --- a/addons/common/functions/fnc_inheritsFrom.sqf +++ b/addons/common/functions/fnc_inheritsFrom.sqf @@ -24,8 +24,7 @@ params ["_configEntry", "_configMatch"]; if (configName _configEntry == _configMatch) exitWith {true}; if (configName _configEntry == ",") exitWith {false}; -private "_match"; -_match = false; +private _match = false; while {configName _configEntry != ""} do { if (configName _configEntry == _configMatch) exitWith { diff --git a/addons/common/functions/fnc_insertionSort.sqf b/addons/common/functions/fnc_insertionSort.sqf index 9f8c95e095..d2f89a039e 100644 --- a/addons/common/functions/fnc_insertionSort.sqf +++ b/addons/common/functions/fnc_insertionSort.sqf @@ -17,10 +17,8 @@ params ["_list", ["_ascending", true]]; _list = + _list; // copy array to not alter the original one -private "_tmp"; - for "_i" from 1 to (count _list - 1) do { - _tmp = _list select _i; + private _tmp = _list select _i; _j = _i; while {_j >= 1 && {_tmp < _list select (_j - 1)}} do { diff --git a/addons/common/functions/fnc_interpolateFromArray.sqf b/addons/common/functions/fnc_interpolateFromArray.sqf index 5ce59bde62..07207071e7 100644 --- a/addons/common/functions/fnc_interpolateFromArray.sqf +++ b/addons/common/functions/fnc_interpolateFromArray.sqf @@ -15,9 +15,7 @@ params ["_array", "_value"]; -private ["_min", "_max"]; - -_min = _array select floor _value; -_max = _array select ceil _value; +private _min = _array select floor _value; +private _max = _array select ceil _value; _min + (_max - _min) * (_value % 1) // return diff --git a/addons/common/functions/fnc_isInBuilding.sqf b/addons/common/functions/fnc_isInBuilding.sqf index 577b865aee..e5234b9200 100644 --- a/addons/common/functions/fnc_isInBuilding.sqf +++ b/addons/common/functions/fnc_isInBuilding.sqf @@ -14,13 +14,11 @@ #define CHECK_DISTANCE 10 -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private ["_position", "_intersections"]; +private _position = eyePos _unit; -_position = eyePos _unit; - -_intersections = 0; +private _intersections = 0; if (lineIntersects [_position, _position vectorAdd [0, 0, +CHECK_DISTANCE]]) then { _intersections = _intersections + 1; diff --git a/addons/common/functions/fnc_isModLoaded.sqf b/addons/common/functions/fnc_isModLoaded.sqf index cb62a90440..f1e4820cd9 100644 --- a/addons/common/functions/fnc_isModLoaded.sqf +++ b/addons/common/functions/fnc_isModLoaded.sqf @@ -12,6 +12,6 @@ */ #include "script_component.hpp" -params ["_modName"]; +params ["_modName", "", [""]]; isClass (configFile >> "CfgPatches" >> _modName) // return diff --git a/addons/common/functions/fnc_isUnderwater.sqf b/addons/common/functions/fnc_isUnderwater.sqf index d2f399b770..637ed49f3d 100644 --- a/addons/common/functions/fnc_isUnderwater.sqf +++ b/addons/common/functions/fnc_isUnderwater.sqf @@ -12,14 +12,12 @@ */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private "_return"; -_return = false; +private _return = false; if (surfaceIsWater getPosASL _unit) then { - private "_pos"; - _pos = _unit modelToWorldVisual (_unit selectionPosition "head"); + private _pos = _unit modelToWorldVisual (_unit selectionPosition "head"); if (_pos select 2 < 0) then { _return = true; diff --git a/addons/common/functions/fnc_lightIntensityFromObject.sqf b/addons/common/functions/fnc_lightIntensityFromObject.sqf index df88671405..8e018867be 100644 --- a/addons/common/functions/fnc_lightIntensityFromObject.sqf +++ b/addons/common/functions/fnc_lightIntensityFromObject.sqf @@ -15,79 +15,60 @@ params ["_unit", "_lightSource"]; -private ["_unitPos", "_lightLevel"]; - -_unitPos = _unit modelToWorld (_unit selectionPosition "spine3"); -_lightLevel = 0; +private _unitPos = _unit modelToWorld (_unit selectionPosition "spine3"); +private _lightLevel = 0; if (_lightSource isKindOf "CAManBase") then { // handle persons with flashlights - private "_weapon"; - _weapon = currentWeapon _lightSource; + private _weapon = currentWeapon _lightSource; if !(_lightSource isFlashlightOn _weapon) exitWith {}; - private ["_flashlight", "_properties", "_intensity", "_innerAngle", "_outerAngle", "_position", "_direction", "_directionToUnit", "_distance", "_angle"]; - - _flashlight = switch (_weapon) do { - case (primaryWeapon _lightSource): { - primaryWeaponItems _lightSource select 1 - }; - case (secondaryWeapon _lightSource): { - secondaryWeaponItems _lightSource select 1 - }; - case (handgunWeapon _lightSource): { - handgunItems _lightSource select 1 - }; - default {""}; - }; + private _flashlight = (_lightSource weaponAccessories _weapon) select 1; if (getNumber (configFile >> "CfgWeapons" >> _flashlight >> "ACE_laserpointer") == 1) exitWith {_lightLevel = 0}; - _properties = [[_flashlight], FUNC(getLightPropertiesWeapon), uiNamespace, format [QEGVAR(cache,%1_%2), QUOTE(DFUNC(getLightPropertiesWeapon)), _flashlight], 1E11] call FUNC(cachedCall); + private _properties = [[_flashlight], FUNC(getLightPropertiesWeapon), uiNamespace, format [QEGVAR(cache,%1_%2), QUOTE(DFUNC(getLightPropertiesWeapon)), _flashlight], 1E11] call FUNC(cachedCall); //_properties = [_flashlight] call FUNC(getLightPropertiesWeapon); - _innerAngle = (_properties select 3) / 2; - _outerAngle = (_properties select 4) / 2; + private _innerAngle = (_properties select 3) / 2; + private _outerAngle = (_properties select 4) / 2; - _position = _lightSource modelToWorld (_lightSource selectionPosition "rightHand"); - _direction = _lightSource weaponDirection _weapon; + private _position = _lightSource modelToWorld (_lightSource selectionPosition "rightHand"); + private _direction = _lightSource weaponDirection _weapon; - _directionToUnit = _position vectorFromTo _unitPos; + private _directionToUnit = _position vectorFromTo _unitPos; - _distance = _unitPos distance _position; - _angle = acos (_direction vectorDotProduct _directionToUnit); + private _distance = _unitPos distance _position; + private _angle = acos (_direction vectorDotProduct _directionToUnit); _lightLevel = (linearConversion [0, 30, _distance, 1, 0, true]) * (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true]); } else { // handle any object, strcutures, cars, tanks, etc. @todo campfires, burning vehicles - private "_lights"; - _lights = [_lightSource] call FUNC(getTurnedOnLights); + private _lights = [_lightSource] call FUNC(getTurnedOnLights); { - private ["_properties", "_intensity", "_innerAngle", "_outerAngle", "_position", "_direction", "_directionToUnit", "_distance", "_angle"]; - - _properties = [[_lightSource, _x], FUNC(getLightProperties), uiNamespace, format [QEGVAR(cache,%1_%2_%3), QUOTE(DFUNC(getLightProperties)), typeOf _lightSource, _x], 1E11] call FUNC(cachedCall); + private _properties = [[_lightSource, _x], FUNC(getLightProperties), uiNamespace, format [QEGVAR(cache,%1_%2_%3), QUOTE(DFUNC(getLightProperties)), typeOf _lightSource, _x], 1E11] call FUNC(cachedCall); //_properties = [_lightSource, _x] call FUNC(getLightProperties); // @todo intensity affects range? - //_intensity = _properties select 0; + //private _intensity = _properties select 0; - _innerAngle = (_properties select 3) / 2; - _outerAngle = (_properties select 4) / 2; + private _innerAngle = (_properties select 3) / 2; + private _outerAngle = (_properties select 4) / 2; // get world position and direction - _position = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 1)); - _direction = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 2)); + private _position = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 1)); + private _direction = _lightSource modelToWorld (_lightSource selectionPosition (_properties select 2)); _direction = _position vectorFromTo _direction; - _directionToUnit = _position vectorFromTo _unitPos; + private _directionToUnit = _position vectorFromTo _unitPos; - _distance = _unitPos distance _position; - _angle = acos (_direction vectorDotProduct _directionToUnit); + private _distance = _unitPos distance _position; + private _angle = acos (_direction vectorDotProduct _directionToUnit); _lightLevel = _lightLevel max ((linearConversion [0, 30, _distance, 1, 0, true]) * (linearConversion [_innerAngle, _outerAngle, _angle, 1, 0, true])); @@ -97,8 +78,7 @@ if (_lightSource isKindOf "CAManBase") then { // handle campfires if (inflamed _lightSource) then { - private "_distance"; - _distance = _unitPos distance position _lightSource; + private _distance = _unitPos distance position _lightSource; _lightLevel = _lightLevel max linearConversion [0, 30, _distance, 0.5, 0, true]; }; diff --git a/addons/common/functions/fnc_loadPerson.sqf b/addons/common/functions/fnc_loadPerson.sqf index 659d63224a..3071ffbd47 100644 --- a/addons/common/functions/fnc_loadPerson.sqf +++ b/addons/common/functions/fnc_loadPerson.sqf @@ -17,28 +17,26 @@ params ["_caller", "_unit"]; -private ["_vehicle", "_loadcar", "_loadair", "_loadtank", "_loadboat"]; - -_vehicle = objNull; +private _vehicle = objNull; if (!([_caller, _unit, ["isNotDragging", "isNotCarrying"]] call FUNC(canInteractWith)) || {_caller == _unit}) exitWith {_vehicle}; -_loadcar = nearestObject [_unit, "Car"]; +private _loadcar = nearestObject [_unit, "Car"]; if (_unit distance _loadcar <= 10) then { _vehicle = _loadcar; } else { - _loadair = nearestObject [_unit, "Air"]; + private _loadair = nearestObject [_unit, "Air"]; if (_unit distance _loadair <= 10) then { _vehicle = _loadair; } else { - _loadtank = nearestObject [_unit, "Tank"]; + private _loadtank = nearestObject [_unit, "Tank"]; if (_unit distance _loadtank <= 10) then { _vehicle = _loadtank; } else { - _loadboat = nearestObject [_unit, "Ship_F"]; + private _loadboat = nearestObject [_unit, "Ship_F"]; if (_unit distance _loadboat <= 10) then { _vehicle = _loadboat; diff --git a/addons/common/functions/fnc_loadPersonLocal.sqf b/addons/common/functions/fnc_loadPersonLocal.sqf index 5b52b38b05..db0248a901 100644 --- a/addons/common/functions/fnc_loadPersonLocal.sqf +++ b/addons/common/functions/fnc_loadPersonLocal.sqf @@ -20,9 +20,7 @@ if (!alive _unit) then { // _unit = [_unit, _caller] call FUNC(makeCopyOfBody); //func does not exist }; -private "_slotsOpen"; - -_slotsOpen = false; +private _slotsOpen = false; if (_vehicle emptyPositions "cargo" > 0) then { _unit moveInCargo _vehicle; @@ -35,8 +33,7 @@ if (_vehicle emptyPositions "cargo" > 0) then { }; if (_slotsOpen) then { - private "_loaded"; - _loaded = _vehicle getVariable [QGVAR(loaded_persons),[]]; + private _loaded = _vehicle getVariable [QGVAR(loaded_persons),[]]; _loaded pushBack _unit; _vehicle setVariable [QGVAR(loaded_persons), _loaded, true]; diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf index a596583a5c..46b0134740 100644 --- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf +++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf @@ -21,8 +21,7 @@ if (_isClientSetable) then { // If setting is not forced if !(_isForced) then { - private "_profileValue"; - _profileValue = profileNamespace getVariable _name; + private _profileValue = profileNamespace getVariable _name; // If the setting is stored on the profile if !(isNil "_profileValue") then { diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 225c2d9675..f846fa9354 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -12,14 +12,12 @@ */ #include "script_component.hpp" -private "_fnc_parseConfigForDisplayNames"; -_fnc_parseConfigForDisplayNames = { +private _fnc_parseConfigForDisplayNames = { params ["_optionEntry"]; if !(isClass _optionEntry) exitWith {false}; - private "_values"; - _values = getArray (_optionEntry >> "values"); + private _values = getArray (_optionEntry >> "values"); _x set [3, getText (_optionEntry >> "displayName")]; _x set [4, getText (_optionEntry >> "description")]; @@ -27,8 +25,7 @@ _fnc_parseConfigForDisplayNames = { _x set [8, getText (_optionEntry >> "category")]; { - private "_text"; - _text = _x; + private _text = _x; if (_text isEqualType "" && {count _text > 1} && {_text select [0, 1] == "$"}) then { _text = localize (_text select [1]); //chop off the leading $ diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index cdf8b48041..def9a985f1 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -15,15 +15,12 @@ GVAR(settings) = []; -private "_fnc_parseConfigForSettings"; -_fnc_parseConfigForSettings = { - private ["_config", "_countOptions", "_optionEntry"]; - - _config = _this select 0; - _countOptions = count _config; +private _fnc_parseConfigForSettings = { + private _config = _this select 0; + private _countOptions = count _config; for "_index" from 0 to (_countOptions - 1) do { - _optionEntry = _config select _index; + private _optionEntry = _config select _index; [_optionEntry] call FUNC(setSettingFromConfig); }; diff --git a/addons/common/functions/fnc_localEvent.sqf b/addons/common/functions/fnc_localEvent.sqf index f5a121c088..43f6209d0d 100644 --- a/addons/common/functions/fnc_localEvent.sqf +++ b/addons/common/functions/fnc_localEvent.sqf @@ -17,12 +17,10 @@ params ["_eventName", "_eventArgs"]; GVAR(events) params ["_eventNames", "_eventArray"]; -private "_eventIndex"; -_eventIndex = _eventNames find _eventName; +private _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { - private "_events"; - _events = _eventArray select _eventIndex; + private _events = _eventArray select _eventIndex; #ifdef DEBUG_EVENTS ACE_LOGINFO_1("* Local Event: %1",_eventName); diff --git a/addons/common/functions/fnc_map.sqf b/addons/common/functions/fnc_map.sqf index a727de08bf..5d24e13b38 100644 --- a/addons/common/functions/fnc_map.sqf +++ b/addons/common/functions/fnc_map.sqf @@ -16,7 +16,7 @@ */ #include "script_component.hpp" -params ["_array", "_code"]; +params [["_array", [], [[]]], ["_code", {}, [{}]]]; // copy array to not alter the original one _array = + _array; diff --git a/addons/common/functions/fnc_muteUnit.sqf b/addons/common/functions/fnc_muteUnit.sqf index 84d56f92bd..d4648155b6 100644 --- a/addons/common/functions/fnc_muteUnit.sqf +++ b/addons/common/functions/fnc_muteUnit.sqf @@ -17,17 +17,15 @@ params ["_unit", "_reason"]; if (isNull _unit) exitWith {}; -private ["_muteUnitReasons", "_speaker"]; - // add reason to mute to the unit -_muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []]; +private _muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []]; if !(_reason in _muteUnitReasons) then { _muteUnitReasons pushBack _reason; _unit setVariable [QGVAR(muteUnitReasons), _muteUnitReasons, true]; }; -_speaker = speaker _unit; +private _speaker = speaker _unit; if (_speaker == "ACE_NoVoice") exitWith {}; diff --git a/addons/common/functions/fnc_numberToDigits.sqf b/addons/common/functions/fnc_numberToDigits.sqf index c5e1b6d7b6..b90f0eefd7 100644 --- a/addons/common/functions/fnc_numberToDigits.sqf +++ b/addons/common/functions/fnc_numberToDigits.sqf @@ -18,8 +18,7 @@ params ["_number", "_minLength"]; _number = _number min 999999; _number = str _number; -private "_length"; -_length = count _number; +private _length = count _number; if (isNil "_minLength") then {_minLength = _length}; @@ -30,8 +29,7 @@ while {_length < _minLength} do { _length = _length + 1; }; -private "_digits"; -_digits = []; +private _digits = []; for "_x" from 0 to (_length - 1) do { _digits pushBack parseNumber (_number select [_x, 1]); diff --git a/addons/common/functions/fnc_numberToDigitsString.sqf b/addons/common/functions/fnc_numberToDigitsString.sqf index f8f192e0e3..7e2c78f8b4 100644 --- a/addons/common/functions/fnc_numberToDigitsString.sqf +++ b/addons/common/functions/fnc_numberToDigitsString.sqf @@ -18,8 +18,7 @@ params ["_number", "_minLength"]; _number = _number min 999999; _number = str _number; -private "_length"; -_length = count _number; +private _length = count _number; if (isNil "_minLength") then {_minLength = _length}; diff --git a/addons/common/functions/fnc_numberToString.sqf b/addons/common/functions/fnc_numberToString.sqf index 4dd810607c..1cb2f521f8 100644 --- a/addons/common/functions/fnc_numberToString.sqf +++ b/addons/common/functions/fnc_numberToString.sqf @@ -14,8 +14,7 @@ params ["_number"]; -private "_decimals"; -_decimals = str (abs _number mod 1); +private _decimals = str (abs _number mod 1); _decimals = toArray _decimals; _decimals deleteAt 0; diff --git a/addons/common/functions/fnc_onAnswerRequest.sqf b/addons/common/functions/fnc_onAnswerRequest.sqf index 2f7aef43a5..d88969b059 100644 --- a/addons/common/functions/fnc_onAnswerRequest.sqf +++ b/addons/common/functions/fnc_onAnswerRequest.sqf @@ -14,17 +14,12 @@ params ["_unit", "_id", "_accepted"]; -private ["_requestID", "_info", "_callBack", "_caller", "_replyParams", "_requestMessage", "_target"]; - -_info = _unit getVariable _id; +private _info = _unit getVariable _id; if (!isNil "_info") then { - _caller = _info select 0; - _target = _info select 1; - _requestID = _info select 2; - _requestMessage = _info select 3; - _callBack = _info select 4; - _replyParams = [_info, _accepted]; + _info params ["_caller", "_target", "_requestID", "_requestMessage", "_callBack"]; + + private _replyParams = [_info, _accepted]; [_replyParams, QFUNC(requestCallback), _caller, false] call FUNC(execRemoteFnc); _unit setVariable [_id, nil]; }; From 2839cff753f10ae6385e8ebbaa65105cac5d6659 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 12 Dec 2015 17:26:47 +0100 Subject: [PATCH 043/107] common code fixes --- addons/common/functions/fnc_binarizeNumber.sqf | 4 ++-- addons/common/functions/fnc_displayText.sqf | 3 +-- addons/common/functions/fnc_getConfigCommander.sqf | 2 +- addons/common/functions/fnc_getConfigGunner.sqf | 2 +- addons/common/functions/fnc_getDefinedVariable.sqf | 2 +- addons/common/functions/fnc_getDefinedVariableDefault.sqf | 2 +- addons/common/functions/fnc_getTurnedOnLights.sqf | 3 +-- addons/common/functions/fnc_getWeaponState.sqf | 2 +- addons/common/functions/fnc_hashListSelect.sqf | 4 ++-- addons/common/functions/fnc_hashListSet.sqf | 2 +- addons/common/functions/fnc_isModLoaded.sqf | 2 +- addons/common/functions/fnc_lightIntensityFromObject.sqf | 4 ++-- addons/common/functions/fnc_loadSettingsOnServer.sqf | 3 ++- 13 files changed, 17 insertions(+), 18 deletions(-) diff --git a/addons/common/functions/fnc_binarizeNumber.sqf b/addons/common/functions/fnc_binarizeNumber.sqf index 0077403dac..0945afa770 100644 --- a/addons/common/functions/fnc_binarizeNumber.sqf +++ b/addons/common/functions/fnc_binarizeNumber.sqf @@ -18,7 +18,7 @@ params ["_number", ["_minLength", 8]]; _number = round _number; private _array = []; -private _array resize _minLength; +_array resize _minLength; for "_index" from 0 to (_minLength - 1) do { _array set [_index, false]; @@ -27,7 +27,7 @@ for "_index" from 0 to (_minLength - 1) do { private _index = 0; while {_number > 0} do { - _rest = _number mod 2; + private _rest = _number mod 2; _number = floor (_number / 2); _array set [_index, _rest == 1]; diff --git a/addons/common/functions/fnc_displayText.sqf b/addons/common/functions/fnc_displayText.sqf index 830cc67e3d..3c68327535 100644 --- a/addons/common/functions/fnc_displayText.sqf +++ b/addons/common/functions/fnc_displayText.sqf @@ -23,8 +23,7 @@ if (isNil QGVAR(lastHint)) then { if !(typeName _text in ["STRING", "TEXT"]) then {_text = str _text}; -private _lastHintTime = GVAR(lastHint) select 0; -private _lastHintPriority = GVAR(lastHint) select 1; +GVAR(lastHint) params ["_lastHintTime", "_lastHintPriority"]; private _time = ACE_time; diff --git a/addons/common/functions/fnc_getConfigCommander.sqf b/addons/common/functions/fnc_getConfigCommander.sqf index dbc7985931..d4a53905b8 100644 --- a/addons/common/functions/fnc_getConfigCommander.sqf +++ b/addons/common/functions/fnc_getConfigCommander.sqf @@ -15,6 +15,6 @@ params ["_vehicle"]; private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; -private _turret = [_vehicle] call FUNC(getTurretCommander); +private _turret = _vehicle call FUNC(getTurretCommander); [_config, _turret] call FUNC(getTurretConfigPath) // return diff --git a/addons/common/functions/fnc_getConfigGunner.sqf b/addons/common/functions/fnc_getConfigGunner.sqf index 6781902217..abbbd5f014 100644 --- a/addons/common/functions/fnc_getConfigGunner.sqf +++ b/addons/common/functions/fnc_getConfigGunner.sqf @@ -15,6 +15,6 @@ params ["_vehicle"]; private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; -private _turret = [_vehicle] call FUNC(getTurretGunner); +private _turret = _vehicle call FUNC(getTurretGunner); [_config, _turret] call FUNC(getTurretConfigPath) // return diff --git a/addons/common/functions/fnc_getDefinedVariable.sqf b/addons/common/functions/fnc_getDefinedVariable.sqf index fa730e4700..32a75edb5e 100644 --- a/addons/common/functions/fnc_getDefinedVariable.sqf +++ b/addons/common/functions/fnc_getDefinedVariable.sqf @@ -21,7 +21,7 @@ if (isNil "_value") then { if (!isNil "_defaultValue") then { _value = _defaultValue; } else { - private _definedVariable = [_variable] call FUNC(getDefinedVariableInfo); + private _definedVariable = _variable call FUNC(getDefinedVariableInfo); if (count _definedVariable > 1) then { _value = _definedVariable select 1; diff --git a/addons/common/functions/fnc_getDefinedVariableDefault.sqf b/addons/common/functions/fnc_getDefinedVariableDefault.sqf index a5027ed37b..c6f4f7711c 100644 --- a/addons/common/functions/fnc_getDefinedVariableDefault.sqf +++ b/addons/common/functions/fnc_getDefinedVariableDefault.sqf @@ -14,7 +14,7 @@ params ["_varName"]; -private _variableDefinition = [_varName] call FUNC(getDefinedVariableInfo); +private _variableDefinition = _varName call FUNC(getDefinedVariableInfo); if !(_variableDefinition isEqualTo []) exitWith { _variableDefinition select 1; diff --git a/addons/common/functions/fnc_getTurnedOnLights.sqf b/addons/common/functions/fnc_getTurnedOnLights.sqf index a0fa4d914d..a996e146d2 100644 --- a/addons/common/functions/fnc_getTurnedOnLights.sqf +++ b/addons/common/functions/fnc_getTurnedOnLights.sqf @@ -19,8 +19,7 @@ if (!isLightOn _vehicle) exitWith {[]}; private _reflectorsWithSelections = [[_vehicle], FUNC(getReflectorsWithSelections), uiNamespace, format [QEGVAR(cache,%1_%2), QUOTE(DFUNC(getReflectorsWithSelections)), typeOf _vehicle], 1E11] call FUNC(cachedCall); //_reflectorsWithSelections = [_vehicle] call FUNC(getReflectorsWithSelections); -private _lights = _reflectorsWithSelections select 0; -private _hitpoints = _reflectorsWithSelections select 1; +_reflectorsWithSelections params ["_lights", "_hitpoints"]; private _turnedOnLights = []; diff --git a/addons/common/functions/fnc_getWeaponState.sqf b/addons/common/functions/fnc_getWeaponState.sqf index cbf1ad4ee1..e7b7bb80ec 100644 --- a/addons/common/functions/fnc_getWeaponState.sqf +++ b/addons/common/functions/fnc_getWeaponState.sqf @@ -18,7 +18,7 @@ params ["_unit", "_weapon"]; -private _muzzles = [_weapon] call FUNC(getWeaponMuzzles); +private _muzzles = _weapon call FUNC(getWeaponMuzzles); private _weaponInfo = [["","","",""], primaryWeaponItems _unit, secondaryWeaponItems _unit, handgunItems _unit] select ((["", primaryWeapon _unit, secondaryWeapon _unit, handgunWeapon _unit] find _weapon) max 0); diff --git a/addons/common/functions/fnc_hashListSelect.sqf b/addons/common/functions/fnc_hashListSelect.sqf index 65dc8591dd..f5e3d85b31 100644 --- a/addons/common/functions/fnc_hashListSelect.sqf +++ b/addons/common/functions/fnc_hashListSelect.sqf @@ -18,8 +18,8 @@ ERRORDATA(2); private _hash = nil; try { if(VALIDHASH(_hashList)) then { - private _keys = _hashList select 0; - private _hashes = _hashList select 1; + _hashList params ["_keys", "_hashes"]; + if(_index < (count _hashes)) then { private _values = _hashes select _index; diff --git a/addons/common/functions/fnc_hashListSet.sqf b/addons/common/functions/fnc_hashListSet.sqf index 6ba0bcdf27..ee0a8dc7eb 100644 --- a/addons/common/functions/fnc_hashListSet.sqf +++ b/addons/common/functions/fnc_hashListSet.sqf @@ -18,7 +18,7 @@ ERRORDATA(3); try { if(VALIDHASH(_hashList)) then { if(VALIDHASH(_value)) then { - private _vals = _value select 1; + _value params ["", "_vals"]; (_hashList select 1) set[_index, _vals]; } else { diff --git a/addons/common/functions/fnc_isModLoaded.sqf b/addons/common/functions/fnc_isModLoaded.sqf index f1e4820cd9..46e1bc03a8 100644 --- a/addons/common/functions/fnc_isModLoaded.sqf +++ b/addons/common/functions/fnc_isModLoaded.sqf @@ -12,6 +12,6 @@ */ #include "script_component.hpp" -params ["_modName", "", [""]]; +params [["_modName", "", [""]]]; isClass (configFile >> "CfgPatches" >> _modName) // return diff --git a/addons/common/functions/fnc_lightIntensityFromObject.sqf b/addons/common/functions/fnc_lightIntensityFromObject.sqf index 8e018867be..a495897dea 100644 --- a/addons/common/functions/fnc_lightIntensityFromObject.sqf +++ b/addons/common/functions/fnc_lightIntensityFromObject.sqf @@ -48,14 +48,14 @@ if (_lightSource isKindOf "CAManBase") then { } else { // handle any object, strcutures, cars, tanks, etc. @todo campfires, burning vehicles - private _lights = [_lightSource] call FUNC(getTurnedOnLights); + private _lights = _lightSource call FUNC(getTurnedOnLights); { private _properties = [[_lightSource, _x], FUNC(getLightProperties), uiNamespace, format [QEGVAR(cache,%1_%2_%3), QUOTE(DFUNC(getLightProperties)), typeOf _lightSource, _x], 1E11] call FUNC(cachedCall); //_properties = [_lightSource, _x] call FUNC(getLightProperties); // @todo intensity affects range? - //private _intensity = _properties select 0; + //_properties params ["_intensity"]; private _innerAngle = (_properties select 3) / 2; private _outerAngle = (_properties select 4) / 2; diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index def9a985f1..4498c9d058 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -16,7 +16,8 @@ GVAR(settings) = []; private _fnc_parseConfigForSettings = { - private _config = _this select 0; + params ["_config"]; + private _countOptions = count _config; for "_index" from 0 to (_countOptions - 1) do { From 7f63d51ccbc7143d596e2dcfbb7d53100004258a Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 12 Dec 2015 18:21:11 +0100 Subject: [PATCH 044/107] add event for placing units in body bags --- addons/medical/functions/fnc_actionPlaceInBodyBag.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf index f416535701..bf8bc0289f 100644 --- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf +++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf @@ -28,10 +28,12 @@ _spinePos = _target modelToWorldVisual (_target selectionPosition "Spine3"); _dirVect = _headPos vectorFromTo _spinePos; _direction = _dirVect call CBA_fnc_vectDir; -deleteVehicle _target; - _bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, "CAN_COLLIDE"]; +["placedInBodyBag", [_target, _bodyBag]] call EFUNC(common,globalEvent); + +deleteVehicle _target; + // prevent body bag from flipping _bodyBag setPosASL _position; _bodyBag setDir _direction; From bd3c79f739eaa83b7febbf25c236f14c3e80e00b Mon Sep 17 00:00:00 2001 From: commy2 Date: Sat, 12 Dec 2015 20:25:42 +0100 Subject: [PATCH 045/107] add function to retrieve the control of the stamina bar --- addons/common/RscInfoType.hpp | 4 ++++ addons/common/XEH_preInit.sqf | 1 + .../common/functions/fnc_getStaminaBarControl.sqf | 15 +++++++++++++++ addons/main/script_macros.hpp | 2 ++ 4 files changed, 22 insertions(+) create mode 100644 addons/common/functions/fnc_getStaminaBarControl.sqf diff --git a/addons/common/RscInfoType.hpp b/addons/common/RscInfoType.hpp index 258bf51ec9..4d94f8ae2c 100644 --- a/addons/common/RscInfoType.hpp +++ b/addons/common/RscInfoType.hpp @@ -107,6 +107,10 @@ class RscInGameUI { class RscOptics_LaserDesignator_02 { onLoad = QUOTE([ARR_2('infoDisplayChanged', [ARR_2(_this select 0, 'Any')])] call FUNC(localEvent);); }; + + class RscStaminaBar { + onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscStaminaBar"",'IGUI')] call (uinamespace getvariable 'BIS_fnc_initDisplay'); uiNamespace setVariable [ARR_2(QUOTE(QGVAR(dlgStaminaBar)),_this select 0)]); + }; }; class RscDisplayInventory { diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3180eacb86..8073b9345b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -74,6 +74,7 @@ PREP(getNumberFromMissionSQM); PREP(getNumberMagazinesIn); PREP(getPitchBankYaw); PREP(getSettingData); +PREP(getStaminaBarControl); PREP(getStringFromMissionSQM); PREP(getTargetAzimuthAndInclination); PREP(getTargetDistance); diff --git a/addons/common/functions/fnc_getStaminaBarControl.sqf b/addons/common/functions/fnc_getStaminaBarControl.sqf new file mode 100644 index 0000000000..1fa747fef6 --- /dev/null +++ b/addons/common/functions/fnc_getStaminaBarControl.sqf @@ -0,0 +1,15 @@ +/* + * Author: commy2 + * Returns the control of the Stamina Bar from Arma 1.54. + * + * Arguments: + * None + * + * Return Value: + * Stamina Bar control + * + * Public: No + */ +#include "script_component.hpp" + +(uiNamespace getVariable [QGVAR(dlgStaminaBar), displayNull]) displayCtrl IDC_STAMINA_BAR diff --git a/addons/main/script_macros.hpp b/addons/main/script_macros.hpp index a65d126110..62d0b33a6c 100644 --- a/addons/main/script_macros.hpp +++ b/addons/main/script_macros.hpp @@ -83,6 +83,8 @@ #define ACE_isHC (!hasInterface && !isDedicated) +#define IDC_STAMINA_BAR 193 + //By default CBA's TRACE/LOG/WARNING spawn a buffer, which can cause messages to be logged out of order: #ifdef CBA_DEBUG_SYNCHRONOUS #define CBA_fnc_log { params ["_file","_lineNum","_message"]; diag_log [diag_frameNo, diag_tickTime, time, _file + ":"+str(_lineNum + 1), _message]; } From d159c2738c8084c5b2dede2d2eecf71c99dba4f2 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 13 Dec 2015 14:56:04 +0100 Subject: [PATCH 046/107] Fix travis notifications --- .travis.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 313b0a11c7..aaa82d0975 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,12 +19,10 @@ env: - secure: KcJQbknBOdC5lA4nFGKPXVRVIGLDXDRzC8XkHuXJCE9pIR/wbxbkvx8fHKcC6SC9eHgzneC3+o4m4+CjIbVvIwDgslRbJ8Y59i90ncONmdoRx1HUYHwuYWVZm9HJFjCsIbrEqhSyyKS+PB3WZVOLbErtNHsgS8f43PTh5Ujg7Vg= notifications: slack: - secure: aWYF/YX7vxEdXJ5w1jhYJQ2TtTP2NRdnXzJDMYXTv2dlXYhO9qp2qjxDGW3dezuPY7B1mPBgebfSKRx3Robkt1rAfEwPWivOiEztL30rwzOy+5Q1wpORv1JkvTC/q2wqQzxQCU/FPVjD2GkF1wtq1Rnx3ESWD8gbvzYoMNdIw1g= + secure: BYITyeesywy33KFWwLmSjs8spIdCWHGpfZBo/StSp7VZC21i1rSM696DKNo7a2gpZ0MzgAppoMDzCZPrvbUgcQwcEIpM3OPFOa6CCTgSGXx88ZAn2U8kFl1ku5jtkR/In9nRKLcfhabnc8nG4u+VnN+q8ULjKFE1kHIb+pfZpXg= on_success: change on_failure: always on_start: never - rooms: - secure: MvxmqL1NGwiGTVv6uIVTM7jeNLQH95KYtTgSWlXaSw4jdjnf4cmrb/ofHQ3FHhhNVdhRN6W8n0cJfTC3DBZ90bionVh+528qw2mDnDbKljVdIwmoFSexBcH7H1uTLF3gsEz0tbrHtLcnAyTMxdjsdIXDLZ5hwxABNmW5/03jOgs= email: on_success: never on_failure: change From f485ae41b1aadb91b21f885e12d959566f1b5034 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 13 Dec 2015 15:39:33 +0100 Subject: [PATCH 047/107] Add travis notification for private slack --- .travis.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index aaa82d0975..51ac2dc41f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,10 +19,8 @@ env: - secure: KcJQbknBOdC5lA4nFGKPXVRVIGLDXDRzC8XkHuXJCE9pIR/wbxbkvx8fHKcC6SC9eHgzneC3+o4m4+CjIbVvIwDgslRbJ8Y59i90ncONmdoRx1HUYHwuYWVZm9HJFjCsIbrEqhSyyKS+PB3WZVOLbErtNHsgS8f43PTh5Ujg7Vg= notifications: slack: - secure: BYITyeesywy33KFWwLmSjs8spIdCWHGpfZBo/StSp7VZC21i1rSM696DKNo7a2gpZ0MzgAppoMDzCZPrvbUgcQwcEIpM3OPFOa6CCTgSGXx88ZAn2U8kFl1ku5jtkR/In9nRKLcfhabnc8nG4u+VnN+q8ULjKFE1kHIb+pfZpXg= - on_success: change - on_failure: always - on_start: never + - secure: byZMNBl8PMlgjT9NA1WmhgCdGfX4b3g1kA0vEiwfm+IFNlx7BiM4J/5rp6zV/jV470xl/epAejx2tsa5SdTyFbO87NH63ILJSt5QnjUZjRuGKSutFs9WE671DtZkPRSJXHS4N6x802PRkyBz/84/lsc34FWvHvjwOuYAtOcJRFk= + - secure: V22TNaLWV+yUNWqR7c6HVvIxkRDz7Dyz9xqa43FY8iFgvNL4Q/X69h5DYHU/ILNFM00tx8OBjtPRbcjWQ+F6eY8Sje/A2axJAU+qNurAvoyiTahXUprdUUpPdkgXWuSRTZ9kALxOq5e11RC8XUietghoMcl8zPcqdrZCOOKgoEM= email: on_success: never on_failure: change From c689cbfdfed5ffe1b50b92eaf20356b4d6cb3eb5 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Sun, 13 Dec 2015 15:41:37 +0100 Subject: [PATCH 048/107] Add release branch to travis --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 51ac2dc41f..a975d36fde 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ branches: only: - master + - release language: python python: - '3.4' From 9064579a654959ae82cd119ee75bc7b738b202ee Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 13 Dec 2015 13:27:46 -0600 Subject: [PATCH 049/107] Send string to serverLog instead of strucText Fix `Performance warning: SimpleSerialization::Read 'ace_common_remoteFnc' is using type of ,'TEXT' which is not optimized by simple serialization, falling back to generic serialization, use generic type or ask for optimizations for these types` --- addons/common/functions/fnc_serverLog.sqf | 11 ++++++++--- addons/maptools/functions/fnc_handleMouseButton.sqf | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/addons/common/functions/fnc_serverLog.sqf b/addons/common/functions/fnc_serverLog.sqf index 45ab03891c..2525f81c95 100644 --- a/addons/common/functions/fnc_serverLog.sqf +++ b/addons/common/functions/fnc_serverLog.sqf @@ -1,19 +1,24 @@ /* * Author: esteldunedain - * ? + * Log a RPT messaged on just the server * * Arguments: - * ? + * 0: Text to display * * Return Value: * None * + * Example: + * ["x happened"] call ace_common_fnc_serverLog; + * * Public: no */ #include "script_component.hpp" +params [["_msg", "", [""]]]; + if (isServer) then { - diag_log _this; + diag_log text _msg; } else { [_this, QFUNC(serverLog), 1] call FUNC(execRemoteFnc); }; diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf index 19869ee3ce..cb1a4598ad 100644 --- a/addons/maptools/functions/fnc_handleMouseButton.sqf +++ b/addons/maptools/functions/fnc_handleMouseButton.sqf @@ -44,7 +44,7 @@ if (_dir != 1) then { deleteMarkerLocal (GVAR(drawing_tempLineMarker) select 0); ["drawing_addLineMarker", GVAR(drawing_tempLineMarker)] call EFUNC(common,globalEvent); // Log who drew on the briefing screen - (text format ["[ACE] Server: Player %1 drew on the briefing screen", profileName]) call EFUNC(common,serverLog); + [ACE_INFOFORMAT_1("Player %1 drew on the briefing screen", profileName)] call EFUNC(common,serverLog); } else { GVAR(drawing_tempLineMarker) call FUNC(updateLineMarker); GVAR(drawing_lineMarkers) pushBack (+GVAR(drawing_tempLineMarker)); From dbdf434c1e6582b45d30969964fa14504e048bcc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 13 Dec 2015 15:43:12 -0600 Subject: [PATCH 050/107] Reset make.py Cache on new build version Close #1127 If the version (from main) changes, reset cache Same effect as "force" --- tools/make.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/make.py b/tools/make.py index 82c7a881d6..496a6bdf67 100644 --- a/tools/make.py +++ b/tools/make.py @@ -975,6 +975,18 @@ See the make.cfg file for additional build options. print ("No cache found.") cache = {} + # Check the ace build version (from main) with cached version - Forces a full rebuild when version changes + aceVersion = get_project_version() + cacheVersion = "None"; + if 'cacheVersion' in cache: + cacheVersion = cache['cacheVersion'] + + if (aceVersion != cacheVersion): + cache = {} + print("Reseting Cache {0} to New Version {1}".format(cacheVersion, aceVersion)) + cache['cacheVersion'] = aceVersion + + if not os.path.isdir(os.path.join(release_dir, project, "addons")): try: os.makedirs(os.path.join(release_dir, project, "addons")) From ef1d7f4fdbd897d925781658e3c4b8bae2789738 Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Mon, 14 Dec 2015 12:42:37 +0100 Subject: [PATCH 051/107] Change Travis notifications on success disabled We only need to know if a build failed, since that is when action needs to be taken --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index a975d36fde..bc21183674 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,7 @@ notifications: slack: - secure: byZMNBl8PMlgjT9NA1WmhgCdGfX4b3g1kA0vEiwfm+IFNlx7BiM4J/5rp6zV/jV470xl/epAejx2tsa5SdTyFbO87NH63ILJSt5QnjUZjRuGKSutFs9WE671DtZkPRSJXHS4N6x802PRkyBz/84/lsc34FWvHvjwOuYAtOcJRFk= - secure: V22TNaLWV+yUNWqR7c6HVvIxkRDz7Dyz9xqa43FY8iFgvNL4Q/X69h5DYHU/ILNFM00tx8OBjtPRbcjWQ+F6eY8Sje/A2axJAU+qNurAvoyiTahXUprdUUpPdkgXWuSRTZ9kALxOq5e11RC8XUietghoMcl8zPcqdrZCOOKgoEM= + on_success: never email: on_success: never on_failure: change From bfa29246be651f64962b293a59085657daf00ead Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 14 Dec 2015 13:08:19 +0100 Subject: [PATCH 052/107] replace private with private keyword in other half of common --- .../common/functions/fnc__handleNetEvent.sqf | 18 ++++----- .../fnc__handleRequestAllSyncedEvents.sqf | 6 +-- .../fnc__handleRequestSyncedEvent.sqf | 6 +-- .../functions/fnc__handleSyncedEvent.sqf | 9 ++--- .../functions/fnc_addActionEventHandler.sqf | 9 ++--- .../fnc_addActionMenuEventHandler.sqf | 14 +++---- .../fnc_addCanInteractWithCondition.sqf | 6 +-- .../fnc_addCuratorUnloadEventhandler.sqf | 3 +- .../common/functions/fnc_addEventHandler.sqf | 10 ++--- .../fnc_addMapMarkerCreatedEventHandler.sqf | 3 +- .../fnc_addScrollWheelEventHandler.sqf | 3 +- addons/common/functions/fnc_addSetting.sqf | 3 +- .../functions/fnc_addSyncedEventHandler.sqf | 6 +-- .../common/functions/fnc_addToInventory.sqf | 13 +++---- addons/common/functions/fnc_hideUnit.sqf | 2 +- addons/common/functions/fnc_parseList.sqf | 14 +++---- addons/common/functions/fnc_progressBar.sqf | 18 +++------ .../common/functions/fnc_receiveRequest.sqf | 3 +- .../fnc_removeActionEventHandler.sqf | 6 +-- .../fnc_removeActionMenuEventHandler.sqf | 6 +-- .../functions/fnc_removeAllEventHandlers.sqf | 6 +-- .../functions/fnc_removeBinocularMagazine.sqf | 11 ++---- .../fnc_removeCanInteractWithCondition.sqf | 6 +-- .../functions/fnc_removeEventHandler.sqf | 6 +-- ...fnc_removeMapMarkerCreatedEventHandler.sqf | 3 +- .../fnc_removeScrollWheelEventHandler.sqf | 3 +- .../functions/fnc_removeSpecificMagazine.sqf | 17 +++++---- .../fnc_removeSyncedEventHandler.sqf | 6 +-- .../functions/fnc_restoreVariablesJIP.sqf | 3 +- .../common/functions/fnc_sanitizeString.sqf | 3 +- .../functions/fnc_setCaptivityStatus.sqf | 13 +++---- .../functions/fnc_setDefinedVariable.sqf | 3 +- .../functions/fnc_setForceWalkStatus.sqf | 13 +++---- .../functions/fnc_setHearingCapability.sqf | 8 ++-- .../common/functions/fnc_setPitchBankYaw.sqf | 24 +++++------- .../functions/fnc_setSettingFromConfig.sqf | 28 +++++++------- .../common/functions/fnc_setVariableJIP.sqf | 3 +- .../functions/fnc_setVariablePublic.sqf | 6 +-- .../functions/fnc_sortAlphabeticallyBy.sqf | 22 +++++------ addons/common/functions/fnc_stringCompare.sqf | 16 ++++---- .../functions/fnc_switchToGroupSide.sqf | 17 +++------ addons/common/functions/fnc_syncedEvent.sqf | 3 +- .../common/functions/fnc_syncedEventPFH.sqf | 14 +++---- addons/common/functions/fnc_toBin.sqf | 8 ++-- addons/common/functions/fnc_toBitmask.sqf | 3 +- addons/common/functions/fnc_toHex.sqf | 10 ++--- .../functions/fnc_translateToModelSpace.sqf | 3 +- .../functions/fnc_translateToWeaponSpace.sqf | 3 +- addons/common/functions/fnc_unhideUnit.sqf | 3 +- .../common/functions/fnc_uniqueElements.sqf | 2 +- addons/common/functions/fnc_unloadPerson.sqf | 6 +-- .../functions/fnc_unloadPersonLocal.sqf | 10 ++--- addons/common/functions/fnc_unmuteUnit.sqf | 6 +-- addons/common/functions/fnc_useItem.sqf | 3 +- addons/common/functions/fnc_useMagazine.sqf | 3 +- addons/common/functions/fnc_waveHeightAt.sqf | 1 - .../functions/fnc_worldToScreenBounds.sqf | 38 +++++++++---------- 57 files changed, 195 insertions(+), 296 deletions(-) diff --git a/addons/common/functions/fnc__handleNetEvent.sqf b/addons/common/functions/fnc__handleNetEvent.sqf index e409afe6a3..e3b2ac609c 100644 --- a/addons/common/functions/fnc__handleNetEvent.sqf +++ b/addons/common/functions/fnc__handleNetEvent.sqf @@ -16,15 +16,12 @@ params ["_eventType", "_event"]; if (_eventType == "ACEg") then { _event params ["_eventName", "_eventArgs"]; + GVAR(events) params ["_eventNames"]; - private ["_eventNames", "_eventIndex"]; - - _eventNames = GVAR(events) select 0; - _eventIndex = _eventNames find _eventName; + private _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { - private "_events"; - _events = (GVAR(events) select 1) select _eventIndex; + private _events = (GVAR(events) select 1) select _eventIndex; #ifdef DEBUG_EVENTS ACE_LOGINFO_1("* Net Event %1",_eventName); @@ -46,9 +43,8 @@ if (_eventType == "ACEc") then { if (isServer) then { _event params ["_eventName", "_eventTargets", "_eventArgs"]; - private ["_sentEvents", "_owner", "_serverFlagged"]; + private _sentEvents = []; - _sentEvents = []; if (!IS_ARRAY(_eventTargets)) then { _eventTargets = [_eventTargets]; }; @@ -59,9 +55,11 @@ if (_eventType == "ACEc") then { ["ACEg", ACEg] call FUNC(_handleNetEvent); }; - _serverFlagged = false; + private _serverFlagged = false; + { - _owner = _x; + private _owner = _x; + if (IS_OBJECT(_x)) then { _owner = owner _x; }; diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf index 4e755562b5..8c8cbd1486 100644 --- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf +++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf @@ -15,10 +15,8 @@ params ["_client"]; { - private ["_eventEntry", "_eventLog"]; - - _eventEntry = HASH_GET(GVAR(syncedEvents),_x); - _eventLog = _eventEntry select 1; + private _eventEntry = HASH_GET(GVAR(syncedEvents),_x); + _eventEntry params ["", "_eventLog"]; ["SEH_s", _client, [_x, _eventLog]] call FUNC(targetEvent); false diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf index d4d9b2cf76..605af2fa85 100644 --- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf @@ -27,10 +27,8 @@ if (isServer) then { false }; - private ["_eventEntry", "_eventLog"]; - - _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); - _eventLog = _eventEntry select 1; + private _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName); + _eventEntry params ["", "_eventLog"]; ["SEH_s", _client, [_eventName, _eventLog]] call FUNC(targetEvent); } else { diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf index a14ee2680e..41f7ed429c 100644 --- a/addons/common/functions/fnc__handleSyncedEvent.sqf +++ b/addons/common/functions/fnc__handleSyncedEvent.sqf @@ -21,20 +21,17 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { false }; -private ["_internalData", "_eventCode"]; - -_internalData = HASH_GET(GVAR(syncedEvents),_name); +private _internalData = HASH_GET(GVAR(syncedEvents),_name); if (isServer) then { // Server needs to internally log it for synchronization if (_ttl > -1) then { _internalData = HASH_GET(GVAR(syncedEvents),_name); - private "_eventLog"; - _eventLog = _internalData select 1; + _internalData params ["", "_eventLog"]; _eventLog pushBack [ACE_diagTime, _args, _ttl]; }; }; -_eventCode = _internalData select 0; +_internalData params ["_eventCode"]; _args call _eventCode; diff --git a/addons/common/functions/fnc_addActionEventHandler.sqf b/addons/common/functions/fnc_addActionEventHandler.sqf index ae04933cdd..fe641010e4 100644 --- a/addons/common/functions/fnc_addActionEventHandler.sqf +++ b/addons/common/functions/fnc_addActionEventHandler.sqf @@ -25,10 +25,8 @@ if (_statement isEqualType "") then { _statement = compile _statement; }; -private ["_name", "_actionsVar"]; - -_name = format ["ACE_Action_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; +private _name = format ["ACE_Action_%1", _action]; +private _actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; if (_unit != _actionsVar select 2) then { // check if the unit is still valid, fixes respawn issues _actionsVar = [-1, [-1, [], []], objNull]; @@ -44,8 +42,7 @@ _actions pushBack [_condition, _statement]; // first action to add, unit needs addAction command if (_actionID == -1) then { - private "_addAction"; - _addAction = call compile format [ + private _addAction = call compile format [ "[ '', {if (inputAction '%1' == 0) exitWith {}; {if (_this call (_x select 0)) then {_this call (_x select 1)}} forEach (((_this select 0) getVariable '%2') select 1 select 2)}, diff --git a/addons/common/functions/fnc_addActionMenuEventHandler.sqf b/addons/common/functions/fnc_addActionMenuEventHandler.sqf index d9beb977f7..e68507ae7b 100644 --- a/addons/common/functions/fnc_addActionMenuEventHandler.sqf +++ b/addons/common/functions/fnc_addActionMenuEventHandler.sqf @@ -37,23 +37,19 @@ if (_statement2 isEqualType "") then { _statement2 = compile _statement2; }; -private ["_name", "_actionsVar"]; - -_name = format ["ACE_ActionMenu_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [], []]]; +private _name = format ["ACE_ActionMenu_%1", _action]; +private _actionsVar = _unit getVariable [_name, [-1, [], []]]; _actionsVar params ["_id", "_actionIDs", "_actions"]; _id = _id + 1; -private ["_nameVar", "_addAction", "_actionID"]; - -_nameVar = format ["%1_ID%2", _name, _id]; +private _nameVar = format ["%1_ID%2", _name, _id]; missionNamespace setVariable [_nameVar, [_condition, _statement, _condition2, _statement2]]; _actionIDs pushBack _id; -_addAction = call compile format [ +private _addAction = call compile format [ "[ '%2', {if (inputAction '%1' == 0) then {if (_this call (%3 select 2)) then {_this call (%3 select 3)}} else {_this call (%3 select 1)}}, @@ -70,7 +66,7 @@ _addAction = call compile format [ _priority ]; -_actionID = _unit addAction _addAction; +private _actionID = _unit addAction _addAction; _actions pushBack [_actionID, _nameVar]; diff --git a/addons/common/functions/fnc_addCanInteractWithCondition.sqf b/addons/common/functions/fnc_addCanInteractWithCondition.sqf index 740fa9bb9f..294dac1c72 100644 --- a/addons/common/functions/fnc_addCanInteractWithCondition.sqf +++ b/addons/common/functions/fnc_addCanInteractWithCondition.sqf @@ -17,12 +17,10 @@ params ["_conditionName", "_conditionFunc"]; _conditionName = toLower _conditionName; -private ["_conditions", "_index"]; - -_conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; +private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; _conditions params ["_conditionNames", "_conditionFuncs"]; -_index = _conditionNames find _conditionName; +private _index = _conditionNames find _conditionName; if (_index == -1) then { _index = count _conditionNames; diff --git a/addons/common/functions/fnc_addCuratorUnloadEventhandler.sqf b/addons/common/functions/fnc_addCuratorUnloadEventhandler.sqf index c739177288..1bb92130bc 100644 --- a/addons/common/functions/fnc_addCuratorUnloadEventhandler.sqf +++ b/addons/common/functions/fnc_addCuratorUnloadEventhandler.sqf @@ -13,8 +13,7 @@ disableSerialization; -private "_dlg"; -_dlg = ctrlParent _this; +private _dlg = ctrlParent _this; _dlg displayAddEventHandler ["unload", { if (_this select 1 == 1) then { diff --git a/addons/common/functions/fnc_addEventHandler.sqf b/addons/common/functions/fnc_addEventHandler.sqf index 599e937918..128f489701 100644 --- a/addons/common/functions/fnc_addEventHandler.sqf +++ b/addons/common/functions/fnc_addEventHandler.sqf @@ -15,17 +15,15 @@ params ["_eventName", "_eventCode"]; -private ["_eventNames", "_eventFunctions", "_eventIndex"]; +GVAR(events) params ["_eventNames"]; -_eventNames = GVAR(events) select 0; -_eventFunctions = []; -_eventIndex = _eventNames find _eventName; +private _eventFunctions = []; +private _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { _eventFunctions = (GVAR(events) select 1) select _eventIndex; } else { - private "_eventNameCount"; - _eventNameCount = count _eventNames; + private _eventNameCount = count _eventNames; _eventNames set [_eventNameCount, _eventName]; (GVAR(events) select 1) set [_eventNameCount, _eventFunctions]; diff --git a/addons/common/functions/fnc_addMapMarkerCreatedEventHandler.sqf b/addons/common/functions/fnc_addMapMarkerCreatedEventHandler.sqf index 05e23cf099..2201426e48 100644 --- a/addons/common/functions/fnc_addMapMarkerCreatedEventHandler.sqf +++ b/addons/common/functions/fnc_addMapMarkerCreatedEventHandler.sqf @@ -18,8 +18,7 @@ if (_statement isEqualType "") then { _statement = compile _statement; }; -private "_actionsVar"; -_actionsVar = missionNamespace getVariable ["ACE_EventHandler_MapMarker", [-1, [], []]]; +private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_MapMarker", [-1, [], []]]; _actionsVar params ["_id", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf b/addons/common/functions/fnc_addScrollWheelEventHandler.sqf index 45f935812f..aef88543be 100644 --- a/addons/common/functions/fnc_addScrollWheelEventHandler.sqf +++ b/addons/common/functions/fnc_addScrollWheelEventHandler.sqf @@ -19,8 +19,7 @@ if (_statement isEqualType "") then { _statement = compile _statement; }; -private "_actionsVar"; -_actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; +private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; _actionsVar params ["_id", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_addSetting.sqf b/addons/common/functions/fnc_addSetting.sqf index 06162de6b1..0cf25b860a 100644 --- a/addons/common/functions/fnc_addSetting.sqf +++ b/addons/common/functions/fnc_addSetting.sqf @@ -22,8 +22,7 @@ params ["_name", "", "", "", "", "", "", "_value"]; //["_name", "_typeName", "_isClientSetable", "_localizedName", "_localizedDescription", "_possibleValues", "_isForced", "_value"]; -private "_settingData"; -_settingData = [_name] call FUNC(getSettingData); +private _settingData = [_name] call FUNC(getSettingData); // Exit if the setting already exists if (count _settingData > 0) exitWith {}; diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf index 801a915dc5..0964e419bc 100644 --- a/addons/common/functions/fnc_addSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf @@ -21,9 +21,7 @@ if (HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { false }; -private ["_eventId", "_data"]; - -_eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); -_data = [_handler, [], _ttl, _eventId]; +private _eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler); +private _data = [_handler, [], _ttl, _eventId]; HASH_SET(GVAR(syncedEvents),_name,_data); diff --git a/addons/common/functions/fnc_addToInventory.sqf b/addons/common/functions/fnc_addToInventory.sqf index 4019de93ac..9d796d6018 100644 --- a/addons/common/functions/fnc_addToInventory.sqf +++ b/addons/common/functions/fnc_addToInventory.sqf @@ -18,9 +18,9 @@ params ["_unit", "_classname", ["_container", ""], ["_ammoCount", -1]]; -private ["_type", "_canAdd", "_addedToUnit"]; +private _type = _classname call FUNC(getItemType); -_type = [_classname] call FUNC(getItemType); +private ["_canAdd", "_addedToUnit"]; switch (_container) do { case "vest": { @@ -59,8 +59,7 @@ switch (_type select 0) do { } else { _addedToUnit = false; - private "_pos"; - _pos = _unit modelToWorldVisual [0,1,0.05]; + private _pos = _unit modelToWorldVisual [0,1,0.05]; _unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; _unit addWeaponCargoGlobal [_classname, 1]; @@ -93,8 +92,7 @@ switch (_type select 0) do { } else { _addedToUnit = false; - private "_pos"; - _pos = _unit modelToWorldVisual [0,1,0.05]; + private _pos = _unit modelToWorldVisual [0,1,0.05]; _unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; _unit addMagazineCargoGlobal [_classname, 1/*_ammoCount*/]; //@todo Bug! This isn't really the ammo, but magazine count. No such command. @@ -123,8 +121,7 @@ switch (_type select 0) do { } else { _addedToUnit = false; - private "_pos"; - _pos = _unit modelToWorldVisual [0,1,0.05]; + private _pos = _unit modelToWorldVisual [0,1,0.05]; _unit = createVehicle ["WeaponHolder_Single_F", _pos, [], 0, "NONE"]; _unit addItemCargoGlobal [_classname, 1]; diff --git a/addons/common/functions/fnc_hideUnit.sqf b/addons/common/functions/fnc_hideUnit.sqf index 4bbc357885..85636a08f7 100644 --- a/addons/common/functions/fnc_hideUnit.sqf +++ b/addons/common/functions/fnc_hideUnit.sqf @@ -12,7 +12,7 @@ * Example: * [ACE_Player, "SpectatorMode"] call ace_common_fnc_hideUnit * - * Public: No + * Public: Yes */ #include "script_component.hpp" diff --git a/addons/common/functions/fnc_parseList.sqf b/addons/common/functions/fnc_parseList.sqf index ef7eaae92a..fc92605682 100644 --- a/addons/common/functions/fnc_parseList.sqf +++ b/addons/common/functions/fnc_parseList.sqf @@ -19,36 +19,34 @@ params ["_list", ["_removeWhitespace", false], ["_checkNil", false]]; -private ["_whitespaceList", "_nilCheckedList"]; - // Split using comma delimiter _list = _list splitString ","; TRACE_1("Splitted List",_list); - // Remove or Trim Whitespace -_whitespaceList = []; +private _whitespaceList = []; + { if (_removeWhitespace) then { _whitespaceList pushBack ([_x] call FUNC(stringRemoveWhiteSpace)); } else { _whitespaceList pushBack ([_x] call CBA_fnc_trim); }; - nil + false } count _list; _list = _whitespaceList; TRACE_1("Whitespace List",_list); - // Check for object existence if (_checkNil) then { - _nilCheckedList = []; + private _nilCheckedList = []; + { if !(isNil _x) then { _nilCheckedList pushBack (missionNamespace getVariable _x); }; - nil + false } count _list; _list = _nilCheckedList; diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf index 170d0060c0..e842590f35 100644 --- a/addons/common/functions/fnc_progressBar.sqf +++ b/addons/common/functions/fnc_progressBar.sqf @@ -24,9 +24,7 @@ params ["_totalTime", "_args", "_onFinish", "_onFail", ["_localizedTitle", ""], ["_condition", {true}], ["_exceptions", []]]; -private ["_player", "_ctrlPos", "_fnc_perFrameFunction"]; - -_player = ACE_player; +private _player = ACE_player; //Open Dialog and set the title closeDialog 0; @@ -35,7 +33,7 @@ createDialog QGVAR(ProgressBar_Dialog); (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetText _localizedTitle; //Adjust position based on user setting: -_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)); +private _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)); _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))]; (uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos; @@ -45,13 +43,11 @@ _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos; (uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0; -_fnc_perFrameFunction = { +[{ (_this select 0) params ["_args", "_onFinish", "_onFail", "_condition", "_player", "_startTime", "_totalTime", "_exceptions"]; - private ["_elapsedTime", "_errorCode"]; - - _elapsedTime = ACE_time - _startTime; - _errorCode = -1; + private _elapsedTime = ACE_time - _startTime; + private _errorCode = -1; // this does not check: target fell unconscious, target died, target moved inside vehicle / left vehicle, target moved outside of players range, target moves at all. if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then { @@ -101,6 +97,4 @@ _fnc_perFrameFunction = { //Update Progress Bar (ratio of elepased:total) (uiNamespace getVariable QGVAR(ctrlProgressBar)) progressSetPosition (_elapsedTime / _totalTime); }; -}; - -[_fnc_perFrameFunction, 0, [_args, _onFinish, _onFail, _condition, _player, ACE_time, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler; +}, 0, [_args, _onFinish, _onFail, _condition, _player, ACE_time, _totalTime, _exceptions]] call CBA_fnc_addPerFrameHandler; diff --git a/addons/common/functions/fnc_receiveRequest.sqf b/addons/common/functions/fnc_receiveRequest.sqf index e5885d70ce..48e66d6c4d 100644 --- a/addons/common/functions/fnc_receiveRequest.sqf +++ b/addons/common/functions/fnc_receiveRequest.sqf @@ -50,8 +50,7 @@ GVAR(RECIEVE_REQUEST_TIME_OUT_SCRIPT) = [ACE_time, _target, _requestID] spawn { _time = _time + 40; - private "_id"; - _id = _target getVariable _requestID; + private _id = _target getVariable _requestID; waitUntil { _id = _target getVariable _requestID; diff --git a/addons/common/functions/fnc_removeActionEventHandler.sqf b/addons/common/functions/fnc_removeActionEventHandler.sqf index b22ed0f152..60e551590d 100644 --- a/addons/common/functions/fnc_removeActionEventHandler.sqf +++ b/addons/common/functions/fnc_removeActionEventHandler.sqf @@ -18,10 +18,8 @@ params ["_unit", "_action", "_id"]; if (_id == -1) exitWith {}; -private ["_name", "_actionsVar"]; - -_name = format ["ACE_Action_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; +private _name = format ["ACE_Action_%1", _action]; +private _actionsVar = _unit getVariable [_name, [-1, [-1, [], []], objNull]]; _actionsVar params ["_actionID", "_actionsArray"]; _actionsArray params ["_currentID", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_removeActionMenuEventHandler.sqf b/addons/common/functions/fnc_removeActionMenuEventHandler.sqf index e5adbe0c01..943e3b4e22 100644 --- a/addons/common/functions/fnc_removeActionMenuEventHandler.sqf +++ b/addons/common/functions/fnc_removeActionMenuEventHandler.sqf @@ -18,10 +18,8 @@ params ["_unit", "_action", "_id"]; if (_id == -1) exitWith {}; -private ["_name", "_actionsVar"]; - -_name = format ["ACE_ActionMenu_%1", _action]; -_actionsVar = _unit getVariable [_name, [-1, [-1, [], []]]]; +private _name = format ["ACE_ActionMenu_%1", _action]; +private _actionsVar = _unit getVariable [_name, [-1, [-1, [], []]]]; _actionsVar params ["_currentID", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_removeAllEventHandlers.sqf b/addons/common/functions/fnc_removeAllEventHandlers.sqf index 1a1a6e255f..a309d18d02 100644 --- a/addons/common/functions/fnc_removeAllEventHandlers.sqf +++ b/addons/common/functions/fnc_removeAllEventHandlers.sqf @@ -16,10 +16,8 @@ params ["_eventName"]; GVAR(events) params ["_eventNames", "_events"]; -private ["_eventFunctions", "_eventIndex"]; - -_eventFunctions = []; -_eventIndex = _eventNames find _eventName; +private _eventFunctions = []; +private _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { _events set [_eventIndex, []]; diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf index 3d2252390a..ae8c0aa91c 100644 --- a/addons/common/functions/fnc_removeBinocularMagazine.sqf +++ b/addons/common/functions/fnc_removeBinocularMagazine.sqf @@ -9,19 +9,16 @@ * None * * Example: - * [player] call ace_common_fnc_removeBinocularMagazine + * player call ace_common_fnc_removeBinocularMagazine * * Public: Yes */ #include "script_component.hpp" -params ["_unit"]; +params [["_unit", objNull, [objNull]]]; -private ["_binocular", "_selectBinocular"]; - -_binocular = binocular _unit; - -_selectBinocular = currentWeapon _unit == _binocular; +private _binocular = binocular _unit; +private _selectBinocular = currentWeapon _unit == _binocular; _unit addWeapon _binocular; diff --git a/addons/common/functions/fnc_removeCanInteractWithCondition.sqf b/addons/common/functions/fnc_removeCanInteractWithCondition.sqf index 6c3fa8354b..b267e84557 100644 --- a/addons/common/functions/fnc_removeCanInteractWithCondition.sqf +++ b/addons/common/functions/fnc_removeCanInteractWithCondition.sqf @@ -16,13 +16,11 @@ params ["_conditionName"]; _conditionName = toLower _conditionName; -private "_conditions"; -_conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; +private _conditions = missionNamespace getVariable [QGVAR(InteractionConditions), [[],[]]]; _conditions params ["_conditionNames", "_conditionFuncs"]; -private "_index"; -_index = _conditionNames find _conditionName; +private _index = _conditionNames find _conditionName; if (_index == -1) exitWith {}; diff --git a/addons/common/functions/fnc_removeEventHandler.sqf b/addons/common/functions/fnc_removeEventHandler.sqf index 0c70046706..5e307ad896 100644 --- a/addons/common/functions/fnc_removeEventHandler.sqf +++ b/addons/common/functions/fnc_removeEventHandler.sqf @@ -17,10 +17,8 @@ params ["_eventName", "_eventCodeIndex"]; GVAR(events) params ["_eventNames", "_events"]; -private ["_eventFunctions", "_eventIndex"]; - -_eventFunctions = []; -_eventIndex = _eventNames find _eventName; +private _eventFunctions = []; +private _eventIndex = _eventNames find _eventName; if (_eventIndex != -1) then { _eventFunctions = _events select _eventIndex; diff --git a/addons/common/functions/fnc_removeMapMarkerCreatedEventHandler.sqf b/addons/common/functions/fnc_removeMapMarkerCreatedEventHandler.sqf index d156359ebf..825281c3e0 100644 --- a/addons/common/functions/fnc_removeMapMarkerCreatedEventHandler.sqf +++ b/addons/common/functions/fnc_removeMapMarkerCreatedEventHandler.sqf @@ -14,8 +14,7 @@ params ["_id"]; -private "_actionsVar"; -_actionsVar = missionNamespace getVariable ["ACE_EventHandler_MapMarker", [-1, [], []]]; +private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_MapMarker", [-1, [], []]]; _actionsVar params ["_currentId", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf b/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf index b277467cce..d7a8ae28cc 100644 --- a/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf +++ b/addons/common/functions/fnc_removeScrollWheelEventHandler.sqf @@ -14,8 +14,7 @@ params ["_id"]; -private "_actionsVar"; -_actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; +private _actionsVar = missionNamespace getVariable ["ACE_EventHandler_ScrollWheel", [-1, [], []]]; _actionsVar params ["_currentId", "_actionIDs", "_actions"]; diff --git a/addons/common/functions/fnc_removeSpecificMagazine.sqf b/addons/common/functions/fnc_removeSpecificMagazine.sqf index 46950cc1d8..e703a56296 100644 --- a/addons/common/functions/fnc_removeSpecificMagazine.sqf +++ b/addons/common/functions/fnc_removeSpecificMagazine.sqf @@ -14,15 +14,14 @@ */ #include "script_component.hpp" -params ["_unit", "_magazineType", "_ammoCount"]; +params [["_unit", objNull, [objNull]], ["_magazineType", "", [""]], ["_ammoCount", 0, [0]]]; -private ["_isRemoved", "_magazines", "_index"]; - -_isRemoved = false; +private _isRemoved = false; // Check uniform -_magazines = [magazinesAmmoCargo uniformContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter); -_index = _magazines find [_magazineType, _ammoCount]; +private _magazines = [magazinesAmmoCargo uniformContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter); +private _index = _magazines find [_magazineType, _ammoCount]; + if (_index > -1) exitWith { { _unit removeItemFromUniform (_x select 0); @@ -41,7 +40,8 @@ if (_index > -1) exitWith { // Check vest _magazines = [magazinesAmmoCargo vestContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter); -_index = _magazines find [_magazineType,_ammoCount]; +_index = _magazines find [_magazineType, _ammoCount]; + if (_index > -1) exitWith { { _unit removeItemFromVest (_x select 0); @@ -60,7 +60,8 @@ if (_index > -1) exitWith { // Check backpack _magazines = [magazinesAmmoCargo backpackContainer _unit, {_this select 0 == _magazineType}] call FUNC(filter); -_index = _magazines find [_magazineType,_ammoCount]; +_index = _magazines find [_magazineType, _ammoCount]; + if (_index > -1) exitWith { { _unit removeItemFromBackpack (_x select 0); diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf index ffc4a364f3..126bf0b70f 100644 --- a/addons/common/functions/fnc_removeSyncedEventHandler.sqf +++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf @@ -19,10 +19,8 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { false }; -private ["_data", "_eventId"]; - -_data = HASH_GET(GVAR(syncedEvents),_name); -_eventId = _data select 3; +private _data = HASH_GET(GVAR(syncedEvents),_name); +_data params ["", "", "", "_eventId"]; [_eventId] call FUNC(removeEventHandler); HASH_REM(GVAR(syncedEvents),_name); diff --git a/addons/common/functions/fnc_restoreVariablesJIP.sqf b/addons/common/functions/fnc_restoreVariablesJIP.sqf index 491ce89bb4..39626514bb 100644 --- a/addons/common/functions/fnc_restoreVariablesJIP.sqf +++ b/addons/common/functions/fnc_restoreVariablesJIP.sqf @@ -14,8 +14,7 @@ params ["_unit"]; -private "_respawnVariables"; -_respawnVariables = _unit getVariable ["ACE_respawnVariables", []]; +private _respawnVariables = _unit getVariable ["ACE_respawnVariables", []]; // yes those _respawnVariables pushBack "ACE_PersistentFunctions"; diff --git a/addons/common/functions/fnc_sanitizeString.sqf b/addons/common/functions/fnc_sanitizeString.sqf index fff3288db6..2e2248093f 100644 --- a/addons/common/functions/fnc_sanitizeString.sqf +++ b/addons/common/functions/fnc_sanitizeString.sqf @@ -15,8 +15,7 @@ params ["_string", ["_removeTags", false]]; -private "_array"; -_array = []; +private _array = []; { switch _x do { diff --git a/addons/common/functions/fnc_setCaptivityStatus.sqf b/addons/common/functions/fnc_setCaptivityStatus.sqf index ecb7b3152a..3e84c1753d 100644 --- a/addons/common/functions/fnc_setCaptivityStatus.sqf +++ b/addons/common/functions/fnc_setCaptivityStatus.sqf @@ -10,15 +10,13 @@ * Return Value: * None * - * Public: No + * Public: Yes */ #include "script_component.hpp" params ["_unit", "_reason", "_status"]; -private ["_captivityReasons", "_unitCaptivityReasons", "_captivityReasonsBooleans", "_bitmask"]; - -_captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []]; +private _captivityReasons = missionNamespace getVariable ["ACE_captivityReasons", []]; // register new reason (these reasons are shared publicly, since units can change ownership, but keep their captivity status) if !(_reason in _captivityReasons) then { @@ -29,16 +27,17 @@ if !(_reason in _captivityReasons) then { }; // get reasons why the unit is captive already and update to the new status -_unitCaptivityReasons = [_unit] call FUNC(getCaptivityStatus); +private _unitCaptivityReasons = _unit call FUNC(getCaptivityStatus); + +private _captivityReasonsBooleans = []; -_captivityReasonsBooleans = []; { _captivityReasonsBooleans set [_forEachIndex, (_captivityReasons select _forEachIndex) in _unitCaptivityReasons]; } forEach _captivityReasons; _captivityReasonsBooleans set [_captivityReasons find _reason, _status]; -_bitmask = _captivityReasonsBooleans call FUNC(toBitmask); +private _bitmask = _captivityReasonsBooleans call FUNC(toBitmask); // actually apply the setCaptive command globaly [[_unit, _bitmask], "{(_this select 0) setCaptive (_this select 1)}", _unit] call FUNC(execRemoteFnc); diff --git a/addons/common/functions/fnc_setDefinedVariable.sqf b/addons/common/functions/fnc_setDefinedVariable.sqf index 9b7812ee82..6f1f0c2e58 100644 --- a/addons/common/functions/fnc_setDefinedVariable.sqf +++ b/addons/common/functions/fnc_setDefinedVariable.sqf @@ -17,8 +17,7 @@ params ["_unit", "_variable", "_value", "_global"]; if (isNil "_global") then { - private "_definedVariable"; - _definedVariable = [_variable] call FUNC(getDefinedVariableInfo); + private _definedVariable = [_variable] call FUNC(getDefinedVariableInfo); _definedVariable params ["", "", ["_global", false]]; }; diff --git a/addons/common/functions/fnc_setForceWalkStatus.sqf b/addons/common/functions/fnc_setForceWalkStatus.sqf index aaa594b9a9..3842457395 100644 --- a/addons/common/functions/fnc_setForceWalkStatus.sqf +++ b/addons/common/functions/fnc_setForceWalkStatus.sqf @@ -14,15 +14,13 @@ * Example: * [ACE_Player, "BrokenLeg", true] call FUNC(setForceWalkStatus) * - * Public: No + * Public: Yes */ #include "script_component.hpp" params ["_unit", "_reason", "_status"]; -private ["_forceWalkReasons", "_unitForceWalkReasons", "_forceWalkReasonsBooleans", "_bitmaskNumber"]; - -_forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []]; +private _forceWalkReasons = missionNamespace getVariable ["ACE_forceWalkReasons", []]; // register new reason (these reasons are shared publicly, since units can change ownership, but keep their forceWalk status) if !(_reason in _forceWalkReasons) then { @@ -32,16 +30,17 @@ if !(_reason in _forceWalkReasons) then { }; // get reasons why the unit is forceWalking already and update to the new status -_unitForceWalkReasons = [_unit] call FUNC(getForceWalkStatus); +private _unitForceWalkReasons = [_unit] call FUNC(getForceWalkStatus); + +private _forceWalkReasonsBooleans = []; -_forceWalkReasonsBooleans = []; { _forceWalkReasonsBooleans set [_forEachIndex, (_forceWalkReasons select _forEachIndex) in _unitForceWalkReasons]; } forEach _forceWalkReasons; _forceWalkReasonsBooleans set [_forceWalkReasons find _reason, _status]; -_bitmaskNumber = _forceWalkReasonsBooleans call FUNC(toBitmask); +private _bitmaskNumber = _forceWalkReasonsBooleans call FUNC(toBitmask); _unit setVariable ["ACE_forceWalkStatusNumber", _bitmaskNumber, true]; diff --git a/addons/common/functions/fnc_setHearingCapability.sqf b/addons/common/functions/fnc_setHearingCapability.sqf index d24f8d0d9d..7bd375a58b 100644 --- a/addons/common/functions/fnc_setHearingCapability.sqf +++ b/addons/common/functions/fnc_setHearingCapability.sqf @@ -18,11 +18,10 @@ params ["_id", "_settings", ["_add", true]]; -private ["_map", "_exists", "_lowestVolume"]; +private _map = missionNamespace getVariable [QGVAR(setHearingCapabilityMap),[]]; -_map = missionNamespace getVariable [QGVAR(setHearingCapabilityMap),[]]; +private _exists = false; -_exists = false; { if (_id == _x select 0) exitWith { _exists = true; @@ -42,7 +41,8 @@ if (!_exists && _add) then { missionNamespace setVariable [QGVAR(setHearingCapabilityMap), _map]; // find lowest volume -_lowestVolume = 1; +private _lowestVolume = 1; + { _lowestVolume = (_x select 1) min _lowestVolume; false diff --git a/addons/common/functions/fnc_setPitchBankYaw.sqf b/addons/common/functions/fnc_setPitchBankYaw.sqf index ea7f27a906..fecc16208c 100644 --- a/addons/common/functions/fnc_setPitchBankYaw.sqf +++ b/addons/common/functions/fnc_setPitchBankYaw.sqf @@ -19,14 +19,12 @@ params ["_object", "_aroundX", "_aroundY", "_aroundZ"]; _aroundZ = - _aroundZ; -private ["_dirX", "_dirY", "_dirZ", "_upX", "_upY", "_upZ", "_dir", "_up"]; - -_dirX = 0; -_dirY = 1; -_dirZ = 0; -_upX = 0; -_upY = 0; -_upZ = 1; +private _dirX = 0; +private _dirY = 1; +private _dirZ = 0; +private _upX = 0; +private _upY = 0; +private _upZ = 1; if (_aroundX != 0) then { _dirY = cos _aroundX; @@ -43,18 +41,16 @@ if (_aroundY != 0) then { }; if (_aroundZ != 0) then { - private ["_dirXTemp", "_upXTemp"]; - - _dirXTemp = _dirX; + private _dirXTemp = _dirX; _dirX = (_dirXTemp* cos _aroundZ) - (_dirY * sin _aroundZ); _dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ); - _upXTemp = _upX; + private _upXTemp = _upX; _upX = (_upXTemp * cos _aroundZ) - (_upY * sin _aroundZ); _upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ); }; -_dir = [_dirX, _dirY, _dirZ]; -_up = [_upX, _upY, _upZ]; +private _dir = [_dirX, _dirY, _dirZ]; +private _up = [_upX, _upY, _upZ]; _object setVectorDirAndUp [_dir,_up]; diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf index 5dc55f51f7..ac7a0f4875 100644 --- a/addons/common/functions/fnc_setSettingFromConfig.sqf +++ b/addons/common/functions/fnc_setSettingFromConfig.sqf @@ -14,13 +14,11 @@ params ["_optionEntry"]; -private ["_fnc_getValueWithType", "_value", "_name", "_typeName", "_settingData", "_valueConfig", "_text"]; - -_fnc_getValueWithType = { +private _fnc_getValueWithType = { params ["_optionEntry", "_typeName"]; - _valueConfig = (_optionEntry >> "value"); - _value = if (isNumber (_optionEntry >> "value")) then {getNumber (_optionEntry >> "value")} else {0}; + private _valueConfig = (_optionEntry >> "value"); + private _value = if (isNumber (_optionEntry >> "value")) then {getNumber (_optionEntry >> "value")} else {0}; TRACE_3("_fnc_getValueWithType:", configName _optionEntry, _typeName, _value); if (_typeName == "BOOL") exitWith { _value > 0 @@ -37,27 +35,27 @@ _fnc_getValueWithType = { _value }; -_name = configName _optionEntry; +private _name = configName _optionEntry; // Check if the variable is already defined if (isNil _name) then { // That setting was not loaded yet // Get type from config - _typeName = getText (_optionEntry >> "typeName"); + private _typeName = getText (_optionEntry >> "typeName"); if (_typeName == "") then { _typeName = "SCALAR"; }; // Read entry and cast it to the correct type - _value = [_optionEntry, _typeName] call _fnc_getValueWithType; + private _value = [_optionEntry, _typeName] call _fnc_getValueWithType; // Init the variable missionNamespace setVariable [_name, _value]; // Add the setting to a list on the server // Set the variable to not forced - /*_settingData = [ + /*private _settingData = [ name, typeName, isClientSettable, @@ -68,7 +66,7 @@ if (isNil _name) then { defaultValue, category ];*/ - _settingData = [ + private _settingData = [ _name, _typeName, (getNumber (_optionEntry >> "isClientSettable")) > 0, @@ -81,10 +79,10 @@ if (isNil _name) then { ]; //Strings in the values array won't be localized from the config, so just do that now: - /*private "_values"; - _values = _settingData select 5; + /*private _values = _settingData select 5; + { - _text = _x; + private _text = _x; if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then { _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $ _values set [_forEachIndex, _text]; @@ -98,13 +96,13 @@ if (isNil _name) then { // The setting already exists. // Check if it's already forced and quit - _settingData = [_name] call FUNC(getSettingData); + private _settingData = [_name] call FUNC(getSettingData); if (_settingData select 6) exitWith {}; // The setting is not forced, so update the value // Read entry and cast it to the correct type from the existing variable - _value = [_optionEntry, _settingData select 1] call _fnc_getValueWithType; + private _value = [_optionEntry, _settingData select 1] call _fnc_getValueWithType; // Update the variable missionNamespace setVariable [_name, _value]; diff --git a/addons/common/functions/fnc_setVariableJIP.sqf b/addons/common/functions/fnc_setVariableJIP.sqf index d1bd27ea4e..35e8c0d116 100644 --- a/addons/common/functions/fnc_setVariableJIP.sqf +++ b/addons/common/functions/fnc_setVariableJIP.sqf @@ -16,8 +16,7 @@ params ["_unit", "_varName", "_value"]; -private "_respawnVariables"; -_respawnVariables = _unit getVariable ["ACE_respawnVariables", []]; +private _respawnVariables = _unit getVariable ["ACE_respawnVariables", []]; if !(_varName in _respawnVariables) then { _respawnVariables pushBack _varName; diff --git a/addons/common/functions/fnc_setVariablePublic.sqf b/addons/common/functions/fnc_setVariablePublic.sqf index 8dbaeffbd6..31d1d23014 100644 --- a/addons/common/functions/fnc_setVariablePublic.sqf +++ b/addons/common/functions/fnc_setVariablePublic.sqf @@ -23,13 +23,11 @@ _object setVariable [_varName, _value]; // Exit if in SP if (!isMultiplayer) exitWith {}; -private ["_idName", "_syncTime"]; - -_idName = format ["ACE_setVariablePublic_%1", _varName]; +private _idName = format ["ACE_setVariablePublic_%1", _varName]; if (_idName in GVAR(setVariableNames)) exitWith {}; -_syncTime = ACE_diagTime + _sync; +private _syncTime = ACE_diagTime + _sync; GVAR(setVariableNames) pushBack _idName; diff --git a/addons/common/functions/fnc_sortAlphabeticallyBy.sqf b/addons/common/functions/fnc_sortAlphabeticallyBy.sqf index 9bbec92d40..0bf0c6432f 100644 --- a/addons/common/functions/fnc_sortAlphabeticallyBy.sqf +++ b/addons/common/functions/fnc_sortAlphabeticallyBy.sqf @@ -18,34 +18,32 @@ ACE_DEPRECATED("ace_common_fnc_sortAlphabeticallyBy","3.5.0","sort"); params ["_array", "_elementN"]; -private ["_elements", "_indexes", "_theElement", "_tmp", "_tempIndex", "_returnArray"]; - -_indexes = []; -_elements = []; +private _indices = []; +private _elements = []; { - _theElement = toArray (_x select _elementN); - _indexes pushBack _forEachIndex; + private _theElement = toArray (_x select _elementN); + _indices pushBack _forEachIndex; _elements pushBack _theElement; } forEach _array; for "_i" from 1 to (count _elements) - 1 do { - _tmp = _elements select _i; - _tempIndex = _indexes select _i; + private _tmp = _elements select _i; + private _tempIndex = _indices select _i; _j = _i; while {_j >= 1 && {_tmp < _elements select (_j - 1)}} do { _elements set [_j, _elements select (_j - 1)]; - _indexes set [_j, _indexes select (_j - 1)]; + _indices set [_j, _indices select (_j - 1)]; _j = _j - 1; }; _elements set[_j, _tmp]; - _indexes set [_j, _tempIndex]; + _indices set [_j, _tempIndex]; }; -_returnArray = []; +private _returnArray = []; { _returnArray pushBack (_array select _x); -} forEach _indexes; +} forEach _indices; _returnArray diff --git a/addons/common/functions/fnc_stringCompare.sqf b/addons/common/functions/fnc_stringCompare.sqf index da65c676f8..ad3073eb1e 100644 --- a/addons/common/functions/fnc_stringCompare.sqf +++ b/addons/common/functions/fnc_stringCompare.sqf @@ -18,16 +18,14 @@ params ["_string", "_searchTerm"]; _string = toLower _string; // removes case sensitivity _searchTerm = toLower _searchTerm; -private ["_arraySearchTerm", "_arrayString", "_sizeSearchTerm", "_sizeString", "_matchingCharacters", "_searchIterator", "_targetIterator"]; +private _arraySearchTerm = toArray _searchTerm; // splits string into array of unicode decimals +private _arrayString = toArray _string; +private _sizeSearchTerm = count _arraySearchTerm; // We only measure the array once +private _sizeString = count _arrayString; -_arraySearchTerm = toArray _searchTerm; // splits string into array of unicode decimals -_arrayString = toArray _string; -_sizeSearchTerm = count _arraySearchTerm; // We only measure the array once -_sizeString = count _arrayString; - -_matchingCharacters = 0; -_searchIterator = 0; -_targetIterator = 0; +private _matchingCharacters = 0; +private _searchIterator = 0; +private _targetIterator = 0; while {_searchIterator < _sizeSearchTerm && _targetIterator < _sizeString} do { // Prevents us from going out of bounds if (_arraySearchTerm select _searchIterator == _arrayString select _targetIterator) then { // If we have a match, start looking for the next character in the search term diff --git a/addons/common/functions/fnc_switchToGroupSide.sqf b/addons/common/functions/fnc_switchToGroupSide.sqf index 7d23e6442a..3a559a7a65 100644 --- a/addons/common/functions/fnc_switchToGroupSide.sqf +++ b/addons/common/functions/fnc_switchToGroupSide.sqf @@ -17,29 +17,24 @@ params [["_unit", objNull], ["_switch", false], ["_id", ""], ["_side", side _unit]]; -private "_previousGroupsList"; -_previousGroupsList = _unit getVariable [QGVAR(previousGroupSwitchTo), []]; +private _previousGroupsList = _unit getVariable [QGVAR(previousGroupSwitchTo), []]; if (_switch) then { // go forward - private ["_previousGroup", "_originalSide", "_newGroup"]; - - _previousGroup = group _unit; - _originalSide = side group _unit; + private _previousGroup = group _unit; + private _originalSide = side group _unit; if (count units _previousGroup == 1 && _originalSide == _side) exitWith { [format ["Current group has only 1 member and is of same side as switch. Not switching unit %1", _id]] call FUNC(debug); }; - _newGroup = createGroup _side; + private _newGroup = createGroup _side; [_unit] joinSilent _newGroup; _previousGroupsList pushBack [_previousGroup, _originalSide, _id, true]; _unit setVariable [QGVAR(previousGroupSwitchTo), _previousGroupsList, true]; } else { // go one back - private ["_currentGroup", "_newGroup"]; - { if (_id == (_x select 2)) exitWith { _x set [ 3, false]; @@ -53,11 +48,11 @@ if (_switch) then { { if (_x select 3) exitWith {}; // stop at first id set to true if !(_x select 3) then { - _currentGroup = group _unit; + private _currentGroup = group _unit; if (!isNull (_x select 0)) then { [_unit] joinSilent (_x select 0); } else { - _newGroup = createGroup (_x select 1); + private _newGroup = createGroup (_x select 1); [_unit] joinSilent _newGroup; }; if (count units _currentGroup == 0) then { diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf index 34043fa8ae..4ed8107330 100644 --- a/addons/common/functions/fnc_syncedEvent.sqf +++ b/addons/common/functions/fnc_syncedEvent.sqf @@ -21,7 +21,6 @@ if (!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith { false }; -private "_eventData"; -_eventData = [_name, _args, _ttl]; +private _eventData = [_name, _args, _ttl]; ["SEH", _eventData] call FUNC(globalEvent); diff --git a/addons/common/functions/fnc_syncedEventPFH.sqf b/addons/common/functions/fnc_syncedEventPFH.sqf index 1b2f634ace..62df8f10a7 100644 --- a/addons/common/functions/fnc_syncedEventPFH.sqf +++ b/addons/common/functions/fnc_syncedEventPFH.sqf @@ -19,21 +19,17 @@ if (!isServer) exitWith {false}; // @TODO: This should be iteration limited to prevent FPS lag { - private ["_name", "_data", "_newEventLog"]; + private _name = _x; - _name = _x; - - _data = HASH_GET(GVAR(syncedEvents),_name); + private _data = HASH_GET(GVAR(syncedEvents),_name); _data params ["_eventTime", "_eventLog", "_globalEventTTL"]; - _newEventLog = []; + private _newEventLog = []; // @TODO: This should be iteration limited to prevent FPS lag { - private ["_eventEntry", "_ttlReturn"]; - - _eventEntry = _x; - _ttlReturn = true; + private _eventEntry = _x; + private _ttlReturn = true; if (_globalEventTTL isEqualType {}) then { _ttlReturn = [_eventTime, _eventEntry] call _globalEventTTL; diff --git a/addons/common/functions/fnc_toBin.sqf b/addons/common/functions/fnc_toBin.sqf index 9f3296597d..f8ec0bac68 100644 --- a/addons/common/functions/fnc_toBin.sqf +++ b/addons/common/functions/fnc_toBin.sqf @@ -14,15 +14,13 @@ params ["_number", ["_minLength", 1]]; -private ["_sign", "_bin", "_rest"]; - -_sign = ["", "-"] select (_number < 0); +private _sign = ["", "-"] select (_number < 0); _number = round abs _number; -_bin = ["", "0"] select (_number == 0); +private _bin = ["", "0"] select (_number == 0); while {_number > 0} do { - _rest = str (_number mod 2); + private _rest = str (_number mod 2); _number = floor (_number / 2); _bin = _rest + _bin; }; diff --git a/addons/common/functions/fnc_toBitmask.sqf b/addons/common/functions/fnc_toBitmask.sqf index 35b1e06f9f..333e5c737b 100644 --- a/addons/common/functions/fnc_toBitmask.sqf +++ b/addons/common/functions/fnc_toBitmask.sqf @@ -12,8 +12,7 @@ */ #include "script_component.hpp" -private "_result"; -_result = 0; +private _result = 0; { if (_x) then {_result = _result + 2 ^ _forEachIndex}; diff --git a/addons/common/functions/fnc_toHex.sqf b/addons/common/functions/fnc_toHex.sqf index 80d8757b80..c558aab04b 100644 --- a/addons/common/functions/fnc_toHex.sqf +++ b/addons/common/functions/fnc_toHex.sqf @@ -19,16 +19,14 @@ _number = ((round abs _number) max 0) min 255; if (isNil QGVAR(hexArray)) then { GVAR(hexArray) = []; - private ["_minLength", "_num", "_hex", "_rest"]; - - _minLength = 2; + private _minLength = 2; for [{_i = 0;}, {_i < 256}, {_i = _i + 1}] do { - _num = _i; - _hex = ["", "0"] select (_i == 0); + private _num = _i; + private _hex = ["", "0"] select (_i == 0); while {_num > 0} do { - _rest = _num mod 16; + private _rest = _num mod 16; _rest = switch _rest do { case 10 : {"A"}; case 11 : {"B"}; diff --git a/addons/common/functions/fnc_translateToModelSpace.sqf b/addons/common/functions/fnc_translateToModelSpace.sqf index b05a19bed6..b9fa35243a 100644 --- a/addons/common/functions/fnc_translateToModelSpace.sqf +++ b/addons/common/functions/fnc_translateToModelSpace.sqf @@ -14,8 +14,7 @@ params ["_object", "_matrix", "_offset"]; -private "_origin"; -_origin = getPosASL _object; +private _origin = getPosASL _object; _matrix params ["_xVec", "_yVec", "_zVec"]; diff --git a/addons/common/functions/fnc_translateToWeaponSpace.sqf b/addons/common/functions/fnc_translateToWeaponSpace.sqf index db3a5eaf37..cd360bd874 100644 --- a/addons/common/functions/fnc_translateToWeaponSpace.sqf +++ b/addons/common/functions/fnc_translateToWeaponSpace.sqf @@ -14,8 +14,7 @@ params ["_object", "_matrix", "_offset"]; -private "_origin"; -_origin = getPosASL _object; +private _origin = getPosASL _object; _matrix params ["_xVec", "_yVec", "_zVec"]; diff --git a/addons/common/functions/fnc_unhideUnit.sqf b/addons/common/functions/fnc_unhideUnit.sqf index 5bcafc3509..908dbf3dc8 100644 --- a/addons/common/functions/fnc_unhideUnit.sqf +++ b/addons/common/functions/fnc_unhideUnit.sqf @@ -20,8 +20,7 @@ params ["_unit", "_reason"]; if (isNull _unit) exitWith {}; -private "_setHiddenReasons"; -_setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []]; +private _setHiddenReasons = _unit getVariable [QGVAR(setHiddenReasons), []]; if (_reason in _setHiddenReasons) then { _setHiddenReasons deleteAt (_setHiddenReasons find _reason); diff --git a/addons/common/functions/fnc_uniqueElements.sqf b/addons/common/functions/fnc_uniqueElements.sqf index 55d8c4ef5f..471ba47457 100644 --- a/addons/common/functions/fnc_uniqueElements.sqf +++ b/addons/common/functions/fnc_uniqueElements.sqf @@ -12,6 +12,6 @@ */ #include "script_component.hpp" -params ["_array"]; +params [["_array", [], [[]]]]; _array arrayIntersect _array // return diff --git a/addons/common/functions/fnc_unloadPerson.sqf b/addons/common/functions/fnc_unloadPerson.sqf index 73e02cd7ce..0c1b53bc61 100644 --- a/addons/common/functions/fnc_unloadPerson.sqf +++ b/addons/common/functions/fnc_unloadPerson.sqf @@ -16,15 +16,13 @@ params ["_unit"]; -private "_vehicle"; -_vehicle = vehicle _unit; +private _vehicle = vehicle _unit; if (_vehicle == _unit) exitWith {false}; if (speed _vehicle > 1 || getPos _vehicle select 2 > 2) exitWith {false}; -private "_emptyPos"; -_emptyPos = (getPos _vehicle) findEmptyPosition [0, 10, typeOf _unit]; // @todo to small? +private _emptyPos = (getPos _vehicle) findEmptyPosition [0, 10, typeOf _unit]; // @todo to small? if (count _emptyPos == 0) exitWith {false}; diff --git a/addons/common/functions/fnc_unloadPersonLocal.sqf b/addons/common/functions/fnc_unloadPersonLocal.sqf index a7e61a7868..5e8300c139 100644 --- a/addons/common/functions/fnc_unloadPersonLocal.sqf +++ b/addons/common/functions/fnc_unloadPersonLocal.sqf @@ -17,9 +17,8 @@ params ["_unit", "_vehicle"]; TRACE_2("params",_unit,_vehicle); -private ["_validVehiclestate", "_emptyPos", "_loaded"]; - -_validVehiclestate = true; +private _validVehiclestate = true; +private _emptyPos = []; if (_vehicle isKindOf "Ship") then { if (speed _vehicle > 1 || {getPos _vehicle select 2 > 2}) then { @@ -78,8 +77,7 @@ _unit action ["Eject", vehicle _unit]; TRACE_1("Check if isAwake", [_unit] call FUNC(isAwake)); if (driver _unit == _unit) then { - private "_anim"; - _anim = [_unit] call FUNC(getDeathAnim); + private _anim = [_unit] call FUNC(getDeathAnim); [_unit, _anim, 1, true] call FUNC(doAnimation); @@ -96,7 +94,7 @@ _unit action ["Eject", vehicle _unit]; [_unit, false, GROUP_SWITCH_ID, side group _unit] call FUNC(switchToGroupSide); -_loaded = _vehicle getVariable [QGVAR(loaded_persons),[]]; +private _loaded = _vehicle getVariable [QGVAR(loaded_persons),[]]; _loaded deleteAt (_loaded find _unit); _vehicle setVariable [QGVAR(loaded_persons), _loaded, true]; diff --git a/addons/common/functions/fnc_unmuteUnit.sqf b/addons/common/functions/fnc_unmuteUnit.sqf index bf02fe676f..a995eed244 100644 --- a/addons/common/functions/fnc_unmuteUnit.sqf +++ b/addons/common/functions/fnc_unmuteUnit.sqf @@ -18,8 +18,7 @@ params ["_unit", "_reason"]; if (isNull _unit) exitWith {}; // remove reason to mute to the unit -private "_muteUnitReasons"; -_muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []]; +private _muteUnitReasons = _unit getVariable [QGVAR(muteUnitReasons), []]; if (_reason in _muteUnitReasons) then { _muteUnitReasons deleteAt (_muteUnitReasons find _reason); @@ -29,8 +28,7 @@ if (_reason in _muteUnitReasons) then { // don't unmute if there is another mute reason! if (count _muteUnitReasons > 0) exitWith {}; -private "_speaker"; -_speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; +private _speaker = _unit getVariable ["ACE_OriginalSpeaker", ""]; if (_speaker == "") exitWith {}; diff --git a/addons/common/functions/fnc_useItem.sqf b/addons/common/functions/fnc_useItem.sqf index acf359813c..2d2116b38f 100644 --- a/addons/common/functions/fnc_useItem.sqf +++ b/addons/common/functions/fnc_useItem.sqf @@ -15,8 +15,7 @@ params ["_unit", "_item", ["_vehicleUsage", false]]; -private "_return"; -_return = false; +private _return = false; if !(_vehicleUsage) then { if (_item != "") then { diff --git a/addons/common/functions/fnc_useMagazine.sqf b/addons/common/functions/fnc_useMagazine.sqf index 1a77d0b3f3..4dc6136fa6 100644 --- a/addons/common/functions/fnc_useMagazine.sqf +++ b/addons/common/functions/fnc_useMagazine.sqf @@ -15,8 +15,7 @@ params ["_unit", "_magazine", ["_vehicleUsage", false]]; -private "_return"; -_return = false; +private _return = false; if !(_vehicleUsage) then { if (_magazine != "") then { diff --git a/addons/common/functions/fnc_waveHeightAt.sqf b/addons/common/functions/fnc_waveHeightAt.sqf index a3f2447729..bc278a9b70 100644 --- a/addons/common/functions/fnc_waveHeightAt.sqf +++ b/addons/common/functions/fnc_waveHeightAt.sqf @@ -1,6 +1,5 @@ /* * Author: jaynus - * * Gets the wave height at a specific location. Uses a logic, so may be performance iffy * * Arguments: diff --git a/addons/common/functions/fnc_worldToScreenBounds.sqf b/addons/common/functions/fnc_worldToScreenBounds.sqf index 2de07c7bbd..c9e5551d19 100644 --- a/addons/common/functions/fnc_worldToScreenBounds.sqf +++ b/addons/common/functions/fnc_worldToScreenBounds.sqf @@ -1,6 +1,5 @@ /* * Author: zGuba 2011 - * * Function helper for framing objects on screen. * * Arguments: @@ -26,14 +25,12 @@ params ["_object", "_margins", "_offsets"]; -private ["_minX", "_minY", "_maxX", "_maxY", "_bounds", "_boundsCorners"]; +private _minX = 10; +private _minY = 10; +private _maxX = -10; +private _maxY = -10; -_minX = 10; -_minY = 10; -_maxX = -10; -_maxY = -10; - -_bounds = boundingBox _object; +private _bounds = boundingBox _object; _margins params ["_marginsX", "_marginsY", "_marginsZ"]; _offsets params ["_offsetsX", "_offsetsY", "_offsetsZ"]; @@ -49,22 +46,23 @@ _boundsMaxX = _boundsMaxX + _marginsX + _offsetsX; _boundsMaxY = _boundsMaxY + _marginsY + _offsetsY; _boundsMaxZ = _boundsMaxZ + _marginsZ + _offsetsZ; -_boundsCorners = [ - [_boundsMinX,_boundsMinY,_boundsMinZ], - [_boundsMinX,_boundsMinY,_boundsMaxZ], - [_boundsMinX,_boundsMaxY,_boundsMinZ], - [_boundsMinX,_boundsMaxY,_boundsMaxZ], - [_boundsMaxX,_boundsMinY,_boundsMinZ], - [_boundsMaxX,_boundsMinY,_boundsMaxZ], - [_boundsMaxX,_boundsMaxY,_boundsMinZ], - [_boundsMaxX,_boundsMaxY,_boundsMaxZ] +private _boundsCorners = [ + [_boundsMinX, _boundsMinY, _boundsMinZ], + [_boundsMinX, _boundsMinY, _boundsMaxZ], + [_boundsMinX, _boundsMaxY, _boundsMinZ], + [_boundsMinX, _boundsMaxY, _boundsMaxZ], + [_boundsMaxX, _boundsMinY, _boundsMinZ], + [_boundsMaxX, _boundsMinY, _boundsMaxZ], + [_boundsMaxX, _boundsMaxY, _boundsMinZ], + [_boundsMaxX, _boundsMaxY, _boundsMaxZ] ]; { - private "_ppos"; - _ppos = worldToScreen (_object modelToWorld _x); + private _ppos = worldToScreen (_object modelToWorld _x); + if (count _ppos >= 2) then { _ppos params ["_pposX", "_pposY"]; + if (_pposX < _minX) then {_minX = _pposX}; if (_pposX > _maxX) then {_maxX = _pposX}; if (_pposY < _minY) then {_minY = _pposY}; @@ -73,4 +71,4 @@ _boundsCorners = [ false } count _boundsCorners; -[_minX,_minY,_maxX,_maxY] +[_minX, _minY, _maxX, _maxY] From e6be1537cde256a69e18fc3cac9f7d734c093477 Mon Sep 17 00:00:00 2001 From: commy2 Date: Mon, 14 Dec 2015 13:17:48 +0100 Subject: [PATCH 053/107] replace more private with private keyword in common --- addons/common/XEH_postInit.sqf | 18 ++++++------------ addons/common/XEH_preInit.sqf | 3 +-- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ce75ad5187..0a81ca9a81 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -62,8 +62,7 @@ params ["_name", "_value", "_force"]; if (_force) then { - private "_settingData"; - _settingData = [_name] call FUNC(getSettingData); + private _settingData = [_name] call FUNC(getSettingData); if (_settingData isEqualTo []) exitWith {}; @@ -144,10 +143,8 @@ QGVAR(remoteFnc) addPublicVariableEventHandler { // Check files, previous installed version etc. ////////////////////////////////////////////////// -private ["_currentVersion", "_previousVersion"]; - -_currentVersion = getText (configFile >> "CfgPatches" >> QUOTE(ADDON) >> "version"); -_previousVersion = profileNamespace getVariable ["ACE_VersionNumberString", ""]; +private _currentVersion = getText (configFile >> "CfgPatches" >> QUOTE(ADDON) >> "version"); +private _previousVersion = profileNamespace getVariable ["ACE_VersionNumberString", ""]; // check previous version number from profile if (_currentVersion != _previousVersion) then { @@ -251,8 +248,7 @@ GVAR(ScrollWheelFrame) = diag_frameno; }] call FUNC(addEventHandler); // add PFH to execute event that fires when the main display (46) is created -private "_fnc_initMainDisplayCheck"; -_fnc_initMainDisplayCheck = { +private _fnc_initMainDisplayCheck = { [{ if !(isNull findDisplay 46) then { // Raise ACE event locally @@ -314,13 +310,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { // PFH to raise varios events [{ BEGIN_COUNTER(stateChecker); - private "_data"; // reuse one variable to reduce number of variables that have to be set to private each frame // "playerChanged" event - _data = call FUNC(player); + private _data = call FUNC(player); if !(_data isEqualTo ACE_player) then { - private "_oldPlayer"; - _oldPlayer = ACE_player; + private _oldPlayer = ACE_player; ACE_player = _data; uiNamespace setVariable ["ACE_player", _data]; diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index 3180eacb86..16b52f8e2d 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -328,8 +328,7 @@ if (hasInterface) then { // PFH to update the ACE_player variable GVAR(PreInit_playerChanged_PFHID) = [{ if !(ACE_player isEqualTo (call FUNC(player))) then { - private ["_oldPlayer"]; - _oldPlayer = ACE_player; + private _oldPlayer = ACE_player; ACE_player = call FUNC(player); uiNamespace setVariable ["ACE_player", ACE_player]; From c911fcdafcd44f557f2a6afe8484640381fc951b Mon Sep 17 00:00:00 2001 From: Thomas Kooi Date: Mon, 14 Dec 2015 14:08:50 +0100 Subject: [PATCH 054/107] Fix travis configuration Travis yml was using invalid notification configuration for slack. --- .travis.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index bc21183674..1d2a49e2e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ branches: only: - - master - - release + - master + - release language: python python: - '3.4' @@ -20,9 +20,10 @@ env: - secure: KcJQbknBOdC5lA4nFGKPXVRVIGLDXDRzC8XkHuXJCE9pIR/wbxbkvx8fHKcC6SC9eHgzneC3+o4m4+CjIbVvIwDgslRbJ8Y59i90ncONmdoRx1HUYHwuYWVZm9HJFjCsIbrEqhSyyKS+PB3WZVOLbErtNHsgS8f43PTh5Ujg7Vg= notifications: slack: - - secure: byZMNBl8PMlgjT9NA1WmhgCdGfX4b3g1kA0vEiwfm+IFNlx7BiM4J/5rp6zV/jV470xl/epAejx2tsa5SdTyFbO87NH63ILJSt5QnjUZjRuGKSutFs9WE671DtZkPRSJXHS4N6x802PRkyBz/84/lsc34FWvHvjwOuYAtOcJRFk= - - secure: V22TNaLWV+yUNWqR7c6HVvIxkRDz7Dyz9xqa43FY8iFgvNL4Q/X69h5DYHU/ILNFM00tx8OBjtPRbcjWQ+F6eY8Sje/A2axJAU+qNurAvoyiTahXUprdUUpPdkgXWuSRTZ9kALxOq5e11RC8XUietghoMcl8zPcqdrZCOOKgoEM= - on_success: never + rooms: + - secure: byZMNBl8PMlgjT9NA1WmhgCdGfX4b3g1kA0vEiwfm+IFNlx7BiM4J/5rp6zV/jV470xl/epAejx2tsa5SdTyFbO87NH63ILJSt5QnjUZjRuGKSutFs9WE671DtZkPRSJXHS4N6x802PRkyBz/84/lsc34FWvHvjwOuYAtOcJRFk= + - secure: V22TNaLWV+yUNWqR7c6HVvIxkRDz7Dyz9xqa43FY8iFgvNL4Q/X69h5DYHU/ILNFM00tx8OBjtPRbcjWQ+F6eY8Sje/A2axJAU+qNurAvoyiTahXUprdUUpPdkgXWuSRTZ9kALxOq5e11RC8XUietghoMcl8zPcqdrZCOOKgoEM= + on_success: change email: on_success: never on_failure: change From f2bcd66784a95027f46d0f84d926b904325c1a0c Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 14 Dec 2015 19:28:31 -0600 Subject: [PATCH 055/107] Toolkit also consumed on fullRepair --- addons/repair/ACE_Repair.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/repair/ACE_Repair.hpp b/addons/repair/ACE_Repair.hpp index 9aa8fe7b22..d47773cd83 100644 --- a/addons/repair/ACE_Repair.hpp +++ b/addons/repair/ACE_Repair.hpp @@ -74,7 +74,7 @@ class ACE_Repair { repairingTime = 30; condition = "damage _target > 0"; callbackSuccess = QUOTE(call FUNC(doFullRepair)); - itemConsumed = 0; + itemConsumed = QGVAR(consumeItem_ToolKit); }; }; }; From ff3ddbe287d29dd1e076cae46a8649b2500bc6d6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 15 Dec 2015 12:04:03 -0600 Subject: [PATCH 056/107] Building Interact - Dummy object instead of hiding Fix #3038 InteractiMenu now checks `isObjectHidden`, So now use dummy object instead of hiding a real one --- .../functions/fnc_userActions_addHouseActions.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf index fdd7d14573..98abfdccd1 100644 --- a/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf +++ b/addons/interact_menu/functions/fnc_userActions_addHouseActions.sqf @@ -80,11 +80,10 @@ if ((vehicle ACE_player) != ACE_player) exitWith {}; // systemChat format ["Add Actions for [%1] (count %2) @ %3", _typeOfHouse, (count _memPoints), diag_tickTime]; { _helperPos = (_houseBeingScaned modelToWorld (_houseBeingScaned selectionPosition _x)) call EFUNC(common,positionToASL); - _helperObject = "Sign_Sphere25cm_F" createVehicleLocal _helperPos; + _helperObject = "ACE_LogicDummy" createVehicleLocal _helperPos; _addedHelpers pushBack _helperObject; _helperObject setVariable [QGVAR(building), _houseBeingScaned]; _helperObject setPosASL _helperPos; - _helperObject hideObject true; TRACE_3("Making New Helper",_helperObject,_x,_houseBeingScaned); { From d7fbd656875836c880e6648ea1914776aee1ea1a Mon Sep 17 00:00:00 2001 From: Fadi Date: Tue, 15 Dec 2015 18:58:57 -0600 Subject: [PATCH 057/107] Disabling ACE FCS in RHS USF Compat for M113 family --- optionals/compat_rhs_usf3/CfgVehicles.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 3c56b91aa9..da48a4cf96 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -12,7 +12,6 @@ class cfgVehicles { }; }; }; - class MBT_01_base_F: Tank_F {}; class rhsusf_m1a1tank_base: MBT_01_base_F { EGVAR(refuel,fuelCapacity) = 1909; @@ -77,8 +76,12 @@ class cfgVehicles { class APC_Tracked_02_base_F; class rhsusf_m113_tank_base : APC_Tracked_02_base_F { EGVAR(refuel,fuelCapacity) = 360; + class Turrets: Turrets { + class MainTurret: MainTurret { + ace_fcs_Enabled = 0; + }; + }; }; - class APC_Tracked_03_base_F; class RHS_M2A2_Base : APC_Tracked_03_base_F { EGVAR(refuel,fuelCapacity) = 746; From 2caabcd00af342f3cf39c76cafb427309f8b7aaa Mon Sep 17 00:00:00 2001 From: Fadi Date: Tue, 15 Dec 2015 18:59:27 -0600 Subject: [PATCH 058/107] Correcting an issue in RHS AFRF Compat with Sprut turret --- optionals/compat_rhs_afrf3/CfgVehicles.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/optionals/compat_rhs_afrf3/CfgVehicles.hpp b/optionals/compat_rhs_afrf3/CfgVehicles.hpp index 963913d74d..2e48462135 100644 --- a/optionals/compat_rhs_afrf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_afrf3/CfgVehicles.hpp @@ -104,11 +104,33 @@ class cfgVehicles { }; }; }; + }; + }; + class rhs_bmd4_vdv: rhs_a3spruttank_base { + class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + }; + }; class GPMGTurret1: NewTurret { ace_fcs_Enabled = 0; }; }; }; + class rhs_bmd4m_vdv: rhs_bmd4_vdv { + class Turrets: Turrets { + class MainTurret: MainTurret { + class Turrets: Turrets { + class CommanderOptics: CommanderOptics {}; + }; + }; + class GPMGTurret1: GPMGTurret1 {}; + class GPMGTurret2: GPMGTurret1 { + ace_fcs_Enabled = 0; + }; + }; + }; class rhs_a3t72tank_base: Tank_F { EGVAR(refuel,fuelCapacity) = 1200; class Turrets: Turrets { From 360bdcb50e3060e43d6610372100bbc368d1e69a Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 16 Dec 2015 11:28:43 -0600 Subject: [PATCH 059/107] Optics - Don't modify camera for ThreeDen Editor Fix broken ThreeDen Camera when returning to editor from preview. PIP will still work in preview. Will have to take a look at 1.56 RC to see if command exists and eventually cleanup. --- addons/optics/XEH_postInit.sqf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index 6214178ac9..6b02a678a8 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -6,6 +6,12 @@ if (!hasInterface) exitWith {}; GVAR(camera) = objNull; 0 = 0 spawn { + // Workarround for the ThreeDen Editor Camera + //ToDo: verify if command will exist in 1.56 release + if (((productVersion select 2) >= 155) && {is3DEN}) exitWith { + ACE_LOGINFO("Eden detected: disabling Optics PIP Camera"); + }; + waituntil {!isNull ACE_player}; waituntil {sleep 1; {_x != GVAR(camera)} count allMissionObjects "camera" == 0 && {isNull curatorCamera}}; From 43a9865fa28842c36fb1e3ec8bc926c2579e5fa6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 16 Dec 2015 12:10:53 -0600 Subject: [PATCH 060/107] Use isNil for better future compatiblity --- addons/optics/XEH_postInit.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf index 6b02a678a8..c00577e61e 100644 --- a/addons/optics/XEH_postInit.sqf +++ b/addons/optics/XEH_postInit.sqf @@ -7,8 +7,7 @@ GVAR(camera) = objNull; 0 = 0 spawn { // Workarround for the ThreeDen Editor Camera - //ToDo: verify if command will exist in 1.56 release - if (((productVersion select 2) >= 155) && {is3DEN}) exitWith { + if ((!isNil {is3DEN}) && {is3DEN}) exitWith { ACE_LOGINFO("Eden detected: disabling Optics PIP Camera"); }; From 27d683f8e285f5a71636553ecc71411fa28796c5 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 17 Dec 2015 16:27:04 -0600 Subject: [PATCH 061/107] RHS Compat - Add reqAddons, Fix M113 Adds requiredAddons for used units Fixes class rhsusf_m113tank_base --- optionals/compat_rhs_afrf3/config.cpp | 2 +- optionals/compat_rhs_usf3/CfgVehicles.hpp | 2 +- optionals/compat_rhs_usf3/config.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index aa9d6bed95..4840f8da82 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops"}; + requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; author[]={"Ruthberg", "GitHawk"}; VERSION_CONFIG; }; diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 6f31ce399c..ef8babc71c 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -88,7 +88,7 @@ class cfgVehicles { }; class APC_Tracked_02_base_F; - class rhsusf_m113_tank_base : APC_Tracked_02_base_F { + class rhsusf_m113tank_base: APC_Tracked_02_base_F { EGVAR(refuel,fuelCapacity) = 360; }; diff --git a/optionals/compat_rhs_usf3/config.cpp b/optionals/compat_rhs_usf3/config.cpp index 59517ed64f..ce847e969e 100644 --- a/optionals/compat_rhs_usf3/config.cpp +++ b/optionals/compat_rhs_usf3/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops"}; + requiredAddons[] = {"rhsusf_c_weapons", "rhsusf_c_troops", "rhsusf_c_m1a1", "rhsusf_c_m1a2", "RHS_US_A2_AirImport", "rhsusf_c_m109", "rhsusf_c_hmmwv", "rhsusf_c_rg33", "rhsusf_c_fmtv", "rhsusf_c_m113", "RHS_US_A2Port_Armor"}; author[]={"Ruthberg", "GitHawk"}; VERSION_CONFIG; }; From e033c56cfc1267c80ece238ab0796f3379957999 Mon Sep 17 00:00:00 2001 From: Ken Date: Thu, 17 Dec 2015 17:04:30 -0600 Subject: [PATCH 062/107] RHS weapons and Frag update The RHS M249 and M240 now have the overheating and change barrel, plus the M4 and M16 branch should have overheating applied to them. The ammo class should have all of the hand grenade fixes in there. --- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 62 ++++++++++++++++++++++++ optionals/compat_rhs_usf3/CfgAmmo.hpp | 45 +++++++++++++++++ optionals/compat_rhs_usf3/CfgWeapons.hpp | 27 +++++++++-- 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 41c0f333ce..d38446a290 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -126,4 +126,66 @@ class CfgAmmo class rhs_ammo_127x108mm_x5: SubmunitionBase { ACE_rearm_caliber=13; }; + + class GrenadeHand; + class rhs_ammo_rgd5: GrenadeHand { + ace_frag_enabled = 1; + ace_frag_metal = 200; + ace_frag_charge = 110; + ace_frag_gurney_c = 2440; + ace_frag_gurney_k = "3/5"; + ace_frag_classes[] = {"ACE_frag_small_HD"}; + ace_frag_skip = 0; + ace_frag_force = 1; + }; + class rhs_ammo_rgn_base: rhs_ammo_rgd5 { + ace_frag_enabled = 1; + ace_frag_metal = 193; + ace_frag_charge = 97; + ace_frag_gurney_c = 2800; + ace_frag_gurney_k = "3/5"; + ace_frag_classes[] = {"ACE_frag_tiny_HD"}; + ace_frag_skip = 0; + ace_frag_force = 1; + }; + class rhs_ammo_rgn: rhs_ammo_rgn_base { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_rgn_sub: rhs_ammo_rgn_base {}; + class rhs_ammo_rgn_exp: rhs_ammo_rgn_base {}; + class rhs_ammo_fakel: GrenadeHand { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_fakels: rhs_ammo_fakel {}; + class rhs_ammo_zarya2: rhs_ammo_fakels {}; + class rhs_ammo_plamyam: rhs_ammo_fakels {}; + + class RocketBase; + class R_PG32V_F: RocketBase {}; + class rhs_rpg26_rocket: R_PG32V_F {}; + class rhs_rpg7v2_pg7vl: rhs_rpg26_rocket {}; + class rhs_rpg7v2_og7v: rhs_rpg7v2_pg7vl { + ace_frag_enabled = 1; + ace_frag_metal = 400; + ace_frag_charge = 210; + ace_frag_gurney_c = 2800; + ace_frag_gurney_k = "3/5"; + ace_frag_classes[] = {"ACE_frag_medium_HD"}; + ace_frag_skip = 0; + ace_frag_force = 1; + }; + class rhs_rpg7v2_tbg7v: rhs_rpg7v2_pg7vl { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_rshg2_rocket: rhs_rpg7v2_tbg7v { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; }; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 0dde3eaf62..b859a520d2 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -93,6 +93,7 @@ class CfgAmmo irLock = 0; laserLock = 0; airLock = 0; + // Begin ACE guidance Configs class ace_missileguidance { @@ -122,4 +123,48 @@ class CfgAmmo attackProfiles[] = { "JAV_TOP", "JAV_DIR" }; }; }; + + class GrenadeHand; + class rhs_ammo_mk3a2: GrenadeHand { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_m84: GrenadeHand { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_m7a3_cs: GrenadeHand { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_m69: GrenadeHand { + ace_frag_enabled = 0; + ace_frag_skip = 1; + ace_frag_force = 0; + }; + class rhs_ammo_m67: GrenadeHand { + ace_frag_enabled = 1; + ace_frag_metal = 213; + ace_frag_charge = 185; + ace_frag_gurney_c = 2700; + ace_frag_gurney_k = "3/5"; + ace_frag_classes[] = {"ACE_frag_medium_HD"}; + ace_frag_skip = 0; + ace_frag_force = 1; + }; + class RocketBase; + class rhs_ammo_M136_rocket: RocketBase {}; + class rhs_ammo_M136_hedp_rocket: rhs_ammo_M136_rocket { + ace_frag_enabled = 1; + ace_frag_metal = 330; + ace_frag_charge = 280; + ace_frag_gurney_c = 2800; + ace_frag_gurney_k = "3/5"; + ace_frag_classes[] = {"ACE_frag_medium_HD"}; + ace_frag_skip = 0; + ace_frag_force = 1; + }; }; diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index e059a4f71c..54bba9a0cd 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -15,6 +15,9 @@ class CfgWeapons class rhs_weap_m4_Base: arifle_MX_Base_F { ACE_barrelTwist=177.8; ACE_barrelLength=368.3; + ACE_Overheating_Dispersion[] = {0, 0.001, 0.002, 0.004}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; class M203_GL : UGL_F { magazines[] = { "rhs_mag_M441_HE", @@ -112,15 +115,31 @@ class CfgWeapons class rhs_weap_mk18: rhs_weap_m4a1 { ACE_barrelTwist=177.8; ACE_barrelLength=261.62; + ACE_Overheating_Dispersion[] = {0, 0.001, 0.002, 0.004}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; }; class rhs_weap_m16a4: rhs_weap_m4_Base { - ACE_barrelTwist=177.8; - ACE_barrelLength=508.0; + ACE_barrelTwist = 177.8; + ACE_barrelLength = 508.0; }; + class rhs_weap_lmg_minimipara; + class rhs_weap_lmg_minimi_railed : rhs_weap_lmg_minimipara { + ACE_barrelLength = 465.0; + ACE_barrelTwist = 177.8; + ACE_Overheating_allowSwapBarrel = 1; + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.003}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; + }; class rhs_weap_m240_base; class rhs_weap_m240B: rhs_weap_m240_base { - ACE_barrelTwist=304.8; - ACE_barrelLength=629.92; + ACE_barrelTwist = 304.8; + ACE_barrelLength = 629.92; + ACE_Overheating_allowSwapBarrel = 1; + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.003}; + ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; + ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; }; class rhs_weap_m14ebrri: srifle_EBR_F { ACE_barrelTwist=304.8; From e3ecc647719cb6ca807dd2e4c9bc8c28b082966d Mon Sep 17 00:00:00 2001 From: commy2 Date: Fri, 18 Dec 2015 13:53:25 +0100 Subject: [PATCH 063/107] remove undefined macro --- addons/laser_selfdesignate/XEH_post_init.sqf | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/laser_selfdesignate/XEH_post_init.sqf b/addons/laser_selfdesignate/XEH_post_init.sqf index 6904ee6c47..dc30361926 100644 --- a/addons/laser_selfdesignate/XEH_post_init.sqf +++ b/addons/laser_selfdesignate/XEH_post_init.sqf @@ -1,3 +1,2 @@ #include "script_component.hpp" -NO_DEDICATED; From fce245ad76ff3ced26d8b3401d48f5dc26b7e807 Mon Sep 17 00:00:00 2001 From: VKing Date: Fri, 18 Dec 2015 16:23:07 +0100 Subject: [PATCH 064/107] Remove SMAW Spotting Rifle backblast --- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 32 +++++++-------------- optionals/compat_rhs_afrf3/CfgMagazines.hpp | 10 ++++++- optionals/compat_rhs_afrf3/config.cpp | 2 +- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index 41c0f333ce..f919728619 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -1,10 +1,8 @@ -class CfgAmmo -{ +class CfgAmmo { class BulletBase; class B_556x45_Ball; - class rhs_B_545x39_Ball: B_556x45_Ball - { + class rhs_B_545x39_Ball: B_556x45_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -12,12 +10,11 @@ class CfgAmmo ACE_ballisticCoefficients[]={0.168}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ASM"; - ACE_dragModel=7; + ACE_dragModel=7;- ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball - { + class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -30,8 +27,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_762x51_Ball; - class rhs_B_762x54_Ball: B_762x51_Ball - { + class rhs_B_762x54_Ball: B_762x51_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.8496; @@ -43,8 +39,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball - { + class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -56,8 +51,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball - { + class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.8496; @@ -69,8 +63,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x39_Ball: B_762x51_Ball - { + class rhs_B_762x39_Ball: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -82,8 +75,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class rhs_B_762x39_Tracer: rhs_B_762x39_Ball - { + class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -96,8 +88,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball; - class rhs_B_9x19_7N21: B_9x21_Ball - { + class rhs_B_9x19_7N21: B_9x21_Ball { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=5.19696; @@ -109,8 +100,7 @@ class CfgAmmo ACE_muzzleVelocities[]={445, 460, 480}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class rhs_B_9x18_57N181S: B_9x21_Ball - { + class rhs_B_9x18_57N181S: B_9x21_Ball { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp index 92444a380b..a7b3832e54 100644 --- a/optionals/compat_rhs_afrf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp @@ -14,4 +14,12 @@ class cfgMagazines { class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 { ace_isbelt = 0; }; -}; \ No newline at end of file + + class CA_LauncherMagazine; + class rhs_mag_smaw_SR: CA_LauncherMagazine { + EGVAR(overpressure,priority) = 99; + EGVAR(overpressure,angle) = 0; + EGVAR(overpressure,range) = 0; + EGVAR(overpressure,damage) = 0; + }; +}; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index 4840f8da82..a41d67db48 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; + requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva","rhsusf_c_weapons"}; author[]={"Ruthberg", "GitHawk"}; VERSION_CONFIG; }; From d36988852d0719583f92b72a3dc99e548cbe2a6f Mon Sep 17 00:00:00 2001 From: VKing Date: Fri, 18 Dec 2015 16:31:01 +0100 Subject: [PATCH 065/107] Oops bollocks --- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 2 +- optionals/compat_rhs_afrf3/CfgMagazines.hpp | 8 -------- optionals/compat_rhs_afrf3/config.cpp | 2 +- optionals/compat_rhs_usf3/CfgMagazines.hpp | 10 +++++++++- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index f919728619..9dcdeaec93 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -10,7 +10,7 @@ class CfgAmmo { ACE_ballisticCoefficients[]={0.168}; ACE_velocityBoundaries[]={}; ACE_standardAtmosphere="ASM"; - ACE_dragModel=7;- + ACE_dragModel=7; ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; diff --git a/optionals/compat_rhs_afrf3/CfgMagazines.hpp b/optionals/compat_rhs_afrf3/CfgMagazines.hpp index a7b3832e54..fcf9841019 100644 --- a/optionals/compat_rhs_afrf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_afrf3/CfgMagazines.hpp @@ -14,12 +14,4 @@ class cfgMagazines { class rhs_mag_127x108mm_1470 : rhs_mag_127x108mm_50 { ace_isbelt = 0; }; - - class CA_LauncherMagazine; - class rhs_mag_smaw_SR: CA_LauncherMagazine { - EGVAR(overpressure,priority) = 99; - EGVAR(overpressure,angle) = 0; - EGVAR(overpressure,range) = 0; - EGVAR(overpressure,damage) = 0; - }; }; diff --git a/optionals/compat_rhs_afrf3/config.cpp b/optionals/compat_rhs_afrf3/config.cpp index a41d67db48..4840f8da82 100644 --- a/optionals/compat_rhs_afrf3/config.cpp +++ b/optionals/compat_rhs_afrf3/config.cpp @@ -5,7 +5,7 @@ class CfgPatches { units[] = {}; weapons[] = {}; requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva","rhsusf_c_weapons"}; + requiredAddons[] = {"rhs_c_weapons", "rhs_c_troops", "rhs_c_bmd", "rhs_c_bmp", "rhs_c_bmp3", "rhs_c_a2port_armor", "rhs_c_btr", "rhs_c_sprut", "rhs_c_t72", "rhs_c_tanks", "rhs_c_a2port_air", "rhs_c_a2port_car", "rhs_c_cars", "rhs_c_2s3", "rhs_c_rva"}; author[]={"Ruthberg", "GitHawk"}; VERSION_CONFIG; }; diff --git a/optionals/compat_rhs_usf3/CfgMagazines.hpp b/optionals/compat_rhs_usf3/CfgMagazines.hpp index e067d1f293..2818478d83 100644 --- a/optionals/compat_rhs_usf3/CfgMagazines.hpp +++ b/optionals/compat_rhs_usf3/CfgMagazines.hpp @@ -19,4 +19,12 @@ class cfgMagazines { class RHS_48Rnd_40mm_MK19: VehicleMagazine { ace_isbelt = 1; }; -}; \ No newline at end of file + + class CA_LauncherMagazine; + class rhs_mag_smaw_SR: CA_LauncherMagazine { + EGVAR(overpressure,priority) = 99; + EGVAR(overpressure,angle) = 0; + EGVAR(overpressure,range) = 0; + EGVAR(overpressure,damage) = 0; + }; +}; From db7074b6cf662dc245c938e6dbb4efbbc9a2f1c9 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Fri, 18 Dec 2015 14:45:20 -0200 Subject: [PATCH 066/107] Removed duplicated German entry --- addons/common/stringtable.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml index 6d935f27a5..111300e87c 100644 --- a/addons/common/stringtable.xml +++ b/addons/common/stringtable.xml @@ -705,7 +705,6 @@ Nicht erzwingen Nie wymuszaj No forzar - Nicht erzwingen Nevynucovat Não forçar Не обязывать From c53a0541a46e61df271cc54c17f7b8ceb958b4ab Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 18 Dec 2015 11:08:10 -0600 Subject: [PATCH 067/107] Add support for non local Zeus RC in common-isPlayer --- addons/common/XEH_postInit.sqf | 17 +++++++++++++++++ addons/common/functions/fnc_isPlayer.sqf | 7 +++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ce75ad5187..ac12fdc894 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -57,6 +57,23 @@ // Eventhandlers ////////////////////////////////////////////////// +//Add a fix for BIS's zeus remoteControl module not reseting variables on DC when RC a unit +//This variable is used for isPlayer checks +if (isServer) then { + addMissionEventHandler ["HandleDisconnect", { + params ["_dcPlayer"]; + private _zeusLogic = getAssignedCuratorLogic _dcPlayer; + if ((!isNil "_zeusLogic") && {!isNull _zeusLogic}) then { + { + if ((_x getvariable ["bis_fnc_moduleRemoteControl_owner", objnull]) isEqualTo _dcPlayer) exitWith { + ACE_LOGINFO_3("[%1] DC - Was Zeus [%2] while controlling unit [%3] - manually clearing `bis_fnc_moduleRemoteControl_owner`", [_x] call FUNC(getName), _dcPlayer, _x); + _x setVariable ["bis_fnc_moduleRemoteControl_owner", nil, true]; + }; + } count (curatorEditableObjects _zeusLogic); + }; + }]; +}; + // Listens for global "SettingChanged" events, to update the force status locally ["SettingChanged", { params ["_name", "_value", "_force"]; diff --git a/addons/common/functions/fnc_isPlayer.sqf b/addons/common/functions/fnc_isPlayer.sqf index 8bea7e9771..fe265bd925 100644 --- a/addons/common/functions/fnc_isPlayer.sqf +++ b/addons/common/functions/fnc_isPlayer.sqf @@ -1,7 +1,7 @@ /* * Author: bux578, commy2, akalegman * Checks if a unit is a player / curator controlled unit. - * Currently returns false for non-local remote controlled zeus units. (Remotes from another zeus machine) + * This now includes both local and non-local remote controlled zeus units. (Remotes from another zeus machine) * * Arguments: * 0: unit to be checked @@ -10,10 +10,13 @@ * Return Value: * Is unit a player? * + * Example: + * [cursorTarget, false] call ace_common_fnc_isPlayer; + * * Public: Yes */ #include "script_component.hpp" params ["_unit", ["_excludeRemoteControlled", false]]; -isPlayer _unit || (!_excludeRemoteControlled && {_unit == call FUNC(player)}) // return +(isPlayer _unit) || {(!_excludeRemoteControlled) && {!isNull (_unit getVariable ["bis_fnc_moduleRemoteControl_owner", objNull])}} From ad48f51ec7e0f76247b21f38bef38d9e1ec8b355 Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Fri, 18 Dec 2015 15:14:19 -0200 Subject: [PATCH 068/107] Added PT-BR translations All remaining translations of gestures, hearing, interact_menu, interaction, nightvision, rearm, refuel, viewdistance were done! --- addons/gestures/stringtable.xml | 7 +++++++ addons/hearing/stringtable.xml | 2 ++ addons/interact_menu/stringtable.xml | 2 ++ addons/interaction/stringtable.xml | 5 +++++ addons/nightvision/stringtable.xml | 6 +++++- addons/rearm/stringtable.xml | 29 ++++++++++++++++++++++++++ addons/refuel/stringtable.xml | 31 ++++++++++++++++++++++++++++ addons/viewdistance/stringtable.xml | 5 +++-- 8 files changed, 84 insertions(+), 3 deletions(-) diff --git a/addons/gestures/stringtable.xml b/addons/gestures/stringtable.xml index cc9b776cd1..c1e63bfce4 100644 --- a/addons/gestures/stringtable.xml +++ b/addons/gestures/stringtable.xml @@ -115,6 +115,7 @@ Stop Stop Stop + Parar @@ -135,6 +136,7 @@ Regroupement Sammeln Zbiórka + Reagrupar @@ -142,12 +144,14 @@ En avant Vorwärts Bewegen Naprzód + Mover em frente Engage Engager Atak + Engajar @@ -155,6 +159,7 @@ Pointer Zeigen Wskaż + Ponta @@ -162,6 +167,7 @@ Tenir Anhalten Wstrzymać + Esperar @@ -169,6 +175,7 @@ Attention Achtung Uwaga + Aviso Hi diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml index 14517b54ce..c3b014e7c7 100644 --- a/addons/hearing/stringtable.xml +++ b/addons/hearing/stringtable.xml @@ -172,10 +172,12 @@ Add earplugs to units Dodaj stopery dla jednostek + Adiciona protetores de ouvido as unidades Add the `ACE_EarPlugs` item to all units that have loud weapons. Can disable if using custom loadouts. Dodaje `ACE_EarPlugs` - stopery - do wszystkich jednostek, które posiadają głośną broń. Można wyłaczyć w przypadku korzystania z niestandardowych loadoutów. + Adicionar o item `ACE_EarPlugs` a todas as unidades que tenham armas barulhentas. Pode ser desabilitado com carregamentos customizados. \ No newline at end of file diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 424426f653..16f00609ca 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -302,10 +302,12 @@ Interaction Animation Speed Szybkość animacji interakcji + Velocidade da animação de interação Makes menu animations faster and decreases the time needed to hover to show sub actions Przyśpiesza animacje menu interakcji oraz czas wymagany do pokazania podmenu + Faz com que as animações do menu de interação sejam mais rápidas, dimiuindo a necessidade de esperar para mostrar as ações \ No newline at end of file diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml index b84a987a9c..5f658264cf 100644 --- a/addons/interaction/stringtable.xml +++ b/addons/interaction/stringtable.xml @@ -695,26 +695,31 @@ Pass magazine Magazin geben Podaj magazynek + Passar carregador Primary magazine Gewehrmagazin Magazynek karabinowy + Carregador primário Pistol magazine Pistolenmagazin Magazynek pistoletowy + Carregador da pistola %1 passed you a %2 magazine. %1 hat dir ein %2 Magazin gegeben. %1 podał Ci magazynek %2. + %1 passou a você um carregador %2. Show "pass magazine" interaction Zeige "Magazine geben" Interaktion Pokaż interakcję "podaj magazynek" + Mostrar a interação "Passar carregador" \ No newline at end of file diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml index b6e35147f9..dab72ee025 100644 --- a/addons/nightvision/stringtable.xml +++ b/addons/nightvision/stringtable.xml @@ -136,18 +136,22 @@ Nightvision Nachtsicht + Visão Noturna Settings for night vision. Einstellungen für Nachtsichtgeräte. + Ajustes para visão noturna. Disable NVGs in scope Deakt. NVGs mit Visier + Desabilitar visão noturna nas lunetas Blocks the usage of night vision goggles whilst aiming down the sight. Blockiert das Benutzen von Nachtsichtbrillen beim Benutzen des Visiers. + Bloqueia o uso de visão noturna ao utilizar a mira. - + \ No newline at end of file diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index da36dc4410..160ecf0b33 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -5,85 +5,102 @@ Rearm Settings Aufmunitioniereinstellungen Ustawienia przezbrajania + Ajustes de rearme This module allows you to tweak rearm system settings. Ten moduł pozwala dostosować ustawienia przezbrajania. + Este módulo permite que você ajuste o sistema de rearme. Rearm Amount Aufmunitioniermenge Szybkość przezbrajania + Quantidade de rearme How fast should a vehicle be rearmed? Wie schnell soll ein Fahrzeug aufmunitioniert werden? Jak szybko pojazd zostanie przezbrojony? + Quão rápido o veículo deve ser rearmado? Entire Vehicle Gesamtes Fahrzeug Cały pojazd + Todo o veículo Entire Magazine Gesamtes Magazin Cały magazynek + Todo o carregador Amount based on caliber Kaliberbasierte Anzahl Ilość zależna od kalibru + Quantidade baseada no calibre Rearm Aufmunitionieren Przezbrój + Rearmar Rearming %1 with %2 ... Munitioniere %1 auf mit %2 ... Przezbrajanie %1 przy pomocy %2 ... + Rearmando %1 com %2 ... Rearming %1 ... Munitioniere %1 auf ... Przezbrajanie %1 ... + Rearmando %1 ... Taking %1 for %2 ... Nehme %1 für %2 ... Pobieranie %1 dla %2 ... + Pegando %1 para %2 ... Take ammo Munition nehmen Pobierz amunicję + Tomar munição Pick up ammo Munition aufnehmen Podnieś amunicję + Pegar munição Store ammo Munition verstauen Przechowaj amunicję + Guardar munição Storing %1 in %2 ... Verstaue %1 in %2 ... Przechowywanie %1 w %2 ... + Guardando %1 em %2 ... Picking up ammo ... Nehme Munition ... Podnoszenie amunicji ... + Pegando munição ... Rearmed %1 rounds of %2 on %3 %1 Schuss %2 an %3 aufmunitioniert Przezbrojono %1 pocisków %2 na %3 + Rearmando %1 cartuchos de %2 em %3 Smoke Screen @@ -111,61 +128,73 @@ 30mm HEI 30mm HEI 30mm HEI + 30mm HEI 30mm HEI-T 30mm HEI-T 30mm HEI-T + 30mm HEI-T AIM-9 Sidewinder AIM-9 Sidewinder AIM-9 Sidewinder + AIM-9 Sidewinder Wympel R-73 Wympel R-73 Wympel R-73 + Wympel R-73 AGM-65 Maverick AGM-65 Maverick AGM-65 Maverick + AGM-65 Maverick Kh-25MTP Kh-25MTP Ch-25MTP + Ch-25MTP Hydra 70 HE Hydra 70 HE Hydra 70 HE + Hydra 70 HE S-8 HE S-8 HE S-8 HE + S-8 HE Hydra 70 AP Hydra 70 AP Hydra 70 AP + Hydra 70 AP S-8 AP S-8 AP S-8 AP + S-8 AP GBU-12 GBU-12 GBU-12 + GBU-12 FAB-250M-54 FAB-250M-54 FAB-250M-54 + FAB-250M-54 \ No newline at end of file diff --git a/addons/refuel/stringtable.xml b/addons/refuel/stringtable.xml index 908fad6d91..cef904ef39 100644 --- a/addons/refuel/stringtable.xml +++ b/addons/refuel/stringtable.xml @@ -5,156 +5,187 @@ Refuel Settings Betankungseinst. Ustawienia tankowania + Ajustes de reabastecimento Flow Rate Fließrate Szybkość przepływu + Velocidade da vazão How fast should a vehicle be refueled? Wie schnell soll ein Fahrzeug aufgetankt sein? Jak szybko pojazd powinien zostać zatankowany? + Quão rápido deve ser o veículo reabastecido? Refuel Betankung Zatankuj + Reabastecimento Take fuel nozzle Zapfpistole nehmen Weź nalewak + Pegar o bocal de combustível Taking fuel nozzle ... Nehme Zapfpistole ... Pobieranie nalewaka ... + Pegando o bocal de combustível... Connect fuel nozzle Zapfpistole anschließen Podłącz nalewak + Conectar o bocal de combustível Connecting fuel nozzle ... Zapfpistole anschließen ... Podłączanie nalewaka ... + Conectando o bocal de combustível... Disconnect fuel nozzle Zapfpistole entfernen Odepnij nalewak + Desconectar o bocal de combustível Connect Anschließen Podłącz + Conectar Check remaining fuel Verbleibenden Kraftstoff überprüfen Sprawdź ilość paliwa + Verificar combustível restante Checking remaining fuel ... Überprüfe verbleibenden Kraftstoff ... Sprawdzanie ilości paliwa ... + Verificando combustível restante... There are %1 liters left. Es sind noch %1 Liter übrig. Zostało %1 litrów. + Há %1 litros restantes. There is no fuel left. Es ist kein Kraftstoff übrig. W zbiorniku nie ma paliwa. + Não há combustível Cancel Abbrechen Anuluj + Cancelar Failed Gescheitert Porażka + Falhou Stop fueling Betankung stoppen Zatrzymaj tankowanie + Parar reabastecimento Stopping fueling ... Stoppe Betankung ... Zatrzymywanie tankowania ... + Parando reabastecimento... Start fueling Betankung beginnen Rozpocznij tankowanie + Começar reabastecimento Starting fueling ... Beginne Betankung ... Rozpoczynanie tankowania ... + Começando reabastecimento... %1 Liters fueled %1 Liters getankt Zatankowano %1 litrów + %1 litros abastecidos The fuel source is empty. Die Treibstoffquelle ist leer. Źródło paliwa jest puste. + A fonte de combustível está vazia. Maximum fuel hose length reached. Maximale Schlauchlänge erreicht. Osiągnięto maksymalną długość przewodu paliwowego. + Distância máxima da mangueira de combustível alcançada. Fueling completed Betankung abgeschlossen Tankowanie ukończone + Reabastecimento completo Fueling stopped Betankung angehalten Tankowanie zatrzymane + Reabastecimento parado Fueling started Betankung begonnen Tankowanie rozpoczęte + Reabastecimento iniciado Return fuel nozzle Zapfpistole zurückstecken Zwróć nalewak + Retornar bocal de combustível Returning fuel nozzle ... Stecke Zapfpistole zurück ... Zwracanie nalewaka ... + Retornando bocal de combustível... Check fuel counter Tankuhr ansehen Sprawdź wskaźnik paliwa + Verificar contador de combustível Checking fuel counter ... Betrachte Tankuhr ... Sprawdzanie wskaźnika paliwa ... + Verificando contador de combustível... %1 liters have been fueled. %1 Liter wurden getankt. %1 litrów zostało zatankowane. + %1 litros foram abastecidos. \ No newline at end of file diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml index 9d92c58332..0513fea2f9 100644 --- a/addons/viewdistance/stringtable.xml +++ b/addons/viewdistance/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -234,6 +234,7 @@ FoV Based + Baseado em FoV View Distance: @@ -280,4 +281,4 @@ Видео настройки - + \ No newline at end of file From 74aec459212cc50047cd92ad42df3a21f6292fb1 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 19 Dec 2015 20:50:57 -0600 Subject: [PATCH 069/107] Fix medical menu not closing on range, litter dir - Medical Menu didn't close when target moved out of range - Litter was always created in the same direction --- addons/medical/functions/fnc_handleCreateLitter.sqf | 2 +- addons/medical_menu/functions/fnc_onMenuOpen.sqf | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf index 31e65218c2..f4d22e17b5 100644 --- a/addons/medical/functions/fnc_handleCreateLitter.sqf +++ b/addons/medical/functions/fnc_handleCreateLitter.sqf @@ -16,7 +16,7 @@ if(!hasInterface) exitWith { false }; -params ["_litterClass", "_position", "_unit"]; +params ["_litterClass", "_position", "_direction"]; private["_litterObject", "_maxLitterCount"]; //IGNORE_PRIVATE_WARNING(_values); diff --git a/addons/medical_menu/functions/fnc_onMenuOpen.sqf b/addons/medical_menu/functions/fnc_onMenuOpen.sqf index 2b47312453..b2a6970a78 100644 --- a/addons/medical_menu/functions/fnc_onMenuOpen.sqf +++ b/addons/medical_menu/functions/fnc_onMenuOpen.sqf @@ -77,11 +77,11 @@ GVAR(MenuPFHID) = [{ [GVAR(LatestDisplayOptionMenu)] call FUNC(handleUI_DisplayOptions); //Check that it's valid to stay open: - if !(([ACE_player, _target, ["isNotInside"]] call EFUNC(common,canInteractWith)) && {[ACE_player, _target] call FUNC(canOpenMenu)}) then { + if !(([ACE_player, GVAR(INTERACTION_TARGET), ["isNotInside"]] call EFUNC(common,canInteractWith)) && {[ACE_player, GVAR(INTERACTION_TARGET)] call FUNC(canOpenMenu)}) then { closeDialog 314412; //If we failed because of distance check, show UI message: if ((ACE_player distance GVAR(INTERACTION_TARGET)) > GVAR(maxRange)) then { - ["displayTextStructured", [ACE_player], [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 1.75, ACE_player]] call EFUNC(common,targetEvent); + ["displayTextStructured", [[ELSTRING(medical,DistanceToFar), [GVAR(INTERACTION_TARGET)] call EFUNC(common,getName)], 2, ACE_player]] call EFUNC(common,localEvent); }; }; From 9b0641c06f433fdf2a9422933ae01b4442424da6 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 19 Dec 2015 21:17:36 -0600 Subject: [PATCH 070/107] Add nil return for count --- addons/common/XEH_postInit.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ac12fdc894..498db54e43 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -69,6 +69,7 @@ if (isServer) then { ACE_LOGINFO_3("[%1] DC - Was Zeus [%2] while controlling unit [%3] - manually clearing `bis_fnc_moduleRemoteControl_owner`", [_x] call FUNC(getName), _dcPlayer, _x); _x setVariable ["bis_fnc_moduleRemoteControl_owner", nil, true]; }; + nil } count (curatorEditableObjects _zeusLogic); }; }]; From 683f45682ac069c8654468c8d99ac8cc65980dff Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 20 Dec 2015 02:16:29 -0600 Subject: [PATCH 071/107] Fix Eotvos effect --- ace_advanced_ballistics.dll | Bin 263168 -> 263680 bytes extensions/CMakeLists.txt | 4 ++-- .../AdvancedBallistics.cpp | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll index 41e053399131fada95cfd1fb67a6052b72508c16..a35dcbd2dae91c71c5a71193678e990f0bf6ffb7 100644 GIT binary patch delta 60323 zcmb5X3qX`b_XoUZxh*$$Q9uw7R8&+@6fbxUOB79VNd;B~F)yv8Mg?l7f*~fYThx<{ zl^UkK(VavCO%ntK3lqB-CK#I95LRfWRMvjKd7j;MvG@Id-)HSUGiQEt=FFKhw=?rB zd7E{4TXaR^NcY0{`*L?`+@AYx>C$G~XT|T^nvWsA;`djZ=g803nk{(l8m1;f73f}20Z48CNV-VrlqXG8Cyal1$;#8`*!P(1zQmNd?_4OB>2hw-aAm;=+EoD3R4!-6}s{ADZ_ynsAhV-=R*`}+ec(0f*lRx#9 z_BzLsPHJ=BO)BYmml?W+pE~JGv%O58C7W_I8(K@HUtAW4tZ)H`n&5QP<+SR0ZH^22|iMm>*JcwbShP*%IGWohrIhFvK#Qa$Zc&3zxT#d8 z_?rC6u>5sbb-ULh_v68)oJMnequx}mML z)h*PjROa~W2lmLt&elo>&0@_jXgImphCP`gl=w+$4ONh7reHEI)ITKap zPfORj3>~rfBbkyvz5!aX zq1N#ax2aV1wtp~*{Hp=iwK|uuO0_N}|ElJ?*2g)VpEr=IX?(+BwXQihoZpm2b?ZfX z$__}r{U5;*72_A8~#rJMOF(+Q-&q;6i4xmq@df(m;4DKtmq{;8F zQGz9<|~18tf7Ef2zwBVLpB zY)<6-hBVIaL7FN(@7Ft`-%CP>L%?+wLQsSd=}0#rU3%NMx7zfobkeuij4#6fzY7!b zg#NK*$xfKdw7y!0ZZ>EmLmI_j*F_IDpav1M)D7ZU|bNr8UE%N`EQR@3RSrl5o5 z=Ks0K<|TbUq*vLeAzf+Y9%x^0j_0-U{1Sp_r{nQgNiVk!|E)$=8d|OfX=pTKF?y?> zr%A4%8%K$(z!xSq2{=ZHCjIgF7UC0-%M{;%rmuAs`Gl=|$C(o^=`A^z#26Fm?`}jl zi8-0hw@WRd{e1-|nZ;yhJ+H4uKXo%oL1D2yYzd}#O@1ZP)*(&i+aN6u>+N%Q@7{ z)2d6y<8M>#l+sv`3T|fiH$C7Cij(xh;O}0QBz!1QzVuz+DD~_(X@`4vDXd>N8Xyhtcb!V5{{8Rw(?H^C+rT3< zm1!}SN^kX_sxwb?t|g%eJvSagWu#(Pf9YobHZn;UBjS2Y+YeDEI}fU@>Tog-KPKv% zoML&xnGco54MK7S+ZVDab16 zjX_VzQ>r=shMq5x`bUORq%A_mG3F=s@ zZjdS?SJFe$sHkCq3XI!fmmWkzsRicgs7b)o0wcH6y&bl8^0{HhbRC>Uu~Povg;t{& zbPa_FMZ%DTHFWfZiq{X9t-)0`1`CW~hRqlPrKv+!62uvDKgI;F=s~2BVxx!SdwKL= z@|Ctnhah|~dKkWcj_#L>E&zL0Y+uiNmkEn^z8SBfY|l*JWPa;exeJ(%r;Ba_OX!Th zzSj}&mCS4J#tT-+Q|me%HU*xVWWL)0(?#x!c2kpzhYo@84MV464htE!i@0=T*k<+R zgVNNPk(itEVgm8~YRq(6Dg798zWa}|yy)b2&9P0x)71GxrJr>H?qX^^?yBN$W%EX) zljn3ytZlu`_o)x+rDG$9Ql@lkWR$w2N$NLh6E&2*KT4-2i}dN}enE|qqWgC0xO0`B zyH2u<&V(*A#|(syw~pC^@R+gv=#aEv>}G_28ateP%RXu( zgKkK3C-lJg$_e4>+xw*L6MB2>c@rglwxRX*zOuRr?}|*>ajBzJr!AKJngC0VSEg#F zB?n6nFG~!c11i>VNH8VpoN7TdJ8u9$k6wldA0s(U>_a1^{uBFnbj6%3uPn6Etce5Z zQz>_1IQsdXi8E+w*^P-#M17@>d-I9P*4}rG)H8ZXM@IJzis<#f>U~oBFy25}lKbS* zZfnBCQqfnsmhUH}Pxk9E74c5mvW{}?Yb5jJH*ycxq8r+Kc@uB`&fa00#Eb*u(DN=k zZ2kK=0k`+>I{v{O_?^Y$_gL2PMFMH>-~0H+JIFih#{JRCS`BR{f5t<3fy8(4{YTrmh>&zR=}k{LK30h@fADwpw5`Y#rI5W+W!UzaKdJ}3)R~uO3X){5 zBto;K+F535lxEM4RI&zR3kK?z*{5lSl%718W=ZDc(A*X*7O~=s4_Kld;<6f|U?rKT zTe%Xn*&1!cXJV0ADq{@ZMe;M%uU&qof5yA@BrF#VE_n)*L}WI^V_iD0PEb{!2yO;% zo%~D%O&5=a>O7ZdEJg*Ophm*W10>%UfBaIyfp_E75j=v)*-d7^)(NbN>oc_#{@WHG6ZIo71Mr1x{&Ud ztQWMIRvJHI;~nRiFIHfNSTT)ujNTCwAuyg+Or4Z5$A6ekkbcD0Scp_<&$ikzTL
ZjyW1cj;E}c5<8~O5mO;BDOSujJEqbRBlC%|Vv6jT;t7r* zE*NR8pgcP$&k-Y6p-rPybG1~uz&|EH)V$V8GTO7nI%Z1{nB7)P#u4eG)E%_ zOT__)Hm(p^=2|fcN2HL4dgP9>M&s;R^p05?MV4+>Otc*n=ZN6~^DFlFqMZWlm@r3- z2Hmptb1Oz?$7rN?=6U4?h{U(7i7I zk9Vz@)pm@^QCYG+p0Q$#cVrB31j!m*Xa!|RP4k0t@3F>G?Q9bqbI5HOWX0(1m{dnh zgJ{cJE=o1y?3g@9jBG|v4j_B1=XuAJBrH-T`A;@3ON{zDY#?|83mx@I<{nm=nNO1=L+;%}K zvy$%EQl4X577H_Z-ij%**RjJ96DBZ^STPB9OoU_c8X@8oD<(k3IsvGqn9Aj`BSTdAdpMdz-z~Od!W=QF0`rL#6DwmfL}8m9b=M+5%nItTS0}WEQ^@>f|gEpol3lXHEB#R?f_ zTIt*D`q<`J*VO_u#EMCfqSO4fb%LFzt;kQMYjgaDl?d98*iWK5P(xRw3N@^DR70`A zR4W*l4oRQxpSw*+|GJg5SxDbqWNUYnz6hAM^+HYULPQy`%@I&30BN!w?SNv(I%J^^ zZQ}%>*bZnBfZ;Y1ix!9=A^XZ{LV#jNxi>>@IcW%z{ICdL7>vc(iiPnRal#ks6aQYa zHo`@(gb$@4oPjW0sYt3vEK5mgLa;~)UIinufK7L)L%}fg_&v?|AD-4xVPb_TuMd$Z zbzAgML;~t6ygRqy-T8AK_Cs*x=l|ic*1y@M5jD3ZeJ|};6wr4%`1PR>u~ z?@Ff^HB7qyZR_@@EtuaU!eWEdrc-=ZJW5dPd#S5D@etyQ$K+~l{8eQywO+csI9IA! zGR)(-+43Ge?Wjg7UgGD;AO6thRhBZA4AsWilT|$IL)D89`?<*5@v& zm(*|Rc&`9#M1%+daGyyQV?THhUS2w$N~EusmIRkVU!vV2@LW0G9ABwdJk(y{JV@G> zSs#@87q(ZOx6{gQ`k&cS?j!I2Uko0R5|-8XDEZ@mFnB;3ygXWcyIjgx9;4)d5-`*sRwegKg zldOAGr7BTpd+~o>L8{o@wl(nUBJ8|3CzRBG?~r<}oHO^aZJl|&@UF#T<$-e?xuNy^ z=yGMN?8WaDaGBXDK2n73o8cOsEN86|#hc@6j5nk+E6-4+^!}>x%3k!V7_mP@|Ke}U zp)$*=r_^ZBr`9C6QGa zwYx4_Eb~Dz9T%SG2g?R-^dLA}M-)7%{^ud7wBQ%&BE7!pJ(?&@etWtP7hTV*b$%H9pnMEsW^)9Jsx1h%7MNtLmyT=>2na{~U^_CI>Yk-B z>dgg1Krj`AOL;E_Q@B+0pI%Z_p*FW3h$QauoXl3w|2ZiKOzq|Z!4{$$1p;SDKbozO zjWr^mQ2@<5IK+2=RoY-_fHm(>feFU60_BO*CAkml3Pdi9ea=DQ$$aM*!Y$=xHVd6N zWRcDkjvjm+&Ph1`E8zUE;KfZAOKS@#2Rr17X+z^w|EqFOJ?m|)+^1WtlF!8iG_qTXe3#iHeD)pXqj;UENlhQadK32e%I6`+7$(&$z{@S+AEbZIm3$371SY%OfuR@qRnMembsuo z8uCKGnAI{R-GyVlDZ?yJcnQa82iCSmUrfrD{bF`Prj4%9xXR8dPulQ;-+jukgESl& z-$~nS%Teq|6fp5{0 zVvIu9Q`^9=cLocMH}5cZ27i-p72$D!?E;`KF2r2Io}EigcpwxE|9v;w(><<7z*8U;ufBO9tt<|Hpk3@%~VABt_6 z=oYYHT!dMP%R#`((8vO;47Y~6i(QH6Jh9R@Tcf&r0|6OqAcY?LJEg5i60OIs$G-O`QM68m%UF32t~2YA-PVec`;{ga=TGV0|DDgDtr%>sSf-FvQI*a` zuz|Xi#CkbVH(gdfsP+nIZB;f@wRIJ;ii)>&v4u?gtu`Xt4fF-U_!6z}3GJpjspGX? zU4>yRfsSxkhqA>;Bt>rzceNVltnGtb6f@1+KEOv-v2LpX2|@W!(!uSKz6uB5YIKMt z+IdHjVy=|_+@6g)0*~$pSBJGpTX%%_QmUHjqLRl1`Or~rGSua?P?}NtZbz_BDe7#R zG%9+~q*0NwDkZm_J>5$b|ChN!8oV&WoA5KXZsoji^xHSm$sVM?;(D7AIE z^!e+7xr*9+mdPfB5%0~9Wr2K0;SAhfxOG@D;7~Z-do{ZB67As6UcXs0X^l{#yfYMT zpVe?8tP+Qv@g>%R6q$7K#jQsb+bzgbDttIYc}m7&zuXEroc<@c|AfzVa9Au9k|rt( z?HkNWE)mvkRa9o+pts}G0a}63C~~&o1I45Z1&O@ka{(V1fZ;4elKbYolh8=*b!{qC zohqy;*`^w81iwx}(fG#FdUHoU^c^)hOCew%Lg95Y$+Qih1S)Ad932 zclDW|2&PN8lcq*~pPL|eMSKY=@V&TW*&&y+iSt-ci z-6*?4#gLRPkJ0k9F>lML23h|;8?6Cd!D_j7sV;TO2yNza+())E{%f<~Y7i}(3&p0| zE(lmRxjF^a1GgrvD2r)?SP?ryRbrfwtpUy9V|6F!#Du2I7SNcr4qw89f!Op>S=tCB z8@yEq#mJ<{mjnbpLb-DjbS)youpy`epz|Q6fu#K~_eEd?q zBS;sbS7w5(itVS`ye-ylerL9e6EfwZ1#}qKWT8?&hY^0J-4tmZwCW%OD0SLRJ!Hzf zYQ!3}o4gQ%4?7QQ4zqb1K=Sen$`@hi%{n^Ho8)G6xdiKQs@0385$yQGORaDvXKwQj zMahb?WjK`Nk^tf4Y`8R`=+3$>NVSeYO6TE$o!R~W=9ViDy+S%MpzzO)as_0I=*-I| z6uR-<5;e4GP-!`jF&rBP#j9oQ`juwcyN42-!-YweKne1;Lh)bcDpWC=J5Zg&jS)6R zKEB}&DPDq!xuY`^uW;i$!1a8`A~9EJa2Nlpe7IP+*&eT!)Tl494vxx z!ZC$4W2em=DlO%|7$`d+qpkkAEm_w6NFJ75lj-OVS!e^M*nkf16-VG0 z8*ngyCU0e#2EJmOYnHj|`OR-E$rdHeEW2s+=BZx%!Z%pJ$r;Qt8pHrz528c;Pr?i7 zSpO9M3Ca^y&q6Ob@RGFktytUsW<5OgsM3KvjAweDm4`hM1ns<4;|2w!=ZPN*w6mfB z?ENd1Ex-M!Nbdd3$~RVM*S-_`6Qwgn9u`kn!hvll$|y}Q@f`3P8c=>^1D8SvX{!EE zkNqM?XWWjaQ7p9et-n!QvsasxR}z~$@QkhM$wCuBj?n<_g=lLc@aFhpn<1p0yIT>H zQ4@1wF>1{JdQ$B4RS?R0+msJjBeX9l;`XY(Rt`46|G)!1RH^}}c&CFBQ{q*edJPXi z3tmn${V?~am-W>JY0ld*MACC_@9)uNxJq0hO-i=ljf88sbItp&M1ig~mD1qP0^I5` zT-8#IwDz5z@+I;7-m3hEoK+9%dF*IhH8w~-?{?Re=ZG9vE2Zdn12r#O93nY#N{f;* zOOAAiNT?c*q<8(@lxxdpq!sTDoK_;gmw>yzRk1h?gHZWbz08R>AQZGIr2cCs_<3b%EgrLR6n3djtEMowAIm^yG! z;$zZgl4&Te63&#yefV&gGjj2V0MB0^pfY5;TUG|}eM?bS@hVZRt46B+Foj-}f=V+& z-@`i>)tQ=#=AFpW3u=zJX-;fU=EMJh9gKfZdbKoYkT2MoX9Uzv(cL4~2VEd&;rLQy zG`X3woKb2;cSV?8rBX|&f3I!UC>Ze&!Kap+KoZ5MUPm#K)cvC&JrV>evE6c}Fuon$ z#jYlewGKn1jE{Pfzm)q?cie4dAN9v^%#n{)4;P|ZUx3o2m|{`y0VcO(QIjz}+1tZQWaJ-0>ioX%NiXaT@H1Acb)z-eKKYfJ@r}pSx}573w?CIY-MfhAd$t^N@=&)D99VEOr=P-h$3^f%Dag>4V%#H2dRDq{IJL{CsAhep#@LSWou84We46XA z9l2$(gQbQ~2YXyWRxwT7N{}>1`gyxwKrKBLuFIvdM@GaJB+843PD4w02`n#XM9q9;fHUHDgh5Q%xUr`!$J< z`FXTo6D1qGJFZD#$NCQFkfW*2Clz{Xm1qR}>m;ioP_{=VUO8!!Rve4eP|s#54(wL`uqbV7=%H_RJOK299|~(u)Jk7@YM>FFr!|iMu^m0>9OM@sZ1(4KD2+A z4isIT>1B)-^32AC&|NKP(Spic=a|a2840^ZjPH7}Hi+(#f@^~#>V>R^m=hZ-wOgx9 zReTJxRP!MyMZ8S+f=CtY^ioD`GHx!E*G?r#qPkJqIj2>4KSX{-1g3dGno<`|Ys;3^ z;U&P8$zqMPQHuI3FlY;uR!bZ4Ep(|Yc{pB}uo#y~3qI>lSIY`ND<-c8p2(d9d*)uvP|04 z(APCv1hb`&8dBU(;|xx8sQ}66^is8dqqO#PjN8u-2&wi7skDb=srCt}GGmPm()rWT zVFM>%oe-xhjIZaRa?rOhzK;7MSh!lpy(UP5znnzJr6<1J>)maFuWV0rYs%z94ig^CZT)P7=>f@ME)^?rnun3_!jm4iQ@0}%8}{pV~ydRjVp_I~P+0>3MC|K$szO`WkwdiT3!cuzOr+{K6qSXbv~ z1gKig@TTx+5nCOgTCd@K5ws)(#9&lJmJ+FVQ#f6hrZi2V_0scAp>$FDuqixzG4B3Y zGt5B{8H9Dr#EW}5I$j@*X6E;n-D+AxuAz9Llpifyb$*PRzLxg3j12txDhw~&di({8qwehntjGc_qh==a7mpzx?`8S| zTalQXg_`4W&Xml@N=cXcseMOCPhJY4dWl`yhy`ZwcH0honhs1ssfwB_93m_Q1ObACZ*24e!vA0KE6|@g1e^~nR$Dy>X z%$fhJR{P$P%34MQ`reXt5spWZ_=?0Q7N6$7x6qw*CElbv??bv8XVTScNaut26vU$tACCBwUZgA4k#4IK>2|o0?xH8@ z0ucX4O*&V^??-%tmUIsz{-`VI_IZ%*r!J&xz^nO%nTU@@JPGklDDx9<%7vc{ z114XMA)9Bp-8e1q`2$ ze1M1x<$yqy?}7@f@(!+eJ3Ym;&Wp`O-F%}DU>7o3gWF|Jr((Qf=clK&hOk@>O{QDy zxQ3?CVb;Z+g2udu!9tZi$S9utKWoGs!gE!5E%Vo9( z#=^HT=y(D>&fajRa7tvg?$lF#TO);3hOwXA>2as!77NR}OoQ079yExqvX4Dzj%V?2 z7~Z#wuVNPDNxgf{IxIN1Ib{w@wc3txpGYnhU;EfxPwLy#=iiumkz6Of>e)_D3hwzW zu5RANr$r<;iLVyc=t+ZmKKF0TZIOIKd<|#4yeP0&ij09M>1md}kr+sXIUAjC03l=J z*j&KIg($3CEq<}U*d+H7Fc~ZMHJPsbemD+rhGc4o646IJv1|I_6ISX)zMj4UD`%L+ zPI*zV=YKwtYXFwRS*{oPQ3mt!rcheKBE2b_?eHdv!r0I*G|;c=uoLdYJ$~ySFpm&- z^WZS>Vp&~i9*gcmuI$S$)YtEC8Fc2RBPfe`X=$&fp+XeJ-(|2$XY5kE{I)~CjKn6UKx782x1+>MJhO50@^ zq|6Jr>@Iq~kX_W#GJ30gh7WlYg|f7+^eYW1PwYlLsPDUw#E_{s7qmbKQTV>Im_zF^ zahMCDp*%s_#kTm;#eRFr0hQ}IpVNB~8S{Y2g64s44>Um*{^KT1*0j-YbBnIQ5={4s`Yx;eJR;GS#Fc>zmVV@WSUX0^(j? zJlFG8?AahnBpquEqTZU)LFjn~(`6PCO#QutTdr1xZMce`W%^(mPwwowVCqiyv;PEB z9Nl0)2Gcs~C|?{xNksoCFYifXh#q0rL+N13K36AQwr0$R3OsX?O|H-C;wBclZtj-< zhf~h?55iEMkHo0yS{Sc;RuhK=&u5*+Jab6N^h}M&6opKhxG5qn-{O+t(CtC&dZC9YAwgf*g)hOrBH1#En^^yF8c7zG9!~v7 zWVpbGP$#~^p(tK;&0?v~d(v5z<75)MH{+XFw;N?p9MX;31!y}v7*4@-iG3SRfA;>* zd=hS-!g!uvX~Am8bTq%gQaJlkVSH1}mzZ*S0sE~lO`~0GLO&WyJ=vOmw4QR=AN?qd z(piuGG)=vxkloXd`mn{DlXVLxG8$)T5(*=KGtwZSrr$hu$ z^lMHZ`cZjM3^8)@^Ch-_xLo}2!)dV7o^HhYjewZ*5qM+-ZFQ>cO03JhP($!Yy6yC# z53!(8l;boC0cjL1^|31kwKx4ySkTDQhEk8nu#fLZ+4z4-xw4e)jHK=?GnQU;s@4*7 z8;$bUYpHztXgWhqZ+a8!JC^Q)hL(<{%}!^$h}{@VaZVBfqsGw&CoKY>jH4wEnvxso zuhKg*{NIg~#8!=``<%Qzi5(tK?>f!*KckOTp#c;%O>%e?%=- z8Sur=6SitD*z%`1!0F4Lm`o4R8|=(v8c2*`i87AHunAKrpT1#7r%(coWu6IC;AZ`e z1GXiBR;Z6!*zE+|^WJ1(u~X?mOjo9**Sh3)gs<<%|HQV*nm>zupr>B+Gi%UeIbbMn*Ha%?b>RpW zt*2-fpF%^N-*^x+-|7?^a zqre{LhGFXbkF)Sy7}Ay589!NpA8R_w^5)UT=?xei^INoS>X^z$>fA98Xg}Ua?I2ch zXS`OU=vpjfwV%4`xvSXrbu4c4nymd8(aQtGI@yqOO-^iO`ZU_s?{7F2;FEB{TNUZm zGh@z;PS?~?o%6znSG0UG%Bl>1yC2o2^_bhFmJk&gq^41Sk6;9S+$o(9XwpF_m zS@V2))JuPda=bh>gO(G$&yFvkK_0g;fwp~#NqZ#wYXS9%3~@#LO~i|_kZRkW|3H{7 zDboY-$U+(k|e01s@Uq$@&pt@%hF2l+)OdMHEE`SlS}$L(|!Y zMYP;&*A3zK$?-Cs;_KO;i)aKTu;|6q*H`sB`ZK6K0MMJ`J7((n9=3Eb^@PoAUJOfa zW$!G8>2zhzOK5=CwBH15ax7q1+2|$oxYw_J?MhtC%9l{1rvaEYjacA($6kGy;{47( zENlS^FAuk4qu8$x)4trtF+*c`LC5M*a4yHKcJlC9Zdfi`Rt`Ttc^vU^u%b3!Ysz$M z3b*tZE4%rHlVeLMeQtIBXjM)({(c`j?>=}932R=gZS$WDR%Hj`+bz2rH{C&y6~THh zrDy0V_RdmNaT9aSq*P4eX_@$)y-Dm)CIxsM?`3B@j|#VE1YSnRTQjJ5#YnM? z4Q}h%9Ir`9N)opK`yu1Z)=8C|E@g|onA zG+bK*&W$IUT(&7sHhmcd=2lvXjd-3vaklFGh4Y`Ci@%N5z}tD7<;3%CXHT5J*yP=U zSlhI-RqG?0yjLT9_VXt12Jx(F^3KEae5*hupNRfBid!e z`KmUZN2W99X#HlFX!g%C8ba@~!OO`%_a#{=OQ01|;R;nA-peeA?~<))>MInQR^24u z)xd8{#N!7h;{J(W1S=B211o5{9T=?uS>U7O=Nl$? z&iGBc-X#DbJfk`^tm8p-sDC45MjThF=6wTKa5L`Igy`H^)J%0?kOo+B$qP3OzXZnl zSe*h6Ki0q&%v5*(Z<6(A+APxes*p9ueTlX!-e|H4nZO2RQBZOis*Zxb6l5?xicg42 zR>v&VWpMSHVAG^<=PDkG%r1Iaf>h^YBA3Dl9G7U5UE1x0Gq^~X!M0~n#)4uQZosw3 zu6`wQI12ZRQa?jHq*9L0LpZ{(RKcAUS0^_d)vXK`F7uZBi}xTgstAc@m-bjpHWyu- zjzaO^F%LJw4BmAt?J){hXSp-oZ1sIz@)R~>H*$M?|ylz}j6kQBJPVz5E0% z7+t9(Hi}9$$YD`=!#PMKSF{B*2#$C}RGgCjJHqei*{e^`a(8Q4epyVHO}!#ZfT%vm z#dI@6s8EQYw0~FcVuTOELRD?Uk>p*((z3A&c!_w;=f;_ed61GOSH#oVgIxGs@V5AhOXLgJ784SI2x-QpgA;|GWz*b9@GP^|fG+m0wAH|3MW{?Z|?x1u_#~ zIUraZ%VQtURmZZ|R#I0=Wgo1hh3ZsKwq%|<*01PE8H{U*QKGf4L0<1-ma&Q^4{ld< z_bm(|#2Ut}u6fl?mCApBZYxE0JV!)(vi@o6s9t(m8!K=J)F9s(Hq@e?*P@navrbF` zZhRb@wjOJYg{v{)g|Vks(>vY5PcO`q(_I&5(D%xyj7k1L1Pf=Ip1lO0~9 z4rF<`)YX48q=1@Titub*2X~MVzKE6N((`0sv3a!Up>_o#4-Fl1_|DLv^Ag#Wp+O~w z4c4JS)p=-WLB{_vGz56D^v9@=y3$h_8yb}I!o=86>Zyzk$2L&lfM^sTlp7MJl!W`5 z^YAf*M2H0YVBw#^+@7Z2Fy;UCG!1rsX+9S2rCAg;a3Ml%DhwhRC1FN>8OVmG7;8FU zU=6UH_2@0LT=Lk)d~9?cVc+Icbc9|mEfugc)5D#ckr_XpR3wUAqCFatg#d1e&kE7A zAseZObCkWf+v%N)EB#-^wXi)KX?|p}T+Tela?buDm(hR}LhlU`0Z~>Z8&W{Mv08kv zfR0iJ^V>ud#=ndOmg7w8I?y)L%CoFIA7c$8euWKpXa?;N7p`vTGx1Ao8XnDxHqijx zZ`-XzwIFsJXD@7`2<;~}s_dw){P-Dir-xdwf^;lRA7LvkPGk2QCh-Gz!3Nl1F2&Z_ z-?~mHx(ld^V2^CZZgnpEVl&;M8SFR?Pt-w1_E#a6d(V{5dKS*w0UcT=UG1iqz-o0@ z5!!}OM>m9&i%sxl;sE;OT)vFywvey7!d63w9v?4_5m?K;Gq zx6;B~^CQ@sc|#L$u~wUBg*)?DP#%2k?6`0&5WKRJmTVXoo~zDw;q91L-v%%*C-m%} z`QwM*cEX`z!9t)9x`1r<&hW>ukbyW*?YTLTZ^I9z%ITZGHXLUrJ=^N}F>q+>t&p!P zyHVX>;SbsJLgGbQPFeRCeyJow;)@ILx`@W)AOwl4f9^CcBy0JulNBAD=<+ zvS6Wz<7CZgB)`F)dKo^3581w#;VoHN-tjV}5JfWmHVUB#wqhH-GH|jRR`B9TwZM|& zW85Onyw{2|?^0Y6F&K<52||$|yv~NcLgUm}N{ksI8Y`k>5w(nn6G4)L<3tc=3Gld9x7G;HJWkI=bt9v(-CBGJ z%Vv!wny=+Rh>D3LqBdetJE-5x=LJ#dCre~FH^ec+Ajb@A&=jWj!kkOEI*FnzvYnWY z^Iwn!*C0(fm*9s%DHAvg{fNTZlRIbx`>~C@*>^kW80E3zo$$LCvI{#YYtVOSIvi2Q z-{v*HqJWY+mo2GLs*)r|)5FU#CY0gvVodROrU5aM9Y7)?xC*uQHH% z3VsduLqYLOMtq_(e`6{0Erwg9H=9{Z8G)^EVu>?>v}$7mI^}^3p{N}=6k+wn*z3N{ zekrD~{^{8kOEPcAjyRdCQpIl=6rlKIJ`z54yz+ugr#Sp8XCrn|c<%9^!Lo2fdn+!> zjmQ%G_JLv?^{GX62Iw! zq_$y>)HOY=)SjKFnr4>AO;}(5H}yfOeI*wWV825XsPq80JOX12l8h_ z-ljqRT12fwLy<83uqO0NBg=Xl4zw=p)wijS=VAQ1My7vyVKg7k>fWYsujd4zciX9$ zn{8h)=U@tpP0A#^{EPD`bom?&e(4#ufWZ^?680b2dgLNB#s*QuvEC?B?uvnI#5**w z-x&}@-;q1cfOB$B#H}oW&9P%ou!47JKx{H}VX*Z*4OAjS?78c3!3F(TW7K_#+`jhQ zMt0>L>f3LiV@d05*iuo_30wtMqzYj}-=*GNE`ng^JAy5E7d}KI>-iq7&Rua4r5Nm< z*CgaKX*T>}#9*K8k;G>p86<-xYaG8%30tzFd8{osoJZM$vAnk}7{R;Sf|1F-m>m{u&94DeVMPM)5QG1pDc=Lkw#^{z^E zdvVy=D_PGE;eNGzLADzjYlKMQ7PkL=>SHVrDY&|vGu5~V{PAY|*WaSR4mffwIqvwy zZ4_^4i%qfSdJk|+{!S@vmyKdbN#U*XaVWpkBDX&70(;>uX&7bzQ|IEuQUlpn; ztVJ)Z0tL$s%g2`Yt z>-iB)>@puYOzkE&4EfQxoUr^OI^lVJ9<<;J%(b~};$G^jK01#X_fn+i_PN%CS_6B1 zFOKRo?9g875oBzVn*=T5Jb!LlwfR2Mi!PVKZ!Krn_L5(&+d>@w#Z(@chbD=81_yu| zW3-U`bfCrZsTlu9j}WbuJrG{1pf9a;NS0fWUqPV;!)}pos|{8XDt-=mtAURZcx4Pq z#zhXeEb%+V7|qNTzj~m~+O@u-KWI!gZ{@j7Ef4VVNK%#Y$~K9RyiY_zZrLR@GKhn0DKE z2+WiDJImPAee^gDVu$vj)jgThej2Dgn9PRkr|IgiJlVSaIJgXDb^EE0M+LIr=r);8 zV!!XFQgICaF^zB!dI~&Uc++F-(#Mno1DaEgjUHnw%PA&cJZ2bKgq#;>|8kwQnwhHrh+D^uYSuOsKCrShnXwDVljKW0$!VMm#|Y6SQ~}2pFr(7 z2fwLg^}sjGvsiFF@Ik&C^KM~0yq>dJp98dj4zhv+)Hiyc5O~D0K&a8lm;_5q;a5?5 zg`nWgO)MRZrGQwI>KC)`4p0W|V`C3Ow(V^8LFzl|Sz)NA$>A6hbnV)z*cmx^_aK}< zA=~egaFzK!XYrRz3ezJBCx=;Yug&DM*hdGcN9^eTp1HRm$5a+h4lkS>TsT?eG)<0c zdq1X9FaB{f!zUzZO5`T`elgqm361g&3$Ae>lndR8h45M*vu|Z-w&`5!k0BZf8rYU|4h5zACt(o@3XmaQv{Ag&oE5 z$(QW8qqI7}aKbimHav*K0UUS-h(8vfDS;>5%GIHjm>e9F>} zw*1@s$voD)<0w<1J*^?)rm+|ba6Eq6F@cR=`))rD7IZPu(?JGSD(H458{Ol<-cyN&z>M#HGj|Er8$L$lH z^xWpOA2D3cPDrcJBC7efT@Lw!}Ad77H2ABO_Z zrQLq*W|bye_uBU@=b{7!_m5sft_h+NO!I9=r_R2SK zJvDzrkGM}6fYm!T!P8jM8S3K`B1fM+*{0&?S(es#R&a)TdDr1Qd7NsFAr)tBFR-#R zG}61kP72~bvYTfp88=cAzoobDFM*tAPn`X``Rv)svlp5|wjqw%?0jN4&UO%Pi>xhp z9LzD);{2xgE_9Is1s5+ZH8)6wBy4xMjz&uZ_?%t3Qp^=kGF=i+Y%bar?g4!1fyvPW8-9j<4iHp3TjmY@C2?uuv!>LC09aCB5c zGp#=(&X>O2gmv097SKe&{{QKW;2-u8&I&f?0_wJk?YKZ=(^lEVxQ@imV(b7#_PbXtXsUc2VkqJlIthr6m@koIw0s)U&K_GxhEBZzsz7&T#$=Ti#3$s0XYTx*0q2 zj!Z|f2kR`;a!?eRrVDS7gIsLzc?$E{f^@TYdmIiedO)7mLN@uW#b8L z!4BAEb7LomR_i{{&)|~204|uvZU8FGe+;+C$ z2MUcn0iR8R!I0mfUezUeCLe^~tHZ&q!O*r4k7oHOcP8APch1PYa7KO)Kh7){v7Eoc zf`7n_dx}jEk2hGx4-^)r>&)_TL_4u$#Xq2Lc`F>E1cwk8&rBWnXSaT!gnPW2<*5@l zg5b$26*IwW9CvH&uCKOYjQ8@E1^4e&*mP`wQVhHGe~BfMF@~+bM5DVtg)Cy<3r|*} z&N7sLj_Fi*vVOiq8nwwHg;nRV^o zg)7MLlAy_{32dH7*d-@~(=4|4M;g{Y0b?W6Erz>AIsqs*MC*x|K`#tzzyOngEes)+uzR$hQ`EA-%drg2%Mawg-vLM zlXUO5NafV~fE|xrUt17qJsR(LHau#s)JefIV@te}ma zr1{K(C>-F4S1C~a@f*x|6|341R(2KVBPs06RZPQkw^=MHg--kxHtlD)++ScTeum5a z5@QE{rqSwOi`nl#VG{uaBmatd?>VOb6?^&zjOXg~FMg%RkQ&!c zA?hPL+5C1o7X0?NU?+Z*c2O;^+{x@tE9}niU~$)IR{YqSf3O6)Ig<|)0n>5w;;UkZ zBVR{fdrFbik`spa65A?MxVHe|zLRK3^jzptEN~0h*=w{o)bfgbS(noXYq&ZKZfxQW znjBy8r`m|6U8gFna6^Bi$?C>!?BU-i!Sgw2PH~;Nu!Fx*NcT-cu$rtMoffdl$rK+j z9t(}!mF`^6e)*01M??T^if$VdhZ;qWtzOv+OH50)e@x{PxO_bYD|uh=G#h_|ibAuP zU7jmpiaf!XOk{b!=8u)y5NWuR5VdU;RPJ?$b;d zeGv6x!~Uc(9=GAB^Kx=}#9PHy{)t)a9IN~j?-3NRU;m`YF1dTr4B{O#O-veIUE>7v+au=?8S02KxdxQw|olIX!sU^LEq#_VR67?AK)lCZEI` z+VT!iu> zFm~i`_^wy5qF%vCeZ&|Rb z>&yPOh(D$J<~%hmd=D7Mb?|n?#k5)Bj49!X+9vNqAhaE6cG+_m@Fg423BZ**o4of4 z;LF0x^c7?d_#B-|cJ3}?M@Su_9SMTnjary5%wjMLRI3wu{)NK~lj{LOCrW~=EiNIy zGC-eXth)?0-^a6DwK`Z`70-64)xBW1N7U+j1~#B9xHIdON1gJhksr2BiyjNN^9UB< zq+W~V^P5iU>FkD+nvt4qaaM;>5PRQQ-5(zRZ=BWd-uuBP${1kH?ZrJygdgTM_mI1` zhOdG{K#Zk@xRpLNVeCZb9Pv8mOt`CzVd!oA|7q`i{Guw_|Npad7F`r|Ra8{eRWVUf z&;CC98x0K=ZBN=z&wDpD*|a#67;v9PQ`rJ}O3qCz9VBE!U@qQuf7rNXkiC8_An zlG0nhuj}ltV)xzq^Zf(D$K~^yYkr(LGjnF;e6zb^29TZl-D zvDHl337CIRgs?Kqe}oU{g5$r8j{-6aUIg9Ig*kd_smyfmUbu*tCfN1)?Q{IiE^L_Q zVI+_l=1=0^bYXGqv-`NVD;w9{z81+I#LK25hxpX4Y-rC)yu;blv=A!=d(QU{;>)|T zyV>vG@zY(|Jk@qSNyEmWL%L1F2BRmxU&At0-}5sX=I(O7iq4wv3uigl9W|jF8_RlZ ztJRG^li7UF^kPui_EfT>q^bm80YEIsF_L zR`ecscC*?spSHuS<1O9TQ|bwOF9csT?C8#nnv=LWp{F;zYXlq3UMc2M1e=0I0(V8Q z{p`l|+|q;TM#SUz7xxz8_|v2fwVyYl?wE*o|0c`m|@zpxGmS6*DdosYodu#Eq- zVxl+Li+hVGp-=ds9?UvwJ6VkWM*z%3rkvm4J0s-u-*gSu1>&Aw#x`@W|1Lhf zCmS&M1_~2=6s9x{>?Ym#eop^&f9Uw!o@|Ut$L~S7D5j)^2bzBkRNj+4(aTGfYuF#? zF8#mrg}vAi)h+z)URa=%n~(gjJcVbfci$DP)t>vS-t5IDhxxXxh6TT6=?F`~<63%- ze_y~7=?F^=T2=-uQI4>*pk-;m672{}4_amiEILP6M$qC3SYjMuSwYMAfJJtM zHqISaDSZ?s8-bLE0xQwm#F_57!{8;ve7}cMJ^ks1H_K7A z*ui@*u0kb7%N?N@XZ(XM#ppBN-vbW(YN^++R-(SsZ<7*t^VA4$X1@j4LzSuW`dj!b z{aOE+?|*jjV)u4x9JP_&%>E(YJ(tZ<-pm0Z^A4Cd)OmvuuuZt#n;8}IT>BaCJ%IHa zc=P4BG2YDCA#d+z+yn1u+ZAby@n#NGLf|SI_8HGch-sS335@e*&I@_}a_mx8FVC(xNV9_|jyg^HC zz#=)qa)Xvv0v3}aEH7v&<>v;nsjOEPzj_cGG38bS*wk*se0XJtKZZhMXYXy0%^jk2Dd*=qr{ z#1~->wkVA^Q@a2oPq2*^f5I;gLX%mA5SOdiDw6nS|$uYoeJ8`&afwV|1$I$D`R$_GlyjGaAG1 z-HkkI2y-V|8xeiw`R@2}aqMO6Q1Uqvw(d>1RKf~yp4iX@KgvUQ*f*{02zXUq;nmKc z7{Vs1&=7}ELp)3gY`!-M1?0_)4aI*rX!a`RF(LCBnCYYup^OsE9H#i7z?K9f>{QIU zka>F0yo<~kc-AU}d?dw(FCEGvllosymMV&prIz33^`FOYAJEZK6muY1oZfdqGj^(V zP8L2N@`FR!(x`0oTo?CJX8g+(l``O8l+E44*qqcZiiy(npSyzsQab*2MNK31JE+() z8yZuT*J2yqrgFppwO=Y&57?l=?m+mj|wqa~gR5233tC{%IqcVl} z?xi+}z=D4jAF5-Xh^<*P^QXyv_uu&~I_B0)C(DS_mAotyiyG^7EVjGqQlMOZPRH(2 zma00=dyiskSf7LZ!BH$)^?B7xqnJU}N8F)g0aMGl^ylC6GuMq{Q5vPd{FCnE zy+*T4O$#)q(H6{M^{LLF9LWx_B@tLF9?B0{NUzyA={8hxm#^xr88O6o>Gk8xu z({p<)>)(489^GTEFb-}0v~{+B^m@JokLcASVdnXIENOi*7E`TL{LNT4f{EMs*RjmO zZvK=TT05)GZ)YGKf9QwJt&i& znG@#vdC-;9FEf5_X4lR4=}?m5=rRg`D+u|bXL&7FHU4* z*un-r7Bzt_q&G-xRiIwXcyotZNoFytc)Fe?VBPNvdNz#Ro5w%Uvxivh2mCq%o7=B! z4KAfx@8)~3v9--u`_fA<`8TiO2Mug=cleS zmUsjc0Rm9N}P$JF$zn4C?*6>j3@NzAH# z7V8js_9V8i)3FSb*@$tj^2^7n{6CNN2=`59U#Rzm;V7wi?x#|Jj%g-$Pr-ediLac( z?pOCE1BQ8r`Y7g;e9}~Q|G;aYp)@vKxU>y4?gF|dtd{w9Dl1VxhKr8-u3=3B-ax;F zfPV>=!*5Sy({*L2ywiO%N(d1d#e}eoLIBU4=K38=cvB)9GWEl&LXYhHExF3Ihz)Up z_uCKQT~A<@1a=)pVzNOupts>38(lSaTA_hY$Yj&)%eNZ>w=bC*>;W7z zjnTEYcp4hZL;SvJOxNv6_+yEQ|Ez=Wp2lR&)dgsXUVkJ1Wg1Jhe2w15>wirj?9sk9 z)>6_cKS~zg6UvOvD5hgrKa&mRj+tz!>T~|&Oy<-->b{hZyPNxxP$P1goN7i@$V}XC*AsqAjVGI1bpZ{;6*P{J(uPhQJXf? zn43YriZxrgi{9YIYmA&of6^PuceBtF-2sipBn>voJ~kgZCa%hQ$}ZVTYsE)E5Ayuk zZ0zV-G;P{n=6{U#m(kr>uMP9?KW!Fkf^Eg^q_yxPv)K^-=WG^@ty+QoWoi6z+SxUB z4vSPZa?c$2XUt(qm;77!?m5iZx1JJFHk8#u!)}D}W&G?Mrt9~=_LEifxVdc5;0lEN zKev>%x2se&y}qs%D#|9MZdf+Bu#M#_Jw!@;r{oQF$tc3vo9orEBivQ z9j4bjme4~NNJiNfBJi|%Y%RULo5%Wh?SCH@m`oFR^F7Rs=ZdtaV~7^-Cc#m)0k^r4 z^ApQe(N}B&Gx75IY`i@!5LDR-maXVl?gYz+4ZBQ~onS3WatoE6VC|gmSb?|F<9#fg zPhP;TQt9|D3)q-$6@g>+)0XhwIjX3MUB3)VL>is)A%p&f)a(2g8QQF zT)U7BRGs5v7qZdO#W==>4%NyZ@m#g_i6`zv1!*$&bogcIYjHFF_L!d~e@*5Wz%-s|z~Q^&u#o|X5}DFxYiYa1`SflcgG zz)d%>8#*~Xi`giq+s3h@Y{cJ``{RolZD?y*j9IO~d!(@&aI~y6=F#NiXxQJB%U?@l zYr->>W7D2B>k`arg>BrChqr5GOW17G^S_rM=UP7eMz%!tHs5d~%e2s`|JOFP|5p)g zf@6Bxf zjqQQdmHwoI|%5iS(ml(M>*5>LrMPsGCF%zxY%XudI7O!X4+=^DQhVQ?XWvI%lMrYx^ z7ya9P_ykDz$GIzJm=9SM5X}ahKY^s%q^WOs$GrUL4#^f~i|z)6o!E z{$`=cE7?rf#|i(pd$lzfv8)=(L3E#b%$z3`qkqP|g)ohY# z4mOOkkz;$#p?TrTQx{jZ_$|qpuh8C}sG|t?%Ix6FmcU!8eSGa2bQS6R#Wl>`XEi)K zzs6j0B=8z@XdZh=^#Ok+54Q+YZmaq|503~&l%eD?ME0u)aESH=#XYJv;5Ikz3JjSQ zFDv$HZ0KFfme|t*!2-jjqW@*MgzeIBsU#H~E_d;BYuQi?+Jk&-D!Q8`K8%&2OlV)Y zJXRusgKxCrjwY~|n(}pNtc3msZn1)UsU?2Ghq1E%LK-VKMaon_i&3SQmyF!X8}iw_ zK9gV!7L2k>Beo$>FbmePM=+Z_y^c-jf96BXk5!n0o`$k;q2t}0`UU>4`NZ|8a}%Go zo_&uefBFsV(Jm=CPDXZB!v=N?UmoR8Z)CH&ZgO0>`0v)NsK~ z0uAT0HnGtWUC6NYAPhgJ@^zb7V)s2}SQ6iZWd}dHi7oA(Kn67h8P6vdv5^t|$x!(| z3>UBCcNVc2-@i;~$J5W_0L{><&rsk)*D1NUlxgzaPreQK$Z+fP0pEs(%`=-@6Sx28 zB2l}8c(ku#~ z2GKq0{`ZCa zH_xnSEySCB|J+%@T>tqn<+`GEIayr+Yi;W(Sb20Y>(Orx5(%6^A|=;CXQ1cqVm8s& z^OBdEyz1#(eq0dDsZvOnOR)m^`AR~lNNSJog+g6AA1dYjC;Pz`I@#LRcR+uSfVH-@l3W+jXI*a9 zJCU8}ODXrEl+~2-x%r(=56kmgr)SUs4pL9an^)YoMA! z=%|%G#XsJ{`g=)2`4ldn!rgK?3x0=kT=Ny7sSBG!p*2)e4sLpwIeZah z$fKhDZJu%l{tq$Y9`qkl{(qbP4^_nj^xH5<;|nap+ccf7q{Gmv3#nmNBXTI*bjp4u zc`2RMZM71nt##yI!`x2EH|!pNYcl zkb5CdKq?`1kfV@OkO(|AjE2NQERY1qEJy|<5Aq=72}lLx9mvO!W{4m1JEUimD2#=; zA&VfnkO!JXpYQ~fJ&*>-H;@iU&o4wl2Z@7BhonN5Lmq%U26-A%0oe~Z3i%516XZN3 z;zNN4>7I%gi5<*_&{I$L-EObIt7C}rL$X@6`%SScls4> zIX>$OcXWJC&`qB+&4XS5DTUBzohXubT{c4qBY3R8 zgof8dExtCc&8ZZ%KY;b%aj*b(uU*iV4OA)8a<8CmxtGr=WmomfABxXVzmAM{@^9yx zOWC+E@+#qPm9p{OO%wFvP3e+JztqToD`g+z({l$NXA4xZRRf>E3M3x?94p5Dp(D?+ z!K3Qm5VfgQfs%-P^Rk}aNw2Kx{XDys`RJ!x(orlO;4)D2F4N-Yrvx2{NBM#Y91bRd zcmpA%gYG>fVYB;U>0}^r1kzC;B8>UdrXV^@Ck8Huu()v z0I6xDfW5(NknWT6Ks;?1iojT~48-z0p&GmcYyh!!T4(_Wf*l|=spxv9rKT4P()xKP zh&KvC64(z+0axJoLI#u^7;-`Eu@DNuyTB3<8w-ST5HCE08W3Azghp^Q*aYT+ZQyE9 z{XWyK0kvQ>7z5^kGS~%70{em)AT{Y+5WR^YY=uG(%6EeKU?q4DSO=~JkAhfRC7c4+ zfgRv2pymUn%?6`EJS!7S;Ce6#q=i)J;6^YHq|aj%g7<=@;C)~@=)>Z9p$kPn5LXCX+HR18v`lz`M)%0OyOyFfbC z3Xob`HAve=YC&qP^&nM#BS@{T38W%!0jX&Gpbl&Y>9XnoM^GyizGm8yfCi+x(1N4D zD3F@J4y0BW3)1Bxfz<3}a2yy9#(|08c+d+@1XDl@mazQs8KOc$* zECl1hVsH{z0$vT4feGL)a4J{_R02{$sU=w&P*aCV%KR6$32N!@H zpl=Zrp(WS@fs`RFs6r!%1R1CUMKBJe?}5r-7?=Qd0li>XFcs8*8DKb=19k`V!3eMj z>;aa5J;9wV%%|-Ir2+unrsp zHiBcpW^f$n2jjpq;CL|N8?*^93N(N*pb3tza@JgK3}*%mVFTF6aOY zKsQ(ndcaaJ9^3^^0xQ9*!CEi@Yyzi%r$G7yX*+lg=sOQ(8Whd9XhdKnI0MvyNnji} z3zWfY!359?dciqhDmWj^02hEc;3BX9Tn26hZv}UPSzsl&4y*-L8eD%3P}JyAn!v8$ zDKH#t2fKmi!3a=u3T*_81nJ$k4vYlj!2X~N4gwRvAz&&P2WEf{FduY-Mc~z733#gp z&AkGO3SCw$s0JIru3!@w4xR$Lf$d-fcpe-CYQ96lpboqhj008Z+MJ*oOa!}v$zV8` z26h9pzz8rG9OQ#i0L1|ogDP}=WuO`?2fKpRU^rL@b^{y12(TF(1o}Y-DEtfY(M4*( za4;I|2F8LBpa~oV#)A$p1@x)VXJ$YN2Xnw~U_LkqECL%Utfa_R?@kW-=;*D0vZ z!*vP{0!<+GijxsE4c#X4C^%ue6QmIo5E9{T0+YexU>dj^%mT~6T<{^V06Yv9gU6`5 zErs$4xC?v%tOWOgwO}3C05*e7AdLs7zy`1#d>cFu)`N-27!6RGR;Jwn>cCsc4Lgl^ zGTci+0V5yHS`y&)p%er!6q@#=f>odf0cf6-1NRhA2e%r`hnohTBJe&i7IvB=l)z1e zD8Ws0g`IFe4OW0#z#5PSs(SD>@F@5asGRD89QZIOgKvNd;33cpR)VSEXJ7`{2 z61b0mJHao(3h;BV2K)f52VVz|f(O7B@F>^@?gTr)mqGPuru`b!f{%dFU<()vz6qLq zP(Fr&g=pH7U=nx&OaZ?F)4?ymZ17z$3UxUW%!7Lw=!KgmBZY8hffC#_Y1s;Q2KnQJ zx`AbICxO}Up8%G_y#n;5AV7C0)i7)Y>%eEhM(`D|8Jr3F!M)%aum+?_gc}sv0y9jS zj9B4}fSVe18q$pbqu{2=NG|+oRultw4p<9+^g%vBg5gydoFGj`GT_kzOoaPdFdh+O z!DP5IL7KM>1JmGM0%pVA6U>4eSFSR#>_vq8QLq4<4dx>pU8lux&jB-#?s%I2mBO$b zhC&$h;4Zjx!A7|4U?tq^$sY;y25aG-3)1w-12({YKUfU60c?hQ6&MTmD9{i0&7cnM z81M|-H-W;BO#2`eRSG=Dfe|p=21bD!KtJp*Fb3{>!6vvJpagdTm=CuEI^ljCOa$)+ zlfji>8aNLuM#lSqS#UoF=7Py!0qEmUN)VtgSPa8vumTBNz*4x^f@ScJ1b4wbp9pt9 zuoCVCU@cezHh@K7Gx#Lf2JQkY5WYWn9_|#d8twt0<|kbL3!${&fKD*-r@(!a4tyT& zIPfk|21~(uL>vevzDufwt#Pe9pH1I_GhNu1~wrhgTYw1w}U3|dawi;GJ^4NuLfym9SW>PU=7?)fJebK;A|NlqoK6Ha0}Q0-T|uH1NVcG;5Tr`fW@E$ zJ_S0#JzygEBA5(L1=Ffjb!)AaM{G;)SF_vLVHg3P>ZQ9ir_(`9r*r9LQEk4WtR;hqOV?K-7Prw}VI! zCnO1y0V#x3K$;-JpE%~9Y=SlsN*1ITQUmcr)cC~~DwRku7Lou-f#gvtOvtD`pO5j`X-Qiyk<}bwtzGkodPk~-6*s{p&slE zNSE7rkUAE1l&JLa5nvSDks$S4(IE9$F(7p~aUc!D5=ecz38cPW2Co9+`IL)n+>~9& zKU_juv7oJnUi_`7CA~4IuiC28o(k%@!_nk}`s1TefrA3!=U2Uck*!frX@I*Caum`8 zX@;~wPC@*Tc1Qsj;L_u_rIEVx>L1ey6Espl3L(PWdLY$C%NFk&cQUcitDTh=; z>LB%y21pa64WgoR!e0k;AzIXGAX-QiLq*~$Y(Q!t)LC_aasdttselL@MQsYC z0@4AYj;#>k67LnYT=xa*Uo{~^d@ig9J<*^$TzaA*SDm~~ygA%=6x(s92(ttlqy3%q zh{DTuDX33Em_+Eagd|}y^pv3eYUo+e7YT{@hjAmQPlKKZ{c2d}LNDqRrXpbXDIQIo zBAgFKpvghZ{g)3G4?UF8^q@`|$_wf=u`CVhl%dL?P8n?q>Xf1OpgtYC_5oiY(M52? zJ`m6;r^!K`GEo@RuYq0`)Ty+pJL!$krwVhFQfUwBlnL#ofSodD3hI=;7kYv)MVLfW zuk4_MB9sJmick~ODMAx;I(s^UGtj3A$x6v-i>QRI#i3DJo%F<@PP5)D=w5`Uk|=>b z1u-ej8t6W9kVkXSgAUvg)M@4$y*UtpGM5n46QJh>bsBCA`GlmPgU&2Fs8hWb2X(5N%AihX*%;KR3Oa)NLg-Ns1r9)SLnrjP!hC@; zmkOPVn$DOeC{&7+xeO(|FVOO{6-Pj)gXh9M4^c=jgnkXmhz?!?omw*$>rO>qgrqUU z=@h26lim!St`;h>Ht31M4CUZLG1(UhNmTz)AqR9F^w0rJo%BTLUSxqvDGfTE-3;j2 z&=(<_bf!hnX9U~A&QA8)PWC3~$!H5ywNx6zLuYm#9w9w?%jL7rs9Lf{+$?q(i#}^& z_o_2%#cb6-&+GqrUa#C$EJGv0^OJv`*Z=dp{-5Xd|2(h%=Xw1<&+GqrUjNVY`hT9+ z|JU>S4$QSZm@S2#(}$kl|MR^5pXc@eJg-ly+V-G0BfQ_(8}FjqcYz+S(i)%i{i2Z0 z|KQ>^Bid`kz^gm_h!F+3^rwP`r4AY`zp+Fd(JyyT;AtoMlUE_!#e7?dILzGHi@Y0t z5Vf_Pf-~3};ckX>1nmucOQ|@(M#20DPSG?FYzDhXdORc&i#tiDKRRLz+;KshpFdS1 z4j9uph=?F5@XmmAK9c&hsAc?@60tA7IzWN z{E=4)+~tr<=?48Pkq1#ZfoY*AIs{j;0%ZhryS)YZh0^+<)|B^ z25vv(|DCH}C|BjYcd6KSU=$V^BeL>GIf#YZ1S#gOQgPV$&fXNJ0<9?hFHv&f&R3$` zk0@h0dsCD~7s1<~;_kBh_lIfFsq ztF+W4xRd$y@ERWSqS#9Lz-#LjDLjr~Q?fgyK&d4Eh=<`p8$}I+9EH0Laz*rD7z(de z+Q^ttG)jj4vf&k7eYq?txj48@-1USwOyAjyf)`Ucb_!0XoC9|OMZqZ-^Ua86?i_@o zWg}W;r)YGpb#OOb5%naZ4(uF^DptJ@PvRjaKJZCo=uD?nDCJt@KOWws(;sEX3wPS3 zXtyAmt#c3xmV^uycZxRB$zjQ<`4n`$6l};Jl<&ffF$C>_< za^a2d9FD@~BX09w;{*>5vNbH+e7N!h$A|w!UHieAkcT&jQzl1D= zyW~>Hrzm7DKY);9>VqLeC)@;g8|2c35-hhCerFl_?ND&aIQ^-AMjORI6mSK~Ee>w9 z(Wj}6cJiVi(FmU2$)>bXxC- z_!N@O!=Dky^{yyk!k>`1ZA`ckQc^YL8SyMzR*o8;usnT9&Jr}ZJ)%IvM!+3IZ#aZ> z*b31F25rm9)?OnDHDJ)TA~z6SsCY|MUZ@A{tEVI{kSKgDf9g4Lz(6a8?6}L($lE~P zOR+Zr-ZY}q$R3KldUg7ZH^V!FtDYD8y0YGZw-P&NY0R`m^z2{A?rck*G>L3ESJ(pK za`|i|F*Ei8sxDKoDi_BA{*u)%4IYmCu;>c)o?3k0(T7Dnoj;Pivl?obZVgt zeiN3jSiUqyqIEw)8Eo}vC_x)#mtVU}To_*R4(11NHS^uO#E~(Da8h{sqjp6tIv2JP zVUG;#3O)9qh@Cx=_-Qy%!y{i16Vz#)EZQ`VMJotO(TXm6M60VWJ2brf1u;V17PK_J zAV#X9c<&d*0ZOVp+P7U!BZ2Hj><$ijheyK~i3{^VI!bCVG-Y-tU-zOoqkjvw(@`eq zwA!IlFyRoN@QOI}v6sZiDEUyppJrV7(8)g$d<;3UHGplUv| zTpY%wa#4rR5X>$YM~_(_B`85CSg2+yuvM1Mlrqo(osz-@Q!d`h<6jn|IW~Q(dECn= z;4D7rWpPHoGHewL6-@>7V1$>&arpgPgc!}wye!7_i>tpJ%n6->CGjn9YOoV5b}{wtUd;+L{t6^HfEZNH*UUlkoxr|{ufuZj^g=OMj>^d`~= z^V(NM4Lai46|nnX6%$lxq$_rH7@cngx#z0YA9iYxbrqtX58o}0RGTiF)jVytDD}^U zC3NbA(CM5?K2%!8nAe90$_5cCSGu~$uQ3>&M$V{)K=>B^<8JYqevN|yYkw#hoij0> zPunAoG^YncdO=t({ZSD5YcvL;R=}U4)`0lv#vai#JmjVRD6rro8k8Z)kU%iiYvOhN zLc#K3rWA_6CVuB@sE3eOb!w=8I>s1(!ip@`nEV=x@g^{JJ3Z0oOt<;KHKl_zbtgko)Ja0^t(CS^Ue_#Q_nk|Ai|AXkUO(j8JLSAPALl zJ=nxw-irpkj=#TGypN52f&Z{q9E$IJ+*u_K4l8{fJMj3HDwM)~d^h0{euQu)08hYJ z#P!uMUf{C{3H(mND!zsA6Wo2eYwf&^(3DhFew7?*w|x zU2yrf^(y}OK4fqL-?vYEN$K?IR6_T@doW(n*@k2n+~tr8i0%<;*S6hLbLzkDS2=Yu~Ihg0N_q0jwD90eWrNWS?aadbfM z%j-W9V*|P;5cFDL-Nz!~$j8dTe+i)XVddcF!{V?ZxmY7aZDoRI(tJ;#+RN=?>+PLyjn?H06l+rVl?GE#Q}=1+3WjP<>pnx@l0@e-+SVJgaEuj*Y(!v@;0c#Cu-JyUrhys3>RG2@G z30UeTVCkEHrEs)N&PV?VhX*jh*p39>Rtfl6u7Gdk3ddz8jCC+!zl90dV=Z9+w19oq z0`^%8*k>(ZPqnZZrAiafQ;@bGJA$Mi6(c+SUO_AP1LSuI{i*_kbcJYCK0){i#(r=N zfSiYZ4nmQB1p9-uT-OPaAr1&VF{5V~H$wVCED%~NLd$t*u?npVrrGp$5DG^^U5o}2 z2I&H!G}0lnA5n=9RCWDCT+Mo8Hkv>kYw!=BWqkOk=*D)rz|1B{{`FCDUq6#DLC_21 z1rt({@V{PIDj508$HdWp9HF#D>ofEP`UmvS z>tE4V>i6m2)9VbQ3}(X=!@W_45<{io4a4V#uMDRQt%kD(uW_DnnQv4Fdd1iaodg?vxo(_*tfu}6Uvm`mB=~AY&NqS7GmcEcq zNyGG`^^=j`dyrqQFGp_YA$#8#x*LZZoyOV52aWF;KQp!&`hwBqaNgv6#`%)-9cR7s zW9Jvnlg`u5|2RcgxT}||pKF+FjLYP5yRLSnyE0wtT<^P@T;IDQ+!Ne$-8~oG0^VR(j>_zy(xVy{VrXQM(HQ$uhv)Szt;b(?_wBWi1iu98>Sj& z7*Y(+8s0H97>*m-3@W3?7-gDa+G;vv`ok1qxylk}iMPzPEV1NS?z8l_4zrH7-fq3e zT3~&{deGWvJz+g%{na{J{zU#oJ|{=mqHM!$Zrgg>Cfj4S$8B%f4%*(g9kv~_ov?jl zYqho8&e|^6!t4?DNPD#17h{*~HoM!NV4r1ALBq+B!c8||Ojo9*A&TkY-k zv-S)2Fh_)=uhQhkIV=tbn%oS>JV%D(Hpl&rosJ5}+m3q2F^Ae2;T+-|=^W!UJ5!u# z&SlO`&SK|YrA*tMkGfuUz3zI;wTeop1y?wF1K~O2dE=Aj4)X(+FD)v0r@hL4%>J!? z3o7BT^Qg1Q+3aj_T3l;f`K|(2p{vLxwBs=X;@u^^C!LVaNmKOK>u=P5q;E8wG@LS> zHT5%(G#{~Oti7y})+lSVRcE~mEwR>GXRWt3SeM}x+wIgpL?Df5GtE&j?nR-lT*gVp zDaL8WnP^P&j0=rC={r&K6`I1$y^&;&xzzlz`K0+bv&!PK%(SFivMi5T_E-*BKC+y! z{KwM6+Q&M;I@3DGy1-g&ebl<$`hoSZ^{BP493>Bt6Xcol9C?AfM!rujlDEjO%Ln9l zKx>>IHx<8ID(JZg)01k2$|_{^acH8swVkN_8!9EqCR*Hn=vq9&?qt zo_D?Mdec>hex%j)lj{a|iRU%X`>43@(FLl60vtTvc(p0nbi&ljY%zPycbm7G=UAS$ zeCo4^)>+o+@(uEF`4QW8+dH;q+pj35iS~H=b@rRlzSr6J+TXLEwEut$SA{XcLW!v%vYhb2qZ3MIU^vdjr}~iTio?tL`ed!!y<6_00EVdhYTZ@On!o;co=GNfjr8d@2qxqclAZDxW>KP{jui5c`cz!i?Qj;)Se=uO^q z9C37W+MV;zd%TCfxR=X-OTW~$!n4um;U1wyCG5lj)=C?te8U#wRVIsRG72l*lx>=2 zUT97?XPQ@-UpKdy!z{fmLoAZzTFYw7!3pSFg}eUZIu6(j%^sws_ zm(6{Rd!aks{eb&X6z3c6{+`2B3hgTDS_Hc^RhlK;DCJ4dNiR#UNpDCE(h+H#-mRaa zpRT`FpQX>im{6<#9OFV4!!W}HgWZs5$TZwzC^T#~JZ#vD(f5qu55on+K;uZG$7h^w zyw;d(yu-N4_^7eW_^k0o<00c=<7wmX#&br&G}IJpN-$lE(pYG^$Mmr271KV`e$zqI zNzA$7nz?o?>8See`o#y_1o8yfRakKEVL9^Dl82suV%|h z%SFostIayqdY$zq>uRgdhoR>=YbDyi_trnGVRCQuaKq#=vR(c|#;G2zhhBU(vqhy+ejDBYN(sasn+SFmPnWviP zn$wUyx8+Ss9WwBfWw3Rc^(uLX?Rnc?+X0{Lkj-WbVE~_JTH6R^3ap4JY=Sy zG*iluRvVr-)EhoBG+_ijYv^fo8|NCA7&DDeVoniZ8fMyU`py(#USNLT>}xakv6zsz zTFbkZ4=rDy@7G&Xt!u5%SYN^*^O^M<>kqg(7R%*wf$c}z0Q*#XIXbFy_Gq;2o$glm zAu0(SQ??UKk&30KrAp~tsY&`lIxqFq>+}YFf-*6CUSDjQfAucDu4m_Z7{Hp6YkXN==aZqo$wQuC+g4=j;ZZY{G8k*`7ryF>n$ zEZNrCCfP0MC6_yQp<5c@io;k^=#tzU-J9K?yHC2!7)zd{4k(@}V?q~6r!Uekw%u%d z!uG7~u(Qt9;1b=lySW7~6Sm@@z4UWUi%d&Q877l?o;lUL++1jW)V$ri3xoL!mRBrq zS&vvZ$nMG(;Jq4KapTL!7~6kPS{l0xpy!Lz!u(X_u+iRA;I; zHJBPrM@?$8#vEbR@;A?l<45F}bIp0?d~*SES7a_mKU!k0HP@Nz%?;*8bF@Wg;mQ9N zlai~gHJ7FdjTpI`tj*RIOs=$YBwBd1tdnEpSUFCX=*Fa$2~7m4PO6uhr4~$3{Zbny z)@P&+)T5wR>oxiaJ-_#iSURxAQ|D>$9Q8DNPI=leUShOFAIXHmsuzA0_o?`c{}Gp0 z9sNz5ucGNlJEJL%kYmU-ug77&|!!+#p5bZG$ru`XT<~f z5EQ-whQ3C!%GP*mf;ABnaIZDlnu3;@Zq2Y}S+lJ<)?90zHQ!of-D)kdmZEX&v?j}` zGEeCcEo0Mc8MZ82Hp)NOmWNqLfvpfTkz(6cTZygIR%Y92)45~ZvF^{h@F7PVCi#v@JDOKWGe~3|9As^rVf@ih91|3|To^Sm_)cFE4u|_L) z3J7ty1C!CN~}dZpb#|p=7oi z%1|=ZhB`x|q1oU^$q2>>W0Wz*DB+$U5xr!ZG0T{1EHD-uOO3mXmBw0Q!%Sn7@szP0 z(@u>k(xfxRnPe1XvMJ4!Wy&=bn2JrMXik-APz|Og^h)if^Cpcs5?yDUSvDtNEIuxO zC4YlUD%qZDuPXRc%u=c1_%G+g#bUNTw`%Tr@euBFD*`7MXOPfTlMG%%GBTcR$Wf}a z7*$$rsKJ!K(Qp)5rz+JNb;x*}F#*|5F{UEx8OD5Me5-LMvW|}&BHzup!D%<1F?JyL zYEv|FFPogmdkO}=eB^zrsRX&l1>rN5<9axX6Y!hba0+M8wVpQ#=D?K^iBplxiRKhs zv{~kCOm6dVS?t7xTWzlCba5OtH<_C;iu%ohMQe$)#8_f+H)66RSyC-&mTXH7?osnC zC6-;5a!U<5#Cl7M<&@>TCBo{{D${Qr+9S2aWVAqPdj-})rTvvF*IMVRtj(%ct~0vA zOmY(1WtyBV=g7Ho9_EOp=uIo+TDeZH$GodiZj#$&!KTK{S!;{M?AeLwsuu%y3T}~e zspa~Djdqu<+*V<$wl&&XY^Q8zY#p}qHo>mO{ZEYDWS8xU_9VO4o{XEHH09=}2$PdC z`%ZM(b;?vXFv;z(<2xLV7|f((htm=7NOYt*vK={&0!N{v$WiPl!IY)eQRg`7XmT_= zS{$bwzBb$oMLMILvADl9Ig^~JxEsoL<~Vbmd6GLMD5n0+dGOn6)YOmsLA5Qn4e@xQEIZ#vK95%h(VWX zQH{H&7;Bu>WObrT@uCaKMFp1Qp0gR<;(1hIBp)>ZFncAau{xCFPxt#wDbque^T$?bF} zxRcyocd|Rxo$bzb7r1x2E8J?2#uJMtEa{#MPqru5lkX|;6k^=m>8Ztye}l)5rx<6@ zz271w(xq%ESK2AgGP=9j2i+*{CIt$J_+4lAv(TY==S`2 u4LZ9-Lk7CIU1$q_gT@$(?kvMtsB~gf_ga%=@}kGeuDXY*H>kEqn*R?FX}8$` delta 59721 zcmb5X3qX`b_XoUZm& z1o_!v_&7Y@d8a<|MLe@+`9%)EbG@eh@E7D~N9&VEig?zn9QnCk<15prEqKa^GAZ(v zZvK*QKf)disvYi zs&`TuonGnI!86!N<=;o8YTTz$1t9L8v|pq07l{4R6-uF0X}CJZE#ujxg5;)>)~f@h z3+i@*kYD8j68Jg(i&Ckg20SSM>$riquYXTME|%zv|SN8l-+sF?31F zaOxg#$Awh6^ZoG&P$ed&B$v-L-84meMtmN3JV4s-6iLBSv(pZIZ*-obUwT}lH_h}k zosBbPYF9UvNtC4%EIofhK{TGeiz!zzxbeHF}f5IqfDr123 zqf4TD(LS}_vdk%t*GRFh{`9Og-?jgMI#-p-6kU;98l3y$P5q9Q$o*V^DYMobU28B^ z@hk2k`KCFxHp&pkw@78KepDvax(-vHBgtDEsh41KbM)=QJLO{YNJ`Ys({=?>F7~wc zD4mtO-6u&G+`OGlWhb3f(wA-n+BNkCAk6%{f0`C_aIUo2=v%U;QpcK#O(S* zYP}(i%&}G6-B+bD)>muv=IE-*=&EXw!e@V_Qr#_6XY}Qtp)BJa8~h-@>SKo=tc*UW zz{3FN+Xd3|6D#8)zVAM=s4}`pL8^hQjP|{U+EelUTcCYr{hHEDSJQc}mP}p|bWl3s zl|mW z>0E`_2FP3KT#b;kDCe(_A(=pN%YpH_)#P&>qM63|zSL!VN zrQb{?(kAbI?psoYl~LUL(pm4RG)4+&|M~D|OVoP4tx%<^w*5oH$i3-*Tc>vpEmiB| zb8l*I>%5&pczq(N>POceQ|lW7Lii1-cZY72AWi5H5H4`K_|HXCGr5dTM;pp?gZ|-> zDphm4(Ty<8bL|l~3{$DV)+r$BSG#V~t`*siYdrb&&6u7oR z2#OG5GSW>*mp1!!SFd`h&BOmcq|u(UOH+Gani4bwG)iHbHLpUNKGNxqAry6> zx#K*dQPR{-zSMHy=}sAHx^Q(pc)h8z z(p3xzbHwn9aSPo^46$*hThIwv^E2-mDqU>6Yyvc#v`dj9(9=zCN-es2^=d3Q5nG-n}31s)xkowjrn5JjSV#gz^SndlU*tMJ|2-zTA6))YAJFdj7Ye zQJvEcLCA4V{VK~^HRd5`N-9-cyk)5qpDK;&6RXx7l1zQNs7Gv;cJ+CMdPpPs?&uYC z-C{A?=Y|qK@OKfH=Z2EX=n`cJ&yh6!qGydbY?~oI_zocZ46&0Rxogj~vod<8lF0*b zo+FU<8KQs}+(#BvMi(f^Ytq~OR>+g7Ir@%)FOzzQ1z|EBAJ!WNT^!b#!lm_LodZIJ zSs!hb&C2t~de={@L~TIFN_DMN8n%qymWK5o+)06PJM8*2RFPU>Ug|#yEAm1v_-#HuL6cseVYZ zy2l`?LGSM-rpwbVD&G4*($Ez0n1RW%xx4u>^^pYW)I)XH>EI%bE!5PNceMfD&3Q2KinDL%N`C6!btY>-gohLNbqgJNsOv z=zwTK@(Qn>H(arI$a*oCh!j3xtF8aOCE)h{Tg5-R55K=4v|y>mGX&D!e-H9C_mTJ4 zf?rA>jsF%le_W@)il9iR&U2&1mmCN-WfTXJO%&Btp%JA|xG~`i_SjAF0F_PWw%rwh5W~ zD`d|E8MbBm59$f8wdLgzk0hBZiBOVMIm1k?(#)A*O4filnYv--MOrMS#0{V%$s8Ay z&9MN)DlXc8zHXp%4n)D~Fjl{88E7-Ly3n&?;aDPL61@uLXM%65{7gB^J7A@MTbJm( zPGJ&@%!$!hYbI3*s`gXCEz!$gekOpXkH+FN$vFxOOaa(?Ox+EE6r`ZchG>0q`M)rF zX;OT!UCLlbDgBqF2`TmeZ&FSVY%3)MOpFfxzodjv4@lYUD0ckKO)hV6&XOi4bSHmlNkZpre`vg{Ggx@(k0>Vg5s|E;YJJn2*kcK` zw02CeBgQB&&s#CACv1Eo9We<4Gu?`5v14LvnD(NuC;=L11vN^0pYY2L7bFiWsm7i! z-Ih;e^B0&O+!PtB?3f%!j7nh2t(a0frqB`70^>AovtmkQ%wvLosUxUXfL2&Rd+m&B z95JN=6K};7Ni~UngXL@yR#Kro+b+j!a``$dW}Q@!>eo&dyIHHKmLo+a`b7i_O)9OV zbUUXgM@|NT*`>dK0yEo+F`SUbJn5^e6|`YiTFeP) zP_l1!qo8%L(jx7=VjOw32+S|oyo;6-Y{!H;V)W>hO`lmY{&tMs5fdyh?^!Wg86)0vR(_2v_3>k_Eb81+B9)YH`HK3hcIGa*j)@XZvQ$n!jwNrQ7obJ6cD! z;8RwN(T<67#K<-Ah!vA+#~2(ja*cMeViIJGQ7Dq?2$Gw^@6L+0F?L4l95Hee`ofBd zvSX?oF>+J<*ouifE|n$wwvz`4la;1=HPx@LOnKT$;iwFy9%~&r$wSX$Qhjn)%8`On z{IW|NQwv2C{0rUyQ9D`o=EWVm$}Z7Yzp`TVc1)Hdrd41LSTXlo)H=rs+$CDeMy(Z8 zC>167MT834GggwpZi{e7-g+V9cq=COxU?_9cW|hn^-yRhb!#UhB(Zv_Kgry(Tx6gl!K5*Uq@54S5841LACERO)jPqP8~2Cg7c z*}LqZP)AUzu+XPgOq3l{;3yCm7-q$&?3i#zfm($?ORX52g}Um!3LQ;UAWSsH3Njp* zmdx?ZE)f~~DKuyshmg>gJ2Fod7*}gPy?x5{cf@D~@9(f#6Ux@wg;Y5zTObrUVa24% zm>{_sIci%XKyO+>;Zo`>zj&=E|9LBk+iR`SQMV{j{&Xv*$c`y;#N-IfKr06N-j8m7PbR+Ick^%4Vy;^z%Dz0I|3pFpo>su*+d~gz%EBk z3ZRLcHV|pP!P3;H0IqxZz=LY-5U@X>gL(-DSy6iL;H9 zn_wgsuqnebtdS?Uvhxc??uvlTr>q8_;9p*k6YJjf7Z*vcRn~urY55Y;F`-l5V zzXs<-D zj}{dBUg{=~Ju2d|N91N@^i5?i^_KMgylkmret(^WgA;7glTT{l?f6(F70vhcuzPK) ztEJTW54jJpV_tpQ*O|M*Ienn>(_ax?m2Mj&$Vck6V6^8@Y(#_z{&0**7Gp1X2wq<> znodcV7VHWrg}p?*h2yzwv^l!epm?1z~+OwcSoDyXh`*QuZ?+{$C7U zkYb*#?i};S|6uTpG+<%4+NnfJT^ONuo*`{o7(t%WnT4a>U!AT<9008shLTnqzGyUc zm!4m=oZggfFUnBgy(<|P4_2SND{WbPq>BrDKc@2kw&M>yup~VP);Mr`Njgzq>8Yjt z;Y)pG=|qCBVd?d#QExa_NiCoBp}k6KE2C?bD%rYNrP`&=@Z{|TTI_C{Yq(m3J@;n@ zk=pAmsoSzyvsV|k<@L&Li^a+VCp26MSFu?2R^e!?TTTCLAl zn@*a%LZr;>w_QctG&)4;nsdP(zLPV-9v-{;p*DH)R!?&cL7tIAgQc%muhNQe^JCjX zq`5CWh6A!)FMX@~{9Dl=to@B1mNw_Uq#Fa;9CRtuY2ivTxH%agsSC`3Mrw| zu9y45)%V5Az2Nry6W^s$w{^W`x7*=HY4W;p{W!q!{OyghSE^}VFx;Db1Y%}$XtQ7) zf^SjaRO2P-#5#X}AH`OpQ zDoM7c&6bLeyf+{=+vHaGU{ni+NydhV9h1#KV?!`A=<|dOavJ6fecmo+Fmh_A$Q zOoO|`2Er=-R;&C^qj+raRg98vE<*Nv^G^ADul#*b{w|TfOXcqh`MV0={O)?I5&t|Z z2mVV7`N9UtDf_p^!aRH*5Yn~{!O5br8jJxDcN$-#zsLy=joB++Ed<}Jvl z*vr7*YXL=W=t^F+%CWZ0ndNpHO9AGPY{wE*Hjq-nd!=nk5X#$1==JXs%JXG?^GY2` zP%mLb=t2VEbr84kB!0gtOb!*tlrR@K7Z)3%6 z3fxvt<7~W@dJ+xBX2nxK|Er#!v}MjLPkW#&KF%h`ugBYnyY9zF+Q=JZ!&SG%J=N8gMXGt_>F67AACefF;>rZh+P2 zX2Gg=Z<=T>woaWt$t7}ox;SDri?)I2C^;%RyGz1+-J(2E z#WLwv-HlS2oN7hr^ElFElF?2Qbu5$8&3UELz*qc7tdl7z&MjDF$}r1PPvI_AA#M!7 zRBSmUCMRTC;{pq-?5uW4t6%Ybtksr=!{7U9SvG2sBUM;U=CjL@s+HjyuUg(Y^T}uV7f;=7#|+SRTOs$B^ECYX^A8-KRP>)v5f2HP-5W5fhH7)t)Fd zzuK!!`yFTl)*rDpGciUqY!XIn*qVxOQIld!LRVAUz#q2-H_BjRTkw~;RuNtT*e(D% zl2jn|X(PkSHsp{tY`4a=WteJ%d9{TZ+QNq0U^j5w=vZzVX5Iu~dBhnaZ+)5!mI?_AoC~JWw9k*N>wu*+Cd(^cN4N#@a>!t=x z?j{ZL9LghW1;{@_Zm4>hle{8HbPmO?P;ACTw?G@lm6kQQyaTKZ4a@VFc5MoA6MGTS zd7`8*H}&t>1qjGs11bFYJ5s0D9}11awoEs}S;-*S9lQMBz~ccPG$0Ckfa!x-QvPce zE?s^-!bLFVA4@tGsRWluv26IG34%p@sV@Eubofvu%kFJ%fl+j!4cKCq;!}iAjTnH0 zt#qMPIGxzwx)=6B7IUd|igoL#j2Yf?PX*E}dWSAZCDB%Y$-i*wK)KJ@Rwa46kjndh z=`cJ93i9unCzk2ZqBOcO(OAD@?=dSje?%*5M$ zfuqDfU>s;vg60U-_0DoN&G51|jyzFMyC_2p%TU2vj$h;%-ik($Lobt>uZp@*R8I7& zQe>CM4uNQe4q}_EoVw{Z8M0+1lj=k!tHRbyNf&i%O^PU9rC@_>Rl2n=fRcMtn0Q7A z+M_q@HMmNyN11nS1*%fvlOo%jUq|y4;wtviI}28@nUYv}d8(|dTmzumwb0r0PAqE{ zCrOHG?Q9{_A!|dC8xM>I;rM)=&l%m?a_QGMyLGIU^-L_oIUUL_L`)Yn7R{vBmJq3D zp|3P=iysw8Ia~U8%U0HJ5)dJ#wplu|CCo?3?^BKrF<+N-5-H|d>CY`0n4=eO4Nswvj-cej( z=3UZ&w<2ks^z>T;d+0@@4Lyy%h7$F{$gj1OJHk~ z*c6~bl;H(Xrw~iVuu(kVuv|IsSiu08g>HBzm*Q(CES^%0Pdz@D>gB%NuywD3$Wxw) zz$Dhim}TF2^mD^wzcBtgFuPiB_vR!(MK2A z#A&Kj+Hc-EMWJJ3vJCx2AR4^u~#Aoy%nDp zA%QR_a>61hjra)bhS8lPPR}j=%$BHC#4020`?L9^*g6U)KCy8N8Zv2je zhk!jWc%V)1+a4*mDyv+w*j9#XhKXe#kN#TeuL?EMt5J4;iUBD_mKfSWu?@p&WW#%} zu?F;cIkI{Q&Na&TY!+20)D}&Q|I#41CW?B^1~tKUDZskH)hnpJa64F07Sm9%9(IHZ ziJHZ6cQh))+gd?-F^4I01yZa!e0xsTVbZX4NbMD=Ox9jnxIn=@TOM1LhObD?r_0jm zZEX??>aDe9YbWRp=+`mu{@$-ieO{?h?es;tuo=Tr!Q59bYprOUBI-*w7U zw3w4p@{Uf~|I1i1$G!FU%>XVoCxC5$Rf=t{b_D4I6O?&ilhX1NtmaY7FZAJZ^&~pS z2vJ6%2K+Ik$(5P#8Cv04-P!@x@v0F>P%sq)$dsgV#AVQj#R8;T>vE5#u@p^ zga0eH?EfF^tjiyH@Zg^tAC$-@47B-|B-Sn~HwI%E_5_OG%G@F*RdjW;?7)NOP9Z`; z(WvCDgW{Q1h+=bdIypYg9?z2Fk1BCst&m1X)bpPAOxcgn3k8y3fSpUKywjOIu1oGvrt+H)Nb98eg z+kj8lfDUdGN8k_}FcLtMm$DoKU$LDv%iImT37}7 zzw=F~MEQ*i-0bY9E&D?~@_eS=xD&ObG}fj)e?w{Wogby;yCSngF54^+Ck*2281?5a zh&D|F-W*+IYYfw_K4_09C}fT;g5vzQ7sSS11=*}uMtP6rq7no}TtPKd%E4N=8+ZqI ztkwp-@8|WnKdSBfWYc%EPkO4PS?@=XPWsRLhdK`!q7v6Tr^Z?E%D^pLjpn_Vfw9Y_ zQmNfpf7f~p>y>!zW#tE5<-6Ru-Br0yI;o}^c*1bp4o;N3cXxCx&J;QBNdtFxc75G) zKb$GkTLfJ@Lk?@pr10HAYCNXy_H$M4p5B!f?e06VKz?fgw{ovV;tdG-%?D3&>>WtO zyMd+gx-GrzU+L&d7Gv;v@zw$IZ$I$u?gq6_a2XCRGVhru`&W*0LL0)pS|90)kEZ&s z?*v0!uv|8^;t0gsq)Q{yAY2MuDvkR1>0lq^;!gseyUJgcnBitw=Fbl1?U%ajO%2+MHzLZ@v?UF1Aq|=7cvB?w?qhO| zGo@=G!ECsK{);)rO3&=?>?tzxk0Et#&%M$s`~7{h%GLVe+6?d9QtfDdO0CblUE*0S z9pAroPXH2N`yd@pSyUa0X6*o$GT z1sB`J%PIY&HJ`*}3qW#toG}y!L>AvD8DJcXNSwuYEMgJP71z)S4T7>G72r1H1erYd zLGoOgYL!?_Mew3V8@L=K$DX7FR+la&+g-B~_m6dXyEf3}?l*vU8l1pUr&Iiet zWb&>D$y_Gyk;$G8HE~ZWE%EdBJTFu^_+X|m>E{x^*x2-#{MObn38^$(JV$mGTc$p)Ex{Xw!(Ci4f$ zIWqaCOm;NZYf|_TKmVO_>YWEO9h6dzj8glwleQcgf<5WQBcXIt`V-$(QjbrEQk<0d z=^=VV(j8rf>+)-l4vCwpQ>oDLUHN-nc(2QuU;jp>+DmZu^9vYe)|4jdHkFq1-j9oL zre-k0Utswt-i70VAU6L5F#ilB-VRYjFx=uGSbxmF_gW8?$}-c(k{Mvh^ylmA#2BAk z&a2zWC3+eQZ(~IG`CDnqG2h`i;E>q#)kJv$$$e3)%5**LycYoC&7NRB6DcUvX>chx z1Sk?G85Lu6{5H?rTT|Wy6CaZ{rj^;IP$0 z)jvu^y$)-@9xK)UkrFQp!3%v}C%fU8df>?rybwF%lMO!-KPk(?_=p_oT2 zM&nF8r(z@uK3dU3t-38;tMGMK$t5RxX>Y%Js%Iaq97}LIr;roML`B@SyC}L(t)d2>b`=-z`G1g*C>mu%X;UMl;gWRzRNurycP*AR zr5W>h0+ueuUG*?<0H#8&MYPf>Bt{TC1OZ|RLOR}!HO{~nuN3VE4Jfk@Pf(Zy8x0~g zRHVjAQ%^rclC6Myzw|zJ{6a7jh-KtrjzW$YzbTPv9++-nDg^)^D zElX7)q)Ll4mPp4hh6lSpj0HoKK0mseTSkkZPkwY2zk^_YmY&}nEw%f6EEWLMKi}{5 z>nO2Msm_nlb3RIH|HYC%nV{rm1*kFubLZVt@z#;3_9tYNR=nYo9}~cj>gA@e=Zj+6 zB+b3_Y9}>7xmkLZZcQ#a4F7cmn5N^kixHCU%b1Sa5fvOW#_-ogN>o68bR#z%SoCE% zb*RKzk)IS_$MBVpT!*BwUk&fD0x?+(*EuP(#q};Y_Y1!Aqt~SOz8c%v3#q1L|J*FC zDkC~gW%2cwS0ntlVUlz0b($&tSo&f>mJ8doImRF-Hx6Y*3=ubB-52= z(dk>Sd>h&otLxlUe^t|LI7_%*#IpQVtF+u1K}(E(1cpXrDUj6lA@sS_yM8>SNQ>)( zaC*71J|rYM!k%FSg2*6R$8@}Fm#OD_!con<`+=|Omy^p+XTksN1My#vP}3dh)y9W9 z-MNW|7h-n$Nu@6kU!M5*;}a%bYkZ@9ks$BIR|!5<_|zXTUwcvA`vy)EO)ZI7nsu@a zn;yqgPaz)dX*!RMN5tKH?dd2disN0RLDze!?+lR=uLn}S^!)WT7%%Q!?}0a@g1_(C zNpo9;cOX6UDWWv0=@WGA+<8@aHM{y(DdqcAyn21&`%`p8%DeHn+WA-M^Ba?BmK5~E zz{n3mQC3Vy{$wY<4Z-~M5b^q%&^V6&N2FzHN2Z5lw&SZsWU^C!ObC*(a$oyHclX!J zV0}ROcxnF+gJ{!%>p%RYRuB1Ik{XA08uGhri?MhVh_6ZbB;fO`)UElA4vm7`g0EJ5 zw5=+AKox} zb0NYra!yKeQ)f0uOXKJ(_O6!3(^mGgmb#2Miorsa(a$KJeC=}aGY3wX(>t4n3X17` z8i{#&&It@{m+?Y4cGsqvS~M1(#U68`hiMvn$&Es&KYP!Ox;ocGplbGm8$G8kJ;cs` zPhsq3cj`y?*a3H%<+1lyjP85H*IwrDLEXD9IVSivYtjZMSX+* zB_-L?GYrFsXv{_*fsnCcJCo+j^RWBJk&mebwn5kPz^-V7!rjH<8;NW-WdcM_IlI{L zq`C0N|D981&l&FLkTpbPmGjSK)t(g4t^8A2N0czc0Tw1;GB%yLc~KDMvOZpv!HT@7 zfWq0JcGTDR;xP@b$36G^KM*=pT+_ov**+}29VJl|J0}oc_|c1ae)+B=!puB%v|rm& zB8ugk*=ZdO^Imfg&8lU4@V6R$BCZ7Rk61fB4W|(-Mo$AMnmwyfQD~GTIsVeDM-9{W0EoFg~P6bRK_;=(6_xRiUE}sox{8CfykIMOcqoo zD(rAQWZ{qARjJsZ>(oKb3)%a=G=x4a{@R!3l6%|-3Z5@!lRDBRT3+1EpT=vt&q3R+ z`&sxbrcO0g#K##LlJ9WbG7!!!ytWUYBU|5vVyPdi?Lyt%KkJ8HnkWip?jKMva|@tg z&lq^gDplCRtN3v?G=N5T@_5HVy4;%~=*1YlhW<~P&OD%XTz`5t*jaat4B?)GAq}0epXf&_!XAijnZiWJKv2~ zy4_LWFSWAi-6_KDx;1)}ZR}2i2JIL~)6CZ=hcubX;Vz8OIJpYiz%A0Oz@2cL)WnT}5~K8x^K$3E;qqq`U9quIqf<-1NZ zKd&{#Ov-mR#l#r$+wrd0qQqH-@yD2F2t7o1*kd8oduX~dToSe7YY0rm-@Sz!t~oC_ zsWLStu@N+iV^O0FG9cZ!M}StdZ6OpuXV}pY`jbqoxF-cu8msL|6V-|9+2g&b2OHmu zI+BLX=|!t(F8jI{5RWlSFPcb$*~H#7(ziaDaP!A>TlY!%W=(5{+osq6zLvewn;sz} zyV9Em_$;~&3wrZs(5Vb@@p$FghxaQE2qhf-O5L@J8DW2!X8UjMzuduB_- z=RKlt@^)-SA6h{!#Wj7%K$^cARIEooGHDhfu&*DjaQnzfgGwHf_c7Dq{&&ACWoYWB z%No@NQ=X_mU9nT%9ze`adAt6C7ay0h&^mDZ!Nb{0VYFZK!&Ma<)}J2Lyp6!1;nbmc zV}Gh6&4D@XQg!q*-%G#oibq3v*=%4bXHz z++!$&KL3S^8HUm(%|lY6JpC(Q3`A zY85LQMe`j>m+MEh?|$k3cm2e%q|x-4X60up_V#GntvP=dsyR6gj9j}}eLo6KiNuq_C^EUh`4tP4VgmLsFz05uxM}27}yD^SNQ4s4fo^r9m zd2c+$VD@VnPkAgShSJodO4-dAT=iC!vd{@M4ZUN<1d3IsoG3m!fyNMxVV;j;HS;8U z{BcYL4J_wzilm*zhaacy{XSF-2ojn&D+q znY8$w5;X8J&7M4u9mK3aD_CPJR!Uu%^JJO;xu#5}PF_Cu8Lh8m+YHoIQ_H&-zdo7P z5v8yo1I33X`-^pBMh{c8PnvoT_zxUexzaheHDpyU{v$S9RzXtPTL$Vzt*q35Wk5i2 zqk($3s9zY$f(nLlNh^cCjOzJKsZVw)EKm83hHxahG!geH5IIUxs5~(-!D!!LUeFzoQYc?g) zD=cR=9mR5EbP{#y{Mles>AOzC#gUkzOw9Pb3jFlaewLm@YbJ?FD7R79td1ysrpgUt zx$cuSq;l2h%eeePjcjYN-qjsjxk6GXr4BbL*NnYZM`Iu?~og}wfQ z^8vmKXS^|yQa(N6>hKi3E)RP!6<1m`-!eT z@_4?JB_vOs&aON~o%{c|nDoEka|a(0Znb_ySbXkTpK==OHkbO-r)Oo0t>0Daq zx#N!T1Y!Adf#_>Pnm0@_A^p&1}m& zG!h?ncOLceob;=Jjf(_qAL}=tp7Xrc({8SK_WpdT^_UGzvsU~%L_OQ^G)4LDcv{pt zO#6O_9UH{1JxvF*Gceg=06`b(oOdw-Q_>1=uzhd1f5X@%* zy^NN>WdT&&#O^Mj1WIR9((uc7?RH zda~v;nEH99dxkoV6BiBQa38Izvn!px4Lw*kzJ|xE1fab2q7Ow!C=ZWGQl3V#qnH_#X z$|q&^9Q!I7KYyo1Mcy;;=h(?-XjuELMwIFt6RgoU{RGh)oLia4vowTFd6xV;mB6O8 zXX>3xt-TZIr?>T-I=eyt@mm{ta)Nx*{ZO5uXPC5eOB+)D4u2YUIlo5 z-6W9pUbP~8vfir-&*skcUO55-tX2!Uj8KWt$*;?r^=VH0L!pOr6l-~w2EzKm3&}4# zQ8veX*h8pZqRPSRnt9RfGPLzQg?*FD>*ZT*_<@ON{K|yfZKm?aqR^$W+>5R}*3xBbIi2zFp0J<>ZEQsS1EufYv# zrS;+$;B>i>_{QxL-zdpoaSnkST1ls{F&8&d zd?Q(oK<;%wZdpXJGLpG1CSRX$!F9^7x>e4h2;tdZ>&9BAse}ADWJVlUtdhRO1&{_@ zvk44#WBsSAJ9Y5~7Wal~aNF>6V4P0XD&UY)jqHi(>W=?aww}zgn6y56X!uwKYL^Dw~rvPe-RSR&Z^;d#}9+A3>v3H4j0OR}o9jz>0q^ z`zV7(V{3aegJ!tvJ%nuSeS&#a-U)I%EKdY9r6_nvo`GGPrS8by$)p|~jljdu z-^|x7{i@e|-Kk16`58U+?3+yT4NRRWiyoFI0wQz5ki7In!7#38F!NqUfkT!2N!L*3 z=ydSvX~7mMx0HJR0~MflSYFN(G7}#;AXuC#V4uuZN3u7UQG4uuK3Yaksf`|Nev&%U zx99~KjBAViMeW{#yk2`*>hm;ifJ)XZ@henfpf!w}TS?`bQsqBD3rmq5&!JHstaq}y zf45XQ&m!D3Pn0hVCssnwTm9$j($9pfVzRCO>rx12_*!#&u-RCO;FzJfaY6hH<{mFRozo!42zY|skoz?Q5)lgW}rZ1236 z{jh?@c?I7`2kO~~m9(64*rAm)2nGEh9#O2*i&zbvW6>|tvqOdLOt)A6oP(M|JN^G= zPj=%)>}gY(>ng}^D2CO#kb0K~J2qF{iRENdd%r@kg_)g;@N9Y!ejp)y5!;nb8>tVA z%%QnYsytd7WAp&sfQ4`nQ9R746E zV?n8hG8UX#O`ZBgp#Wjrz;LA`+}TXRCowQmB-jUs8*`ZJOY|#sWPiOx1Dxj0QDMiH zPW}5vAk?hFpn*{l&B!+$+3*x&ODh^!4cg8s^p+XU1#C?&wmBo&SGg1(nktu;0NCY8 zAx;g*j2}%Z5=G9}oea!Dzy+BCQ`x{Z)Y<9p6kBoC2ssv4`oD^6VLR8*oUpxeIbx`@ zms9t%Tt*{O2)#E@1VmXiY+xRBhdX0h9-XB3neSS9c=Q4+x*R9hIxNkU$yJ_M3!VAJv_R}NVx?CA0|$!&&}rfOuvDA)LLKGYXc2X zd-}4t4HP=;B$kd?_PUhpfk(DHx6}tmV>Z$*g``)OF0h-pGbRk@!`Pt>v@+nZ?4oSW zh>OSlPfIq;8Ucgei;p*84vjU_Aob7lS&kXLR|9*~Od&2cHE>I1u~TLWQr8Bt8)mFX zotXQ7;E+0OWO4tY{j{99ZKRbH$<}V9NKY*mKv-XC)BJb>JG+sV(Tl}n3TU}T?ODK% zN$?(xVZ&deS=f)i_8RtF)y!!VJ(WHB8LW7{U?n zy&TdCBYlvGJ|x`B?2*^0pZ9=%aIIizh$HM4VZ)Pb#p`e|Twn)Zhl^xFaqH_8Pc(rU z3JJdh$rcsT=DtH*v04|$u6dSBZ{r4WFuqb8jK783B#DW}*94(J5X@}QW*ViwrDKaX zqpqH3>o-$j2cM1__(UzfM{!tyD(Des3}Zvzz@}^fd*%%?xSka@91QQd> zn|>3{cu!;GMbKUh$L4F^b#xi6C7gfAfe<>06C`&vOW8_(BMJb)B}Y@{b+}IeDit7M zsszCxtPO)CM+Tc&@>c5D{*edrFXn9HZVF)^Y^9;B@AuT1UD--s(W`9#TkxotuwUPz z^nSrm9|zdc_xR;sP&cvnFzw}?$qY?%GOu!qpUzeG^iSA-w$b7~N1)X7d{^El81Up) zlLvm5fz0Fa!?qm-#Ul>!F;3h)nDr`xH$=nc6;W!Zv+!9drvSzpbjQP~!cOks&Au+e z#&`Ye+bOtrdWOXk$Hgu=j+e)aA1}CvCKkuVPj6u7g$<}U8Ej(Xw^K-V?N8vCKeVL@ zSL%kQ3wEbLu?)>X5GTG0>3~d1KyS#G6ZqRQAxS0(GJgdGsGL7k&_oHw5;PcN6u$U4 zG-%W#U+F1&uY5VF%tJnDG?sL>qjoANdGr%wt%^ClO&_VBTEGszO%JyZ!EtxPWByPc zLzwtgi1(P&4!G)k*uWj+ul{Qwo3H~GsAbRWp#BCPq|x84a9%N~IR;Im?&tbWV(03- zBCNq#BsC9qq%QAjrFLyY)#CSF1Xes5-$9SlVm4$aZS0s07f)jDjlb`f>odIXM(cy| zo2kKkLGhKHSO?O+;-B83u|%J zn97FxoJ#c<$1hR2t${0VHM^QTPt9dBchSS{xqUJ6;K#K2yKL(&tX>k?@m;h)lk0C` z1`oAAd-Q$k>-Vs~eMra>?R;=O`eQ76>3w+3g4v$;sfWh}{HjKpUrK&BAIGk|PazYE z1fhHLg^0V&UnsLq8sVj197mz2XKD@n*CnD>@yn$=`CYl~$b*j7SRzVj-vcGe-EbUx z@&oGIs|N_8!1~#-6Ise`>fUakBlb!5pWW~qX0gZjP*(Pv z-=dU6ySH^Jv@vN{|B;0;KEr(~Ux{Rp5-sVYc)Aj{q=)l)w%`yx%NC5}Q*6OdKGqft z{Lkb+R0;{q_cq#M8O-jK~>xy5_ z#=;4QUfWC2=f&A(w>SfTV>lKL;u38KRMt?D!W-DPA5xErPl*&nF2 z40hyW`~ipx_T9(0S+J4y-Af~}Sf9TatNw4;t9vOduzeh^hPa4}A2Xj+sd}oQplBzN zpF{tR?CM?$=u;A4YaMW$t8$AB!2BXW2?8_&sYGG;X z5&18RzcJBVk)M3eSPedLeAGg=>>xcy$5_)r)OsWfKSX`ilj2#@A)2HP^kg3#!ujJq z_S+%q;a-I-IGv5-OIY_$XfJkTUwlGC-9B6ap3Z#HbIiM#G6O3H$urHGzfoeE+ME}F zVa8x|(yM~wcqZFXOcDMUFx@DYeq}lqvi_DsApr3b_H!|Hg2P=~LjBawEnq`SXso(Z zEn887S@;&U$j8oBOX#)V)c(YNTzBBx~H zwT2L0#7-Q6vtTv*`UrLQpa0)MQ<(l!oaLZOJ|#(8B3IXv`Rub#X_$`?t1@pC%0qps z;^XkE*3HcCC=K%8gOpX}rmf*f%Pm*SQcvg8=dn3QX^6W0yy8tqDUJM2Yal8XvHTmo zFpSdDr!(K&3?;lD`%fv3#80wQ zrD!)<%(IO8bm@a%I5L?-k#5Qh!S~esHQS0HAlIK~hB6BG`}!QFoQ&T?_?IGZP)R() zUN1uQ5Bo0n2?9-E!<-hifZT9?o8V(C^u94(!-^@l&otJdf@=J|=V0$R-eY*Q{&^pM20vDv)_qQX zB(|G>RbYd?l1)BE-_i?g&}oWScRRt>pT^0mFvut1$8G=UOj82hYUo32LTK=mD<&Zu^Y~AA7TUE47 zdkO0t{FRtJEZ_`$SR;Jd>N7Z6JjvcY12bG;m(I{IbU@Fuu+45Z@ht7c^?_f`qGHn0 z*oe>I0-CmfJ^LALee&pU|HyT^=4yuaH1!`d@ieJQUITahI`~dJ@}rMNT#ZadV=gTz zl;ah;P35>j`glo^jJm#8re4bZPMsfJn;*^5Q7~G^9p54+-#p5msm7F4#qz7Ecjt}` zvYF>#n$)csgX*+3qqo@EYU&?)(%YJD^S4ip6Ia?W?)vd}PuS`+Z~_ZDM_oNu+9|&l z$DAW?@=QH$@4c7Vyz>+uk&Bx^X{sGYjJEt(smwihw1}xP`=vR>ym%KxH+9a$tGW&5IM)l;ulSnF!?y*KZc zX*2Y1e$#lhzo6iT(VK|eEyMEWYJaC-w)qSCUaN=a-Q;;JoUOft8(iB^I&G`n%-;86JEFoBt)vp-0*2FKIl}UnZkl z?><y#IzXq@i~Gxn|r*L^U<_WQQ(OH?QQOD*SDyS&0caXj{U*yG##x zb+(hb@JiO}D~iMU`-@-E`;V7E&bl*oe>c?CmDXLW58Q<~w0Udk5FFbe+#FV!_Z*mG z`Oe-_0WZn}x0(6U8|AjPmjS1_bbVumYlF2*qYHL9_ZrP$y! z)nOzAph|?#Dd9#DE>psjL>Y(VaJ^U|06K~3uHtBE6?^0=`DvHlP`VZSumLwima(52 zXk-Fh0=OvN;1j}cQ3LZd zofCW}u<&|Z0-D8Q>M5Yp+O`nBv4?O@;Mj>JU&WHO?s>NLDve0Vd)_Y0=RmX-MjT=) z!c2HT7>lUC<$-pA_5gXLy(~~mBm{aN@vHscU^5%2XODk-PEy*!vGUm3K$F#pS+Y>W zoU`mgy^Rf6TcKh>QG}W#d_WF@v6QbV*!x+eo4r&xAvw|+0yQmQ8^5NWUUngxyJM|T z_BD0v@j)RxI-=U_YKZNgLtgI2{`#7t)XP^eT-YCpn;S2DL&3hS!B{X>8H5+g?tePS zKKceemox0lHxv>(2Z)?MC{tb6Xy@Gon%OHHhag7+QD##JI-)(Xx@{sq9wcfD9xpBY zWg{9J#Qajkbl0fU#FIeRH8y>UM?-BLZ`v>7WxOkjscT$w zMwho0O|+r5jTfuwAZX~1_iF3*sYGpNcC7ar!k)WEiR$09)zFpjOKA;6E%IDor;n5(U*iLVAGVY0!@kjVwHt;)KrfXu8 zzQfe}6I&!6@34aJC^)!7Tb7xKwqeO?zC#Bat#Akz90I*O()4`DaWS6+q|9bhJ=A_I z`a1P}B(Xv6`M3}S2Uek&5t=z})!IE^UA8N$eeAkD@#1(mABv0Gi8~B`iFJ}u!#=uB z!`pv`ELM+Ltllz+|5c=Hast06t*0@4Ef$qV@%0)rd`~Mi+phe>E__c0%(B5Z$mo$J z(qvQ?lWtI?E*5nzJ7R<%Mt7BM<8X=<{Xp)xBxbpRVe2p(_ycwE*dj9(Uj{bw2hg8V z=sN{TPE26C1>H-gvnd=b<}&P82fH1_n2FWlNiDl}gF1K|6*QiR zDg;eVtzZ?LqTIf#ZIh9U^hWWO&iXacNVnD2bWeqGi%60|EzH~mzh~E47XAZu_VB@I zY4j9dKCGpQhU#0g(T?$Zo#MW83P1RjQof9E60n18){pdrI_xWU>__U{AzaWx#g_=B z`Sa)gWYwGk+PjHu)j=>*ZWO2R8s^_jPkPAO?UBV{dCj;@=6ji4YNi)38ce>4bzckH za+5l#op-R}n^>zp%hW&N#G{<`{E41%`=HQbiO<(?&Nlx9FM1<8_7lA55rxd{XBw`4 zcsm>WGgcTES=!I^M2CPcl<6d1{NsD!XRT&~Zc>0cU?{uyGZ_PVUjg6_d<&`gLtoXH z=sS(9>r&dI%)mz#v7BEp$^Ff?{ely@t?c42)ZOXM#eXd9!Y=Y@~{7toI*q+-|MvK^@Uum4W_h$CVuN33a03#|6vKh?n4h42>8Hgow`S4`_=QXBi z|It`nWG{2$+t}zk)I0QfpiSY;Bch;D*vRr_-Ev>_w`BN5l+K4+ca~r!FZ?gE4R@#@ z=mfLNGqjr`PXHzjS)NP0zIfzs^g5~CUuR$3rDUwK2mOv)ZyQVuyamHdMWdUHu(*G`@SyR^%+EX{G)?wPLu4`_gf^Sj)yDrF|-hjsrr0 zSs4)CYo)1bZAbQJD~)~RJ50oAs)y%dEa8`}5u=Elu|}R1k)w!U6Soa3RJ;~mo)%^- z5#=ssFaCiIO)0DSgZhSEd)2OeJlrkK7Xcl7W?k%eSmfu7Z;@mcy zFuou?f+0GHvJ!TVL5yd%`VPDOK}Qz)B!3TglZ9olx%igN@st~}} zh5zUah`jDI^eNeedz9(a>OkGQAlMzNb-8w5m^)jbR>ySx5_bhnE{E|aKUGuVTZ@Xx zE%i4{HCBBOUWZ-S1+_Xr{iX}Un^)avDbs1xkMwOsf$&_`E00>`aY=sIIxaS%@HQ5) zERA|4?P9-a)RQz~g*nDa&2Y|H=cEpX0snMT_oiE{yR&+CcmJcxSYYMg$@}dRE|q)S zUGCyqp22=`RtM1sOy{B=6ta1(tsR(tjpyO{XkBygZkhb*U(So3s!V5oi_LXGF@Lf= z7xhE*B0K7$9_igG8nXHHKNcK>;5ARpdra%94$^+J4js)IudobsRfnm2tYgWp>VCss zUIn)0rqldkWU!r)25%QXTM%*T|7q`i{Guw_|Npad7F`r`Ra8_|R7_OV{k>;@uZ2d6 zx+)4PB_f>JOBH(lbbmHUxf`7@JqaDnzwghk#Fm9YA?$Vb z=VpF9ghhByAO{y-&PNV>2IOPevI`rteQ#ef9)gOQ%YB6ifd#QyxstHKU2tC!oYT(Z zKaXz*LKMgk(BH^`VJfx{+$WppNjkZ*N}T1&CuTn{e?VFh2JV0w)vcf|2Tk69;q3F z72U9c`znz*)@adKW~u2h-V-_4hQ)^BJ)di?U{6ky=tBPCHGePfOL-F6?WvZ9(|~%OieEj4h}zV9D`YVr@Z10n4p^OPnpJIAFml_)r$( zJ-!a-j{b%|b<-b#3`=Q zsz9A!NAi6b!Q~itUyO0ackp72!ApJRaNs9XJ-(;psE4^>7z+)H{uow#-o7*UO?o?KD_Z1qW|0YwhgV2xx49EQxTfCT>AIR z3O*0Ci7yCawf)}QfJ=0Jw(peF;2sWGTy_tV8f{h>D2LTE?^_ZD&=<>ahiDO`E^@c$g(Dn{w^3fw% zc*s#$3px>?)0fX@jb!6T4EXS3<50?tW1!qPem%}}MxvZrk6$cCjVJAjo^pEYI6nYy zw(mH9e9wazeY|GPed{r;OHr z_5;3oG_@kE?<3j!JQ(SFym8=nKH&RDQ!5I1@0Mdn^u*r&0dIr%+U$TgUB8~xVDzVQ z2wV_1z$drfLrKTWNspBqXotra8;FxAoBc`Rh}wV|o7s>Q7J&Up!Dl$Xehgb3);|Mf z@G@n@C&+3!sb|;mPsgxD<9DqiUrN)rT~;X_UxBP9lbXZljb)=3&?s0j+%*eM|#A4({#n-p5pUEkmbvdSaUJjy!}Q0RgXSy)u@$ zLT2EF8~^0t*|S_3fyu?UH`Dlkx{8;j;YG;R5iF{IDVgLM#t^b${@ci8zHvOewXX{AgZi2e^V8#5TEAa(_zKt35MT0PzH$Ov$#!hz zbraZxu}>elZ~;SF@VMED?)GeSqKmg}$wqm2E^LhVrGCO$B-4g3@&{6lyFRh~CuII& z5ZbM^Ad)31Ht>o_b~n5JFrPe;g)1gh&z{J1ib02V%K5@Pb}{|oEr_jGvaxLceSGhg zYyzvPU~ zfp6WZx7|nZmBcEcqRzt2^jJDxp~#V=@B%=nzgFa;TqTgP&{ zLT~>G&H1_`^vMi)x`anLzB708HCpx%%Y2vrs%49ZUV-<@a_chs}Eh=M-3ZDW_&$8PBJ_G}e4ye;)fTxDc=LyD2F++?ND{%_nz(>@rV$e%K@ z7YE;mSpMxZNpW;_V|K9G#P+jq=T(QA**b-CK00cCzr^&);iSDTp;-l0|3_k(3S}BP zr|O%nY>Gm$sCv5%cTURCMg)4(&PFSO`ImNPSHAo{3}YS4-D~4!s)LQ6dR--&OkiW} z?ymo~v9{=UJZ8aM_$7YO!RnMr@8M{7I#~o$N_gPOpK#+cjNwggW>&t3N1VL>O!i8z zqa2-yqjc@Nbd;+9d6fBlsqr-!7L6GBqU2tlbO02ZMZ`|6YF7$LY=C*{1BiL($eqt6_$ZA&_Ie1PD}o>e|y zNtS#aqW$_GbWg!^phkTAC6T7@WApse_cWDnksXyyuQaBK*Kgg>#us0U%FDy{QZ{Mo zzFF{-pBm;yRtmFEKhg67RWQ28f>|ehCvtJ?iA09j`O#~cq|)Uf0$v~D1Lm-#z8~aL zo{sU1Ic((6EIRJH_xg{UyQWn@v@ZVC95!9Cn}0Be-Jn>)wR7?Mg$H4d;8qU)Tln(1 zEK2b{&n5iHE9Nr8ga$X=^id9c&i8PueDV5RxHutAljipIv2rmE$v(?HO^36CN zdDik1aco)8UI_{DqU#}O*b@pmeTDq- z`E0`EhvCHSHVoIJg%!+G6?Faf$%OL-!4n$#pG)xVL@P%81mDr;PR(ZwUpn!5*qpS( zi>V=n6>OtnFqJmyE%becJI7on_TFWN`i{OTe-;bR47r8j z6QA;yv7W7Aec0)gk2n+!*%XGGmCVL9`7)@>T@OxWIAb(VqvYKy2c}|JV$H{ZXIGyQ5nD zI~Fc^$_C_5-Y{0jBjVXGmF%m;b~I-^n|p%?Nnm4zyyYWN)-P@O$dKLsEg#ALaQ}Vx zmm8jcv*ja;%UeG1s^-8YEM|blpNzcYL(P+yuuXVK_vI2cjD2?>|7{7oYGfTkV4KG1 z2t0iRCpP)r#x~AR+^z_}Y;Tu=S1e`ItQr2G@&>OQS-*UPR}pMDM|p!+r<~j}d4rcw z!XICcXNA+eESO)FfK?X_zbS!D?ia|z(1;Q~C{qzOqc5J9A&uVKz9@S=+rB)|du{u2 z^KTNEhkcR5r{!RVwKkE(O=Eb?)HfTWZvVQ>P~8uBDu-Y9`v^;)U!C6H9t6+!$MK*4 z86*lM5qB?pxq2Dy9`^Am%h;swG8`kfOR?bxtf;ns+IITe&s*BBdxoO42k~2$u~7~R z;a_e&^7a;*mn+*R$pPrOCVBd;;*oyuZrI;rJ3_Ahf6mtz_f!B;P5 znqc(~ssZd&zKUwhYXqFl$ng&jlK@R|7gFZ}Hln6;&HMG`vERK6yOS^j<( zTNFQ$#Kue$l+5l9&XSK!ThYv`Fi%zQ;I?eq5W9*k#3r;~Rw3sReB2Fe6=uY_H?TAl zo%;XTeI_Te?C*Gd24{!NYe&_wJ zfn>P?*Gy0+A95pGdV{c2PF?QHRI+}lFN=`ff$eMlaDTIX4O#n}zAS2IVEft*dHdRc zHviekomm}sr?R_jZX~^S;1Kk~)MaCq=HJEUKj5WZZ2u=zdsh}eo66>*PG;VOPBD+y z-NY7+OGd!VAzMDYGiY1lh124;EQRflO`l`X-cpyPEeOYp^!hZk>SWH-*f-d{eD}?0 z74!M)H?vg5%IZn!xHZMjq5E%ThxlT&^%tZfsNu< zWU~FCC*u6mPx;oVMjeXTS}Q-E$vzAHVQz1qF!K4a`i%|fQU}$|@q1y0R!1|mc;3Dd zjqMX2a|fE<4*tv?c+OK>{mvas#qgB6=}xRlhw$(2WVHha9>Xd`L6`3_+?p)K#-+MQ64&DjR-VZQm9rr(~8k5Z)QoO)l$i^bvuj$plX5&VFd?iXAL*&ppKSxLG zk=+xU{BC1gxqry4dtSEJV4vf;Eg$K$>3Em1`0;rh7r=}FPMbQ>`_HuetI*TKCA^de)wc~r|%e)Wy@@D zXEr4Gj_?`xqRzwkwfC}9iYBhjWsmi7<2b2B)s4CABYbs~KfQ&`?^|v=f8m$*!s_3) zu+Nke9$$?5^F2oY7vMFcZC8a9%qi73`1YI5U#Ka18{OCA{LBMvismjdq%^{?_B!18 z;Lm5fELIC*EulcI?<3GmKEHrX3YkELuJ>RVcpcwdz+(F!Gs2>L2bM#;xqz+izlsbU zhhdnRo z-$VajJef0yb%bJt(8=ug$GSA9z8H>Df1JWq;TyN@_xFU`Hm|katJ?YJ1yY)1Hn(Si zzN_VfIpqJ%mmRVYNiC$L!rnqsj-I6a2le%rV+36mgAP8HVl+^U{=H-PPI$a@h97z8 z|6}z3#XNT*TDu<6vg#4-qvie**(Zm5M*jb)%feGxyh7n)sVtregunZ;FqGzF6h=j9 zZl*AN@Pll^(A6;dD`A=JO%*hY&v}qdS}=(Wtqm{?q3{>;cM@s!C%-bP-rttV`D<+4 zHm{<+s{}=OWC6}*+q{^?6?RAR96C4PDRi4nnJmrAD-i|M(!A-anfR z9%==te9}W~V*fZYlv0i)p70Qx?fpXwgPj`Usl>ohFXpNSxjI4q#pM6a|M72y{~_|v zp)-1}$A8oK$o21!P_8T6A0g{?ersL(NmzM!5gRac9TM@E*cwW%l+Iuw zcNVc3-l-S8#*tSZoy&lpBl#Q3#r#$xKYwTts)=gkRKj1+hf4Vb`4`bu_0E6wKSciF z^7)WI?)5Dwh?Q>G;0N+&I~47+hxZENLy#8`#9LED9nwxYOh@~KzlJHGWKt-|9S96w^NX34g+5ySKrtRac%3KcEfzsA zeJl#|A!{L5y1R6699MCP)$FX~+wZT1W%rW5|z? zel4Of24aOILeg49udoTqBajNnVMq()M~LvLD1<VPF!XQ&1c1SGb21qvKK}Z>-5>orwSmY2&3*>vqdB|Xt$aqLN5{lrXIlDS~ z)@KU!y+10{vxAv>VirEe`n#l6JT@sLyqb^;6GRZwanEfB0i z3HBy2V20;z+%`vRzY1hLLp0CzM!tl=W|Ngl|zfh2JWS&HWmoo;9X$oyG(sI7y*WZ1~40p1@XF^kObn3YeE)CO*DZlAqKn`OacqROc1Z!3xy!vrC zffeBWU@hpy+wnp(lt{1xq^mIGeWo4{MuU_=H@Fo{1Pj1a@BuIj91iAzVc>3XELa2H z4mN;!pbyLkyTDZ`DYvg#zdmB^s#|VKzcZrx)IRo6uvhhkzf9C1_3dFG^$!ssRhkB* zGL%4Sm2Qw4ODssO(F0N)C4zJY$siS3DoCfE0aEMD0%@O14oKZXK8VKV6^fux^DF_W zlFC4;lX8$+OC?CHsRpD|tplmGHGs4&qzR|EZCrCxp1xA3vm;TF2 z1&*gysD?5D_Arp@A_ANUMuF7)H6XP*38c%#4N|j@1*d`@Fd9q*r-8}f3@{Zmff=9~ z%mO7a2gHL#As=*7B^N<)fhC|DECXkP<>1v|B^U$NfV06m@EWiIycTQ%=YTEXT(AwC z5Bk6bU?=DSyTGNO(8kmWfC}_3hoXkE1`Hzu7y&BK2qHlSYCsXRgY=2dSTG2T2m64@ zU|%pDRDoGwFqjAS2aCWEuoN5smV;M-Rc*|x9tfol25NPU;2^LC91NZWhk%`6DA)}S z1yx_6O@N_b7#IPL0HeW?pahNrW596G1C9ohz%gJdI2O$O%8Nz;B?pFaU?DgjECDBg zyTM4X5}XLuf>(kK;3TjaoD8;sQ@{>zD%b@^gUYYbCctoT1{ekEKm%w1-Cih0C~=?( zOa#qf3MhdYpaskZtzbTA1B*c?SO&Vl3eXMKfHT2*@M^FLq_2qjz**oKa5gA>gEjB@CPcMuKxe4HyU7!TDe;xB!d?Jzz4p2uuf;f>~e!mB>S0czV*x|J5HJj+o+lC<0&2ie&<+j*V?p}eg?Ml@ zm<~pRS)dIp0-azfcr{oK-mF4%uY;mMm(>I+!B(&@=mUenGhjbZ_!b!fL%@+>7-$1E z;LV^NRG@2%1F_FtNCf+WDImS(lmYewv%wHB9~|k0QVhigmVpX%eU+dRtOfgm4PY?X z4E6)tz!0zl90_)THc2>FA`Q}74XpbZQM6;a3#7z|3}55}Cr^{rQ{A`dVXRA_L0k{!$;J6K3|11?XpgS*KNR+3#piIE#@Ah#VQMsBc;+-{T@xxp@C z3^MA&_1`ZRIrV{Y$SKi->l9RG<2nULf-xZVidPB#{v3G};$XWCRAFENghaSoz!dN^ zFataQW`kv5KKKw=3?2i^z>lcAt$^|&SOe|>>%mvRCa@lC1zSNMNaMj7un`p6nfeVN z1Z)5k(ZACG6$ba?pa#5|+_2L`G8XRDpc)ybSxY?JUX+56427mW>0mV&h5$5A%7c3r zsDWDv7QsyePbqjmD8Wv1gmSo1i1OTk<_cACKMmG_4}*;$4OA`QOW;XxABgeBE01)Y zFciQLiv;_E!uS3W%>%az&Jei&1%`n~!AP(I)PV1TcJL7}7JLc0+3DGdJx6LG*`upI8=U={c|SO;BHWL znyH@$L%}b>2=Gxb8f*h4@DLc|h4KLu5BL?B1fBp>!7so}@KZ1cd>f2HT}}WC;ie%w z8E%@4l)#-1y5Xit%Wk++$sZ@w53Gbc4$Oi7bg&lg^`JKu0s2E}fT0*{2A=`jz!$&{ za2|-A1L~JSWe08(K>=5T6HvpQ57K1B42Hu^jXDGAhJaCU(_|zc{xmBxz?}&;!5@8) zS8&6yABH%PCL>w!7yu^1y#VweVicGHcN(aIdn}j%_bM<4;jaL*;l`CKPb>!#;eHG( z1{Z=w2uIgx8QhD&ETl7y=6@A1+zvwt3|g=T?ktd|QC6@X?t94}2@C?8;9d;U^vMOb z!o3wNLwFt70r#Dt1ouR+3+@|14cw8S@(28Q9H<5#q@qfN$5b#JhFicWFc<8C-2ocl zz7O=lZ3EqK=Yd6VYrr_Tp8ylVJHQlh1DF9W0n3o_!C*Gr+rfM=9xMjE97;I?3<1kv z*ap@iVG~#Z_a?9s{-IzE+)IgY4+ZPtP5_(060j941UtZ|z;3V{tV8%=V91Y5od`C- zJsb@C5!e4RC^SR0gOLcZ1=N7gfp%~s7z>tyEr>V*jE8##7=d`>!DP5oz;y6+FdIAq z7J`*vDOdwmfbWB~;5%U37hd%5P#R%K0;!+>25f=*FxUyc2C9By>Sw_Sa0lo^Mn-`W z+&jS-@H(&@8PbCuxbFgKX6*)(;C=vXg1-c&!<_@Rcww+W$%0`s*olP0!92LH2aCX4 z!7kWGgQak<1Zxn_2$sX04XWXe0IT4>0TkdK1JuEt3|7Kz02|?c5zdoT&f zd~*vHR|b48s4Mw_7Odoi{0G^EBtc55&$X~?6yCP8Ox*!F0}*~j?*R#eL_!P@HzXF~ zfh0jvA>jwnn}FGnJV-vI5K;swhLk``A!U#X2>m8;C0GT?MviO1T1efmY?QhlN&}=3 z(gbOSv_QhE`S+hOlUMy4E(1syBpeb2F+l8)SV%G?9g+hngVaIVAVL=o42gjxL-HWI zA&n3pqzlpwQJzEk5DDUj#6glES&))*%&D$};)AGv$3Y>9kZed9q!H2u3B~WOP^mc=4Oz}5nxu-fMp>UUpN zsLw*!=L&Tq~0Xcp->N|3=`$cEd->FB^0DSJ{$}KBSGr9qCx7h3?Owlc5njd2B}Yv0jaN# z1+N4>+<1XaomGSU!zCma;V1r}7kwkDNpB12cNXKv83Ov}lRNtGw6V}JSrO1FL-hfjGU^NHlp)~(e>!uZ zMm*s4JC?&C1w1IHDFK}_Q4-LvfnFKVsk9n;>21(w3yb7Z5eob|Wg;S=Q|4j zx&k`2iSP&gY0iUg59r98S4avt=*)5gI@N1gK&Psy59oB3Z2_ICK=qJ6(Phx10y<3u z+2^#ZM>(x;O%Ul)Z;-p<8q#tW~B z@^iXK{0B^@Sdg|hHowvhg&F^55dW#f?(g*1=8J+$UsnX(-94D+XFTqf4D>(KDl=goR*LZ z?<`2~BPmadYR11R5r^PIAe(oHLxz?I66r~}2JSk(X9rHD$BWj2m5?k%?(7wuYyw_6 z4TWeRagbF0C!*q8p`&+-qi_rhF#4}2M)4@J8xqNH+bIs2R)V;2$$#Wk4tFi&V!8qU zD&#?wPvF{~C=m!wQ99w(5eP=-9}MY+I}&fZUY14J+^}6tnh$s!S?=J|9v4TMdQwGX z`A^e<6&XF8;DCe>IZ3ry9@IFovW`X zSG8PGDh?SDg;$FaS^lFONN~qM%J{TWaqP6--V~-1ttj&^QS#s}lB3*-D3g18Q?@QgU{g3@0KqLu}slAB7W67E_^S)fBr`BA>`ru7a- zVRI0-<1cZ$;Z_}@I{O)i!{t6`mpEj!1PjHWKPt>vxDz4%kTZ87q{LTI$o#*AEP=cH zV#tRnWIjKDkds>iA$v~P2X{B*ujPhc8ZJY>-4k5S1O8L~gf?1xDO++Ig&S@3X=wwzT8_!-s`au0p2vC z)5zWv`>wlEZnzQN9{%&Q;t)stVNvdWrr(~qI`Z1(wDvC~_O`{(oJqE%%WVE|$$aK> z;*fdC&7weWC`@1D&u|^wQRKdf+>vr-e6WRHvgx4;-LOTXLIdFpWQ*Xto)fR3k4^~F zGt<|TNh$yHyCdON!QJB@x!j)<0dJ+1!EgHQ>u+BjsnJ3e%G7*mxtJE5a~Q)s-1Yq3 za&f}A3^>V~{-}9SQpvE54|;S&U+8Ln+a7T&kKQB3V1u))*X|KRvDM}H9&su@3Lu-p z_lhC-=&`KFLRSj)qWa-+p**8PRPoHcVyH4YU~%siRS`uy{FA8dARVz3q$5%ek}pM7 z^0vLACae?|@}+E7K&KeBATN4e4CgWX#L%H<0zqhQWXH}r3Zmq<>=TENR3mMgE`&a|7bUFGvf#?*tiUQ9a>gyG*D-ce_ zZ+k&p5uDuMZy&qKIfSD-RdO^ECGUJeR1Nh6e0%5F%?IokM=2ZOMJMRqkK+jZ;r(bf znft|XMKtMC@!byD)Vd!{rI_?l!IV{MWGDSz(UoXq;rzBraRNRe4~*iKm7;_RhOFo8 zLoQSYL~RK77cre(XD>hLfEcL^e?O3oy$D_QycojsU=B-$xu;|@pi|r&P;Nt0-Wn~) zFZED0P{omNO&|shh(e=3M#KC5vJ8Jw)C_GK>3@rd0#kVqqxh;9#RO_#`So0z(hw<9>r)4u|xd9M!Y1hxR^pJ%#=bVSjV@%Bu=>K zRTl87kiFh~Npy|qN&E~<@~M4*ab5NvQH5*2$6Et4dAobOkrz0zL2Xpg5Mz`!}C*P#igNMzf%v522VnDW@Fsr<@7;^R@LLno8Km z=vUMS#jpX#eEtZ<;FJ6)Jk=6kEfF>LM2e!dgn z;DCMQ8-DxoTAAYT*ZfI}ai9AY#q0dt8gZ=naUUihOPq{PjMG6y;}FL8RYUn^K)|wh z6yyEjrKsRrU%`akoN(!$v>){IfxAO|R!_c5>~Rm~$6pcmP42nNeFP&8l~9l5!(9j| zfqBg{fst!jTH%2=f5T9_rWzfs8ODFY8!F0ozLerqEpT1xA~0^`*FbUchrw| zKYl)ni)GYNaU6ncKY+gYs5lWi?4f+yQE`%AAHva-MEP}>Kj;Er^9Lf~_y_XAfA(Y0 zG5O%eW8&D+`M>zv>U7u4rLM@;nRjNaamTpVXQsH_0`lh%`PeZG82S9oW8w_p=VRhx zU{=##qTjG8W#y{$^mVH*M&FDe2)WCTH~sjkNt`gE_hIRnD{s1W?K=68qmRp{H0!u{ z=wVIY>b}k5U2G60P%+de1pa)3`6C~T&VfuGsHwY`FA4tT$KoqPb;5K(BTU2Fb87{I zutu;5Mqv$q{u6Q1-*~luA}0Ke*OC@-@+gg9MshmAg!d$Lf?lu+S|n_RW~koLB7P)# zH=6QIwNhWpaLYK0$uisGu_RkEEO%MfTC=Pwo7y(oHr1xLS!@p5)wYGU>unot`L^@U zk*?{kMArt_Zda#Eh`>S$&d#KX)ud?BH1}&B)D&xWXr9vu+92&v?L_TbZI-rJyHi`O zeO+6xeOLR5R--fOX6csbwukA;b@jUUbfdxrS>H6xE^=tGS^jmn)=i-e)TlCNB zU*xxaF0Kd)cg%I%U48s>QLn_e8-urM+33qur)`8u_l*ChO{SKHVVwB>h$T1bwmosJ=B^|BHT<;Tl7n zA<1xy;XXr=;c>%rhL;Sl8;%;L^FO{8vy^pMdaAzj8}W$38)-M&o%R^}wf1=XYWpqr zyY0F5I(vitOZ&I>)AnEO=j|%TNJoU@N=LLq=de3wI~F=tIFcQk9rrt)bhJCV9DSY9 z&iT&u&O^>4&i9=Uxwz{+*QYL@3+K=z2oboxBQ>jV3MVudG{dxGa02tStF=wq3)+FY zE4@0iE><^Bw^nzvE=%{8?rU9#?sr{?ew==#UNYQls4{$O7-5Vy%{IlEl1=MPn@y#r z=S(KE%Y2RbLGu&l-R95C-)jxXL;H3n&orL zHuBY4h36+9K`I zc8C3Hl<5+CmOaP5#lFv8Y5&;%wcTe|I}SRIIX-fH?$|*kXghTZz0x?`Xf$4J{Mi&`o?$kaC9~b^Hg7kdFt?dcntkRD^A?;UZ75I(^2@PH z=>7>EF=n*_k3S`9yszos)W4;F7tQIo{v-XT`f|f$qZUaP8*7bSMy1JZ@|bQktuyT~ z9W>ROnoM7q1hd*a)I8GcF)uMMH$RHz|AhId`9t$3=3&w(DFRjFk(NlyrA^WU(nC_Q zR3p_(?@Av?XC;NDkEOrGX1Urj-?GATnu;ry5DIoCede%DK`YS$sx8?Ga+cU|+I0UzXx(DHmrdzKx*bG-0QqAKmlhMcAX!+d^k7R`q=>;Ft zD=i}|3(yvP)(*6WGuAG&2f_9o)m?^y8o0nTeKh?vS7-)nhH3D-5t{LuD>YLz(=|Do zgN9>$NEHcMX3UB8^Vt8sojjiC)tN)3c_JP2b8NYPHU_ z##^^qcUr5Eo%gKGxH9|NOtwVZ9kzM)1p8g~JbStQ8~gW;@y?~rRnD88cRBBMKH$8< zHNrK)HQD8GUF#}#9drqG3jFG&Ak5TUr9G|Ps^4p@G#)m3j~cC}c+(JEB_EkbN>ijR z%VK+h{R{hdcC%x?Gtarp^_twFDTHK1K4o~({Ij{stdfRHVXLNgY`!UEi>pH!X+(Q=r`(f^riae^cDI8`eW#W z&SG{DWawv@Zn)a8(vW6YXUH@>V%TkX+i=|QvEhWF+Yn-mGU|?EPd+M^oQsddk#j`rY)2InI)Z3c1~D z*@ywkV-3O~w%eYyt*|FK(jE6Ww%~Gl*0J9)*(o{aIFp=N&h5@J=K<%-7-`QtgIpo5 zA+BjIyKA;+aU&=n8aCp|Ic7{jBSw57m#>FVb(- zzoGw7pJFI6ykY2P^!{m#z!;lq`pI+#`MO{lVAi5Eip(#fjjN@}k_{dB0_jF{+JlhM zMb>QVKI4J*(-f9ig47b!Zo$9jw=G(Q@q`?IG<^ zZHVryVK0V}4~%WbUyRdD|1tk=W?reEG*~)jyTN&_>s55)3==~<573;~eW+Jq2JH&qr9keqMq9PkJF540 zii=tBXA-l-SvFa!c>n*1FI`=!t-}S;rtQ=Ux)7aO7pe=_Md%`R(K?OJptI}Tx)@!Y z&ZCRhl^ZGym4*gGqoK*rY-lmGqJ^uCp~f)&#yN4?m~3N?G0&KfToqwpE-{v(u{RhS zjZMa8V~de{&WLf!T2q~gmz@zq-8AlpN#PiZBc&)QTGB`cNusGo9h2vqO`2v+i>5=< zsX3$R(sbh*R%%t+5UpApstwbIYx#Y@ilw~htQg7)MgHTT;`P{LiLOdlqpQV4wO-et>&A7i)T{K-JmH-9rrV#_RwJ!W z#h_1dn`1GBh&Lyilg!EH6mzOM9oJ-*Ioq6L&NJtm3(+P^G3zTgSC}i!Rc0RlyJ))7 zZi&I&L6#-kl4HrU7{43e;D#xy9Uy$&^rpIJk+5 z)y8X+wduH>$U}Emsx8-6p^h8T8Jt8dcWYIs;|SERgqro}l60xMOk9(ND4E^5N|a0k zy1+I}e7kf?y;>ixkJ20TZhf3SQJ@D-9~-KGYD6 z+{fZZCB=|x$iZb^jP4wb-iuaWWvE4)KZz6QLeDN3l|~g#LvH=XaGZ=Cmt~?c6&I%e zGAK0eHdYyHdR+jm=wMD7eZ~%BC+4hbQ-mqfWH3o4yD7$$WJ)(>m~u>c7!8U{<)#`_ zEjr{TQ;Vq+9iTVF9Bz&=$TJYV!B&_iC!Hhdd=uDS~1!4q4QE(LM>sI2;8g0qJK!j>@&rZ zigujum7A`=(biaMEp?U#OPi(Ba>k;xs;nWneF?ROTMf8xiM1wLlQ8i}v8GxxN4Q#hAI&;x@6#-fVBNx8eST`VmoR z!WEpZ%f`)fC7QGkx6Ywx&XM|Pxn0D_O*#w1dLah&8nlO#n0>3!1|&la+CVx6^c>WG zqZfT$8|pmN7=aQykQOrfY(s#T9E%T#D8F_ob{ z>rj_%CLijv3-=}==4jjqxzU{zq5{jzHMlu%M5TqH%A%z>R98MGzg2;`xc8)_MD1u$ zGj7yOI(n88^dk)xA1a~CBA^n~)-Y=X?jJoU_AF}-ioOW #include +//Guard for M_PI ???? ref https://github.com/acemod/ACE3/pull/2382 +#ifndef M_PI + #define M_PI 3.14159265358979323846f +#endif + #define GRAVITY 9.80665f #define ABSOLUTE_ZERO_IN_CELSIUS -273.15f #define KELVIN(t) (t - ABSOLUTE_ZERO_IN_CELSIUS) @@ -572,8 +577,8 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function) positionOffset[1] += cos(bulletDir + M_PI / 2) * horizontalDeflectionPartial; } - double centripetalAccel = 2 * 0.0000729 * (bulletDatabase[index].muzzleVelocity / -32.2) * cos(bulletDatabase[index].latitude) * sin(bulletDir); - velocityOffset[2] -= centripetalAccel * deltaT; + double centripetalAccel = 2 * 0.0000729 * (bulletDatabase[index].muzzleVelocity) * cos(bulletDatabase[index].latitude) * sin(bulletDir); + velocityOffset[2] += centripetalAccel * deltaT; double spinDrift = bulletDatabase[index].twistDirection * 0.0254 * 1.25 * (bulletDatabase[index].stabilityFactor + 1.2) * pow(TOF, 1.83); double spinDriftPartial = spinDrift - bulletDatabase[index].spinDrift; From a383da5b2dc075ab5433353f7c55fb23dfc92b68 Mon Sep 17 00:00:00 2001 From: freghar Date: Sun, 20 Dec 2015 11:53:08 +0100 Subject: [PATCH 072/107] fix inverted isTurnedOut for map lighting According to the comment, the idea is to provide unobscured map when inside an enclosed vehicle (!isTurnedOut). Signed-off-by: freghar --- addons/map/functions/fnc_determineMapLight.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/map/functions/fnc_determineMapLight.sqf b/addons/map/functions/fnc_determineMapLight.sqf index d023573cd9..9712b84515 100644 --- a/addons/map/functions/fnc_determineMapLight.sqf +++ b/addons/map/functions/fnc_determineMapLight.sqf @@ -73,7 +73,7 @@ _vehicle = vehicle _unit; // Do not obscure the map if the player is on a enclosed vehicle (assume internal illumination) if (_vehicle != _unit) then { // Player is in a vehicle - if (isTurnedOut _unit && { _vehicle isKindOf "Tank" || { ( _vehicle isKindOf "Helicopter" || _vehicle isKindOf "Plane" ) && { (driver _vehicle) == _unit || { (gunner _vehicle) == _unit } } } || {_vehicle isKindOf "Wheeled_APC"}}) then { + if (!isTurnedOut _unit && { _vehicle isKindOf "Tank" || { ( _vehicle isKindOf "Helicopter" || _vehicle isKindOf "Plane" ) && { (driver _vehicle) == _unit || { (gunner _vehicle) == _unit } } } || {_vehicle isKindOf "Wheeled_APC"}}) then { _isEnclosed = true; }; }; From bba908fcae3cee17bf2f218de0f011eb80c8c0ae Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 20 Dec 2015 13:50:13 -0600 Subject: [PATCH 073/107] Better fix for M_PI definition Just use #define _USE_MATH_DEFINES for cmath --- extensions/advanced_ballistics/AdvancedBallistics.cpp | 4 ---- extensions/common/shared.hpp | 5 ++++- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp index fe39f69c39..8286e054d2 100644 --- a/extensions/advanced_ballistics/AdvancedBallistics.cpp +++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp @@ -5,10 +5,6 @@ #include #include -//Guard for M_PI ???? ref https://github.com/acemod/ACE3/pull/2382 -#ifndef M_PI - #define M_PI 3.14159265358979323846f -#endif #define GRAVITY 9.80665f #define ABSOLUTE_ZERO_IN_CELSIUS -273.15f diff --git a/extensions/common/shared.hpp b/extensions/common/shared.hpp index 6c49b99fad..ac8cebaf94 100644 --- a/extensions/common/shared.hpp +++ b/extensions/common/shared.hpp @@ -1,5 +1,9 @@ #pragma once +//_USE_MATH_DEFINES + cmath needs to be first or M_PI won't be defined in VS2015 +#define _USE_MATH_DEFINES +#include + #include "targetver.h" #include #include @@ -11,7 +15,6 @@ #include #include #include -#include #include #include #include "ace_version.hpp" From 543f13c7546fd0aab29b751e7c0d6ab811c4f878 Mon Sep 17 00:00:00 2001 From: Ken Date: Sun, 20 Dec 2015 14:37:14 -0600 Subject: [PATCH 074/107] More Fixes --- optionals/compat_rhs_afrf3/CfgAmmo.hpp | 34 ++++------- optionals/compat_rhs_afrf3/CfgWeapons.hpp | 73 ++++++++++------------- optionals/compat_rhs_usf3/CfgAmmo.hpp | 1 - optionals/compat_rhs_usf3/CfgWeapons.hpp | 44 +++++++------- 4 files changed, 65 insertions(+), 87 deletions(-) diff --git a/optionals/compat_rhs_afrf3/CfgAmmo.hpp b/optionals/compat_rhs_afrf3/CfgAmmo.hpp index d38446a290..2444da41cf 100644 --- a/optionals/compat_rhs_afrf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_afrf3/CfgAmmo.hpp @@ -1,10 +1,8 @@ -class CfgAmmo -{ +class CfgAmmo { class BulletBase; class B_556x45_Ball; - class rhs_B_545x39_Ball: B_556x45_Ball - { + class rhs_B_545x39_Ball: B_556x45_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.42792; @@ -16,8 +14,7 @@ class CfgAmmo ACE_muzzleVelocities[]={780, 880, 920}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball - { + class rhs_B_545x39_Ball_Tracer_Green: rhs_B_545x39_Ball { ACE_caliber=5.588; ACE_bulletLength=21.59; ACE_bulletMass=3.22704; @@ -30,8 +27,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_762x51_Ball; - class rhs_B_762x54_Ball: B_762x51_Ball - { + class rhs_B_762x54_Ball: B_762x51_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.8496; @@ -43,8 +39,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball - { + class rhs_B_762x54_Ball_Tracer_Green: B_762x51_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.6552; @@ -56,8 +51,7 @@ class CfgAmmo ACE_muzzleVelocities[]={680, 750, 798, 800}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball - { + class rhs_B_762x54_7N1_Ball: rhs_B_762x54_Ball { ACE_caliber=7.925; ACE_bulletLength=28.956; ACE_bulletMass=9.8496; @@ -69,8 +63,7 @@ class CfgAmmo ACE_muzzleVelocities[]={700, 800, 820, 833}; ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4}; }; - class rhs_B_762x39_Ball: B_762x51_Ball - { + class rhs_B_762x39_Ball: B_762x51_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.9704; @@ -82,8 +75,7 @@ class CfgAmmo ACE_muzzleVelocities[]={650, 716, 750}; ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; - class rhs_B_762x39_Tracer: rhs_B_762x39_Ball - { + class rhs_B_762x39_Tracer: rhs_B_762x39_Ball { ACE_caliber=7.823; ACE_bulletLength=28.956; ACE_bulletMass=7.5816; @@ -96,8 +88,7 @@ class CfgAmmo ACE_barrelLengths[]={254.0, 414.02, 508.0}; }; class B_9x21_Ball; - class rhs_B_9x19_7N21: B_9x21_Ball - { + class rhs_B_9x19_7N21: B_9x21_Ball { ACE_caliber=9.017; ACE_bulletLength=15.494; ACE_bulletMass=5.19696; @@ -109,8 +100,7 @@ class CfgAmmo ACE_muzzleVelocities[]={445, 460, 480}; ACE_barrelLengths[]={101.6, 127.0, 228.6}; }; - class rhs_B_9x18_57N181S: B_9x21_Ball - { + class rhs_B_9x18_57N181S: B_9x21_Ball { ACE_caliber=9.271; ACE_bulletLength=15.494; ACE_bulletMass=6.00048; @@ -129,7 +119,7 @@ class CfgAmmo class GrenadeHand; class rhs_ammo_rgd5: GrenadeHand { - ace_frag_enabled = 1; + ace_frag_enabled = 1; ace_frag_metal = 200; ace_frag_charge = 110; ace_frag_gurney_c = 2440; @@ -139,7 +129,7 @@ class CfgAmmo ace_frag_force = 1; }; class rhs_ammo_rgn_base: rhs_ammo_rgd5 { - ace_frag_enabled = 1; + ace_frag_enabled = 1; ace_frag_metal = 193; ace_frag_charge = 97; ace_frag_gurney_c = 2800; diff --git a/optionals/compat_rhs_afrf3/CfgWeapons.hpp b/optionals/compat_rhs_afrf3/CfgWeapons.hpp index 0c3d3dfac4..32c1f590c5 100644 --- a/optionals/compat_rhs_afrf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_afrf3/CfgWeapons.hpp @@ -1,61 +1,50 @@ -class CfgWeapons -{ +class CfgWeapons { class hgun_Rook40_F; - class rhs_weap_pya: hgun_Rook40_F - { - ACE_barrelTwist=254.0; - ACE_barrelLength=111.76; + class rhs_weap_pya: hgun_Rook40_F { + ACE_barrelTwist = 254.0; + ACE_barrelLength = 111.76; }; class Pistol_Base_F; - class rhs_weap_makarov_pmm: rhs_weap_pya - { - ACE_barrelTwist=240.03; - ACE_barrelLength=93.472; + class rhs_weap_makarov_pmm: rhs_weap_pya { + ACE_barrelTwist = 240.03; + ACE_barrelLength = 93.472; }; class rhs_weap_ak74m_Base_F; - class rhs_weap_ak74m: rhs_weap_ak74m_Base_F - { - ACE_barrelTwist=199.898; - ACE_barrelLength=414.02; + class rhs_weap_ak74m: rhs_weap_ak74m_Base_F { + ACE_barrelTwist = 199.898; + ACE_barrelLength = 414.02; }; - class rhs_weap_akm: rhs_weap_ak74m - { - ACE_barrelTwist=199.898; - ACE_barrelLength=414.02; + class rhs_weap_akm: rhs_weap_ak74m { + ACE_barrelTwist = 199.898; + ACE_barrelLength = 414.02; }; class rhs_weap_aks74; - class rhs_weap_aks74u: rhs_weap_aks74 - { - ACE_barrelTwist=160.02; - ACE_barrelLength=210.82; + class rhs_weap_aks74u: rhs_weap_aks74 { + ACE_barrelTwist = 160.02; + ACE_barrelLength = 210.82; }; - class rhs_weap_svd: rhs_weap_ak74m - { - ACE_barrelTwist=238.76; - ACE_barrelLength=619.76; + class rhs_weap_svd: rhs_weap_ak74m { + ACE_barrelTwist = 238.76; + ACE_barrelLength = 619.76; }; class rhs_weap_svdp; - class rhs_weap_svds: rhs_weap_svdp - { - ACE_barrelTwist=238.76; - ACE_barrelLength=563.88; + class rhs_weap_svds: rhs_weap_svdp { + ACE_barrelTwist = 238.76; + ACE_barrelLength = 563.88; }; class rhs_pkp_base; - class rhs_weap_pkp: rhs_pkp_base - { - ACE_barrelTwist=240.03; - ACE_barrelLength=657.86; + class rhs_weap_pkp: rhs_pkp_base { + ACE_barrelTwist = 240.03; + ACE_barrelLength = 657.86; }; - class rhs_weap_pkm: rhs_weap_pkp - { - ACE_barrelTwist=240.03; - ACE_barrelLength=645.16; + class rhs_weap_pkm: rhs_weap_pkp { + ACE_barrelTwist = 240.03; + ACE_barrelLength = 645.16; }; - class rhs_weap_rpk74m: rhs_weap_pkp - { - ACE_barrelTwist=195.072; - ACE_barrelLength=589.28; + class rhs_weap_rpk74m: rhs_weap_pkp { + ACE_barrelTwist = 195.072; + ACE_barrelLength = 589.28; }; class rhs_acc_sniper_base; diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index b859a520d2..44c0285e40 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -93,7 +93,6 @@ class CfgAmmo irLock = 0; laserLock = 0; airLock = 0; - // Begin ACE guidance Configs class ace_missileguidance { diff --git a/optionals/compat_rhs_usf3/CfgWeapons.hpp b/optionals/compat_rhs_usf3/CfgWeapons.hpp index 54bba9a0cd..becb91ada1 100644 --- a/optionals/compat_rhs_usf3/CfgWeapons.hpp +++ b/optionals/compat_rhs_usf3/CfgWeapons.hpp @@ -8,13 +8,13 @@ class CfgWeapons class UGL_F; class rhs_weap_XM2010_Base_F: Rifle_Base_F { - ACE_barrelTwist=254.0; - ACE_barrelLength=609.6; + ACE_barrelTwist = 254.0; + ACE_barrelLength = 609.6; }; class arifle_MX_Base_F; class rhs_weap_m4_Base: arifle_MX_Base_F { - ACE_barrelTwist=177.8; - ACE_barrelLength=368.3; + ACE_barrelTwist = 177.8; + ACE_barrelLength = 368.3; ACE_Overheating_Dispersion[] = {0, 0.001, 0.002, 0.004}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; @@ -113,8 +113,8 @@ class CfgWeapons }; class rhs_weap_m4a1; class rhs_weap_mk18: rhs_weap_m4a1 { - ACE_barrelTwist=177.8; - ACE_barrelLength=261.62; + ACE_barrelTwist = 177.8; + ACE_barrelLength = 261.62; ACE_Overheating_Dispersion[] = {0, 0.001, 0.002, 0.004}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; @@ -127,7 +127,7 @@ class CfgWeapons class rhs_weap_lmg_minimi_railed : rhs_weap_lmg_minimipara { ACE_barrelLength = 465.0; ACE_barrelTwist = 177.8; - ACE_Overheating_allowSwapBarrel = 1; + ACE_Overheating_allowSwapBarrel = 1; ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.003}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; @@ -137,37 +137,37 @@ class CfgWeapons ACE_barrelTwist = 304.8; ACE_barrelLength = 629.92; ACE_Overheating_allowSwapBarrel = 1; - ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.003}; + ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004}; ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9}; ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075}; }; class rhs_weap_m14ebrri: srifle_EBR_F { - ACE_barrelTwist=304.8; - ACE_barrelLength=558.8; + ACE_barrelTwist = 304.8; + ACE_barrelLength = 558.8; }; class rhs_weap_sr25: rhs_weap_m14ebrri { - ACE_barrelTwist=285.75; - ACE_barrelLength=609.6; + ACE_barrelTwist = 285.75; + ACE_barrelLength = 609.6; }; class rhs_weap_sr25_ec: rhs_weap_sr25 { - ACE_barrelTwist=285.75; - ACE_barrelLength=508.0; + ACE_barrelTwist = 285.75; + ACE_barrelLength = 508.0; }; class rhs_weap_M590_5RD: Rifle_Base_F { - ACE_barrelTwist=0.0; - ACE_twistDirection=0; - ACE_barrelLength=469.9; + ACE_barrelTwist = 0.0; + ACE_twistDirection = 0; + ACE_barrelLength = 469.9; }; class rhs_weap_M590_8RD: rhs_weap_M590_5RD { - ACE_barrelTwist=0.0; - ACE_twistDirection=0; - ACE_barrelLength=508.0; + ACE_barrelTwist = 0.0; + ACE_twistDirection = 0; + ACE_barrelLength = 508.0; }; class hgun_ACPC2_F; class rhsusf_weap_m1911a1: hgun_ACPC2_F { - ACE_barrelTwist=406.4; - ACE_barrelLength=127.0; + ACE_barrelTwist = 406.4; + ACE_barrelLength = 127.0; }; class rhsusf_acc_sniper_base; From 0addb592d3fc1c24c3b900916276c468c0bed2ca Mon Sep 17 00:00:00 2001 From: jokoho48 Date: Mon, 21 Dec 2015 02:29:10 +0100 Subject: [PATCH 075/107] remove Unused Varaible in AB fix private in AB --- addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf index 5874de96c4..fc8dc1b8a2 100644 --- a/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf +++ b/addons/advanced_ballistics/functions/fnc_handleFirePFH.sqf @@ -12,11 +12,7 @@ */ #include "script_component.hpp" -private "_deleted"; - -_deleted = 0; - -_aceTimeSecond = floor ACE_time; +private _aceTimeSecond = floor ACE_time; { private ["_bulletVelocity", "_bulletPosition", "_bulletSpeed"]; From d9e7a43bf7f22c2ceebd3aa3a421ff9784da1468 Mon Sep 17 00:00:00 2001 From: Githawk Date: Mon, 21 Dec 2015 16:53:25 +0100 Subject: [PATCH 076/107] Fixes error with new interact_menu --- addons/refuel/functions/fnc_makeJerryCan.sqf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/refuel/functions/fnc_makeJerryCan.sqf b/addons/refuel/functions/fnc_makeJerryCan.sqf index 3df209196d..8febaf41f0 100644 --- a/addons/refuel/functions/fnc_makeJerryCan.sqf +++ b/addons/refuel/functions/fnc_makeJerryCan.sqf @@ -85,5 +85,7 @@ _action = [QGVAR(Refuel), [0, 0, 0], REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); -[_target, 0] call EFUNC(interact_menu,addMainAction); -[_target, 0, ["ACE_MainActions"], [_action, _actions, _target]] call EFUNC(interact_menu,addActionToObject); +[_target, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToObject); +{ + [_target, 0, [QGVAR(Refuel)], _x select 0] call EFUNC(interact_menu,addActionToObject); +} forEach _actions; From c1fa81f28b237e9d42d3600913105c4316f707ab Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 21 Dec 2015 17:05:48 +0100 Subject: [PATCH 077/107] Fix tabs in sqf files --- addons/common/functions/fnc_fixFloating.sqf | 2 +- .../common/functions/fnc_removeBinocularMagazine.sqf | 2 +- addons/concertina_wire/functions/fnc_vehicleDamage.sqf | 6 +++--- addons/dragging/functions/fnc_dropObject.sqf | 4 ++-- .../functions/fnc_ctrlSetParsedTextCached.sqf | 4 ++-- addons/interaction/functions/fnc_joinTeam.sqf | 2 +- addons/medical/functions/fnc_actionDiagnose.sqf | 10 +++++----- addons/movement/functions/fnc_climb.sqf | 8 ++++---- addons/optics/functions/fnc_onDrawScope.sqf | 2 +- addons/safemode/functions/fnc_setSafeModeVisual.sqf | 2 +- addons/spectator/functions/fnc_handleCamera.sqf | 4 ++-- .../viewdistance/functions/fnc_setFovBasedOvdPFH.sqf | 8 ++++---- 12 files changed, 27 insertions(+), 27 deletions(-) diff --git a/addons/common/functions/fnc_fixFloating.sqf b/addons/common/functions/fnc_fixFloating.sqf index 24084d2c11..2eb6f2b4e4 100644 --- a/addons/common/functions/fnc_fixFloating.sqf +++ b/addons/common/functions/fnc_fixFloating.sqf @@ -24,7 +24,7 @@ _hitPointDamages = getAllHitPointsDamage _object; // get correct format for objects without hitpoints if (_hitPointDamages isEqualTo []) then { - _hitPointDamages = [[],[],[]]; + _hitPointDamages = [[],[],[]]; }; // this prevents physx objects from floating when near other physx objects with allowDamage false diff --git a/addons/common/functions/fnc_removeBinocularMagazine.sqf b/addons/common/functions/fnc_removeBinocularMagazine.sqf index 3d2252390a..ee35f28f1b 100644 --- a/addons/common/functions/fnc_removeBinocularMagazine.sqf +++ b/addons/common/functions/fnc_removeBinocularMagazine.sqf @@ -26,5 +26,5 @@ _selectBinocular = currentWeapon _unit == _binocular; _unit addWeapon _binocular; if (_selectBinocular) then { - _unit selectWeapon _binocular; + _unit selectWeapon _binocular; }; diff --git a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf index 5d04e3dc5d..dffa15b609 100644 --- a/addons/concertina_wire/functions/fnc_vehicleDamage.sqf +++ b/addons/concertina_wire/functions/fnc_vehicleDamage.sqf @@ -52,10 +52,10 @@ if (_mode == 0) then { ]; { _found = false; - _no = nearestObjects [_x, [typeOf _wire], 3]; //diag_log _no; diag_log "....."; - _no = _no - [_wire]; //diag_log _no; + _no = nearestObjects [_x, [typeOf _wire], 3]; //diag_log _no; diag_log "....."; + _no = _no - [_wire]; //diag_log _no; if (count _no > 0) exitWith { - _found = true; //diag_log "found"; + _found = true; //diag_log "found"; }; } forEach _wireCheckPosAr; // Double coil found! diff --git a/addons/dragging/functions/fnc_dropObject.sqf b/addons/dragging/functions/fnc_dropObject.sqf index aad30ec234..5e5687db8a 100644 --- a/addons/dragging/functions/fnc_dropObject.sqf +++ b/addons/dragging/functions/fnc_dropObject.sqf @@ -23,8 +23,8 @@ private "_inBuilding"; _inBuilding = [_unit] call FUNC(isObjectOnObject); if !(_unit getVariable ["ACE_isUnconscious", false]) then { - // play release animation - _unit playAction "released"; + // play release animation + _unit playAction "released"; }; // prevent collision damage diff --git a/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf b/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf index 13b241e1d1..334fc13f25 100644 --- a/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf +++ b/addons/interact_menu/functions/fnc_ctrlSetParsedTextCached.sqf @@ -6,6 +6,6 @@ params ["_ctrl", "_index", "_text"]; //systemChat str (_text != ARR_SELECT(GVAR(ParsedTextCached),_index,"-1")); if (_text != ARR_SELECT(GVAR(ParsedTextCached),_index,"-1")) then { - GVAR(ParsedTextCached) set [_index, _text]; - _ctrl ctrlSetStructuredText parseText _text; + GVAR(ParsedTextCached) set [_index, _text]; + _ctrl ctrlSetStructuredText parseText _text; }; diff --git a/addons/interaction/functions/fnc_joinTeam.sqf b/addons/interaction/functions/fnc_joinTeam.sqf index 1f713d8ba2..1ada3843c1 100644 --- a/addons/interaction/functions/fnc_joinTeam.sqf +++ b/addons/interaction/functions/fnc_joinTeam.sqf @@ -22,7 +22,7 @@ params ["_unit", "_team"]; // display message if (_unit == ACE_player) then { - private "_message"; + private "_message"; if (_team == "MAIN") then { _message = localize LSTRING(LeftTeam); diff --git a/addons/medical/functions/fnc_actionDiagnose.sqf b/addons/medical/functions/fnc_actionDiagnose.sqf index ff2bd12438..ffb2583a15 100644 --- a/addons/medical/functions/fnc_actionDiagnose.sqf +++ b/addons/medical/functions/fnc_actionDiagnose.sqf @@ -26,11 +26,11 @@ if (alive _target) then { _genericMessages pushBack LSTRING(diagnoseDead); }; if (_target getVariable[QGVAR(hasLostBlood), 0] > 0) then { - if (_target getVariable[QGVAR(hasLostBlood), 0] > 1) then { - _genericMessages pushBack LSTRING(lostBloodALot); - } else { - _genericMessages pushBack LSTRING(lostBlood); - }; + if (_target getVariable[QGVAR(hasLostBlood), 0] > 1) then { + _genericMessages pushBack LSTRING(lostBloodALot); + } else { + _genericMessages pushBack LSTRING(lostBlood); + }; } else { _genericMessages pushBack LSTRING(noBloodloss); }; diff --git a/addons/movement/functions/fnc_climb.sqf b/addons/movement/functions/fnc_climb.sqf index a395e834b8..a0946b95d0 100644 --- a/addons/movement/functions/fnc_climb.sqf +++ b/addons/movement/functions/fnc_climb.sqf @@ -26,10 +26,10 @@ if !([_unit] call FUNC(canClimb)) exitWith { if !(_unit getVariable [QGVAR(isClimbInit), false]) then { _unit addEventHandler ["AnimChanged", { if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then { - // abort climb animation - if !(_this call FUNC(canClimb)) then { - [_this select 0, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); - }; + // abort climb animation + if !(_this call FUNC(canClimb)) then { + [_this select 0, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); + }; }; }]; diff --git a/addons/optics/functions/fnc_onDrawScope.sqf b/addons/optics/functions/fnc_onDrawScope.sqf index 26cbe235b2..d977149c95 100644 --- a/addons/optics/functions/fnc_onDrawScope.sqf +++ b/addons/optics/functions/fnc_onDrawScope.sqf @@ -10,7 +10,7 @@ _display = _this select 0; _control = _display displayCtrl 1713154; if (!ctrlShown (_display displayCtrl 154)) exitWith { - _control ctrlShow false; + _control ctrlShow false; }; private ["_sizeX", "_sizeY"]; diff --git a/addons/safemode/functions/fnc_setSafeModeVisual.sqf b/addons/safemode/functions/fnc_setSafeModeVisual.sqf index 492d5c6996..c3f46b9f4d 100644 --- a/addons/safemode/functions/fnc_setSafeModeVisual.sqf +++ b/addons/safemode/functions/fnc_setSafeModeVisual.sqf @@ -25,7 +25,7 @@ _control = (uiNamespace getVariable ["ACE_dlgSoldier", displayNull]) displayCtrl if (isNull _control) exitWith {}; if (_show) then { - private "_config"; + private "_config"; _config = configFile >> "RscInGameUI" >> "RscUnitInfoSoldier" >> "WeaponInfoControlsGroupLeft" >> "controls" >> "CA_ModeTexture"; _control ctrlSetPosition [getNumber (_config >> "x"), getNumber (_config >> "y"), getNumber (_config >> "w"), getNumber (_config >> "h")]; diff --git a/addons/spectator/functions/fnc_handleCamera.sqf b/addons/spectator/functions/fnc_handleCamera.sqf index f07ac6da47..ce384c496c 100644 --- a/addons/spectator/functions/fnc_handleCamera.sqf +++ b/addons/spectator/functions/fnc_handleCamera.sqf @@ -64,8 +64,8 @@ if (GVAR(camMode) == 0) then { _vector = _vector vectorAdd [0,0,_distance*sin(-_tilt)]; // Update the position of the target camera (used for smooth unit tracking) - _target camSetPos ((_unit modelToWorldVisual [0,0,0]) vectorAdd [0,0,1.5]); - _target camCommit 0; + _target camSetPos ((_unit modelToWorldVisual [0,0,0]) vectorAdd [0,0,1.5]); + _target camCommit 0; // Update the relative position of the unit camera _camera camSetRelPos _vector; diff --git a/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf b/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf index 007c967da9..bcde34316a 100644 --- a/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf +++ b/addons/viewdistance/functions/fnc_setFovBasedOvdPFH.sqf @@ -36,9 +36,9 @@ _zoom = (call CBA_fnc_getFov) select 1; if ((vehicle ACE_player) isKindOf "Air") exitWith { if (_zoom > VD_ZOOM_NORMAL) then { // Dynamically set Object View Distance based on player's Zoom Level and View Distance - setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); + setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); } else { - setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10); + setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10); }; TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom); }; @@ -46,8 +46,8 @@ if ((vehicle ACE_player) isKindOf "Air") exitWith { // Land if (_zoom > VD_ZOOM_NORMAL) then { // Dynamically set Object View Distance based on player's Zoom Level and View Distance - setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); + setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance)); } else { - setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance); + setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance); }; TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom); From e828076377c0151b7f5cfeafc9e008f7cc18c5b8 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Mon, 21 Dec 2015 17:06:04 +0100 Subject: [PATCH 078/107] Add error on tab in sqf files to sqf validator --- tools/sqf_validator.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/sqf_validator.py b/tools/sqf_validator.py index 7e7c0183d6..7414d7d715 100644 --- a/tools/sqf_validator.py +++ b/tools/sqf_validator.py @@ -109,7 +109,10 @@ def check_sqf_syntax(filepath): print("ERROR: Possible missing curly brace '}}' detected at {0} Line number: {1}".format(filepath,lineNumber)) bad_count_file += 1 brackets_list.append('}') - + elif (c== '\t'): + print("ERROR: Tab detected at {0} Line number: {1}".format(filepath,lineNumber)) + bad_count_file += 1 + if (checkForSemiColumn): if (c not in [' ', '\t', '\n', '/']): # keep reading until no white space or comments checkForSemiColumn = False From ebb28177b12640c4204f42fa6a2642ec86fd7e86 Mon Sep 17 00:00:00 2001 From: Githawk Date: Mon, 21 Dec 2015 17:54:52 +0100 Subject: [PATCH 079/107] More fixes to make jerryCan work --- addons/refuel/CfgVehicles.hpp | 2 +- addons/refuel/functions/fnc_makeJerryCan.sqf | 105 +++++++++---------- addons/refuel/functions/fnc_refuel.sqf | 4 +- addons/refuel/functions/fnc_takeNozzle.sqf | 36 ++++--- addons/refuel/script_component.hpp | 2 +- 5 files changed, 76 insertions(+), 73 deletions(-) diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index 33ddddb8b0..afc3c4cd9c 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -615,7 +615,7 @@ class CfgVehicles { // Src: http://helicopters.axlegeeks.com/l/61/Boeing-AH-64-Apache 375 gal = 1420L // Src: https://en.wikipedia.org/wiki/Mil_Mi-8 3700l // Src: Google Ka-52 1870L - // Src: http://www.airforce-technology.com/projects/hind/ 1500kg / 0.81 L/kg = 1851L + // Src: http://www.airforce-technology.com/projects/hind/ 1500kg / 0.81 kg/L = 1851L // Src: https://en.wikipedia.org/wiki/MD_Helicopters_MH-6_Little_Bird 242L // Src: http://www.globalsecurity.org/military/world/europe/aw159-specs.htm 1004L // Src: https://en.wikipedia.org/wiki/AgustaWestland_AW101 3 * 1074L = 3222L diff --git a/addons/refuel/functions/fnc_makeJerryCan.sqf b/addons/refuel/functions/fnc_makeJerryCan.sqf index 8febaf41f0..96bb058265 100644 --- a/addons/refuel/functions/fnc_makeJerryCan.sqf +++ b/addons/refuel/functions/fnc_makeJerryCan.sqf @@ -20,60 +20,13 @@ private ["_actions", "_action"]; params ["_target", ["_fuelAmount", 20]]; if (isNull _target || - {_target isKindOf "AllVehicles"}) exitWith {}; + {_target isKindOf "AllVehicles"} || + {_target getVariable [QGVAR(jerryCan), false]}) exitWith {}; [_target, _fuelAmount] call FUNC(setFuel); +_target setVariable [QGVAR(jerryCan), true, true]; _target setVariable [QGVAR(source), _target, true]; -_actions = []; -// Add pickup -_action = [QGVAR(PickUpNozzle), - localize LSTRING(TakeNozzle), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), - {[_player, objNull, _target] call FUNC(TakeNozzle)}, - {[_player, _target] call FUNC(canTakeNozzle)}, - {}, - [], - [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); -_actions pushBack [_action, [], _target]; - -// Add turnOn -_action = [QGVAR(TurnOn), - localize LSTRING(TurnOn), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), - {[_player, _target] call FUNC(turnOn)}, - {[_player, _target] call FUNC(canTurnOn)}, - {}, - [], - [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); -_actions pushBack [_action, [], _target]; - -// Add turnOff -_action = [QGVAR(TurnOff), - localize LSTRING(TurnOff), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), - {[_player, _target] call FUNC(turnOff)}, - {[_player, _target] call FUNC(canTurnOff)}, - {}, - [], - [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); -_actions pushBack [_action, [], _target]; - -// Add disconnect -_action = [QGVAR(Disconnect), - localize LSTRING(Disconnect), - QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), - {[_player, _target] call FUNC(disconnect)}, - {[_player, _target] call FUNC(canDisconnect)}, - {}, - [], - [0, 0, 0], - REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); -_actions pushBack [_action, [], _target]; - // Main Action _action = [QGVAR(Refuel), localize LSTRING(Refuel), @@ -84,8 +37,52 @@ _action = [QGVAR(Refuel), [], [0, 0, 0], REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); +[_target, 0, [], _action] call EFUNC(interact_menu,addActionToObject); -[_target, 0, ["ACE_MainActions"], _action] call EFUNC(interact_menu,addActionToObject); -{ - [_target, 0, [QGVAR(Refuel)], _x select 0] call EFUNC(interact_menu,addActionToObject); -} forEach _actions; +// Add pickup +_action = [QGVAR(PickUpNozzle), + localize LSTRING(TakeNozzle), + QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + {[_player, objNull, _target] call FUNC(TakeNozzle)}, + {[_player, _target] call FUNC(canTakeNozzle)}, + {}, + [], + [0, 0, 0], + REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); +[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); + +// Add turnOn +_action = [QGVAR(TurnOn), + localize LSTRING(TurnOn), + QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + {[_player, _target] call FUNC(turnOn)}, + {[_player, _target] call FUNC(canTurnOn)}, + {}, + [], + [0, 0, 0], + REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); +[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); + +// Add turnOff +_action = [QGVAR(TurnOff), + localize LSTRING(TurnOff), + QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + {[_player, _target] call FUNC(turnOff)}, + {[_player, _target] call FUNC(canTurnOff)}, + {}, + [], + [0, 0, 0], + REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); +[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); + +// Add disconnect +_action = [QGVAR(Disconnect), + localize LSTRING(Disconnect), + QUOTE(PATHTOF(ui\icon_refuel_interact.paa)), + {[_player, _target] call FUNC(disconnect)}, + {[_player, _target] call FUNC(canDisconnect)}, + {}, + [], + [0, 0, 0], + REFUEL_ACTION_DISTANCE] call EFUNC(interact_menu,createAction); +[_target, 0, [QGVAR(Refuel)], _action] call EFUNC(interact_menu,addActionToObject); diff --git a/addons/refuel/functions/fnc_refuel.sqf b/addons/refuel/functions/fnc_refuel.sqf index ed6eb257cf..74697212b1 100644 --- a/addons/refuel/functions/fnc_refuel.sqf +++ b/addons/refuel/functions/fnc_refuel.sqf @@ -29,7 +29,6 @@ _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(f params ["_args", "_pfID"]; _args params ["_source", "_sink", "_unit", "_nozzle", "_rate", "_startFuel", "_maxFuel", "_connectFromPoint", "_connectToPoint"]; - _fueling = _nozzle getVariable [QGVAR(isRefueling), false]; if (!alive _source || {!alive _sink}) exitWith { [objNull, _nozzle] call FUNC(dropNozzle); _nozzle setVariable [QGVAR(isConnected), false, true]; @@ -38,7 +37,7 @@ _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(f [_pfID] call cba_fnc_removePerFrameHandler; }; _tooFar = ((_sink modelToWorld _connectToPoint) distance (_source modelToWorld _connectFromPoint)) > (REFUEL_HOSE_LENGTH - 2); - if (_tooFar) exitWith { + if (_tooFar && {!(_nozzle getVariable [QGVAR(jerryCan), false])}) exitWith { [LSTRING(Hint_TooFar), 2, _unit] call EFUNC(common,displayTextStructured); [objNull, _nozzle] call FUNC(dropNozzle); @@ -49,6 +48,7 @@ _maxFuel = getNumber (configFile >> "CfgVehicles" >> (typeOf _target) >> QGVAR(f }; _finished = false; + _fueling = _nozzle getVariable [QGVAR(isRefueling), false]; if (_fueling) then { _fuelInSource = [_source] call FUNC(getFuel); if (_fuelInSource == 0) exitWith { diff --git a/addons/refuel/functions/fnc_takeNozzle.sqf b/addons/refuel/functions/fnc_takeNozzle.sqf index f6d953cecc..3c52748efc 100644 --- a/addons/refuel/functions/fnc_takeNozzle.sqf +++ b/addons/refuel/functions/fnc_takeNozzle.sqf @@ -93,7 +93,11 @@ if (isNull _nozzle) then { // func is called on fuel truck private ["_actionID"]; params ["_args"]; _args params ["_unit", "_nozzle"]; - _nozzle attachTo [_unit, [-0.02,-0.05,0], "righthandmiddle1"]; // TODO replace with right coordinates for real model + if (_nozzle getVariable [QGVAR(jerryCan), false]) then { + _nozzle attachTo [_unit, [0,1,0], "pelvis"]; + } else { + _nozzle attachTo [_unit, [-0.02,-0.05,0], "righthandmiddle1"]; // TODO replace with right coordinates for real model + }; _unit setVariable [QGVAR(nozzle), _nozzle]; _unit setVariable [QGVAR(isRefueling), true]; @@ -122,20 +126,22 @@ if (isNull _nozzle) then { // func is called on fuel truck _target = _nozzle getVariable QGVAR(source); _endPosOffset = _nozzle getVariable QGVAR(attachPos); }; -[{ - private ["_nozzle"]; - params ["_args", "_pfID"]; - _args params ["_unit", "_source", "_endPosOffset"]; +if !(_nozzle getVariable [QGVAR(jerryCan), false]) then { + [{ + private ["_nozzle"]; + params ["_args", "_pfID"]; + _args params ["_unit", "_source", "_endPosOffset"]; - if (_unit distance (_source modelToWorld _endPosOffset) > (REFUEL_HOSE_LENGTH - 2)) exitWith { - _nozzle = _unit getVariable [QGVAR(nozzle), objNull]; - if !(isNull _nozzle) then { - [_unit, _nozzle] call FUNC(dropNozzle); - REFUEL_UNHOLSTER_WEAPON + if (_unit distance (_source modelToWorld _endPosOffset) > (REFUEL_HOSE_LENGTH - 2)) exitWith { + _nozzle = _unit getVariable [QGVAR(nozzle), objNull]; + if !(isNull _nozzle) then { + [_unit, _nozzle] call FUNC(dropNozzle); + REFUEL_UNHOLSTER_WEAPON - [_unit, QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); - [LSTRING(Hint_TooFar), 2, _unit] call EFUNC(common,displayTextStructured); + [_unit, QGVAR(vehAttach), false] call EFUNC(common,setForceWalkStatus); + [LSTRING(Hint_TooFar), 2, _unit] call EFUNC(common,displayTextStructured); + }; + [_pfID] call cba_fnc_removePerFrameHandler; }; - [_pfID] call cba_fnc_removePerFrameHandler; - }; -}, 0, [_unit, _target, _endPosOffset]] call cba_fnc_addPerFrameHandler; + }, 0, [_unit, _target, _endPosOffset]] call cba_fnc_addPerFrameHandler; +}; diff --git a/addons/refuel/script_component.hpp b/addons/refuel/script_component.hpp index 28e6fb7931..e8c7514651 100644 --- a/addons/refuel/script_component.hpp +++ b/addons/refuel/script_component.hpp @@ -12,7 +12,7 @@ #include "\z\ace\addons\main\script_macros.hpp" #define REFUEL_INFINITE_FUEL -1 -#define REFUEL_ACTION_DISTANCE 37 +#define REFUEL_ACTION_DISTANCE 7 #define REFUEL_HOSE_LENGTH 12 #define REFUEL_HOLSTER_WEAPON \ From d16417a00b53910570af87f65f2f62d25bd4fad5 Mon Sep 17 00:00:00 2001 From: Githawk Date: Tue, 22 Dec 2015 17:49:58 +0100 Subject: [PATCH 080/107] Changed scope on nozzle --- addons/refuel/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/refuel/CfgVehicles.hpp b/addons/refuel/CfgVehicles.hpp index afc3c4cd9c..ff91205434 100644 --- a/addons/refuel/CfgVehicles.hpp +++ b/addons/refuel/CfgVehicles.hpp @@ -138,8 +138,8 @@ class CfgVehicles { XEH_ENABLED; MACRO_NOZZLE_ACTIONS displayName = QGVAR(fuelNozzle); - scope = 2; - scopeCurator = 2; + scope = 1; + scopeCurator = 1; model = "\A3\Structures_F_Heli\VR\Helpers\Sign_sphere10cm_F.p3d"; }; From 2432ac3319a5c7fa4943703f57af0f49d84e5ec0 Mon Sep 17 00:00:00 2001 From: Githawk Date: Tue, 22 Dec 2015 17:54:16 +0100 Subject: [PATCH 081/107] Changed scope for carried objects --- addons/rearm/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/rearm/CfgVehicles.hpp b/addons/rearm/CfgVehicles.hpp index d7e8fafed4..30548aed76 100644 --- a/addons/rearm/CfgVehicles.hpp +++ b/addons/rearm/CfgVehicles.hpp @@ -170,8 +170,8 @@ class CfgVehicles { class GVAR(defaultCarriedObject) : ThingX { XEH_ENABLED; displayName = QGVAR(dummy_obj); - scope = 2; - scopeCurator = 2; + scope = 1; + scopeCurator = 1; model = "\A3\Weapons_F\AmmoBoxes\AmmoBox_F.p3d"; EGVAR(cargo,size) = 1; class ACE_Actions { From dc60860421984110169173fd20eddb724e51e94b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sat, 26 Dec 2015 23:31:49 -0600 Subject: [PATCH 082/107] Fix Third Person Goggle Effect Not Displaying #3074 --- addons/goggles/XEH_postInit.sqf | 10 +++++++--- addons/goggles/functions/fnc_applyDirtEffect.sqf | 1 - addons/goggles/functions/fnc_applyDustEffect.sqf | 1 - addons/goggles/functions/fnc_externalCamera.sqf | 6 +++++- addons/goggles/functions/fnc_handleExplosion.sqf | 1 - 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 09a84ad151..a4872f6a3f 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -114,16 +114,20 @@ private _fnc_checkGoggles = { // goggles effects main PFH [{ + BEGIN_COUNTER(goggles); + // rain call FUNC(applyRainEffect); // auto remove effects under water - if (GVAR(EffectsActive) && {[goggles ACE_player] call FUNC(isDivingGoggles) && {underwater ACE_player}}) then { + if (GVAR(EffectsActive) && {underwater ACE_player} && {[goggles ACE_player] call FUNC(isDivingGoggles)}) then { call FUNC(removeRainEffect); call FUNC(removeDirtEffect); call FUNC(removeDustEffect); }; // rotor wash effect - call FUNC(applyRotorWashEffect) -}, 0.5, _fnc_checkGoggles] call CBA_fnc_addPerFrameHandler; + call FUNC(applyRotorWashEffect); + + END_COUNTER(goggles); +}, 0.5, []] call CBA_fnc_addPerFrameHandler; diff --git a/addons/goggles/functions/fnc_applyDirtEffect.sqf b/addons/goggles/functions/fnc_applyDirtEffect.sqf index c7ff386f9d..4b5ee13a0f 100644 --- a/addons/goggles/functions/fnc_applyDirtEffect.sqf +++ b/addons/goggles/functions/fnc_applyDirtEffect.sqf @@ -15,7 +15,6 @@ */ #include "script_component.hpp" -if (GVAR(showInThirdPerson)) exitWith {false}; if (call FUNC(externalCamera)) exitWith {false}; private ["_unit", "_effects"]; diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf index 75f4853c01..944b98f127 100644 --- a/addons/goggles/functions/fnc_applyDustEffect.sqf +++ b/addons/goggles/functions/fnc_applyDustEffect.sqf @@ -15,7 +15,6 @@ */ #include "script_component.hpp" -if (GVAR(showInThirdPerson)) exitWith {}; if (call FUNC(ExternalCamera)) exitWith {}; private ["_unit", "_amount"]; diff --git a/addons/goggles/functions/fnc_externalCamera.sqf b/addons/goggles/functions/fnc_externalCamera.sqf index 1af09827ab..85776fb0d6 100644 --- a/addons/goggles/functions/fnc_externalCamera.sqf +++ b/addons/goggles/functions/fnc_externalCamera.sqf @@ -15,4 +15,8 @@ */ #include "script_component.hpp" -cameraView in ["EXTERNAL", "GROUP"] || EFUNC(common,isFeatureCameraActive) // return +if (GVAR(showInThirdPerson)) then { + cameraView in ["GROUP"] || EFUNC(common,isFeatureCameraActive) +} else { + cameraView in ["EXTERNAL", "GROUP"] || EFUNC(common,isFeatureCameraActive) +}; diff --git a/addons/goggles/functions/fnc_handleExplosion.sqf b/addons/goggles/functions/fnc_handleExplosion.sqf index 795cdd78b1..b5c71a3d94 100644 --- a/addons/goggles/functions/fnc_handleExplosion.sqf +++ b/addons/goggles/functions/fnc_handleExplosion.sqf @@ -37,7 +37,6 @@ _effects set [BROKEN, true]; SETGLASSES(_unit,_effects); if (getText (_config >> "ACE_OverlayCracked") != "") then { - if (GVAR(showInThirdPerson)) exitWith {}; if (call FUNC(ExternalCamera)) exitWith {}; if (isNull (GLASSDISPLAY)) then { From 44568ec94ece00f8966438f5776cac6be946f27f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 28 Dec 2015 21:27:47 -0600 Subject: [PATCH 083/107] CUP compat no longer needed: CUP makes their own ref https://forums.bistudio.com/topic/179326-community-upgrade-project-cup/ --- optionals/compat_cup/$PBOPREFIX$ | 1 - optionals/compat_cup/CfgMagazines.hpp | 48 ---- optionals/compat_cup/CfgWeapons.hpp | 271 ---------------------- optionals/compat_cup/config.cpp | 15 -- optionals/compat_cup/script_component.hpp | 5 - 5 files changed, 340 deletions(-) delete mode 100644 optionals/compat_cup/$PBOPREFIX$ delete mode 100644 optionals/compat_cup/CfgMagazines.hpp delete mode 100644 optionals/compat_cup/CfgWeapons.hpp delete mode 100644 optionals/compat_cup/config.cpp delete mode 100644 optionals/compat_cup/script_component.hpp diff --git a/optionals/compat_cup/$PBOPREFIX$ b/optionals/compat_cup/$PBOPREFIX$ deleted file mode 100644 index 42044805ba..0000000000 --- a/optionals/compat_cup/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\compat_cup \ No newline at end of file diff --git a/optionals/compat_cup/CfgMagazines.hpp b/optionals/compat_cup/CfgMagazines.hpp deleted file mode 100644 index b05b0c3efd..0000000000 --- a/optionals/compat_cup/CfgMagazines.hpp +++ /dev/null @@ -1,48 +0,0 @@ -class CfgMagazines { - class CUP_M136_M; - class CUP_RPG18_M; - class CUP_NLAW_M; - class ACE_PreloadedMissileDummy_CUP: CUP_M136_M { // The dummy magazine - author = "$STR_ACE_Common_ACETeam"; - scope = 1; - scopeArsenal = 1; - displayName = "Preloaded Missle"; - //displayName = "$STR_ACE_Disposable_PreloadedMissileDummy"; - picture = PATHTOEF(common,UI\blank_CO.paa); - weaponPoolAvailable = 0; - mass = 0; - }; - class ACE_FiredMissileDummy_CUP: ACE_PreloadedMissileDummy_CUP { - count = 0; - }; - class ACE_UsedTube_M136_F: CUP_M136_M { - author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Disposable_UsedTube"; - descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayNameShort = "-"; - count = 0; - weaponPoolAvailable = 0; - modelSpecial = ""; - mass = 0; - }; - class ACE_UsedTube_RPG18_F: CUP_RPG18_M { - author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Disposable_UsedTube"; - descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayNameShort = "-"; - count = 0; - weaponPoolAvailable = 0; - modelSpecial = ""; - mass = 0; - }; - class ACE_UsedTube_NLAW_F: CUP_NLAW_M { - author = "$STR_ACE_Common_ACETeam"; - displayName = "$STR_ACE_Disposable_UsedTube"; - descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayNameShort = "-"; - count = 0; - weaponPoolAvailable = 0; - modelSpecial = ""; - mass = 0; - }; -}; \ No newline at end of file diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp deleted file mode 100644 index bbd49548da..0000000000 --- a/optionals/compat_cup/CfgWeapons.hpp +++ /dev/null @@ -1,271 +0,0 @@ -class CfgWeapons -{ - class Launcher_Base_F; - 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; - }; - }; - }; - }; - // Non Disposable launchers - class CUP_launch_Igla: Launcher_Base_F { - EGVAR(overpressure,angle) = 30; - EGVAR(overpressure,range) = 2; - EGVAR(overpressure,damage) = 0.5; - }; - class CUP_launch_M47: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,range) = 30; - EGVAR(overpressure,damage) = 0.7; - }; - class CUP_launch_MAAWS: Launcher_Base_F { - EGVAR(overpressure,angle) = 60; - EGVAR(overpressure,range) = 28; - EGVAR(overpressure,damage) = 0.7; - }; - class CUP_launch_MAAWS_Scope: CUP_launch_MAAWS {}; - class CUP_launch_Metis: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,range) = 30; - EGVAR(overpressure,damage) = 0.5; - }; - class CUP_launch_RPG7V: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,range) = 20; - EGVAR(overpressure,damage) = 1; - }; - class CUP_launch_Mk153Mod0: Launcher_Base_F { - EGVAR(overpressure,angle) = 30; - EGVAR(overpressure,range) = 30; - EGVAR(overpressure,damage) = 1; - }; - class CUP_launch_Mk153Mod0_SMAWOptics: CUP_launch_Mk153Mod0 {}; - class CUP_launch_FIM92Stinger: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 0.3; // Main damage arises from debris rather than the actual backblast - }; - class CUP_launch_9K32Strela: Launcher_Base_F { - EGVAR(overpressure,angle) = 30; - EGVAR(overpressure,range) = 2; - EGVAR(overpressure,damage) = 0.5; - }; - // Disposable launchers under this line - class CUP_launch_M136: Launcher_Base_F { - EGVAR(overpressure,angle) = 45; - EGVAR(overpressure,range) = 100; - EGVAR(overpressure,damage) = 0.7; - ACE_UsedTube = "ACE_launch_M136_Used_F"; // The class name of the used tube. - magazines[] = {"ACE_PreloadedMissileDummy_CUP"}; // The dummy magazine - }; - class ACE_launch_M136_Used_F: CUP_launch_M136 { - scope = 1; - ACE_isUsedLauncher = 1; - author = "$STR_ACE_Common_ACETeam"; - //displayName = "$STR_ACE_Disposable_UsedTube"; - //descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayName = "M136 (Used)"; - descriptionShort = "Used M136 Tube"; - magazines[] = {"ACE_FiredMissileDummy_CUP"}; - //picture = ""; @todo - //model = ""; @todo - weaponPoolAvailable = 0; - }; - class CUP_launch_NLAW: Launcher_Base_F { - EGVAR(overpressure,angle) = 30; - EGVAR(overpressure,range) = 2; - EGVAR(overpressure,damage) = 0.5; - ACE_UsedTube = "ACE_launch_NLAW_Used_F"; // The class name of the used tube. - magazines[] = {"ACE_PreloadedMissileDummy_CUP"}; // The dummy magazine - }; - class ACE_launch_NLAW_Used_F: CUP_launch_NLAW { - scope = 1; - ACE_isUsedLauncher = 1; - author = "$STR_ACE_Common_ACETeam"; - //displayName = "$STR_ACE_Disposable_UsedTube"; - //descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayName = "NLAW (Used)"; - descriptionShort = "Used NLAW Tube"; - magazines[] = {"ACE_FiredMissileDummy_CUP"}; - //picture = ""; @todo - //model = ""; @todo - weaponPoolAvailable = 0; - }; - class CUP_launch_RPG18: Launcher_Base_F { - EGVAR(overpressure,angle) = 40; - EGVAR(overpressure,range) = 15; - EGVAR(overpressure,damage) = 1; - ACE_UsedTube = "ACE_launch_RPG18_Used_F"; // The class name of the used tube. - magazines[] = {"ACE_PreloadedMissileDummy_CUP"}; // The dummy magazine - }; - class ACE_launch_RPG18_Used_F: CUP_launch_RPG18 { - scope = 1; - ACE_isUsedLauncher = 1; - author = "$STR_ACE_Common_ACETeam"; - //displayName = "$STR_ACE_Disposable_UsedTube"; - //descriptionShort = "$STR_ACE_Disposable_UsedTubeDescription"; - displayName = "RPG18 (Used)"; - descriptionShort = "Used RPG18 Tube"; - magazines[] = {"ACE_FiredMissileDummy_CUP"}; - //picture = ""; @todo - //model = ""; @todo - weaponPoolAvailable = 0; - }; -}; \ No newline at end of file diff --git a/optionals/compat_cup/config.cpp b/optionals/compat_cup/config.cpp deleted file mode 100644 index 20ae5d6911..0000000000 --- a/optionals/compat_cup/config.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"CUP_Weapons_Ammunition"}; - author[]={"Ruthberg"}; - VERSION_CONFIG; - }; -}; - -#include "CfgWeapons.hpp" -#include "CfgMagazines.hpp" \ No newline at end of file diff --git a/optionals/compat_cup/script_component.hpp b/optionals/compat_cup/script_component.hpp deleted file mode 100644 index 3d77fcb370..0000000000 --- a/optionals/compat_cup/script_component.hpp +++ /dev/null @@ -1,5 +0,0 @@ -#define COMPONENT CUP_Weapons_Ammunition_comp - -#include "\z\ace\addons\main\script_mod.hpp" - -#include "\z\ace\addons\main\script_macros.hpp" From 112c002b0bac700985309e68ffd1b0a547cfc88e Mon Sep 17 00:00:00 2001 From: bux Date: Tue, 29 Dec 2015 20:57:55 +0100 Subject: [PATCH 084/107] remove ace_offset entry Ported from AGM and simply renamed. It wasn't even used in AGM. --- addons/explosives/CfgVehicles.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 7a51a7d765..de978e0d2b 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -89,7 +89,6 @@ class CfgVehicles { scope = 2; scopeCurator = 1; vehicleClass = "Cargo"; - ACE_offset[] = {0,0,0}; class ACE_Actions { class ACE_MainActions { selection = ""; @@ -137,7 +136,6 @@ class CfgVehicles { class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place { displayName = "APERS Tripwire Mine"; model = "\A3\Weapons_F\explosives\mine_AP_tripwire"; - ACE_offset[] = {1,0,0}; }; class ACE_Explosives_Place_ATMine:ACE_Explosives_Place { From 1e29c0286f78afc0f6403e8593ed09e6007b2276 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 30 Dec 2015 01:07:55 -0600 Subject: [PATCH 085/107] Remove Keybinds/Events for Zeus now handeld in CBA Close #2937 --- addons/common/XEH_postInit.sqf | 28 +++++++++++----------- addons/interact_menu/XEH_clientInit.sqf | 31 ------------------------- 2 files changed, 14 insertions(+), 45 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ce75ad5187..69d28e3cab 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -1,7 +1,7 @@ // ACE - Common +// #define ENABLE_PERFORMANCE_COUNTERS #include "script_component.hpp" -// #define ENABLE_PERFORMANCE_COUNTERS ////////////////////////////////////////////////// // PFHs @@ -293,6 +293,17 @@ enableCamShake true; // Set up numerous eventhanders for player controlled units ////////////////////////////////////////////////// +//CBA has events for zeus's display onLoad and onUnload (Need to delay a frame for display to be ready) +private _zeusDisplayChangedFNC = { + [{ + private _data = !(isNull findDisplay 312); + ["zeusDisplayChanged", [ACE_player, _data]] call FUNC(localEvent); + }, []] call FUNC(execNextFrame); +}; +["CBA_curatorOpened", _zeusDisplayChangedFNC] call CBA_fnc_addEventHandler; +["CBA_curatorClosed", _zeusDisplayChangedFNC] call CBA_fnc_addEventHandler; + + // default variables GVAR(OldPlayerVehicle) = vehicle objNull; GVAR(OldPlayerTurret) = [objNull] call FUNC(getTurretIndex); @@ -302,7 +313,6 @@ GVAR(OldPlayerVisionMode) = currentVisionMode objNull; GVAR(OldCameraView) = ""; GVAR(OldVisibleMap) = false; GVAR(OldInventoryDisplayIsOpen) = nil; //@todo check this -GVAR(OldZeusDisplayIsOpen) = false; GVAR(OldIsCamera) = false; // clean up playerChanged eventhandler from preinit and put it in the same PFH as the other events to reduce overhead and guarantee advantageous execution order @@ -314,13 +324,11 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { // PFH to raise varios events [{ BEGIN_COUNTER(stateChecker); - private "_data"; // reuse one variable to reduce number of variables that have to be set to private each frame // "playerChanged" event - _data = call FUNC(player); + private _data = call FUNC(player); // reuse one variable to reduce number of variables that have to be set to private each frame if !(_data isEqualTo ACE_player) then { - private "_oldPlayer"; - _oldPlayer = ACE_player; + private _oldPlayer = ACE_player; ACE_player = _data; uiNamespace setVariable ["ACE_player", _data]; @@ -393,14 +401,6 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { ["inventoryDisplayChanged", [ACE_player, _data]] call FUNC(localEvent); }; - // "zeusDisplayChanged" event - _data = !(isNull findDisplay 312); - if !(_data isEqualTo GVAR(OldZeusDisplayIsOpen)) then { - // Raise ACE event locally - GVAR(OldZeusDisplayIsOpen) = _data; - ["zeusDisplayChanged", [ACE_player, _data]] call FUNC(localEvent); - }; - // "activeCameraChanged" event _data = call FUNC(isfeatureCameraActive); if !(_data isEqualTo GVAR(OldIsCamera)) then { diff --git a/addons/interact_menu/XEH_clientInit.sqf b/addons/interact_menu/XEH_clientInit.sqf index 59fb01a353..37df771785 100644 --- a/addons/interact_menu/XEH_clientInit.sqf +++ b/addons/interact_menu/XEH_clientInit.sqf @@ -77,37 +77,6 @@ GVAR(ParsedTextCached) = []; if (GVAR(menuBackground)==2) then {(uiNamespace getVariable [QGVAR(menuBackground), displayNull]) closeDisplay 0;}; }] call EFUNC(common,addEventHandler); -// Let key work with zeus open (not perfect, contains workaround to prevent other CBA keybindings) -["zeusDisplayChanged",{ - if (_this select 1) then { - (finddisplay 312) displayAddEventHandler ["KeyUp", { - _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; - _key = _key select 5; - _dik = _key select 0; - _mods = _key select 1; - - if ((_this select 1) == _dik) then { - if ((_this select [2,3]) isEqualTo _mods) then { - [_this,'keyup'] call CBA_events_fnc_keyHandler - }; - }; - }]; - (finddisplay 312) displayAddEventHandler ["KeyDown", { - _key = ["ACE3 Common","ace_interact_menu_InteractKey"] call CBA_fnc_getKeybind; - _key = _key select 5; - _dik = _key select 0; - _mods = _key select 1; - - if ((_this select 1) == _dik) then { - if ((_this select [2,3]) isEqualTo _mods) then { - [_this,'keydown'] call CBA_events_fnc_keyHandler - }; - }; - }]; - }; -}] call EFUNC(common,addEventHandler); - - //Debug to help end users identify mods that break CBA's XEH [{ private ["_badClassnames"]; From 72fe95c7976b4c8c83766d345c701695758f14da Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 30 Dec 2015 01:48:43 -0600 Subject: [PATCH 086/107] Add "isNotInZeus" to canInteractWith Re-fix #1951 (CTRL+V from climb blocking paste in zeus) --- addons/common/XEH_postInit.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 69d28e3cab..67003397d3 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -449,6 +449,7 @@ if (!isNil QGVAR(PreInit_playerChanged_PFHID)) then { {_unit != _target && {vehicle _unit == vehicle _target}} }] call FUNC(addCanInteractWithCondition); +["isNotInZeus", {isNull curatorCamera}] call FUNC(addCanInteractWithCondition); ////////////////////////////////////////////////// // Set up PlayerJIP eventhandler From 2a6042bf619e75e0f9e3b50a18eb7ee4a79ca486 Mon Sep 17 00:00:00 2001 From: bux Date: Wed, 30 Dec 2015 09:11:57 +0100 Subject: [PATCH 087/107] add interaction position and defuse object position and reduce interaction distance --- addons/explosives/CfgAmmo.hpp | 24 +++++++++----- addons/explosives/CfgVehicles.hpp | 33 ++++++++++++++++--- .../explosives/functions/fnc_interactEH.sqf | 12 ++++++- 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index 8299a979b3..e354e763e8 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -21,7 +21,6 @@ class CfgAmmo { class DirectionalBombCore: TimeBombCore; class DirectionalBombBase: DirectionalBombCore; - class APERSTripMine_Wire_Ammo: DirectionalBombBase; class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase; @@ -31,11 +30,16 @@ class CfgAmmo { class DirectionalBombBase; class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase { ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted"; + GVAR(defuseObjectPosition[]) = {0, 0, 0.038}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; }; //class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo; + class APERSTripMine_Wire_Ammo: DirectionalBombBase { + GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12}; + }; + class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase { indirectHitRange = 20; ACE_explodeOnDefuse = 1; @@ -55,6 +59,7 @@ class CfgAmmo { class PipeBombBase; class DemoCharge_Remote_Ammo: PipeBombBase { ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted"; + GVAR(defuseObjectPosition[]) = {0.07,0,0.055}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; hit = 500; @@ -63,17 +68,18 @@ class CfgAmmo { }; class SatchelCharge_Remote_Ammo: PipeBombBase { ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted"; + GVAR(defuseObjectPosition[]) = {0.1,0.1,0.05}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; }; - + /*class DemoCharge_Remote_Ammo_Scripted: DemoCharge_Remote_Ammo; class SatchelCharge_Remote_Ammo_Scripted: SatchelCharge_Remote_Ammo;*/ - + class IEDUrbanBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; ACE_explodeOnDefuse = 0.02; - soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; + soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; }; class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo { mineTrigger = "RemoteTrigger"; @@ -81,19 +87,19 @@ class CfgAmmo { class IEDUrbanBig_Range_Ammo: IEDUrbanBig_Remote_Ammo { mineTrigger = "RangeTrigger"; }; - + class IEDUrbanSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; ACE_explodeOnDefuse = 0.02; soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40}; - }; - class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { + }; + class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo { mineTrigger = "RemoteTrigger"; }; class IEDUrbanSmall_Range_Ammo: IEDUrbanSmall_Remote_Ammo { mineTrigger = "RangeTrigger"; }; - + class IEDLandBig_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; ACE_explodeOnDefuse = 0.02; @@ -105,7 +111,7 @@ class CfgAmmo { class IEDLandBig_Range_Ammo: IEDLandBig_Remote_Ammo { mineTrigger = "RangeTrigger"; }; - + class IEDLandSmall_Remote_Ammo: PipeBombBase { triggerWhenDestroyed = 1; ACE_explodeOnDefuse = 0.02; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index de978e0d2b..62ef51a8f2 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -62,7 +62,7 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { selection = ""; - distance = 5; + distance = 1; condition = "true"; class ACE_Defuse { displayName = CSTRING(Defuse); @@ -73,7 +73,7 @@ class CfgVehicles { icon = PATHTOF(UI\Defuse_ca.paa); priority = 0.8; hotkey = "F"; - distance = 5; + distance = 1; }; }; }; @@ -92,12 +92,12 @@ class CfgVehicles { class ACE_Actions { class ACE_MainActions { selection = ""; - distance = 5; + distance = 1; condition = "true"; class ACE_SetTrigger { selection = ""; displayName = CSTRING(TriggerMenu); - distance = 4; + distance = 1; condition = "true"; statement = ""; insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions);); @@ -109,7 +109,7 @@ class CfgVehicles { class ACE_PickUp { selection = ""; displayName = CSTRING(Pickup); - distance = 4; + distance = 1; condition = "true"; statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;); showDisabled = 0; @@ -124,6 +124,11 @@ class CfgVehicles { class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place { displayName = "Demo Charge"; model = "\A3\Weapons_F\explosives\c4_charge_small_d"; + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + position = "[-0.07,0,0.055]"; + }; + }; }; class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place { displayName = "APERS Bounding Mine"; @@ -136,6 +141,14 @@ class CfgVehicles { class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place { displayName = "APERS Tripwire Mine"; model = "\A3\Weapons_F\explosives\mine_AP_tripwire"; + + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + position = "[1.415,0,0.12]"; + }; + }; + + }; class ACE_Explosives_Place_ATMine:ACE_Explosives_Place { @@ -146,11 +159,21 @@ class CfgVehicles { class ACE_Explosives_Place_Claymore:ACE_Explosives_Place { displayName = "Claymore"; model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore"; + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + position = "[0,0,0.038]"; + }; + }; }; class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place { displayName = "Satchel Charge"; model = "\A3\Weapons_F\Explosives\satchel"; + class ACE_Actions: ACE_Actions { + class ACE_MainActions: ACE_MainActions { + position = "[-0.1,-0.1,0.05]"; + }; + }; }; class ACE_Explosives_Place_SLAM:ACE_Explosives_Place { diff --git a/addons/explosives/functions/fnc_interactEH.sqf b/addons/explosives/functions/fnc_interactEH.sqf index 9be7568530..da5e5ec149 100644 --- a/addons/explosives/functions/fnc_interactEH.sqf +++ b/addons/explosives/functions/fnc_interactEH.sqf @@ -45,7 +45,17 @@ if (!("ACE_DefusalKit" in (items ACE_player))) exitWith {}; 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]]; + + private _config = configFile >> "CfgAmmo" >> typeOf _x; + + private _defuseObjectPosition = getArray (_config >> QGVAR(defuseObjectPosition)); + if (_defuseObjectPosition isEqualTo []) then { + _defuseObjectPosition = [0,0,0]; + }; + + TRACE_1("DefuseObjectPosition",(_defuseObjectPosition)); + + _defuseHelper attachTo [_x, _defuseObjectPosition]; _defuseHelper setVariable [QGVAR(Explosive),_x]; _addedDefuseHelpers pushBack _defuseHelper; _minesHelped pushBack _x; From d6c5643790826d8918c1d4ae8344d2e3210fe8b2 Mon Sep 17 00:00:00 2001 From: bux Date: Wed, 30 Dec 2015 09:43:19 +0100 Subject: [PATCH 088/107] improve code style --- addons/explosives/CfgAmmo.hpp | 4 ++-- addons/explosives/CfgVehicles.hpp | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp index e354e763e8..843ecdb8e3 100644 --- a/addons/explosives/CfgAmmo.hpp +++ b/addons/explosives/CfgAmmo.hpp @@ -59,7 +59,7 @@ class CfgAmmo { class PipeBombBase; class DemoCharge_Remote_Ammo: PipeBombBase { ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted"; - GVAR(defuseObjectPosition[]) = {0.07,0,0.055}; + GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; hit = 500; @@ -68,7 +68,7 @@ class CfgAmmo { }; class SatchelCharge_Remote_Ammo: PipeBombBase { ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted"; - GVAR(defuseObjectPosition[]) = {0.1,0.1,0.05}; + GVAR(defuseObjectPosition[]) = {0.1, 0.1, 0.05}; soundActivation[] = {"", 0, 0, 0}; soundDeactivation[] = {"", 0, 0, 0}; }; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 62ef51a8f2..ce90b9079b 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -141,14 +141,11 @@ class CfgVehicles { class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place { displayName = "APERS Tripwire Mine"; model = "\A3\Weapons_F\explosives\mine_AP_tripwire"; - class ACE_Actions: ACE_Actions { class ACE_MainActions: ACE_MainActions { position = "[1.415,0,0.12]"; }; }; - - }; class ACE_Explosives_Place_ATMine:ACE_Explosives_Place { From 0e8eb5fac43f55fc7d4b0fb84e55f86a30860ed7 Mon Sep 17 00:00:00 2001 From: bux Date: Wed, 30 Dec 2015 11:23:52 +0100 Subject: [PATCH 089/107] Remove obsolete hotkey entries --- addons/attach/CfgVehicles.hpp | 2 -- addons/captives/CfgVehicles.hpp | 6 +----- addons/explosives/CfgVehicles.hpp | 4 ---- addons/gestures/CfgVehicles.hpp | 5 +---- addons/hearing/CfgVehicles.hpp | 2 -- addons/interaction/CfgVehicles.hpp | 18 +----------------- addons/medical/ACE_Medical_Actions.hpp | 15 --------------- addons/medical/ACE_Medical_SelfActions.hpp | 15 --------------- addons/overheating/CfgVehicles.hpp | 4 +--- addons/parachute/CfgVehicles.hpp | 1 - 10 files changed, 4 insertions(+), 68 deletions(-) diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp index daf91a43df..e462c0cefa 100644 --- a/addons/attach/CfgVehicles.hpp +++ b/addons/attach/CfgVehicles.hpp @@ -61,7 +61,6 @@ class CfgVehicles { showDisabled = 0; priority = 5; icon = PATHTOF(UI\attach_ca.paa); - // hotkey = "T"; }; class GVAR(Detach) { displayName = CSTRING(Detach); @@ -71,7 +70,6 @@ class CfgVehicles { showDisabled = 0; priority = 5; icon = PATHTOF(UI\detach_ca.paa); - hotkey = "T"; }; }; }; diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index 0cfda46128..a8215c0cdc 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -32,7 +32,6 @@ class CfgVehicles { showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; - hotkey = "E"; }; class ACE_StopEscorting { displayName = CSTRING(StopEscorting); @@ -43,7 +42,6 @@ class CfgVehicles { showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.3; - hotkey = "E"; }; class ACE_LoadCaptive { displayName = CSTRING(LoadCaptive); @@ -54,7 +52,6 @@ class CfgVehicles { showDisabled = 0; icon = QUOTE(PATHTOF(UI\captive_ca.paa)); priority = 2.2; - hotkey = "L"; }; class GVAR(UnloadCaptive) { displayName = CSTRING(UnloadCaptive); @@ -74,7 +71,6 @@ class CfgVehicles { exceptions[] = {"isNotEscorting"}; showDisabled = 0; priority = 2.3; - hotkey = "C"; }; class ACE_StartSurrenderingSelf { displayName = CSTRING(StartSurrendering); @@ -165,7 +161,7 @@ class CfgVehicles { description = CSTRING(ModuleSurrender_Description); sync[] = {"AnyAI"}; }; - }; + }; class GVAR(ModuleHandcuffed): Module_F { author = ECSTRING(common,ACETeam); category = "ACE"; diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp index 7a51a7d765..21f6a2b226 100644 --- a/addons/explosives/CfgVehicles.hpp +++ b/addons/explosives/CfgVehicles.hpp @@ -10,7 +10,6 @@ class CfgVehicles { showDisabled = 1; priority = 4; icon = PATHTOF(UI\Explosives_Menu_ca.paa); - hotkey = "X"; //Sub-menu items class ACE_Detonate { displayName = CSTRING(Detonate); @@ -21,7 +20,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\Explosives_Menu_ca.paa); priority = 2; - hotkey = "T"; }; class ACE_Place { displayName = CSTRING(Place); @@ -32,7 +30,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\Place_Explosive_ca.paa); priority = 1; - hotkey = "P"; }; class ACE_Cellphone { displayName = CSTRING(cellphone_displayName); @@ -72,7 +69,6 @@ class CfgVehicles { showDisabled = 0; icon = PATHTOF(UI\Defuse_ca.paa); priority = 0.8; - hotkey = "F"; distance = 5; }; }; diff --git a/addons/gestures/CfgVehicles.hpp b/addons/gestures/CfgVehicles.hpp index 019cffdb45..f9fd3cd076 100644 --- a/addons/gestures/CfgVehicles.hpp +++ b/addons/gestures/CfgVehicles.hpp @@ -10,7 +10,7 @@ class CfgVehicles { showDisabled = 1; priority = 3.5; icon = PATHTOF(UI\gestures_ca.paa); - + class GVAR(Advance) { displayName = CSTRING(BIgestureAdvance); condition = QUOTE(canStand _target); @@ -116,7 +116,6 @@ class CfgVehicles { statement = QUOTE(_target playActionNow ([ARR_2('gestureYes','gestureNod')] select floor random 2);); showDisabled = 1; priority = 1.1; - hotkey = "8"; }; class class GVAR(No) { @@ -125,7 +124,6 @@ class CfgVehicles { statement = QUOTE(_target playActionNow 'gestureNo';); showDisabled = 1; priority = 1.0; - hotkey = "9"; }; class class GVAR(Hi) { @@ -134,7 +132,6 @@ class CfgVehicles { statement = QUOTE(_target playActionNow ([ARR_3('gestureHi','gestureHiB','gestureHiC')] select floor random 3);); showDisabled = 1; priority = 0.9; - hotkey = "0"; }; */ diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 76a2f90a80..3873377052 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -11,7 +11,6 @@ class CfgVehicles { showDisabled = 0; priority = 2.5; icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); - hotkey = "E"; }; class ACE_RemoveEarplugs { displayName = CSTRING(EarPlugs_Off); @@ -21,7 +20,6 @@ class CfgVehicles { showDisabled = 0; priority = 2.5; icon = PATHTOF(UI\ACE_earplugs_x_ca.paa); - hotkey = "E"; }; }; }; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 55bc0b1159..f6b5172b70 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -69,7 +69,6 @@ class CfgVehicles { showDisabled = 0; priority = 3.2; icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; class ACE_AssignTeamRed { displayName = CSTRING(AssignTeamRed); @@ -78,7 +77,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\team\team_red_ca.paa); priority = 2.4; - hotkey = "R"; }; class ACE_AssignTeamGreen { displayName = CSTRING(AssignTeamGreen); @@ -87,7 +85,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\team\team_green_ca.paa); priority = 2.3; - hotkey = "G"; }; class ACE_AssignTeamBlue { displayName = CSTRING(AssignTeamBlue); @@ -96,7 +93,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\team\team_blue_ca.paa); priority = 2.2; - hotkey = "B"; }; class ACE_AssignTeamYellow { displayName = CSTRING(AssignTeamYellow); @@ -105,7 +101,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\team\team_yellow_ca.paa); priority = 2.1; - hotkey = "Y"; }; class ACE_UnassignTeam { displayName = CSTRING(LeaveTeam); @@ -114,7 +109,6 @@ class CfgVehicles { showDisabled = 1; icon = PATHTOF(UI\team\team_white_ca.paa); priority = 2.5; - hotkey = "N"; }; }; @@ -125,7 +119,6 @@ class CfgVehicles { showDisabled = 0; priority = 2.6; icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "J"; }; class ACE_GetDown { displayName = CSTRING(GetDown); @@ -224,7 +217,6 @@ class CfgVehicles { showDisabled = 1; priority = 3.2; icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; class ACE_JoinTeamRed { displayName = CSTRING(JoinTeamRed); @@ -234,7 +226,6 @@ class CfgVehicles { showDisabled = 1; priority = 2.4; icon = PATHTOF(UI\team\team_red_ca.paa); - hotkey = "R"; }; class ACE_JoinTeamGreen { displayName = CSTRING(JoinTeamGreen); @@ -244,7 +235,6 @@ class CfgVehicles { showDisabled = 1; priority = 2.3; icon = PATHTOF(UI\team\team_green_ca.paa); - hotkey = "G"; }; class ACE_JoinTeamBlue { displayName = CSTRING(JoinTeamBlue); @@ -254,7 +244,6 @@ class CfgVehicles { showDisabled = 1; priority = 2.2; icon = PATHTOF(UI\team\team_blue_ca.paa); - hotkey = "B"; }; class ACE_JoinTeamYellow { displayName = CSTRING(JoinTeamYellow); @@ -264,7 +253,6 @@ class CfgVehicles { showDisabled = 1; priority = 2.1; icon = PATHTOF(UI\team\team_yellow_ca.paa); - hotkey = "Y"; }; class ACE_LeaveTeam { displayName = CSTRING(LeaveTeam); @@ -274,7 +262,6 @@ class CfgVehicles { showDisabled = 1; priority = 2.5; icon = PATHTOF(UI\team\team_white_ca.paa); - hotkey = "N"; }; class ACE_BecomeLeader { displayName = CSTRING(BecomeLeader); @@ -284,7 +271,6 @@ class CfgVehicles { showDisabled = 1; priority = 1.0; icon = PATHTOF(UI\team\team_white_ca.paa); - hotkey = "L"; }; class ACE_LeaveGroup { displayName = CSTRING(LeaveGroup); @@ -294,7 +280,6 @@ class CfgVehicles { showDisabled = 1; priority = 1.2; icon = PATHTOF(UI\team\team_management_ca.paa); - hotkey = "M"; }; }; class ACE_Equipment { @@ -305,7 +290,6 @@ class CfgVehicles { showDisabled = 1; priority = 4.5; icon = ""; // @todo - hotkey = "E"; }; }; }; @@ -485,7 +469,7 @@ class CfgVehicles { }; }; }; - + class StaticMGWeapon: StaticWeapon {}; class HMG_01_base_F: StaticMGWeapon {}; diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp index 2912c87011..48cf6c87dc 100644 --- a/addons/medical/ACE_Medical_Actions.hpp +++ b/addons/medical/ACE_Medical_Actions.hpp @@ -16,7 +16,6 @@ class ACE_Head { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -28,7 +27,6 @@ class ACE_Head { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -95,7 +93,6 @@ class ACE_Torso { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; enableInside = 1; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -107,7 +104,6 @@ class ACE_Torso { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = ""; enableInside = 1; }; class TriageCard { @@ -118,7 +114,6 @@ class ACE_Torso { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = ""; enableInside = 1; icon = PATHTOF(UI\icons\triageCard.paa); }; @@ -130,7 +125,6 @@ class ACE_Torso { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = ""; }; @@ -143,7 +137,6 @@ class ACE_Torso { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; enableInside = 1; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -208,7 +201,6 @@ class ACE_ArmLeft { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -221,7 +213,6 @@ class ACE_ArmLeft { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -366,7 +357,6 @@ class ACE_ArmRight { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -379,7 +369,6 @@ class ACE_ArmRight { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -521,7 +510,6 @@ class ACE_LegLeft { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -535,7 +523,6 @@ class ACE_LegLeft { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -664,7 +651,6 @@ class ACE_LegRight { EXCEPTIONS showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -678,7 +664,6 @@ class ACE_LegRight { EXCEPTIONS showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp index 0f85930f51..4217e43e91 100644 --- a/addons/medical/ACE_Medical_SelfActions.hpp +++ b/addons/medical/ACE_Medical_SelfActions.hpp @@ -1,7 +1,6 @@ class Medical { displayName = CSTRING(Actions_Medical); runOnHover = 1; - hotkey = "M"; exceptions[] = {"isNotInside", "isNotSitting"}; statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation)); condition = "true"; @@ -24,7 +23,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'head', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; // Advanced medical @@ -36,7 +34,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'head', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -84,7 +81,6 @@ class Medical { modifierFunction = QUOTE([ARR_4(_target,_player,1,_this select 3)] call FUNC(modifyMedicalAction)); showDisabled = 1; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\medical_cross.paa); class Bandage { @@ -95,7 +91,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'body', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -107,7 +102,6 @@ class Medical { statement = QUOTE([ARR_2(_target, true)] call DFUNC(displayTriageCard)); showDisabled = 1; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\triageCard.paa); }; @@ -120,7 +114,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'body', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -162,7 +155,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -175,7 +167,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_l', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -264,7 +255,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -277,7 +267,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -362,7 +351,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -376,7 +364,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { @@ -449,7 +436,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'Bandage')] call DFUNC(treatment)); showDisabled = 1; priority = 2; - hotkey = "B"; icon = PATHTOF(UI\icons\bandage.paa); }; @@ -463,7 +449,6 @@ class Medical { statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'FieldDressing')] call DFUNC(treatment)); showDisabled = 0; priority = 2; - hotkey = ""; icon = PATHTOF(UI\icons\bandage.paa); }; class PackingBandage: fieldDressing { diff --git a/addons/overheating/CfgVehicles.hpp b/addons/overheating/CfgVehicles.hpp index a198ef71b6..ec9b07f36c 100644 --- a/addons/overheating/CfgVehicles.hpp +++ b/addons/overheating/CfgVehicles.hpp @@ -11,7 +11,6 @@ class CfgVehicles { showDisabled = 0; priority = 3; icon = QUOTE(PATHTOF(UI\spare_barrel_ca.paa)); - hotkey = "B"; }; class ACE_CheckTemperature { displayName = CSTRING(CheckTemperatureShort); @@ -21,7 +20,6 @@ class CfgVehicles { showDisabled = 0; priority = 2.9; icon = QUOTE(PATHTOF(UI\temp_ca.paa)); - hotkey = "P"; }; }; }; @@ -117,4 +115,4 @@ class CfgVehicles { // Czech class I_Soldier_02_F; class I_Soldier_AR_F:I_Soldier_02_F {MACRO_ADDSPAREBARREL}; class I_Soldier_support_base_F; class I_Soldier_AAR_F:I_Soldier_support_base_F {MACRO_ADDSPAREBARREL}; -}; \ No newline at end of file +}; diff --git a/addons/parachute/CfgVehicles.hpp b/addons/parachute/CfgVehicles.hpp index aefadf2e63..c0f1676eb2 100644 --- a/addons/parachute/CfgVehicles.hpp +++ b/addons/parachute/CfgVehicles.hpp @@ -20,7 +20,6 @@ class CfgVehicles { showDisabled = 0; priority = 2.9; icon = QUOTE(PATHTOF(UI\cut_ca.paa)); - hotkey = "C"; // Did this realy Work? }; }; }; From d372111d3f260cebcb5dc3a2241c0aadd9aa5f05 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 30 Dec 2015 12:23:35 -0600 Subject: [PATCH 090/107] Sitting Cleanup - Add modern privates - Don't add actions, canInteractWith, or EH if not enabled --- addons/sitting/XEH_clientInit.sqf | 17 ++++++++++++----- addons/sitting/functions/fnc_addSitActions.sqf | 15 ++++++++++++--- .../functions/fnc_getRandomAnimation.sqf | 4 +--- addons/sitting/functions/fnc_sit.sqf | 12 +++++------- addons/sitting/functions/fnc_stand.sqf | 3 +-- 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index 23816bd8d7..f7e641480d 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -3,9 +3,16 @@ // Exit on Headless if (!hasInterface) exitWith {}; -// Add interaction menu exception -["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); +["SettingsInitialized", { + TRACE_1("SettingInit", GVAR(enable)); + + //If not enabled, dont't add CanInteractWith Condition or event handlers: + if (!GVAR(enable)) exitWith {}; -// Handle interruptions -["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); -["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); + // Add interaction menu exception + ["isNotSitting", {isNil {(_this select 0) getVariable QGVAR(isSitting)}}] call EFUNC(common,addCanInteractWithCondition); + + // Handle interruptions + ["medical_onUnconscious", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); + ["SetHandcuffed", {_this call DFUNC(handleInterrupt)}] call EFUNC(common,addEventhandler); +}] call EFUNC(common,addEventHandler); diff --git a/addons/sitting/functions/fnc_addSitActions.sqf b/addons/sitting/functions/fnc_addSitActions.sqf index 18779d9229..98c9aba99f 100644 --- a/addons/sitting/functions/fnc_addSitActions.sqf +++ b/addons/sitting/functions/fnc_addSitActions.sqf @@ -16,19 +16,28 @@ #include "script_component.hpp" params ["_seat"]; -private ["_type", "_sitAction"]; -_type = typeOf _seat; +private _type = typeOf _seat; // Exit if the object is not specified as a seat if (getNumber (configFile >> "CfgVehicles" >> _type >> QGVAR(canSit)) != 1) exitWith {}; +// only run this after the settings are initialized +if !(EGVAR(common,settingsInitFinished)) exitWith { + EGVAR(common,runAtSettingsInitialized) pushBack [FUNC(addSitActions), _this]; +}; + +//If not enabled, don't add actions: +if (!GVAR(enable)) exitWith {}; + // Exit if class already initialized if (_type in GVAR(initializedClasses)) exitWith {}; GVAR(initializedClasses) pushBack _type; -_sitAction = [ +TRACE_1("Adding Sit Action",_type); + +private _sitAction = [ QGVAR(Sit), localize LSTRING(Sit), QUOTE(PATHTOF(UI\sit_ca.paa)), diff --git a/addons/sitting/functions/fnc_getRandomAnimation.sqf b/addons/sitting/functions/fnc_getRandomAnimation.sqf index ca9a9ccfb1..ed49b11e92 100644 --- a/addons/sitting/functions/fnc_getRandomAnimation.sqf +++ b/addons/sitting/functions/fnc_getRandomAnimation.sqf @@ -15,10 +15,8 @@ */ #include "script_component.hpp" -private "_animations"; - // Animations Pool -_animations = [ +private _animations = [ QGVAR(HubSittingChairA_idle1), QGVAR(HubSittingChairA_idle2), QGVAR(HubSittingChairA_idle3), diff --git a/addons/sitting/functions/fnc_sit.sqf b/addons/sitting/functions/fnc_sit.sqf index 24245699bc..7aa1c4c55b 100644 --- a/addons/sitting/functions/fnc_sit.sqf +++ b/addons/sitting/functions/fnc_sit.sqf @@ -16,15 +16,13 @@ */ #include "script_component.hpp" -private ["_actionID", "_configFile", "_sitDirection", "_sitPosition", "_seatPosOrig"]; - params ["_seat", "_player"]; // Overwrite weird position, because Arma decides to set it differently based on current animation/stance... _player switchMove "amovpknlmstpsraswrfldnon"; // Add scroll-wheel action to release object -_actionID = _player addAction [ +private _actionID = _player addAction [ format ["%1", localize LSTRING(Stand)], QUOTE((_this select 0) call FUNC(stand)), nil, @@ -36,9 +34,9 @@ _actionID = _player addAction [ ]; // Read config -_configFile = configFile >> "CfgVehicles" >> typeOf _seat; -_sitDirection = (getDir _seat) + getNumber (_configFile >> QGVAR(sitDirection)); -_sitPosition = getArray (_configFile >> QGVAR(sitPosition)); +private _configFile = configFile >> "CfgVehicles" >> typeOf _seat; +private _sitDirection = (getDir _seat) + getNumber (_configFile >> QGVAR(sitDirection)); +private _sitPosition = getArray (_configFile >> QGVAR(sitPosition)); // Get random animation and perform it (before moving player to ensure correct placement) [_player, call FUNC(getRandomAnimation), 2] call EFUNC(common,doAnimation); // Correctly places when using non-transitional animations @@ -55,7 +53,7 @@ _seat setVariable [QGVAR(seatOccupied), true, true]; // To prevent multiple peop // Add automatical stand PFH in case of interruptions -_seatPosOrig = getPosASL _seat; +private _seatPosOrig = getPosASL _seat; [{ params ["_args", "_pfhId"]; _args params ["_player", "_seat", "_seatPosOrig"]; diff --git a/addons/sitting/functions/fnc_stand.sqf b/addons/sitting/functions/fnc_stand.sqf index 4c08461746..a51f4203fc 100644 --- a/addons/sitting/functions/fnc_stand.sqf +++ b/addons/sitting/functions/fnc_stand.sqf @@ -16,7 +16,6 @@ #include "script_component.hpp" params ["_player"]; -private ["_animation"]; (_player getVariable QGVAR(isSitting)) params ["_seat", "_actionID"]; @@ -24,7 +23,7 @@ private ["_animation"]; _player removeAction _actionID; // Restore animation -_animation = switch (currentWeapon _player) do { +private _animation = switch (currentWeapon _player) do { case "": {"amovpercmstpsnonwnondnon"}; case (primaryWeapon _player): {"amovpercmstpslowwrfldnon"}; case (handgunWeapon _player): {"amovpercmstpslowwpstdnon"}; From f11c2af92153c598c28e94c6d5685c9c0b581949 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 30 Dec 2015 14:55:25 -0600 Subject: [PATCH 091/107] Update XEH_clientInit.sqf --- addons/sitting/XEH_clientInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sitting/XEH_clientInit.sqf b/addons/sitting/XEH_clientInit.sqf index f7e641480d..a167e0fea5 100644 --- a/addons/sitting/XEH_clientInit.sqf +++ b/addons/sitting/XEH_clientInit.sqf @@ -6,7 +6,7 @@ if (!hasInterface) exitWith {}; ["SettingsInitialized", { TRACE_1("SettingInit", GVAR(enable)); - //If not enabled, dont't add CanInteractWith Condition or event handlers: + //If not enabled, then do not add CanInteractWith Condition or event handlers: if (!GVAR(enable)) exitWith {}; // Add interaction menu exception From 2e211c5a04b7f5ccbea6e44a8298b1395bdae652 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 31 Dec 2015 01:46:24 -0600 Subject: [PATCH 092/107] Fix Medical Triagecard Macro Fix #3087 --- addons/medical/ui/triagecard.hpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/medical/ui/triagecard.hpp b/addons/medical/ui/triagecard.hpp index f8b0b21a71..b275d80b58 100644 --- a/addons/medical/ui/triagecard.hpp +++ b/addons/medical/ui/triagecard.hpp @@ -113,7 +113,7 @@ class GVAR(triageCard) { animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); GVAR(TriageCardTarget) setvariable [ARR_3('ACE_medical_triageLevel',0,true)];); + action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setvariable [ARR_3('ACE_medical_triageLevel',0,true)];); }; class selectTriageStatusMinor: selectTriageStatus { idc = 2003; @@ -131,7 +131,7 @@ class GVAR(triageCard) { animTextureFocused = "#(argb,8,8,3)color(0,0.5,0,0.9)"; animTexturePressed = "#(argb,8,8,3)color(0,0.5,0,0.9)"; animTextureDefault = "#(argb,8,8,3)color(0,0.5,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); GVAR(TriageCardTarget) setvariable [ARR_3('ACE_medical_triageLevel',1,true)];); + action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setvariable [ARR_3('ACE_medical_triageLevel',1,true)];); }; class selectTriageStatusDelayed: selectTriageStatus { idc = 2004; @@ -149,7 +149,7 @@ class GVAR(triageCard) { animTextureFocused = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; animTexturePressed = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; animTextureDefault = "#(argb,8,8,3)color(0.77,0.51,0.08,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); GVAR(TriageCardTarget) setvariable [ARR_3('ACE_medical_triageLevel',2,true)];); + action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setvariable [ARR_3('ACE_medical_triageLevel',2,true)];); }; class selectTriageStatusImmediate: selectTriageStatus { idc = 2005; @@ -167,7 +167,7 @@ class GVAR(triageCard) { animTextureFocused = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; animTexturePressed = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; animTextureDefault = "#(argb,8,8,3)color(1,0.2,0.2,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); GVAR(TriageCardTarget) setvariable [ARR_3('ACE_medical_triageLevel', 3, true)];); + action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setvariable [ARR_3('ACE_medical_triageLevel', 3, true)];); }; class selectTriageStatusDeceased: selectTriageStatus { idc = 2006; @@ -185,7 +185,7 @@ class GVAR(triageCard) { animTextureFocused = "#(argb,8,8,3)color(0,0,0,0.9)"; animTexturePressed = "#(argb,8,8,3)color(0,0,0,0.9)"; animTextureDefault = "#(argb,8,8,3)color(0,0,0,0.9)"; - action = QUOTE([false] call FUNC(dropDownTriageCard); GVAR(TriageCardTarget) setvariable [ARR_3('ACE_medical_triageLevel', 4, true)];); + action = QUOTE([false] call FUNC(dropDownTriageCard); (GVAR(TriageCardTarget)) setvariable [ARR_3('ACE_medical_triageLevel', 4, true)];); }; }; }; \ No newline at end of file From 2d64d54d98f07eb5e6e86a1dcc2c598cc2a91022 Mon Sep 17 00:00:00 2001 From: licht-im-Norden87 Date: Mon, 14 Dec 2015 01:03:14 +0100 Subject: [PATCH 093/107] Update German Stringtable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Iam sure there was a translation some time ago. Someone must have deleted it. spelling mistake Update Stringtable 100% some of them already existed in german language Update stringtable.xml spelling mistake Update stringtable.xml Iam not sure if SSWT is a Scharfschützenzweibein. However, it was used before, i just adpated it. Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Update stringtable.xml Handelt es sich bei dem Modell den auch um das Produkt von Sharpshooters® http://shop.centermassinc.com/Sharpshooters-Sniper-Weapon-Tripod-Kit-764737932766.htm bzw ist ads erkennbar. Ich persönlich halte die Bezeichnung SSWT-Kit für ein wenig ungünstig. Update stringtable.xml --- addons/dagr/stringtable.xml | 6 +++++- addons/explosives/stringtable.xml | 2 ++ addons/map/stringtable.xml | 22 ++++++++++++++++++---- addons/missileguidance/stringtable.xml | 2 +- addons/rearm/stringtable.xml | 5 +++-- addons/tripod/stringtable.xml | 8 ++++---- 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/addons/dagr/stringtable.xml b/addons/dagr/stringtable.xml index dea42275f2..61d226377d 100644 --- a/addons/dagr/stringtable.xml +++ b/addons/dagr/stringtable.xml @@ -3,6 +3,7 @@ DAGR + DAGR DAGR DAGR DAGR @@ -11,6 +12,7 @@ Configure DAGR + DAGR konfigurien Konfiguruj DAGR Configurar DAGR Настроить DAGR @@ -19,6 +21,7 @@ Toggle DAGR + DAGR umschalten Przełącz DAGR Mostrar DAGR Вкл./выкл. DAGR @@ -27,6 +30,7 @@ Defense Advanced GPS Receiver + Defense Advanced GPS Receiver Defense Advanced GPS Receiver Defense Advanced GPS Receiver Военный многофункциональный GPS-приёмник @@ -34,4 +38,4 @@ Defense Advanced GPS Receiver - \ No newline at end of file + diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml index f23cb2fc00..6cf03d7be2 100644 --- a/addons/explosives/stringtable.xml +++ b/addons/explosives/stringtable.xml @@ -582,6 +582,7 @@ Explode on defusal? + Explodieren beim Entschärfen? Explosão no desarmamento? Eksplozja przy rozbrajaniu? Explodovat při zneškodňování? @@ -592,6 +593,7 @@ Enable certain explosives to explode on defusal? Default: Yes + Sollen bestimmte Sprengladungen beim Entschärfen explodieren? Standard: Ja Ativa certos explosivos para detonar no desarmamento? Padrão: Sim Spraw, aby niektóre ładunki wybuchowe eksplodowały przy próbie ich rozbrojenia? Domyślnie:Tak Umožnit u některých výbušnin explozi při pokusu je zneškodnit? Výchozí: Ano diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index e7b55c56b0..dc4bb9539c 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -14,6 +14,7 @@ Map illumination? + Kartenbeleuchtung Oświetlenie mapy ¿Iluminación de mapa? Kartenausleuchtung @@ -25,6 +26,7 @@ Simulate map lighting based on ambient lighting and player's items? + Simuliere Kartenbeleuchtung auf Basis des Umgebungslichts sowie der mitgeführten Gegenstände? Symuluj oświetlenie mapy bazujące na oświetleniu otoczenia oraz przedmiotach gracza? Calcul la luminosité de la carte en fonction des conditions de lumière Симулировать освещение карты на основе окружающего света и приборов игрока? @@ -33,6 +35,7 @@ Map flashlight glow? + Kartenbeleuchtung durch Dritte erkennbar Poświata latarki Свет фонаря на карте? Brilho de lanterna no mapa? @@ -40,6 +43,7 @@ Add external glow to players who use flashlight on map? + Kartenbeleuchtung mittels Taschenlampe durch Dritte erkennbar? Pokaż poświatę światła latarki na graczu, który używa latarki na widoku mapy? Добавить свет при использовании фонаря на карте? Adicionar brilho externo para jogadores que usam lanterna no mapa? @@ -71,7 +75,7 @@ Limit map zoom? Ograniczony zoom ¿Limitar el zoom de mapa? - Kartenzoom einschränken + Kartenvergrößerung einschränken Omezit přiblížení mapy? Limitar zoom do mapa? Limiter le zoom de la carte? @@ -82,7 +86,7 @@ Limit the amount of zoom available for the map? Ogranicza maksymalny stopień przybliżenia mapy Limita la cantidad de zoom disponible para el mapa - Zoomstufe der Karte einschränken? + Schränkt die maximale Kartenvergrößerung ein. Omezit stupeň přiblížení pro mapu? Limitar a quantidade de zoom disponível para o mapa? Limite le zoom maximum pour la carte? @@ -93,7 +97,7 @@ Show cursor coordinates? Koordynaty pod kursorem ¿Mostrar coordenadas de cursor? - Zeige Cursor-Koordinaten? + Zeige Mauszeiger-Koordinaten? Zobrazit souřadnice u kurzoru? Mostrar coordenadas no cursor? Afficher les coordonnées sur le curseur? @@ -135,6 +139,7 @@ BFT Enable + BFT aktivieren RFA ativo Aktywuj BFT Povolit BFT @@ -145,6 +150,7 @@ Enable Blue Force Tracking. Default: No + Aktiviert Blue Force Tracking. Standard: Nein Ativa Rastreio de Forças Azuis. Padrão: Não Aktywuj Blue Force Tracking. Domyślnie: Nie Povolit Blue Force Tracking. Výchozí: Ne @@ -210,6 +216,7 @@ Flashlights + Taschenlampen Latarki Lanternas Фонари @@ -218,6 +225,7 @@ NVG + NSG Noktowizja Óculos de Visão Noturna ПНВ @@ -226,6 +234,7 @@ On + Ein Włącz Ligado Вкл. @@ -234,6 +243,7 @@ Off + Aus Wyłącz Desligado Выкл. @@ -242,6 +252,7 @@ Increase Brightness + Erhöhe Helligkeit Zwiększ czułość Aumentar brilho Увеличить яркость @@ -250,6 +261,7 @@ Decrease Brightness + Veringere Helligkeit Zmniejsz czułość Diminuir brilho Уменьшить яркость @@ -282,15 +294,17 @@ Set Channel At Start + Setzt Kanal am Spielstart Ust. domyślny kanał Definir canal no início Установить канал на старте Change the starting marker channel at mission start + Setzt den Chat/Markierungskanal am Missionsstart Ustaw domyślny kanał dla markerów przy starcie misji Muda o canal do marcador no início da missão Изменить начальный канал для установки маркеров при запуске миссии - \ No newline at end of file + diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml index 3a416007f4..c59c36fd50 100644 --- a/addons/missileguidance/stringtable.xml +++ b/addons/missileguidance/stringtable.xml @@ -30,7 +30,7 @@ Misil Hydra-70 DAGR Hydra-70 DAGR Hydra-70 DAGR - Hydra-70 DAGR Rackete + Hydra-70 DAGR Rakete Hydra-70 DAGR Missile Hydra-70 DAGR Míssil Hydra-70 DAGR diff --git a/addons/rearm/stringtable.xml b/addons/rearm/stringtable.xml index ebcf6dd2a9..c4e425501b 100644 --- a/addons/rearm/stringtable.xml +++ b/addons/rearm/stringtable.xml @@ -9,6 +9,7 @@ This module allows you to tweak rearm system settings. + Mittels diesem Modul kann das Aufmunitioniersystem angepasst werden. Ten moduł pozwala dostosować ustawienia przezbrajania. Этот модуль позволяет изменить настройки системы перевооружения. @@ -98,7 +99,7 @@ Rearmed %1 rounds of %2 on %3 - %1 Schuss %2 an %3 aufmunitioniert + %3 wurde mit %1 Patronen %2 aufmunitioniert Przezbrojono %1 pocisków %2 na %3 Перевооружено %1 снарядов %2 на %3 @@ -197,4 +198,4 @@ ФАБ-250М-54 - \ No newline at end of file + diff --git a/addons/tripod/stringtable.xml b/addons/tripod/stringtable.xml index c6366ba8de..16dd89a1f9 100644 --- a/addons/tripod/stringtable.xml +++ b/addons/tripod/stringtable.xml @@ -3,7 +3,7 @@ SSWT Kit - Scharfschützenzweibein + Scharfschützendreibein Снайперский штатив Trójnóg snajperski SSWT Kit @@ -15,7 +15,7 @@ Place SSWT Kit - Scharfschützenzweibein aufstellen + Scharfschützendreibein aufstellen Установить снайперский штатив Postaw trójnóg snajperski Place SSWT Kit @@ -30,7 +30,7 @@ Podnieś trójnóg snajperski Coger equipo SSWT Zvednout SSWT soupravu - SSWT-Werkzeug aufheben + Scharfschützendreibein einpacken Pegar kit SSWT Prendre le kit SSWT SSWT készlet felvétele @@ -41,7 +41,7 @@ Reguluj trójnóg snajperski Ajustar equipo SSWT Regulovat SSWT soupravu - SSWT-Werkzeug anpassen + Scharfschützendreibein anpassen Ajustar kit SSWT Régler le kit SSWT SSWT készlet állítása From f28e0920c48ea0968678633f2ebc6b3c434259de Mon Sep 17 00:00:00 2001 From: VKing Date: Thu, 31 Dec 2015 23:38:49 +0100 Subject: [PATCH 094/107] Fix inheritance from #3040 --- optionals/compat_rhs_usf3/CfgVehicles.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index da48a4cf96..853326e618 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -73,8 +73,8 @@ class cfgVehicles { EGVAR(refuel,fuelCapacity) = 219; }; - class APC_Tracked_02_base_F; - class rhsusf_m113_tank_base : APC_Tracked_02_base_F { + class APC_Tracked_02_base_F: Tank_F {}; + class rhsusf_m113_tank_base: APC_Tracked_02_base_F { EGVAR(refuel,fuelCapacity) = 360; class Turrets: Turrets { class MainTurret: MainTurret { From 0fb2fa1b8f86723388e1da9de173e5798046c667 Mon Sep 17 00:00:00 2001 From: VKing Date: Thu, 31 Dec 2015 23:39:09 +0100 Subject: [PATCH 095/107] Fix style --- optionals/compat_rhs_usf3/CfgVehicles.hpp | 24 +++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/optionals/compat_rhs_usf3/CfgVehicles.hpp b/optionals/compat_rhs_usf3/CfgVehicles.hpp index 853326e618..9a4e3ec709 100644 --- a/optionals/compat_rhs_usf3/CfgVehicles.hpp +++ b/optionals/compat_rhs_usf3/CfgVehicles.hpp @@ -31,45 +31,45 @@ class cfgVehicles { }; class Heli_light_03_base_F; - class RHS_UH1_Base : Heli_light_03_base_F { + class RHS_UH1_Base: Heli_light_03_base_F { EGVAR(refuel,fuelCapacity) = 1447; }; class Heli_Transport_01_base_F; - class RHS_UH60_Base : Heli_Transport_01_base_F { + class RHS_UH60_Base: Heli_Transport_01_base_F { EGVAR(refuel,fuelCapacity) = 1360; }; class Heli_Transport_02_base_F; - class RHS_CH_47F_base : Heli_Transport_02_base_F { + class RHS_CH_47F_base: Heli_Transport_02_base_F { EGVAR(refuel,fuelCapacity) = 3914; }; class Heli_Attack_01_base_F; - class RHS_AH1Z_base : Heli_Attack_01_base_F { + class RHS_AH1Z_base: Heli_Attack_01_base_F { EGVAR(refuel,fuelCapacity) = 1600; }; - class RHS_AH64_base : Heli_Attack_01_base_F { + class RHS_AH64_base: Heli_Attack_01_base_F { EGVAR(refuel,fuelCapacity) = 1420; }; class MBT_01_arty_base_F; - class rhsusf_m109tank_base : MBT_01_arty_base_F { + class rhsusf_m109tank_base: MBT_01_arty_base_F { EGVAR(refuel,fuelCapacity) = 511; }; class MRAP_01_base_F; - class rhsusf_hmmwe_base : MRAP_01_base_F { + class rhsusf_hmmwe_base: MRAP_01_base_F { EGVAR(refuel,fuelCapacity) = 95; }; - class rhsusf_rg33_base : MRAP_01_base_F { + class rhsusf_rg33_base: MRAP_01_base_F { EGVAR(refuel,fuelCapacity) = 302; }; class Truck_01_base_F; - class rhsusf_fmtv_base : Truck_01_base_F { + class rhsusf_fmtv_base: Truck_01_base_F { EGVAR(refuel,fuelCapacity) = 219; }; @@ -83,17 +83,17 @@ class cfgVehicles { }; }; class APC_Tracked_03_base_F; - class RHS_M2A2_Base : APC_Tracked_03_base_F { + class RHS_M2A2_Base: APC_Tracked_03_base_F { EGVAR(refuel,fuelCapacity) = 746; }; class Plane_CAS_01_base_F; - class RHS_A10 : Plane_CAS_01_base_F { + class RHS_A10: Plane_CAS_01_base_F { EGVAR(refuel,fuelCapacity) = 6223; }; class Plane_Base_F; - class RHS_C130J_Base : Plane_Base_F { + class RHS_C130J_Base: Plane_Base_F { EGVAR(refuel,fuelCapacity) = 25704; }; }; From 5f74daec42a666e7d9886f3c653663ad85097ebd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 31 Dec 2015 22:28:35 -0600 Subject: [PATCH 096/107] Fix dupe german stringtable entry --- addons/map/stringtable.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index dc4bb9539c..a7eb5482e2 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -17,7 +17,6 @@ Kartenbeleuchtung Oświetlenie mapy ¿Iluminación de mapa? - Kartenausleuchtung Osvětlení mapy Iluminação do mapa? Luminosité From 79a7bb54aa4a2aa57d004ca502f6dbee6172bc82 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 1 Jan 2016 00:14:48 -0600 Subject: [PATCH 097/107] Kill Spectator PFEH when exiting spectator Should fix #2989 There is a race condition between these 4 PFEH and the "onUnload" event in handleInterface. If the PFEHs run first they will use nil variables and throw a script error. This sets them to nil immediately when exiting spectator --- addons/spectator/functions/fnc_setSpectator.sqf | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 333dc023c9..d8a0219110 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -127,6 +127,12 @@ if (_set) then { GVAR(unitCamera) = nil; GVAR(targetCamera) = nil; + //Kill these PFEH handlers now because the PFEH can run before the `onunload` event is handled + GVAR(camHandler) = nil; + GVAR(compHandler) = nil; + GVAR(iconHandler) = nil; + GVAR(toolHandler) = nil; + // Cleanup display variables GVAR(ctrlKey) = nil; GVAR(heldKeys) = nil; From ecad63e34d8de536ec1f0d60d539f971dff58b17 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 3 Jan 2016 14:47:37 +0100 Subject: [PATCH 098/107] integrate filters pbo into inventory pbo --- addons/filters/$PBOPREFIX$ | 1 - addons/filters/config.cpp | 15 --------- addons/filters/functions/script_component.hpp | 1 - addons/filters/script_component.hpp | 21 ------------ addons/filters/stringtable.xml | 33 ------------------- .../CfgEventHandlers.hpp | 0 .../{filters => inventory}/XEH_postInit.sqf | 0 addons/{filters => inventory}/XEH_preInit.sqf | 0 addons/inventory/config.cpp | 4 ++- .../functions/fnc_addCustomFilter.sqf | 0 .../functions/fnc_currentItemListBox.sqf | 0 .../functions/fnc_filterBackpacks.sqf | 0 .../functions/fnc_filterGrenades.sqf | 0 .../functions/fnc_filterHeadgear.sqf | 0 .../functions/fnc_filterItems.sqf | 0 .../functions/fnc_filterMagazines.sqf | 0 .../functions/fnc_filterMedical.sqf | 0 .../functions/fnc_filterUniforms.sqf | 0 .../functions/fnc_filterVests.sqf | 0 .../functions/fnc_filterWeapons.sqf | 0 .../functions/fnc_forceItemListUpdate.sqf | 0 .../functions/fnc_inventoryDisplayLoaded.sqf | 0 .../functions/fnc_onLBSelChanged.sqf | 0 .../inventory/functions/script_component.hpp | 1 + addons/inventory/script_component.hpp | 13 ++++++-- addons/inventory/stringtable.xml | 28 ++++++++++++++++ 26 files changed, 43 insertions(+), 74 deletions(-) delete mode 100644 addons/filters/$PBOPREFIX$ delete mode 100644 addons/filters/config.cpp delete mode 100644 addons/filters/functions/script_component.hpp delete mode 100644 addons/filters/script_component.hpp delete mode 100644 addons/filters/stringtable.xml rename addons/{filters => inventory}/CfgEventHandlers.hpp (100%) rename addons/{filters => inventory}/XEH_postInit.sqf (100%) rename addons/{filters => inventory}/XEH_preInit.sqf (100%) rename addons/{filters => inventory}/functions/fnc_addCustomFilter.sqf (100%) rename addons/{filters => inventory}/functions/fnc_currentItemListBox.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterBackpacks.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterGrenades.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterHeadgear.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterItems.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterMagazines.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterMedical.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterUniforms.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterVests.sqf (100%) rename addons/{filters => inventory}/functions/fnc_filterWeapons.sqf (100%) rename addons/{filters => inventory}/functions/fnc_forceItemListUpdate.sqf (100%) rename addons/{filters => inventory}/functions/fnc_inventoryDisplayLoaded.sqf (100%) rename addons/{filters => inventory}/functions/fnc_onLBSelChanged.sqf (100%) create mode 100644 addons/inventory/functions/script_component.hpp diff --git a/addons/filters/$PBOPREFIX$ b/addons/filters/$PBOPREFIX$ deleted file mode 100644 index 06f96465a9..0000000000 --- a/addons/filters/$PBOPREFIX$ +++ /dev/null @@ -1 +0,0 @@ -z\ace\addons\filters \ No newline at end of file diff --git a/addons/filters/config.cpp b/addons/filters/config.cpp deleted file mode 100644 index a7b7bae6df..0000000000 --- a/addons/filters/config.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "script_component.hpp" - -class CfgPatches { - class ADDON { - units[] = {}; - weapons[] = {}; - requiredVersion = REQUIRED_VERSION; - requiredAddons[] = {"ace_common"}; - author[] = {""}; - authorUrl = ""; - VERSION_CONFIG; - }; -}; - -#include "CfgEventHandlers.hpp" diff --git a/addons/filters/functions/script_component.hpp b/addons/filters/functions/script_component.hpp deleted file mode 100644 index 500275e357..0000000000 --- a/addons/filters/functions/script_component.hpp +++ /dev/null @@ -1 +0,0 @@ -#include "\z\ace\addons\filters\script_component.hpp" \ No newline at end of file diff --git a/addons/filters/script_component.hpp b/addons/filters/script_component.hpp deleted file mode 100644 index e96072de4b..0000000000 --- a/addons/filters/script_component.hpp +++ /dev/null @@ -1,21 +0,0 @@ -#define COMPONENT filters -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_FILTERS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_ENABLED_FILTERS - #define DEBUG_SETTINGS DEBUG_ENABLED_FILTERS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" - -#define IDC_FILTERLISTS 6554 -#define IDC_ITEMLIST_GROUND 632 -#define IDC_ITEMLIST_SOLDIER 640 -#define IDC_ITEMLIST_UNIFORM 633 -#define IDC_ITEMLIST_VEST 638 -#define IDC_ITEMLIST_BACKPACK 619 - -#define DUMMY_VALUE 127 diff --git a/addons/filters/stringtable.xml b/addons/filters/stringtable.xml deleted file mode 100644 index a7f9e30ec6..0000000000 --- a/addons/filters/stringtable.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - Backpacks - Rucksäcke - - - Headgear - Kopfbedeckungen - - - Glasses - Brillen - - - Uniforms - Uniformen - - - Vests - Westen - - - Grenades - Granaten - - - Medical - Sanimaterial - - - diff --git a/addons/filters/CfgEventHandlers.hpp b/addons/inventory/CfgEventHandlers.hpp similarity index 100% rename from addons/filters/CfgEventHandlers.hpp rename to addons/inventory/CfgEventHandlers.hpp diff --git a/addons/filters/XEH_postInit.sqf b/addons/inventory/XEH_postInit.sqf similarity index 100% rename from addons/filters/XEH_postInit.sqf rename to addons/inventory/XEH_postInit.sqf diff --git a/addons/filters/XEH_preInit.sqf b/addons/inventory/XEH_preInit.sqf similarity index 100% rename from addons/filters/XEH_preInit.sqf rename to addons/inventory/XEH_preInit.sqf diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp index 1190525901..f0982a46b4 100644 --- a/addons/inventory/config.cpp +++ b/addons/inventory/config.cpp @@ -6,11 +6,13 @@ class CfgPatches { weapons[] = {}; requiredVersion = REQUIRED_VERSION; requiredAddons[] = {"ace_common"}; - author[] = {"Pabst Mirror"}; + author[] = {"Pabst Mirror, commy2"}; authorUrl = "https://github.com/PabstMirror/"; VERSION_CONFIG; }; }; +#include "CfgEventHandlers.hpp" + #include "RscDisplayInventory.hpp" #include "ACE_Settings.hpp" diff --git a/addons/filters/functions/fnc_addCustomFilter.sqf b/addons/inventory/functions/fnc_addCustomFilter.sqf similarity index 100% rename from addons/filters/functions/fnc_addCustomFilter.sqf rename to addons/inventory/functions/fnc_addCustomFilter.sqf diff --git a/addons/filters/functions/fnc_currentItemListBox.sqf b/addons/inventory/functions/fnc_currentItemListBox.sqf similarity index 100% rename from addons/filters/functions/fnc_currentItemListBox.sqf rename to addons/inventory/functions/fnc_currentItemListBox.sqf diff --git a/addons/filters/functions/fnc_filterBackpacks.sqf b/addons/inventory/functions/fnc_filterBackpacks.sqf similarity index 100% rename from addons/filters/functions/fnc_filterBackpacks.sqf rename to addons/inventory/functions/fnc_filterBackpacks.sqf diff --git a/addons/filters/functions/fnc_filterGrenades.sqf b/addons/inventory/functions/fnc_filterGrenades.sqf similarity index 100% rename from addons/filters/functions/fnc_filterGrenades.sqf rename to addons/inventory/functions/fnc_filterGrenades.sqf diff --git a/addons/filters/functions/fnc_filterHeadgear.sqf b/addons/inventory/functions/fnc_filterHeadgear.sqf similarity index 100% rename from addons/filters/functions/fnc_filterHeadgear.sqf rename to addons/inventory/functions/fnc_filterHeadgear.sqf diff --git a/addons/filters/functions/fnc_filterItems.sqf b/addons/inventory/functions/fnc_filterItems.sqf similarity index 100% rename from addons/filters/functions/fnc_filterItems.sqf rename to addons/inventory/functions/fnc_filterItems.sqf diff --git a/addons/filters/functions/fnc_filterMagazines.sqf b/addons/inventory/functions/fnc_filterMagazines.sqf similarity index 100% rename from addons/filters/functions/fnc_filterMagazines.sqf rename to addons/inventory/functions/fnc_filterMagazines.sqf diff --git a/addons/filters/functions/fnc_filterMedical.sqf b/addons/inventory/functions/fnc_filterMedical.sqf similarity index 100% rename from addons/filters/functions/fnc_filterMedical.sqf rename to addons/inventory/functions/fnc_filterMedical.sqf diff --git a/addons/filters/functions/fnc_filterUniforms.sqf b/addons/inventory/functions/fnc_filterUniforms.sqf similarity index 100% rename from addons/filters/functions/fnc_filterUniforms.sqf rename to addons/inventory/functions/fnc_filterUniforms.sqf diff --git a/addons/filters/functions/fnc_filterVests.sqf b/addons/inventory/functions/fnc_filterVests.sqf similarity index 100% rename from addons/filters/functions/fnc_filterVests.sqf rename to addons/inventory/functions/fnc_filterVests.sqf diff --git a/addons/filters/functions/fnc_filterWeapons.sqf b/addons/inventory/functions/fnc_filterWeapons.sqf similarity index 100% rename from addons/filters/functions/fnc_filterWeapons.sqf rename to addons/inventory/functions/fnc_filterWeapons.sqf diff --git a/addons/filters/functions/fnc_forceItemListUpdate.sqf b/addons/inventory/functions/fnc_forceItemListUpdate.sqf similarity index 100% rename from addons/filters/functions/fnc_forceItemListUpdate.sqf rename to addons/inventory/functions/fnc_forceItemListUpdate.sqf diff --git a/addons/filters/functions/fnc_inventoryDisplayLoaded.sqf b/addons/inventory/functions/fnc_inventoryDisplayLoaded.sqf similarity index 100% rename from addons/filters/functions/fnc_inventoryDisplayLoaded.sqf rename to addons/inventory/functions/fnc_inventoryDisplayLoaded.sqf diff --git a/addons/filters/functions/fnc_onLBSelChanged.sqf b/addons/inventory/functions/fnc_onLBSelChanged.sqf similarity index 100% rename from addons/filters/functions/fnc_onLBSelChanged.sqf rename to addons/inventory/functions/fnc_onLBSelChanged.sqf diff --git a/addons/inventory/functions/script_component.hpp b/addons/inventory/functions/script_component.hpp new file mode 100644 index 0000000000..07c5e38d2d --- /dev/null +++ b/addons/inventory/functions/script_component.hpp @@ -0,0 +1 @@ +#include "\z\ace\addons\inventory\script_component.hpp" \ No newline at end of file diff --git a/addons/inventory/script_component.hpp b/addons/inventory/script_component.hpp index 248f324b36..b013e08570 100644 --- a/addons/inventory/script_component.hpp +++ b/addons/inventory/script_component.hpp @@ -2,11 +2,20 @@ #include "\z\ace\addons\main\script_mod.hpp" #ifdef DEBUG_ENABLED_INVENTORY - #define DEBUG_MODE_FULL + #define DEBUG_MODE_FULL #endif #ifdef DEBUG_SETTINGS_INVENTORY - #define DEBUG_SETTINGS DEBUG_SETTINGS_INVENTORY + #define DEBUG_SETTINGS DEBUG_SETTINGS_INVENTORY #endif #include "\z\ace\addons\main\script_macros.hpp" + +#define IDC_FILTERLISTS 6554 +#define IDC_ITEMLIST_GROUND 632 +#define IDC_ITEMLIST_SOLDIER 640 +#define IDC_ITEMLIST_UNIFORM 633 +#define IDC_ITEMLIST_VEST 638 +#define IDC_ITEMLIST_BACKPACK 619 + +#define DUMMY_VALUE 127 diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml index 04cac46b87..af21fe3ddf 100644 --- a/addons/inventory/stringtable.xml +++ b/addons/inventory/stringtable.xml @@ -25,5 +25,33 @@ Normalmente il menù inventario è scalato in base alle dimensioni interfaccia. Questa opzione di permette di ingrandirlo ulteriormente ma senza aumentare la dimensione del testo. 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. + + Backpacks + Rucksäcke + + + Headgear + Kopfbedeckungen + + + Glasses + Brillen + + + Uniforms + Uniformen + + + Vests + Westen + + + Grenades + Granaten + + + Medical + Sanimaterial + From 427628045cffe61ff6ff954ed8197f5031674647 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 3 Jan 2016 15:21:38 +0100 Subject: [PATCH 099/107] fix ThingX capitalization, fix #3076 --- addons/concertina_wire/CfgVehicles.hpp | 4 ++-- addons/dragging/CfgVehicles.hpp | 2 +- addons/interaction/CfgVehicles.hpp | 8 ++++---- addons/repair/CfgVehicles.hpp | 4 ++-- addons/sandbag/CfgVehicles.hpp | 4 ++-- addons/tripod/CfgVehicles.hpp | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/addons/concertina_wire/CfgVehicles.hpp b/addons/concertina_wire/CfgVehicles.hpp index 81304da853..2a0b8cead2 100644 --- a/addons/concertina_wire/CfgVehicles.hpp +++ b/addons/concertina_wire/CfgVehicles.hpp @@ -1,7 +1,7 @@ class CfgVehicles { class Fence; - class thingX; + class ThingX; class NonStrategic; class ACE_ConcertinaWireNoGeo: Fence { @@ -94,7 +94,7 @@ class CfgVehicles { }; }; }; - class ACE_ConcertinaWireCoil: thingX { + class ACE_ConcertinaWireCoil: ThingX { XEH_ENABLED; scope = 2; displayName = $STR_ACE_CONCERTINA_WIRECOIL; diff --git a/addons/dragging/CfgVehicles.hpp b/addons/dragging/CfgVehicles.hpp index b7128341bb..bbd362f758 100644 --- a/addons/dragging/CfgVehicles.hpp +++ b/addons/dragging/CfgVehicles.hpp @@ -85,7 +85,7 @@ class CfgVehicles { }; // Barrier - class RoadCone_F: thingX { + class RoadCone_F: ThingX { XEH_ENABLED; GVAR(canCarry) = 1; GVAR(carryPosition[]) = {0,1,1}; diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 55bc0b1159..d49e75dd16 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -513,8 +513,8 @@ class CfgVehicles { }; }; - class thingX; - class ReammoBox_F: thingX { + class ThingX; + class ReammoBox_F: ThingX { class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); @@ -535,7 +535,7 @@ class CfgVehicles { class ACE_SelfActions {}; }; - class ACE_RepairItem_Base: thingX { + class ACE_RepairItem_Base: ThingX { class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); @@ -548,7 +548,7 @@ class CfgVehicles { class ACE_SelfActions {}; }; - class RoadCone_F: thingX { + class RoadCone_F: ThingX { class ACE_Actions { class ACE_MainActions { displayName = CSTRING(MainAction); diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index 0b370bd2d3..1968023881 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -302,8 +302,8 @@ class CfgVehicles { MACRO_REPAIRVEHICLE }; - class thingX; - class ACE_RepairItem_Base: thingX { + class ThingX; + class ACE_RepairItem_Base: ThingX { XEH_ENABLED; icon = "iconObject_circle"; mapSize = 0.7; diff --git a/addons/sandbag/CfgVehicles.hpp b/addons/sandbag/CfgVehicles.hpp index a2b255318e..71276b91d7 100644 --- a/addons/sandbag/CfgVehicles.hpp +++ b/addons/sandbag/CfgVehicles.hpp @@ -42,8 +42,8 @@ class CfgVehicles { }; };*/ - class thingX; - class ACE_SandbagObject: thingX { + class ThingX; + class ACE_SandbagObject: ThingX { author = ECSTRING(common,ACETeam); XEH_ENABLED; scope = 1; diff --git a/addons/tripod/CfgVehicles.hpp b/addons/tripod/CfgVehicles.hpp index 60486b8afb..de16d6867a 100644 --- a/addons/tripod/CfgVehicles.hpp +++ b/addons/tripod/CfgVehicles.hpp @@ -32,8 +32,8 @@ class CfgVehicles { }; }; - class thingX; - class ACE_TripodObject: thingX { + class ThingX; + class ACE_TripodObject: ThingX { XEH_ENABLED; EGVAR(dragging,canDrag) = 1; EGVAR(dragging,dragPosition[]) = {0,1,0}; From 3974c255a0674a26b1935c940db7aa0bb3beaf32 Mon Sep 17 00:00:00 2001 From: commy2 Date: Sun, 3 Jan 2016 15:27:16 +0100 Subject: [PATCH 100/107] fix usage of deprectated fired XEH, fix #3088 --- addons/goggles/CfgEventHandlers.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/goggles/CfgEventHandlers.hpp b/addons/goggles/CfgEventHandlers.hpp index 67f17fda18..ed2cba5561 100644 --- a/addons/goggles/CfgEventHandlers.hpp +++ b/addons/goggles/CfgEventHandlers.hpp @@ -19,10 +19,10 @@ class Extended_Killed_EventHandlers { }; }; -class Extended_Fired_EventHandlers { +class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - fired = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleFired)}); + firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleFired)}); }; }; }; From a72e07fcaa980be5553f11ed6c374be57d29b5f2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 3 Jan 2016 11:01:14 -0600 Subject: [PATCH 101/107] Goggles - change some events to be client only all these events have `if (_unit != ACE_player) exitWith {true};` --- addons/goggles/CfgEventHandlers.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/goggles/CfgEventHandlers.hpp b/addons/goggles/CfgEventHandlers.hpp index ed2cba5561..8c24b6d5ec 100644 --- a/addons/goggles/CfgEventHandlers.hpp +++ b/addons/goggles/CfgEventHandlers.hpp @@ -14,7 +14,7 @@ class Extended_PostInit_EventHandlers { class Extended_Killed_EventHandlers { class CAManBase { class ADDON { - killed = QUOTE(_this call FUNC(handleKilled)); + clientKilled = QUOTE(_this call FUNC(handleKilled)); }; }; }; @@ -22,7 +22,7 @@ class Extended_Killed_EventHandlers { class Extended_FiredBIS_EventHandlers { class CAManBase { class ADDON { - firedBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleFired)}); + clientFiredBIS = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleFired)}); }; }; }; @@ -30,7 +30,7 @@ class Extended_FiredBIS_EventHandlers { class Extended_Explosion_EventHandlers { class CAManBase { class ADDON { - explosion = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleExplosion)}); + clientExplosion = QUOTE(if (local (_this select 0)) then {_this call FUNC(handleExplosion)}); }; }; }; From 509e142de82f8fe1246dddb5f8a49d00ba9b4779 Mon Sep 17 00:00:00 2001 From: Glowbal Date: Tue, 5 Jan 2016 22:42:37 +0100 Subject: [PATCH 102/107] bump version 3.4.2 --- README.md | 4 ++-- addons/main/script_mod.hpp | 2 +- mod.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f313999923..d95c152904 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@

- ACE3 Version + ACE3 Version - + ACE3 Download diff --git a/addons/main/script_mod.hpp b/addons/main/script_mod.hpp index 91041e1f4c..912736c264 100644 --- a/addons/main/script_mod.hpp +++ b/addons/main/script_mod.hpp @@ -5,7 +5,7 @@ #define MAJOR 3 #define MINOR 4 -#define PATCHLVL 1 +#define PATCHLVL 2 #define BUILD 0 #define VERSION MAJOR.MINOR.PATCHLVL.BUILD diff --git a/mod.cpp b/mod.cpp index f20926ece5..b780224df9 100644 --- a/mod.cpp +++ b/mod.cpp @@ -1,8 +1,8 @@ -name = "Advanced Combat Environment 3.4.1"; +name = "Advanced Combat Environment 3.4.2"; picture = "logo_ace3_ca.paa"; actionName = "GitHub"; action = "https://github.com/acemod/ACE3"; -description = "ACE3 - Version 3.4.1"; +description = "ACE3 - Version 3.4.2"; logo = "logo_ace3_ca.paa"; logoOver = "logo_ace3_ca.paa"; tooltip = "ACE3"; From e56e18bff3a18d4e25a9e7dab5d9f218ef4121b5 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 6 Jan 2016 22:42:02 +0100 Subject: [PATCH 103/107] Code cleanup 1.54 --- .../functions/fnc_backpackOpened.sqf | 13 +-- addons/backpacks/functions/fnc_isBackpack.sqf | 5 +- .../functions/fnc_onOpenInventory.sqf | 5 +- .../functions/fnc_replaceATWeapon.sqf | 16 ++-- .../functions/fnc_takeLoadedATWeapon.sqf | 19 ++-- .../functions/fnc_updateInventoryDisplay.sqf | 10 +-- addons/grenades/functions/fnc_flare.sqf | 3 +- .../functions/fnc_flashbangExplosionEH.sqf | 21 +++-- .../functions/fnc_flashbangThrownFuze.sqf | 2 +- addons/grenades/functions/fnc_nextMode.sqf | 18 ++-- .../grenades/functions/fnc_throwGrenade.sqf | 26 +++--- addons/hitreactions/XEH_preInit.sqf | 1 + .../hitreactions/functions/fnc_fallDown.sqf | 50 +---------- .../functions/fnc_getRandomAnimation.sqf | 51 +++++++++++ addons/movement/XEH_postInit.sqf | 5 +- addons/movement/functions/fnc_canClimb.sqf | 33 ++++--- addons/movement/functions/fnc_climb.sqf | 4 +- addons/movement/functions/fnc_getWeight.sqf | 6 +- addons/movement/functions/fnc_handleClimb.sqf | 6 +- addons/recoil/functions/fnc_camshake.sqf | 88 ++++++++++--------- addons/reload/XEH_postInit.sqf | 31 ++++--- addons/reload/functions/fnc_canLinkBelt.sqf | 16 ++-- addons/reload/functions/fnc_checkAmmo.sqf | 5 +- addons/reload/functions/fnc_displayAmmo.sqf | 34 ++++--- .../reload/functions/fnc_startLinkingBelt.sqf | 25 +++--- .../vehicles/functions/fnc_speedLimiter.sqf | 7 +- addons/weaponselect/XEH_postInit.sqf | 3 +- addons/weaponselect/XEH_preInit.sqf | 8 +- .../fnc_displayGrenadeTypeAndNumber.sqf | 10 +-- .../functions/fnc_fireSmokeLauncher.sqf | 14 ++- .../functions/fnc_playChangeFiremodeSound.sqf | 6 +- .../functions/fnc_putWeaponAway.sqf | 2 +- .../functions/fnc_selectNextGrenade.sqf | 18 ++-- .../functions/fnc_selectWeaponMode.sqf | 14 ++- .../functions/fnc_selectWeaponMuzzle.sqf | 8 +- .../functions/fnc_selectWeaponVehicle.sqf | 17 ++-- .../functions/fnc_throwGrenade.sqf | 3 +- 37 files changed, 276 insertions(+), 327 deletions(-) create mode 100644 addons/hitreactions/functions/fnc_getRandomAnimation.sqf diff --git a/addons/backpacks/functions/fnc_backpackOpened.sqf b/addons/backpacks/functions/fnc_backpackOpened.sqf index 4e61e8fbcc..b7ab4cd1f4 100644 --- a/addons/backpacks/functions/fnc_backpackOpened.sqf +++ b/addons/backpacks/functions/fnc_backpackOpened.sqf @@ -17,24 +17,17 @@ params ["_target", "_backpack"]; // do cam shake if the target is the player -if ([_target] call EFUNC(common,isPlayer)) then { +if (_target call EFUNC(common,isPlayer)) then { addCamShake [4, 0.5, 5]; }; // play a zipper sound effect -private ["_sounds", "_position"]; - -_sounds = [ - /*"a3\sounds_f\characters\ingame\AinvPknlMstpSlayWpstDnon_medic.wss", - "a3\sounds_f\characters\ingame\AinvPknlMstpSlayWrflDnon_medic.wss", - "a3\sounds_f\characters\ingame\AinvPpneMstpSlayWpstDnon_medic.wss", - "a3\sounds_f\characters\ingame\AinvPpneMstpSlayWrflDnon_medic.wss"*/ - +private _sounds = [ QUOTE(PATHTO_R(sounds\zip_in.wav)), QUOTE(PATHTO_R(sounds\zip_out.wav)) ]; -_position = AGLToASL (_target modelToWorldVisual (_target selectionPosition "Spine3")); +private _position = AGLToASL (_target modelToWorldVisual (_target selectionPosition "Spine3")); playSound3D [ _sounds select floor random count _sounds, diff --git a/addons/backpacks/functions/fnc_isBackpack.sqf b/addons/backpacks/functions/fnc_isBackpack.sqf index 68b59f803e..d6b0fb1071 100644 --- a/addons/backpacks/functions/fnc_isBackpack.sqf +++ b/addons/backpacks/functions/fnc_isBackpack.sqf @@ -12,13 +12,12 @@ */ #include "script_component.hpp" -params ["_backpack"]; +params [["_backpack", objNull, [objNull]]]; if (_backpack isEqualType objNull) then { _backpack = typeOf _backpack; }; -private "_config"; -_config = configFile >> "CfgVehicles" >> _backpack; +private _config = configFile >> "CfgVehicles" >> _backpack; getText (_config >> "vehicleClass") == "backpacks" && {getNumber (_config >> "maximumLoad") > 0} // return diff --git a/addons/backpacks/functions/fnc_onOpenInventory.sqf b/addons/backpacks/functions/fnc_onOpenInventory.sqf index 154000202d..d9a99535eb 100644 --- a/addons/backpacks/functions/fnc_onOpenInventory.sqf +++ b/addons/backpacks/functions/fnc_onOpenInventory.sqf @@ -16,11 +16,10 @@ params ["_unit", "_backpack"]; // exit if the target is not a real backpack, i.e. parachute, static weapon bag etc. -if !([_backpack] call FUNC(isBackpack)) exitWith {false}; +if !(_backpack call FUNC(isBackpack)) exitWith {false}; // get the unit that wears the backpack object -private "_target"; -_target = objectParent _backpack; +private _target = objectParent _backpack; if (isNull _target) exitWith {false}; diff --git a/addons/disposable/functions/fnc_replaceATWeapon.sqf b/addons/disposable/functions/fnc_replaceATWeapon.sqf index f0cee0a048..88e27190ed 100644 --- a/addons/disposable/functions/fnc_replaceATWeapon.sqf +++ b/addons/disposable/functions/fnc_replaceATWeapon.sqf @@ -24,15 +24,13 @@ params ["_unit", "_weapon", "", "", "", "", "_projectile"]; TRACE_3("params",_unit,_weapon,_projectile); -if ((!local _unit) || {_weapon != (secondaryWeapon _unit)}) exitWith {}; +if (!local _unit || {_weapon != secondaryWeapon _unit}) exitWith {}; -private ["_replacementTube", "_items"]; -_replacementTube = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_UsedTube"); +private _replacementTube = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_UsedTube"); if (_replacementTube == "") exitWith {}; //If no replacement defined just exit - //Save array of items attached to launcher -_items = secondaryWeaponItems _unit; +private _items = secondaryWeaponItems _unit; //Replace the orginal weapon with the 'usedTube' weapon _unit addWeapon _replacementTube; //Makes sure the used tube is still equiped @@ -55,12 +53,10 @@ if !([_unit] call EFUNC(common,isPlayer)) then { [_idPFH] call CBA_fnc_removePerFrameHandler; //If (tube is dropped) OR (is dead) OR (is player) just exit - if (((secondaryWeapon _unit) != _tube) || {!alive _unit} || {([_unit] call EFUNC(common,isPlayer))}) exitWith {}; + if (secondaryWeapon _unit != _tube || {!alive _unit} || {[_unit] call EFUNC(common,isPlayer)}) exitWith {}; - private ["_items", "_container"]; - - // _items = secondaryWeaponItems _unit; - _container = createVehicle ["GroundWeaponHolder", position _unit, [], 0, "CAN_COLLIDE"]; + //private _items = secondaryWeaponItems _unit; + private _container = createVehicle ["GroundWeaponHolder", position _unit, [], 0, "CAN_COLLIDE"]; _container setPosAsl (getPosAsl _unit); _container addWeaponCargoGlobal [_tube, 1]; diff --git a/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf b/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf index c371c8d5a5..bd6dec057c 100644 --- a/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf +++ b/addons/disposable/functions/fnc_takeLoadedATWeapon.sqf @@ -20,17 +20,12 @@ TRACE_1("params",_unit); if (!local _unit) exitWith {}; -private ["_launcher", "_config"]; - -_launcher = secondaryWeapon _unit; -_config = configFile >> "CfgWeapons" >> _launcher; +private _launcher = secondaryWeapon _unit; +private _config = configFile >> "CfgWeapons" >> _launcher; if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber (_config >> "ACE_isUsedLauncher") != 1} && {count secondaryWeaponMagazine _unit == 0}) then { - private ["_magazine", "_isLauncherSelected", "_didAdd"]; - - _magazine = getArray (_config >> "magazines") select 0; - - _isLauncherSelected = currentWeapon _unit == _launcher; + private _magazine = getArray (_config >> "magazines") select 0; + private _isLauncherSelected = currentWeapon _unit == _launcher; _unit removeMagazines _magazine; @@ -38,8 +33,9 @@ if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber _unit addBackpack "ACE_FakeBackpack"; _unit removeWeapon _launcher; _unit addMagazine _magazine; - _didAdd = _magazine in (magazines _unit); + private _didAdd = _magazine in magazines _unit; _unit addWeapon _launcher; + if (!_didAdd) then { TRACE_1("Failed To Add Disposable Magazine Normally, doing backup method (no backpack)",_unit); _unit addSecondaryWeaponItem _magazine; @@ -48,8 +44,9 @@ if (isClass _config && {getText (_config >> "ACE_UsedTube") != ""} && {getNumber } else { _unit removeWeapon _launcher; _unit addMagazine _magazine; - _didAdd = _magazine in (magazines _unit); + private _didAdd = _magazine in magazines _unit; _unit addWeapon _launcher; + if (!_didAdd) then { TRACE_2("Failed To Add Disposable Magazine Normally, doing backup method",_unit,(backpack _unit)); _unit addSecondaryWeaponItem _magazine; diff --git a/addons/disposable/functions/fnc_updateInventoryDisplay.sqf b/addons/disposable/functions/fnc_updateInventoryDisplay.sqf index 7f50e45089..9908c86186 100644 --- a/addons/disposable/functions/fnc_updateInventoryDisplay.sqf +++ b/addons/disposable/functions/fnc_updateInventoryDisplay.sqf @@ -24,13 +24,11 @@ _player removeMagazines "ACE_FiredMissileDummy"; if (isNull _display) exitWith {}; -private ["_launcher", "_control", "_config"]; - -_launcher = secondaryWeapon _player; +private _launcher = secondaryWeapon _player; if (_launcher == "" || {getText (configFile >> "CfgWeapons" >> _launcher >> "ACE_UsedTube") == ""}) then { - _control = _display displayCtrl 627; - _config = configFile >> "RscDisplayInventory" >> "controls" >> "SlotSecondaryMagazine"; + private _control = _display displayCtrl 627; + private _config = configFile >> "RscDisplayInventory" >> "controls" >> "SlotSecondaryMagazine"; _control ctrlSetPosition [getNumber (_config >> "x"), getNumber (_config >> "y"), getNumber (_config >> "w"), getNumber (_config >> "h")]; _control ctrlCommit 0; @@ -39,7 +37,7 @@ if (_launcher == "" || {getText (configFile >> "CfgWeapons" >> _launcher >> "ACE _control ctrlSetPosition [getNumber (_config >> "x"), getNumber (_config >> "y"), getNumber (_config >> "w"), getNumber (_config >> "h")]; _control ctrlCommit 0; } else { - _control = _display displayCtrl 627; + private _control = _display displayCtrl 627; _control ctrlSetPosition [0, 0, 0, 0]; _control ctrlCommit 0; diff --git a/addons/grenades/functions/fnc_flare.sqf b/addons/grenades/functions/fnc_flare.sqf index bf1d571640..74360e39b9 100644 --- a/addons/grenades/functions/fnc_flare.sqf +++ b/addons/grenades/functions/fnc_flare.sqf @@ -20,8 +20,7 @@ params ["_projectile", "_color", "_intensity", "_timeToLive"]; -private "_light"; -_light = "#lightpoint" createVehicleLocal position _projectile; +private _light = "#lightpoint" createVehicleLocal position _projectile; _light setLightColor _color; _light setLightAmbient _color; diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf index 0ac6502284..06466c70d4 100644 --- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf +++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf @@ -17,14 +17,12 @@ params ["_grenade"]; -private ["_affected", "_strength", "_posGrenade", "_eyePos", "_losCount", "_eyeDir", "_dirToUnitVector", "_angleDiff", "_light"]; - -_affected = _grenade nearEntities ["CAManBase", 20]; +private _affected = _grenade nearEntities ["CAManBase", 20]; { if (local _x && {alive _x}) then { - _strength = 1 - ((_x distance _grenade) min 15) / 15; + private _strength = 1 - ((_x distance _grenade) min 15) / 15; TRACE_3("FlashBangEffect Start",_x,(_x distance _grenade),_strength); @@ -47,12 +45,12 @@ _affected = _grenade nearEntities ["CAManBase", 20]; } else { //Do effects for player // is there line of sight to the grenade? - _posGrenade = getPosASL _grenade; - _eyePos = eyePos ACE_player; //PositionASL + private _posGrenade = getPosASL _grenade; + private _eyePos = eyePos ACE_player; //PositionASL _posGrenade set [2, (_posGrenade select 2) + 0.2]; // compensate for grenade glitching into ground //Check for line of sight (check 4 points in case grenade is stuck in an object or underground) - _losCount = { + private _losCount = { !lineIntersects [_posGrenade vectorAdd _x, _eyePos, _grenade, ACE_player] } count [[0,0,0], [0,0,0.2], [0.1, 0.1, 0.1], [-0.1, -0.1, 0.1]]; @@ -68,9 +66,9 @@ _affected = _grenade nearEntities ["CAManBase", 20]; // account for people looking away by slightly // reducing the effect for visual effects. - _eyeDir = (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); - _dirToUnitVector = _eyePos vectorFromTo _posGrenade; - _angleDiff = acos (_eyeDir vectorDotProduct _dirToUnitVector); + private _eyeDir = (positionCameraToWorld [0,0,1] vectorDiff positionCameraToWorld [0,0,0]); + private _dirToUnitVector = _eyePos vectorFromTo _posGrenade; + private _angleDiff = acos (_eyeDir vectorDotProduct _dirToUnitVector); // from 0-45deg, full effect if (_angleDiff > 45) then { @@ -85,7 +83,8 @@ _affected = _grenade nearEntities ["CAManBase", 20]; }; // create flash to illuminate environment - _light = "#lightpoint" createVehicleLocal (getPos _grenade); + private _light = "#lightpoint" createVehicleLocal getPos _grenade; + _light setLightBrightness 200; _light setLightAmbient [1,1,1]; _light setLightColor [1,1,1]; diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf index ae50e96e39..ef6224f8ce 100644 --- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf +++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf @@ -20,7 +20,7 @@ params ["_projectile"]; if (alive _projectile) then { playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400]; - private _affected = _projectile nearEntities ["CAManBase", 20]; + private _affected = _projectile nearEntities ["CAManBase", 50]; ["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent); }; diff --git a/addons/grenades/functions/fnc_nextMode.sqf b/addons/grenades/functions/fnc_nextMode.sqf index 7789e12ac4..99149f5185 100644 --- a/addons/grenades/functions/fnc_nextMode.sqf +++ b/addons/grenades/functions/fnc_nextMode.sqf @@ -15,9 +15,7 @@ */ #include "script_component.hpp" -private ["_mode", "_hint"]; - -_mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; +private _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; if (_mode == 4) then { _mode = 0; @@ -30,13 +28,13 @@ if (_mode == 3) then { _mode = 4; }; -_hint = [ -localize LSTRING(NormalThrow), -localize LSTRING(HighThrow), -localize LSTRING(PreciseThrow), -localize LSTRING(RollGrenade), -localize LSTRING(DropGrenade) -] select _mode; +private _hint = localize ([ + LSTRING(NormalThrow), + LSTRING(HighThrow), + LSTRING(PreciseThrow), + LSTRING(RollGrenade), + LSTRING(DropGrenade) +] select _mode); [_hint] call EFUNC(common,displayTextStructured); diff --git a/addons/grenades/functions/fnc_throwGrenade.sqf b/addons/grenades/functions/fnc_throwGrenade.sqf index 9439aef4bd..e66498a854 100644 --- a/addons/grenades/functions/fnc_throwGrenade.sqf +++ b/addons/grenades/functions/fnc_throwGrenade.sqf @@ -30,24 +30,22 @@ if (isNull _projectile) then { _projectile = nearestObject [_unit, _ammo]; }; +private _config = configFile >> "CfgAmmo" >> _ammo; + // handle special grenades if (local _unit) then { - if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flashbang)) == 1) then { - private "_fuzeTime"; - _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); + if (getNumber (_config >> QGVAR(flashbang)) == 1) then { + private _fuzeTime = getNumber (_config >> "explosionTime"); [FUNC(flashbangThrownFuze), [_projectile], _fuzeTime, 0] call EFUNC(common,waitAndExecute); }; }; -if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then { - private ["_fuzeTime", "_timeToLive", "_color", "_intensity"]; - - _fuzeTime = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosionTime"); - _timeToLive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "timeToLive"); - _color = getArray (configFile >> "CfgAmmo" >> _ammo >> QGVAR(color)); - _intensity = _color select 3; - _color resize 3; +if (getNumber (_config >> QGVAR(flare)) == 1) then { + private _fuzeTime = getNumber (_config >> "explosionTime"); + private _timeToLive = getNumber (_config >> "timeToLive"); + private _color = getArray (_config >> QGVAR(color)); + private _intensity = _color deleteAt 3; [FUNC(flare), [_projectile, _color, _intensity, _timeToLive], _fuzeTime, 0] call EFUNC(common,waitAndExecute); }; @@ -55,12 +53,10 @@ if (getNumber (configFile >> "CfgAmmo" >> _ammo >> QGVAR(flare)) == 1) then { // handle throw modes if (_unit != ACE_player) exitWith {}; -private "_mode"; -_mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; +private _mode = missionNamespace getVariable [QGVAR(currentThrowMode), 0]; if (_mode != 0) then { - private "_velocity"; - _velocity = velocity _projectile; + private _velocity = velocity _projectile; switch (_mode) do { //high throw diff --git a/addons/hitreactions/XEH_preInit.sqf b/addons/hitreactions/XEH_preInit.sqf index d3c0973ee7..88df4102a1 100644 --- a/addons/hitreactions/XEH_preInit.sqf +++ b/addons/hitreactions/XEH_preInit.sqf @@ -3,5 +3,6 @@ ADDON = false; PREP(fallDown); +PREP(getRandomAnimation); ADDON = true; diff --git a/addons/hitreactions/functions/fnc_fallDown.sqf b/addons/hitreactions/functions/fnc_fallDown.sqf index d93b99bd6b..9ed43ae14f 100644 --- a/addons/hitreactions/functions/fnc_fallDown.sqf +++ b/addons/hitreactions/functions/fnc_fallDown.sqf @@ -35,8 +35,7 @@ if (!isNil QUOTE(EFUNC(medical,playInjuredSound))) then { [_unit] call EFUNC(medical,playInjuredSound); }; -private "_vehicle"; -_vehicle = vehicle _unit; +private _vehicle = vehicle _unit; // handle static weapons if (_vehicle isKindOf "StaticWeapon") exitWith { @@ -53,61 +52,20 @@ if (_vehicle != _unit) exitWith {}; if !([_unit, _vehicle] call EFUNC(common,canInteractWith)) exitWith {}; // handle ladders -if (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> animationState _unit >> "AGM_isLadder") == 1) exitWith { +if (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> animationState _unit >> "ACE_isLadder") == 1) exitWith { _unit action ["LadderOff", nearestObject [position _unit, "House"]]; }; // only play animation when standing due to lack of animations, sry if !(stance _unit in ["CROUCH", "STAND"]) exitWith {}; -private "_velocity"; -_velocity = vectorMagnitude velocity _unit; +private _velocity = vectorMagnitude velocity _unit; // only fall when moving if (_velocity < 2) exitWith {}; // get correct animation by weapon -private "_anim"; - -call { - private "_weapon"; - _weapon = currentWeapon _unit; - - if (_weapon == "") exitWith { - _anim = "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon" - }; - - if (_weapon == primaryWeapon _unit) exitWith { - if ([_unit] call EFUNC(common,isPlayer)) then { - private "_isRunning"; - _isRunning = _velocity > 4; - - _anim = [ - ["AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon_2", "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon"] select _isRunning, - ["AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon_2", "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon"] select _isRunning, - "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDleft", - "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDright" - ] select floor random 4; - } else { - _anim = "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon"; - }; - }; - - if (_weapon == handgunWeapon _unit) exitWith { - if ([_unit] call EFUNC(common,isPlayer)) then { - _anim = [ - "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon", - "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon", - "AmovPercMstpSrasWpstDnon_AadjPpneMstpSrasWpstDleft", - "AmovPercMstpSrasWpstDnon_AadjPpneMstpSrasWpstDright" - ] select floor random 4; - } else { - _anim = "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon"; - }; - }; - - _anim = ""; -}; +private _anim = _unit call FUNC(getRandomAnimation); // exit if no animation for this weapon exists, i.e. binocular or rocket launcher if (_anim == "") exitWith {}; diff --git a/addons/hitreactions/functions/fnc_getRandomAnimation.sqf b/addons/hitreactions/functions/fnc_getRandomAnimation.sqf new file mode 100644 index 0000000000..996901a31e --- /dev/null +++ b/addons/hitreactions/functions/fnc_getRandomAnimation.sqf @@ -0,0 +1,51 @@ +/* + * Author: commy2 + * Get a random fall animation for the unit. + * + * Arguments: + * 0: unit + * + * Return Value: + * Fall animation + * + * Public: No + */ +#include "script_component.hpp" + +params ["_unit"]; + +private _weapon = currentWeapon _unit; + +if (_weapon == "") exitWith { + "AmovPercMsprSnonWnonDf_AmovPpneMstpSnonWnonDnon" +}; + +if (_weapon == primaryWeapon _unit) exitWith { + if (_unit call EFUNC(common,isPlayer)) then { + private _isRunning = _velocity > 4; + + [ + ["AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon_2", "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon"] select _isRunning, + ["AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon_2", "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon"] select _isRunning, + "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDleft", + "AmovPercMstpSrasWrflDnon_AadjPpneMstpSrasWrflDright" + ] select floor random 4 + } else { + "AmovPercMsprSlowWrfldf_AmovPpneMstpSrasWrflDnon" + }; +}; + +if (_weapon == handgunWeapon _unit) exitWith { + if (_unit call EFUNC(common,isPlayer)) then { + [ + "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon", + "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon", + "AmovPercMstpSrasWpstDnon_AadjPpneMstpSrasWpstDleft", + "AmovPercMstpSrasWpstDnon_AadjPpneMstpSrasWpstDright" + ] select floor random 4 + } else { + "AmovPercMsprSlowWpstDf_AmovPpneMstpSrasWpstDnon" + }; +}; + +"" diff --git a/addons/movement/XEH_postInit.sqf b/addons/movement/XEH_postInit.sqf index 68229684c6..7825134af3 100644 --- a/addons/movement/XEH_postInit.sqf +++ b/addons/movement/XEH_postInit.sqf @@ -6,9 +6,8 @@ if (!hasInterface) exitWith {}; ["inventoryDisplayLoaded", { [{ - private "_dialog"; - - _dialog = _this select 0; + disableSerialization; + params ["_dialog"]; if (isNull _dialog) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; diff --git a/addons/movement/functions/fnc_canClimb.sqf b/addons/movement/functions/fnc_canClimb.sqf index 671ab0b808..ec4202dbd5 100644 --- a/addons/movement/functions/fnc_canClimb.sqf +++ b/addons/movement/functions/fnc_canClimb.sqf @@ -15,33 +15,30 @@ */ #include "script_component.hpp" -private ["_pos", "_dir"]; +params ["_unit"]; -PARAMS_1(_unit); +private _pos = getPosASL _unit; +private _dir = getDir _unit; -_pos = getPosASL _unit; -_dir = getDir _unit; _dir = [sin _dir, cos _dir, 0]; -private ["_checkPos0beg", "_checkPos0end", "_checkPos1beg", "_checkPos1end"]; +private _checkPos0beg = _pos vectorAdd [0, 0, 0.9]; +private _checkPos0end = _checkPos0beg vectorAdd (_dir vectorMultiply 1.3); -_checkPos0beg = _pos vectorAdd [0, 0, 0.9]; -_checkPos0end = _checkPos0beg vectorAdd (_dir vectorMultiply 1.3); +private _checkPos1beg = _pos vectorAdd [0, 0, 1.75]; +private _checkPos1end = _checkPos1beg vectorAdd (_dir vectorMultiply 1.3); -_checkPos1beg = _pos vectorAdd [0, 0, 1.75]; -_checkPos1end = _checkPos1beg vectorAdd (_dir vectorMultiply 1.3); +private _checkPos2beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 2.0]; +private _checkPos2end = _checkPos2beg vectorAdd (_dir vectorMultiply 1.3); -_checkPos2beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 2.0]; -_checkPos2end = _checkPos2beg vectorAdd (_dir vectorMultiply 1.3); +private _checkPos3beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 2.0]; +private _checkPos3end = _checkPos3beg vectorAdd (_dir vectorMultiply 1.3); -_checkPos3beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 2.0]; -_checkPos3end = _checkPos3beg vectorAdd (_dir vectorMultiply 1.3); +private _checkPos4beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 1.5]; +private _checkPos4end = _checkPos4beg vectorAdd (_dir vectorMultiply 1.3); -_checkPos4beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 1.5]; -_checkPos4end = _checkPos4beg vectorAdd (_dir vectorMultiply 1.3); - -_checkPos5beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 1.5]; -_checkPos5end = _checkPos5beg vectorAdd (_dir vectorMultiply 1.3); +private _checkPos5beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 1.5]; +private _checkPos5end = _checkPos5beg vectorAdd (_dir vectorMultiply 1.3); /* drawLine3D [ASLToATL _checkPos0beg, ASLToATL _checkPos0end, [0,1,0,1]]; diff --git a/addons/movement/functions/fnc_climb.sqf b/addons/movement/functions/fnc_climb.sqf index a0946b95d0..57df4e5991 100644 --- a/addons/movement/functions/fnc_climb.sqf +++ b/addons/movement/functions/fnc_climb.sqf @@ -15,9 +15,7 @@ */ #include "script_component.hpp" -private "_unit"; - -_unit = _this select 0; +params ["_unit"]; if !([_unit] call FUNC(canClimb)) exitWith { [localize LSTRING(CanNotClimb)] call EFUNC(common,displayTextStructured); diff --git a/addons/movement/functions/fnc_getWeight.sqf b/addons/movement/functions/fnc_getWeight.sqf index 6941173fde..11dd8c4ee6 100644 --- a/addons/movement/functions/fnc_getWeight.sqf +++ b/addons/movement/functions/fnc_getWeight.sqf @@ -15,11 +15,9 @@ */ #include "script_component.hpp" -private ["_unit", "_weight"]; +params ["_unit"]; -_unit = _this select 0; - -_weight = loadAbs _unit * 0.1; +private _weight = loadAbs _unit * 0.1; if (GVAR(useImperial)) then { _weight = format ["%1lb", (round (_weight * 100)) / 100]; diff --git a/addons/movement/functions/fnc_handleClimb.sqf b/addons/movement/functions/fnc_handleClimb.sqf index 39ca9b1e92..e6d8fed12c 100644 --- a/addons/movement/functions/fnc_handleClimb.sqf +++ b/addons/movement/functions/fnc_handleClimb.sqf @@ -16,12 +16,10 @@ */ #include "script_component.hpp" -private ["_unit", "_anim", "_pos"]; +params ["_unit", "_anim"]; -_unit = _this select 0; -_anim = _this select 1; +private _pos = _unit modelToWorldVisual (_unit selectionPosition "camera"); -_pos = _unit modelToWorldVisual (_unit selectionPosition "camera"); [_unit, "AmovPknlMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation); _pos = _pos vectorDiff (_unit selectionPosition "camera"); diff --git a/addons/recoil/functions/fnc_camshake.sqf b/addons/recoil/functions/fnc_camshake.sqf index 806d48760b..a8e1af75d9 100644 --- a/addons/recoil/functions/fnc_camshake.sqf +++ b/addons/recoil/functions/fnc_camshake.sqf @@ -1,7 +1,21 @@ -// TMR: Small Arms - Recoil initialization and functions -// (C) 2013 Ryan Schultz. See LICENSE. -// Edited prefixes for compatability in AGM_Realism by KoffeinFlummi -// Edited by commy2 +/* + * Author: Orginal by Ryan Schultz, edited by KoffeinFlummi, commy2 + * Adds camera shake when firing + * From TMR: Small Arms + * + * Arguments: + * 0: Unit + * 1: Weapon + * 3: Muzzle + * + * Return Value: + * Nothing + * + * Example: + * [player, (currentWeapon player), (currentMuzzle player)] call ace_recoil_fnc_camShake; + * + * Public: No + */ #include "script_component.hpp" #define BASE_POWER 0.40 @@ -9,59 +23,53 @@ #define BASE_FREQ 13 #define RECOIL_COEF 40 -private ["_unit", "_weapon", "_muzzle"]; - -_unit = _this select 0; -_weapon = _this select 1; -_muzzle = _this select 2; +params ["_unit", "_weapon", "_muzzle"]; if (toLower _weapon in ["throw", "put"]) exitWith {}; -private ["_powerMod", "_timeMod", "_freqMod"]; - -_powerMod = ([0, -0.1, -0.1, 0, -0.2] select (["STAND", "CROUCH", "PRONE", "UNDEFINED", ""] find stance _unit)) + ([0, -1, 0, -1] select (["INTERNAL", "EXTERNAL", "GUNNER", "GROUP"] find cameraView)); -_timeMod = 0; -_freqMod = 0; +private _powerMod = ([0, -0.1, -0.1, 0, -0.2] select (["STAND", "CROUCH", "PRONE", "UNDEFINED", ""] find stance _unit)) + ([0, -1, 0, -1] select (["INTERNAL", "EXTERNAL", "GUNNER", "GROUP"] find cameraView)); // to get camshake read kickback -private ["_config", "_recoil"]; +private _recoil = missionNamespace getVariable format [QGVAR(%1-%2), _weapon, _muzzle]; -_config = configFile >> "CfgWeapons" >> _weapon; -_recoil = if (_muzzle == _weapon) then { - getText (_config >> "recoil") -} else { - getText (_config >> _muzzle >> "recoil") -}; +if (isNil "_recoil") then { + private _config = configFile >> "CfgWeapons" >> _weapon; -if (isClass (configFile >> "CfgRecoils" >> _recoil)) then { - _recoil = getArray (configFile >> "CfgRecoils" >> _recoil >> "kickBack"); - if (count _recoil < 2) then { + if (_muzzle == _weapon) then { + _recoil = getText (_config >> "recoil") + } else { + _recoil = getText (_config >> _muzzle >> "recoil") + }; + + if (isClass (configFile >> "CfgRecoils" >> _recoil)) then { + _recoil = getArray (configFile >> "CfgRecoils" >> _recoil >> "kickBack"); + if (count _recoil < 2) then { + _recoil = [0, 0]; + }; + } else { _recoil = [0, 0]; }; -} else { - _recoil = [0, 0]; + + TRACE_3("Caching Recoil config",_weapon,_muzzle,_recoil); + + // parse numbers + _recoil set [0, call compile format ["%1", _recoil select 0]]; + _recoil set [1, call compile format ["%1", _recoil select 1]]; + + missionNamespace setVariable [format [QGVAR(%1-%2), _weapon, _muzzle], _recoil]; }; -// parse numbers -_recoil set [0, call compile format ["%1", _recoil select 0]]; -_recoil set [1, call compile format ["%1", _recoil select 1]]; - -private "_powerCoef"; -_powerCoef = RECOIL_COEF * linearConversion [0, 1, random 1, _recoil select 0, _recoil select 1, false]; +private _powerCoef = RECOIL_COEF * linearConversion [0, 1, random 1, _recoil select 0, _recoil select 1, false]; if (isWeaponRested _unit) then {_powerMod = _powerMod - 0.07}; if (isWeaponDeployed _unit) then {_powerMod = _powerMod - 0.11}; -private "_camshake"; -_camshake = [ +private _camshake = [ _powerCoef * (BASE_POWER + _powerMod) max 0, - BASE_TIME + _timeMod max 0, - BASE_FREQ + _freqMod max 0 + BASE_TIME, + BASE_FREQ ]; -/* - systemChat str _camshake; - copyToClipboard format ["addCamShake %1;", _camshake]; -*/ +TRACE_4("addCamShake",_recoil,_powerCoef,_powerMod,_camshake);\ addCamShake _camshake; diff --git a/addons/reload/XEH_postInit.sqf b/addons/reload/XEH_postInit.sqf index bd26583668..8667d9815e 100644 --- a/addons/reload/XEH_postInit.sqf +++ b/addons/reload/XEH_postInit.sqf @@ -7,9 +7,9 @@ if (!hasInterface) exitWith {}; ["ACE3 Weapons", QGVAR(checkAmmo), localize LSTRING(checkAmmo), { // Conditions: canInteract - if !([ACE_player, (vehicle ACE_player), ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; + if !([ACE_player, vehicle ACE_player, ["isNotInside", "isNotSitting"]] call EFUNC(common,canInteractWith)) exitWith {false}; // Conditions: specific - if !([ACE_player] call EFUNC(common,canUseWeapon) || {(vehicle ACE_player) isKindOf "StaticWeapon"}) exitWith {false}; + if !(ACE_player call EFUNC(common,canUseWeapon) || {(vehicle ACE_player) isKindOf "StaticWeapon"}) exitWith {false}; // Statement [ACE_player] call FUNC(checkAmmo); @@ -20,26 +20,26 @@ if (!hasInterface) exitWith {}; ["setAmmoSync", { //To propagate the setAmmo change, do it on all clients - PARAMS_3(_unit,_weapon,_ammo); + params ["_unit", "_weapon", "_ammo"]; + TRACE_3("setAmmoSync EH",_unit,_weapon,_ammo); + _unit setAmmo [_weapon, _ammo]; }] call EFUNC(common,addEventhandler); // Listen for attempts to link ammo ["linkedAmmo", { - EXPLODE_3_PVT(_this,_receiver,_giver,_magazine); + params ["_receiver", "_giver", "_magazine"]; - private ["_magazineCfg","_magazineType"]; - _magazineType = currentMagazine _receiver; - _magazineCfg = configFile >> "CfgMagazines" >> _magazineType; + private _magazineType = currentMagazine _receiver; + private _magazineCfg = configFile >> "CfgMagazines" >> _magazineType; // Return the magazine if it's the wrong type if (_magazineType != (_magazine select 0)) exitWith { ["returnedAmmo", [_giver], [_giver,_receiver,_magazine]] call EFUNC(common,targetEvent); }; - private ["_ammoCount","_ammoMissing","_ammoAdded","_ammoRemaining"]; - _ammoCount = _receiver ammo currentWeapon _receiver; - _ammoMissing = getNumber (_magazineCfg >> "count") - _ammoCount; + private _ammoCount = _receiver ammo currentWeapon _receiver; + private _ammoMissing = getNumber (_magazineCfg >> "count") - _ammoCount; // Return the magazine if the belt is full or empty if ((_ammoCount == 0) || _ammoMissing == 0) exitWith { @@ -47,19 +47,18 @@ if (!hasInterface) exitWith {}; }; // Add the ammo - _ammoAdded = _ammoMissing min (_magazine select 1); - ["setAmmoSync", [_receiver, (currentWeapon _receiver), (_ammoCount + _ammoAdded)]] call EFUNC(common,globalEvent); + private _ammoAdded = _ammoMissing min (_magazine select 1); + ["setAmmoSync", [_receiver, currentWeapon _receiver, _ammoCount + _ammoAdded]] call EFUNC(common,globalEvent); if ((_magazine select 1) - _ammoAdded > 0) then { - ["returnedAmmo", [_giver], [_giver,_receiver,[_magazineType,(_magazine select 1) - _ammoAdded]]] call EFUNC(common,targetEvent); + ["returnedAmmo", [_giver], [_giver, _receiver, [_magazineType, (_magazine select 1) - _ammoAdded]]] call EFUNC(common,targetEvent); }; - }] call EFUNC(common,addEventhandler); - // Listen for returned magazines ["returnedAmmo", { - EXPLODE_3_PVT(_this,_receiver,_giver,_magazine); + params ["_receiver", "", "_magazine"]; + TRACE_2("returnedAmmo EH",_receiver,_magazine); _receiver addMagazine _magazine; }] call EFUNC(common,addEventhandler); diff --git a/addons/reload/functions/fnc_canLinkBelt.sqf b/addons/reload/functions/fnc_canLinkBelt.sqf index 4461b4f3e3..b36959e4e1 100644 --- a/addons/reload/functions/fnc_canLinkBelt.sqf +++ b/addons/reload/functions/fnc_canLinkBelt.sqf @@ -11,26 +11,24 @@ */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_player,_target); +params ["_player", "_target"]; if (vehicle _target != _target) exitWith {false}; -private ["_magazineCfg","_magazineType"]; -_magazineType = currentMagazine _target; -_magazineCfg = configFile >> "CfgMagazines" >> _magazineType; +private _magazineType = currentMagazine _target; +private _magazineCfg = configFile >> "CfgMagazines" >> _magazineType; + if (getNumber (_magazineCfg >> "ACE_isBelt") == 0) exitWith {false}; // Check if the ammo is not empty or full -private "_ammoCount"; -_ammoCount = _target ammo currentWeapon _target; +private _ammoCount = _target ammo currentWeapon _target; // Exit if the belt is full or empty -if ((_ammoCount == 0) || (getNumber (_magazineCfg >> "count") - _ammoCount) == 0) exitWith {false}; +if (_ammoCount == 0 || getNumber (_magazineCfg >> "count") - _ammoCount == 0) exitWith {false}; // Check if the player has any of the same magazines // Calculate max ammo -private "_maxAmmo"; -_maxAmmo = 0; +private _maxAmmo = 0; { _maxAmmo = _maxAmmo max (_x select 1); diff --git a/addons/reload/functions/fnc_checkAmmo.sqf b/addons/reload/functions/fnc_checkAmmo.sqf index 2499a9a893..b0581a143a 100644 --- a/addons/reload/functions/fnc_checkAmmo.sqf +++ b/addons/reload/functions/fnc_checkAmmo.sqf @@ -13,10 +13,9 @@ #define COUNT_BARS 12 -EXPLODE_1_PVT(_this,_unit); +params ["_unit"]; -private ["_target"]; -_target = vehicle _unit; +private _target = vehicle _unit; if (count _this > 1) then { _target = _this select 1; diff --git a/addons/reload/functions/fnc_displayAmmo.sqf b/addons/reload/functions/fnc_displayAmmo.sqf index 993283ca56..d4143e57d1 100644 --- a/addons/reload/functions/fnc_displayAmmo.sqf +++ b/addons/reload/functions/fnc_displayAmmo.sqf @@ -14,11 +14,9 @@ EXPLODE_1_PVT(_this,_target); -private ["_weapon","_muzzle","_magazine","_showNumber","_ammo","_maxRounds","_count","_text","_color","_picture","_ammoBarsStructuredText", "_a", "_loadedName", "_string"]; - -_weapon = currentWeapon _target; -_muzzle = currentMuzzle _target; -_magazine = currentMagazine _target; +private _weapon = currentWeapon _target; +private _muzzle = currentMuzzle _target; +private _magazine = currentMagazine _target; // currentWeapon returns "" for static weapons before they are shot once if (_target isKindOf "StaticWeapon") then { @@ -31,8 +29,8 @@ if (_target isKindOf "StaticWeapon") then { if (_magazine == "") then { // Try to get magazine using magazinesAmmoFull - private ["_magazines"]; - _magazines = magazinesAmmoFull _target; + private _magazines = magazinesAmmoFull _target; + { if (_x select 2) exitWith { _magazine = _x select 0; @@ -45,10 +43,10 @@ if (_magazine == "") exitWith {}; if (_weapon == "") exitWith {}; if (!( _muzzle isEqualType "")) then {_muzzle = _weapon}; -_showNumber = false; -_ammo = 0; -_maxRounds = 1; -_count = 0; +private _showNumber = false; +private _ammo = 0; +private _maxRounds = 1; +private _count = 0; // not grenade launcher if (_muzzle == _weapon) then { @@ -75,16 +73,16 @@ if (_muzzle == _weapon) then { }; }; -_ammoBarsStructuredText = if (_showNumber) then { +private _ammoBarsStructuredText = if (_showNumber) then { parseText format ["%1x", _count] } else { - _color = [((2 * (1 - _ammo / _maxRounds)) min 1), ((2 * _ammo / _maxRounds) min 1), 0]; + private _color = [((2 * (1 - _ammo / _maxRounds)) min 1), ((2 * _ammo / _maxRounds) min 1), 0]; - _string = ""; + private _string = ""; for "_a" from 1 to _count do { _string = _string + "|"; }; - _text = [_string, _color] call EFUNC(common,stringToColoredText); + private _text = [_string, _color] call EFUNC(common,stringToColoredText); _string = ""; for "_a" from (_count + 1) to (_maxRounds min COUNT_BARS) do { @@ -97,11 +95,11 @@ _ammoBarsStructuredText = if (_showNumber) then { if (_target isKindOf "StaticWeapon") then { //Vehicle mags (usualy) don't have pictures, so just show the text above ammo count - _loadedName = getText (configFile >> "CfgMagazines" >> _magazine >> "displaynameshort"); + private _loadedName = getText (configFile >> "CfgMagazines" >> _magazine >> "displaynameshort"); _loadedName = parseText format ["%1", _loadedName]; - _text = composeText [_loadedName, linebreak, _ammoBarsStructuredText]; + private _text = composeText [_loadedName, linebreak, _ammoBarsStructuredText]; [_text] call EFUNC(common,displayTextStructured); } else { - _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); + private _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); [_ammoBarsStructuredText, _picture] call EFUNC(common,displayTextPicture); }; diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf index 4bed7f700a..ebee6fd350 100644 --- a/addons/reload/functions/fnc_startLinkingBelt.sqf +++ b/addons/reload/functions/fnc_startLinkingBelt.sqf @@ -11,26 +11,24 @@ */ #include "script_component.hpp" -EXPLODE_2_PVT(_this,_player,_target); +params ["_player", "_target"]; if (vehicle _target != _target) exitWith {false}; -private ["_magazineCfg","_magazineType", "_condition", "_onFailure", "_onFinish"]; -_magazineType = currentMagazine _target; -_magazineCfg = configFile >> "CfgMagazines" >> _magazineType; +private _magazineType = currentMagazine _target; +private _magazineCfg = configFile >> "CfgMagazines" >> _magazineType; + if (getNumber (_magazineCfg >> "ACE_isBelt") == 0) exitWith {false}; // Check if the ammo is not empty or full -private "_ammoCount"; -_ammoCount = _target ammo currentWeapon _target; +private _ammoCount = _target ammo currentWeapon _target; // Exit if the belt is full or empty if ((_ammoCount == 0) || (getNumber (_magazineCfg >> "count") - _ammoCount) == 0) exitWith {false}; // Check if the player has any of the same same magazines // Calculate max ammo it can link -private "_maxAmmo"; -_maxAmmo = 0; +private _maxAmmo = 0; { _maxAmmo = _maxAmmo max (_x select 1); @@ -38,21 +36,20 @@ _maxAmmo = 0; if (_maxAmmo == 0) exitWith {}; - // Condition to call each frame -_condition = { - EXPLODE_2_PVT((_this select 0),_player,_target); +private _condition = { + (_this select 0) params ["_player", "_target"]; ([_player, _target, []] call EFUNC(common,canInteractWith)) && ((_player distance _target) < 3) && ((speed _target) < 1) }; -_onFinish = { - EXPLODE_3_PVT((_this select 0),_player,_target,_magazine); +private _onFinish = { + (_this select 0) params ["_player", "_target", "_magazine"]; // Raise event on remote unit ["linkedAmmo", [_target], [_target, _player, _magazine]] call EFUNC(common,targetEvent); }; -_onFailure = { +private _onFailure = { EXPLODE_3_PVT((_this select 0),_player,_target,_magazine); [_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation); diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf index 5f5d8a2914..2d445be3c8 100644 --- a/addons/vehicles/functions/fnc_speedLimiter.sqf +++ b/addons/vehicles/functions/fnc_speedLimiter.sqf @@ -16,8 +16,6 @@ */ #include "script_component.hpp" -private "_maxSpeed"; - params ["_driver", "_vehicle"]; if (GVAR(isSpeedLimiter)) exitWith { @@ -30,7 +28,7 @@ if (GVAR(isSpeedLimiter)) exitWith { playSound "ACE_Sound_Click"; GVAR(isSpeedLimiter) = true; -_maxSpeed = speed _vehicle max 10; +private _maxSpeed = speed _vehicle max 10; [{ params ["_args", "_idPFH"]; @@ -51,8 +49,7 @@ _maxSpeed = speed _vehicle max 10; [_idPFH] call CBA_fnc_removePerFrameHandler; }; - private "_speed"; - _speed = speed _vehicle; + private _speed = speed _vehicle; if (_speed > _maxSpeed) then { _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((_maxSpeed / _speed) - 0.00001)); // fix 1.42-hotfix PhysX libraries applying force in previous direction when turning diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf index 491a86f39d..450086aa91 100644 --- a/addons/weaponselect/XEH_postInit.sqf +++ b/addons/weaponselect/XEH_postInit.sqf @@ -105,8 +105,7 @@ if (!hasInterface) exitWith {}; if ((currentWeapon ACE_player) != "") then { [ACE_player] call FUNC(putWeaponAway); } else { - private ["_weapon"]; - _weapon = switch (true) do { + private _weapon = switch (true) do { case ((primaryWeapon ACE_player) != ""): {primaryWeapon ACE_player}; case ((handgunWeapon ACE_player) != ""): {handgunWeapon ACE_player}; case ((secondaryWeapon ACE_player) != ""): {secondaryWeapon ACE_player}; diff --git a/addons/weaponselect/XEH_preInit.sqf b/addons/weaponselect/XEH_preInit.sqf index fe40d33523..26347fc279 100644 --- a/addons/weaponselect/XEH_preInit.sqf +++ b/addons/weaponselect/XEH_preInit.sqf @@ -17,16 +17,14 @@ GVAR(GrenadesAll) = []; GVAR(GrenadesFrag) = []; GVAR(GrenadesNonFrag) = []; -private ["_magazines", "_ammo", "_explosive"]; - { - _magazines = getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"); + private _magazines = getArray (configFile >> "CfgWeapons" >> "Throw" >> _x >> "magazines"); GVAR(GrenadesAll) append _magazines; { - _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); - _explosive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosive"); + private _ammo = getText (configFile >> "CfgMagazines" >> _x >> "ammo"); + private _explosive = getNumber (configFile >> "CfgAmmo" >> _ammo >> "explosive"); ([GVAR(GrenadesFrag), GVAR(GrenadesNonFrag)] select (_explosive == 0)) pushBack _x; false diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf index 4ab09a105f..ef9397ba57 100644 --- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf +++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf @@ -20,12 +20,10 @@ if !(GVAR(DisplayText)) exitWith {}; params ["_magazine", "_numberofGrenades"]; -private ["_color", "_name", "_text", "_picture"]; +private _color = [[1, 0, 0], [1, 1, 1]] select (_numberofGrenades > 0); +private _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNameShort"); -_color = [[1, 0, 0], [1, 1, 1]] select (_numberofGrenades > 0); -_name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNameShort"); - -_text = [format ["%1 x%2", _name, _numberofGrenades], _color] call EFUNC(common,stringToColoredText); -_picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); +private _text = [format ["%1 x%2", _name, _numberofGrenades], _color] call EFUNC(common,stringToColoredText); +private _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture"); ["displayTextPicture", [_text, _picture]] call EFUNC(common,localEvent); diff --git a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf index 71ef89ecf6..bb877ea3cd 100644 --- a/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf +++ b/addons/weaponselect/functions/fnc_fireSmokeLauncher.sqf @@ -17,11 +17,8 @@ params ["_vehicle"]; -private ["_turret", "_weapons"]; - -_turret = [_vehicle] call EFUNC(common,getTurretCommander); - -_weapons = _vehicle weaponsTurret _turret; +private _turret = _vehicle call EFUNC(common,getTurretCommander); +private _weapons = _vehicle weaponsTurret _turret; if ( count _weapons > 1 @@ -32,8 +29,8 @@ if ( // avoid infinite loop if !("SmokeLauncher" in _weapons) exitWith {}; - private "_index"; - _index = 0; + private _index = 0; + while { _vehicle currentWeaponTurret _turret != "SmokeLauncher" } do { @@ -44,8 +41,7 @@ if ( } else { // fire away! - private "_logic"; - _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; + private _logic = createGroup sideLogic createUnit ["Logic", [0,0,0], [], 0, "NONE"]; _logic action ["useWeapon", _vehicle, commander _vehicle, 0]; diff --git a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf index 28ef5d21e5..a7c3f13936 100644 --- a/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf +++ b/addons/weaponselect/functions/fnc_playChangeFiremodeSound.sqf @@ -18,14 +18,12 @@ params ["_unit", "_weapon"]; -private ["_sound", "_position"]; - -_sound = getArray (configFile >> "CfgWeapons" >> _weapon >> "changeFiremodeSound"); +private _sound = getArray (configFile >> "CfgWeapons" >> _weapon >> "changeFiremodeSound"); if (_sound isEqualTo []) exitWith {}; // get position where to play the sound (position of the weapon) -_position = AGLToASL (_unit modelToWorldVisual (_unit selectionPosition "RightHand")); +private _position = AGLToASL (_unit modelToWorldVisual (_unit selectionPosition "RightHand")); _sound params ["_filename", ["_volume", 1], ["_soundPitch", 1], ["_distance", 0]]; diff --git a/addons/weaponselect/functions/fnc_putWeaponAway.sqf b/addons/weaponselect/functions/fnc_putWeaponAway.sqf index fd1e463a4d..d2747bf23f 100644 --- a/addons/weaponselect/functions/fnc_putWeaponAway.sqf +++ b/addons/weaponselect/functions/fnc_putWeaponAway.sqf @@ -17,6 +17,6 @@ params ["_unit"]; -[_unit] call EFUNC(common,fixLoweredRifleAnimation); +_unit call EFUNC(common,fixLoweredRifleAnimation); _unit action ["SwitchWeapon", _unit, _unit, 99]; diff --git a/addons/weaponselect/functions/fnc_selectNextGrenade.sqf b/addons/weaponselect/functions/fnc_selectNextGrenade.sqf index d4a00b5718..a4e93814a9 100644 --- a/addons/weaponselect/functions/fnc_selectNextGrenade.sqf +++ b/addons/weaponselect/functions/fnc_selectNextGrenade.sqf @@ -18,10 +18,8 @@ params ["_unit", ["_type", 0]]; -private ["_currentGrenade", "_magazines", "_grenades", "_nextGrenadeIndex", "_nextGrenade", "_uniformGrenades", "_vestGrenades", "_backpackGrenades"]; - // get currently selected grenade -_currentGrenade = currentThrowable _unit; +private _currentGrenade = currentThrowable _unit; // get correct array format if no grenade is selected if (_currentGrenade isEqualTo []) then { @@ -31,9 +29,9 @@ if (_currentGrenade isEqualTo []) then { _currentGrenade = _currentGrenade select 0; // get available magazines for that unit -_magazines = magazines _unit; +private _magazines = magazines _unit; -_grenades = []; +private _grenades = []; { if (_x in _magazines) then { @@ -46,22 +44,22 @@ _grenades = []; if (_grenades isEqualTo []) exitWith {false}; // get next grenade muzzle -_nextGrenadeIndex = (_grenades find _currentGrenade) + 1; +private _nextGrenadeIndex = (_grenades find _currentGrenade) + 1; // roll over if the last grenade was selected if (_nextGrenadeIndex >= count _grenades) then { _nextGrenadeIndex = 0; }; -_nextGrenade = _grenades select _nextGrenadeIndex; +private _nextGrenade = _grenades select _nextGrenadeIndex; // abort if the same grenade would be selected if (_currentGrenade == _nextGrenade) exitWith {false}; // current best method to select a grenade: remove all grenades except the one you want to select, then add them back -_uniformGrenades = [uniformItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); -_vestGrenades = [vestItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); -_backpackGrenades = [backpackItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); +private _uniformGrenades = [uniformItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); +private _vestGrenades = [vestItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); +private _backpackGrenades = [backpackItems _unit, {_x in GVAR(GrenadesAll) && {_x != _nextGrenade}}] call EFUNC(common,filter); // remove all grenades except those we are switching to --> this breaks the selector {_unit removeItemFromUniform _x; false} count _uniformGrenades; diff --git a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf index 815b8d28cf..80784778de 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMode.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMode.sqf @@ -29,20 +29,18 @@ if (_weapon in (_unit getVariable [QEGVAR(safemode,safedWeapons), []])) exitWith [_unit, _weapon, _weapon] call EFUNC(safemode,unlockSafety); }; -private ["_muzzles", "_modes"]; +private _muzzles = [_weapon] call EFUNC(common,getWeaponMuzzles); +private _modes = [_weapon] call EFUNC(common,getWeaponModes); -_muzzles = [_weapon] call EFUNC(common,getWeaponMuzzles); -_modes = [_weapon] call EFUNC(common,getWeaponModes); +private _index = (_modes find currentWeaponMode _unit) + 1; -private ["_index", "_muzzle", "_mode"]; - -_index = (_modes find currentWeaponMode _unit) + 1; if (_index > count _modes - 1) then {_index = 0}; -_muzzle = _muzzles select 0; -_mode = _modes select _index; +private _muzzle = _muzzles select 0; +private _mode = _modes select _index; _index = 0; + while { _index < 100 && {currentMuzzle _unit != _muzzle || {currentWeaponMode _unit != _mode}} } do { diff --git a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf index 71c9cfc7b4..973d34f7c8 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponMuzzle.sqf @@ -20,8 +20,7 @@ params ["_unit", "_weapon"]; if (_weapon == "") exitWith {}; -private "_muzzles"; -_muzzles = [_weapon] call EFUNC(common,getWeaponMuzzles); +private _muzzles = _weapon call EFUNC(common,getWeaponMuzzles); if (currentWeapon _unit != _weapon) exitWith { if (count _muzzles > 1) then { @@ -35,12 +34,11 @@ if (currentWeapon _unit != _weapon) exitWith { }; }; -private ["_index", "_muzzle"]; +private _index = (_muzzles find currentMuzzle _unit) + 1; -_index = (_muzzles find currentMuzzle _unit) + 1; if (_index > count _muzzles - 1) then {_index = 1}; -_muzzle = _muzzles select _index; +private _muzzle = _muzzles select _index; _index = 0; while { diff --git a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf index 9695079da5..7435dd30d8 100644 --- a/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf +++ b/addons/weaponselect/functions/fnc_selectWeaponVehicle.sqf @@ -19,39 +19,36 @@ params ["_unit", "_vehicle", "_index"]; -private "_turret"; -_turret = [_unit] call EFUNC(common,getTurretIndex); +private _turret = _unit call EFUNC(common,getTurretIndex); if (_turret isEqualTo [] && {_unit == driver _vehicle}) then { - private ["_weapons", "_weapon"]; + private _weapons = weapons _vehicle; - _weapons = weapons _vehicle; if (_index > count _weapons - 1) exitWith {}; - _weapon = _weapons select _index; + private _weapon = _weapons select _index; _index = 0; + while { _index < 100 && {currentWeapon _vehicle != _weapon} } do { _unit action ["SwitchWeapon", _vehicle, _unit, _index]; _index = _index + 1; }; - } else { - private ["_weapons", "_weapon"]; + private _weapons = _vehicle weaponsTurret _turret; - _weapons = _vehicle weaponsTurret _turret; if (_index > count _weapons - 1) exitWith {}; - _weapon = _weapons select _index; + private _weapon = _weapons select _index; _index = 0; + while { _index < 100 && {_vehicle currentWeaponTurret _turret != _weapon} } do { _unit action ["SwitchWeapon", _vehicle, _unit, _index]; _index = _index + 1; }; - }; diff --git a/addons/weaponselect/functions/fnc_throwGrenade.sqf b/addons/weaponselect/functions/fnc_throwGrenade.sqf index 2cdc8e63dc..a99b06879b 100644 --- a/addons/weaponselect/functions/fnc_throwGrenade.sqf +++ b/addons/weaponselect/functions/fnc_throwGrenade.sqf @@ -25,8 +25,7 @@ params ["_unit", "_weapon", "", "", "", "_magazine"]; if (_weapon != "Throw") exitWith {}; -private "_count"; -_count = {_x == _magazine} count magazines _unit; +private _count = {_x == _magazine} count magazines _unit; [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber); From de135181778506c65b7bbc311fdeef0821c6cb17 Mon Sep 17 00:00:00 2001 From: commy2 Date: Wed, 6 Jan 2016 22:49:22 +0100 Subject: [PATCH 104/107] explode macro to params --- addons/reload/functions/fnc_displayAmmo.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/reload/functions/fnc_displayAmmo.sqf b/addons/reload/functions/fnc_displayAmmo.sqf index d4143e57d1..7fff5564c0 100644 --- a/addons/reload/functions/fnc_displayAmmo.sqf +++ b/addons/reload/functions/fnc_displayAmmo.sqf @@ -12,7 +12,7 @@ #define COUNT_BARS 12 -EXPLODE_1_PVT(_this,_target); +params ["_target"]; private _weapon = currentWeapon _target; private _muzzle = currentMuzzle _target; From b731232719bef9a08bdc09f0f09a5c63eee538ae Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 7 Jan 2016 00:59:31 -0600 Subject: [PATCH 105/107] Fix M69 Grenade UBC in RHS Compat --- optionals/compat_rhs_usf3/CfgAmmo.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/optionals/compat_rhs_usf3/CfgAmmo.hpp b/optionals/compat_rhs_usf3/CfgAmmo.hpp index 44c0285e40..b830d5e564 100644 --- a/optionals/compat_rhs_usf3/CfgAmmo.hpp +++ b/optionals/compat_rhs_usf3/CfgAmmo.hpp @@ -139,7 +139,8 @@ class CfgAmmo ace_frag_skip = 1; ace_frag_force = 0; }; - class rhs_ammo_m69: GrenadeHand { + class GrenadeHand_stone; + class rhs_ammo_m69: GrenadeHand_stone { ace_frag_enabled = 0; ace_frag_skip = 1; ace_frag_force = 0; From 8cbf31a375964fa0b7bb19cc8c10cf54dd292493 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Mon, 11 Jan 2016 23:37:44 -0600 Subject: [PATCH 106/107] Fix undefined variable error in FUNC(debug) possibly related to #2677 - threw error from switchToGroupSide --- addons/common/functions/fnc_debug.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/common/functions/fnc_debug.sqf b/addons/common/functions/fnc_debug.sqf index 862f7fe764..019ce2abff 100644 --- a/addons/common/functions/fnc_debug.sqf +++ b/addons/common/functions/fnc_debug.sqf @@ -18,7 +18,7 @@ params ["_msg", ["_level", 2, [0]]]; -private _defaultLoglevel = [GVAR(LOGLEVEL), DEFAULT_LOGGING_LEVEL] select isNil QGVAR(LOGLEVEL); +private _defaultLoglevel = missionNamespace getVariable [QGVAR(LOGLEVEL), DEFAULT_LOGGING_LEVEL]; if (_defaultLoglevel < 0) exitWith {false}; From 455c53a084689db186abd0862f99c624e76cf871 Mon Sep 17 00:00:00 2001 From: esteldunedain Date: Tue, 12 Jan 2016 13:09:41 -0300 Subject: [PATCH 107/107] Nerf the amount of backblast received by the firer via reflection. Fix #2890. --- addons/overpressure/functions/fnc_fireLauncherBackblast.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 02da9e9564..4641e36eb8 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -48,7 +48,7 @@ _affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Damage to the firer private "_distance"; -_distance = [_position, _direction, _backblastRange, _firer] call FUNC(getDistance); +_distance = 2 * ([_position, _direction, _backblastRange, _firer] call FUNC(getDistance)); TRACE_1("Distance",_distance); @@ -95,7 +95,7 @@ if (_distance < _backblastRange) then { ] call EFUNC(common,addLineToDebugDraw); [ _position, - _position vectorAdd (_direction vectorMultiply (_distance min _backblastRange)), + _position vectorAdd (_direction vectorMultiply ((_distance/2) min _backblastRange)), [1,0,0,1] ] call EFUNC(common,addLineToDebugDraw); #endif