From 0beaa40fbcd1f55209175501b3d9e382166cd755 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 13:52:54 +0100 Subject: [PATCH 01/44] Add API parameter to allow for unforced spectator Adds an optional boolean paremeter to the setSpectator function for forcing the interface. It is forced by default, so if `false` is passed as the value the spectator will be able to close the interface with the escape button. --- addons/spectator/functions/fnc_setSpectator.sqf | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index efa7000b8f..66344e69c6 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -7,7 +7,8 @@ * The spectator interface will be opened/closed * * Arguments: - * 0: Spectator state of local client + * 0: Spectator state of local client (default: true) + * 1: Force interface (default: true) * * Return Value: * None @@ -20,7 +21,7 @@ #include "script_component.hpp" -params [["_set",true,[true]]]; +params [["_set",true,[true]], ["_force",true,[true]]]; // Only clients can be spectators if (!hasInterface) exitWith {}; @@ -75,7 +76,17 @@ if (_set) then { [{ // Create the display (findDisplay 46) createDisplay QGVAR(interface); - }, []] call EFUNC(common,execNextFrame); + + // If not forced, make esc end spectator + if (_this) then { + (findDisplay 12249) displayAddEventHandler ["KeyDown", { + if (_this select 1 == 1) then { + [false] call ace_spectator_fnc_setSpectator; + true + }; + }]; + }; + }, !_force] call EFUNC(common,execNextFrame); // Cache and disable nametag settings if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { From b1dda86cb2fca4d9f87b050b7d291d6bfe8eaade Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 16:08:42 +0100 Subject: [PATCH 02/44] End spectator interface when the mission ends Fixes #2592 (in theory) by forcing spectator closed on mission end --- addons/spectator/XEH_postInit.sqf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/spectator/XEH_postInit.sqf b/addons/spectator/XEH_postInit.sqf index 35b463837f..a9737868a0 100644 --- a/addons/spectator/XEH_postInit.sqf +++ b/addons/spectator/XEH_postInit.sqf @@ -8,3 +8,6 @@ GVAR(availableModes) = [[0,1,2], [1,2], [0], [1], [2]] select GVAR(restrictModes); GVAR(availableVisions) = [[-2,-1,0,1], [-2,-1], [-2,0,1], [-2]] select GVAR(restrictVisions); }] call EFUNC(common,addEventHandler); + +// Should prevent unending spectator on mission end +addMissionEventHandler ["Ended",{ [false] call FUNC(setSpectator) }]; From f0f822b4bcbdb8d572a1c70afc076cbfb8e152c0 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 16:16:01 +0100 Subject: [PATCH 03/44] Decrease default spectator camera speed --- addons/spectator/XEH_preInit.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/spectator/XEH_preInit.sqf b/addons/spectator/XEH_preInit.sqf index e26dc27d07..13f2ba1708 100644 --- a/addons/spectator/XEH_preInit.sqf +++ b/addons/spectator/XEH_preInit.sqf @@ -35,7 +35,7 @@ GVAR(camDistance) = 10; GVAR(camMode) = 0; GVAR(camPan) = 0; GVAR(camPos) = ATLtoASL [worldSize * 0.5, worldSize * 0.5, 20]; -GVAR(camSpeed) = 2.5; +GVAR(camSpeed) = 1.5; GVAR(camTilt) = -10; GVAR(camUnit) = objNull; GVAR(camVision) = -2; From 52d703c2ebb1838518241eb298c7063dd87cf828 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 16:19:47 +0100 Subject: [PATCH 04/44] Improve spectator seagull handling Previously they were only hidden, but this didn't account for the annoying audio they play so now they're entirely staged like a spectator unit would be. --- addons/spectator/functions/fnc_respawnTemplate.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/spectator/functions/fnc_respawnTemplate.sqf b/addons/spectator/functions/fnc_respawnTemplate.sqf index d903e3ecc4..4584a1fc3c 100644 --- a/addons/spectator/functions/fnc_respawnTemplate.sqf +++ b/addons/spectator/functions/fnc_respawnTemplate.sqf @@ -34,7 +34,7 @@ _pos = (getPosATL _unit) vectorAdd [0,0,5]; // Enter/exit spectator based on the respawn type and whether killed/respawned if (alive _unit) then { if (_respawn == 1) then { - [_unit,QGVAR(isSeagull)] call EFUNC(common,hideUnit); + [_unit] call FUNC(stageSpectator); [2,_killer,_vision,_pos,getDir _unit] call FUNC(setCameraAttributes); [true] call FUNC(setSpectator); } else { From c1dc8a6493b140e74a827c04f97c7d8ad073303a Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 18:15:25 +0100 Subject: [PATCH 05/44] Fix spectator 3D icons not rendering Fixes #2676 as per voiperr's suggestion (working with camera can be really strange, I swear this worked before) --- addons/spectator/functions/fnc_transitionCamera.sqf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index edc7fa23a2..80fe873cb0 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -50,6 +50,7 @@ if (_newMode == 0) then { // Free // Preserve camUnit value for consistency when manually changing view _camera cameraEffect ["internal", "back"]; showCinemaBorder false; + cameraEffectEnableHUD true; // Apply the camera zoom _camera camSetFov -(linearConversion [0.01,2,GVAR(camZoom),-2,-0.01,true]); @@ -104,6 +105,7 @@ if (_newMode == 0) then { // Free // Switch to the camera _camera cameraEffect ["internal", "back"]; showCinemaBorder false; + cameraEffectEnableHUD true; // Handle camera orbit movement if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; From 4079ca354ed0209844f1032679c7125d1c051aca Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 18:30:07 +0100 Subject: [PATCH 06/44] Update spectator function headers --- addons/spectator/functions/fnc_interrupt.sqf | 2 +- .../functions/fnc_setCameraAttributes.sqf | 17 +++++++++-------- .../spectator/functions/fnc_stageSpectator.sqf | 4 ++-- addons/spectator/functions/fnc_updateUnits.sqf | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/addons/spectator/functions/fnc_interrupt.sqf b/addons/spectator/functions/fnc_interrupt.sqf index 48cca7d102..72bb3eaa32 100644 --- a/addons/spectator/functions/fnc_interrupt.sqf +++ b/addons/spectator/functions/fnc_interrupt.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Reason - * 1: Interrupting + * 1: Interrupting (default: true) * * Return Value: * None diff --git a/addons/spectator/functions/fnc_setCameraAttributes.sqf b/addons/spectator/functions/fnc_setCameraAttributes.sqf index dd8dd3ef6a..f908b30b76 100644 --- a/addons/spectator/functions/fnc_setCameraAttributes.sqf +++ b/addons/spectator/functions/fnc_setCameraAttributes.sqf @@ -1,23 +1,24 @@ /* * Author: SilentSpike * Sets the spectator camera attributes as desired + * All values are optional and default to whatever the current value is * * Arguments: - * 0: Camera mode + * 0: Camera mode * - 0: Free * - 1: Internal * - 2: External - * 1: Camera unit (objNull for random) - * 2: Camera vision + * 1: Camera unit (objNull for random) + * 2: Camera vision * - -2: Normal * - -1: Night vision * - 0: Thermal white hot * - 1: Thermal black hot - * 3: Camera position (ATL) - * 4: Camera pan (0 - 360) - * 5: Camera tilt (-90 - 90) - * 6: Camera zoom (0.01 - 2) - * 7: Camera speed in m/s (0.05 - 10) + * 3: Camera position (ATL) + * 4: Camera pan (0 - 360) + * 5: Camera tilt (-90 - 90) + * 6: Camera zoom (0.01 - 2) + * 7: Camera speed in m/s (0.05 - 10) * * Return Value: * None diff --git a/addons/spectator/functions/fnc_stageSpectator.sqf b/addons/spectator/functions/fnc_stageSpectator.sqf index 7f0d862719..61445f3dd9 100644 --- a/addons/spectator/functions/fnc_stageSpectator.sqf +++ b/addons/spectator/functions/fnc_stageSpectator.sqf @@ -7,8 +7,8 @@ * Upon unstage, units will be moved to the position they were in upon staging * * Arguments: - * 0: Unit to put into spectator stage - * 1: Spectator stage + * 0: Unit to put into spectator stage (default: player) + * 1: Unit should be staged (default: true) * * Return Value: * None diff --git a/addons/spectator/functions/fnc_updateUnits.sqf b/addons/spectator/functions/fnc_updateUnits.sqf index 0297b31b8d..e5b15b6bc1 100644 --- a/addons/spectator/functions/fnc_updateUnits.sqf +++ b/addons/spectator/functions/fnc_updateUnits.sqf @@ -4,7 +4,7 @@ * * Arguments: * 0: Units to add to the whitelist - * 1: Use blacklist + * 1: Use blacklist (default: false) * * Return Value: * None From 780e0aa27079190dc1237e17038c7f2dea960080 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sun, 4 Oct 2015 19:26:53 +0100 Subject: [PATCH 07/44] Add vision mode support to spectator external cam Since external view is actually another camera, vision modes should also apply to it too. --- .../functions/fnc_handleInterface.sqf | 2 +- .../spectator/functions/fnc_handleToolbar.sqf | 7 ++- .../functions/fnc_transitionCamera.sqf | 47 +++++++++---------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 7c961071c3..dcba11d2ec 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -238,7 +238,7 @@ switch (toLower _mode) do { GVAR(camBoom) = -0.5 * GVAR(camSpeed) * ([1, 2] select _shift); }; case 49: { // N - if (GVAR(camMode) == 0) then { + if (GVAR(camMode) != 1) then { if (_ctrl) then { [nil,nil,-1] call FUNC(cycleCamera); } else { diff --git a/addons/spectator/functions/fnc_handleToolbar.sqf b/addons/spectator/functions/fnc_handleToolbar.sqf index 878f3e46de..4e79c172bd 100644 --- a/addons/spectator/functions/fnc_handleToolbar.sqf +++ b/addons/spectator/functions/fnc_handleToolbar.sqf @@ -26,8 +26,13 @@ private ["_name","_vision","_fov","_speed","_mode","_time","_toolbar"]; _toolbar = _display displayCtrl IDC_TOOL; // Find all tool values +if (GVAR(camVision) >= 0) then { + _vision = localize LSTRING(VisionThermal); +} else { + _vision = [localize LSTRING(VisionNight), localize LSTRING(VisionNormal)] select (GVAR(camVision) < -1); +}; + if (GVAR(camMode) == 0) then { - _vision = if (GVAR(camVision) >= 0) then {localize LSTRING(VisionThermal)} else { [localize LSTRING(VisionNight), localize LSTRING(VisionNormal)] select (GVAR(camVision) < -1) }; _fov = format ["%1x", floor(GVAR(camZoom) * 100) * 0.01]; _speed = format ["%1 m/s", floor(GVAR(camSpeed) * 100) * 0.01]; } else { diff --git a/addons/spectator/functions/fnc_transitionCamera.sqf b/addons/spectator/functions/fnc_transitionCamera.sqf index 80fe873cb0..0f6eb3ffc7 100644 --- a/addons/spectator/functions/fnc_transitionCamera.sqf +++ b/addons/spectator/functions/fnc_transitionCamera.sqf @@ -49,8 +49,6 @@ if (_newMode == 0) then { // Free // Preserve camUnit value for consistency when manually changing view _camera cameraEffect ["internal", "back"]; - showCinemaBorder false; - cameraEffectEnableHUD true; // Apply the camera zoom _camera camSetFov -(linearConversion [0.01,2,GVAR(camZoom),-2,-0.01,true]); @@ -64,23 +62,6 @@ if (_newMode == 0) then { // Free GVAR(camAgent) switchCamera "internal"; clearRadio; - - // If new vision isn't available then keep current (unless current also isn't) - if !(_newVision in GVAR(availableVisions)) then { - _newVision = GVAR(availableVisions) select ((GVAR(availableVisions) find GVAR(camVision)) max 0); - }; - - // Vision mode only applies to free cam - if (_newVision < 0) then { - false setCamUseTi 0; - camUseNVG (_newVision >= -1); - } else { - true setCamUseTi _newVision; - }; - GVAR(camVision) = _newVision; - - // Handle camera movement - if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; } else { _camera = GVAR(unitCamera); @@ -104,11 +85,6 @@ if (_newMode == 0) then { // Free } else { // Switch to the camera _camera cameraEffect ["internal", "back"]; - showCinemaBorder false; - cameraEffectEnableHUD true; - - // Handle camera orbit movement - if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; }; // Clear radio if group changed @@ -119,4 +95,27 @@ if (_newMode == 0) then { // Free GVAR(camUnit) = _newUnit; }; +if (_newMode in [0,2]) then { + // Set up camera UI + showCinemaBorder false; + cameraEffectEnableHUD true; + + // Handle camera movement + if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; + + // If new vision isn't available then keep current (unless current also isn't) + if !(_newVision in GVAR(availableVisions)) then { + _newVision = GVAR(availableVisions) select ((GVAR(availableVisions) find GVAR(camVision)) max 0); + }; + + // Vision mode applies to free and external cam + if (_newVision < 0) then { + false setCamUseTi 0; + camUseNVG (_newVision >= -1); + } else { + true setCamUseTi _newVision; + }; + GVAR(camVision) = _newVision; +}; + GVAR(camMode) = _newMode; From e6a5d8c9903475c5c18df0c393347c227954986f Mon Sep 17 00:00:00 2001 From: jonpas Date: Wed, 7 Oct 2015 23:00:35 +0200 Subject: [PATCH 08/44] Remove enable optics in adjusted prone stances --- addons/movement/CfgMoves.hpp | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/addons/movement/CfgMoves.hpp b/addons/movement/CfgMoves.hpp index 50d3e3ab2b..6aa22f1a47 100644 --- a/addons/movement/CfgMoves.hpp +++ b/addons/movement/CfgMoves.hpp @@ -114,31 +114,6 @@ class CfgMovesMaleSdr: CfgMovesBasic { leftHandIKCurve[] = {}; }; - // enable optics in prone left and right stance - class AidlPpneMstpSrasWrflDnon_G0S; - class AadjPpneMstpSrasWrflDleft: AidlPpneMstpSrasWrflDnon_G0S { - enableOptics = 1; - }; - class AadjPpneMstpSrasWrflDright: AidlPpneMstpSrasWrflDnon_G0S { - enableOptics = 1; - }; - class AadjPpneMstpSrasWrflDup; - class AadjPpneMstpSrasWrflDdown: AadjPpneMstpSrasWrflDup { - enableOptics = 1; - }; - - class AidlPpneMstpSrasWpstDnon_G0S; - class AadjPpneMstpSrasWpstDleft: AidlPpneMstpSrasWpstDnon_G0S { - enableOptics = 2; - }; - class AadjPpneMstpSrasWpstDright: AidlPpneMstpSrasWpstDnon_G0S { - enableOptics = 2; - }; - class AadjPpneMstpSrasWpstDup; - class AadjPpneMstpSrasWpstDdown: AadjPpneMstpSrasWpstDup { - enableOptics = 2; - }; - // climb animation class AmovPercMstpSnonWnonDnon: StandBase { ConnectTo[] += {"ACE_Climb",0.02}; From b6dd7b941fa2b2c2e3a395de3d22368cb6004fc3 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 17 Oct 2015 13:20:00 +0100 Subject: [PATCH 09/44] Reduce overhead of spectator map icons Fixes #2514 by only rendering individual unit icons when zoomed in and only rendering the units currently within the screen bounds. Behaves as expected, but whether or not it has a significant performance increase under scaled up testing conditions remains to be seen. --- addons/spectator/functions/fnc_handleMap.sqf | 28 +++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/addons/spectator/functions/fnc_handleMap.sqf b/addons/spectator/functions/fnc_handleMap.sqf index fd084f9967..b83ccdcd7d 100644 --- a/addons/spectator/functions/fnc_handleMap.sqf +++ b/addons/spectator/functions/fnc_handleMap.sqf @@ -18,12 +18,32 @@ #include "script_component.hpp" params ["_map"]; -private ["_cachedVehicles","_unit","_color","_icon","_txt"]; +private ["_center","_radius","_scaled","_drawVehicles","_leader","_color","_cachedVehicles","_unit","_icon","_txt"]; if (GVAR(camMode) == 0) then { _map drawIcon ["\A3\UI_F\Data\GUI\Rsc\RscDisplayMissionEditor\iconcamera_ca.paa",[0,0,0,1],GVAR(freeCamera),20,20,GVAR(camPan)]; }; +_center = _map ctrlMapScreenToWorld [0.5,0.5]; +_radius = (_map ctrlMapScreenToWorld [safeZoneX,safeZoneY]) distance2D _center; +_scaled = (ctrlMapScale _map) > 0.2; + +// Draw only group icons when scaled out +_drawVehicles = []; +{ + _leader = leader _x; + if (_scaled) then { + _color = GETVAR(_x,GVAR(gColor),[ARR_4(0,0,0,0)]); + _map drawIcon ["\A3\ui_f\data\map\markers\nato\b_inf.paa", _color, _leader, 20, 20, 0, "", 0, 0]; + } else { + if ((_leader distance2D _center) < _radius) then { + _drawVehicles append (units _x); + }; + }; + nil +} count GVAR(groupList); + +// Draw units when group leader is within screen bounds _cachedVehicles = []; { _unit = vehicle _x; @@ -41,7 +61,7 @@ _cachedVehicles = []; _icon = GETVAR(_unit,GVAR(uIcon),""); _txt = ["", GETVAR(_x,GVAR(uName),"")] select (isPlayer _x); - _map drawIcon [_icon, _color, _unit, 19, 19, getDir _unit, _txt, 1, 0.03]; + _map drawIcon [_icon, _color, _unit, 19, 19, getDir _unit, _txt, 1, 0.04]; }; - false -} count GVAR(unitList); + nil +} count (_drawVehicles arrayIntersect GVAR(unitList)); From 16180686d25f6419baf5b5fb64a5afc772118768 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 18 Oct 2015 18:49:03 -0500 Subject: [PATCH 10/44] PV GVAR(settings) after modules, add error debug --- addons/common/XEH_postInit.sqf | 5 ++++ .../fnc_loadSettingsLocalizedText.sqf | 13 ++++++++- .../functions/fnc_loadSettingsOnServer.sqf | 2 -- addons/common/functions/fnc_setSetting.sqf | 28 +++++++++++++------ 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 032b6148be..ac1a162137 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -197,6 +197,11 @@ call FUNC(checkFiles); // Event so that ACE_Modules have their settings loaded: ["InitSettingsFromModules", []] call FUNC(localEvent); + if (isServer) then { + // Publish all settings data after all configs and modules are read + publicVariable QGVAR(settings); + }; + // Load user settings from profile if (hasInterface) then { call FUNC(loadSettingsFromProfile); diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 1e43359379..62ba120ff9 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -35,12 +35,23 @@ _fnc_parseConfigForDisplayNames = { _values set [_forEachIndex, _text]; }; } forEach _values; + + if (!(_values isEqualTo [])) then { + if (_typeOf != "SCALAR") then { + ACE_LOGWARNING_2("Setting [%1] has values[] but is not SCALAR (%2)", _name, _typeOf); + } else { + local _value = missionNamespace getVariable [_name, -1]; + if ((_value < 0) || {_value >= (count _values)}) then { + ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)(", _name, _value, count _values); + }; + }; + }; true }; // Iterate through settings { - _x params ["_name"]; + _x params ["_name", "_typeOf"]; if !([configFile >> "ACE_Settings" >> _name] call _fnc_parseConfigForDisplayNames) then { if !([configFile >> "ACE_ServerSettings" >> _name] call _fnc_parseConfigForDisplayNames) then { diff --git a/addons/common/functions/fnc_loadSettingsOnServer.sqf b/addons/common/functions/fnc_loadSettingsOnServer.sqf index ea8257ec23..cdf8b48041 100644 --- a/addons/common/functions/fnc_loadSettingsOnServer.sqf +++ b/addons/common/functions/fnc_loadSettingsOnServer.sqf @@ -51,8 +51,6 @@ _fnc_parseConfigForSettings = { // mission side settings [missionConfigFile >> "ACE_Settings"] call _fnc_parseConfigForSettings; -// Publish all settings data -publicVariable QGVAR(settings); // Publish all setting values { publicVariable (_x select 0); diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 60b64e31d4..4162e7443f 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -13,27 +13,37 @@ * Return Value: * None * + * Example: + * ["ace_map_gestures_enabled", true, false, true] call ace_common_fnc_setSetting + * * Public: No */ #include "script_component.hpp" params ["_name", "_value", ["_force", false], ["_broadcastChanges", false]]; -private ["_settingData", "_failed"]; - -_settingData = [_name] call FUNC(getSettingData); +local _settingData = [_name] call FUNC(getSettingData); // Exit if the setting does not exist -if (count _settingData == 0) exitWith {}; +if (_settingData isEqualTo []) exitWith {}; + +_settingData params ["", "_typeName", "_isClientSetable", "", "", "", "_isForced"]; // Exit if the setting is already forced -if (_settingData select 6) exitWith {}; +if (_isForced) exitWith { + ACE_LOGINFO_1("SetSetting [%1] Trying to set forced setting", _name); +}; + +//This does NOT broadcast changes to GVAR(settings), so clients would not get updated force status +if ((missionNamespace getVariable [QEGVAR(modules,serverModulesRead), false]) && {!(_isForced isEqualTo _force)}) then { + ACE_LOGWARNING_3("SetSetting [%1] attempting to broadcast a change to force (%2 to %3)", _name, _isForced, _force); +}; // If the type is not equal, try to cast it -_failed = false; +local _failed = false; if (typeName _value != _settingData select 1) then { _failed = true; - if (_settingData select 1 == "BOOL" && typeName _value == "SCALAR") then { + if ((_typeName == "BOOL") && {typeName _value == "SCALAR"}) then { // If value is not 0 or 1 consider it invalid and don't set anything if (_value isEqualTo 0) then { _value = false; @@ -44,12 +54,12 @@ if (typeName _value != _settingData select 1) then { _failed = false; }; }; - if (_settingData select 1 == "COLOR" && typeName _value == "ARRAY") then { + if ((_typeName == "COLOR") && {typeName _value == "ARRAY"}) then { _failed = false; }; }; -if (_failed) exitWith {}; +if (_failed) exitWith {ACE_LOGERROR_3("SetSetting [%1] bad data type expected %2 got %3", _name, _typeName, typeName _value);}; // Force it if it was required _settingData set [6, _force]; From 64de91ed06fe5c4608fc3887a290a58a8caf3d41 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 18 Oct 2015 23:34:11 -0500 Subject: [PATCH 11/44] Add warning for duplicate setting modules. --- addons/captives/CfgVehicles.hpp | 1 + addons/cargo/CfgVehicles.hpp | 1 + addons/common/CfgVehicles.hpp | 1 + addons/common/functions/fnc_setSetting.sqf | 4 +++- addons/explosives/CfgModule.hpp | 1 + addons/finger/CfgVehicles.hpp | 1 + addons/hearing/CfgVehicles.hpp | 1 + addons/interaction/CfgVehicles.hpp | 1 + addons/map/CfgVehicles.hpp | 2 ++ addons/map_gestures/CfgVehicles.hpp | 1 + addons/medical/CfgVehicles.hpp | 3 +++ addons/medical_menu/CfgVehicles.hpp | 1 + addons/microdagr/CfgVehicles.hpp | 1 + addons/mk6mortar/CfgVehicles.hpp | 1 + addons/modules/XEH_postInit.sqf | 25 +++++++++++++--------- addons/nametags/CfgVehicles.hpp | 1 + addons/optionsmenu/CfgVehicles.hpp | 1 + addons/repair/CfgVehicles.hpp | 1 + addons/sitting/CfgVehicles.hpp | 1 + addons/vehiclelock/CfgVehicles.hpp | 1 + addons/viewdistance/CfgVehicles.hpp | 1 + addons/weather/CfgVehicles.hpp | 1 + addons/winddeflection/CfgVehicles.hpp | 1 + addons/zeus/CfgVehicles.hpp | 1 + 24 files changed, 43 insertions(+), 11 deletions(-) diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp index afda86cfda..de6a757bf3 100644 --- a/addons/captives/CfgVehicles.hpp +++ b/addons/captives/CfgVehicles.hpp @@ -176,6 +176,7 @@ class CfgVehicles { scope = 2; icon = QUOTE(PATHTOF(UI\Icon_Module_settings_ca.paa)); isGlobal = 1; + isSingular = 1; class Arguments { class allowHandcuffOwnSide { displayName = CSTRING(ModuleSettings_handcuffSide_name); diff --git a/addons/cargo/CfgVehicles.hpp b/addons/cargo/CfgVehicles.hpp index 111c4d9956..90fc439b60 100644 --- a/addons/cargo/CfgVehicles.hpp +++ b/addons/cargo/CfgVehicles.hpp @@ -8,6 +8,7 @@ class CfgVehicles { function = QFUNC(moduleSettings); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp index 7c5c9295f9..de1f7f7cf4 100644 --- a/addons/common/CfgVehicles.hpp +++ b/addons/common/CfgVehicles.hpp @@ -35,6 +35,7 @@ class CfgVehicles { function = QFUNC(moduleCheckPBOs); scope = 2; isGlobal = 1; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_CheckPBO_ca.paa)); class Arguments { class Action { diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index 4162e7443f..e37f4b6ff7 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -25,7 +25,9 @@ params ["_name", "_value", ["_force", false], ["_broadcastChanges", false]]; local _settingData = [_name] call FUNC(getSettingData); // Exit if the setting does not exist -if (_settingData isEqualTo []) exitWith {}; +if (_settingData isEqualTo []) exitWith { + ACE_LOGERROR_1("SetSetting [%1] setting does not exist", _name); +}; _settingData params ["", "_typeName", "_isClientSetable", "", "", "", "_isForced"]; diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp index a27efae704..b651903f59 100644 --- a/addons/explosives/CfgModule.hpp +++ b/addons/explosives/CfgModule.hpp @@ -6,6 +6,7 @@ class ACE_ModuleExplosive: ACE_Module { function = QUOTE(FUNC(module)); scope = 2; isGlobal = 1; + isSingular = 1; icon = PATHTOF(UI\Icon_Module_Explosives_ca.paa); class Arguments { class RequireSpecialist { diff --git a/addons/finger/CfgVehicles.hpp b/addons/finger/CfgVehicles.hpp index 99d9713f00..e78ef50123 100644 --- a/addons/finger/CfgVehicles.hpp +++ b/addons/finger/CfgVehicles.hpp @@ -7,6 +7,7 @@ class CfgVehicles { icon = QUOTE(PATHTOF(UI\Icon_Module_finger_ca.paa)); function = QFUNC(moduleSettings); isGlobal = 0; + isSingular = 1; author = ECSTRING(common,ACETeam); class Arguments { class enabled { diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp index 2273653c3a..72377ca970 100644 --- a/addons/hearing/CfgVehicles.hpp +++ b/addons/hearing/CfgVehicles.hpp @@ -101,6 +101,7 @@ class CfgVehicles { function = QFUNC(moduleHearing); scope = 2; isGlobal = 1; + isSingular = 1; icon = PATHTOF(UI\Icon_Module_Hearing_ca.paa); class Arguments { class EnableCombatDeafness { diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp index 56fb06a85b..dfe4f2025e 100644 --- a/addons/interaction/CfgVehicles.hpp +++ b/addons/interaction/CfgVehicles.hpp @@ -8,6 +8,7 @@ class CfgVehicles { function = "ACE_Interaction_fnc_moduleInteraction"; scope = 2; isGlobal = 1; + isSingular = 1; icon = PATHTOF(UI\Icon_Module_Interaction_ca.paa); class Arguments { diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp index 7906de8bb7..720d4e8a7b 100644 --- a/addons/map/CfgVehicles.hpp +++ b/addons/map/CfgVehicles.hpp @@ -23,6 +23,7 @@ class CfgVehicles { function = QFUNC(moduleMap); scope = 2; isGlobal = 1; + isSingular = 1; icon = PATHTOF(UI\Icon_Module_Map_ca.paa); class Arguments { class MapIllumination { @@ -82,6 +83,7 @@ class CfgVehicles { function = QFUNC(blueForceTrackingModule); scope = 2; isGlobal = 0; + isSingular = 1; icon = PATHTOF(UI\Icon_Module_BFTracking_ca.paa); class Arguments { class Enabled { diff --git a/addons/map_gestures/CfgVehicles.hpp b/addons/map_gestures/CfgVehicles.hpp index f5c2ae8f38..c03fb34992 100644 --- a/addons/map_gestures/CfgVehicles.hpp +++ b/addons/map_gestures/CfgVehicles.hpp @@ -6,6 +6,7 @@ class CfgVehicles { displayName = CSTRING(moduleSettings_displayName); function = QFUNC(moduleSettings); isGlobal = 0; + isSingular = 1; author = ECSTRING(common,ACETeam); icon = PATHTOF(ui\icon_module_map_gestures_ca.paa); class Arguments { diff --git a/addons/medical/CfgVehicles.hpp b/addons/medical/CfgVehicles.hpp index 3a675e9258..351d285c7e 100644 --- a/addons/medical/CfgVehicles.hpp +++ b/addons/medical/CfgVehicles.hpp @@ -17,6 +17,7 @@ class CfgVehicles { function = QUOTE(DFUNC(moduleMedicalSettings)); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); @@ -153,6 +154,7 @@ class CfgVehicles { function = QUOTE(FUNC(moduleAdvancedMedicalSettings)); functionPriority = 10; isGlobal = 2; + isSingular = 1; isTriggerActivated = 0; isDisposable = 0; author = ECSTRING(common,ACETeam); @@ -274,6 +276,7 @@ class CfgVehicles { function = QUOTE(DFUNC(moduleReviveSettings)); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); diff --git a/addons/medical_menu/CfgVehicles.hpp b/addons/medical_menu/CfgVehicles.hpp index 7bbe7db2ad..d2bbf55fd1 100644 --- a/addons/medical_menu/CfgVehicles.hpp +++ b/addons/medical_menu/CfgVehicles.hpp @@ -10,6 +10,7 @@ class CfgVehicles { function = QUOTE(DFUNC(module)); functionPriority = 1; isGlobal = 0; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); class Arguments { diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp index ee16870fe0..3fcf92beaa 100644 --- a/addons/microdagr/CfgVehicles.hpp +++ b/addons/microdagr/CfgVehicles.hpp @@ -38,6 +38,7 @@ class CfgVehicles { function = QFUNC(moduleMapFill); scope = 2; isGlobal = 0; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_microDAGR_ca.paa)); functionPriority = 0; class Arguments { diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp index b351e440b4..481687f89f 100644 --- a/addons/mk6mortar/CfgVehicles.hpp +++ b/addons/mk6mortar/CfgVehicles.hpp @@ -52,6 +52,7 @@ class CfgVehicles { function = QFUNC(moduleInit); scope = 2; isGlobal = 0; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_mk6_ca.paa)); functionPriority = 0; class Arguments { diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index 62d16f42ce..d4857af57f 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -4,27 +4,32 @@ ["InitSettingsFromModules", { // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. + + local _uniqueModulesHandled = []; { [_x] call { - private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"]; - _logic = _this select 0; - _logicType = typeof _logic; + params ["_logic"]; + local _logicType = typeof _logic; _logic hideobject true; if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; - _config = (configFile >> "CfgVehicles" >> _logicType); + local _config = (configFile >> "CfgVehicles" >> _logicType); if !(isClass _config) exitwith {}; - // isGlobal = 1; - _isGlobal = getNumber (_config >> "isGlobal") > 0; - _isDisposable = getNumber (_config >> "isDisposable") > 0; - _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; - _function = getText (_config >> "function"); + local _isGlobal = getNumber (_config >> "isGlobal") > 0; + local _isDisposable = getNumber (_config >> "isDisposable") > 0; + local _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; + local _isSingular = getNumber (_config >> "isSingular") > 0; + local _function = getText (_config >> "function"); if (isnil _function) then { _function = compile _function; } else { _function = missionNamespace getvariable _function; }; + if (_isSingular && {_logicType in _uniqueModulesHandled}) then { //ToDo: should this be an exit? + ACE_LOGWARNING_1("Module [%1] - More than 1 singular module placed", _logicType); + }; + if (_isSingular) then {_uniqueModulesHandled pushBack _logicType;}; if (_isGlobal || isServer) then { [_logic, (synchronizedObjects _logic), true] call _function; @@ -38,7 +43,7 @@ deleteVehicle _logic; }; }; - }foreach GVAR(moduleInitCollection); + } forEach GVAR(moduleInitCollection); if (isServer) then { GVAR(serverModulesRead) = true; diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp index f6e28095b4..7ca13b5aeb 100644 --- a/addons/nametags/CfgVehicles.hpp +++ b/addons/nametags/CfgVehicles.hpp @@ -7,6 +7,7 @@ class CfgVehicles { function = QFUNC(moduleNameTags); scope = 2; isGlobal = 1; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa)); class Arguments { class showPlayerNames { diff --git a/addons/optionsmenu/CfgVehicles.hpp b/addons/optionsmenu/CfgVehicles.hpp index 1357417add..cbe03a4cfb 100644 --- a/addons/optionsmenu/CfgVehicles.hpp +++ b/addons/optionsmenu/CfgVehicles.hpp @@ -8,6 +8,7 @@ class CfgVehicles { function = QUOTE(DFUNC(moduleAllowConfigExport)); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); class Arguments { diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp index ee31e2c873..85abce4028 100644 --- a/addons/repair/CfgVehicles.hpp +++ b/addons/repair/CfgVehicles.hpp @@ -25,6 +25,7 @@ class CfgVehicles { function = QFUNC(moduleRepairSettings); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(Common,ACETeam); class Arguments { diff --git a/addons/sitting/CfgVehicles.hpp b/addons/sitting/CfgVehicles.hpp index 4ac0d0edb7..cb2422bd6d 100644 --- a/addons/sitting/CfgVehicles.hpp +++ b/addons/sitting/CfgVehicles.hpp @@ -7,6 +7,7 @@ class CfgVehicles { function = QFUNC(moduleInit); scope = 2; isGlobal = 1; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_Sitting_ca.paa)); class Arguments { class enable { diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp index 9e6f155616..873c875f09 100644 --- a/addons/vehiclelock/CfgVehicles.hpp +++ b/addons/vehiclelock/CfgVehicles.hpp @@ -74,6 +74,7 @@ class CfgVehicles { function = QFUNC(moduleInit); scope = 2; isGlobal = 0; + isSingular = 1; icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleLock_ca.paa)); functionPriority = 0; class Arguments { diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp index 8e4e30d266..86d906bfce 100644 --- a/addons/viewdistance/CfgVehicles.hpp +++ b/addons/viewdistance/CfgVehicles.hpp @@ -7,6 +7,7 @@ class CfgVehicles { displayName = CSTRING(Module_DisplayName); scope = 2; isGlobal = 1; + isSingular = 1; //icon = ""; // needs an icon class Arguments { class moduleViewDistanceEnabled { diff --git a/addons/weather/CfgVehicles.hpp b/addons/weather/CfgVehicles.hpp index ebdd65c30d..f37a62449a 100644 --- a/addons/weather/CfgVehicles.hpp +++ b/addons/weather/CfgVehicles.hpp @@ -8,6 +8,7 @@ class CfgVehicles { function = QUOTE(DFUNC(initModuleSettings)); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); class Arguments { diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp index 2694bb1b34..c52949e1fc 100644 --- a/addons/winddeflection/CfgVehicles.hpp +++ b/addons/winddeflection/CfgVehicles.hpp @@ -8,6 +8,7 @@ class CfgVehicles { function = QUOTE(DFUNC(initModuleSettings)); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = ECSTRING(common,ACETeam); class Arguments { diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp index 35c43b0e84..f5144e60e6 100644 --- a/addons/zeus/CfgVehicles.hpp +++ b/addons/zeus/CfgVehicles.hpp @@ -23,6 +23,7 @@ class CfgVehicles { function = QFUNC(moduleZeusSettings); functionPriority = 1; isGlobal = 1; + isSingular = 1; isTriggerActivated = 0; author = "SilentSpike"; class Arguments { From af80635a3f58aca94d154b331eb4b93454f7ae95 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 18 Oct 2015 23:59:40 -0500 Subject: [PATCH 12/44] ST Map Gesture Force Color Settings --- addons/map_gestures/CfgVehicles.hpp | 11 ++++---- addons/map_gestures/XEH_postInit.sqf | 5 ++++ .../functions/fnc_moduleSettings.sqf | 22 +++++++++------ addons/map_gestures/stringtable.xml | 28 ++----------------- 4 files changed, 27 insertions(+), 39 deletions(-) diff --git a/addons/map_gestures/CfgVehicles.hpp b/addons/map_gestures/CfgVehicles.hpp index c03fb34992..d4c88883e6 100644 --- a/addons/map_gestures/CfgVehicles.hpp +++ b/addons/map_gestures/CfgVehicles.hpp @@ -12,6 +12,7 @@ class CfgVehicles { class Arguments { class enabled { displayName = CSTRING(enabled_DisplayName); + description = CSTRING(enabled_description); typeName = "BOOL"; defaultValue = 1; }; @@ -19,7 +20,7 @@ class CfgVehicles { displayName = CSTRING(maxRange_displayName); description = CSTRING(maxRange_description); typeName = "NUMBER"; - defaultValue = 4; + defaultValue = 7; }; class interval { displayName = CSTRING(interval_displayName); @@ -31,13 +32,13 @@ class CfgVehicles { displayName = CSTRING(defaultLeadColor_displayName); description = CSTRING(defaultLeadColor_description); typeName = "STRING"; - defaultValue = "0,0,0,0"; + defaultValue = "1,0.88,0,0.95"; }; class defaultColor { displayName = CSTRING(defaultColor_displayName); description = CSTRING(defaultColor_description); typeName = "STRING"; - defaultValue = "0,0,0,0"; + defaultValue = "1,0.88,0,0.7"; }; }; }; @@ -54,13 +55,13 @@ class CfgVehicles { displayName = CSTRING(leadColor_displayName); description = CSTRING(leadColor_description); typeName = "STRING"; - defaultValue = "0,0,0,0"; + defaultValue = "1,0.88,0,0.95"; }; class color { displayName = CSTRING(color_displayName); description = CSTRING(color_description); typeName = "STRING"; - defaultValue = "0,0,0,0"; + defaultValue = "1,0.88,0,0.7"; }; }; }; diff --git a/addons/map_gestures/XEH_postInit.sqf b/addons/map_gestures/XEH_postInit.sqf index 777463e86a..233ee23c04 100644 --- a/addons/map_gestures/XEH_postInit.sqf +++ b/addons/map_gestures/XEH_postInit.sqf @@ -1,8 +1,13 @@ #include "script_component.hpp" +if (["STMapGestures"] call EFUNC(common,isModLoaded)) exitWith { + ACE_LOGWARNING("st_map_gestures is installed - exiting [remove st_map_gestures.pbo to allow ace version]"); +}; + if (!hasInterface) exitWith {}; ["SettingsInitialized", { + if (!GVAR(enabled)) exitWith {}; [{ if (isNull (findDisplay 12)) exitWith {}; diff --git a/addons/map_gestures/functions/fnc_moduleSettings.sqf b/addons/map_gestures/functions/fnc_moduleSettings.sqf index 99583074fc..3e580493c9 100644 --- a/addons/map_gestures/functions/fnc_moduleSettings.sqf +++ b/addons/map_gestures/functions/fnc_moduleSettings.sqf @@ -17,8 +17,6 @@ */ #include "script_component.hpp" -private ["_defaultColor", "_defaultLeadColor"]; - params ["_logic", "", "_activated"]; if (!_activated || !isServer) exitWith {}; @@ -27,11 +25,19 @@ if (!_activated || !isServer) exitWith {}; [_logic, QGVAR(maxRange), "maxRange"] call EFUNC(common,readSettingFromModule); [_logic, QGVAR(interval), "interval"] call EFUNC(common,readSettingFromModule); -_defaultLeadColor = call compile ("[" + (_logic getVariable ["defaultLeadColor", ""]) + "]"); -if (!([_defaultLeadColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultLeadColor is not a valid color array.")}; +//For default fallback colors, setting to empty ("") will not force on clients +local _defaultLeadColor = _logic getVariable ["defaultLeadColor", ""]; +if (_defaultLeadColor != "") then { + _defaultLeadColor = call compile ("[" + _defaultLeadColor + "]"); + if (!([_defaultLeadColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultLeadColor is not a valid color array.")}; + [QGVAR(defaultLeadColor), _defaultLeadColor, true, true] call EFUNC(common,setSetting); +}; -_defaultColor = call compile ("[" + (_logic getVariable ["defaultColor", ""]) + "]"); -if (!([_defaultColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultColor is not a valid color array.")}; +local _defaultColor = _logic getVariable ["defaultColor", ""]; +if (_defaultColor != "") then { + _defaultColor = call compile ("[" + _defaultColor + "]"); + if (!([_defaultColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultColor is not a valid color array.")}; + [QGVAR(defaultColor), _defaultColor, true, true] call EFUNC(common,setSetting); +}; -[QGVAR(defaultLeadColor), _defaultLeadColor, false, true] call EFUNC(common,setSetting); -[QGVAR(defaultColor), _defaultColor, false, true] call EFUNC(common,setSetting); +ACE_LOGINFO("Map Gestures Module Initialized."); diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index e5eab426a3..3da02aa2b0 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -13,41 +13,17 @@ Max range between players to show the map gesture indicator [default: 7 meters] - - Lead Default Alpha - - - Fallback Alpha value for group leaders. - - - Default Alpha - - - Fallback Alpha value. - Lead Default Color - Fallback Color value for group leaders. + Fallback Color value for group leaders when there is no group setting. [Module: leave blank to not force on clients] Default Color - Fallback Color value. - - - Lead Alpha - - - Alpha value for group leaders of groups synced with this module. - - - Alpha - - - Alpha value for group members of groups synced with this module. + Fallback Color value when there is no group setting. [Module: leave blank to not force on clients] Lead Color From c227f05f8a0b20b6b5929b89d239c2d06935b344 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 19 Oct 2015 23:28:50 +0200 Subject: [PATCH 13/44] Deprecated isWater --- addons/common/XEH_preInit.sqf | 1 + addons/common/functions/fnc_inWater.sqf | 22 ++++----------- addons/common/functions/fnc_isUnderwater.sqf | 29 ++++++++++++++++++++ 3 files changed, 36 insertions(+), 16 deletions(-) create mode 100644 addons/common/functions/fnc_isUnderwater.sqf diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index e1cc807bdc..9516e4cb5b 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -115,6 +115,7 @@ PREP(isInBuilding); PREP(isModLoaded); PREP(isPlayer); PREP(isTurnedOut); +PREP(isUnderwater); PREP(letterToCode); PREP(lightIntensityFromObject); PREP(loadPerson); diff --git a/addons/common/functions/fnc_inWater.sqf b/addons/common/functions/fnc_inWater.sqf index 7c8e2eee21..3b323469fc 100644 --- a/addons/common/functions/fnc_inWater.sqf +++ b/addons/common/functions/fnc_inWater.sqf @@ -1,29 +1,19 @@ /* * Author: Glowbal - * Check if unit is underwater + * Check if unit's head is underwater * * Arguments: * 0: Unit * * Return Value: - * if unit is in the water (BOOLEAN) + * If unit's head is underwater * * Public: Yes + * + * Deprecated */ #include "script_component.hpp" -params ["_unit"]; +ACE_DEPRECATED("ace_common_fnc_inWater","3.5.0","ace_common_fnc_isUnderwater"); -private "_return"; -_return = false; - -if (surfaceIsWater getPosASL _unit) then { - private "_pos"; - _pos = _unit modelToWorldVisual (_unit selectionPosition "head"); - - if (_pos select 2 < 0) then { - _return = true; - }; -}; - -_return +_this call FUNC(isUnderwater) diff --git a/addons/common/functions/fnc_isUnderwater.sqf b/addons/common/functions/fnc_isUnderwater.sqf new file mode 100644 index 0000000000..d2f399b770 --- /dev/null +++ b/addons/common/functions/fnc_isUnderwater.sqf @@ -0,0 +1,29 @@ +/* + * Author: Glowbal + * Check if unit's head is underwater + * + * Arguments: + * 0: Unit + * + * Return Value: + * If unit's head is underwater + * + * Public: Yes + */ +#include "script_component.hpp" + +params ["_unit"]; + +private "_return"; +_return = false; + +if (surfaceIsWater getPosASL _unit) then { + private "_pos"; + _pos = _unit modelToWorldVisual (_unit selectionPosition "head"); + + if (_pos select 2 < 0) then { + _return = true; + }; +}; + +_return From 349447c5ea6795bb382cd809563cd7890592f8c4 Mon Sep 17 00:00:00 2001 From: jonpas Date: Tue, 20 Oct 2015 19:37:49 +0200 Subject: [PATCH 14/44] Readd prone down optics removal --- addons/movement/CfgMoves.hpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/movement/CfgMoves.hpp b/addons/movement/CfgMoves.hpp index 6aa22f1a47..a828c5278c 100644 --- a/addons/movement/CfgMoves.hpp +++ b/addons/movement/CfgMoves.hpp @@ -114,6 +114,16 @@ class CfgMovesMaleSdr: CfgMovesBasic { leftHandIKCurve[] = {}; }; + // enable optics in prone down stance + class AadjPpneMstpSrasWrflDup; + class AadjPpneMstpSrasWrflDdown: AadjPpneMstpSrasWrflDup { + enableOptics = 1; + }; + class AadjPpneMstpSrasWpstDup; + class AadjPpneMstpSrasWpstDdown: AadjPpneMstpSrasWpstDup { + enableOptics = 2; + }; + // climb animation class AmovPercMstpSnonWnonDnon: StandBase { ConnectTo[] += {"ACE_Climb",0.02}; From 7db5a34b249eef43c3d02b999b0344dc7ec92a8b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 20 Oct 2015 13:26:42 -0500 Subject: [PATCH 15/44] Interaction Menu - Add setting for animation speed --- addons/interact_menu/ACE_Settings.hpp | 9 +++ addons/interact_menu/functions/fnc_render.sqf | 63 ++++++++----------- .../functions/fnc_renderMenu.sqf | 6 +- addons/interact_menu/stringtable.xml | 6 ++ 4 files changed, 43 insertions(+), 41 deletions(-) diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 381405987c..2d516ee6e3 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -96,4 +96,13 @@ class ACE_Settings { displayName = CSTRING(addBuildingActions); description = CSTRING(addBuildingActionsDescription); }; + class GVAR(menuAnimationSpeed) { + value = 0; + typeName = "SCALAR"; + isClientSettable = 1; + category = CSTRING(Category_InteractionMenu); + displayName = CSTRING(menuAnimationSpeed); + description = CSTRING(menuAnimationSpeed_Description); + values[] = {"$str_speed_normal", "2x", "3x (gotta go fast)"}; + }; }; diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 54f197a2a3..0addd42483 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -14,13 +14,12 @@ BEGIN_COUNTER(fnc_render); -private ["_cursorPos2", "_p1", "_p2", "_forEachIndex", "_x", "_cursorScreenPos", "_closestDistance", "_closestSelection", "_sPos", "_disSq", "_closest", "_cTime", "_delta", "_foundTarget", "_misMatch", "_hoverPath", "_i", "_actionData", "_player", "_target"]; - -_foundTarget = false; +local _foundTarget = false; if (GVAR(openedMenuType) >= 0) then { - // _cursorPos1 = positionCameraToWorld [0, 0, 2]; - _cursorPos2 = positionCameraToWorld [0, 0, 2]; + BEGIN_COUNTER(fnc_renderMenuOpen); + + local _cursorPos2 = positionCameraToWorld [0, 0, 2]; // Render all available nearby interactions call FUNC(renderActionPoints); @@ -30,27 +29,26 @@ if (GVAR(openedMenuType) >= 0) then { [[0.5,0.5], "\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa"] call FUNC(renderSelector); }; - _cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); + local _cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); - _closestDistance = 1000000; - _closestSelection = -1; + local _closestDistance = 1000000; + local _closestSelection = -1; { - _sPos = _x select 1; - _disSq = (((_cursorScreenPos select 0) - (_sPos select 0))^2 + ((_cursorScreenPos select 1) - (_sPos select 1))^2); - if(_disSq < 0.0125 && _disSq < _closestDistance) then { - _closestDistance = _disSq; + _x params ["", "_sPos"]; + local _distanceFromCursor = _cursorScreenPos distance2d _sPos; + if ((_distanceFromCursor < 0.1118) && {_distanceFromCursor < _closestDistance}) then { + _closestDistance = _distanceFromCursor; _closestSelection = _forEachIndex; }; } forEach GVAR(currentOptions); - if(_closestSelection == -1) exitWith {}; - _closest = GVAR(currentOptions) select _closestSelection; + local _closest = GVAR(currentOptions) select _closestSelection; + _closest params ["_action", "_sPos", "_hoverPath"]; - _sPos = _closest select 1; - _cTime = ACE_diagTime; - _delta = _cTime - GVAR(lastTime); + local _cTime = ACE_diagTime; + local _delta = _cTime - GVAR(lastTime); GVAR(lastTime) = _cTime; GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360; @@ -58,28 +56,17 @@ if (GVAR(openedMenuType) >= 0) then { _foundTarget = true; GVAR(actionSelected) = true; - GVAR(selectedAction) = (_closest select 0) select 1; + GVAR(selectedAction) = _action select 1; GVAR(selectedTarget) = (GVAR(selectedAction)) select 2; - _misMatch = false; - _hoverPath = (_closest select 2); + local _misMatch = !(GVAR(lastPath) isEqualTo _hoverPath); - if((count GVAR(lastPath)) != (count _hoverPath)) then { - _misMatch = true; - } else { - { - if !(_x isEqualTo (_hoverPath select _forEachIndex)) exitWith { - _misMatch = true; - }; - } forEach GVAR(lastPath); - }; - - if(_misMatch && {ACE_diagTime-GVAR(expandedTime) > 0.25}) then { + if(_misMatch && {ACE_diagTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { GVAR(startHoverTime) = ACE_diagTime; GVAR(lastPath) = _hoverPath; GVAR(expanded) = false; } else { - if(!GVAR(expanded) && ACE_diagTime-GVAR(startHoverTime) > 0.25) then { + if(!GVAR(expanded) && {ACE_diagTime-GVAR(startHoverTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { GVAR(expanded) = true; // Start the expanding menu animation only if the user is not going up the menu @@ -89,9 +76,8 @@ if (GVAR(openedMenuType) >= 0) then { GVAR(menuDepthPath) = +GVAR(lastPath); // Execute the current action if it's run on hover - private "_runOnHover"; - _tmp = ((GVAR(selectedAction) select 0) select 9) select 3; - _runOnHover = true; + local _tmp = ((GVAR(selectedAction) select 0) select 9) select 3; + local _runOnHover = true; if ((typeName _tmp) == "CODE" ) then { _runOnHover = call _tmp; } else { @@ -103,14 +89,14 @@ if (GVAR(openedMenuType) >= 0) then { }; if (_runOnHover) then { this = GVAR(selectedTarget); - _player = ACE_Player; - _target = GVAR(selectedTarget); + local _player = ACE_Player; + local _target = GVAR(selectedTarget); // Clear the conditions caches ["clearConditionCaches", []] call EFUNC(common,localEvent); // Check the action conditions - _actionData = GVAR(selectedAction) select 0; + local _actionData = GVAR(selectedAction) select 0; if ([_target, _player, _actionData select 6] call (_actionData select 4)) then { // Call the statement [_target, _player, _actionData select 6] call (_actionData select 3); @@ -121,6 +107,7 @@ if (GVAR(openedMenuType) >= 0) then { }; }; }; + END_COUNTER(fnc_renderMenuOpen); }; if(!_foundTarget && GVAR(actionSelected)) then { diff --git a/addons/interact_menu/functions/fnc_renderMenu.sqf b/addons/interact_menu/functions/fnc_renderMenu.sqf index 21c434fe03..8b8ae963d9 100644 --- a/addons/interact_menu/functions/fnc_renderMenu.sqf +++ b/addons/interact_menu/functions/fnc_renderMenu.sqf @@ -101,9 +101,9 @@ if (GVAR(UseListMenu)) then { }; // Animate menu scale -if (_menuInSelectedPath && (_menuDepth == count _path)) then { - _scaleX = _scaleX * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * 8) min 1)); - _scaleY = _scaleY * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * 8) min 1)); +if (_menuInSelectedPath && {_menuDepth == count _path}) then { + _scaleX = _scaleX * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); + _scaleY = _scaleY * (0.3 + 0.7 * (((ACE_diagTime - GVAR(expandedTime)) * linearConversion [0, 2, GVAR(menuAnimationSpeed), 8, 16]) min 1)); }; _target = _actionObject; diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml index 42966c43c1..37da2aa95c 100644 --- a/addons/interact_menu/stringtable.xml +++ b/addons/interact_menu/stringtable.xml @@ -299,5 +299,11 @@ Menu interakce Menú de interacción + + Interaction Animation Speed + + + Makes menu animations faster and decreases the time needed to hover to show sub actions + From 554c303be07b085430fc1892c545b0d35d55acaf Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 20 Oct 2015 13:31:09 -0500 Subject: [PATCH 16/44] InteractionMenu - Auto Expand First Level --- addons/interact_menu/functions/fnc_keyDown.sqf | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf index 8c8ecf0c20..56c0e6e19c 100644 --- a/addons/interact_menu/functions/fnc_keyDown.sqf +++ b/addons/interact_menu/functions/fnc_keyDown.sqf @@ -78,6 +78,21 @@ if (GVAR(useCursorMenu)) then { GVAR(selfMenuOffset) = ((positionCameraToWorld [0, 0, 2]) call EFUNC(common,positionToASL)) vectorDiff ((positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL)); +if (GVAR(menuAnimationSpeed) > 0) then { + //Auto expand the first level when self, mounted vehicle or zeus (skips the first animation as there is only one choice) + if (GVAR(openedMenuType) == 0) then { + if (isNull curatorCamera) then { + if (vehicle ACE_player != ACE_player) then { + GVAR(menuDepthPath) = [["ACE_SelfActions", (vehicle ACE_player)]]; + }; + } else { + GVAR(menuDepthPath) = [["ACE_ZeusActions", (getAssignedCuratorLogic player)]]; + }; + } else { + GVAR(menuDepthPath) = [["ACE_SelfActions", ACE_player]]; + }; +}; + ["interactMenuOpened", [_menuType]] call EFUNC(common,localEvent); true From e2763dde2738d9854316bd6851490a51c201a210 Mon Sep 17 00:00:00 2001 From: kaban Date: Thu, 5 Nov 2015 03:28:53 +0300 Subject: [PATCH 17/44] Russian Translations - Update --- addons/captives/stringtable.xml | 10 ++++---- addons/dragging/stringtable.xml | 1 + addons/map/stringtable.xml | 2 ++ addons/map_gestures/stringtable.xml | 31 ++++++++++++++++++++++++ addons/medical/stringtable.xml | 3 ++- addons/nametags/stringtable.xml | 34 +++++++++++++-------------- addons/optionsmenu/stringtable.xml | 5 ++-- addons/tacticalladder/stringtable.xml | 1 + addons/zeus/stringtable.xml | 6 +++++ 9 files changed, 69 insertions(+), 24 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index d4166a495d..867880bcf2 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -166,7 +166,7 @@ Fazer unidade se render Faire capituler l'unité Egység kapitulálása - Сделать юнита пленным + Заставить юнита сдаться Sync a unit to make them surrender.<br />Source: ace_captives @@ -177,13 +177,15 @@ Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives Synchronise une unité pour la rendre captive. <br/>Source: ace_captives Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives - Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives + Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.<br />Источник: ace_captives Make Unit Handcuffed + Связать юнита Sync a unit to make them handcuffed.<br />Source: ace_captives + Синхронизируйте с юнитами, чтобы сделать их связанными.<br />Источник: ace_captives Captives Settings @@ -284,4 +286,4 @@ Rendición o desarme - + \ No newline at end of file diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml index 417493fc75..be80801e57 100644 --- a/addons/dragging/stringtable.xml +++ b/addons/dragging/stringtable.xml @@ -54,6 +54,7 @@ Heben/Senken Wyżej/Niżej Levantar/Abaixar + Поднять/Опустить \ No newline at end of file diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml index 92547e8632..8eab673caf 100644 --- a/addons/map/stringtable.xml +++ b/addons/map/stringtable.xml @@ -260,11 +260,13 @@ Set Channel At Start Ust. domyślny kanał Definir canal no início + Установить канал на старте Change the starting marker channel at mission start 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/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index fe513a4d49..9c61d59292 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -4,126 +4,157 @@ Map Gestures Gestos no mapa + Указания на карте Enabled Ativado + Включено Map Gesture Max Range Distância para gestos no mapa + Дистанция указаний на карте Max range between players to show the map gesture indicator [default: 7 meters] Distância max. entre os jogadores para mostrar o indicador de gesto no mapa [padrão: 7 metros] + Макс. дистанция между игроками для отображения указаний на карте [по-умолчанию: 7 метров] Lead Default Alpha Transparência padrão do líder + Лид. прозрачность по-умолчанию Fallback Alpha value for group leaders. Valor de transparência alternativo para líderes de grupo + Значение прозрачности для лидеров групп Default Alpha Transparência padrão + Прозрачность по-умолчанию Fallback Alpha value. Valor alternativo de transparência + Значение прозрачности по-умолчанию Lead Default Color Cor padrão para o líder + Лид. цвет по-умолчанию Fallback Color value for group leaders. Valor de cor alternativa para líderes de grupo + Значение цвета для лидеров групп Default Color Cor padrão + Цвет по-умолчанию Fallback Color value. Valor alternativo de cor + Значение цвета Lead Alpha Transparência do líder + Лид. прозрачность Alpha value for group leaders of groups synced with this module. Valor de transparência para líderes de grupo sincronizados com este módulo. + Значение прозрачности для лидеров групп, которые [группы] синхронизированы с этим модулем. Alpha Transparência + Прозрачность Alpha value for group members of groups synced with this module. Valor de transparência para membros de grupo sincronizados com este módulo. + Значение прозрачности для членов групп, которые [группы] синхронизированы с этим модулем. Lead Color Cor do líder + Лид. цвет Color value for group leaders of groups synced with this module. Valor de cor para líderes de grupo sincronizados com este módulo. + Значение цвета для лидеров групп, которые [группы] синхронизированы с этим модулем. Color Cor + Цвет Color value for group members of groups synced with this module. Valor de cor para membros de grupo sincronizados com este módulo. + Значение цвета для членов групп, которые [группы] синхронизированы с этим модулем. Map Gestures - Group Settings Gestos no mapa - Definições de Grupo + Указания на карте - настройки групп Update Interval Intervalo de atualizações + Интервал обновления Time between data updates. Tempo entre atualização de dados + Время между обновлениями данных. Group color configurations Configurações de cores de grupo + Конфигурация цвета групп Group color configuration containing arrays of color pairs ([leadColor, color]). Configuração de cores de grupo contendo arrays com pares de cores ([leadColor, color]). + Конфигурация цвета групп содержит массив цветовых пар ([лид. цвет, цвет]) Hash of Group ID mapped to the Group color configuration index. Hashes de ID de grupos mapeados para o índice de configuração de cor de grupos. + Хеш ID групп, соответствующих индексам конфигурации цвета групп GroupID Color configuration mapping Mapeamento de configuração para cores de GroupID + Соответствие ID групп конфигурации цвета групп Enables the Map Gestures. Ativa os gestos no mapa + Включает указания на карте Name Text Color Cor do texto do nome + Цвет текста позывного Color of the name tag text besides the map gestures mark. Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa. + Цвет позывного за маркером указаний. Map Gestures Gestos no mapa + Указания на карте \ No newline at end of file diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml index 0a75d67583..5c3d03a85d 100644 --- a/addons/medical/stringtable.xml +++ b/addons/medical/stringtable.xml @@ -2111,6 +2111,7 @@ %1 used Personal Aid Kit %1 użył apteczki %1 utilizou KPS + %1 использовал аптечку Heavily wounded @@ -2963,7 +2964,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 diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index d3616d18f4..fdc93ea1d6 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -9,7 +9,7 @@ Zobrazit jména Pokaż imiona Nevek mutatása - Показать имена + Показывать позывные Mostra i nomi Mostrar nomes @@ -23,7 +23,7 @@ Zobrazit jména hráčů Mostrar nomes de jogadores Mostra i nomi dei giocatori - Показывать имена игроков (включить имена) + Показывать позывные игроков (включить позывные) Show player name only on cursor (requires player names) @@ -35,7 +35,7 @@ Mostra i nomi solo se puntati (richiede mostra nomi abilitato) Mostrar nome de jogador somente no cursor (requer nome de jogadores) Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) - Показать имена игроков только под курсором (при включенных именах) + Показать позывные игроков только под курсором (при включенных позывных) Show player name only on keypress (requires player names) @@ -45,7 +45,7 @@ Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) - Показать имена игроков только по нажатию клавиши (при включенных именах) + Показать позывные игроков только по нажатию клавиши (при включенных позывных) Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) @@ -59,7 +59,7 @@ Mostra i gradi (richiede mostra nomi abilitato) Mostrar patente de jogadores (requer nome de jogadores) Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) - Показывать звания игроков (при вкл. именах) + Показывать звания игроков (при вкл. позывных) Show vehicle crew info @@ -89,7 +89,7 @@ Show SoundWaves (requires player names) Schallwellen anzeigen (benötigt Spielernamen) Mostrar onda sonora (requiere Mostrar nombres de jugadores) - Индикатор разговора (при вкл. именах) + Индикатор разговора (при вкл. позывных) Zobrazit SoundWaves (vyžaduje jména hráčů) Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) Afficher "qui parle" (si noms affichés) @@ -100,7 +100,7 @@ Default Nametag Color (Non Group Members) Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) - Цвет меток игроков (не членов групп) + Цвет позывных по-умолчанию (не членов групп) Color de etiquetas de nombre por defecto (No miembros de grupo) Domyślny kolor imion (członkowie spoza grupy) Couleur d'affichage par défaut (si dans aucun groupe) @@ -118,7 +118,7 @@ Etiquetas de nome NameTags Névcímkék - Имена игроков + Позывные Player Names View Dist. @@ -129,7 +129,7 @@ Distância de visão dos nomes dos jogadores Distance de vue des noms de joueurs Játékosok nevének látótávja - Дистанция отображения имен + Дистанция отображения позывных Distance in meters at which player names are shown. Default: 5 @@ -140,7 +140,7 @@ 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 Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 - Дистанция в метрах, на которой отображаются имена игроков. По-умолчанию: 5 + Дистанция в метрах, на которой отображаются позывные игроков. По-умолчанию: 5 Show name tags for AI? @@ -226,7 +226,7 @@ Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não - Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет + Показывать позывной командира техники (только, если клиент включил отображение позывных). По-умолчанию: Нет Afficher les étiquettes de nom pour les commandants de véhicule (uniquement si l'affichage est activé pour le client). Défaut: non @@ -238,7 +238,7 @@ Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. Ce module permet le paramétrage de l'affichage des étiquettes des noms Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. - Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. + Этот модуль позволяет настроить опции и дистанцию отображения позывных. Only on Cursor @@ -315,7 +315,7 @@ Usar ajustes de etiquetas de nome Utiliser les paramètre des NamesTags Névcímkék beállításának használata - Так же, как имена + Так же, как позывные Always Show All @@ -337,7 +337,7 @@ Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado Afficher les noms des joueurs et paramètre son activation. Défaut: activé Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve - Показывать имена игроков и установить их активацию. По-умолчанию: Включено + Показывать позывные игроков и установить их активацию. По-умолчанию: Включено Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. @@ -359,7 +359,7 @@ Tamanho das etiquetas de nome Taille des noms Névcímkék mérete - Размер имен игроков + Размер позывных Text and Icon Size Scaling @@ -373,4 +373,4 @@ Масштабирование размера текста и иконок - + \ No newline at end of file diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml index 6b4cad396b..cd4cc429b0 100644 --- a/addons/optionsmenu/stringtable.xml +++ b/addons/optionsmenu/stringtable.xml @@ -1,4 +1,4 @@ - + @@ -356,6 +356,7 @@ Pošle debug informace do RPT a schránky. Protokolliert Debug-Informationen im RPT und speichert sie in der Zwischenablage. Envia informação de depuração para RPT e área de transferência. + Отправляет отладочную информацию в RPT и буфер обмена. Headbug Fix @@ -415,4 +416,4 @@ Logística - + \ No newline at end of file diff --git a/addons/tacticalladder/stringtable.xml b/addons/tacticalladder/stringtable.xml index 57f03f7600..3d377ed420 100644 --- a/addons/tacticalladder/stringtable.xml +++ b/addons/tacticalladder/stringtable.xml @@ -42,6 +42,7 @@ Ausfahren, +Strg kippen Rozłóż, +Ctrl nachyl Extender, +Ctrl tilt + Разложить, +Ctrl наклонить Position ladder diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml index 0281f0a5a0..b885e1cec1 100644 --- a/addons/zeus/stringtable.xml +++ b/addons/zeus/stringtable.xml @@ -215,18 +215,22 @@ Add Spare Wheel Adicionar roda sobressalente + Добавить запасное колесо Adds a Spare Wheel to the vehicle Adiciona uma roda sobressalente ao veículo + Добавляет запасное колесо в транспорт Add Spare Track Adicionar esteira sobressalente + Дабавить запасную гусеницу Adds a Spare Track to the vehicle Adiciona uma esteira sobressalente ao veículo + Добавляет запасную гусеницу в транспорт Unit must be alive @@ -269,10 +273,12 @@ Unit must be a vehicle with cargo space Unidade deve ser um veículo com espaço em carga + Юнит должен быть транспортом с грузовым отсеком Unit must have cargo space left Unidade deve conter espaço sobressalente + Юнит должен иметь свободное место в грузовом отсеке Unit must not be captive From 59b9e9a7df79cb3575a2af71761f205ff93efbf3 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Thu, 5 Nov 2015 03:45:34 +0300 Subject: [PATCH 18/44] Missing periods added. --- addons/map_gestures/stringtable.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 9c61d59292..0118b4323e 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -29,7 +29,7 @@ Fallback Alpha value for group leaders. Valor de transparência alternativo para líderes de grupo - Значение прозрачности для лидеров групп + Значение прозрачности для лидеров групп. Default Alpha @@ -39,7 +39,7 @@ Fallback Alpha value. Valor alternativo de transparência - Значение прозрачности по-умолчанию + Значение прозрачности по-умолчанию. Lead Default Color @@ -49,7 +49,7 @@ Fallback Color value for group leaders. Valor de cor alternativa para líderes de grupo - Значение цвета для лидеров групп + Значение цвета для лидеров групп. Default Color @@ -59,7 +59,7 @@ Fallback Color value. Valor alternativo de cor - Значение цвета + Значение цвета. Lead Alpha @@ -124,12 +124,12 @@ Group color configuration containing arrays of color pairs ([leadColor, color]). Configuração de cores de grupo contendo arrays com pares de cores ([leadColor, color]). - Конфигурация цвета групп содержит массив цветовых пар ([лид. цвет, цвет]) + Конфигурация цвета групп содержит массив цветовых пар ([лид. цвет, цвет]). Hash of Group ID mapped to the Group color configuration index. Hashes de ID de grupos mapeados para o índice de configuração de cor de grupos. - Хеш ID групп, соответствующих индексам конфигурации цвета групп + Хеш ID групп, соответствующих индексам конфигурации цвета групп. GroupID Color configuration mapping @@ -139,7 +139,7 @@ Enables the Map Gestures. Ativa os gestos no mapa - Включает указания на карте + Включает указания на карте. Name Text Color @@ -157,4 +157,4 @@ Указания на карте - \ No newline at end of file + From e0506f29bc5799b219896d3fed5f051a1e603118 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Nov 2015 20:46:06 -0600 Subject: [PATCH 19/44] Read settings from paramsArray (params in description.ext) for now just limited to SCALAR/BOOL --- addons/common/XEH_postInit.sqf | 3 + addons/common/XEH_preInit.sqf | 1 + .../fnc_readSettingsFromParamsArray.sqf | 64 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 addons/common/functions/fnc_readSettingsFromParamsArray.sqf diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index ac1a162137..66e2e078c6 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -194,6 +194,9 @@ call FUNC(checkFiles); ACE_LOGINFO("Settings received from server."); + if (isServer) then { //read settings from paramsArray + [] call FUNC(readSettingsFromParamsArray); + }; // Event so that ACE_Modules have their settings loaded: ["InitSettingsFromModules", []] call FUNC(localEvent); diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf index a9b10c4896..4c912e98b4 100644 --- a/addons/common/XEH_preInit.sqf +++ b/addons/common/XEH_preInit.sqf @@ -139,6 +139,7 @@ PREP(playerSide); PREP(positionToASL); PREP(progressBar); PREP(readSettingFromModule); +PREP(readSettingsFromParamsArray); PREP(receiveRequest); PREP(removeCanInteractWithCondition); PREP(removeSpecificMagazine); diff --git a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf new file mode 100644 index 0000000000..26d488558b --- /dev/null +++ b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf @@ -0,0 +1,64 @@ +/* + * Author: PabstMirror + * Read settins from paramsArray that have a ACE_setting = 1. + * Happens before modules but after all other configs (for force priority) + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call ace_common_fnc_readSettingsFromParamsArray + * + * Public: No + */ +#include "script_component.hpp" + +//paramsArray is a normal variable not a command +local _paramsArray = missionnamespace getvariable ["paramsArray", []]; + +TRACE_1("Reading missionConfigFile params",_paramsArray); + +{ + local _config = (missionConfigFile >> "params") select _forEachIndex; + if ((getNumber (_config >> "ACE_setting")) > 0) then { + local _settingName = configName _config; + local _settingValue = _x; + local _force = (getNumber (_config >> "force")) > 0; + local _title = getText (_config >> "title"); + + TRACE_4("ace_setting",_title,_settingName,_settingValue,_force); + + // Check if the variable is already defined + if (isNil _settingName) exitWith { + ACE_LOGERROR_1("readSettingsFromParamsArray - param [%1] is not an ace_setting", _settingName); + }; + + local _settingData = [_settingName] call FUNC(getSettingData); + _settingData params ["", "_typeName", "", "", "", "", "_isForced"]; + + // Check if it's already forced and quit + if (_isForced) exitWith {ACE_LOGWARNING_1("readSettingsFromParamsArray - param [%1] is already set and forced", _settingName);}; + + // The setting is not forced, so update the value + // Read entry and cast it to the correct type from the existing variable + _validValue = false; + _value = switch (true) do { + case (_typeName == "SCALAR"): {_validValue = true;}; + case (_typeName == "BOOL"): { + _settingValue = _settingValue > 0; + _validValue = true; + }; + //TODO: Handle ARRAY,COLOR,STRING??? (bool/scalar covers most important settings) + }; + + if (!_validValue) exitWith { + ACE_LOGWARNING_3("readSettingsFromParamsArray - param [%1] type not valid [%2] - expected type [%3]", _settingName,_settingValue,_typeName); + }; + + // Update the variable globaly and Force the setting if requested + [_settingName, _settingValue, _force, true] call FUNC(setSetting); + }; +} foreach _paramsArray; From 826b4fd20b1f4c9e0fae99744c494f8bad3327f2 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 6 Nov 2015 20:53:05 -0600 Subject: [PATCH 20/44] Cleanup --- addons/common/functions/fnc_readSettingsFromParamsArray.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf index 26d488558b..b011c3b380 100644 --- a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf +++ b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf @@ -44,8 +44,8 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); // The setting is not forced, so update the value // Read entry and cast it to the correct type from the existing variable - _validValue = false; - _value = switch (true) do { + local _validValue = false; + switch (true) do { case (_typeName == "SCALAR"): {_validValue = true;}; case (_typeName == "BOOL"): { _settingValue = _settingValue > 0; From 34163b5e56083aa8f4a993ba974552078c95bd55 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sat, 7 Nov 2015 19:54:48 +0300 Subject: [PATCH 21/44] Nametags translations are rolled back --- addons/nametags/stringtable.xml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml index fdc93ea1d6..61a2b3f5a2 100644 --- a/addons/nametags/stringtable.xml +++ b/addons/nametags/stringtable.xml @@ -9,7 +9,7 @@ Zobrazit jména Pokaż imiona Nevek mutatása - Показывать позывные + Показать имена Mostra i nomi Mostrar nomes @@ -23,7 +23,7 @@ Zobrazit jména hráčů Mostrar nomes de jogadores Mostra i nomi dei giocatori - Показывать позывные игроков (включить позывные) + Показывать имена игроков (включить имена) Show player name only on cursor (requires player names) @@ -35,7 +35,7 @@ Mostra i nomi solo se puntati (richiede mostra nomi abilitato) Mostrar nome de jogador somente no cursor (requer nome de jogadores) Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges) - Показать позывные игроков только под курсором (при включенных позывных) + Показать имена игроков только под курсором (при включенных именах) Show player name only on keypress (requires player names) @@ -45,7 +45,7 @@ Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů) Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy) Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges) - Показать позывные игроков только по нажатию клавиши (при включенных позывных) + Показать имена игроков только по нажатию клавиши (при включенных именах) Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato) Mostrar nomes somente ao pressionar teclar (requer nome de jogadores) @@ -59,7 +59,7 @@ Mostra i gradi (richiede mostra nomi abilitato) Mostrar patente de jogadores (requer nome de jogadores) Játékosok rendfokozatának mutatása (a nevek mutatása szükséges) - Показывать звания игроков (при вкл. позывных) + Показывать звания игроков (при вкл. именах) Show vehicle crew info @@ -89,7 +89,7 @@ Show SoundWaves (requires player names) Schallwellen anzeigen (benötigt Spielernamen) Mostrar onda sonora (requiere Mostrar nombres de jugadores) - Индикатор разговора (при вкл. позывных) + Индикатор разговора (при вкл. именах) Zobrazit SoundWaves (vyžaduje jména hráčů) Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy) Afficher "qui parle" (si noms affichés) @@ -100,7 +100,7 @@ Default Nametag Color (Non Group Members) Voreingestellte Namenfarbe (Spieler außerhalb der Gruppe) - Цвет позывных по-умолчанию (не членов групп) + Цвет меток игроков (не членов групп) Color de etiquetas de nombre por defecto (No miembros de grupo) Domyślny kolor imion (członkowie spoza grupy) Couleur d'affichage par défaut (si dans aucun groupe) @@ -118,7 +118,7 @@ Etiquetas de nome NameTags Névcímkék - Позывные + Имена игроков Player Names View Dist. @@ -129,7 +129,7 @@ Distância de visão dos nomes dos jogadores Distance de vue des noms de joueurs Játékosok nevének látótávja - Дистанция отображения позывных + Дистанция отображения имен Distance in meters at which player names are shown. Default: 5 @@ -140,7 +140,7 @@ 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 Méterben megadott érték a játékosok nevének mutatására. Alapértelmezett: 5 - Дистанция в метрах, на которой отображаются позывные игроков. По-умолчанию: 5 + Дистанция в метрах, на которой отображаются имена игроков. По-умолчанию: 5 Show name tags for AI? @@ -226,7 +226,7 @@ Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein Zobrazit jmenovky pro velitele vozidla (pouze pokud má klient jmenovky povolené). Výchozí: Ne Mostrar o nome no cursor para o comandante do veículo (somente se o cliente tiver etiquetas de nomes ativada). Padrão: Não - Показывать позывной командира техники (только, если клиент включил отображение позывных). По-умолчанию: Нет + Показывать имя командира техники (только, если клиент включил отображение имен). По-умолчанию: Нет Afficher les étiquettes de nom pour les commandants de véhicule (uniquement si l'affichage est activé pour le client). Défaut: non @@ -238,7 +238,7 @@ Este módulo permite que você personalize as configurações e distâncias de etiquetas de nome. Ce module permet le paramétrage de l'affichage des étiquettes des noms Ez a modul lehetővé teszi a névcímkék beállításainak testreszabását. - Этот модуль позволяет настроить опции и дистанцию отображения позывных. + Этот модуль позволяет настроить опции и дистанцию отображения имен игроков. Only on Cursor @@ -315,7 +315,7 @@ Usar ajustes de etiquetas de nome Utiliser les paramètre des NamesTags Névcímkék beállításának használata - Так же, как позывные + Так же, как имена Always Show All @@ -337,7 +337,7 @@ Mostrar os nomes dos jogadores e definir sua ativação. Padrão: Ativado Afficher les noms des joueurs et paramètre son activation. Défaut: activé Mutassa a játékosok nevét és kezelje az aktivációjukat. Alapértelmezett: Engedélyezve - Показывать позывные игроков и установить их активацию. По-умолчанию: Включено + Показывать имена игроков и установить их активацию. По-умолчанию: Включено Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2. @@ -359,7 +359,7 @@ Tamanho das etiquetas de nome Taille des noms Névcímkék mérete - Размер позывных + Размер имен игроков Text and Icon Size Scaling @@ -373,4 +373,4 @@ Масштабирование размера текста и иконок - \ No newline at end of file + From 2dd90824aa9a80c21ba9f1389d549adb99eab997 Mon Sep 17 00:00:00 2001 From: "[OMCB]kaban" Date: Sun, 8 Nov 2015 02:52:16 +0300 Subject: [PATCH 22/44] Map Gestures translations update --- addons/map_gestures/stringtable.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/addons/map_gestures/stringtable.xml b/addons/map_gestures/stringtable.xml index 0118b4323e..1555307e90 100644 --- a/addons/map_gestures/stringtable.xml +++ b/addons/map_gestures/stringtable.xml @@ -4,7 +4,7 @@ Map Gestures Gestos no mapa - Указания на карте + Жесты на карте Enabled @@ -14,12 +14,12 @@ Map Gesture Max Range Distância para gestos no mapa - Дистанция указаний на карте + Макс. дистанция жестов на карте Max range between players to show the map gesture indicator [default: 7 meters] Distância max. entre os jogadores para mostrar o indicador de gesto no mapa [padrão: 7 metros] - Макс. дистанция между игроками для отображения указаний на карте [по-умолчанию: 7 метров] + Макс. дистанция между игроками для отображения жестов на карте [по-умолчанию: 7 метров] Lead Default Alpha @@ -104,7 +104,7 @@ Map Gestures - Group Settings Gestos no mapa - Definições de Grupo - Указания на карте - настройки групп + Жесты на карте - настройки групп Update Interval @@ -144,17 +144,17 @@ Name Text Color Cor do texto do nome - Цвет текста позывного + Цвет текста имени Color of the name tag text besides the map gestures mark. Cor do texto da etiqueta de nome que fica embaixo da marcação de gestos no mapa. - Цвет позывного за маркером указаний. + Цвет инмени игрока рядом с маркером жестов. Map Gestures Gestos no mapa - Указания на карте + Жесты на карте From 5b16638ae5998a0330ce195eec7501df54f2e34f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Sun, 8 Nov 2015 11:22:41 -0600 Subject: [PATCH 23/44] Always force param settings --- .../common/functions/fnc_readSettingsFromParamsArray.sqf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf index b011c3b380..a8b0299a15 100644 --- a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf +++ b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf @@ -26,10 +26,9 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); if ((getNumber (_config >> "ACE_setting")) > 0) then { local _settingName = configName _config; local _settingValue = _x; - local _force = (getNumber (_config >> "force")) > 0; local _title = getText (_config >> "title"); - TRACE_4("ace_setting",_title,_settingName,_settingValue,_force); + TRACE_3("ace_setting",_title,_settingName,_settingValue); // Check if the variable is already defined if (isNil _settingName) exitWith { @@ -58,7 +57,7 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); ACE_LOGWARNING_3("readSettingsFromParamsArray - param [%1] type not valid [%2] - expected type [%3]", _settingName,_settingValue,_typeName); }; - // Update the variable globaly and Force the setting if requested - [_settingName, _settingValue, _force, true] call FUNC(setSetting); + // Update the variable globaly and Force + [_settingName, _settingValue, true, true] call FUNC(setSetting); }; } foreach _paramsArray; From 9d2d5b9c7c477967e38f5ae23acf34ddfe053459 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 11 Nov 2015 01:58:12 -0600 Subject: [PATCH 24/44] AdvanBalls - Fix ACE_twistDirection --- .../functions/fnc_readWeaponDataFromConfig.sqf | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf b/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf index 8e13dc04dc..ec6f3a6212 100644 --- a/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf +++ b/addons/advanced_ballistics/functions/fnc_readWeaponDataFromConfig.sqf @@ -20,9 +20,11 @@ _weaponConfig = (configFile >> "CfgWeapons" >> _this); _barrelTwist = getNumber(_weaponConfig >> "ACE_barrelTwist"); _twistDirection = 1; -_twistDirection = getNumber(_weaponConfig >> "ACE_twistDirection"); -if !(_twistDirection in [-1, 0, 1]) then { - _twistDirection = 1; +if (isNumber (_weaponConfig >> "ACE_twistDirection")) then { + _twistDirection = getNumber (_weaponConfig >> "ACE_twistDirection"); + if !(_twistDirection in [-1, 0, 1]) then { + _twistDirection = 1; + }; }; _barrelLength = getNumber(_weaponConfig >> "ACE_barrelLength"); From 391bfc160a1f2f75d19fce9c9424f08816e41ff7 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 11 Nov 2015 13:24:27 -0600 Subject: [PATCH 25/44] Overpresure - Misc fixes - Fix passing magazine/ammo to overpressure event - Use AGL for nearEntities - Fix getDistance returning nil --- .../functions/fnc_fireLauncherBackblast.sqf | 4 ++-- .../functions/fnc_fireOverpressureZone.sqf | 2 +- addons/overpressure/functions/fnc_getDistance.sqf | 10 ++++++---- .../overpressure/functions/fnc_overpressureDamage.sqf | 8 +------- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 1653fce9e1..672031676e 100644 --- a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf +++ b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf @@ -41,10 +41,10 @@ _var params["_backblastAngle","_backblastRange","_backblastDamage"]; // Damage to others private "_affected"; -_affected = getPos _projectile nearEntities ["CAManBase", _backblastRange]; +_affected = (ASLtoAGL _position) nearEntities ["CAManBase", _backblastRange]; // Let each client handle their own affected units -["overpressure", _affected, [_firer, _position, _direction, _weapon]] call EFUNC(common,targetEvent); +["overpressure", _affected, [_firer, _position, _direction, _weapon, _magazine, _ammo]] call EFUNC(common,targetEvent); // Damage to the firer private "_distance"; diff --git a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf index 3068928ba4..02de0eb311 100644 --- a/addons/overpressure/functions/fnc_fireOverpressureZone.sqf +++ b/addons/overpressure/functions/fnc_fireOverpressureZone.sqf @@ -40,7 +40,7 @@ _var params["_dangerZoneAngle","_dangerZoneRange","_dangerZoneDamage"]; // Damage to others private "_affected"; -_affected = getPos _projectile nearEntities ["CAManBase", _dangerZoneRange]; +_affected = (ASLtoAGL _position) nearEntities ["CAManBase", _dangerZoneRange]; // Let each client handle their own affected units ["overpressure", _affected, [_firer, _position, _direction, _weapon, _magazine, _ammo]] call EFUNC(common,targetEvent); diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 3b3103d951..6c5a5e6500 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -13,7 +13,8 @@ */ #include "script_component.hpp" -EXPLODE_3_PVT(_this,_posASL,_direction,_maxDistance); +params ["_posASL", "_direction", "_maxDistance"]; +TRACE_3("params",_posASL,_direction,_maxDistance); private ["_distance", "_interval", "_line", "_intersections", "_terrainIntersect", "_lastTerrainIntersect"]; @@ -42,20 +43,21 @@ while { }; _distance = _distance + ([1, -1] select (_intersections > 0 || _terrainIntersect)) * _interval; - if (_distance > _maxDistance) exitWith {_distance = 999}; }; +TRACE_4("while done",_distance,_maxDistance,_terrainIntersect,_lastTerrainIntersect); + if (_distance > _maxDistance) exitWith {_distance}; // If the intersection was with the terrain, check slope -if (_terrainIntersect || _lastTerrainIntersect) exitWith { +if (_terrainIntersect || _lastTerrainIntersect) then { private ["_slope","_angle"]; _slope = surfaceNormal (_posASL vectorAdd (_direction vectorMultiply _distance)); // Calculate the angle between the terrain and the back blast direction _angle = 90 - acos (- (_slope vectorDotProduct _direction)); - //systemChat format ["Angle: %1", _angle]; + TRACE_3("Terrain Intersect",_slope,_direction,_angle); // Angles is below 25º, no backblast at all if (_angle < 25) exitWith {_distance = 999}; // Angles is below 45º the distance is increased according to the difference diff --git a/addons/overpressure/functions/fnc_overpressureDamage.sqf b/addons/overpressure/functions/fnc_overpressureDamage.sqf index a39aec3c14..f9c58050e0 100644 --- a/addons/overpressure/functions/fnc_overpressureDamage.sqf +++ b/addons/overpressure/functions/fnc_overpressureDamage.sqf @@ -30,12 +30,6 @@ _var params["_overpressureAngle","_overpressureRange","_overpressureDamage"]; TRACE_4("Parameters:",_overpressureAngle,_overpressureRange,_overpressureDamage,_weapon); -private "_pos"; -_pos = _posASL; -if (!surfaceIsWater _pos) then { - _pos = ASLtoATL _pos; -}; - { if (local _x && {_x != _firer} && {vehicle _x == _x}) then { private ["_targetPositionASL", "_relativePosition", "_axisDistance", "_distance", "_angle", "_line", "_line2"]; @@ -68,4 +62,4 @@ if (!surfaceIsWater _pos) then { }; }; }; -} forEach (_pos nearEntities ["CAManBase", _overpressureRange]); +} forEach ((ASLtoAGL _posASL) nearEntities ["CAManBase", _overpressureRange]); From 9b2c79e7e117876fe8196a95feb7a6ba4cbd9c96 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Wed, 11 Nov 2015 14:12:42 -0600 Subject: [PATCH 26/44] getDistance - use lineIntersectsSurfaces --- .../functions/fnc_fireLauncherBackblast.sqf | 2 +- .../functions/fnc_getDistance.sqf | 71 +++++++------------ 2 files changed, 28 insertions(+), 45 deletions(-) diff --git a/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf b/addons/overpressure/functions/fnc_fireLauncherBackblast.sqf index 672031676e..e457e023c6 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] call FUNC(getDistance); +_distance = [_position, _direction, _backblastRange, _firer] call FUNC(getDistance); TRACE_1("Distance",_distance); diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index 6c5a5e6500..a583700127 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -7,62 +7,45 @@ * 0: Pos ASL of origin (ARRAY> * 1: Direction * 2: Max distance to search + * 3: Shooter * * Return value: - * Distance to intersection (+- 0.1 m) + * Distance to intersection (999 if distance is greater than max) + * + * Example: + * [[1823.41,5729.05,6.66627], [-0.953255,0.109689,-0.281554], 15, ace_player] call ace_overpressure_fnc_getDistance + * */ #include "script_component.hpp" -params ["_posASL", "_direction", "_maxDistance"]; +params ["_posASL", "_direction", "_maxDistance", "_shooter"]; TRACE_3("params",_posASL,_direction,_maxDistance); -private ["_distance", "_interval", "_line", "_intersections", "_terrainIntersect", "_lastTerrainIntersect"]; +local _intersections = lineIntersectsSurfaces [_posASL, _posASL vectorAdd (_direction vectorMultiply _maxDistance), _shooter, objNull, true, 99]; -_distance = _maxDistance; -_interval = _distance; -_line = [_posASL, []]; -_terrainIntersect = false; -_lastTerrainIntersect = false; +TRACE_1("lineIntersectsSurfaces",_intersections); -while { - _interval > 0.1 -} do { - _lastTerrainIntersect = _terrainIntersect; - _interval = _interval / 2; +local _distance = 999; - _line set [1, _posASL vectorAdd (_direction vectorMultiply _distance)]; +{ + _x params ["_intersectPosASL", "_surfaceNormal", "_intersectObject"]; - _intersections = { - _x isKindOf "Static" || {_x isKindOf "AllVehicles"} - } count (lineIntersectsWith _line); + //Hit something solid that can reflect - (Static covers Building) + if ((isNull _intersectObject) || {(_intersectObject isKindOf "Static") || {_intersectObject isKindOf "AllVehicles"}}) exitWith { + _distance = _posASL vectorDistance _intersectPosASL; + TRACE_3("hit solid object",_distance,_intersectObject,typeOf _intersectObject); - _terrainIntersect = if (_intersections > 0) then { - false - } else { - terrainIntersectASL _line + if (isNull _intersectObject) then { //Terrain: + // Calculate the angle between the terrain and the back blast direction + _angle = 90 - acos (- (_surfaceNormal vectorDotProduct _direction)); + TRACE_3("Terrain Intersect",_surfaceNormal,_direction,_angle); + // Angles is below 25deg, no backblast at all + if (_angle < 25) exitWith {_distance = 999}; + // Angles is below 45deg the distance is increased according to the difference + if (_angle < 45) exitWith {_distance = _distance * (5 - 4 * sqrt ((_angle - 25)/20))}; + // Angles above 45degcreate full backblast + }; }; - - _distance = _distance + ([1, -1] select (_intersections > 0 || _terrainIntersect)) * _interval; - if (_distance > _maxDistance) exitWith {_distance = 999}; -}; - -TRACE_4("while done",_distance,_maxDistance,_terrainIntersect,_lastTerrainIntersect); - -if (_distance > _maxDistance) exitWith {_distance}; - -// If the intersection was with the terrain, check slope -if (_terrainIntersect || _lastTerrainIntersect) then { - private ["_slope","_angle"]; - _slope = surfaceNormal (_posASL vectorAdd (_direction vectorMultiply _distance)); - // Calculate the angle between the terrain and the back blast direction - _angle = 90 - acos (- (_slope vectorDotProduct _direction)); - - TRACE_3("Terrain Intersect",_slope,_direction,_angle); - // Angles is below 25º, no backblast at all - if (_angle < 25) exitWith {_distance = 999}; - // Angles is below 45º the distance is increased according to the difference - if (_angle < 45) exitWith {_distance = _distance * (5 - 4 * sqrt ((_angle - 25)/20))}; - // Angles above 45º create full backblast -}; +} forEach _intersections; _distance From c3e6990d00ad5a5f79ae5edb939bca6500cb6309 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 12 Nov 2015 01:06:29 -0600 Subject: [PATCH 27/44] #2528 (6) - Move bandage log before basic exit In advanced medical without enableFor AI. Bandaging an AI would exit before adding log. --- addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf index aa3669c227..cf18475866 100644 --- a/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf +++ b/addons/medical/functions/fnc_treatmentAdvanced_bandage.sqf @@ -19,6 +19,9 @@ #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 + if !([_target] call FUNC(hasMedicalEnabled)) exitwith { _this call FUNC(treatmentBasic_bandage); }; @@ -30,7 +33,4 @@ if !([_target] call FUNC(hasMedicalEnabled)) exitwith { }; }foreach _items;*/ -[_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 - true; From a621eaab2468d53c3c72c9e768edb6b57caf0c54 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 13 Nov 2015 02:57:06 -0600 Subject: [PATCH 28/44] #2750 - Update FCS display after distance adjust --- addons/fcs/functions/fnc_keyUp.sqf | 8 ++++++++ addons/fcs/functions/script_component.hpp | 13 +------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/addons/fcs/functions/fnc_keyUp.sqf b/addons/fcs/functions/fnc_keyUp.sqf index 1b2443b44a..37390c0b47 100644 --- a/addons/fcs/functions/fnc_keyUp.sqf +++ b/addons/fcs/functions/fnc_keyUp.sqf @@ -210,3 +210,11 @@ if(_playSound) 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 { + ((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/script_component.hpp b/addons/fcs/functions/script_component.hpp index 8ada0f7a71..179c66c15e 100644 --- a/addons/fcs/functions/script_component.hpp +++ b/addons/fcs/functions/script_component.hpp @@ -1,12 +1 @@ -#define COMPONENT fcs -#include "\z\ace\addons\main\script_mod.hpp" - -#ifdef DEBUG_ENABLED_FCS - #define DEBUG_MODE_FULL -#endif - -#ifdef DEBUG_SETTINGS_FCS - #define DEBUG_SETTINGS DEBUG_SETTINGS_FCS -#endif - -#include "\z\ace\addons\main\script_macros.hpp" +#include "\z\ace\addons\fcs\script_component.hpp" \ No newline at end of file From cf368f240f7da1d1b8e60d92d0923c7909596ac3 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Fri, 13 Nov 2015 12:59:46 +0000 Subject: [PATCH 29/44] Remove ear ringing upon spectator entry Volume updating was disabled, however any existing ringing would persist. Setting the volume to 0 should make the hearing PFH stop playing sound. --- addons/spectator/functions/fnc_setSpectator.sqf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index 66344e69c6..e8ab031ea4 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -30,7 +30,10 @@ if (!hasInterface) exitWith {}; if (_set isEqualTo GVAR(isSet)) exitwith {}; // Handle common addon audio -if (["ace_hearing"] call EFUNC(common,isModLoaded)) then {EGVAR(hearing,disableVolumeUpdate) = _set}; +if (["ace_hearing"] call EFUNC(common,isModLoaded)) then { + EGVAR(hearing,disableVolumeUpdate) = _set; + EGVAR(hearing,deafnessDV) = 0; +}; if (["acre_sys_radio"] call EFUNC(common,isModLoaded)) then {[_set] call acre_api_fnc_setSpectator}; if (["task_force_radio"] call EFUNC(common,isModLoaded)) then {[player, _set] call TFAR_fnc_forceSpectator}; From 6ebd76ff2fbd54adfba52a82f3fa1e0c2433b19a Mon Sep 17 00:00:00 2001 From: Jonathan Pereira Date: Sat, 14 Nov 2015 12:24:01 -0200 Subject: [PATCH 30/44] Added PT-BR translations to Cargo --- addons/cargo/stringtable.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/addons/cargo/stringtable.xml b/addons/cargo/stringtable.xml index 6902a1aae1..4b33f9826b 100644 --- a/addons/cargo/stringtable.xml +++ b/addons/cargo/stringtable.xml @@ -97,15 +97,19 @@ Loading Cargo + Carregando carga Unloading Cargo + Descarregando carga %1<br/>could not be loaded + %1<br/>não pode ser carregado %1<br/>could not be unloaded + %1<br/>não pode ser descarregado - + \ No newline at end of file From e008f87fb8254290d45f2e8dcb855c7ee1d56e15 Mon Sep 17 00:00:00 2001 From: BaerMitUmlaut Date: Mon, 16 Nov 2015 19:00:02 +0100 Subject: [PATCH 31/44] Cleanup ambience sound module --- .../functions/fnc_moduleAmbianceSound.sqf | 54 +++++++++---------- 1 file changed, 25 insertions(+), 29 deletions(-) diff --git a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf index 70ef644384..26f605e347 100644 --- a/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf +++ b/addons/missionmodules/functions/fnc_moduleAmbianceSound.sqf @@ -18,10 +18,8 @@ #include "script_component.hpp" -private ["_logic", "_units", "_activated","_ambianceSounds", "_soundFiles", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_allUnits", "_newPos", "_targetUnit", "_soundToPlay", "_soundPath", "_unparsedSounds", "_list", "_splittedList", "_nilCheckPassedList"]; -_logic = [_this,0,objNull,[objNull]] call BIS_fnc_param; -_units = [_this,1,[],[[]]] call BIS_fnc_param; -_activated = [_this,2,true,[true]] call BIS_fnc_param; +private ["_ambianceSounds", "_minimalDistance","_maximalDistance", "_minimalDistance", "_maxDelayBetweenSounds", "_missionRoot", "_unparsedSounds", "_splittedList", "_soundPath"]; +params ["_logic", "_units", "_activated"]; // We only play this on the locality of the logic, since the sounds are broadcasted across the network if (_activated && local _logic) then { @@ -34,51 +32,49 @@ if (_activated && local _logic) then { _volume = (_logic getVariable ["soundVolume", 30]) max 1; _followPlayers = _logic getVariable ["followPlayers", false]; - _splittedList = [_unparsedSounds, ","] call BIS_fnc_splitString; + _splittedList = _unparsedSounds splitString ","; + _missionRoot = str missionConfigFile select [0, count str missionConfigFile - 15]; - _nilCheckPassedList = ""; { _x = [_x] call EFUNC(common,stringRemoveWhiteSpace); - _splittedList set [_forEachIndex, _x]; - }forEach _splittedList; - _soundPath = [(str missionConfigFile), 0, -15] call BIS_fnc_trimString; - { if (isClass (missionConfigFile >> "CfgSounds" >> _x)) then { - _ambianceSounds pushBack (_soundPath + (getArray(missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0)); + // CfgSounds accepts a leading backslash, but a double backslash + // is not accepted in the path, so we have to filter that. + _soundPath = getArray (missionConfigFile >> "CfgSounds" >> _x >> "sound") select 0; + if (_soundPath select [0,1] == "\") then { + _ambianceSounds pushBack (_missionRoot + (_soundPath select [1])); + } else { + _ambianceSounds pushBack (_missionRoot + _soundPath); + }; } else { if (isClass (configFile >> "CfgSounds" >> _x)) then { _ambianceSounds pushBack ((getArray(configFile >> "CfgSounds" >> _x >> "sound") select 0)); + } else { + ACE_LOGERROR_1("Ambient Sounds: Sound ""%1"" not found.",_x); }; }; - }forEach _splittedList; + + false + } count _splittedList; if (count _ambianceSounds == 0) exitWith {}; { - if !([".", _x, true] call BIS_fnc_inString) then { + if ((_x find ".") == -1) then { _ambianceSounds set [_forEachIndex, _x + ".wss"]; }; - }forEach _ambianceSounds; + } forEach _ambianceSounds; [{ - private ["_args", "_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers","_lastTimePlayed", "_newPos"]; - _args = _this select 0; - _logic = _args select 0; - _minDelayBetweensounds = _args select 4; - _maxDelayBetweenSounds = _args select 5; - _lastTimePlayed = _args select 8; + private ["_newPos", "_allUnits", "_targetUnit"]; + params ["_args", "_pfhHandle"]; + _args params ["_logic", "_ambianceSounds", "_minimalDistance", "_maximalDistance", "_minDelayBetweensounds", "_maxDelayBetweenSounds", "_volume", "_followPlayers", "_lastTimePlayed"]; if (!alive _logic) exitWith { - [(_this select 1)] call cba_fnc_removePerFrameHandler; + [_pfhHandle] call cba_fnc_removePerFrameHandler; }; if (ACE_time - _lastTimePlayed >= ((_minDelayBetweensounds + random(_maxDelayBetweenSounds)) min _maxDelayBetweenSounds)) then { - _ambianceSounds = _args select 1; - _minimalDistance = _args select 2; - _maximalDistance = _args select 3; - - _volume = _args select 6; - _followPlayers = _args select 7; // Find all players in session. _allUnits = if (isMultiplayer) then {playableUnits} else {[ACE_player]}; @@ -87,7 +83,7 @@ if (_activated && local _logic) then { if (count _allUnits > 0) then { // Select a target unit at random. - _targetUnit = _allUnits select (round(random((count _allUnits)-1))); + _targetUnit = _allUnits call BIS_fnc_selectRandom; // find the position from which we are going to play this sound from. _newPos = (getPos _targetUnit); @@ -112,7 +108,7 @@ if (_activated && local _logic) then { // If no unit is to close to this position, we will play the sound. if ({(_newPos distance _x < (_minimalDistance / 2))}count _allUnits == 0) then { - playSound3D [_ambianceSounds select (round(random((count _ambianceSounds)-1))), ObjNull, false, _newPos, _volume, 1, 1000]; + playSound3D [_ambianceSounds call BIS_fnc_selectRandom, objNull, false, _newPos, _volume, 1, 1000]; _args set [8, ACE_time]; }; }; From 23e110d7ce1d75b18360a64afe6683a32f26c7dd Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Tue, 17 Nov 2015 15:26:34 +0000 Subject: [PATCH 32/44] Remove depreciated spectator hotkey --- addons/spectator/UI/interface.hpp | 1 - .../functions/fnc_handleInterface.sqf | 19 ------------------- .../spectator/functions/fnc_setSpectator.sqf | 2 -- addons/spectator/stringtable.xml | 8 -------- 4 files changed, 30 deletions(-) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index e8bc6c210f..409df7ef71 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -191,7 +191,6 @@ class GVAR(interface) { }; multiselectEnabled = 0; onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface)); - onTreeSelChanged = QUOTE([ARR_2('onTreeSelChanged',_this)] call FUNC(handleInterface)); }; class unitFrame: RscFrame { x = 0; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index dcba11d2ec..def736675e 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -62,7 +62,6 @@ switch (toLower _mode) do { [localize LSTRING(freeCamPan),"RMB (Hold)"], [localize LSTRING(freeCamDolly),"LMB (Hold)"], [localize LSTRING(freeCamBoost),"Shift (Hold)"], - [localize LSTRING(freeCamFocus),"F"], [localize LSTRING(attributeControls),""], [localize LSTRING(nextCam),"Up Arrow"], [localize LSTRING(prevCam),"Down Arrow"], @@ -126,7 +125,6 @@ switch (toLower _mode) do { GVAR(heldKeys) resize 255; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; - GVAR(treeSel) = objNull; }; // Mouse events case "onmousebuttondown": { @@ -226,14 +224,6 @@ switch (toLower _mode) do { case 32: { // D GVAR(camDolly) set [0, GVAR(camSpeed) * ([1, 2] select _shift)]; }; - case 33: { // F - private ["_sel","_vector"]; - _sel = GVAR(treeSel); - if ((GVAR(camMode) == 0) && {!isNull _sel} && {_sel in GVAR(unitList)}) then { - _vector = (positionCameraToWorld [0,0,0]) vectorDiff (positionCameraToWorld [0,0,25]); - [nil,nil,nil,(getPosATL _sel) vectorAdd _vector] call FUNC(setCameraAttributes); - }; - }; case 44: { // Z GVAR(camBoom) = -0.5 * GVAR(camSpeed) * ([1, 2] select _shift); }; @@ -335,15 +325,6 @@ switch (toLower _mode) do { [_newMode,_newUnit] call FUNC(transitionCamera); }; }; - case "ontreeselchanged": { - _args params ["_tree","_sel"]; - - if (count _sel == 3) then { - GVAR(treeSel) = objectFromNetId (_tree tvData _sel); - } else { - GVAR(treeSel) = objNull; - }; - }; case "onunitsupdate": { _args params ["_tree"]; private ["_cachedUnits","_cachedGrps","_cachedSides","_s","_g","_grp","_u","_unit","_side"]; diff --git a/addons/spectator/functions/fnc_setSpectator.sqf b/addons/spectator/functions/fnc_setSpectator.sqf index e8ab031ea4..065ca0079b 100644 --- a/addons/spectator/functions/fnc_setSpectator.sqf +++ b/addons/spectator/functions/fnc_setSpectator.sqf @@ -49,7 +49,6 @@ if (_set) then { GVAR(heldKeys) resize 255; GVAR(mouse) = [false,false]; GVAR(mousePos) = [0.5,0.5]; - GVAR(treeSel) = objNull; // Update units before opening to support pre-set camera unit [] call FUNC(updateUnits); @@ -133,7 +132,6 @@ if (_set) then { GVAR(heldKeys) = nil; GVAR(mouse) = nil; GVAR(mousePos) = nil; - GVAR(treeSel) = nil; // Reset nametag settings if (["ace_nametags"] call EFUNC(common,isModLoaded)) then { diff --git a/addons/spectator/stringtable.xml b/addons/spectator/stringtable.xml index 00d50e4704..d8c7cd1310 100644 --- a/addons/spectator/stringtable.xml +++ b/addons/spectator/stringtable.xml @@ -344,14 +344,6 @@ Ускорение камеры Aumento de velocidad - - Focus on Unit - Skup na jednostce - Focar na unidade - Фокус на юните - Zaměřit se na Jednotku - Centrarse en la unidad - Interface Interfejs From a57d1bca75737479cb9617eb937cba1a1cc1895b Mon Sep 17 00:00:00 2001 From: commy2 Date: Tue, 17 Nov 2015 17:43:07 +0100 Subject: [PATCH 33/44] replace local keyword with private --- addons/captives/functions/fnc_setHandcuffed.sqf | 4 ++-- addons/captives/functions/fnc_setSurrendered.sqf | 4 ++-- addons/common/XEH_postInit.sqf | 4 ++-- addons/common/functions/fnc_dumpArray.sqf | 2 +- addons/common/functions/fnc_getTurretIndex.sqf | 2 +- addons/common/functions/fnc_hasHatch.sqf | 8 ++++---- addons/common/functions/fnc_selectWeaponMode.sqf | 2 +- addons/common/functions/fnc_setAllGear.sqf | 2 +- addons/common/functions/fnc_timePFH.sqf | 6 +++--- addons/goggles/XEH_postInit.sqf | 2 +- addons/goggles/functions/fnc_applyDirtEffect.sqf | 2 +- addons/goggles/functions/fnc_applyDustEffect.sqf | 2 +- addons/goggles/functions/fnc_applyRainEffect.sqf | 2 +- addons/goggles/functions/fnc_applyRotorWashEffect.sqf | 2 +- addons/goggles/functions/fnc_handleFired.sqf | 2 +- addons/goggles/functions/fnc_isDivingGoggles.sqf | 2 +- addons/goggles/functions/fnc_isInRotorWash.sqf | 4 ++-- addons/interaction/XEH_postInit.sqf | 2 +- addons/logistics_wirecutter/functions/fnc_isFence.sqf | 4 ++-- addons/medical/functions/fnc_translateSelections.sqf | 2 +- addons/medical_menu/XEH_postInit.sqf | 2 +- addons/medical_menu/functions/fnc_updateBodyImage.sqf | 2 +- addons/reload/functions/fnc_canCheckAmmo.sqf | 2 +- addons/respawn/functions/fnc_restoreGear.sqf | 2 +- 24 files changed, 34 insertions(+), 34 deletions(-) diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf index 0bc2e85c52..a4788db057 100644 --- a/addons/captives/functions/fnc_setHandcuffed.sqf +++ b/addons/captives/functions/fnc_setHandcuffed.sqf @@ -56,7 +56,7 @@ if (_state) then { //Adds an animation changed eh //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) - local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; + private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; if (_animChangedEHID != -1) then { TRACE_1("removing animChanged EH",_animChangedEHID); _unit removeEventHandler ["AnimChanged", _animChangedEHID]; @@ -92,7 +92,7 @@ if (_state) then { [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus); //remove AnimChanged EH - local _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; + private _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1]; TRACE_1("removing animChanged EH",_animChangedEHID); _unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit setVariable [QGVAR(handcuffAnimEHID), -1]; diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf index 171455f3b1..5af4454472 100644 --- a/addons/captives/functions/fnc_setSurrendered.sqf +++ b/addons/captives/functions/fnc_setSurrendered.sqf @@ -48,7 +48,7 @@ if (_state) then { if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then { //Adds an animation changed eh //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain) - local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1]; + private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1]; if (_animChangedEHID != -1) then { TRACE_1("removing animChanged EH",_animChangedEHID); _unit removeEventHandler ["AnimChanged", _animChangedEHID]; @@ -68,7 +68,7 @@ if (_state) then { [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus); //remove AnimChanged EH - local _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1]; + private _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1]; _unit removeEventHandler ["AnimChanged", _animChangedEHID]; _unit setVariable [QGVAR(surrenderAnimEHID), -1]; diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf index 032b6148be..2c4a78254a 100644 --- a/addons/common/XEH_postInit.sqf +++ b/addons/common/XEH_postInit.sqf @@ -13,7 +13,7 @@ //Handle the waitAndExec array: while {!(GVAR(waitAndExecArray) isEqualTo []) && {GVAR(waitAndExecArray) select 0 select 0 <= ACE_Time}} do { - local _entry = GVAR(waitAndExecArray) deleteAt 0; + private _entry = GVAR(waitAndExecArray) deleteAt 0; (_entry select 2) call (_entry select 1); }; @@ -29,7 +29,7 @@ GVAR(nextFrameNo) = diag_frameno + 1; //Handle the waitUntilAndExec array: - local _deleted = 0; + private _deleted = 0; { // if condition is satisifed call statement if ((_x select 2) call (_x select 0)) then { diff --git a/addons/common/functions/fnc_dumpArray.sqf b/addons/common/functions/fnc_dumpArray.sqf index 010736d3a9..026b08501e 100644 --- a/addons/common/functions/fnc_dumpArray.sqf +++ b/addons/common/functions/fnc_dumpArray.sqf @@ -18,7 +18,7 @@ params ["_var", ["_depth", 0, [0]]]; -local _pad = ""; +private _pad = ""; for "_i" from 0 to _depth do { _pad = _pad + toString [9]; diff --git a/addons/common/functions/fnc_getTurretIndex.sqf b/addons/common/functions/fnc_getTurretIndex.sqf index 050f3e1c4f..20ee178bf1 100644 --- a/addons/common/functions/fnc_getTurretIndex.sqf +++ b/addons/common/functions/fnc_getTurretIndex.sqf @@ -17,7 +17,7 @@ params ["_unit"]; -local _vehicle = vehicle _unit; +private _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {[]}; scopeName "main"; diff --git a/addons/common/functions/fnc_hasHatch.sqf b/addons/common/functions/fnc_hasHatch.sqf index 124eed78a5..a67ad0b0d3 100644 --- a/addons/common/functions/fnc_hasHatch.sqf +++ b/addons/common/functions/fnc_hasHatch.sqf @@ -14,11 +14,11 @@ params ["_unit"]; -local _vehicle = vehicle _unit; +private _vehicle = vehicle _unit; if (_unit == _vehicle) exitWith {false}; -local _config = configFile >> "CfgVehicles" >> typeOf _vehicle; +private _config = configFile >> "CfgVehicles" >> typeOf _vehicle; if (getNumber (_config >> "hideProxyInCombat") != 1) exitWith {false}; @@ -26,10 +26,10 @@ if (_unit == driver _vehicle) exitWith { getNumber (_config >> "forceHideDriver") == 0; // return }; -local _turret = [_unit] call FUNC(getTurretIndex); +private _turret = [_unit] call FUNC(getTurretIndex); if (_turret isEqualTo []) exitWith {false}; -local _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); +private _turretConfig = [_config, _turret] call FUNC(getTurretConfigPath); getNumber (_turretConfig >> "forceHideGunner") == 0; // return diff --git a/addons/common/functions/fnc_selectWeaponMode.sqf b/addons/common/functions/fnc_selectWeaponMode.sqf index f255c63e98..582f6fd4b2 100644 --- a/addons/common/functions/fnc_selectWeaponMode.sqf +++ b/addons/common/functions/fnc_selectWeaponMode.sqf @@ -19,7 +19,7 @@ params ["_unit", "_muzzle", "_mode"]; -local _index = 0; +private _index = 0; while { _index < 100 && {currentMuzzle _unit != _muzzle || {currentWeaponMode _unit != _mode}} diff --git a/addons/common/functions/fnc_setAllGear.sqf b/addons/common/functions/fnc_setAllGear.sqf index e25045a685..2b5a2a9cc7 100644 --- a/addons/common/functions/fnc_setAllGear.sqf +++ b/addons/common/functions/fnc_setAllGear.sqf @@ -148,7 +148,7 @@ if (_backpack != "") then { _unit addBackpack _backpack; if (_clearBackpack) then { - local _backpackObject = unitBackpack _unit; + private _backpackObject = unitBackpack _unit; clearMagazineCargoGlobal _backpackObject; clearWeaponCargoGlobal _backpackObject; diff --git a/addons/common/functions/fnc_timePFH.sqf b/addons/common/functions/fnc_timePFH.sqf index 152eceee3f..e5366d331e 100644 --- a/addons/common/functions/fnc_timePFH.sqf +++ b/addons/common/functions/fnc_timePFH.sqf @@ -14,13 +14,13 @@ BEGIN_COUNTER(timePFH); -local _lastTickTime = ACE_diagTime; -local _lastGameTime = ACE_gameTime; +private _lastTickTime = ACE_diagTime; +private _lastGameTime = ACE_gameTime; ACE_gameTime = time; ACE_diagTime = diag_tickTime; -local _delta = ACE_diagTime - _lastTickTime; +private _delta = ACE_diagTime - _lastTickTime; if (ACE_gameTime <= _lastGameTime) then { TRACE_1("paused",_delta); diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf index 4958c8e02b..09a84ad151 100644 --- a/addons/goggles/XEH_postInit.sqf +++ b/addons/goggles/XEH_postInit.sqf @@ -95,7 +95,7 @@ GVAR(OldGlasses) = "#NULLSTRING"; }] call EFUNC(common,addEventHandler); // check goggles -local _fnc_checkGoggles = { +private _fnc_checkGoggles = { params ["_unit"]; if (GVAR(EffectsActive)) then { diff --git a/addons/goggles/functions/fnc_applyDirtEffect.sqf b/addons/goggles/functions/fnc_applyDirtEffect.sqf index b10ebc9668..c7ff386f9d 100644 --- a/addons/goggles/functions/fnc_applyDirtEffect.sqf +++ b/addons/goggles/functions/fnc_applyDirtEffect.sqf @@ -28,7 +28,7 @@ _effects set [DIRT, true]; SETGLASSES(_unit,_effects); if ([_unit] call FUNC(isGogglesVisible)) then { - local _dirtImage = getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_OverlayDirt"); + private _dirtImage = getText (configFile >> "CfgGlasses" >> goggles _unit >> "ACE_OverlayDirt"); if (_dirtImage != "") then { GVAR(GogglesEffectsLayer) cutRsc ["RscACE_GogglesEffects", "PLAIN", 0.1, false]; diff --git a/addons/goggles/functions/fnc_applyDustEffect.sqf b/addons/goggles/functions/fnc_applyDustEffect.sqf index b052f3eae7..75f4853c01 100644 --- a/addons/goggles/functions/fnc_applyDustEffect.sqf +++ b/addons/goggles/functions/fnc_applyDustEffect.sqf @@ -54,7 +54,7 @@ GVAR(DustHandler) = [{ if (ACE_diagTime >= GETDUSTT(DTIME) + 3) then { SETDUST(DAMOUNT,CLAMP(GETDUSTT(DAMOUNT)-1,0,2)); - local _amount = 1 - (GETDUSTT(DAMOUNT) * 0.125); + private _amount = 1 - (GETDUSTT(DAMOUNT) * 0.125); if !(_unit getVariable ["ACE_EyesDamaged", false]) then { GVAR(PostProcessEyes) ppEffectAdjust [1, 1, 0, [0, 0, 0, 0], [_amount, _amount, _amount, _amount], [1, 1, 1, 0]]; diff --git a/addons/goggles/functions/fnc_applyRainEffect.sqf b/addons/goggles/functions/fnc_applyRainEffect.sqf index 7e1260a453..01b2894d87 100644 --- a/addons/goggles/functions/fnc_applyRainEffect.sqf +++ b/addons/goggles/functions/fnc_applyRainEffect.sqf @@ -27,7 +27,7 @@ _fnc_underCover = { if (vehicle _unit != _unit && {!isTurnedOut _unit}) exitWith {true}; // looking up and no roof over head - local _position = eyePos _unit; + private _position = eyePos _unit; positionCameraToWorld [0, 0, 1] select 2 < (positionCameraToWorld [0, 0, 0] select 2) - 0.4 || {(lineIntersects [_position, _position vectorAdd [0, 0, 15], _unit])} // return }; diff --git a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf index 7dc088bc4e..bc8d0bafbf 100644 --- a/addons/goggles/functions/fnc_applyRotorWashEffect.sqf +++ b/addons/goggles/functions/fnc_applyRotorWashEffect.sqf @@ -86,7 +86,7 @@ if (_safe) exitWith {}; // apply rotor wash effect if (_rotorWash select 1 > 0) then { - local _scale = 0.7; + private _scale = 0.7; if (_rotorWash select 1 > 0) then { _scale = CLAMP(0.3 * (_rotorWash select 1),0.1,0.3); diff --git a/addons/goggles/functions/fnc_handleFired.sqf b/addons/goggles/functions/fnc_handleFired.sqf index 90260d07b3..793849822f 100644 --- a/addons/goggles/functions/fnc_handleFired.sqf +++ b/addons/goggles/functions/fnc_handleFired.sqf @@ -73,7 +73,7 @@ SETDUST(DTIME,ACE_diagTime); // apply dust effect if the amount of fired bullets is over the threshold if (GETDUSTT(DAMOUNT) < 2) then { - local _bulletsRequired = 100; + private _bulletsRequired = 100; if (isNumber (configFile >> _cloudType >> QGVAR(BulletCount))) then { _bulletsRequired = getNumber (configFile >> _cloudType >> QGVAR(BulletCount)); diff --git a/addons/goggles/functions/fnc_isDivingGoggles.sqf b/addons/goggles/functions/fnc_isDivingGoggles.sqf index ab5bb74269..ac86a09d2b 100644 --- a/addons/goggles/functions/fnc_isDivingGoggles.sqf +++ b/addons/goggles/functions/fnc_isDivingGoggles.sqf @@ -17,7 +17,7 @@ params ["_glasses"]; -local _config = configFile >> "CfgGlasses" >> _glasses; +private _config = configFile >> "CfgGlasses" >> _glasses; if (!isClass _config) exitWith {false}; diff --git a/addons/goggles/functions/fnc_isInRotorWash.sqf b/addons/goggles/functions/fnc_isInRotorWash.sqf index 5ddc59192a..319da3a875 100644 --- a/addons/goggles/functions/fnc_isInRotorWash.sqf +++ b/addons/goggles/functions/fnc_isInRotorWash.sqf @@ -21,11 +21,11 @@ params ["_unit", ["_radius", 15]]; -local _rotorWash = [false, 0]; +private _rotorWash = [false, 0]; { if (isEngineOn _x) then { - local _distance = _unit distance _x; + private _distance = _unit distance _x; // convert distance to 0...1 range, where 0 is the maximum radius _distance = 1 - _distance / _radius; diff --git a/addons/interaction/XEH_postInit.sqf b/addons/interaction/XEH_postInit.sqf index 6442911faa..ee90af64ad 100644 --- a/addons/interaction/XEH_postInit.sqf +++ b/addons/interaction/XEH_postInit.sqf @@ -29,7 +29,7 @@ GVAR(isOpeningDoor) = false; if (_unit == ACE_player) then { addCamShake [4, 0.5, 5]; - local _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0)); + private _message = parseText format ([["%1 >", localize LSTRING(YouWereTappedRight)], ["< %1", localize LSTRING(YouWereTappedLeft)]] select (_shoulderNum == 0)); [_message] call FUNC(displayTextStructured); }; }] call EFUNC(common,addEventHandler); diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf index 449ffd7b77..878f44cf9a 100644 --- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf +++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf @@ -19,9 +19,9 @@ params ["_object"]; TRACE_1("params",_object); -local _typeOf = typeOf _object; +private _typeOf = typeOf _object; -local _returnValue = if (_typeOf != "") then { +private _returnValue = if (_typeOf != "") then { //If the fence has configEntry we can check it directly (1 == (getNumber (configFile >> "CfgVehicles" >> _typeOf >> QGVAR(isFence)))); } else { diff --git a/addons/medical/functions/fnc_translateSelections.sqf b/addons/medical/functions/fnc_translateSelections.sqf index a5f0328181..f2fe4c1de9 100644 --- a/addons/medical/functions/fnc_translateSelections.sqf +++ b/addons/medical/functions/fnc_translateSelections.sqf @@ -47,7 +47,7 @@ if (_selection in R_LEG_SELECTIONS) exitwith {"leg_r"};*/ //Backup method to detect weird selections/hitpoints if ((_selection == "?") || {!(_selection in GVAR(SELECTIONS))}) exitWith { if (_hitPointIndex < 0) exitWith {_selection}; - local _hitPoint = toLower configName ((configProperties [(configFile >> "CfgVehicles" >> (typeOf _unit) >> "HitPoints")]) select _hitPointIndex); + private _hitPoint = toLower configName ((configProperties [(configFile >> "CfgVehicles" >> (typeOf _unit) >> "HitPoints")]) select _hitPointIndex); TRACE_4("Weird sel/hit", _unit, _selection, _hitPointIndex, _hitPoint); if (_hitPoint in HEAD_HITPOINTS) exitWith {"head"}; diff --git a/addons/medical_menu/XEH_postInit.sqf b/addons/medical_menu/XEH_postInit.sqf index 4435511b8f..ad1acabdb3 100644 --- a/addons/medical_menu/XEH_postInit.sqf +++ b/addons/medical_menu/XEH_postInit.sqf @@ -19,7 +19,7 @@ GVAR(pendingReopen) = false; ["ACE3 Common", QGVAR(displayMenuKeyPressed), localize LSTRING(DisplayMenuKey), { - local _target = cursorTarget; + private _target = cursorTarget; if (!((_target isKindOf "CAManBase") && {[ACE_player, _target] call FUNC(canOpenMenu)})) then {_target = ACE_player}; // Conditions: canInteract diff --git a/addons/medical_menu/functions/fnc_updateBodyImage.sqf b/addons/medical_menu/functions/fnc_updateBodyImage.sqf index afe84a59d3..1e8067a7f6 100644 --- a/addons/medical_menu/functions/fnc_updateBodyImage.sqf +++ b/addons/medical_menu/functions/fnc_updateBodyImage.sqf @@ -20,7 +20,7 @@ params ["_selectionBloodLoss", "_damaged", "_display"]; // Handle the body image coloring -local _availableSelections = [50, 51, 52, 53, 54, 55]; +private _availableSelections = [50, 51, 52, 53, 54, 55]; { private ["_red", "_green", "_blue"]; diff --git a/addons/reload/functions/fnc_canCheckAmmo.sqf b/addons/reload/functions/fnc_canCheckAmmo.sqf index 8fbb37c726..41a46ea465 100644 --- a/addons/reload/functions/fnc_canCheckAmmo.sqf +++ b/addons/reload/functions/fnc_canCheckAmmo.sqf @@ -25,7 +25,7 @@ if (_target isKindOf "StaticWeapon") exitWith { // no check ammo action on destroyed static weapons if (!alive _target) exitWith {false}; - local _found = false; + private _found = false; { if (_x select 2) exitWith { diff --git a/addons/respawn/functions/fnc_restoreGear.sqf b/addons/respawn/functions/fnc_restoreGear.sqf index d01e45dd50..a0ca2aa35e 100644 --- a/addons/respawn/functions/fnc_restoreGear.sqf +++ b/addons/respawn/functions/fnc_restoreGear.sqf @@ -37,7 +37,7 @@ if ( }; if (currentWeapon _unit != "") then { - local _index = 0; + private _index = 0; while { _index < 100 && {currentWeaponMode _unit != _activeWeaponMode} From 5cbfe4f2a5f743210654f8d12dd21aa290998f44 Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Nov 2015 14:02:20 -0600 Subject: [PATCH 34/44] local -> private --- .../functions/fnc_loadSettingsLocalizedText.sqf | 2 +- .../fnc_readSettingsFromParamsArray.sqf | 14 +++++++------- addons/common/functions/fnc_setSetting.sqf | 4 ++-- .../functions/fnc_moduleSettings.sqf | 4 ++-- addons/modules/XEH_postInit.sqf | 16 ++++++++-------- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf index 62ba120ff9..7b05902862 100644 --- a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf +++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf @@ -40,7 +40,7 @@ _fnc_parseConfigForDisplayNames = { if (_typeOf != "SCALAR") then { ACE_LOGWARNING_2("Setting [%1] has values[] but is not SCALAR (%2)", _name, _typeOf); } else { - local _value = missionNamespace getVariable [_name, -1]; + private _value = missionNamespace getVariable [_name, -1]; if ((_value < 0) || {_value >= (count _values)}) then { ACE_LOGWARNING_3("Setting [%1] out of bounds %2 (values[] count is %3)(", _name, _value, count _values); }; diff --git a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf index a8b0299a15..d1fdb30b29 100644 --- a/addons/common/functions/fnc_readSettingsFromParamsArray.sqf +++ b/addons/common/functions/fnc_readSettingsFromParamsArray.sqf @@ -17,16 +17,16 @@ #include "script_component.hpp" //paramsArray is a normal variable not a command -local _paramsArray = missionnamespace getvariable ["paramsArray", []]; +private _paramsArray = missionnamespace getvariable ["paramsArray", []]; TRACE_1("Reading missionConfigFile params",_paramsArray); { - local _config = (missionConfigFile >> "params") select _forEachIndex; + private _config = (missionConfigFile >> "params") select _forEachIndex; if ((getNumber (_config >> "ACE_setting")) > 0) then { - local _settingName = configName _config; - local _settingValue = _x; - local _title = getText (_config >> "title"); + private _settingName = configName _config; + private _settingValue = _x; + private _title = getText (_config >> "title"); TRACE_3("ace_setting",_title,_settingName,_settingValue); @@ -35,7 +35,7 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); ACE_LOGERROR_1("readSettingsFromParamsArray - param [%1] is not an ace_setting", _settingName); }; - local _settingData = [_settingName] call FUNC(getSettingData); + private _settingData = [_settingName] call FUNC(getSettingData); _settingData params ["", "_typeName", "", "", "", "", "_isForced"]; // Check if it's already forced and quit @@ -43,7 +43,7 @@ TRACE_1("Reading missionConfigFile params",_paramsArray); // The setting is not forced, so update the value // Read entry and cast it to the correct type from the existing variable - local _validValue = false; + private _validValue = false; switch (true) do { case (_typeName == "SCALAR"): {_validValue = true;}; case (_typeName == "BOOL"): { diff --git a/addons/common/functions/fnc_setSetting.sqf b/addons/common/functions/fnc_setSetting.sqf index e37f4b6ff7..9d3a42326c 100644 --- a/addons/common/functions/fnc_setSetting.sqf +++ b/addons/common/functions/fnc_setSetting.sqf @@ -22,7 +22,7 @@ params ["_name", "_value", ["_force", false], ["_broadcastChanges", false]]; -local _settingData = [_name] call FUNC(getSettingData); +private _settingData = [_name] call FUNC(getSettingData); // Exit if the setting does not exist if (_settingData isEqualTo []) exitWith { @@ -42,7 +42,7 @@ if ((missionNamespace getVariable [QEGVAR(modules,serverModulesRead), false]) && }; // If the type is not equal, try to cast it -local _failed = false; +private _failed = false; if (typeName _value != _settingData select 1) then { _failed = true; if ((_typeName == "BOOL") && {typeName _value == "SCALAR"}) then { diff --git a/addons/map_gestures/functions/fnc_moduleSettings.sqf b/addons/map_gestures/functions/fnc_moduleSettings.sqf index 3e580493c9..56d3235d03 100644 --- a/addons/map_gestures/functions/fnc_moduleSettings.sqf +++ b/addons/map_gestures/functions/fnc_moduleSettings.sqf @@ -26,14 +26,14 @@ if (!_activated || !isServer) exitWith {}; [_logic, QGVAR(interval), "interval"] call EFUNC(common,readSettingFromModule); //For default fallback colors, setting to empty ("") will not force on clients -local _defaultLeadColor = _logic getVariable ["defaultLeadColor", ""]; +private _defaultLeadColor = _logic getVariable ["defaultLeadColor", ""]; if (_defaultLeadColor != "") then { _defaultLeadColor = call compile ("[" + _defaultLeadColor + "]"); if (!([_defaultLeadColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultLeadColor is not a valid color array.")}; [QGVAR(defaultLeadColor), _defaultLeadColor, true, true] call EFUNC(common,setSetting); }; -local _defaultColor = _logic getVariable ["defaultColor", ""]; +private _defaultColor = _logic getVariable ["defaultColor", ""]; if (_defaultColor != "") then { _defaultColor = call compile ("[" + _defaultColor + "]"); if (!([_defaultColor] call FUNC(isValidColorArray))) exitWith {ERROR("defaultColor is not a valid color array.")}; diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf index d4857af57f..1935714dc8 100644 --- a/addons/modules/XEH_postInit.sqf +++ b/addons/modules/XEH_postInit.sqf @@ -5,22 +5,22 @@ // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it. // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution. - local _uniqueModulesHandled = []; + private _uniqueModulesHandled = []; { [_x] call { params ["_logic"]; - local _logicType = typeof _logic; + private _logicType = typeof _logic; _logic hideobject true; if (_logic getvariable [QGVAR(initalized), false]) exitwith {}; - local _config = (configFile >> "CfgVehicles" >> _logicType); + private _config = (configFile >> "CfgVehicles" >> _logicType); if !(isClass _config) exitwith {}; - local _isGlobal = getNumber (_config >> "isGlobal") > 0; - local _isDisposable = getNumber (_config >> "isDisposable") > 0; - local _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; - local _isSingular = getNumber (_config >> "isSingular") > 0; - local _function = getText (_config >> "function"); + private _isGlobal = getNumber (_config >> "isGlobal") > 0; + private _isDisposable = getNumber (_config >> "isDisposable") > 0; + private _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1; + private _isSingular = getNumber (_config >> "isSingular") > 0; + private _function = getText (_config >> "function"); if (isnil _function) then { _function = compile _function; } else { From 3ec9fca73e47fc2c6e7a8cfb8d40bc48ceec6dfd Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Nov 2015 14:06:12 -0600 Subject: [PATCH 35/44] local -> private --- addons/interact_menu/functions/fnc_render.sqf | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf index 0addd42483..1a14acae07 100644 --- a/addons/interact_menu/functions/fnc_render.sqf +++ b/addons/interact_menu/functions/fnc_render.sqf @@ -14,12 +14,12 @@ BEGIN_COUNTER(fnc_render); -local _foundTarget = false; +private _foundTarget = false; if (GVAR(openedMenuType) >= 0) then { BEGIN_COUNTER(fnc_renderMenuOpen); - local _cursorPos2 = positionCameraToWorld [0, 0, 2]; + private _cursorPos2 = positionCameraToWorld [0, 0, 2]; // Render all available nearby interactions call FUNC(renderActionPoints); @@ -29,13 +29,13 @@ if (GVAR(openedMenuType) >= 0) then { [[0.5,0.5], "\a3\ui_f\data\IGUI\Cfg\Cursors\selected_ca.paa"] call FUNC(renderSelector); }; - local _cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); + private _cursorScreenPos = [worldToScreen _cursorPos2, GVAR(cursorPos)] select (uiNamespace getVariable [QGVAR(cursorMenuOpened),false]); - local _closestDistance = 1000000; - local _closestSelection = -1; + private _closestDistance = 1000000; + private _closestSelection = -1; { _x params ["", "_sPos"]; - local _distanceFromCursor = _cursorScreenPos distance2d _sPos; + private _distanceFromCursor = _cursorScreenPos distance2d _sPos; if ((_distanceFromCursor < 0.1118) && {_distanceFromCursor < _closestDistance}) then { _closestDistance = _distanceFromCursor; _closestSelection = _forEachIndex; @@ -44,11 +44,11 @@ if (GVAR(openedMenuType) >= 0) then { if(_closestSelection == -1) exitWith {}; - local _closest = GVAR(currentOptions) select _closestSelection; + private _closest = GVAR(currentOptions) select _closestSelection; _closest params ["_action", "_sPos", "_hoverPath"]; - local _cTime = ACE_diagTime; - local _delta = _cTime - GVAR(lastTime); + private _cTime = ACE_diagTime; + private _delta = _cTime - GVAR(lastTime); GVAR(lastTime) = _cTime; GVAR(rotationAngle) = (GVAR(rotationAngle) + (270*_delta)) mod 360; @@ -59,7 +59,7 @@ if (GVAR(openedMenuType) >= 0) then { GVAR(selectedAction) = _action select 1; GVAR(selectedTarget) = (GVAR(selectedAction)) select 2; - local _misMatch = !(GVAR(lastPath) isEqualTo _hoverPath); + private _misMatch = !(GVAR(lastPath) isEqualTo _hoverPath); if(_misMatch && {ACE_diagTime-GVAR(expandedTime) > linearConversion [0, 2, GVAR(menuAnimationSpeed), 0.25, 0.08333333]}) then { GVAR(startHoverTime) = ACE_diagTime; @@ -76,8 +76,8 @@ if (GVAR(openedMenuType) >= 0) then { GVAR(menuDepthPath) = +GVAR(lastPath); // Execute the current action if it's run on hover - local _tmp = ((GVAR(selectedAction) select 0) select 9) select 3; - local _runOnHover = true; + private _tmp = ((GVAR(selectedAction) select 0) select 9) select 3; + private _runOnHover = true; if ((typeName _tmp) == "CODE" ) then { _runOnHover = call _tmp; } else { @@ -89,14 +89,14 @@ if (GVAR(openedMenuType) >= 0) then { }; if (_runOnHover) then { this = GVAR(selectedTarget); - local _player = ACE_Player; - local _target = GVAR(selectedTarget); + private _player = ACE_Player; + private _target = GVAR(selectedTarget); // Clear the conditions caches ["clearConditionCaches", []] call EFUNC(common,localEvent); // Check the action conditions - local _actionData = GVAR(selectedAction) select 0; + private _actionData = GVAR(selectedAction) select 0; if ([_target, _player, _actionData select 6] call (_actionData select 4)) then { // Call the statement [_target, _player, _actionData select 6] call (_actionData select 3); From da16fc103833caec8213d243be99d87c2ba49f7b Mon Sep 17 00:00:00 2001 From: kaban Date: Wed, 18 Nov 2015 06:50:00 +0300 Subject: [PATCH 36/44] \addons\captives\stringtable.xml - resolving conflicts. --- addons/captives/stringtable.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml index ea1d99419a..8465588fb5 100644 --- a/addons/captives/stringtable.xml +++ b/addons/captives/stringtable.xml @@ -166,7 +166,7 @@ Fazer unidade se render Faire capituler l'unité Egység kapitulálása - Сделать юнита пленным + Заставить юнита сдаться Sync a unit to make them surrender.<br />Source: ace_captives @@ -177,15 +177,17 @@ Sincroniza uma unidade para fazer com que ela se renda. <br/>Fonte: ace_captives Synchronise une unité pour la rendre captive. <br/>Source: ace_captives Egység szinkronizálása, hogy kapituláljon.<br />Forrás: ace_captives - Синхронизируйте с юнитами, чтобы сделать их пленными.<br />Источник: ace_captives + Синхронизируйте с юнитами, чтобы заставить их сдаться в плен.<br />Источник: ace_captives Make Unit Handcuffed Fazer unidade algemada + Связать юнита Sync a unit to make them handcuffed.<br />Source: ace_captives Sincronizar uma unidade para deixá-la algemada.<br/>Source: ace_captives + Синхронизируйте с юнитами, чтобы сделать их связанными.<br />Источник: ace_captives Captives Settings From ebbf2b373a9a474459fed3dc384e494e1ce572fc Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Tue, 17 Nov 2015 23:44:50 -0600 Subject: [PATCH 37/44] goggles - prevent CBA PFEH warning fix "x\cba\addons\common\fnc_removePerFrameHandler.sqf:30","WARNING: Invalid or not existing PFH ID." --- addons/goggles/functions/fnc_handleKilled.sqf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/goggles/functions/fnc_handleKilled.sqf b/addons/goggles/functions/fnc_handleKilled.sqf index d156fb684c..e8e207c478 100644 --- a/addons/goggles/functions/fnc_handleKilled.sqf +++ b/addons/goggles/functions/fnc_handleKilled.sqf @@ -26,7 +26,9 @@ GVAR(EffectsActive) = false; _unit setVariable ["ACE_EyesDamaged", false]; -[GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; +if (GVAR(DustHandler) != -1) then { + [GVAR(DustHandler)] call CBA_fnc_removePerFrameHandler; +}; GVAR(DustHandler) = -1; true From 0110ada1b52fc7b80662bd4e3f916c5cca64bac4 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 18 Nov 2015 14:54:17 +0000 Subject: [PATCH 38/44] Fix zeus waypoint formation actions --- addons/interaction/ACE_ZeusActions.hpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/addons/interaction/ACE_ZeusActions.hpp b/addons/interaction/ACE_ZeusActions.hpp index 5a7ea9d631..af29186895 100644 --- a/addons/interaction/ACE_ZeusActions.hpp +++ b/addons/interaction/ACE_ZeusActions.hpp @@ -199,47 +199,47 @@ class ACE_ZeusActions { class wedge { displayName = "$STR_Wedge"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\wedge_ca.paa"; - statement = "{_x setWaypointFormation 'WEDGE';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'WEDGE';} forEach (curatorSelected select 2);"; }; class vee { displayName = "$STR_Vee"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\vee_ca.paa"; - statement = "{_x setWaypointFormation 'VEE';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'VEE';} forEach (curatorSelected select 2);"; }; class line { displayName = "$STR_Line"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\line_ca.paa"; - statement = "{_x setWaypointFormation 'LINE';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'LINE';} forEach (curatorSelected select 2);"; }; class column { displayName = "$STR_Column"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\column_ca.paa"; - statement = "{_x setWaypointFormation 'COLUMN';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'COLUMN';} forEach (curatorSelected select 2);"; }; class file { displayName = "$STR_File"; icon = "\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\file_ca.paa"; - statement = "{_x setWaypointFormation 'FILE';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'FILE';} forEach (curatorSelected select 2);"; }; class stag_column { displayName = "$STR_Staggered"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\stag_column_ca.paa"; - statement = "{_x setWaypointFormation 'STAG COLUMN';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'STAG COLUMN';} forEach (curatorSelected select 2);"; }; class ech_left { displayName = "$STR_EchL"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_left_ca.paa"; - statement = "{_x setWaypointFormation 'ECH LEFT';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'ECH LEFT';} forEach (curatorSelected select 2);"; }; class ech_right { displayName = "$STR_EchR"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\ech_right_ca.paa"; - statement = "{_x setWaypointFormation 'ECH RIGHT';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'ECH RIGHT';} forEach (curatorSelected select 2);"; }; class diamond { displayName = "$STR_Diamond"; icon="\A3\UI_F_Curator\Data\RscCommon\RscAttributeFormation\diamond_ca.paa"; - statement = "{_x setWaypointFormation 'DIAMOND';} forEach (curatorSelected select 1);"; + statement = "{_x setWaypointFormation 'DIAMOND';} forEach (curatorSelected select 2);"; }; }; }; From 0567d1c2a1f721d19cb0e9009230c4219669c072 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 18 Nov 2015 15:02:17 +0000 Subject: [PATCH 39/44] Fix spectator unit list key press handling By setting maxHistroyDelay really high, the unit list shouldn't be messed with via key press very often. --- addons/spectator/UI/interface.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/spectator/UI/interface.hpp b/addons/spectator/UI/interface.hpp index 409df7ef71..a3ad215ea2 100644 --- a/addons/spectator/UI/interface.hpp +++ b/addons/spectator/UI/interface.hpp @@ -190,6 +190,7 @@ class GVAR(interface) { 1 }; multiselectEnabled = 0; + maxHistoryDelay = 10e10; onTreeDblClick = QUOTE([ARR_2('onTreeDblClick',_this)] call FUNC(handleInterface)); }; class unitFrame: RscFrame { From f8e293d04d17aeb40eba3b57627fe91a7d62834f Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Wed, 18 Nov 2015 15:18:21 +0000 Subject: [PATCH 40/44] Localise spectator hotkeys in help window --- .../functions/fnc_handleInterface.sqf | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index def736675e..8f29b20296 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -45,36 +45,36 @@ switch (toLower _mode) do { }; } forEach [ [localize LSTRING(uiControls),""], - [localize LSTRING(uiToggleUnits),"1"], - [localize LSTRING(uiToggleHelp),"2"], - [localize LSTRING(uiToggleTools),"3"], - [localize LSTRING(uiToggleCompass),"4"], - [localize LSTRING(uiToggleIcons),"5"], - [localize LSTRING(uiToggleMap),"M"], - [localize LSTRING(uiToggleInterface),"Backspace"], + [localize LSTRING(uiToggleUnits),keyName 2], + [localize LSTRING(uiToggleHelp),keyName 3], + [localize LSTRING(uiToggleTools),keyName 4], + [localize LSTRING(uiToggleCompass),keyName 5], + [localize LSTRING(uiToggleIcons),keyName 6], + [localize LSTRING(uiToggleMap),keyName 50], + [localize LSTRING(uiToggleInterface),keyName 14], [localize LSTRING(freeCamControls),""], - [localize LSTRING(freeCamForward),"W"], - [localize LSTRING(freeCamBackward),"S"], - [localize LSTRING(freeCamLeft),"A"], - [localize LSTRING(freeCamRight),"D"], - [localize LSTRING(freeCamUp),"Q"], - [localize LSTRING(freeCamDown),"Z"], + [localize LSTRING(freeCamForward),keyName 17], + [localize LSTRING(freeCamBackward),keyName 31], + [localize LSTRING(freeCamLeft),keyName 30], + [localize LSTRING(freeCamRight),keyName 32], + [localize LSTRING(freeCamUp),keyName 16], + [localize LSTRING(freeCamDown),keyName 44], [localize LSTRING(freeCamPan),"RMB (Hold)"], [localize LSTRING(freeCamDolly),"LMB (Hold)"], [localize LSTRING(freeCamBoost),"Shift (Hold)"], [localize LSTRING(attributeControls),""], - [localize LSTRING(nextCam),"Up Arrow"], - [localize LSTRING(prevCam),"Down Arrow"], - [localize LSTRING(nextUnit),"Right Arrow"], - [localize LSTRING(prevUnit),"Left Arrow"], - [localize LSTRING(nextVis),"N"], - [localize LSTRING(prevVis),"Ctrl + N"], + [localize LSTRING(nextCam),keyName 200], + [localize LSTRING(prevCam),keyName 208], + [localize LSTRING(nextUnit),keyName 205], + [localize LSTRING(prevUnit),keyName 203], + [localize LSTRING(nextVis),keyName 49], + [localize LSTRING(prevVis),format["%1 + %2",keyName 29,keyname 49]], [localize LSTRING(adjZoom),"Scrollwheel"], - [localize LSTRING(adjSpeed),"Ctrl + Scrollwheel"], - [localize LSTRING(incZoom),"Num-/Num+"], - [localize LSTRING(incSpeed),"Ctrl + Num-/Num+"], - [localize LSTRING(reZoom),"Alt + Num-"], - [localize LSTRING(reSpeed),"Alt + Num+"] + [localize LSTRING(adjSpeed),format["%1 + Scrollwheel",keyName 29]], + [localize LSTRING(incZoom),format["%1/%2",keyName 74,keyName 78]], + [localize LSTRING(incSpeed),format["%1 + %2/%3",keyName 29,keyName 74,keyName 78]], + [localize LSTRING(reZoom),format["%1 + %2",keyName 56,keyName 74]], + [localize LSTRING(reSpeed),format["%1 + %2",keyName 56,keyName 78]] ]; // Handle support for BI's respawn counter @@ -240,7 +240,7 @@ switch (toLower _mode) do { [_display,nil,nil,nil,true] call FUNC(toggleInterface); }; case 57: { // Spacebar - // Freecam attachment here, if in external then set cam pos and attach + // Switch between unit and freecam here }; case 74: { // Num - if (_alt) exitWith { [nil,nil,nil,nil,nil,nil, 1.25] call FUNC(setCameraAttributes); }; @@ -251,7 +251,7 @@ switch (toLower _mode) do { }; }; case 78: { // Num + - if (_alt) exitWith { [nil,nil,nil,nil,nil,nil,nil, 2.5] call FUNC(setCameraAttributes); }; + if (_alt) exitWith { [nil,nil,nil,nil,nil,nil,nil, 1.5] call FUNC(setCameraAttributes); }; if (_ctrl) then { [nil,nil,nil,nil,nil,nil,nil, GVAR(camSpeed) + 0.05] call FUNC(setCameraAttributes); } else { From cf9235c9261bd4111ef3385731579a3b0f21d46b Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Thu, 19 Nov 2015 00:28:28 -0600 Subject: [PATCH 41/44] make.py - update for new mikros tools --- tools/make.py | 48 ++---------------------------------------------- 1 file changed, 2 insertions(+), 46 deletions(-) diff --git a/tools/make.py b/tools/make.py index adaecf269e..e4b99116a6 100644 --- a/tools/make.py +++ b/tools/make.py @@ -489,7 +489,7 @@ def check_for_obsolete_pbos(addonspath, file): def backup_config(module): - #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up: + #backup original $PBOPREFIX$ global work_drive global prefix @@ -503,52 +503,11 @@ def backup_config(module): except: print_error("Error creating backup of $PBOPREFIX$ for module {}.".format(module)) - try: - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup")) - os.chdir(work_drive) - except: - print_error("Error creating backup of config.cpp for module {}.".format(module)) - return True -def convert_config(module): - try: - global work_drive - global prefix - global arma3tools_path - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -bin return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - - cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")] - ret = subprocess.call(cmd) - if ret != 0: - print_error("CfgConvert -txt return code == {}. Usually means there is a syntax error within the config.cpp file.".format(str(ret))) - os.remove(os.path.join(work_drive, prefix, module, "config.cpp")) - shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp")) - except Exception as e: - print_error("Exception from convert_config=>CfgConvert: {}".format(e)) - return False - - return True - - def addon_restore(modulePath): - #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp - #print_green("\Pabst! (restoring): {}".format(os.path.join(modulePath, "config.cpp"))) + #restore original $PBOPREFIX$ try: - if os.path.isfile(os.path.join(modulePath, "config.cpp")): - os.remove(os.path.join(modulePath, "config.cpp")) - if os.path.isfile(os.path.join(modulePath, "config.backup")): - os.rename(os.path.join(modulePath, "config.backup"), os.path.join(modulePath, "config.cpp")) - if os.path.isfile(os.path.join(modulePath, "config.bin")): - os.remove(os.path.join(modulePath, "config.bin")) - if os.path.isfile(os.path.join(modulePath, "texHeaders.bin")): - os.remove(os.path.join(modulePath, "texHeaders.bin")) if os.path.isfile(os.path.join(modulePath, "$PBOPREFIX$.backup")): if os.path.isfile(os.path.join(modulePath, "$PBOPREFIX$")): os.remove(os.path.join(modulePath, "$PBOPREFIX$")) @@ -1216,9 +1175,6 @@ See the make.cfg file for additional build options. nobinFilePath = os.path.join(work_drive, prefix, module, "$NOBIN$") backup_config(module) - if (not os.path.isfile(nobinFilePath)): - convert_config(module) - version_stamp_pboprefix(module,commit_id) if os.path.isfile(nobinFilePath): From 7b526a99a32add4550d1096bbb3c18adb319b87d Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 20 Nov 2015 14:53:16 -0600 Subject: [PATCH 42/44] Cleanup --- addons/interact_menu/ACE_Settings.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/interact_menu/ACE_Settings.hpp b/addons/interact_menu/ACE_Settings.hpp index 2d516ee6e3..075408499b 100644 --- a/addons/interact_menu/ACE_Settings.hpp +++ b/addons/interact_menu/ACE_Settings.hpp @@ -103,6 +103,6 @@ class ACE_Settings { category = CSTRING(Category_InteractionMenu); displayName = CSTRING(menuAnimationSpeed); description = CSTRING(menuAnimationSpeed_Description); - values[] = {"$str_speed_normal", "2x", "3x (gotta go fast)"}; + values[] = {"$str_speed_normal", "2x", "3x"}; }; }; From 979ff8b47926fdff6900b450f371c5b2f9acdb7f Mon Sep 17 00:00:00 2001 From: PabstMirror Date: Fri, 20 Nov 2015 16:13:20 -0600 Subject: [PATCH 43/44] Local -> private --- addons/overpressure/functions/fnc_getDistance.sqf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/overpressure/functions/fnc_getDistance.sqf b/addons/overpressure/functions/fnc_getDistance.sqf index a583700127..cabdd267fa 100644 --- a/addons/overpressure/functions/fnc_getDistance.sqf +++ b/addons/overpressure/functions/fnc_getDistance.sqf @@ -21,11 +21,11 @@ params ["_posASL", "_direction", "_maxDistance", "_shooter"]; TRACE_3("params",_posASL,_direction,_maxDistance); -local _intersections = lineIntersectsSurfaces [_posASL, _posASL vectorAdd (_direction vectorMultiply _maxDistance), _shooter, objNull, true, 99]; +private _intersections = lineIntersectsSurfaces [_posASL, _posASL vectorAdd (_direction vectorMultiply _maxDistance), _shooter, objNull, true, 99]; TRACE_1("lineIntersectsSurfaces",_intersections); -local _distance = 999; +private _distance = 999; { _x params ["_intersectPosASL", "_surfaceNormal", "_intersectObject"]; From 67345b01786527e24155bdf451bba0197df373fd Mon Sep 17 00:00:00 2001 From: Glowbal Date: Fri, 20 Nov 2015 23:28:52 +0100 Subject: [PATCH 44/44] Fix incorrect variable _items was the old variable name. --- addons/cargo/functions/fnc_addCargoItem.sqf | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/cargo/functions/fnc_addCargoItem.sqf b/addons/cargo/functions/fnc_addCargoItem.sqf index a790087b7f..a44cd0ebcf 100644 --- a/addons/cargo/functions/fnc_addCargoItem.sqf +++ b/addons/cargo/functions/fnc_addCargoItem.sqf @@ -18,12 +18,11 @@ */ #include "script_component.hpp" -private ["_position", "_item", "_i"]; params ["_itemClass", "_vehicle", ["_amount", 1], ["_showHint", false, [false]] ]; TRACE_3("params",_itemClass,_vehicle,_amount); for "_i" from 1 to _amount do { - [_item, _vehicle] call FUNC(loadItem); + [_itemClass, _vehicle] call FUNC(loadItem); }; // Invoke listenable event